#include <bits/stdc++.h>
using namespace std;
const int N = 205, mod = 1e9 + 7;
int arr[N];
long long dp[2][N][1002];
int main() {
  int n, k;
  scanf("%d %d", &n, &k);
  for (int i = 1; i <= n; i++) {
    scanf("%d", arr + i);
  }
  sort(arr + 1, arr + 1 + n);
  int a, b;
  for (int i = 1; i <= n; i++) {
    a = i & 1;
    b = a ^ 1;
    for (int j = 0; j <= i; j++) {
      for (int l = 0; l <= k; l++) {
        dp[a][j][l] = 0;
        if (i == 1 && l == 0) {
          dp[a][j][l] = 1;
          continue;
        } else if (i == 1) {
          dp[a][j][l] = 0;
          continue;
        }
        if (j <= i - 1 && (j) * (arr[i] - arr[i - 1]) <= l)
          dp[a][j][l] += dp[b][j][l - (j) * (arr[i] - arr[i - 1])];
        if (j > 0 && (j - 1) * (arr[i] - arr[i - 1]) <= l)
          dp[a][j][l] +=
              (dp[b][j - 1][l - (j - 1) * (arr[i] - arr[i - 1])]) % mod;
        if (j * (arr[i] - arr[i - 1]) <= l && j <= i - 1)
          dp[a][j][l] += (dp[b][j][l - j * (arr[i] - arr[i - 1])] * j) % mod;
        if ((j + 1) * (arr[i] - arr[i - 1]) <= l && j + 1 <= i - 1)
          dp[a][j][l] +=
              (dp[b][j + 1][l - (j + 1) * (arr[i] - arr[i - 1])] * (j + 1)) %
              mod;
        dp[a][j][l] %= mod;
      }
    }
  }
  long long ans = 0;
  for (int i = 0; i <= k; i++) {
    ans += dp[n & 1][0][i];
    ans %= mod;
  }
  cout << ans << endl;
  return 0;
}
