#include <bits/stdc++.h>
#define ll long long
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
template <typename T> using o_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
template <typename T, typename R> using o_map = tree<T, R, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
#define inf 1e9
#define MOD 1000000007
void solve() {
ll n ; cin >> n ;
vector < int > a(n) ;
vector < int > dp(1e5+7 , 0 ) ;
for (int i = 0 ; i < n ; i++) {
cin >> a[i] ;
}
ll ans = 0 ;
for (int i = 0 ; i< n ; i++) {
for (int x = 1e5 ; x >= 1 ; x -- ) {
if (x - a[i] >= 1 && dp[x-a[i]] && ! dp[x] ) {
dp[x] = 1 ;
ans++ ;
}
}
if (!dp[a[i]] ) {
dp[a[i]] = 1 ;
ans++ ;
}
}
cout << ans << endl ;
for (int i = 1 ; i <=1e5 ; i ++ ) {
if (dp[i]) cout << i << " " ;
}
cout << endl ;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
ll t = 1;
//cin >> t;
while (t--) {
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdXNpbmcgb19zZXQgPSB0cmVlPFQsIG51bGxfdHlwZSwgbGVzczxUPiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT47CnRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBSPiB1c2luZyBvX21hcCA9IHRyZWU8VCwgUiwgbGVzczxUPiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT47CiNkZWZpbmUgaW5mIDFlOQojZGVmaW5lIE1PRCAxMDAwMDAwMDA3Cgp2b2lkIHNvbHZlKCkgewogICAgbGwgbiA7IGNpbiA+PiBuIDsKICAgIHZlY3RvciA8IGludCA+IGEobikgOwogICAgdmVjdG9yIDwgaW50ID4gZHAoMWU1KzcgLCAwICAgKSA7CiAgICBmb3IgKGludCBpID0gMCA7IGkgPCBuIDsgaSsrKSB7CiAgICAgICAgIGNpbiA+PiBhW2ldIDsKCiAgICB9CiAgICBsbCBhbnMgPSAwICA7CiAgICBmb3IgKGludCAgaSA9IDAgOyBpPCBuIDsgaSsrKSB7CiAgICAgICAgZm9yIChpbnQgeCAgPSAxZTUgOyAgeCA+PSAxICA7IHggLS0gKSB7CiAgICAgICAgICAgIGlmICh4IC0gYVtpXSA+PSAxICAmJiBkcFt4LWFbaV1dICYmICEgZHBbeF0gKSB7CiAgICAgICAgICAgICAgICBkcFt4XSA9IDEgOwogICAgICAgICAgICAgICAgYW5zKysgOwogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICBpZiAoIWRwW2FbaV1dICkgewogICAgICAgICAgICBkcFthW2ldXSA9IDEgOwogICAgICAgICAgICBhbnMrKyA7CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCBhbnMgPDwgZW5kbCA7CiAgICBmb3IgKGludCAgaSA9IDEgOyBpIDw9MWU1IDsgaSArKyApIHsKICAgICAgICBpZiAoZHBbaV0pIGNvdXQgPDwgaSAgPDwgIiAiICAgOwoKICAgIH0KICAgIGNvdXQgPDwgZW5kbCA7Cn0KCmludCBtYWluKCkgewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZSgwKTsKI2lmbmRlZiBPTkxJTkVfSlVER0UKICAgIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwogICAgZnJlb3Blbigib3V0cHV0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKI2VuZGlmCiAgICBsbCB0ID0gMTsKCiAgICAvL2NpbiA+PiB0OwogICAgd2hpbGUgKHQtLSkgewogICAgICAgIHNvbHZlKCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==