#include using namespace std; using ll = long long; constexpr int mod = 1e9 + 7; constexpr int FMAX = 2020202; ll fac[FMAX], inv[FMAX], finv[FMAX]; void COMinit(void) { fac[0] = fac[1] = inv[1] = finv[0] = finv[1] = 1; for(int i = 2; i < FMAX; ++i) { fac[i] = fac[i - 1] * i % mod; inv[i] = mod - inv[mod % i] * (mod / i) % mod; finv[i] = finv[i - 1] * inv[i] % mod; } } ll C(int a, int b) { if(a < 0 or b < 0 or a < b) return 0; return fac[a] * finv[b] % mod * finv[a - b] % mod; } ll P(int a, int b) { if(a < 0 or b < 0 or a < b) return 0; return fac[a] * finv[a - b] % mod; } ll H(int a, int b) {return C(a + b - 1, b);} int main(void) { COMinit(); int T; cin >> T; while(T--) { string S; cin >> S; char c = S[0]; S.pop_back(); S.erase(S.begin()); S.erase(S.begin()); int col = -1; for(int i = 0; i < (int)S.size(); ++i) if(S[i] == ',') col = i; int a = stoi(S.substr(0, col)), b = stoi(S.substr(col + 1)); if(c == 'C') cout << C(a, b) << "\n"; if(c == 'P') cout << P(a, b) << "\n"; if(c == 'H') cout << H(a, b) << "\n"; } return 0; }