#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
    int N, m;
    cin >> N >> m;
    N /= 10;
    vector<vector<int>> prc(m + 1, vector<int>(3, 0)); //记录价格
    vector<vector<int>> val(m + 1, vector<int>(3, 0)); //记录重要度*价格
    vector<vector<int>> dp(m + 1, vector<int>(N + 1, 0));
    for(int i = 1; i <= m; i++)
    {
        int v, p, q;
        cin >> v >> p >> q; //价格,重要度,附属
        if(q == 0)
            prc[i][0] = v/10,val[i][0] = p*v;
        else
            if(prc[q][1] == 0)
                prc[q][1] = v/10,val[q][1] = p*v;
            else
                prc[q][2] = v/10,val[q][2] = p*v;
    }
    for(int i = 1; i <= m; i++)//物品
    {
        for(int j = 1; j <= N; j++)//钱数
        {
            dp[i][j] = dp[i-1][j];//继承
            if(j >= prc[i][0])//条件1
                dp[i][j]=max(dp[i][j], dp[i-1][j-prc[i][0]]+val[i][0]);//改变1
            if(j >= prc[i][0] + prc[i][1])//条件2
                dp[i][j]=max(dp[i][j], dp[i-1][j-prc[i][0]-prc[i][1]]+val[i][0]+val[i][1]);//改变2
            if(j >= prc[i][0] + prc[i][2])//条件3
                dp[i][j]=max(dp[i][j], dp[i-1][j-prc[i][0]-prc[i][2]]+val[i][0]+val[i][2]);//改变3
            if(j >= prc[i][0]+prc[i][1] + prc[i][2])//条件4
                dp[i][j]=max(dp[i][j], dp[i-1][j-prc[i][0]-prc[i][1]-prc[i][2]]+val[i][0]+val[i][1]+val[i][2]);//改变4
        }
    }
    cout << dp[m][N] << endl;
}