#include <bits/stdc++.h>
using namespace std;
const int MM = 1000000007;
struct matrix {
  long long t[101][101];
  matrix operator*(const matrix &l) const {
    matrix ans = {0};
    for (int i = 0; i < 101; i++) {
      for (int j = 0; j < 101; j++) {
        ans.t[i][j] = 0;
        for (int k = 0; k < 101; k++) {
          ans.t[i][j] += t[i][k] * l.t[k][j];
          ans.t[i][j] %= MM;
        }
      }
    }
    return ans;
  }
} ans, mul;
int main() {
  int N, X;
  scanf("%d%d", &N, &X);
  for (int i = 0; i < N; i++) {
    int A;
    scanf("%d", &A);
    mul.t[0][A - 1]++;
  }
  for (int i = 0; i < 101; i++) ans.t[i][i] = 1;
  for (int i = 1; i < 100; i++) mul.t[i][i - 1] = 1;
  mul.t[100][100] = 1;
  mul.t[0][100] = 1;
  while (X) {
    if (X & 1) ans = ans * mul;
    mul = mul * mul;
    X /= 2;
  }
  printf("%lld", (ans.t[0][0] + ans.t[0][100]) % MM);
}
