#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(int argc,char* argv[])
{
//1、获取输入数据
int N=0,m=0;
while(cin>>N>>m)
{
N /= 10; // 由于所有的价格都是10的整倍数,所以可以均除10以简化运算复杂度
vector<vector<long> > value(m+1,vector<long>(3,0));
vector<vector<long> > weight(m+1,vector<long>(3,0));
int v=0,p=0,q=0;
for(int i=1;i<=m;i++)
{
cin>>v>>p>>q;
if(q==0){//主件
value[i][0]=v/10;
weight[i][0]=v/10*p;
}else if(value[q][1]==0){
value[q][1]=v/10;
weight[q][1]=v/10*p;
}else{
value[q][2]=v/10;
weight[q][2]=v/10*p;
}
}
vector<int> dp(N+1,0);
int value_total = 0,weight_total = 0;
for(int i=1;i<=m;i++)
{
for(int j=N;j>=1;j--)
{
//计算主件
value_total=value[i][0];
weight_total=weight[i][0];
dp[j]= j>=value_total? max(dp[j],dp[j-value_total]+weight_total):dp[j];
//计算主件+附件1
value_total=value[i][0]+value[i][1];
weight_total=weight[i][0]+weight[i][1];
dp[j]= j>=value_total? max(dp[j],dp[j-value_total]+weight_total):dp[j];
//计算主件+附件2
value_total=value[i][0]+value[i][2];
weight_total=weight[i][0]+weight[i][2];
dp[j]= j>=value_total? max(dp[j],dp[j-value_total]+weight_total):dp[j];
//计算主件+附件1+附件2
value_total=value[i][0]+value[i][1]+value[i][2];
weight_total=weight[i][0]+weight[i][1]+weight[i][2];
dp[j]= j>=value_total? max(dp[j],dp[j-value_total]+weight_total):dp[j];
}
}
cout<<dp[N]*10<<endl;
}
return 0;
}