『SpOI - R1』强大到让你们所有人注视

题目描述

**本题包含多组测试。** 给定一个 $n$ 位的 $k$ 进制大数。 令 $S(l,r)$ 表示截取这个 $k$ 进制大数从高到低第 $l$ 位至第 $r$ 位构成的新 $k$ 进制数。 你需要求出 $\sum\limits_{1\leq l\leq r\leq n} S(l,r)$,注意这里的求和也建立在 $k$ 进制下。 由于答案可能很大,设 $(20070720)_{10}$ 在 $k$ 进制下是 $x$,你只需要输出答案对 $x$ 取模的结果。 **再次提醒:以上所有求和、运算和取值都建立在 $k$ 进制下。**

输入输出格式

输入格式


第一行一个整数 $T$,表示数据组数。 每组数据第一行两个正整数 $n,k$,表示这个大数。 每组数据第二行一个数列 $a$,从高位至低位依次表示这个大 $k$ 进制数的每一位上的数。保证 $\forall i\in[1,n],0\leq a_i<k$。

输出格式


每组数据一行,表示答案对 $x$ 取模的结果。由于这也是一个 $k$ 进制数,所以用空格隔开依次输出每一位。 **注意你的输出中不应含有前导零。**

输入输出样例

输入样例 #1

1
3 2
1 1 0

输出样例 #1

1 1 0 1

输入样例 #2

1
2 20070721
20070720 1

输出样例 #2

2

说明

#### 样例 #1 解释 所有的 $S(l,r)$:$(1)_2,(1)_2,(0)_2,(11)_2,(10)_2,(110)_2$,把它们在 $2$ 进制下相加得到 $(1101)_2$,再在 $2$ 进制下对 $(20070720)_{10}=(1001100100100000101000000)_2$ 取模即可得到答案 $(1101)_2$。 #### 样例 #2 解释 对于这个数,$S(1,1)$ 显然被 $(\overline{20070720})_{20070721}$ 整除,$S(2,2),S(1,2)$ 被 $(\overline{20070720})_{20070721}$ 除后都余 $1$。所以取模后的答案是 $(2)_{20070721}$。 ### 数据范围 **本题开启子任务捆绑与子任务依赖。** 对于 $100\%$ 的数据,$1\leq T\leq 10$,$1\leq n\leq 5\times 10^5$,$0\leq a_i<k\leq 10^9$,$2\leq k\leq 10^9$。$k$ 进制大数可能含有前导零。 | Subtask | $T\leq$ | $n\leq$ | 特殊性质 | 得分 | 子任务依赖 | | :-----------: | :-----------: | :-----------: | :-----------: | :-----------: | :-----------: | | 1 | $10$ | $100$ | 无 | $25$ | 无 | | 2 | $1$ | $5\times 10^3$ | $k>20070720$ | $20$ | 无 | | 3 | $1$ | $8\times 10^3$ | 无 | $25$ | 1,2 | | 4 | $5$ | $5\times 10^5$ | 无 | $30$ | 1,2,3 |