//多重背包板子
using namespace std;
#include<iostream>
#include<cstdio>
#include<cstring>
#define maxv 10000+100
#define maxn 100+10
int v[maxn],c[maxn],opt[maxv],h[maxn];
int V,n,cnt;
int main()
{
cin>>V>>n;
for(int i=1;i<=n;i++)
cin>>v[i]>>c[i]>>h[i];
memset(opt,0,sizeof(opt));
for(int i=1;i<=n;i++)
{
for(int j=V;j>=1;j--)
{
for(int k=1;k<=h[i];k++)
{
if(j-k*v[i]>=0)
opt[j]=max(opt[j],opt[j-k*v[i]]+k*c[i]);
}
}
}
cout<<opt[V]<<endl;
return 0;
}