#include #define rep(i, a) for (int i = 0; i < (a); i++) #define rep2(i, a, b) for (int i = (a); i < (b); i++) #define repr(i, a) for (int i = (a) - 1; i >= 0; i--) #define repr2(i, a, b) for (int i = (b) - 1; i >= (a); i--) using namespace std; typedef long long ll; const ll inf = 1e9; const ll mod = 1e9 + 7; ll fact[2020202]; ll modpow(ll a, ll b) { ll res = 1; while (b > 0) { if (b & 1) (res *= a) %= mod; (a *= a) %= mod; b >>= 1; } return res; } ll modinv(ll a) { return modpow(a, mod - 2); } ll modP(ll a, ll b) { if (a < b) return 0; return fact[a] * modinv(fact[a - b]) % mod; } ll modC(ll a, ll b) { if (a < 0 || b < 0 || a < b) return 0; return modP(a, b) * modinv(fact[b]) % mod; } ll modH(ll a, ll b) { if (a == 0 && b == 0) return 1; return modC(a + b - 1, b); } int main() { fact[0] = 1; rep2 (i, 1, 2020202) { fact[i] = (i * fact[i - 1]) % mod; } int T; cin >> T; while (T--) { string S; cin >> S; char c = S[0]; S = S.substr(2, S.length() - 3); *find(S.begin(), S.end(), ',') = ' '; istringstream iss(S); int a, b; iss >> a >> b; ll ans = 0; if (c == 'C') { ans = modC(a, b); } else if (c == 'P') { ans = modP(a, b); } else if (c == 'H') { ans = modH(a, b); } cout << ans << endl; } return 0; }