"""input""" #int-input # input = sys.stdin.readline def II(): return int(input()) def MI(): return map(int, input().split()) def LI(): return list(MI()) #str-input def SI(): return input() def MSI(): return input().split() def SI_L(): return list(SI()) def SI_LI(): return list(map(int, SI())) #multiple-input def LLI(n): return [LI() for _ in range(n)] def LSI(n): return [SI() for _ in range(n)] #1-indexを0-indexでinput def MI_1(): return map(lambda x:int(x)-1, input().split()) def TI_1(): return tuple(MI_1()) def LI_1(): return list(MI_1()) from bisect import bisect_left,bisect_right inf = 1<<60 def tri_float(comparison, l = -10**8, r = 10**8): while abs(r - l)/abs(r) > error and abs(r - l) > error: l2 = (l*2+r)/3 r2 = (l+r*2)/3 if comparison(l2) > comparison(r2): l = l2 else: r = r2 return l2, comparison(l2) const = 10 n = II() def solve(x): print(1,x,0) return II() l = -const r = const while abs(r - l) > 1: l2 = (l*2+r)//3 r2 = (l+r*2)//3 resl2 = solve(l2) resr2 = solve(r2) if resl2 > resr2: l = l2 elif resl2 < resr2: r = r2 else: break ansx = l def solve2(y): print(1,0,y) return II() l = -const r = const while abs(r - l) > 1: l2 = (l*2+r)//3 r2 = (l+r*2)//3 resl2 = solve2(l2) resr2 = solve2(r2) if resl2 > resr2: l = l2 elif resl2 < resr2: r = r2 else: break ansy = l print(2,ansx,ansy)