class Factorial(): def __init__(self, n, mod): self.mod = mod self.factorial = [0 for _ in range(n + 1)] self.inv = [0 for _ in range(n + 1)] self.factorial[0] = 1 self.inv[0] = 1 for i in range(n): self.factorial[i + 1] = self.factorial[i] * (i + 1) % mod self.inv[n] = pow(self.factorial[n], mod - 2, mod) for i in range(n)[::-1]: self.inv[i] = self.inv[i + 1] * (i + 1) % mod def perm(self, m, k): if m < k: return 0 return self.factorial[m] * self.inv[m - k] % self.mod def comb(self, m, k): if m < k: return 0 return self.factorial[m] * self.inv[k] * self.inv[m - k] % self.mod def hcomb(self, m, k): if m + k == 0: return 1 return self.comb(m + k - 1, k) import sys input = sys.stdin.readline MOD = 1000000007 T = int(input()) F = Factorial(2000000, MOD) A = [] for _ in range(T): s = input() n, k = map(int, s[2:-2].split(',')) if s[0] == 'C': A.append(F.comb(n, k)) elif s[0] == 'P': A.append(F.perm(n, k)) else: A.append(F.hcomb(n, k)) print('\n'.join(map(str, A)))