#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
struct node {
  long long a[105][105], n, m;
  node(long long _n, long long _m) {
    n = _n, m = _m;
    memset(a, 0, sizeof(a));
  }
  friend node operator*(node x, node y) {
    node ans(x.n, y.m);
    for (long long i = 0; i < x.n; i++)
      for (long long j = 0; j < x.m; j++)
        for (long long k = 0; k < y.m; k++) {
          ans.a[i][k] += (x.a[i][j] * y.a[j][k]) % mod;
          ans.a[i][k] %= mod;
        }
    return ans;
  }
};
node a(1, 101), b(101, 101);
long long n, x;
signed main() {
  cin >> n >> x;
  a.a[0][0] = 1, a.a[0][100] = 1;
  b.a[100][0] = 1, b.a[100][100] = 1;
  for (long long i = 0; i < 99; i++) b.a[i][i + 1] = 1;
  while (n--) {
    long long xx;
    cin >> xx;
    b.a[xx - 1][0]++;
  }
  while (x) {
    if (x & 1) a = a * b;
    b = b * b;
    x >>= 1;
  }
  cout << a.a[0][0] << endl;
  return 0;
}
