秦九韶
#include<cstdio>
#define p 1000000009
long long n,m,i,x,ans,cnt=0,a[105],f[100005];
long long read()
{
long long x=0,f=1;
char ch=getchar();
if (ch=='-') f=-1;
while (ch<'0'||ch>'9') ch=getchar();
while (ch>='0'&&ch<='9')
{
x=(x*10+ch-'0')%p;//一定要边读边取模!!!
ch=getchar();
}
return x*f;
}
int main()
{
n=read();
m=read();
for (i=n;i>=0;i--) a[i]=read();//反向读入,a[n]表示a0
for (x=1;x<=m;x++)
{
ans=0;
for (i=0;i<n;i++) ans=((ans+a[i])*x)%p;
if ((ans+a[n])%p==0) f[++cnt]=x;//a0不需要*x
}
printf("%lld\n",cnt);
for (i=1;i<=cnt;i++) printf("%lld\n",f[i]);
return 0;
}