#include <bits/stdc++.h>
using namespace std;
long long res[111][111], T[111][111], I[111][111], n, num[111], first,
    mod = 1e9 + 7;
void multiply(long long a[111][111], long long b[111][111], long long m) {
  long long mul[111][111];
  for (int i = 0; i < m; i++) {
    for (int j = 0; j < m; j++) {
      mul[i][j] = 0;
      for (int k = 0; k < m; k++) {
        mul[i][j] += (a[i][k] * b[k][j]) % mod;
        mul[i][j] %= mod;
      }
    }
  }
  for (int i = 0; i < m; i++)
    for (int j = 0; j < m; j++) a[i][j] = mul[i][j];
}
void power(long long second) {
  if (second == 1) return;
  power(second / 2);
  multiply(res, res, 102);
  if (second & 1) multiply(res, T, 102);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> n >> first;
  for (int i = 0; i < n; i++) {
    long long second;
    cin >> second;
    num[second]++;
  }
  for (int i = 0; i <= 100; i++) {
    res[i + 1][i] = T[i + 1][i] = 1;
    res[i + 1][100] = T[i + 1][100] = num[100 - i];
  }
  res[101][100] = T[101][100] = 1;
  T[101][101] = res[101][101] = 1;
  I[0][0] = 1;
  for (int i = 1; i <= 100; i++) {
    I[0][i] = 1;
    for (int j = 1; j <= i; j++) {
      I[0][i] += I[0][i - j] * num[j];
      I[0][i] %= mod;
    }
  }
  if (first == 0) return cout << "1", 0;
  I[0][101] = 1;
  power(first);
  multiply(I, res, 102);
  cout << I[0][0];
}
