//P1757
#include <iostream>
#define max(a,b) ((a)<(b)?(b):(a))
using namespace std;
int maxcls,V,n,clsnum[1005],is[1005][1005];
int d[1000];
class item{public:
int vol,val;
}input[1000];
int main(){
int i,j,a,b,c,xx,yy;
cin>>V>>n;
for(i=1;i<=n;i++){
cin>>a>>b>>c;
input[i].vol=a;
input[i].val=b;
maxcls=max(maxcls,c);//总组数
clsnum[c]++;//某组数
is[c][clsnum[c]]=i;
}
for(yy=1;yy<=maxcls;yy++){
for(xx=V;xx>=0;xx--){
for(int ti=1;ti<=clsnum[yy];ti++){
if(xx>=input[is[yy][ti]].vol)
d[xx]=max(d[xx],
d[xx-input[is[yy][ti]].vol]+input[is[yy][ti]].val);
}
}
}
cout<<d[V]<<endl;
return 0;
}
https://www.luogu.com.cn/problem/P1757