1473 - Largest LCM

時間制限 2 秒 / メモリ制限 256 MB / 得点 500 / Writer もけ / x 2 / 統計 /


TLE
2sec
MLE
256MB
得点
500

問題

長さ $N$ の数列 $A \ (A_1, A_2, \ldots, A_N)$ が与えられます。
数列 $A$ から任意の個数の要素を抽出して数列 $B$ を作ります。
ただし、数列 $B$ の各要素の最小公倍数を $L$ とするとき、$L$ が $M!$ の約数でなければなりません。
このとき、$L$ の最大値を求めてください。
ただし、答えは非常に大きくなる場合があるので $998,244,353$ で割った余りを出力してください。

制約

  • $1 \leq N \leq 100,000$
  • $1 \leq M \leq 1,000,000$
  • $1 \leq A_i \leq 1,000,000$ $(1 \leq i \leq N)$
  • 入力はすべて整数である。

入力

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

$N$ $M$
$A_1$ $A_2$ $\ldots$ $A_N$

出力

条件を満たす数列 $B$ が作れるならば、数列 $B$ の各要素の最小公倍数の最大値を $998,244,353$ で割った余りを出力せよ。
条件を満たす数列 $B$ が一つも作れないならば、-1 を出力せよ。
出力の末尾には改行を入れること。

入出力例

入力例1

5 5
8 9 10 11 12

出力例1

120

$B$ を $(8, 10, 12)$ とすると、$L = 120$ となり $5! = 120$ の約数となります。
$B$ にこれ以上の要素を追加すると $L$ が $M!$ の約数とならなくなるため、これが最大です。


入力例2

2 3
7 8

出力例2

-1

入力例3

15 57
24808 57312 66006 148 7701 17360 20263 90619 98663 32766 60047 96941 86016 902 53838

出力例3

868847394