#include <bits/stdc++.h>
using namespace std;
int n, a[201], dp[201][201][1001];
const long long int MOD = 1e9 + 7;
int solve(int i, int g, int k) {
  if (g < 0 || k < 0) return 0;
  if (i == n) return (g == 0);
  if (dp[i][g][k] != -1) return dp[i][g][k];
  long long int ret = 0;
  int nk = k - g * (a[i] - a[i - 1]);
  if (nk >= 0) {
    ret = (ret + 1LL * g * solve(i + 1, g - 1, nk)) % MOD;
    ret = (ret + 1LL * (g + 1) * solve(i + 1, g, nk)) % MOD;
    ret = (ret + 1LL * solve(i + 1, g + 1, nk)) % MOD;
  }
  return dp[i][g][k] = ret;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int k;
  cin >> n >> k;
  for (int i = 0; i < n; i++) cin >> a[i];
  sort(a, a + n);
  memset(dp, -1, sizeof dp);
  cout << solve(0, 0, k);
}
