local bls, brs = bit.lshift, bit.rshift local k = io.read("*n") if k == 0 then print("2 0") elseif k == 1 then print("2 1\n1 2") elseif k == 2 then print("3 3\n1 2\n2 3\n1 3") else local n = 2 local mul = 1 while mul < k do mul = mul * 2 n = n + 1 end local ary = {} for i = 2, n do table.insert(ary, {1, i}) end for i = 3, n - 1 do for j = i + 1, n do table.insert(ary, {i, j}) end end local rem = k - bls(1, n - 3) for i = 3, n - 1 do local v = bls(1, n - 1 - i) if v <= rem then table.insert(ary, {2, i}) rem = rem - v end end if 0 < rem then table.insert(ary, {2, n}) end print(n .. " " .. #ary) for i = 1, #ary do print(ary[i][1] .. " " .. ary[i][2]) end end