class Solution {
public int maximumProduct(int[] nums, int k) {
PriorityQueue<Integer> pq = new PriorityQueue<>();
for (int num : nums){
pq.offer(num);
}
for (int i = 0; i < k; i++){
int num = pq.poll();
num += 1;
pq.offer(num);
}
long ans = 1;
long MOD = 1000000007;
for (int num : pq){
ans = (num * ans) % MOD;
}
return (int)ans;
}
}