智乃酱的前缀和与差分
题号:NC225629
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

智乃酱最近学习了前缀和、差分。她现在对于这两个操作产生了浓厚的兴趣。

具体来说,前缀和是这样一种操作,假设数组是数组的前缀和数组,则有

而差分的操作则是前缀和反过来,假设数组是数组的差分数组,则有

我们将先求出数组,再把中的值赋值回称为对数组做一次前缀和,同理,将先求出数组,再把中的值赋值回数组称之为一次差分。

现在我们给定一个长度大小为的数组和一个参数
  • 时,请输出对次前缀和后的结果。
  • 时,请直接输出数组。
  • 时,请输出对次差分后的结果。
为了避免数字过大,你只用输出一个后的模系数字。
也就是说输出的数字应该大小在之间,即不要输出负数,如果由于差分导致数字的值小于0,则输出时需要再加上变成一个非负整数。

输入描述:

第一行输入两个整数表示数组长度和输入的参数。
接下来一行输入个用空格隔开的整数表示数组中每个元素的初始值。

输出描述:

输出一行个整数,表示进行若干次操作后数组中每个元素的值。
示例1

输入

复制
5 1
1 1 1 1 1

输出

复制
1 2 3 4 5
示例2

输入

复制
5 -1
1 0 0 0 0

输出

复制
1 998244352 0 0 0