全WA在第23个数非常迷QAQ
#include <bits/stdc++.h>
#define ll long long
#define Mid ((L+R)>>1)
using namespace std;
typedef pair<int,int> pii;
inline int read(){
char c;int x=0;int b=1;do{c=getchar();if(c==45)b=-1;}while(c>57||c<48);
do x=x*10+c-48,c=getchar();while(c<=57&&c>=48);x*=b;return x;
}
const int maxn=550010,mod=998244353,p=3,p2=332748118;
int i,j,k,n,m,g[maxn],f[maxn],A[maxn],B[maxn],C[maxn],Log[maxn];
int S[2][23],S2[2][23][maxn];
ll TMP[3][maxn],tmp[maxn];int R[maxn];
ll ksm(ll sum,int num){
ll ans=1;
while(num){
if(num&1)ans=ans*sum%mod;
sum=sum*sum%mod;
num>>=1;
}return ans;
}
void init(){
Log[0]=-1;for(i=1;i<maxn;i++)Log[i]=Log[i/2]+1;
for(i=0;i<23;i++)S[0][i]=ksm(p2,(mod-1)/(1<<i));
for(i=0;i<23;i++)S[1][i]=ksm(p,(mod-1)/(1<<i));
for(i=0;i<23;i++){
S2[0][i][0]=S2[1][i][0]=1;
for(j=1;j<maxn;j++){
S2[0][i][j]=1ll*S2[0][i][j-1]*S[0][i]%mod;
S2[1][i][j]=1ll*S2[1][i][j-1]*S[1][i]%mod;
}
}
}
void NTT(int len,ll *A,int op){
for(int i=0;i<len;i++)tmp[R[i]]=A[i];
for(int i=0;i<len;i++)A[i]=tmp[i];
ll Wn,w;
for(int i=1,t=1;i<len;i<<=1,++t){
Wn=S[op][t];
for(int j=0;j<len;j+=2*i){
for(int k=0,cnt=0;k<i;k++,++cnt){
w=S2[op][t][cnt];
int K=k+j;
ll Sum1=A[K],Sum2=A[K+i]*w%mod;
A[K]=Sum1+Sum2>=mod?Sum1+Sum2-mod:Sum1+Sum2;
A[K+i]=Sum1-Sum2<0?Sum1-Sum2+mod:Sum1-Sum2;
}
}
}
}
void mul(int len,int L,int *A,int *B,int *C){
for(int i=0;i<len;i++)TMP[0][i]=A[i];
for(int i=0;i<len;i++)TMP[1][i]=B[i];
for(int i=0;i<len;i++)R[i]=R[i/2]/2+(1<<L-1)*(i&1);
NTT(len,TMP[0],1);NTT(len,TMP[1],1);
for(int i=0;i<len;i++)TMP[2][i]=TMP[0][i]*TMP[1][i]%mod;
NTT(len,TMP[2],0);ll S=ksm(len,mod-2);
for(int i=0;i<len;i++)C[i]=TMP[2][i]*S%mod;
for(int i=0;i<len;i++)TMP[0][i]=TMP[1][i]=TMP[2][i]=0;
}
void work(int L,int R,int S){
if(L==R-1){
f[R]=f[R]+f[L]*g[1]%mod;
f[R]=f[R]>=mod?f[R]-mod:f[R];
}else{
work(L,Mid,S-1);
for(int i=L;i<=R;i++)A[i-L]=(i<=Mid?f[i]:0);
for(int i=L;i<=R;i++)B[i-L]=g[i-L];
mul(1<<S+1,S+1,A,B,C);
for(int i=L;i<=R;i++)A[i-L]=B[i-L]=0;
for(int i=Mid+1;i<=R;i++)f[i]=f[i]+C[i-L]>=mod?f[i]+C[i-L]-mod:f[i]+C[i-L];
work(Mid+1,R,S-1);
}
}
int main() {
freopen("P4721.in","r",stdin);
freopen("P4721.out","w",stdout);
init();
cin>>n;f[0]=1;
for(i=1;i<n;i++)g[i]=read();
work(0,(1<<Log[n-1]+1)-1,Log[n-1]+1);
for(i=0;i<n;i++)printf("%lld ",f[i]);puts("");
//cerr << 1.0*clock()/CLOCKS_PER_SEC << endl;
return 0;
}