#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;

const int MAXS = 1e5+10;
const int MAXN = 222;
const ll M = 1e9+7;
int n, x;

ll mem[MAXN][MAXS], s[MAXN];

ll dp(int tot, int x) { // total number chosen nodes , last x
  ll & ans = mem[tot][x];
  if (ans!=-1) return ans;
  if (tot==n) return x;
  ans = 0;
  int i;
  for(i=0;s[i]<=x && i<n;i++) {
    ans = (ans+dp(tot+1, x%s[i]))%M;
  }
  if (n-i>tot) {
    ans = (ans+(n-i-tot)*dp(tot+1,x))%M;
  }
  return ans;
}

int main(){
  cin.tie(0); ios_base::sync_with_stdio(0);
  cin >> n >> x;
  memset(mem,-1, sizeof mem);
  for(int i=0;i<n;i++) cin >> s[i];
  sort(s, s+n);
  cout << dp(0, x) <<endl;
}
