You are given a polynomial of degree N with integer coefficients: f(x)=a_Nx^N+a_{N-1}x^{N-1}+...+a_0. Find all prime numbers p that divide f(x) for every integer x.

Constraints

* 0 \leq N \leq 10^4
* |a_i| \leq 10^9(0\leq i\leq N)
* a_N \neq 0
* All values in input are integers.

Input

Input is given from Standard Input in the following format:


N
a_N
:
a_0


Output

Print all prime numbers p that divide f(x) for every integer x, in ascending order.

Examples

Input

2
7
-7
14


Output

2
7


Input

3
1
4
1
5


Output




Input

0
998244353


Output

998244353
#include<cstdio>
#include<cstdlib>
using namespace std;
int n,x,a[10005];
long long pre[100000],tot=0;
bool bo[100005];
int main()
{
//  freopen("1.txt","r",stdin);
    scanf("%d",&n);
    for(int i=n;i>=0;i--)
        scanf("%d",&a[i]);
    //return 0;

    for(int i=2;i<=10000;i++)
    if(!bo[i])
    {
        pre[++tot]=i;
        for(int j=2*i;j<=10000;j+=i)
        {
            bo[j]=true;
        }
    }

    x=abs(a[n]);
    for(int i=2;i<=100000;i++)
    {
        if(x%i==0&&i>10000)
            pre[++tot]=i;
        while(x%i==0&&x!=0)
            x/=i;
    }
    if(x!=1)
        pre[++tot]=x;

//  return 0;

    for(int i=1;i<=tot;i++)
    {
        for(int j=1;j<=20;j++)
        {
            int k=rand()%pre[i];
            long long c=0;
            for(int l=n;l>=0;l--)
            {
                c=(c*k+a[l])%pre[i];
            } 
            if(c!=0)
                break;
            if(j==20)
                printf("%d\n",pre[i]);
        }
    }
}
