wuzeming @ 2020-01-01 09:25:52
#include<bits/stdc++.h>
using namespace std;
int i,j,n,m,k,l,ans,t,w,a[10000][3],b[10000][3],f[32001];
int main()
{
scanf("%d%d",&m,&n);
memset(f,0,sizeof(f));
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for (int i=1;i<=n;i++)
{
scanf("%d%d%d",&k,&l,&w);
if (w==0) t=t+1,a[t][0]=k,b[t][0]=l*k;
else if (a[w][1]==0) a[w][1]=k,b[w][1]=l*k;
else a[w][2]=k,b[w][2]=l*k;
}
for (int i=1;i<=t;i++)
for (int j=m;j>=a[i][0];j--)
{
f[j]=max(f[j],f[j-a[i][0]]+b[i][0]);
if (j>=a[i][0]+a[i][1])
f[j]=max(f[j],f[j-a[i][0]-a[i][1]]+b[i][0]+b[i][1]);
if (j>=a[i][0]+a[i][2])
f[j]=max(f[j],f[j-a[i][0]-a[i][2]]+b[i][0]+b[i][2]);
if (j>=a[i][0]+a[i][2]+a[i][1])
f[j]=max(f[j],f[j-a[i][0]-a[i][1]-a[i][2]]+b[i][0]+b[i][2]+b[i][1]);
}
for (int i=1;i<=m;i++) ans=max(ans,f[i]);
cout<<ans<<endl;
}