import sys input = sys.stdin.readline N=int(input()) A=[list(map(int,input().split())) for i in range(N)] S=set() for a,b,c in A: S.add(a) S.add(b) S=sorted(set(S)) D={S[i]:i for i in range(len(S))} for i in range(N): A[i][0]=D[A[i][0]] A[i][1]=D[A[i][1]] LIST=[[] for i in range(N*2)] for a,b,c in A: LIST[a].append((b,c)) def seg_function(x,y): # Segment treeで扱うfunction return max(x,y) seg_el=1<<((2*N).bit_length()) # Segment treeの台の要素数 SEG=[0]*(2*seg_el) # 1-indexedなので、要素数2*seg_el.Segment treeの初期値で初期化 def update(n,x,seg_el): # A[n]をxへ更新 i=n+seg_el SEG[i]=max(SEG[i],x) i>>=1 # 子ノードへ while i!=0: SEG[i]=seg_function(SEG[i*2],SEG[i*2+1]) i>>=1 def getvalues(l,r): # 区間[l,r)に関するseg_functionを調べる L=l+seg_el R=r+seg_el ANS1=0 ANS2=0 while L>=1 R>>=1 return seg_function(ANS1, ANS2) for i in range(N*2-1,-1,-1): ANS=[] for a,b in LIST[i]: k=getvalues(a+1,N*2) ANS.append((a,k+b)) for a,b in ANS: update(a,b,seg_el) LANS=getvalues(0,2*N) print(LANS)