#include <iostream>
#include <cstdio>
#include <cstring>
#include <stdlib.h>
#include <algorithm>
#include <vector>
#define int long long
#define N 270004
#define isdigit(ch) ('0' <= ch && ch <= '9')
#define clr(f,n) memset(f,0,sizeof(int) * (n))
#define cpy(f,g,n) memcpy(f,g,sizeof(int) * (n))
using namespace std;
template<typename T>
void read(T&x) {
x = 0;
int f = 1;
char ch = getchar();
for (;!isdigit(ch);ch = getchar()) f = (ch == '-' ? -1 : f);
for (;isdigit(ch);ch = getchar()) x = (x << 1) + (x << 3) + (ch ^ 48);
x *= f;
}
template<typename T>
void write(T x) {
if (x < 0) x = -x,putchar('-');
if (x > 9) write(x / 10);
putchar(x % 10 + '0');
}
int qpow(int a,int b,int mod = 998244353) {
int res = 1;
while(b) {
if (b & 1) res = res * a % mod;
a = a * a % mod;
b >>= 1;
}
return res;
}
const int mod = 998244353,G = 3,invg = qpow(G,mod - 2);
void printp(int *f,int n) {
for (int i = 0;i <= n;i ++) write(f[i]),putchar(' ');
putchar('\n');
}
int tr[N],tf;
void tpre(int n) {
if (n == tf) return;
tf = n;
for (int i = 0;i < n;i ++)
tr[i] = (tr[i >> 1] >> 1) | (i & 1 ? n >> 1 : 0);
}
void ntt(int *f,int n,bool flag) {
tpre(n);
for (int i = 0;i < n;i ++)
if (i < tr[i]) swap(f[i],f[tr[i]]);
static int w[N] = {1};
for (int p = 2;p <= n;p <<= 1) {
int rotate = qpow(flag ? G : invg,(mod - 1) / p),len = p >> 1;
for (int i = 1;i < len;i ++) w[i] = w[i - 1] * rotate % mod;
for (int st = 0;st < n;st += p)
for (int i = st;i < st + len;i ++) {
int tt = f[i + len] * w[i - st] % mod;
f[i + len] = f[i] - tt;
if (f[i + len] < 0) f[i + len] += mod;
f[i] = (f[i] + tt) % mod;
}
}
if (!flag) {
int invn = qpow(n,mod - 2);
for (int i = 0;i < n;i ++) f[i] = f[i] * invn % mod;
}
}
void px(int *f,int *g,int n) {
for (int i = 0;i <= n;i ++) f[i] = f[i] * g[i] % mod;
}
void mulp(int *f,int *g,int n,int m) {
for (m += n,n = 1;n <= m;n <<= 1);
ntt(f,n,1),ntt(g,n,1);
px(f,g,n);
ntt(f,n,0);
}
void invp(int *f,int m) {
int n;
for (n = 1;n <= m;n <<= 1);
static int w[N],r[N],sav[N];
w[0] = qpow(f[0],mod - 2);
for (int p = 2;p <= n;p <<= 1) {
for (int i = 0;i < (p >> 1);i ++) r[i] = w[i] % mod;
cpy(sav,f,p);
ntt(r,p,1),ntt(sav,p,1);
px(r,sav,p);
ntt(r,p,0);
clr(r,p >> 1);
cpy(sav,w,p);
ntt(sav,p,1),ntt(r,p,1);
px(r,sav,p);
ntt(r,p,0);
for (int i = p >> 1;i < p;i ++) w[i] = (2 * w[i] - r[i] + mod) % mod;
}
cpy(f,w,m + 1),clr(sav,n + n),clr(w,n + n),clr(r,n + n);
}
int f[N];
signed main(){
int n;
cin >> n;
for (int i = 0;i <= n;i ++) read(f[i]);
invp(f,n),printp(f,n);
return 0;
}