#include <bits/stdc++.h>
using namespace std;
const int mm = int(1e9) + 7;
int n, m, a[205];
int f[2][205][1004], ans;
inline void Mod(int &x, int y) {
  x += y;
  if (x >= mm) x -= mm;
}
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; ++i) scanf("%d", a + i);
  sort(a + 1, a + n + 1);
  f[0][0][0] = 1;
  int x = 1, y = 0;
  for (int i = 1; i <= n; ++i) {
    swap(x, y);
    for (int j = 0; j <= (n >> 1); ++j)
      for (int k = 0, t; k <= m; ++k) {
        int v = f[x][j][k];
        f[x][j][k] = 0;
        if ((t = k + (a[i] - a[i - 1]) * j) > m) continue;
        Mod(f[y][j][t], 1ll * v * (j + 1) % mm);
        Mod(f[y][j + 1][t], v);
        if (j) Mod(f[y][j - 1][t], 1ll * v * j % mm);
      }
  }
  ans = 0;
  for (int i = 0; i <= m; ++i) Mod(ans, f[y][0][i]);
  cout << ans << endl;
}
