program sushi;
Uses Math;
const MAXN=100002;
type piatto = record
inizio:int64;
durata:int64;
peso:int64;
fine:int64;
end;
elenco = array[0.. MAXN-1] of int64;
table = array[0..MAXN-1] of piatto;
var N,i,id:Longint;
ricordafine : int64;
T : table;
S,W,D,E, DP, ricordaindice, ricordaindice2:elenco; (*array riferiti ai piatti Start, Weigth, Durata, End*)
uscita : boolean;
Procedure scambia (var a,b: int64);
var x:int64;
begin
x:=a;
a:=b;
b:=x;
end;
Procedure ordinamento (estremoi,estremos: int64; var v : elenco; var u:elenco; ordinato:boolean);
var inf, sup, medio:int64;
pivot :int64;
begin
inf:=estremoi;
sup:=estremos;
medio:= (estremoi+estremos) div 2;
pivot:=v[medio];
repeat
if (ordinato) then
begin
while (v[inf]<pivot) do inf:=inf+1;
while (v[sup]>pivot) do sup:=sup-1;
end;
if inf<=sup then
begin
scambia(v[inf],v[sup]);
scambia(u[inf],u[sup]);
inf:=inf+1;
sup:=sup-1;
end;
until inf>sup;
if (estremoi<sup) then ordinamento(estremoi,sup,v,u,ordinato);
if (inf<estremos) then ordinamento(inf,estremos,v,u,ordinato);
end;
Procedure ricercaLower (var w:elenco; target:int64);
var m,start,eend: int64;
begin
start:=0; eend:=N-1 ; m:=-1;
while start<=eend do
begin
m:=(start + eend) div 2;
if w[m]<=target then begin id:=m; start:=m+1 end
else if w[m]>target then eend:=m-1;
end;
if eend=-1 then id:=-1;
end;
begin
(*assign(input, 'input.txt'); reset(input);
assign(output, 'output.txt'); rewrite(output);*)
readln(N);
for i:=0 to N-1 do begin ricordaindice[i]:=i; DP[i]:=0; end;
for i:=0 to N-1 do
begin
{ dish on table }
readln(S[i],W[i],D[i]);
E[i]:=S[i]+D[i];
T[i].inizio:=S[i];
T[i].durata:=D[i];
T[i].peso:=W[i];
T[i].fine:=E[i];
end;
ordinamento(0,N-1,E, ricordaindice,true);
for i:=0 to N-1 do
begin
ricordafine:=T[ricordaindice[i]].inizio;
ricercaLower(E, ricordafine);
if id<>-1 then
DP[i]:=max (DP[i-1],DP[id]+T[ricordaindice[i]].peso)
else
begin
if i=0 then DP[i]:=T[ricordaindice[i]].peso
else DP[i]:=max (DP[i-1],T[ricordaindice[i]].peso)
end;
end;
writeln(DP[N-1]);
end.
cHJvZ3JhbSBzdXNoaTsKVXNlcyBNYXRoOwpjb25zdCBNQVhOPTEwMDAwMjsKdHlwZSBwaWF0dG8gPSByZWNvcmQKICAgICAgICAgICAgICAgICAgIGluaXppbzppbnQ2NDsKICAgICAgICAgICAgICAgICAgIGR1cmF0YTppbnQ2NDsKICAgICAgICAgICAgICAgICAgIHBlc286aW50NjQ7CiAgICAgICAgICAgICAgICAgICBmaW5lOmludDY0OwogICAgICAgICAgICAgICAgZW5kOwogICAgIGVsZW5jbyA9IGFycmF5WzAuLiBNQVhOLTFdIG9mIGludDY0OyAgICAgICAgICAgCiAgICAgdGFibGUgPSBhcnJheVswLi5NQVhOLTFdIG9mIHBpYXR0bzsgICAgICAgICAgCnZhciBOLGksaWQ6TG9uZ2ludDsKICAgIHJpY29yZGFmaW5lIDogaW50NjQ7CiAgICBUIDogdGFibGU7IAogICAgUyxXLEQsRSwgRFAsIHJpY29yZGFpbmRpY2UsIHJpY29yZGFpbmRpY2UyOmVsZW5jbzsgICgqYXJyYXkgcmlmZXJpdGkgYWkgcGlhdHRpIFN0YXJ0LCBXZWlndGgsIER1cmF0YSwgRW5kKikKICAgIHVzY2l0YSA6IGJvb2xlYW47CiAgICAKUHJvY2VkdXJlIHNjYW1iaWEgKHZhciBhLGI6IGludDY0KTsKdmFyIHg6aW50NjQ7CmJlZ2luCiAgIHg6PWE7CiAgIGE6PWI7CiAgIGI6PXg7CmVuZDsgIAoKUHJvY2VkdXJlIG9yZGluYW1lbnRvIChlc3RyZW1vaSxlc3RyZW1vczogaW50NjQ7IHZhciB2IDogZWxlbmNvOyB2YXIgdTplbGVuY287IG9yZGluYXRvOmJvb2xlYW4pOwp2YXIgaW5mLCBzdXAsIG1lZGlvOmludDY0OwogICAgcGl2b3QgOmludDY0OwpiZWdpbgogICAgaW5mOj1lc3RyZW1vaTsKICAgIHN1cDo9ZXN0cmVtb3M7CiAgICBtZWRpbzo9IChlc3RyZW1vaStlc3RyZW1vcykgZGl2IDI7CiAgICBwaXZvdDo9dlttZWRpb107CiAgICByZXBlYXQKICAgICAgaWYgKG9yZGluYXRvKSB0aGVuCiAgICAgICAgIGJlZ2luCiAgICAgICAgICAgIHdoaWxlICh2W2luZl08cGl2b3QpIGRvICBpbmY6PWluZisxOwogICAgICAgICAgICB3aGlsZSAodltzdXBdPnBpdm90KSBkbyAgc3VwOj1zdXAtMTsKICAgICAgICAgZW5kOwogICAgICBpZiBpbmY8PXN1cCB0aGVuCiAgICAgICBiZWdpbgogICAgICAgICBzY2FtYmlhKHZbaW5mXSx2W3N1cF0pOwogICAgICAgICBzY2FtYmlhKHVbaW5mXSx1W3N1cF0pOwogICAgICAgICBpbmY6PWluZisxOwogICAgICAgICBzdXA6PXN1cC0xOwogICAgICAgZW5kOwogICAgdW50aWwgaW5mPnN1cDsKICAgIGlmIChlc3RyZW1vaTxzdXApIHRoZW4gb3JkaW5hbWVudG8oZXN0cmVtb2ksc3VwLHYsdSxvcmRpbmF0byk7CiAgICBpZiAoaW5mPGVzdHJlbW9zKSB0aGVuIG9yZGluYW1lbnRvKGluZixlc3RyZW1vcyx2LHUsb3JkaW5hdG8pOwplbmQ7ClByb2NlZHVyZSByaWNlcmNhTG93ZXIgKHZhciB3OmVsZW5jbzsgdGFyZ2V0OmludDY0KTsgCiAgdmFyIG0sc3RhcnQsZWVuZDogaW50NjQ7CiAgICAgIAogYmVnaW4gIAogICBzdGFydDo9MDsgZWVuZDo9Ti0xIDsgbTo9LTE7CiAgIHdoaWxlIHN0YXJ0PD1lZW5kIGRvCiAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgbTo9KHN0YXJ0ICsgZWVuZCkgZGl2IDI7CiAgICAgICAgICAgICAgICAgIGlmIHdbbV08PXRhcmdldCB0aGVuIGJlZ2luIGlkOj1tOyAgc3RhcnQ6PW0rMSBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgIGlmIHdbbV0+dGFyZ2V0IHRoZW4gICBlZW5kOj1tLTE7IAogICAgICAgICAgIGVuZDsKICAgaWYgZWVuZD0tMSB0aGVuIGlkOj0tMTsKIGVuZDsKCmJlZ2luCiAgICgqYXNzaWduKGlucHV0LCAgJ2lucHV0LnR4dCcpOyAgcmVzZXQoaW5wdXQpOwogICBhc3NpZ24ob3V0cHV0LCAnb3V0cHV0LnR4dCcpOyByZXdyaXRlKG91dHB1dCk7KikKICAgcmVhZGxuKE4pOwogICBmb3IgaTo9MCB0byBOLTEgZG8gYmVnaW4gcmljb3JkYWluZGljZVtpXTo9aTsgIERQW2ldOj0wOyBlbmQ7CiAgIGZvciBpOj0wIHRvIE4tMSBkbwogICAgICBiZWdpbgogICAgICAgIHsgZGlzaCBvbiB0YWJsZSB9CiAgICAgICAgIHJlYWRsbihTW2ldLFdbaV0sRFtpXSk7CiAgICAgICAgIEVbaV06PVNbaV0rRFtpXTsKICAgICAgICAgVFtpXS5pbml6aW86PVNbaV07CiAgICAgICAgIFRbaV0uZHVyYXRhOj1EW2ldOwogICAgICAgICBUW2ldLnBlc286PVdbaV07CiAgICAgICAgIFRbaV0uZmluZTo9RVtpXTsKICAgICAgZW5kOwogICAgb3JkaW5hbWVudG8oMCxOLTEsRSwgcmljb3JkYWluZGljZSx0cnVlKTsKICAgIGZvciBpOj0wIHRvIE4tMSBkbwogICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICByaWNvcmRhZmluZTo9VFtyaWNvcmRhaW5kaWNlW2ldXS5pbml6aW87CiAgICAgICAgICAgICAgICAgICAgcmljZXJjYUxvd2VyKEUsIHJpY29yZGFmaW5lKTsKICAgICAgICAgICAgICAgICAgICBpZiBpZDw+LTEgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERQW2ldOj1tYXggKERQW2ktMV0sRFBbaWRdK1Rbcmljb3JkYWluZGljZVtpXV0ucGVzbykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGk9MCB0aGVuIERQW2ldOj1UW3JpY29yZGFpbmRpY2VbaV1dLnBlc28KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIERQW2ldOj1tYXggKERQW2ktMV0sVFtyaWNvcmRhaW5kaWNlW2ldXS5wZXNvKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDsgICAgICAgICAKICAgICAgICAgICAgICAgIGVuZDsKICAgd3JpdGVsbihEUFtOLTFdKTsgICAKZW5kLgo=