N=int(input()) Q=set() queryans=[-1]*(2**N+1) for i in range(1,2**N+1): print(1,i,i,flush=True) C=int(input()) if C!=-1: Q.add(i) queryans[i]=C while len(Q)>2: P=set() for j in Q: if queryans[j] in Q: P.add(i) Q=P.copy() ans=[0]*(2**N+1) ans[0]=2 ind=[0,0] for i in Q: if queryans[i] in Q: ans[i]=1 ind[0]=i else: ans[i]=2 ind[1]=i while len(ind)<2**N: print(1,ind[0],ind[-1],flush=True) C=int(input()) if C==-1: break ans[C]=len(ind)+1 ind.append(C) print(*ans,flush=True)