class Solution {
public:
int maximumProduct(vector<int>& nums, int k) {
priority_queue<int, vector<int>, greater<>> minHeap(nums.begin(), nums.end());
for(int i = 0; i < k; i++) {
int smallest = minHeap.top();
minHeap.pop();
minHeap.push(smallest+1);
}
long long result = 1;
const int MOD = 1e9 + 7;
while(!minHeap.empty()) {
result = (result * minHeap.top()) % MOD;
minHeap.pop();
}
return result;
}
};