#include <bits/stdc++.h>
using namespace std;
int mod = 1e9 + 7;
int w[1007];
int n, x;
int d[107];
int N = 101;
int mat[107][107];
void mNoz(int (&a)[107][107], int (&b)[107][107], int (&c)[107][107]) {
  long long res[107][107];
  for (int i = 1; i <= N; ++i)
    for (int j = 1; j <= N; ++j) res[i][j] = 0;
  for (int i = 1; i <= N; ++i)
    for (int k = 1; k <= N; ++k)
      for (int j = 1; j <= N; ++j)
        res[i][j] += ((long long)a[i][k] * b[k][j]) % mod;
  for (int i = 1; i <= N; ++i)
    for (int j = 1; j <= N; ++j) c[i][j] = res[i][j] % mod;
}
void pot(int (&a)[107][107], int (&c)[107][107], int k) {
  int res[107][107];
  for (int i = 1; i <= N; ++i)
    for (int j = 1; j <= N; ++j) res[i][j] = i == j;
  while (k > 0) {
    if (k & 1) mNoz(res, a, res);
    mNoz(a, a, a);
    k /= 2;
  }
  for (int i = 1; i <= N; ++i)
    for (int j = 1; j <= N; ++j) c[i][j] = res[i][j];
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n >> x;
  for (int i = 1; i <= n; ++i) {
    int a;
    cin >> a;
    mat[1][a]++;
  }
  mat[1][N] = mat[N][N] = 1;
  for (int i = 1; i + 1 < N; ++i) mat[i + 1][i] = 1;
  pot(mat, mat, x);
  int wyn = mat[1][1] + mat[1][N];
  wyn %= mod;
  cout << wyn << endl;
  return 0;
}
