def pow(a,b,mod) r=1 while b>0 r*=a if b&1>0 r%=mod if r>=mod a*=a a%=mod if a>=mod b>>=1 end r end def nPr(n,r,mod) (1..r).inject(1){|s,i|(s*((n-i+1)%mod))%mod} end def nCr(n,r,mod) ret=(1..r).inject(1){|s,i|(s*((n-i+1)%mod))%mod} (1..r).inject(ret){|s,i|(s*pow(i,mod-2,mod))%mod} end def nHr(n,r,mod) nCr(n+r-1,r,mod) end r=[*0..1000000] m=Hash[?C,:nCr,?P,:nPr,?H,:nHr] gets.to_i.times{ a,b,c=gets.chomp.split(/\(|,|\)/) p send(m[a],b.to_i,c.to_i,1000000007) }