#!/usr/bin/env python3 # Currently this is both too slow and failing on some cases # @EXPECTED_RESULTS@: RUN_TIME_ERROR, TIME_LIMIT_EXCEEDED a, b, c, v = map(int, input().split()) # Make the bounding box tight. while 6 * (a - 1) * b * c >= v: a -= 1 while 6 * a * (b - 1) * c >= v: b -= 1 while 6 * a * b * (c - 1) >= v: c -= 1 t = 6 * a * b * c - v # Compute all possible takeouts. r = {} r[0] = [(0, 0, 0)] for x in range(1, a + 1): for y in range(1, min(b, t // x) + 1): for z in range(1, min(c, t // (x * y)) + 1): r[x * y * z] = [(x, y, z)] if v in r: a, b, c = r[v][0] print(4) print(0, 0, 0) print(a, 0, 0) print(0, b, 0) print(0, 0, c) exit(0) def square(r): s = {} for x, vx in r.items(): for y, vy in r.items(): s[x + y] = vx + vy return s r = square(square(r)) assert t in r cs = [(0, 0, 0), (0, b, c), (a, 0, c), (a, b, 0)] ps = {(a, 0, 0), (0, b, 0), (0, 0, c), (a, b, c)} for p, q in zip(cs, r[t]): for i in range(3): x = [*p] x[i] = q[i] if x[i] == 0 else x[i] - q[i] ps.add((*x,)) print(len(ps)) for p in ps: print(*p)