#include <bits/stdc++.h>
using namespace std;
const int N = 202, M = 1004, mod = 1e9 + 7;
int n, k, a[210], f[210][210][1010];
bool dd[210][210][1010];
int mul(int a, int b) { return (long long)a * b % mod; }
int add(int a, int b) {
  int res = a + b;
  if (res >= mod) res -= mod;
  return res;
}
int calc(const int &i, const int &c, const int &s) {
  if (c < 0 || c > n - i || s > k) return 0;
  if (dd[i][c][s]) return f[i][c][s];
  dd[i][c][s] = true;
  if (i == n) return f[i][c][s] = 1;
  int ss = s + c * a[i];
  return f[i][c][s] = add(mul(calc(i + 1, c, ss), c + 1),
                          add(calc(i + 1, c + 1, ss + a[i]),
                              mul(calc(i + 1, c - 1, ss - a[i]), c)));
}
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 0; i < n; ++i) {
    scanf("%d", a + i);
  }
  sort(a, a + n);
  a[n] = 501;
  for (int i = 0; i < n; ++i) {
    a[i] = a[i + 1] - a[i];
  }
  printf("%d\n", calc(0, 0, 0));
}
