#include <bits/stdc++.h>
using namespace std;
const int MAXN = 201, MAXK = 1001, MOD = 1e9 + 7;
int dp[MAXN][MAXN][MAXK], n, k, a[MAXN];
long long ans;
int mul(long long a, long long b) {
  long long k = a * b;
  return k % MOD;
}
int sum(long long a, long long b) { return (a + b) % MOD; }
int main() {
  cin >> n >> k;
  dp[0][0][0] = 1;
  for (int i = 1; i <= n; i++) cin >> a[i];
  sort(a, a + n + 1);
  for (int i = 1; i <= n; i++)
    for (int j = 0; j <= n; j++)
      for (int kk = 0; kk <= k; kk++) {
        int tk = kk + j * (a[i] - a[i - 1]);
        if (tk > k) break;
        dp[i][j][tk] = sum(dp[i][j][tk], mul(dp[i - 1][j][kk], j + 1));
        dp[i][j + 1][tk] = sum(dp[i][j + 1][tk], dp[i - 1][j][kk]);
        if (j)
          dp[i][j - 1][tk] = sum(dp[i][j - 1][tk], mul(dp[i - 1][j][kk], j));
      }
  for (int i = 0; i <= k; i++) ans += dp[n][0][i], ans %= MOD;
  cout << ans;
}
