#include <bits/stdc++.h>
using namespace std;
const int N = 2e2 + 7, M = 1e5 + 7;
const long long MOD = 1e9 + 7;
long long f[N][M], inv[M], tmp[M];
int a[N];
long long qpow(long long x, long long y) {
  long long z = 1;
  while (y) {
    if (y % 2) z = z * x % MOD;
    x = x * x % MOD;
    y /= 2;
  }
  return z;
}
int main() {
  int n, X;
  scanf("%d%d", &n, &X);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  sort(a + 1, a + n + 1);
  reverse(a + 1, a + n + 1);
  inv[0] = 1;
  for (int i = 1; i <= n; i++) inv[i] = qpow(i, MOD - 2);
  long long t = 1;
  for (int i = 1; i <= n; i++) t = t * i % MOD;
  tmp[X] = inv[n];
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < a[i]; j++) {
      for (int k = j; k <= X; k += a[i]) {
        f[i][j] += tmp[k];
      }
    }
    for (int j = 0; j < a[i]; j++) {
      tmp[j] = (tmp[j] + f[i][j] * inv[n - i]) % MOD;
    }
  }
  long long ans = 0;
  for (int i = 0; i < a[n]; i++) {
    ans = (ans + f[n][i] * i) % MOD;
  }
  for (int i = 1; i <= n; i++) ans = ans * i % MOD;
  printf("%lld", ans);
  return 0;
}
