#include<bits/stdc++.h>
using namespace std;
int n,m;
int v[110],p[110],q[110];
vector<int>vp[110];
int dp[int(3.2e4)+10],f[int(3.2e4)+10];
int main() {
cin>>m>>n;
for(int i=1;i<=n;i++)
cin>>v[i]>>p[i]>>q[i],vp[q[i]].push_back(i),p[i]*=v[i];
for(int i=1;i<=n;i++){
if(q[i]!=0) continue;
for(int j=0;j<=m;j++)
f[j]=dp[j];
for(int j=m;j>=v[i];j--)
dp[j]=max(f[j],f[j-v[i]]+p[i]);
if(vp[i].size()==0) continue;
if(vp[i].size()>=1)
for(int j=m;j>=v[i]+v[vp[i][0]];j--)
dp[j]=max(f[j],f[j-v[i]-v[vp[i][0]]]+p[i]+p[vp[i][0]]);
if(vp[i].size()==1) continue;
for(int j=m;j>=v[i]+v[vp[i][1]];j--)
dp[j]=max(f[j],f[j-v[i]-v[vp[i][1]]]+p[i]+p[vp[i][1]]);
for(int j=m;j>=v[i]+v[vp[i][0]]+v[vp[i][1]];j--)
dp[j]=max(f[j],f[j-v[i]-v[vp[i][0]]-v[vp[i][1]]]+p[i]+p[vp[i][0]]+p[vp[i][1]]);
}
cout<<dp[m];
return 0;
}