#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;   }   