#include<bits/stdc++.h>
using namespace std;#definedbdouble#definelllonglong#definePirpair<int,int>#definefifirst#definesesecond#definepbpush_back#definem_pmake_pair#defineinf0x3f3f3f3f#defineINF0x3f3f3f3f3f3f3f3f/*==========ACMer===========*/constint N =42005;int f[65][N];structNode{
int v, w;} fa[65];
vector<Node> son[65];int n, m;intmain(){
scanf("%d %d",&m,&n);
m /=10;int a, b, c;for(int i =1; i <= n; i ++){
scanf("%d %d %d",&a,&b,&c);if(c ==0)
fa[i]= Node{
a /10, a * b };else
son[c].pb(Node{
a /10, a * b });}for(int i =1; i <= n; i ++){
if(fa[i].v){
for(int j = fa[i].v; j <= m; j ++)
f[i][j]= f[i -1][j - fa[i].v]+ fa[i].w;for(auto x : son[i]){
for(int j = m; j >= x.v; j --){
if(f[i][j - x.v]>0){
f[i][j]=max(f[i][j], f[i][j - x.v]+ x.w);}}}}for(int j =0; j <= m; j ++)
f[i][j]=max(f[i][j], f[i -1][j]);}printf("%d\n", f[n][m]);return0;}