type
re=record
  t,x,y:longint;
  end;

var
n,m,i,j,a,t:longint;
k:array[1..10001] of re;
o:array[1..10001] of longint;

procedure sort(a,b:longint);
var
i,j:longint;
lk:re;
n:boolean;
begin
i:=a;
j:=b;
n:=false;
repeat
if k[i].t>k[j].t then
  begin
  lk:=k[i];
  k[i]:=k[j];
  k[j]:=lk;
  n:=not n;
  end;
if n then dec(j) else inc(i);
until i=j;
if a<i-1 then sort(a,i-1);
if j+1<b then sort(j+1,b);
end;

begin
read(n,m);
for i:=1 to m do read(k[i].t,k[i].x,k[i].y);
if m>1 then sort(1,m);
a:=0;
for i:=1 to m do
  begin
  o[i]:=1;
  for j:=1 to i-1 do
    if (abs(k[i].x-k[j].x)+abs(k[i].y-k[j].y)<=k[i].t-k[j].t)and(o[i]<o[j]+1) then
      o[i]:=o[j]+1;
  if a<o[i] then a:=o[i];
  end;
write(a);
end.