using System; using static System.Console; using System.Linq; using System.Collections.Generic; class Program { static long NN => long.Parse(ReadLine()); public static void Main() { Solve(); } static void Solve() { var n = NN; var max = 100_000_001L; var left = -max; var right = max; var cl = 0L; var cr = 0L; var clval = 0L; var crval = 0L; while (right - left > 2) { cl = (left * 2 + right) / 3; clval = CalcX(cl); cr = (left + right * 2) / 3; crval = CalcX(cr); if (clval < crval) right = cr; else left = cl; } dic = new Dictionary(); var bottom = -max; var top = max; var cb = 0L; var ct = 0L; var cbval = 0L; var ctval = 0L; while (top - bottom > 2) { cb = (bottom * 2 + top) / 3; cbval = CalcY(cb); ct = (bottom + top * 2) / 3; ctval = CalcY(ct); if (cbval < ctval) top = ct; else bottom = cb; } WriteLine($"2 {(clval < crval ? cl : cr)} {(cbval < ctval ? cb : ct)}"); } static Dictionary dic = new Dictionary(); static long CalcX(long x) { if (dic.ContainsKey(x)) return dic[x]; WriteLine($"1 {x} 0"); var ans = NN; dic[x] = ans; return ans; } static long CalcY(long y) { if (dic.ContainsKey(y)) return dic[y]; WriteLine($"1 0 {y}"); var ans = NN; dic[y] = ans; return ans; } }