def inv(x): return pow(x, MOD-2, MOD) def P(n, k): if k>n: return 0 return fact[n]*inv(fact[n-k]) def C(n, k): if k>n: return 0 return fact[n]*inv(fact[k])*inv(fact[n-k]) def H(n, k): return C(n+k-1, k) MOD = 10**9+7 fact = [1] for i in range(1, 2*10**6+100): fact.append(fact[-1]*i%MOD) T = int(input()) for _ in range(T): Si = input() mark = Si.find(',') N = int(Si[2:mark]) K = int(Si[mark+1:-1]) if Si[0]=='P': print(P(N, K)%MOD) elif Si[0]=='C': print(C(N, K)%MOD) elif Si[0]=='H': if N==K==0: print(1) else: print(H(N, K)%MOD)