#include <bits/stdc++.h>
using namespace std;
const long long MOD = (long long)1e9 + 7;
int a[205];
long long dp[3][205][1005];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n, k;
  cin >> n >> k;
  for (int i = 1; i <= n; i++) cin >> a[i];
  sort(a + 1, a + n + 1);
  dp[0][0][0] = 1;
  dp[0][1][0] = 1;
  int first = 0;
  for (int i = 2; i <= n; i++) {
    first ^= 1;
    for (int j = 0; j <= n; j++)
      for (int z = 0; z <= k; z++) {
        dp[first][j][z] = 0;
        int bl = a[i] - a[i - 1];
        if (z >= j * bl)
          dp[first][j][z] = (dp[first][j][z] + dp[first ^ 1][j][z - j * bl] *
                                                   (long long)(j + 1)) %
                            MOD;
        if (j != 0 && z - bl * (j - 1) >= 0)
          dp[first][j][z] =
              (dp[first][j][z] + dp[first ^ 1][j - 1][z - bl * (j - 1)]) % MOD;
        if (j != n && z - bl * (j + 1) >= 0)
          dp[first][j][z] =
              (dp[first][j][z] +
               dp[first ^ 1][j + 1][z - bl * (j + 1)] * (long long)(j + 1)) %
              MOD;
      }
  }
  long long ans = 0;
  for (int i = 0; i <= k; i++) ans = (ans + dp[first][0][i]) % MOD;
  cout << ans;
  return 0;
}
