# https://github.com/robe2222555/atcoder-lib/blob/main/template/python/main.py import sys input = lambda: sys.stdin.readline().rstrip() def LI(): return list(map(int, input().split())) def II(): return int(input()) INF = 1<<60 mod = 998244353 LIM = 20 ans = [0]*LIM ans[0] = 1 for e in range(1, LIM): sumi = [0,0,0] sumj = [0,0,0] def dfs(i,j): if i==2: a,b,c = e-sumj[0], e-sumj[1], e-sumj[2] if a+b+c==e: ans[e] += 1 return elif j==2: num = e-sumi[i] if sumj[j] + num > e: return sumi[i] += num sumj[j] += num dfs(i+1,0) sumi[i] -= num sumj[j] -= num return else: for num in range(min(e-sumi[i], e-sumj[j])+1): sumi[i] += num sumj[j] += num dfs(i,j+1) sumi[i] -= num sumj[j] -= num return dfs(0,0) # https://github.com/robe2222555/atcoder-lib/blob/main/3_数学/整数/素数関係/smallest_prime_factor.py # 1~i~nについて、iの最小の素因数をリストで返す #    i / List[i] を繰り返す def Fast_PFact(n): List=[0 for i in range(n+1)] List[1]=1 for i in range(2,n+1): if List[i]==0: cnt=1 while i*cnt<=n: if List[i*cnt]==0: List[i*cnt]=i cnt+=1 return List P = Fast_PFact(10**6+1) from collections import defaultdict def solve(): K = II() cnt = defaultdict(int) while K>1: tmp = P[K] cnt[tmp] += 1 K //= tmp continue res = 1 for v in cnt.values(): res = res*ans[v]%mod print(res) return def main(): T = II() for _ in range(T): solve() return if __name__ == '__main__': main()