问题 D: 任意数字之和(1)

问题 D: 任意数字之和(1)

时间限制: 1 Sec  内存限制: 256 MB
提交: 87  解决: 46
[提交][状态][讨论版][命题人:]

题目描述

在n个正整数中ai,任意选择x个数(0<=x<=n),一共有多少种方案。并把每种方案选择的数字之和,按照从小到大的方式输出。如果存在以其中一种方案选择一个数而另一种方案不不选择该数,则认为这两种方案不同。注意:方案选择与位置有关,与数的大小无关。例如:一种方案选择了第一个数,而另一种方案没有选择第一个数,而是选择了第二个数。即使第一个数和第二个数相同,也认为是两种不同的方案。

输入

第一行:一个整数数n

第二行:n个整数ai

输出

第一行:方案总数

第二行:每种方案选择的数字之和。以空格分隔

样例输入

3
1 2 3

样例输出

8
0 1 2 3 3 4 5 6

提示


数据范围:



1<=n<=20



1<=ai<=10^6



样例解释:



可以这样选择



1、什么都不选为空      和: 0



2、只选择1       和 :1



3、选择1 2   和:  3



4、 选择1 3 和:4



5、选择1 2 3 和: 6



6、只选择2    和:2



7、选择2 3 和:5



8、只选择3  和:3



和经过排序:0 1 2 3 3 4 5 6 

[提交][状态]