#include <iostream>
#include <algorithm>
using namespace std;
int n,m;
int value[65];
int cost[65];
int dp[65][32005];
int fans[65];
int follow[65][3];
int main()
{
cin>>n>>m;
int v,p,q;
for(int i=1;i<=m;i++)
{
cin>>v>>p>>q;
cost[i]=v;
value[i]=v*p;
if(q!=0)
follow[q][++fans[q]]=i;
}
int pre=0;
for(int i=1;i<=m;i++)
if(fans[i])
for(int j=0;j<=n;j++)
{
dp[i][j]=dp[pre][j];
int fan1=(fans[i]>=1)?follow[i][1]:-1;
int fan2=(fans[i]>=2)?follow[i][2]:-1;
if(j-cost[i]>=0) dp[i][j]=max(dp[i][j],dp[pre][j-cost[i]]+value[i]);
if(fan1!=-1 && j-cost[i]-cost[fan1]>=0)
dp[i][j]=max(dp[i][j],dp[pre][j-cost[i]-cost[fan1]]+value[i]+value[fan1]);
if(fan2!=-1 && j-cost[i]-cost[fan2]>=0)
dp[i][j]=max(dp[i][j],dp[pre][j-cost[i]-cost[fan2]]+value[i]+value[fan2]);
if(fan1!=-1 && fan2!=-1 && j-cost[i]-cost[fan1]-cost[fan2]>=0)
dp[i][j]=max(dp[i][j],dp[pre][j-cost[i]-cost[fan1]-cost[fan2]]+value[i]+value[fan1]+value[fan2]);
pre=i;
}
cout<<dp[m][n];
}