## https://yukicoder.me/problems/no/3377 MOD = 998244353 def calc_gcd(A, B): """ 正の整数A, Bの最大公約数を計算する """ a = max(A, B) b = min(A, B) while a % b > 0: c = a % b a = b b = c return b inv_2 = pow(2, MOD - 2, MOD) inv_6 = pow(6, MOD - 2, MOD) def calc_sum_k(k): ans = (k * (k + 1)) % MOD ans *= inv_2 ans %= MOD return ans def calc_sum_k2(k): ans = inv_6 ans *= k ans %= MOD ans *= k + 1 ans %= MOD ans *= 2 * k + 1 ans %= MOD return ans def solve(N): a_u = 1 l = 1 answer = 0 while a_u <= N: a_l = a_u // l k0 = N // a_u ans1 = (a_l * (N + 1)) % MOD ans1 *= k0 ans1 %= MOD ans2 = (a_u * a_l) % MOD ans2 *= calc_sum_k(k0) ans2 %= MOD ans2 *= -1 ans2 %= MOD ans = ans1 + ans2 ans %= MOD answer += ans answer %= MOD l += 1 gcd = calc_gcd(a_u, l) a_u = (a_u // gcd) * l return answer def main(): T = int(input()) answers = [] for _ in range(T): N = int(input()) ans = solve(N) answers.append(ans) for ans in answers: print(ans) if __name__ == "__main__": main()