using namespace std;
const int N = 1e5 + 10;
int w[N];
bool f[110][N * 2];//f[i][j]表示第i个物品,重量为j
int n, m;
int main()
{
int n;
cin >>n;
for(int i = 1; i <= n ; i ++)cin >> w[i], m += w[i];
f[0][N] = true;
for(int i = 1; i <= n; i ++)
{
for(int j = -m; j <= m ; j ++)//从-m开始是因为我们要算砝码在不同位置的所有情况,极限情况下都放在左边
{
//不放第i个砝码
f[i][j + N] = f[i - 1][j + N];
//把这个砝码加到左边
if(j - w[i] >= -m){
f[i][j + N] |= f[i - 1][j - w[i] + N];
}
//把这个砝码放在右边
if(j + w[i] <= m)
{
f[i][j + N] |= f[i - 1][j + w[i] + N];
}
}
}
int ans = 0;
for(int i = 1; i <= m; i ++)//从1开始,所有上面从-m开始也是无所谓的
{
if(f[n][i + N]){
ans ++;
cout << i << endl;
}
}
cout << ans << endl;
}