#include <bits/stdc++.h>
using namespace std;
const int MOD = 1e9 + 7;
#define int long long
signed main() {
cin.tie(0);
ios::sync_with_stdio(false);
int n;
long long k;
cin >> n >> k;
vector<long long> a(n);
for(int i = 0; i < n; i++){
cin >> a[i];
}
sort(a.begin(), a.end());
long long l = 0, r = 1e18, mid;
for(int i = 0; i < 100; i++){
mid = (l + r) / 2;
long long sum = 0;
for(int j = 0; j < n; j++){
if(a[j] >= mid) continue;
sum += mid - a[j];
}
if(sum < k){
l = mid + 1;
}else{
r = mid - 1;
}
}
for(int i = 0; i < n; i++){
if(a[i] > mid) continue;
k -= (mid - a[i]);
a[i] = mid;
}
if(k > 0){
for(int i = 0; i < n; i++){
if(k <= 0) break;
a[i]++;
k--;
}
}
int ans = 1;
for(int i = 0; i < n; i++){
ans = (ans * a[i]) % MOD;
}
cout << ans;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBNT0QgPSAxZTkgKyA3OwojZGVmaW5lIGludCBsb25nIGxvbmcgCnNpZ25lZCBtYWluKCkgewoJY2luLnRpZSgwKTsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKCWludCBuOwoJbG9uZyBsb25nIGs7CgljaW4gPj4gbiA+PiBrOwoJdmVjdG9yPGxvbmcgbG9uZz4gYShuKTsKCWZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspewoJCWNpbiA+PiBhW2ldOwoJfQoJc29ydChhLmJlZ2luKCksIGEuZW5kKCkpOwoJbG9uZyBsb25nIGwgPSAwLCByID0gMWUxOCwgbWlkOwoJZm9yKGludCBpID0gMDsgaSA8IDEwMDsgaSsrKXsKCQltaWQgPSAobCArIHIpIC8gMjsKCQlsb25nIGxvbmcgc3VtID0gMDsKCQlmb3IoaW50IGogPSAwOyBqIDwgbjsgaisrKXsKCQkJaWYoYVtqXSA+PSBtaWQpIGNvbnRpbnVlOwoJCQlzdW0gKz0gbWlkIC0gYVtqXTsKCQl9CgkJaWYoc3VtIDwgayl7CgkJCWwgPSBtaWQgKyAxOwoJCX1lbHNlewoJCQlyID0gbWlkIC0gMTsKCQl9Cgl9Cglmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKXsKCQlpZihhW2ldID4gbWlkKSBjb250aW51ZTsKCQlrIC09IChtaWQgLSBhW2ldKTsKCgkJYVtpXSA9IG1pZDsKCX0gCglpZihrID4gMCl7CgkJZm9yKGludCBpID0gMDsgaSA8IG47IGkrKyl7CgkJCWlmKGsgPD0gMCkgYnJlYWs7CgkJCWFbaV0rKzsKCQkJay0tOwoJCX0gCQoJfQoKCWludCBhbnMgPSAxOwoJZm9yKGludCBpID0gMDsgaSA8IG47IGkrKyl7CgkJYW5zID0gKGFucyAqIGFbaV0pICUgTU9EOwoJfQoJY291dCA8PCBhbnM7Cn0K