#include <bits/stdc++.h>
using namespace std;
const int N = 101, SIZE = 105, mod = 1e9 + 7;
int n, x, mat[SIZE][SIZE];
int tmp[SIZE][SIZE], ans[SIZE][SIZE];
void mult(int a[SIZE][SIZE], int b[SIZE][SIZE]) {
  memset(tmp, 0, sizeof tmp);
  for (int i = 1; i <= N; i++)
    for (int j = 1; j <= N; j++)
      for (int k = 1; k <= N; k++) {
        tmp[i][k] += 1ll * a[i][j] * b[j][k] % mod;
        if (tmp[i][k] >= mod) tmp[i][k] -= mod;
      }
  for (int i = 1; i <= N; i++)
    for (int j = 1; j <= N; j++) a[i][j] = tmp[i][j];
}
int main() {
  scanf("%d%d", &n, &x);
  if (!x) {
    printf("1");
    return 0;
  }
  for (int i = 1, a; i <= n; i++) {
    scanf("%d", &a);
    mat[1][a]++;
  }
  mat[1][N] = mat[N][N] = 1;
  for (int i = 1; i + 1 < N; i++) mat[i + 1][i] = 1;
  for (int i = 1; i <= N; i++)
    for (int j = 1; j <= N; j++) ans[i][j] = i == j;
  while (x) {
    if (x & 1) mult(ans, mat);
    mult(mat, mat);
    x >>= 1;
  }
  printf("%d\n", (ans[1][1] + ans[1][N]) % mod);
  return 0;
}
