Code:
#include <bits/stdc++.h>
#define N 1000010
#define mod 998244353
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
namespace NTT
{
int a[N],b[N],f[N],g[N];
int qpow(int x,int y)
{
int tmp = 1;
while(y)
{
if(y&1) tmp=1ll*tmp*x%mod;
x=1ll*x*x%mod,y>>=1;
}
return tmp;
}
void NTT(int *a,int len,int opt){
for(int i = 0,k = 0;i < len; ++i)
{
if(i > k) swap(a[i],a[k]);
for(int j = len >> 1;(k^=j)<j;j>>=1);
}
for(int k = 2;k <= len;k <<= 1)
{
int t = (k>>1),x=qpow(3,(mod-1)/k);
if(opt==-1) x=qpow(x,mod-2);
for(int i=0;i<len;i+=k)
{
int w=1;
for(int j=i;j<i+t;++j)
{
int tmp=1ll*a[j+t]*w%mod;
a[j+t]=(a[j]-tmp+mod)%mod;
a[j]=(a[j]+tmp)%mod;
w=1ll*w*x%mod;
}
}
}
if(opt==-1) for(int i=0,t=qpow(len,mod-2);i<len;++i) a[i]=1ll*a[i]*t%mod;
}
void solve(int *a,int *b,int len)
{
if(len==1) { b[0]=qpow(a[0],mod-2); return ; }
solve(a,b,len>>1);
for(int i=0;i<len;++i) f[i]=a[i],g[i]=b[i];
NTT(f,len<<1,1),NTT(g,len<<1,1);
for(int i=0;i<(len<<1);++i) f[i]=((1ll*f[i]*g[i])%mod*g[i])%mod;
NTT(f,len<<1,-1);
for(int i=0;i<len;++i) b[i]=((b[i]<<1)%mod-f[i]+mod)%mod;
}
void Inv(int *a,int *b,int len)
{
int m = 1;
while(m <= len) m <<= 1;
solve(a,b,m);
}
};
int a[N],b[N];
int main()
{
// setIO("input");
int n;
scanf("%d",&n);
for(int i=0;i<n;++i) scanf("%d",&a[i]);
NTT::Inv(a,b,n);
for(int i=0;i<n;++i) printf("%d ",b[i]);
return 0;
}