/*一个简单题,直接模拟天平的称重过程就好了,利用各种可能的加减运算,把运算到的结果标记起来,没被标记的就是答案了*/
#include<stdio.h>
#include<string.h>
int num[110];
int vis[11000],t[11000],sta[11000];
int main()
{
int n,i,j,sum,cnt;
while(scanf("%d",&n)!=EOF)
{
sum=0;
for(i=0;i<n;i++)
{
scanf("%d",&num[i]);
sum+=num[i];
}
memset(vis,0,sizeof(vis));
for(i=0,vis[0]=1;i<n;i++)
{
for(j=0;j<=sum;j++)t[j]=vis[j];
for(j=sum-num[i];j>=0;j--)
if(t[j]&&j+num[i]<=sum)
vis[j+num[i]]=1;
for(j=num[i]+1;j<=sum;j++)
if(t[j]&&j-num[i]>0)
vis[j-num[i]]=1;
for(j=num[i]-1;j>0;j--)
if(t[j])vis[num[i]-j]=1;
}
for(i=1,cnt=0;i<=sum;i++)
if(!vis[i])sta[cnt++]=i;
if(cnt)
{
printf("%d\n",cnt);
for(i=0;i<cnt-1;i++)
printf("%d ",sta[i]);
printf("%d\n",sta[i]);
}
else printf("0\n");
}
return 0;
}