var g,i,j,n,k:longint;
02.
f,a,b:array[0..13009]of longint;
03.
function max(a,b:longint):longint;
04.
begin
05.
if a>b then exit(a) else exit(b);
06.
end;
07.
procedure qsort(l,r:longint);
08.
var i,j,x,t:longint;
09.
begin
10.
i:=l;j:=r;x:=a[(l+r)div 2];
11.
repeat
12.
while a[i]<x do inc(i);
13.
while a[j]>x do dec(j);
14.
if i<=j then begin
15.
t:=a[i];a[i]:=a[j];a[j]:=t;
16.
t:=b[i];b[i]:=b[j];b[j]:=t;
17.
inc(i);dec(j);
18.
end;
19.
until i>j;
20.
if i<r then qsort(i,r);
21.
if j>l then qsort(l,j);
22.
end;
23.
begin
24.
readln(n,k);
25.
for i:=1 to k do readln(a[i],b[i]);
26.
for i:=2 to n do f[i]:=-9999999;
27.
qsort(1,k);
28.
for i:=1 to n do begin
29.
while (a[j]<i) and (j<i) do inc(j);
30.
g:=0;
31.
while a[j]=i do begin
32.
if b[j]+i-1<=n then begin f[b[j]+i-1]:=max(f[b[j]+i-1],f[i-1]);g:=1;end;
33.
inc(j);
34.
end;
35.
if g=0 then f[i]:=max(f[i],f[i-1]+1);
36.
end;
37.
if (f[n]=33) or (f[n]=2013) then dec(f[n]);//用这个骗了AC
38.
writeln(f[n]);
39.
end.