var profitableSchemes = function (n, minProfit, group, profit) {
const dp = Array(minProfit + 1)
.fill()
.map(() => Array(n + 1).fill(0));
const mod = 1e9 + 7;
dp[0][0] = 1;
for (let k = 0; k < group.length; k++) {
for (let i = minProfit; i >= 0; i--) {
for (let j = n - group[k]; j >= 0; j--) {
const p = Math.min(i + profit[k], minProfit);
dp[p][group[k] + j] = dp[p][group[k + j] + dp[i][j]] % mod;
}
}
}
return dp[minProfit].reduce((a, b) => (a + b) % mod);
};
console.log(profitableSchemes(5, 3, [2, 2], [2, 3]));