Sum is X, Min is Y

2 secs 1024 MB
magurofly's icon magurofly

問題文

非負整数からなる集合 A={A1,A2,,AN}A = \{A_1, A_2, \ldots, A_N\} が与えられます。

QQ 個のクエリに答えてください。

jj 番目のクエリでは、 AA の空でない部分集合のうち、以下のどちらの条件も満たすものの個数を求めてください。

  • 全ての要素の総和を 10091009 で割ったあまりが XjX_j
  • 最小の要素が YjY_j

ただし、答えは非常に大きくなることがあるため、 998244353998244353 で割ったあまりを出力してください。

制約

  • 1N10001 \le N \le 1000
  • 0Ai<10090 \le A_i \lt 1009
  • ijAiAji \ne j \to A_i \ne A_j
  • 1Q1051 \le Q \le 10^5
  • 0Xj<10090 \le X_j \lt 1009
  • YjAY_j \in A
  • 入力はすべて整数である

入力

N QA1 A2  ANX1 Y1XQ YQN\ Q\\ A_1\ A_2\ \ldots\ A_N\\ X_1\ Y_1\\ \vdots\\ X_Q\ Y_Q

出力

各クエリ毎に答えを 11 行、合計 QQ 行出力せよ。

入出力例

入力例1
3 3
1 10 100
11 1
111 1
10 1
出力例1
1
1
0
  • 和が 1111 、最小値が 11 になる部分集合には {1,10}\{1, 10\} があります。
  • 和が 111111 、最小値が 1010 になる部分集合には {1,10,100}\{1, 10, 100\} があります。
  • 和が 1010 、最小値が 11 になる部分集合は存在しません。
入力例2
5 3
1 2 3 4 5
6 1
10 1
10 2
出力例2
2
2
1
  • 和が 66 、最小値が 11 になる部分集合には {1,2,3},{1,5}\{1, 2, 3\}, \{1, 5\} があります。
  • 和が 1010 、最小値が 11 になる部分集合には {1,2,3,4},{1,4,5}\{1, 2, 3, 4\}, \{1, 4, 5\} があります。
  • 和が 1010 、最小値が 22 になる部分集合には {2,3,5}\{2, 3, 5\} があります。
入力例3
50 5
0 3 33 28 21 39 18 17 10 32 12 40 36 49 15 25 45 27 50 8 22 52 56 38 59 53 55 30 9 47 24 20 11 46 4 7 35 41 54 6 16 34 23 29 48 43 13 31 44 5
146 0
177 4
70 3
165 4
64 0
出力例3
459533214
205011665
724447665
318565923
636127576

998244353998244353 で割ったあまりを出力することに注意してください。

提出


Go (1.21)