#P7421. Knapsack

Knapsack

Problem Description

有一个大小为 $n$ 的数组 $a_1,...,a_{n}$。

$a[l, r]$ 表示可重集合 $\{a_l \ldots a_r\}$。

有 $q$ 次询问,输出 $a[l, r]$ 有多少子集的和是 $k$ 的倍数。

答案对 $998244353$ 取模。

Input

第一行给出 $n, k$。

第二行给出 $n$ 个数字 $a_1,\ldots a_n$。

接下来给一个 $q$。

然后 $q$ 行,每行一个 $l, r$ 表示一次询问。


#### 评测数据规模

$n, q \leq 2 \times 10^5, 0 \leq a_i < k \leq 100$.

并且保证每次询问 $l \leq r$.

Output

输出一行,表示 $q$ 次询问的答案。

特别的,注意空集也是一种答案。

#### 样例解释

$[3, 4]$ 的答案有 $\empty, \{a_4\}$.

$[2, 4]$ 的答案有 $\empty,\{a_2,a_3\},\{a_4\},\{a_2,a_3,a_4\}$.

$[4, 4]$ 的答案有 $\empty,\{a_4\}$.

4 2 0 1 1 0 3 3 4 2 4 4 4
2 4 2