MOD = 998244353 # 階乗とその逆元 factorials = [None] * (2 * 10**6 + 1) factorials[0], factorials[1] = 1, 1 inv = [None] * (2 * 10**6 + 1) inv[1] = 1 inv_factorials = [None] * (2 * 10**6 + 1) inv_factorials[0], inv_factorials[1] = 1, 1 for i in range(2, 2 * 10**6 + 1): factorials[i] = factorials[i - 1] * i % MOD inv[i] = -inv[MOD % i] * (MOD // i) % MOD inv_factorials[i] = inv_factorials[i - 1] * inv[i] % MOD # 二項係数 def comb(n, r): if n < r: return 0 return factorials[n] * inv_factorials[r] % MOD * inv_factorials[n - r] % MOD # 素因数の個数 def factor_count(n): count = 0 p = 2 while p**2 <= n: while n % p == 0: count += 1 n //= p p += 1 if n > 1: count += 1 return count Q = int(input()) cnt = 0 for _ in range(Q): A, B = map(int, input().split()) cnt += factor_count(A) ans = comb(cnt - 1, B - 1) print(ans)