#include #define v first #define w second using namespace std; typedef pair PII; const int N = 70, M = 30010; int n, m, f[M]; PII master[N]; vector servent[N]; int main() { cin >> m >> n; for (int i = 1; i <= n; i++) { int v, w, q; cin >> v >> w >> q; if (q == 0) master[i] = {v, v * w}; else servent[q].push_back({v, v * w}); } for (int i = 1; i <= n; i++) if (master[i].v) { for (int j = m; j >= 0; j--) { auto &sv = servent[i]; for (int k = 0; k < 1 << sv.size(); k++) { int v = master[i].v, w = master[i].w; for (int u = 0; u < sv.size(); u++) if (k >> u & 1) { v += sv[u].v; w += sv[u].w; } if (j >= v) f[j] = max(f[j], f[j - v] + w); } } } cout << f[m] << endl; return 0; }