/*题意就是给你n个人,从中选出m个人,使其总和为n的倍数。
这个题为明显的抽屉原理。首先,预处理一个数组s记录前i项和,i:1-n。
若前i项和中有一项能被n整数,则符合题意输出一种方案。
否则,n个s[i]中必定至多有n-1中余数,即至少两个Si同余。则将他们找出,输出两个下标中间的项即为符合题意的方案。*/
#include <stdio.h>
#include <cstring>
int s[10001];
int a[10001];
int m[10001];
bool v[10001];
int main()
{
int n;
while(scanf("%d",&n)==1)
{
memset(s,0,sizeof(s));
memset(m,0,sizeof(m));
memset(v,false,sizeof(v));
bool ret=false;
for(int i=1; i<=n; i++)
{
scanf("%d",&a[i]);
s[i]=s[i-1]+a[i];
s[i]=s[i]%n;
}
for(int i=1; i<=n; i++)
{
if(s[i]==0)
{
ret=true;
printf("%d\n",i);
for(int j=1; j<i; j++)
printf("%d ",a[j]);
printf("%d\n",a[i]);
break;
}
}
if(ret) continue;
int e=0;
for(int i=1; i<=n; i++)
{
if(!v[s[i]])
{
v[s[i]]=true;
m[s[i]]=i;//用来记录余数相同的第一个下标
}
else
{
e=i;//余数相同的第二个下标
break;
}
}
printf("%d\n",e-m[s[e]]);
for(int i=m[s[e]]+1; i<e; i++)
printf("%d ",a[i]);
printf("%d\n",a[e]);
}
return 0;
}