#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int MAXN = 1e5 + 5;
int s, n, v[MAXN], w[MAXN], k[MAXN], dp[MAXN];
void sub1(){
for(int i = 1; i <= n; ++i){
for(int j = s; j >= w[i]; --j){
dp[j] = max(dp[j], dp[j - w[i]] + v[i]);
}
}
cout << dp[s];
}
void sub2(){
for(int i = 1; i <= n; ++i){
for(int j = s; j >= w[i]; --j){
for(int q = 1; q <= k[i] and q * w[i] <= j; ++q){
dp[j] = max(dp[j], dp[j - q * w[i]] + q * v[i]);
}
}
}
cout << dp[s];
}
signed main(){
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
freopen("B4.inp", "r", stdin);
freopen("B4.out", "w", stdout);
cin >> s >> n; int maxk = 0;
for(int i = 1; i <= n; ++i){
cin >> v[i] >> w[i] >> k[i];
maxk = max(maxk, k[i]);
}
if(maxk == 1) sub1();
else sub2();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwpjb25zdCBpbnQgTUFYTiA9IDFlNSArIDU7CgoKaW50IHMsIG4sIHZbTUFYTl0sIHdbTUFYTl0sIGtbTUFYTl0sIGRwW01BWE5dOwoKdm9pZCBzdWIxKCl7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47ICsraSl7CiAgICAgICAgZm9yKGludCBqID0gczsgaiA+PSB3W2ldOyAtLWopewogICAgICAgICAgICBkcFtqXSA9IG1heChkcFtqXSwgZHBbaiAtIHdbaV1dICsgdltpXSk7CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCBkcFtzXTsKfQoKdm9pZCBzdWIyKCl7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47ICsraSl7CiAgICAgICAgZm9yKGludCBqID0gczsgaiA+PSB3W2ldOyAtLWopewogICAgICAgICAgICBmb3IoaW50IHEgPSAxOyBxIDw9IGtbaV0gYW5kIHEgKiB3W2ldIDw9IGo7ICsrcSl7CiAgICAgICAgICAgICAgICBkcFtqXSA9IG1heChkcFtqXSwgZHBbaiAtIHEgKiB3W2ldXSArIHEgKiB2W2ldKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IGRwW3NdOwp9CgpzaWduZWQgbWFpbigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwogICAgZnJlb3BlbigiQjQuaW5wIiwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKCJCNC5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICBjaW4gPj4gcyA+PiBuOyBpbnQgbWF4ayA9IDA7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47ICsraSl7CiAgICAgICAgY2luID4+IHZbaV0gPj4gd1tpXSA+PiBrW2ldOwogICAgICAgIG1heGsgPSBtYXgobWF4aywga1tpXSk7CiAgICB9CgogICAgaWYobWF4ayA9PSAxKSBzdWIxKCk7CiAgICBlbHNlIHN1YjIoKTsKICAgIAoKCiAgICByZXR1cm4gMDsKfQ==