// accepted
module solution;
// version = IO_FILES;
import std.math;
import std.random;
import std.stdio;

immutable string PROBLEM_NAME = "caps-and-cakes";

auto triangleArea (long n)
{
	return n * (n + 1) / 2;
}

auto triangleIndex (long n)
{
	long num = cast (long) (sqrt (n * 2.0L));
	return num - (triangleArea (num) > n);
}

immutable int size = 6;

auto solveTrianglesRandom (long n)
{
	long [size] res;
	debug {long steps = 0;}

	while (true)
	{
		debug {steps += 1;}
		long rem = n;
		foreach (pos; 0..size)
		{
			auto cur = triangleIndex (rem);
			if (pos < size - 1)
			{
				cur -= uniform (0, 1 + uniform (0, 1 +
				    uniform (0, 1 + cur)));
			}
			res[pos] = cur + 1;
			rem -= triangleArea (cur);
		}
		if (rem == 0)
		{
			debug {writeln ("n = ", n + 1, ", steps ", steps);}
			return res;
		}
	}
}

void main ()
{
	version (IO_FILES)
	{
		stdin  = File (PROBLEM_NAME ~ ".in",  "rt");
		stdout = File (PROBLEM_NAME ~ ".out", "wt");
	}

	long n;
	while (readf (" %s", &n) > 0)
	{
		auto ans = solveTrianglesRandom (n - 1);
		writefln ("%s\n%(%s %)", 6, ans[]);
		stdout.flush ();
	}
}
