"""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) from functools import cache const = 10**8 n = II() @cache 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 + 1 elif resl2 < resr2: r = r2 - 1 else: l = l2 + 1 resl2 = solve(l) resr2 = solve(r) if resl2 < resr2: ansx = l else: ansx = r @cache 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 + 1 elif resl2 < resr2: r = r2 - 1 else: l = l2 + 1 resl2 = solve2(l) resr2 = solve2(r) if resl2 < resr2: ansy = l else: ansy = r print(2,ansx,ansy)