#CF1967C. 树状数组逆变换

树状数组逆变换

树状数组逆变换

  • 时间限制:3 秒
  • 内存限制:256 MiB

题目描述

定义 lowbit⁡(x)\operatorname{lowbit}(x) 为 xx 的二进制最低位所代表的数,例如 lowbit⁡(12)=4\operatorname{lowbit}(12)=4。

对长度为 nn 的数组 aa,定义变换 ff:

$$f(a)_i=\left(\sum_{j=i-\operatorname{lowbit}(i)+1}^{i}a_j\right)\bmod 998244353.$$

记 fkf^k 为连续执行 kk 次变换 ff。给定数组 bb 和正整数 kk,请构造数组 aa,使得 fk(a)=bf^k(a)=b,并满足 0≤ai<9982443530\le a_i<998244353。

可以证明答案一定存在。

输入格式

第一行包含一个整数 tt,表示测试用例数。

每个测试用例第一行包含两个整数 n,kn,k。第二行包含 nn 个整数 b1,b2,…,bnb_1,b_2,\ldots,b_n。

输出格式

对每个测试用例输出一行 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n,表示任意一个合法答案。

样例输入 1

2
8 1
1 2 1 4 1 2 1 8
6 2
1 4 3 17 5 16

样例输出 1

1 1 1 1 1 1 1 1
1 2 3 4 5 6

数据范围

  • 1≤t≤1041\le t\le10^4;
  • 1≤n≤2⋅1051\le n\le2\cdot10^5,1≤k≤1091\le k\le10^9;
  • 0≤bi<9982443530\le b_i<998244353;
  • 所有测试用例的 nn 之和不超过 2⋅1052\cdot10^5。

本题采用独立测试点计分。

子任务编号 分值 特殊限制
1 20 n≤20n\le20,k≤20k\le20,且单个输入文件中 ∑n≤200\sum n\le200
2 40 n≤45n\le45,且单个输入文件中 ∑n≤450\sum n\le450
3 无特殊限制