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.
dHlwZQpyZT1yZWNvcmQKICB0LHgseTpsb25naW50OwogIGVuZDsKCnZhcgpuLG0saSxqLGEsdDpsb25naW50OwprOmFycmF5WzEuLjEwMDAxXSBvZiByZTsKbzphcnJheVsxLi4xMDAwMV0gb2YgbG9uZ2ludDsKCnByb2NlZHVyZSBzb3J0KGEsYjpsb25naW50KTsKdmFyCmksajpsb25naW50OwpsazpyZTsKbjpib29sZWFuOwpiZWdpbgppOj1hOwpqOj1iOwpuOj1mYWxzZTsKcmVwZWF0CmlmIGtbaV0udD5rW2pdLnQgdGhlbgogIGJlZ2luCiAgbGs6PWtbaV07CiAga1tpXTo9a1tqXTsKICBrW2pdOj1sazsKICBuOj1ub3QgbjsKICBlbmQ7CmlmIG4gdGhlbiBkZWMoaikgZWxzZSBpbmMoaSk7CnVudGlsIGk9ajsKaWYgYTxpLTEgdGhlbiBzb3J0KGEsaS0xKTsKaWYgaisxPGIgdGhlbiBzb3J0KGorMSxiKTsKZW5kOwoKYmVnaW4KcmVhZChuLG0pOwpmb3IgaTo9MSB0byBtIGRvIHJlYWQoa1tpXS50LGtbaV0ueCxrW2ldLnkpOwppZiBtPjEgdGhlbiBzb3J0KDEsbSk7CmE6PTA7CmZvciBpOj0xIHRvIG0gZG8KICBiZWdpbgogIG9baV06PTE7CiAgZm9yIGo6PTEgdG8gaS0xIGRvCiAgICBpZiAoYWJzKGtbaV0ueC1rW2pdLngpK2FicyhrW2ldLnkta1tqXS55KTw9a1tpXS50LWtbal0udClhbmQob1tpXTxvW2pdKzEpIHRoZW4KICAgICAgb1tpXTo9b1tqXSsxOwogIGlmIGE8b1tpXSB0aGVuIGE6PW9baV07CiAgZW5kOwp3cml0ZShhKTsKZW5kLg==