import re def inv(p,q): #return a,b where ap+bq=1 if p==1: return (1,0) # ap+b( xp+y )=1 , a+bx p + by = 1 b,abx=inv(q%p,p) return abx-b*(q/p),b mod=1000000007 frac=[1 for i in range(2000001)] for i in range(1,2000001): frac[i]=frac[i-1]*i frac[i]%=mod T=int(raw_input()) for i in range(T): p=raw_input() m=re.split(r'[,()]',p) N=int(m[1]) K=int(m[2]) ans=0 if m[0]=='C'and N>=K: ans=frac[N] a,b=inv(frac[N-K],mod) a%=mod ans*=a ans%=mod a,b=inv(frac[K],mod) a%=mod ans*=a ans%=mod if m[0]=='P' and N>=K: ans=frac[N] a,b=inv(frac[N-K],mod) a%=mod ans*=a ans%=mod if m[0]=='H' and not(N==0 and K>0): ans=frac[N+K-1] a,b=inv(frac[K],mod) a%=mod ans*=a ans%=mod a,b=inv(frac[N-1],mod) a%=mod ans*=a ans%=mod print ans