#include <bits/stdc++.h>
using namespace std;
const int maxN = 1e5;
signed main(){
cin.tie(0);
ios::sync_with_stdio(false);
int n;
cin >> n;
vector<int> vec(n + 1);
for(int i = 1; i <= n; i++){
cin >> vec[i];
}
vector<vector<bool>> dp(n + 1, vector<bool>(maxN + 1, 0));
dp[0][0] = true;
for(int i = 1; i <= n; i++){
for(int j = 0; j <= maxN; j++){
if(j - vec[i] < 0){
dp[i][j] = dp[i - 1][j];
continue;
}
dp[i][j] = (dp[i - 1][j - vec[i]] || dp[i - 1][j]);
}
}
set<int> possible;
for(int i = 1; i <= maxN; i++){
if(dp[n][i]) possible.insert(i);
}
cout << possible.size() << endl;
for(auto num: possible){
cout << num << " ";
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBtYXhOID0gMWU1OwpzaWduZWQgbWFpbigpewoJY2luLnRpZSgwKTsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKCWludCBuOwoJY2luID4+IG47Cgl2ZWN0b3I8aW50PiB2ZWMobiArIDEpOwoJZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewoJCWNpbiA+PiB2ZWNbaV07Cgl9Cgl2ZWN0b3I8dmVjdG9yPGJvb2w+PiBkcChuICsgMSwgdmVjdG9yPGJvb2w+KG1heE4gKyAxLCAwKSk7CglkcFswXVswXSA9IHRydWU7Cglmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKyl7CgkJZm9yKGludCBqID0gMDsgaiA8PSBtYXhOOyBqKyspewoJCQlpZihqIC0gdmVjW2ldIDwgMCl7CgkJCQlkcFtpXVtqXSA9IGRwW2kgLSAxXVtqXTsKCQkJCWNvbnRpbnVlOwkKCQkJfSAKCQkJZHBbaV1bal0gPSAoZHBbaSAtIDFdW2ogLSB2ZWNbaV1dIHx8IGRwW2kgLSAxXVtqXSk7CgkJfQoJfQoJc2V0PGludD4gcG9zc2libGU7Cglmb3IoaW50IGkgPSAxOyBpIDw9IG1heE47IGkrKyl7CgkJaWYoZHBbbl1baV0pIHBvc3NpYmxlLmluc2VydChpKTsKCX0KCWNvdXQgPDwgcG9zc2libGUuc2l6ZSgpIDw8IGVuZGw7Cglmb3IoYXV0byBudW06IHBvc3NpYmxlKXsKCQljb3V0IDw8IG51bSA8PCAiICI7Cgl9CgkKfQ==