a:array[1..1000,1..3] of integer;
procedure find(x,y,z:integer);
var i,j,k:integer;
begin
if y>=d then
begin
write(a[z-1,1]);
halt;
end;
if (z>g) or (x<a[z,1]) then
begin
if x>g1 then g1:=x;
exit;
end;
for j:=1 to 2 do
begin
if j=1 then
begin
if x>=a[z,1] then find(x,y+a[z,3],z+1);
end
else
begin
if x>=a[z,1] then find(x+a[z,2],y,z+1)
end;
end;
end;
begin
readln(d,g);
for i:=1 to g-1 do
for j:=1 to g do
begin
if a[i,1]>a[i+1,1] then
begin
d1:=a[i,1];
a[i,1]:=a[i+1,1];
a[i+1,1]:=d1;
d1:=a[i,2];
a[i,2]:=a[i+1,2];
a[i+1,2]:=d1;
d1:=a[i,3];
a[i,3]:=a[i+1,3];
a[i+1,3]:=d1;
end;
end;
for i:=1 to g do readln(a[i,1],a[i,2],a[i,3]);
find(10,0,1);
write(g1);
end.