import sys input = lambda :sys.stdin.readline()[:-1] ni = lambda :int(input()) na = lambda :list(map(int,input().split())) yes = lambda :print("yes");Yes = lambda :print("Yes");YES = lambda : print("YES") no = lambda :print("no");No = lambda :print("No");NO = lambda : print("NO") ####################################################################### """ X に一致させる L <= X <= R 長さ n ができるか lcm(1, ..., n) | X n <= X / L 長さは 40 以下としていい m <= 40 に対して、 m 以上にできる L, R の個数を数える lcm(1, ..., m) の倍数を含む f(1, 1) = 1 f(1, 2) = 2 f(2, 3) = 1 2 * 1, 1 * 2 f(1, 3) = 2 """ from math import gcd mod = 998244353 def solve(n): z = 1 ans = 0 ans %= mod for i in range(1, 41): z = z * i // gcd(z, i) y = z // i # X = tiy とする # X <= R < X + tiy について、 # L <= ty # ty # i = 1, ..., p p, q = divmod(n, z) if p == 0: continue ans += p * (p - 1) // 2 % mod * y % mod * z % mod ans += (p * y) % mod * (q + 1) % mod ans %= mod # print(i, p, q, y * p * (p - 1) // 2 * z, p * y * q) return ans for _ in range(ni()): n = ni() print(solve(n))