#include <bits/stdc++.h>
using namespace std;
const int N = 205, M = 1e3 + 5;
const long long mo = 1e9 + 7;
long long dp[2][N][M];
int a[N], n, k;
long long ans;
int main() {
  scanf("%d%d", &n, &k);
  for (int i = 1; i <= n; ++i) {
    scanf("%d", &a[i]);
  }
  sort(a + 1, a + n + 1);
  dp[0][0][0] = 1;
  int nw = 0;
  for (int i = 1; i <= n; ++i) {
    nw ^= 1;
    memset(dp[nw], 0, sizeof dp[nw]);
    for (int j = 0; j <= i; ++j) {
      int x = (a[i] - a[i - 1]) * j;
      for (int q = 0; q <= k - x; ++q) {
        (dp[nw][j][q + x] += dp[nw ^ 1][j][q] * j) %= mo;
        (dp[nw][j][q + x] += dp[nw ^ 1][j][q]) %= mo;
        if (j < i) (dp[nw][j + 1][q + x] += dp[nw ^ 1][j][q]) %= mo;
        if (j) (dp[nw][j - 1][q + x] += dp[nw ^ 1][j][q] * j) %= mo;
      }
    }
  }
  for (int i = 0; i <= k; ++i) {
    (ans += dp[nw][0][i]) %= mo;
  }
  printf("%lld\n", ans);
}
