# 16965번. 구간과 쿼리
fromcollectionsimportdequen=int(input())guList=[]# 구간 리스트
defcanGo(x1,y1,x2,y2):# 이동이 가능한지
ifx2<x1<y2orx2<y1<y2:returnTrueelse:returnFalseforqinrange(n):op,op1,op2=map(int,input().split())ifop==1:x,y=op1,op2guList.append([op1,op2])else:# op == 2
a,b=op1-1,op2-1# 인덱스 맞추기 위해서
# 매번 현재까지 나온 구간들을 탐색한다
box=[]foriinrange(len(guList)):box.append([])# 빈 리스트 만들어주기
forjinrange(len(guList)):ifcanGo(guList[i][0],guList[i][1],guList[j][0],guList[j][1]):box[i].append(j)# 여기로 이동 가능한 것
# bfs
v=[Falsefor_inrange(len(guList))]# 방문처리 리스트
flag=Falsed=deque([a])v[a]=Truewhiled:num=d.popleft()ifnum==b:# b에 도착 할 수 있으면
flag=Truebreakforkinbox[num]:ifnotv[k]:d.append(k)v[k]=True# 출력
ifflag:print(1)else:print(0)