import sys input = sys.stdin.readline n=int(input()) Q=[list(map(int,input().split())) for i in range(n)] SET=set() for x,a,b in Q: if x==0: SET.add(a) else: SET.add(a) SET.add(b) DICT={x:i for i,x in enumerate(sorted(SET))} N=len(DICT) for i in range(30):#要素数以上の2のベキを見つける if N<=2**i: seg_el=2**i#Segment treeの台の要素数 break SEG=[0]*(2*seg_el-1)#Segment treeを一次元リストとして作る def update(n,x,seg_el):#A[n]=xに更新(反映) i=n+seg_el-1 while i>=0: SEG[i]+=x i=(i-1)//2 def getvalues(a,b,k,l,r): if r<=a or b<=l: return 0 if a<=l and r<=b:#区間[a,b)が対象区間の中にあればSEG[k]を出力 return SEG[k] vl=getvalues(a,b,k*2+1,l,(l+r)//2)#それ以外のときは,SEG[k*2+1]とSEG[k*2+2]で場合分け(木の子ノード二つを見る) vr=getvalues(a,b,k*2+2,(l+r)//2,r) return vl+vr ANS=0 for x,a,b in Q: if x==0: update(DICT[a],b,seg_el) else: ANS+=getvalues(DICT[a],DICT[b]+1,0,0,seg_el) print(ANS)