#include <bits/stdc++.h>
using namespace std;
int choose(int n, int r){
if (r == 0 || r == n) {
return 1;
}
// Using dynamic programming to calculate combination
vector<vector<int>> dp(n + 1, vector<int>(r + 1, 0));
for (int i = 0; i <= n; ++i) {
for (int j = 0; j <= min(i, r); ++j) {
if (j == 0 || j == i) {
dp[i][j] = 1;
} else {
dp[i][j] = (dp[i - 1][j - 1] + dp[i - 1][j]);
}
}
}
return dp[n][r];
}

