#loj5534. 「PA 2018 Final」Sumka

「PA 2018 Final」Sumka

[AdditionalFile5534.zip](file://AdditionalFile5534.zip?type=additional_file)

#5534. 「PA 2018 Final」Sumka

标签: 传统 | 时间限制: 1000 ms | 内存限制: 256 MiB |

题目描述

题目译自 PA 2018 Final Sumka

Bajtazar 是多领域的专家,但他对自己的收入并不满意。在朋友的推荐下,他决定将资金投资于基金。

有五家公司可供选择:Bitoff Securities LLC、Bajtton Unmount、Bajtou Hedge Fund Group、BajtConneeeeeeeeeect 和 Bajtocka Kasa Oszczędności。每家公司都提供相同的投资者计划:支付一小笔入门费后即可开始赚钱!在第 ii 天,你将在系统中的虚拟账户上获得 ii 个 bajtolar。你可以随时结束投资并提取迄今为止积累的资金,即如果在第 kk 天后决定退出,将获得金额 1+2++k=k(k+1)21 + 2 + \ldots + k = \frac{k \cdot (k+1)}{2}

这样的系统可以带来巨大的利润,但 Bajtazar 并不是贪婪的人。他只需要一笔正好为 nn 个 bajtolar 的小额资金(更高的利润将被高额征税)。请帮助他在五家可用的公司中选择一些(或全部)进行投资,使得提取的总金额恰好为 nn

输出所选公司的数量(从 1155)以及 Bajtazar 应从每个选定公司的投资中获得的金额。每个金额必须是形式为 k(k+1)2\frac{k \cdot (k+1)}{2} 的数字,其中 kk 是某个正整数。(这种形式的数字有时被称为金字塔数,源于任务中描述的某种「投资」术语。)

可以证明,对于任务中给定的限制范围内的每个 nn,都存在解决方案。

输入格式

输入的唯一一行包含一个整数 nn (1n1018)(1 \leq n \leq 10^{18})

输出格式

第一行输出一个整数 ss(满足 1s51 \leq s \leq 5),表示 Bajtazar 应投资的公司数量。

第二行输出 ss 个正整数,表示从每个选定公司中获得的金额。这些数字的总和必须恰好为 nn

如果存在多种可能的解决方案,输出其中任意一个即可。

样例

输入

18

输出

4
6 1 10 1

Bajtazar 可以选择投资四家公司。如果他在两家公司投资 11 天后结束,在一家投资 33 天后结束,在另一家投资 44 天后结束,则总共获得的小额资金为:

$$(1) + (1) + (1+2+3) + (1+2+3+4) = 1 + 1 + 6 + 10 = 18$$

因此,我们可以输出数字 1,1,6,101, 1, 6, 10。输出的数字顺序无关紧要,因此 6,1,10,16, 1, 10, 1 也是一个正确的解决方案。