LL B[N][2],C[N][N],f[N][2];
int n,m;
LL gcd(LL a,LL b){return b?gcd(b,a%b):a;}
LL lcm(LL a,LL b){return a/gcd(a,b)*b;}
void getC(int n)
{
int i,j;
n++;
for(i=0;i<=n;i++)C[i][0]=C[i][i]=1;
for(i=2;i<=n;i++){
for(j=1;j<n;j++){
C[i][j]=C[i-1][j-1]+C[i-1][j];
}
}
}
void bernoulli(int n)
{
int i,m;
LL s[2],b[2],l,g;
B[0][0]=1;B[0][1]=1;
for(m=1;m<=n;m++){
s[0]=1,s[1]=1;
for(i=1;i<m;i++){
b[0]=C[m+1][i]*B[i][0];
b[1]=B[i][1];
l=lcm(s[1],b[1]);
s[0]=l/s[1]*s[0]+l/b[1]*b[0];
s[1]=l;
}
s[0]=-s[0];
if(s[0]){
g=gcd(s[0],s[1]*C[m+1][m]);
B[m][0]=s[0]/g;
B[m][1]=s[1]*C[m+1][m]/g;
}
else B[m][0]=0,B[m][1]=1;
}
}
main()
int i,j;
LL g,maxlcm;
getC(20);
bernoulli(20);
while(~scanf("%d",&m))
{
for(i=0;i<=m;i++){
g=gcd(C[m+1][i],B[i][1]);
f[i][0]=C[m+1][i]/g*B[i][0];
f[i][1]=B[i][1]/g;
}
maxlcm=f[0][1];
for(i=1;i<=m;i++){
maxlcm=lcm(maxlcm,f[i][1]);
}
if(maxlcm<0)maxlcm=-maxlcm;
for(i=0;i<=m;i++){
f[i][0]*=maxlcm/f[i][1];
}
f[1][0]+=maxlcm*(m+1);
printf("%I64d",(m+1)*maxlcm);
for(i=0;i<=m;i++)
printf(" %I64d",f[i][0]);
printf(" 0\n");
}