int main (void)
{
int N,m;
int i=0,j=0;
scanf("%d %d",&N,&m);
int val[m+1][3];
int wei[m+1][3];
int dp[3200]={0};
memset(val,0,(m+1)*3*sizeof(int));
memset(wei,0,(m+1)*3*sizeof(int));
for(i=1;i<=m;i++)
{
int v,p,q;
scanf("%d %d %d",&v,&p,&q);
if(q==0)//主件
{
val[i][0]=v/10;
wei[i][0]=p*v/10;
}
else if(val[q][1]==0)//附件1
{
val[q][1]=v/10;
wei[q][1]=p*v/10;
}
else//附件2
{
val[q][2]=v/10;
wei[q][2]=p*v/10;
}
}
/*for(i=1;i<=m;i++)
{
printf("%d %d-%d;%d-%d;%d-%d\n",i,val[i][0],wei[i][0],val[i][1],wei[i][1],val[i][2],wei[i][2]);
}*/
for(i=1;i<=m;i++)
{
for(j=N/10;j>0;j--)
{
if(val[i][0]<=j)//主件
{
dp[j]=Max( dp[j] , wei[i][0] + dp[j-val[i][0]] );
}
if((val[i][0] + val[i][1]) <= j)//主件+附件1
{
dp[j]=Max( dp[j] , wei[i][0] + wei[i][1] + dp[j - val[i][0] - val[i][1]] );
}
if((val[i][0] + val[i][2]) <= j)//主件+附件2
{
dp[j]=Max( dp[j] , wei[i][0] + wei[i][2] + dp[j - val[i][0] - val[i][2]] );
}
if((val[i][0] + val[i][1] + val[i][2])<=j)//主件+附件1+附件2
{
dp[j]=Max( dp[j] , wei[i][0] + wei[i][1] + wei[i][2] + dp[j - val[i][0] - val[i][1] - val[i][2]] );
}
}
}
printf("%d",dp[N/10]*10);
}