#include <cstdio>
#include <cstring>
#include <algorithm>
typedef long long ll ;
using namespace std ;
const int MAXN = 1e6 + 10 , mod = 998244353 , G = 3 , Gi = 332748118 ;
int c[MAXN] , r[MAXN] , d[MAXN] , lb[MAXN] , tt[MAXN] , g[MAXN] ;
int qpow (int x , int p = mod - 2) {
int ret = 1 ;
for (; p ; p >>= 1 , x = 1LL * x * x % mod)
if (p & 1) ret = 1LL * ret * x % mod ;
return ret ;
}
void NTT (int *t , int len , int k) {
for (int i = 0 ; i < len ; i++) if (i > r[i]) swap (t[i] , t[r[i]]) ;
for (int i = 2 ; i <= len ; i <<= 1) {
ll w = qpow ((k > 0) ? G : Gi , (mod - 1) / i) ;
for (int j = 0 , p = (i >> 1) ; j < len ; j += i) {
ll tmp = 1 ;
for (int k = j ; k < j + p ; k++ , tmp = tmp * w % mod) {
ll x = t[k] , y = tmp * t[k + p] % mod ;
t[k] = (x + y) % mod , t[k + p] = (x - y + mod) % mod ;
}
}
}
}
void inv (int *a , int *b , int k) {
if (k == 1) {
b[0] = qpow (a[0]) ;
return ;
}
inv (a , b , (k + 1) >> 1) ;
int logn = 0 , lim = 1 ;
for (; lim < (k << 1) ; lim <<= 1 , logn++) ;
for (int i = 1 ; i < lim ; i++)
r[i] = ((r[i >> 1] >> 1) | ((i & 1) << (logn - 1))) ;
for (int i = 0 ; i < k ; i++) c[i] = a[i] ;
for (int i = k ; i < lim ; i++) c[i] = 0 ;
NTT (c , lim , 1) ; NTT (b , lim , 1) ;
for (int i = 0 ; i < lim ; i++)
b[i] = (2LL * b[i] % mod - (ll)b[i] * b[i] % mod * c[i] % mod + mod) % mod ;
NTT (b , lim , -1) ;
int inv = qpow (lim) ;
for (int i = 0 ; i < lim ; i++)
b[i] = (ll)b[i] * inv % mod ;
for (int i = k ; i < lim ; i++) b[i] = 0 ;
}
void ln (int *a , int *b , int n) {
memset (g , 0 , sizeof (g)) ;
for (int i = 0 ; i < n ; i++) d[i] = a[i] ;
inv (d , g , n) ; d[0] = 0 ;
for (int i = 1 ; i < n ; i++) d[i - 1] = (ll)i * d[i] % mod , d[i] = 0 ;
int logn = 0 , lim = 1 ;
for (; lim < (n << 1) ; lim <<= 1 , logn++) ;
for (int i = 1 ; i < lim ; i++)
r[i] = ((r[i >> 1] >> 1) | ((i & 1) << (logn - 1))) ;
NTT (d , lim , 1) , NTT (g , lim , 1) ;
for (int i = 0 ; i < lim ; i++) b[i] = ((ll)d[i] * g[i]) % mod ;
NTT (b , lim , -1) ;
int inv = qpow (lim) ;
for (int i = 0 ; i < lim ; i++) b[i] = (ll)b[i] * inv % mod ;
for (int i = n ; i < lim ; i++) b[i] = 0 ;
for (int i = n - 1 ; ~i ; i--) b[i + 1] = (ll)qpow (i + 1) * b[i] % mod , b[i] = 0 ;
}
int k1 , k2 , k3 ;
void exp (int *a , int *b , int n) {
if (n == 1) {b[0] = 1 ; return ;}
exp (a , b , (n + 1) / 2) ;
ln (b , lb , n) ;
int logn = 0 , lim = 1 ;
for (; lim < (n << 1) ; lim <<= 1 , logn++) ;
for (int i = 1 ; i < lim ; i++)
r[i] = ((r[i >> 1] >> 1) | ((i & 1) << (logn - 1))) ;
for (int i = 0 ; i < lim ; i++) tt[i] = 0 ;
for (int i = 0 ; i < n ; i++) tt[i] = a[i] ;
for (int i = n ; i < lim ; i++) tt[i] = lb[i] = 0 ;
for (int i = 0 ; i < lim ; i++) tt[i] = (tt[i] - lb[i] + mod) % mod ;
tt[0]++ , NTT (b , lim , 1) , NTT (tt , lim , 1) ;
for (int i = 0 ; i < lim ; i++) b[i] = (ll)b[i] * tt[i] % mod ;
NTT (b , lim , -1) ;
int inv = qpow (lim) ;
for (int i = 0 ; i < lim ; i++) b[i] = (ll)b[i] * inv % mod ;
for (int i = n ; i < lim ; i++) b[i] = 0 ;
}
int n , a[MAXN] , b[MAXN] ;
char s[MAXN] ;
int R () {
int x = 0 ; char ch = getchar () ;
for (; ch < 48 || ch > 57 ; ch = getchar ()) ;
for (; ch >= 48 && ch <= 57 ; ch = getchar ()) (x = 10LL * x % mod + ch - '0') % mod ;
return x ;
}
int main () {
scanf ("%d%s" , &n , s + 1) ; int len = strlen (s + 1) ;
for (int i = 1 ; i <= len ; i++)
k1 = (k1 * 10LL % mod + s[i] - '0') % mod , k2 = (k2 * 10LL % mod + s[i] - '0') % (mod - 1) ;
for (int i = max (len - 5 , 1) ; i <= len ; i++) k3 = k3 * 10 + s[i] - '0' ;
for (int i = 0 ; i < n ; i++) scanf ("%d" , &a[i]) ;
int pp = 0 ;
for (; pp < n && !a[pp] ; pp++) ;
if ((pp && k3 >= n) || (ll)pp * k1 >= n) {
for (int i = 0 ; i < n ; i++) printf ("0 ") ;
return 0 ;
}
int tmp = a[pp] , t2 = qpow (tmp) ;
for (int i = 0 ; i <= pp ; i++) a[i] = (ll)a[i + pp] * t2 % mod ;
ln (a , b , n) ;
for (int i = 0 ; i < n ; i++) a[i] = (ll)b[i] * k1 % mod ;
memset (b , 0 , sizeof (b)) ,
memset (g , 0 , sizeof (g)) ;
memset (c , 0 , sizeof (c)) ;
memset (d , 0 , sizeof (d)) ;
memset (tt , 0 , sizeof (tt)) ;
memset (lb , 0 , sizeof (lb)) ;
memset (r , 0 , sizeof (r)) ;
exp (a , b , n) ; pp *= k1 ; int v = qpow (tmp , k2) ;
for (int i = 0 ; i < pp ; i++) printf ("0 ") ;
for (int i = pp ; i < n ; i++) printf ("%lld " , (ll)b[i - pp] * v % mod) ;
return 0 ;
}