#include #include using namespace std; using ull = unsigned long long; using mint = atcoder::modint998244353; constexpr int LIMIT = 42; // Index * A Problem の解の上限 vector LCM; // 1, 2, ..., i の総LCM void init() { LCM = vector(LIMIT + 1); LCM[1] = 1; for (int i = 2; i <= LIMIT; i++) { LCM[i] = lcm(LCM[i - 1], i); } } void solve() { ull N; cin >> N; auto count = [&](int ans) { mint loop = mint(N / LCM[ans]); return (mint(LCM[ans]) / ans) * (mint(N + 1) * loop - loop * (loop + 1) * mint(LCM[ans]) / 2); }; mint answer = 0; for (int i = 1; i <= LIMIT; i++) { answer += count(i); } cout << answer.val() << "\n"; } int main() { init(); int T; cin >> T; while (T--) solve(); }