#exawizards2019d. [exawizards2019_d]Modulo Operations

[exawizards2019_d]Modulo Operations

题目描述

Snuke 有一个黑板和一个包含 NN 个整数的集合 SSSS 的第 ii 个元素是 SiS_i

他在黑板上写下一个整数 XX,然后进行以下操作 NN 次:

  • SS 中选择一个元素并将其删除。
  • xx 为当前黑板上的数字,yy 为从 SS 中移除的整数。用 xbmodyx \\bmod {y} 替换黑板上的数字。

总共有 N!N! 种可能的顺序可以从 SS 中删除元素。对于每一种顺序,找出在 NN 次操作之后会在黑板上写下的数字,并计算所有这些 N!N! 个数字对 109+710^{9}+7 取模后的和。

约束条件

  • 输入中的所有值均为整数。
  • 1leqNleq2001 \\leq N \\leq 200
  • 1leqSi,Xleq1051 \\leq S_i, X \\leq 10^{5}
  • SiS_i 互不相同。

输入

从标准输入获得输入数据的格式如下:

NN XX S1S_1 S2S_2 ldots\\ldots SNS_{N}

输出

输出答案。

示例输入 1

2 19
3 7

示例输出 1

3
  • 有两种可能的顺序可以从 SS 中删除数字。
  • 如果按照顺序删除 3377,黑板上的数字变化如下:19rightarrow1rightarrow119 \\rightarrow 1 \\rightarrow 1
  • 如果按照顺序删除 7733,黑板上的数字变化如下:19rightarrow5rightarrow219 \\rightarrow 5 \\rightarrow 2
  • 输出应为这些数字的和:33

示例输入 2

5 82
22 11 6 5 13

示例输出 2

288

示例输入 3

10 100000
50000 50001 50002 50003 50004 50005 50006 50007 50008 50009

示例输出 3

279669259
  • 请确保对 109+710^{9}+7 取模计算和。