#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int dp[150];
void x01back(int w,int v,int W)
{
for(int i=W;i>=w;i--){
dp[i]=max(dp[i],dp[i-w]+v);
}
}
void multiback(int w,int v,int num,int W)
{
if(w*num>=W){
for(int i=w;i<=W;i++){
dp[i]=max(dp[i],dp[i-w]+v);
}
}
else{
for(int i=1;i<num;i<<=1){
x01back(w*i,v*i,W);
num-=i;
}
x01back(num*w,num*v,W);
}
}
int main()
{
int T;
int n,m;
int w[108],v[108],num[108];
scanf("%d",&T);
while(T--){
memset(dp,0,sizeof(dp));
scanf("%d%d",&m,&n);
for(int i=1;i<=n;i++){
scanf("%d%d%d",&w[i],&v[i],&num[i]);
}
for(int i=1;i<=n;i++){
multiback(w[i],v[i],num[i],m);
}
printf("%d
",dp[m]);
}
}