#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 7;
long long N, K, a[205];
long long dp[2][2005][205];
int main() {
  cin.tie(0);
  ios_base::sync_with_stdio(0);
  cin >> N >> K;
  for (long long i = 1; i <= N; i++) cin >> a[i];
  sort(a + 1, a + N + 1);
  a[N + 1] = a[N];
  long long act = 0, sig = 1;
  for (long long k = 0; k <= K; k++) dp[act][k][0] = 1;
  for (long long p = N; p >= 1; p--) {
    swap(act, sig);
    for (long long k = 0; k <= K; k++)
      for (long long op = 0; op <= N; op++) {
        long long v = a[p + 1] - a[p];
        long long ans = 0;
        if (k - op * v >= 0) ans += dp[sig][k - op * v][op];
        if (k - (op + 1) * v >= 0) ans += dp[sig][k - (op + 1) * v][op + 1];
        if (op && k - (op - 1) * v >= 0)
          ans += op * dp[sig][k - (op - 1) * v][op - 1];
        if (op && k - op * v >= 0) ans += op * dp[sig][k - op * v][op];
        dp[act][k][op] = (ans % MOD);
      }
  }
  cout << dp[act][K][0] << "\n";
  return 0;
}
