泠珞最近学习了前缀和算法,她写出了以下程序:
```cpp
read(n),read(a);
for(int i=0;i<=n;i++)read(f[i]);
for(int t=1;t<=n;t++){
for(int i=1;i<=n;i++)f[i]=f[i]+a*f[i-1];
ans[t]=f[t];
}
```
她发现这个程序在 $n$ 比较大的时候会运行超时,请你帮忙写一个程序帮她计算出 $\text{ans}_1,\text{ans}_2,\cdots,\text{ans}_n$,由于答案数值过大,你只需告诉她每个数除以 $998244353$ 的余数。
## Input
第一行两个正整数 $n,a$。
接下来一行 $n+1$ 个非负整数,表示 $f_0,f_1,\cdots,f_n$。
## Output
$n$ 个非负整数,表示 $\text{ans}_1,\text{ans}_2,\cdots,\text{ans}_n$。
[samples]
## Background
~~童话只美在真实却从不续写。~~
童话只美在温柔却从不续写。
## Note
数据范围:
对于 $100\%$ 的数据,保证 $2\leqslant n\leqslant 10^6,0\leqslant f_i<998244353,1\leqslant a<998244353$。
| 子任务编号 | $n\leqslant$ | 特殊性质 | 分值 |
| :--------: | :------------: | :------: | :--: |
| $1$ | $2000$ | | $5$ |
| $2$ | $10^5$ | A | $5$ |
| $3$ | $10^5$ | BC | $5$ |
| $4$ | $10^5$ | BD | $10$ |
| $5$ | $10^5$ | C | $10$ |
| $6$ | $5\times10^4$ | | $10$ |
| $7$ | $10^5$ | | $10$ |
| $8$ | $2\times 10^5$ | | $15$ |
| $9$ | $5\times 10^5$ | | $15$ |
| $10$ | $10^6$ | | $15$ |
特殊性质 A:保证 $f_i\ne 0$ 的 $i$ 数量不超过 $100$。
特殊性质 B:保证 $a=1$。
特殊性质 C:保证对于所有 $i\in[0,n]$,都满足 $f_i=1$。
特殊性质 D:保证对于所有 $i\in[0,n]$,都满足 $f_i={i+2\choose 2}=\frac{(i+2)(i+1)}{2}$。