#include <iostream>
#include<vector>
using namespace std;

int main() {
    int m, n;
    while (cin >> m >> n) { // 注意 while 处理多个 case
        vector<vector<int>>price(n+1,vector<int>(3,0));
        vector<vector<int>>multiprice(n+1,vector<int>(3,0));
        for(int i=1;i<=n;i++)
        {
            int a,b,c;
            cin>>a>>b>>c;
            if(c==0)
            {price[i][0]=a;
            multiprice[i][0]=a*b;}
            else {
            if(price[c][1]==0)
            {price[c][1]=a;
             multiprice[c][1]=a*b;}
             else {
             {price[c][2]=a;
             multiprice[c][2]=a*b;
             }
             }
            }
        }
        vector<vector<int>>dp(n+1,vector<int>(m+1,0));
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                int a=price[i][0];int b=multiprice[i][0];
                int c=price[i][1];int d=multiprice[i][1];
                int e=price[i][2];int f=multiprice[i][2];
                dp[i][j]=(j>=a)?max(dp[i-1][j-a]+b,dp[i-1][j]):dp[i-1][j];
                dp[i][j]=(j>=a+c)?max(dp[i-1][j-a-c]+b+d,dp[i][j]):dp[i][j];
                dp[i][j]=(j>=a+e)?max(dp[i-1][j-a-e]+b+f,dp[i][j]):dp[i][j];
                dp[i][j]=(j>=a+c+e)?max(dp[i-1][j-a-c-e]+b+d+f,dp[i][j]):dp[i][j];
            }
        }
        cout <<dp[n][m]<< endl;
    }
}
// 64 位输出请用 printf("%lld")