#include <bits/stdc++.h>
using namespace std;
const int Mod = 1e9 + 7;
struct Matrix {
  int n, m;
  int s[101][101];
  Matrix() {
    for (int i = 0; i < 101; i++)
      for (int j = 0; j < 101; j++) s[i][j] = 0;
  }
} A, f;
int n, x, D;
Matrix operator*(Matrix A, Matrix B) {
  Matrix C;
  C.n = A.n, C.m = B.m;
  for (int i = 0; i < C.n; i++)
    for (int k = 0; k < A.m; k++)
      for (int j = 0; j < C.m; j++)
        (C.s[i][j] += 1LL * A.s[i][k] * B.s[k][j] % Mod) %= Mod;
  return C;
}
Matrix Pow(Matrix A, int b) {
  Matrix res = A;
  for (--b; b; b >>= 1, A = A * A)
    if (b & 1) res = res * A;
  return res;
}
int main() {
  scanf("%d%d", &n, &x);
  if (!x) return puts("1"), 0;
  for (int i = 0; i < n; i++) {
    scanf("%d", &D);
    A.s[100 - D][99]++;
    A.s[100 - D][100]++;
  }
  for (int i = 1; i < 100; i++) A.s[i][i - 1] = 1;
  A.s[100][100] = 1, A.n = A.m = 101;
  f.s[0][99] = f.s[0][100] = 1, f.n = 1, f.m = 101;
  f = f * Pow(A, x);
  printf("%d\n", f.s[0][100]);
}
