#include <bits/stdc++.h>
using namespace std;
const int N = 1e2 + 5;
const int MOD = 1e9 + 7;
long long cnt[N], x;
int n, tmp;
vector<vector<long long> > matMul(vector<vector<long long> > &A,
                                  vector<vector<long long> > &B) {
  vector<vector<long long> > C(N, vector<long long>(N, 0));
  for (int i = 0; i < N; i++) {
    for (int j = 0; j < N; j++) {
      for (int k = 0; k < N; k++) {
        C[i][j] = (C[i][j] + (A[i][k] * B[k][j]) % MOD) % MOD;
      }
    }
  }
  return C;
}
vector<vector<long long> > matPow(vector<vector<long long> > &A, int b) {
  if (b == 1) return A;
  vector<vector<long long> > ans = matPow(A, b >> 1);
  ans = matMul(ans, ans);
  if (b & 1) ans = matMul(ans, A);
  return ans;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> x;
  for (int i = 0; i < n; i++) {
    cin >> tmp;
    cnt[tmp]++;
  }
  if (x == 0) {
    cout << "1\n";
    return 0;
  }
  vector<vector<long long> > res(N, vector<long long>(N, 0));
  for (int i = 1; i <= 100; i++) {
    res[0][i - 1] = cnt[i];
    if (i < 100) res[i][i - 1] = 1;
  }
  res[0][100] = 1;
  res[100][100] = 1;
  res = matPow(res, x);
  long long ans = (res[0][0] + res[0][100]) % MOD;
  cout << ans << "\n";
  return 0;
}
