#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")
using namespace std;
const int N = 207;
const int K = 1007;
const long long mod = 1e9 + 7;
long long dp[2][N][K];
long long a[N];
int n, k;
int main() {
  cin >> n >> k;
  for (int i = 1; i <= n; i++) scanf("%lld", &a[i]);
  dp[0][0][0] = 1;
  sort(a + 1, a + n + 1);
  int cur = 0, prv = 0;
  for (int i = 1; i <= n; i++) {
    int d = a[i] - a[i - 1];
    prv = cur;
    cur ^= 1;
    for (int j = 0; j <= i; j++) {
      for (int c = 0; c <= k; c++) {
        dp[cur][j][c] = 0;
        if (j && c - (j - 1) * d >= 0)
          dp[cur][j][c] += dp[prv][j - 1][c - (j - 1) * d];
        if (c - (j + 1) * d >= 0)
          dp[cur][j][c] += dp[prv][j + 1][c - (j + 1) * d] * (j + 1);
        if (c - j * d >= 0) dp[cur][j][c] += dp[prv][j][c - j * d] * (j + 1);
        dp[cur][j][c] %= mod;
      }
    }
  }
  long long ans = 0;
  for (int c = 0; c <= k; c++) ans += dp[cur][0][c];
  cout << ans % mod;
}
