#include <bits/stdc++.h>
using namespace std;
int n, m, x, c[101];
long long t[101][101], u[101][101];
void mul(long long a[][101], long long b[][101]) {
  long long c[101][101];
  for (int i = (0); i < (101); i++)
    for (int j = (0); j < (101); j++) {
      c[i][j] = 0;
      for (int k = (0); k < (101); k++)
        c[i][j] = (c[i][j] + a[i][k] * b[k][j]) % 1000000007;
    }
  for (int i = (0); i < (101); i++)
    for (int j = (0); j < (101); j++) a[i][j] = c[i][j];
}
int main() {
  scanf("%d %d", &n, &m);
  for (int i = (0); i < (n); i++) scanf("%d", &x), t[0][x - 1]++;
  for (int i = (1); i < (101 - 1); i++) t[i][i - 1] = 1;
  t[0][101 - 1] = t[101 - 1][101 - 1] = 1;
  for (int i = (0); i < (101); i++) u[i][i] = 1;
  while (m) {
    if (m & 1) mul(u, t);
    mul(t, t);
    m >>= 1;
  }
  printf("%I64d\n", (u[0][0] + u[0][101 - 1]) % 1000000007);
  scanf("\n");
}
