There are *n* students in a class working on group projects. The students will divide into groups (some students may be in groups alone), work on their independent pieces, and then discuss the results together. It takes the *i*-th student *a*<sub class="lower-index">*i*</sub> minutes to finish his/her independent piece.

If students work at different paces, it can be frustrating for the faster students and stressful for the slower ones. In particular, the imbalance of a group is defined as the maximum *a*<sub class="lower-index">*i*</sub> in the group minus the minimum *a*<sub class="lower-index">*i*</sub> in the group. Note that a group containing a single student has an imbalance of 0. How many ways are there for the students to divide into groups so that the total imbalance of all groups is at most *k*?

Two divisions are considered distinct if there exists a pair of students who work in the same group in one division but different groups in the other.
The first line contains two space-separated integers *n* and *k* (1 ≤ *n* ≤ 200, 0 ≤ *k* ≤ 1000) — the number of students and the maximum total imbalance allowed, respectively.

The second line contains *n* space-separated integers *a*<sub class="lower-index">*i*</sub> (1 ≤ *a*<sub class="lower-index">*i*</sub> ≤ 500) — the time it takes the *i*-th student to complete his/her independent piece of work.
In the first sample, we have three options: 
 -  The first and second students form a group, and the third student forms a group. Total imbalance is 2 + 0 = 2. -  The first student forms a group, and the second and third students form a group. Total imbalance is 0 + 1 = 1. -  All three students form their own groups. Total imbalance is 0. 
In the third sample, the total imbalance must be 0, so each student must work individually.
3 2
2 4 5
3
4 3
7 8 9 10
13
4 0
5 10 20 21
1
20 1000
50 50 100 100 150 150 200 200 250 250 300 300 350 350 400 400 450 450 500 500
97456952
5 222
58 369 477 58 90
10
9 222
304 142 38 334 73 122 252 381 438
423
9 247
359 350 140 26 293 488 57 481 71
414
5 341
412 32 189 303 172
26
200 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
380668983
121 19
1 1 1 1 2 1 1 2 2 1 1 2 2 2 2 1 1 2 1 1 1 1 2 2 2 2 1 1 2 1 1 2 1 1 1 1 1 2 2 1 2 2 1 2 1 1 2 2 2 1 2 1 1 1 1 2 1 1 2 2 1 1 2 1 2 1 2 1 2 2 2 1 1 1 1 2 1 1 2 1 2 2 2 2 2 1 1 2 2 1 2 2 2 1 2 1 1 1 1 2 2 2 2 2 1 1 2 2 2 2 2 1 1 1 1 1 2 2 1 2 1
378568711
3 4
10 7 10
5
1 5
3
1
1 5
9
1
5 2
3 10 5 6 5
8
1 2
2
1
166 7
9 8 7 2 9 9 7 7 3 1 9 9 9 7 1 5 5 6 6 2 3 2 10 9 3 5 8 8 6 3 10 3 4 8 6 5 1 7 2 9 1 4 9 10 6 8 6 7 8 3 2 1 10 5 6 6 3 7 4 9 10 3 1 10 9 9 2 10 3 2 4 8 9 6 1 9 10 10 10 9 5 8 9 7 9 6 7 5 4 7 8 9 8 5 10 5 4 10 8 5 10 10 10 8 7 3 2 6 3 1 7 5 7 10 7 8 8 8 5 5 8 10 2 10 2 4 10 2 3 1 1 4 5 8 7 9 4 10 2 9 8 1 1 5 9 5 2 1 7 7 9 10 2 2 10 10 6 8 5 5 9 4 3 1 10 5
194851520
94 17
9 10 10 5 2 7 10 9 5 5 7 7 6 10 4 10 3 7 4 9 2 5 1 5 4 2 9 8 4 3 9 5 7 10 10 6 3 1 9 9 2 8 8 8 7 2 4 5 2 5 7 7 4 9 4 9 4 10 5 10 9 7 3 6 10 3 1 10 6 4 8 9 4 10 7 2 9 8 7 10 2 2 4 1 4 6 10 7 2 4 9 4 8 5
650765262
14 26
3 7 8 4 7 5 10 8 4 4 1 6 7 7
190894282
142 24
8 1 10 6 5 3 9 4 4 8 2 7 4 4 1 2 7 4 7 3 3 9 9 6 6 10 8 5 3 2 3 4 7 9 9 8 4 7 8 6 9 1 7 9 10 2 6 1 9 9 1 10 2 10 6 5 10 2 3 8 3 7 1 8 9 10 1 8 10 7 2 5 1 1 4 6 5 7 6 10 4 4 7 4 10 5 10 9 8 7 4 10 4 4 3 4 10 6 1 4 8 5 10 6 3 8 8 4 2 3 2 1 7 5 2 4 2 3 10 7 8 3 10 9 1 7 7 5 5 5 10 8 8 2 6 9 7 2 4 7 7 3
287439553
166 34
6 5 3 3 4 5 4 6 4 6 2 6 5 1 7 4 5 5 6 1 2 2 6 4 3 7 4 5 1 7 3 1 6 5 1 3 6 4 9 7 6 6 6 5 8 6 2 4 5 6 10 10 4 8 3 6 1 4 7 9 8 5 2 9 8 10 2 2 6 1 3 6 6 9 10 8 10 5 8 10 5 9 2 4 8 2 9 2 1 9 5 9 3 8 1 10 4 1 1 4 9 6 10 6 2 1 4 5 5 8 10 10 5 6 3 10 1 8 5 10 3 3 10 9 7 4 1 9 9 10 8 3 4 2 8 10 6 3 10 10 4 6 8 7 9 7 10 3 1 10 4 10 5 2 7 9 4 10 6 2 6 3 9 10 9 10
772974256
171 302
64 51 53 35 36 42 67 27 55 85 97 23 47 8 59 69 50 15 28 36 22 12 49 99 54 11 10 91 91 78 59 65 68 5 20 77 42 59 85 65 69 35 59 86 45 96 41 82 89 93 80 25 16 22 68 8 23 57 48 53 16 21 50 44 70 75 33 32 43 32 77 40 8 41 23 82 61 51 26 88 58 23 6 69 11 95 89 41 70 95 81 50 99 81 48 36 62 85 64 58 25 30 23 27 30 87 45 42 67 47 1 1 86 33 43 78 41 57 72 86 55 25 69 36 77 97 48 24 9 20 50 5 2 84 80 62 7 5 49 2 16 3 62 8 40 24 94 60 9 95 22 27 58 20 22 95 16 53 6 8 74 54 94 65 62 90 95 17 77 32 99
49555477
158 396
10 33 14 7 23 30 23 9 99 41 88 56 70 25 85 27 68 60 73 14 32 87 6 16 71 64 22 66 9 48 46 93 81 9 50 48 80 70 78 76 49 89 56 74 56 40 67 45 3 41 77 49 8 56 55 29 78 69 52 70 55 99 85 6 59 99 24 66 4 23 4 51 84 67 79 65 6 67 80 36 85 47 45 37 75 38 39 59 7 11 81 7 12 79 56 87 9 97 30 32 27 21 42 85 17 50 69 13 51 12 73 60 14 94 93 31 10 9 70 67 52 63 45 38 37 13 46 50 53 29 50 57 49 81 71 79 58 74 19 47 19 14 16 82 18 11 71 90 28 21 48 16 41 52 24 6 4 23
757778575
169 129
66 70 83 26 65 94 1 56 17 64 58 68 23 73 45 93 30 94 22 55 68 29 73 44 35 39 71 76 76 76 19 98 99 26 43 73 96 6 72 23 8 56 34 17 91 64 17 33 56 92 41 22 92 59 23 96 35 94 82 1 61 41 75 89 10 74 13 64 50 78 49 83 6 62 43 22 61 95 28 4 76 14 54 41 83 81 83 23 13 57 10 2 44 54 89 41 27 58 57 47 26 82 97 82 5 35 27 31 89 6 73 36 94 89 29 96 3 88 82 27 50 56 73 24 17 56 25 9 2 47 71 86 96 79 35 42 31 73 13 89 52 30 88 96 46 91 23 60 79 2 19 7 73 40 6 29 61 29 67 85 75 11 8 34 60 19 87 23 55
538924707
195 110
3 4 5 1 3 5 4 1 2 4 3 2 4 4 3 2 5 5 5 3 3 3 5 3 5 4 2 5 1 1 2 3 4 5 5 2 2 4 3 4 2 4 4 3 4 2 3 3 3 5 2 1 3 2 5 5 2 2 1 2 2 5 4 2 4 2 4 1 4 2 4 4 4 4 3 5 3 1 2 2 3 4 3 4 4 1 2 1 2 4 5 2 4 3 4 1 4 4 4 5 1 2 4 5 3 5 3 4 2 4 5 2 5 2 5 4 1 5 1 4 2 5 1 2 4 1 3 3 5 5 4 2 3 4 5 4 4 5 2 3 4 2 5 3 2 1 5 3 5 3 5 2 3 2 5 3 5 4 5 1 5 3 3 2 2 5 4 3 3 2 5 5 5 5 2 1 2 3 1 3 5 2 4 5 3 2 2 5 5 2 3 1 3 4 5
21311661
196 17
4 4 2 2 4 2 2 4 4 3 4 1 5 4 4 5 4 1 1 1 5 1 1 4 3 4 4 1 1 1 5 3 2 4 2 1 5 3 4 2 4 2 5 4 1 4 1 2 3 5 3 5 3 2 5 5 5 2 2 1 1 2 2 2 5 4 5 2 5 5 3 1 5 3 5 5 1 3 3 2 3 2 2 1 5 1 2 5 4 5 4 3 4 4 4 1 5 5 2 2 2 5 3 4 5 3 3 2 4 4 4 3 1 1 1 5 2 5 1 5 1 2 3 3 4 4 5 4 2 5 4 2 3 3 4 5 2 2 4 5 5 2 2 1 3 3 4 3 2 3 4 4 5 2 5 1 4 5 2 3 2 4 4 3 4 4 2 5 5 5 5 4 1 3 2 1 4 5 3 2 3 3 5 4 3 1 4 4 5 2 5 2 2 1 4 3
140496580
200 558
1 1 1 3 2 1 1 5 1 2 1 1 2 2 1 5 2 5 2 5 3 2 4 1 5 2 3 2 3 1 2 2 1 4 4 2 5 1 4 3 2 2 4 5 4 5 2 5 5 4 3 5 4 5 5 2 3 4 3 1 5 4 3 3 3 3 2 2 3 4 1 3 1 4 5 2 3 4 1 5 2 3 3 5 5 3 3 1 2 5 3 4 2 5 2 3 3 1 3 2 3 5 1 2 1 1 3 4 1 3 2 1 1 4 2 5 1 2 1 2 2 2 2 2 3 4 2 2 4 4 2 1 3 3 2 4 1 3 5 4 5 1 5 2 1 4 2 3 4 1 4 5 1 1 5 2 4 5 5 4 4 5 3 1 1 5 4 2 2 5 1 3 3 3 4 1 1 2 3 4 1 5 2 2 3 1 4 3 5 1 5 3 2 1 3 2 1 1 3 2
380668983
190 152
2 2 4 4 4 2 2 1 2 3 5 5 4 3 5 1 2 2 2 2 3 3 5 2 1 1 3 4 3 2 2 4 2 3 1 4 2 2 3 2 3 5 3 2 4 1 4 1 2 4 1 3 4 4 3 4 4 4 4 5 2 4 5 3 3 5 4 4 3 4 1 4 1 4 3 3 5 5 2 3 2 2 2 5 4 4 2 4 3 4 2 2 1 4 1 2 3 3 3 5 1 5 5 1 4 3 2 5 2 5 5 5 2 3 3 4 1 1 3 2 5 5 2 5 2 3 5 1 1 5 4 1 1 3 5 2 3 4 3 4 2 1 4 3 5 2 1 1 1 5 2 5 3 4 5 5 2 3 5 5 5 5 1 5 2 5 5 2 4 4 4 3 1 1 2 1 4 4 3 4 2 5 5 3 4 5 5 2 1 4
3475416
191 640
20 10 14 20 13 9 16 5 14 1 11 18 16 17 7 4 15 18 17 3 3 15 14 20 18 2 4 14 20 17 7 2 3 9 5 10 7 6 7 17 3 5 10 1 18 13 15 4 15 7 19 1 17 6 15 12 4 19 1 9 18 18 9 13 3 15 9 3 17 14 18 4 9 3 9 19 20 15 18 11 3 1 12 8 11 10 20 14 14 6 2 14 16 1 7 2 11 15 1 9 20 4 1 1 3 20 20 4 11 7 19 3 3 6 15 10 18 9 13 14 16 12 3 1 15 10 5 14 19 17 9 10 10 15 12 12 5 2 11 6 5 6 7 14 7 6 5 10 13 10 18 20 18 20 12 7 6 10 4 4 3 13 14 5 9 10 4 6 11 11 15 15 12 19 4 7 20 3 12 4 16 6 4 9 17 10 18 11 13 12 18
66598866
197 344
5 11 3 17 16 1 12 7 13 5 9 11 15 14 13 7 13 11 5 9 20 11 11 9 19 3 20 4 6 15 2 14 16 5 19 5 5 5 12 12 12 19 18 1 5 17 13 7 17 14 4 5 9 20 14 13 15 3 8 2 13 16 20 10 20 14 8 17 14 4 9 16 8 13 5 2 13 11 9 7 9 5 11 20 3 17 9 12 12 3 9 19 6 3 15 9 5 11 2 3 13 14 15 7 9 19 16 11 6 8 11 18 11 11 16 18 3 5 10 19 10 6 3 19 3 18 16 16 7 3 10 13 13 16 19 13 4 7 1 7 12 9 6 8 6 1 6 20 7 12 9 13 13 12 10 10 10 16 9 6 11 14 14 7 2 1 16 15 12 7 15 18 8 4 6 18 2 17 6 5 13 19 12 7 1 9 15 9 18 5 8 3 7 8 4 15 8
132934747
200 0
2 5 2 7 6 10 10 4 7 9 1 5 7 1 8 5 9 8 5 2 6 4 9 10 5 4 4 4 8 7 7 5 9 7 7 4 9 8 5 8 10 5 1 2 8 4 3 7 9 6 9 3 9 2 1 9 2 7 4 10 4 7 10 6 1 6 7 4 4 9 10 3 5 5 1 2 8 6 6 2 2 8 6 3 6 1 4 6 10 6 4 8 3 9 6 7 7 8 5 2 10 9 2 7 3 6 10 6 8 9 6 6 8 4 6 9 2 10 9 4 2 3 4 1 3 9 4 2 4 10 10 1 2 3 9 8 2 1 10 7 8 3 10 5 3 10 9 1 9 2 6 7 2 1 10 4 4 9 9 1 8 1 10 9 8 9 9 7 4 3 6 7 10 9 2 7 8 10 2 7 7 6 9 5 9 7 3 1 7 1 5 9 7 3 10 3 10 8 5 7
563633437
107 59
416 332 455 497 251 13 496 46 176 382 357 268 441 302 305 11 274 61 412 18 225 332 173 371 54 179 378 85 471 176 439 36 81 275 452 212 261 488 166 274 89 183 478 337 313 196 130 87 14 223 341 46 45 306 175 488 113 354 107 411 469 122 436 293 311 60 453 245 184 13 425 360 302 205 151 89 433 285 119 301 274 64 127 496 350 354 262 2 148 232 117 28 11 398 237 460 421 347 142 76 391 317 164 484 35 310 453
955755252
27 383
161 2 16 478 438 205 151 229 116 230 447 497 456 219 28 57 200 6 161 400 338 11 426 283 275 40 190
258971846
107 497
218 342 381 296 272 169 321 275 435 461 422 209 413 366 295 332 458 253 302 245 70 353 405 420 439 314 232 466 364 374 4 469 116 291 75 500 212 127 157 440 429 396 53 68 151 264 2 134 73 31 494 148 426 459 27 175 225 287 241 60 14 437 457 446 51 350 233 177 88 455 497 303 107 130 76 125 441 229 325 318 187 459 178 172 226 236 465 289 491 494 146 280 456 475 286 457 277 224 435 365 100 77 145 448 118 454 431
480907144
27 209
272 116 134 369 255 453 477 162 78 1 12 142 236 283 209 390 476 493 51 23 387 32 262 128 160 71 56
415376034
85 655
411 473 456 4 14 135 49 240 191 230 60 375 373 115 301 20 421 187 267 347 207 428 81 318 10 370 428 272 247 322 294 477 274 110 238 244 72 399 146 392 207 83 164 87 257 341 97 94 286 375 25 271 177 270 169 149 279 105 387 92 352 342 274 247 236 344 35 336 419 465 169 371 62 112 490 48 36 343 248 428 241 223 369 296 86
275193712
107 19
2 5 2 5 4 4 1 5 3 3 4 3 2 5 3 1 4 1 4 1 3 1 4 4 1 5 4 1 2 3 3 3 4 2 5 2 3 4 5 2 1 5 3 1 5 5 1 5 3 3 3 5 5 2 4 3 3 4 5 4 2 5 2 4 3 5 2 5 2 1 1 1 1 2 1 4 2 3 4 3 2 4 4 2 2 3 5 5 1 4 1 2 4 4 1 3 3 5 2 3 4 1 2 3 1 5 2
114012476
186 35
4 4 3 2 4 3 1 2 2 2 4 2 5 3 1 3 1 1 2 4 2 5 5 5 1 3 4 1 5 3 5 5 2 4 5 3 1 1 2 1 2 4 2 3 3 4 4 3 3 5 3 1 4 5 5 4 5 2 3 1 2 2 2 4 3 4 1 4 1 2 1 1 1 5 1 1 4 5 3 5 3 3 4 1 5 1 1 4 5 3 3 2 5 3 5 1 5 2 5 1 4 2 4 5 4 4 4 5 4 4 2 5 2 4 4 5 3 2 5 4 1 1 5 5 5 5 1 3 2 5 5 4 3 2 2 5 5 3 1 4 3 4 3 1 2 5 4 4 2 2 5 3 2 1 2 1 1 3 1 4 1 2 3 2 1 5 5 2 2 1 2 1 5 2 4 4 3 2 5 5 2 3 4 5 5 3
273232004
150 978
34 20 7 39 15 14 39 49 36 13 12 12 30 40 4 17 8 2 48 10 16 2 33 36 41 30 4 35 32 35 12 14 28 3 7 3 36 46 43 19 7 38 48 24 19 21 9 31 3 3 8 23 21 49 44 29 15 6 11 40 39 12 44 40 41 37 7 39 40 17 34 21 22 19 30 21 14 3 16 50 38 38 27 7 4 33 20 23 27 32 14 50 33 36 38 22 27 27 14 2 27 37 33 6 21 44 25 17 28 22 43 10 33 21 42 4 7 42 10 20 22 49 14 18 26 19 43 4 31 18 13 17 5 46 19 35 31 14 28 29 48 9 9 4 10 15 30 5 9 23
338032038
115 588
39 133 47 175 120 1 183 148 115 9 196 101 18 156 156 74 43 149 95 56 72 84 32 104 16 188 88 168 164 18 36 105 131 60 26 151 46 160 16 45 76 16 157 190 120 37 102 29 190 57 178 38 89 75 143 2 80 7 11 31 101 28 171 46 93 100 23 163 146 135 12 73 140 144 177 43 19 158 26 20 39 173 97 8 169 139 23 105 7 171 79 11 156 77 164 63 165 124 126 108 125 118 58 129 146 152 31 133 5 160 89 136 174 121 185
27195433
n, k = map(int, input().split())
a = list(map(int, input().split()))
a.sort()
Mod = 10 ** 9 + 7

d = dict()


def dfs(i, count, remain):
    if (i, count, remain) in d:
        return d[(i, count, remain)]
    if i == n:
        return int(count == 0 and remain >= 0)
    if count < 0:
        return 0
    # 作为最小值，创建新组。
    # 作为最大值，加入已有组。后续无法再加入
    # 作为中间值插入，或者单独作为一个组
    d[(i, count, remain)] = (dfs(i + 1, count + 1, remain + a[i]) \
                            + count * dfs(i + 1, count - 1, remain - a[i]) \
                            + (count + 1) * dfs(i + 1, count, remain))%Mod
    return d[(i, count, remain)]


print(dfs(0, 0, k) % Mod)
