#include<iostream>
#include<string>
#include<vector>
using namespace std;
int main(int argc,char* argv[])
{
    //0-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;
}