#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef long long ll;
const int maxn=5e5+44;
ll inf=1e14;
int tot,idx,cnt;
int dp[maxn];
//if(有任务结束)dp[i]=max{dp[task[i][j]]};
//else dp[i]=dp[i-1]+1;
vector<int>task[maxn];
void work(){
int n,k,x,y,MAX=0;
scanf("%d%d",&n,&k);
while(k--){
scanf("%d%d",&x,&y);
y=x+y-1;
task[y].push_back(x-1);
}
for(int i=1;i<=n;i++){
if(task[i].size()){
for(int j=0;j<task[i].size();j++){
int t=task[i][j];
dp[i]=max(dp[i],dp[t]);
}
}
else dp[i]=dp[i-1]+1;
MAX=max(MAX,dp[i]);
}
printf("%d\n",MAX);
}
int main(){
work();
return 0;
}