一旦系数大了就有锅
#include <cstdio>
#define int long long
const int maxn = 4e5+5,mod = 998244353,G = 3;
inline void swap(int &a,int &b){a ^= b,b ^= a,a ^= b;}
inline int re(){
char c;
while((c=getchar())>'9'||c<'0');
int res = c-'0';
while((c=getchar())>='0'&&c<='9')res = res*10+c-'0';
return res;
}
inline void print(int x){
int temp = x/10;
if(temp)print(temp);
putchar(x-10*temp+'0');
}
inline void inpoly(int *F,int len){for(int i=0;i<=len;++i)F[i] = re();}
inline void printpoly(int *F,int len){
for(int i=0;i<=len;++i)print(F[i]),putchar(' ');
putchar('\n');
}
inline int KSM(int a,int x){
int ans=1,base=a;
while(x){
if(x & 1)ans = ans*base%mod;
base = base*base%mod;
x >>= 1;
}
return ans;
}
inline void mst(int *F,int val,int len){for(register int i=0;i<len;++i)F[i] = val;}
inline void mpy(int *F,int *G,int len){for(register int i=0;i<len;++i)F[i] = G[i];}
const int INVG = KSM(G,mod-2);
int n,rev[maxn];
int f[maxn],g[maxn],temp1[maxn],temp2[maxn];
inline void grev(int len){for(int i=0;i<len;++i)rev[i] = (rev[i>>1]>>1 | ((i&1)?len>>1:0));}
inline void SWAP(int *F,int len){for(int i=0;i<len;++i)if(rev[i]<i)swap(F[rev[i]],F[i]);}
inline void NTT(int *F,int flag,int len){
grev(len),SWAP(F,len);
for(int merl = 1;merl < len;merl <<= 1){
int dwg = KSM(flag?INVG:G,(mod-1)/(merl<<1));
for(int st=0;st<len;st+=(merl<<1)){
int buf = 1;
for(int l=st;l<st+merl;++l){
int temp = F[l+merl]*buf%mod;
F[l+merl] = F[l] - temp;
if(F[l+merl] < 0)F[l+merl] += mod;
F[l] = F[l] + temp;
if(F[l] > mod)F[l] -= mod;
buf = dwg*buf%mod;
}
}
}
if(flag){
int invn = KSM(len,mod-2);
for(int i=0;i<len;++i)F[i] = F[i]*invn%mod;
}
}
inline void times(int *F,int *G,int len){for(int i=0;i<len;++i)F[i] = F[i]*G[i]%mod;}
inline void getinv(int *F,int len){
g[0] = F[0];
for(int L = 2;L <= len;L <<= 1){
mpy(temp2,F,L);
for(int i=0;i<(L>>1);++i)temp1[i] = (g[i]<<1)%mod;
NTT(g,0,L<<1),NTT(temp2,0,L<<1);
for(int i=0;i<(L<<1);++i)g[i] = g[i]*g[i]%mod*temp2[i]%mod;
NTT(g,1,L<<1);
for(int i=0;i<L;++i){
temp1[i] -= g[i];
if(temp1[i] < 0)temp1[i] += mod;
}
mpy(g,temp1,L<<1);
mst(temp1,0,L<<1),mst(temp2,0,L<<1);
}
mpy(F,g,len),mst(g,0,len<<1),mst(temp1,0,len<<1),mst(temp2,0,len<<1);
}
signed main(){
n = re(),--n;
inpoly(f,n);
// printpoly(f,n);
int nn = n;
for(n=1;n<=nn;n<<=1);
getinv(f,n),getinv(f,n);
printpoly(f,nn);
return 0;
}