#include<bits/stdc++.h>
using namespace std;
int dp[105][105];
struct trash{
int time;
int life;
int height;
}trash[105];
int main(){
int d,g;
cin>>d>>g;
for(int i=1;i<=g;i++){
cin>>trash[i].time>>trash[i].life>>trash[i].height;;
}
for(int i=0;i<g;i++){
for(int j=1;j<=g-i-1;j++){
if(trash[j].time>trash[j+1].time){
swap(trash[j].height,trash[j+1].height);
swap(trash[j].life,trash[j+1].life);
swap(trash[j].time,trash[j+1].time);
}
}
}
memset(dp,-1,sizeof(dp));
dp[0][0]=10;
int maxt=0;
for(int i=0;i<g;i++){
for(int j=0;j<=d;j++){
if(dp[i][j]>=trash[i+1].time-trash[i].time){
dp[i+1][j+trash[i].height]=max(dp[i][j]-(trash[i+1].time-trash[i].time),dp[i+1][j+trash[i].height]);
dp[i+1][j]=max(dp[i][j]+trash[i+1].life-(trash[i+1].time-trash[i].time),dp[i+1][j]);
}
if(dp[i+1][j+trash[i+1].height]>=0&&j+trash[i+1].height>=d){
cout<<trash[i+1].time<<endl;
return 0;
}
}
if(dp[i][0]!=-1)
maxt=max(maxt,dp[i][0]+trash[i].time);
}
cout<<maxt<<endl;
return 0;
}