#include using namespace std; long long int f[3000001]; long long int invf[3000001]; const long long int MOD = 1e9 + 7; long long int mypow(long long int x,long long int n) { long long int res = 1; while(n>0) { if(n%2==1) { res = ((res%MOD)*(x%MOD)%MOD); res%=MOD; } x = ((x%MOD)*(x%MOD)%MOD); x%=MOD; n/=2; } return res; } int main() { cin.tie(0); ios::sync_with_stdio(false); // cin("input"); //ofstream cout("output"); int T; string s; f[0] = 1; for(int i=1;i<=3000000;i++) { f[i] = ((i%MOD)*(f[i-1]%MOD)%MOD); f[i]%=MOD; } invf[3000000] = mypow(f[3000000],MOD-2); for(int i=3000000;i>0;i--) { invf[i-1] = ((invf[i]%MOD)*(i%MOD)%MOD); invf[i-1]%=MOD; } cin >> T; for(int i=1;i<=T;i++) { cin >> s; int n = s.length(); string t = s.substr(2,n-3); for(int j=0;j> N >> K; //cout << N << ' ' << K << '\n'; if(s[0]=='C') { if(N < K) { cout << 0 << '\n'; continue; } long long int res = f[N]; res = ((res%MOD)*(invf[K]%MOD)%MOD); res%=MOD; res = ((res%MOD)*(invf[N-K]%MOD)%MOD); res%=MOD; cout << res << '\n'; } else if(s[0]=='P') { if(N < K) { cout << 0 << '\n'; continue; } long long int res = f[N]; res = ((res%MOD)*(invf[N-K]%MOD)%MOD); res%=MOD; cout << res << '\n'; } else { if(N==0 && K==0) { cout << 1 << '\n'; continue; } long long int n = N + K - 1; long long int k = K; N = n; K = k; long long int res = f[N]; res = ((res%MOD)*(invf[K]%MOD)%MOD); res%=MOD; res = ((res%MOD)*(invf[N-K]%MOD)%MOD); res%=MOD; cout << res << '\n'; } } return 0; }