#abc236h. [abc236_h]Distinct Multiples

[abc236_h]Distinct Multiples

問題文

正整数 N,MN, M および正整数列 D=(D1,dots,DN)D = (D_1, \\dots, D_N) が与えられます。

以下の条件を満たす正整数列 A=(A1,dots,AN)A = (A_1, \\dots, A_N) の総数を 998244353998244353 で割った余りを求めてください。

  • 1leqAileqM,(1leqileqN)1 \\leq A_i \\leq M \\, (1 \\leq i \\leq N)
  • AineqAj,(1leqiltjleqN)A_i \\neq A_j \\, (1 \\leq i \\lt j \\leq N)
  • i,(1leqileqN)i \\, (1 \\leq i \\leq N) について、AiA_iDiD_i の倍数

制約

  • 2leqNleq162 \\leq N \\leq 16
  • 1leqMleq10181 \\leq M \\leq 10^{18}
  • 1leqDileqM,(1leqileqN)1 \\leq D_i \\leq M \\, (1 \\leq i \\leq N)
  • 入力は全て整数である。

入力

入力は以下の形式で標準入力から与えられる。

NN MM D1D_1 ldots\\ldots DND_N

出力

答えを出力せよ。


入力例 1

3 7
2 3 4

出力例 1

3

条件を満たす AA(2,3,4),(2,6,4),(6,3,4)(2, 3, 4), (2, 6, 4), (6, 3, 4)33 通りです。


入力例 2

3 3
1 2 2

出力例 2

0

条件を満たす AA は存在しません。


入力例 3

6 1000000000000000000
380214083 420492929 929717250 666796775 209977152 770361643

出力例 3

325683519

998244353998244353 で割った余りを求めることに注意してください。