#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 3e5+5;
int v[N], k[N];
vector<array<int, 2>> inp[N], kp[N];
// for(int i=1; i<=n; i++)
void solve(){
int S, n; cin >> S >> n;
for(int i=1; i<=n; i++) {
int w;
cin >> v[i] >> w >> k[i];
inp[w].push_back({v[i], k[i]});
}
vector<int> dp(S+1);
for(int w=1; w<=S; w++) {
sort(inp[w].rbegin(), inp[w].rend());
kp[w] = inp[w];
vector<int> n_dp(S+1);
for(int s=1; s<=S; s++){
inp[w] = kp[w];
n_dp[s] = dp[s];
int gain = 0, ptr = 0, used = 0;
for(int cnt=1; ; cnt++){
if(cnt * w > s) break;
if(ptr == inp[w].size()) break;
gain += inp[w][ptr][0];
inp[w][ptr][1]--;
if(!inp[w][ptr][1]) ptr++;
n_dp[s] = max(n_dp[s], dp[s-cnt*w] + gain);
}
}
dp = n_dp;
}
// cnt = 1....k[i]
// dp[s-cnt*w[i]] + cnt*v[i]
cout << dp[S];
}
signed main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
}