#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 210, MAX_K = 1010, MOD = 1e9 + 7;
int N, K, arr[MAX_N], dp[MAX_N][MAX_N][MAX_K];
void add(int& a, long long b) {
  b %= MOD;
  a = (a + b) % MOD;
}
int solve() {
  sort(arr + 1, arr + N + 1);
  dp[0][0][0] = 1;
  for (int i = 1; i <= N; i++) {
    for (int j = 0; j <= i; j++) {
      for (int k = 0; k <= K; k++) {
        int v = dp[i - 1][j][k];
        int nk = k + j * (arr[i] - arr[i - 1]);
        if (nk > K) continue;
        add(dp[i][j][nk], v);
        add(dp[i][j][nk], 1LL * j * v);
        add(dp[i][j + 1][nk], v);
        if (j) add(dp[i][j - 1][nk], 1LL * j * v);
      }
    }
  }
  int ret = 0;
  for (int k = 0; k <= K; k++) {
    add(ret, dp[N][0][k]);
  }
  return ret;
}
void read() {
  cin >> N >> K;
  for (int i = 1; i <= N; i++) cin >> arr[i];
}
int main() {
  read();
  cout << solve() << endl;
  return (0);
}
