#include <bits/stdc++.h>
using namespace std;
const int N = 202;
const int K = 1002;
const long long MOD = (int)1e9 + 7;
int dp[N][N][K];
int arr[N];
int n, k;
long long solve(int pos, int group, int tot) {
  if (tot > k || group < 0) return 0;
  if (pos > n) return group == 0;
  long long ret = dp[pos][group][tot];
  if (ret != -1) return ret;
  ret = 0;
  int newTot = tot + group * (arr[pos] - arr[pos - 1]);
  ret = (ret + solve(pos + 1, group, newTot) * (group + 1)) % MOD;
  ret = (ret + solve(pos + 1, group + 1, newTot)) % MOD;
  ret = (ret + solve(pos + 1, group - 1, newTot) * group) % MOD;
  return dp[pos][group][tot] = ret;
}
int main() {
  cin >> n >> k;
  for (int i = 1; i <= n; i++) cin >> arr[i];
  sort(arr + 1, arr + n + 1);
  memset(dp, -1, sizeof dp);
  cout << solve(1, 0, 0) << endl;
  return 0;
}
