atcoder#EXAWIZARDS2019D. Modulo Operations

Modulo Operations

配点 : 600600

問題文

すぬけ君は黒板と NN 個の整数からなる集合 SS を持っています。 SSii 番目の要素は SiS_i です。

すぬけ君は黒板に整数 XX を書いたのち、以下の操作を NN 回行います。

  • SS から要素を 11 つ選んで取り除く。
  • その後、現在黒板に書かれた数を xxSS から取り除かれた整数を yy として、黒板に書かれた数を xmodyx \bmod {y} に書き換える。

SS から要素を取り除く順序は N!N! 通りありえます。 それぞれの場合について、NN 回の操作後に黒板に書かれている数を求め、その総和を 109+710^{9}+7 で割ったあまりを求めてください。

制約

  • 入力は全て整数である。
  • 1N2001 \leq N \leq 200
  • 1Si,X1051 \leq S_i, X \leq 10^{5}
  • SiS_i たちは相異なる。

入力

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

NN XX

S1S_1 S2S_2 \ldots SNS_{N}

出力

答えを出力せよ。

2 19
3 7
3
  • SS から数を取り除く順序は 22 通りあります。
  • 3,73,7 の順で取り除いたとき、黒板に書かれた数は 191119 \rightarrow 1 \rightarrow 1 と変化します。
  • 7,37,3 の順で取り除いたとき、黒板に書かれた数は 195219 \rightarrow 5 \rightarrow 2 と変化します。
  • これらの総和である 33 を出力してください。
5 82
22 11 6 5 13
288
10 100000
50000 50001 50002 50003 50004 50005 50006 50007 50008 50009
279669259
  • 総和を 109+710^{9}+7 で割ったあまりを求めるのを忘れずに。