#include <bits/stdc++.h>
using namespace std;
int dp[10005];
struct UZI{
int P,T;
}a[10005];
int N,K;
bool cmp(UZI &x,UZI &y){
return x.P>y.P;
}
int main()
{
cin>>N>>K;
for(int i=1;i<=K;i++){
cin>>a[i].P>>a[i].T;
}
sort(a+1,a+K+1,cmp);
int pos=1;
for(int i=N;i>=1;i--){
dp[i]=0;
bool flag=false;
while(pos<=K&&a[pos].P==i){
flag=true;
dp[i]=max(dp[i],dp[a[pos].P+a[pos].T]);
pos++;
}
if(!flag)dp[i]=dp[i+1]+1;
}
cout<<dp[1]<<endl;
return 0;
}
by 何承翰 @ 2019-08-10 11:40:19