#include #include "atcoder/all" using namespace std; using ll = long long; #define rep(i, s, t) for (ll i = s; i < (ll)(t); i++) #define all(x) begin(x), end(x) template bool chmin(T& x, T y) { return x > y ? (x = y, true) : false; } template bool chmax(T& x, T y) { return x < y ? (x = y, true) : false; } std::vector prime_table(int n) { std::vector p(n + 1, -1); for (int i = 2; i * i <= n; i++) { if (p[i] != -1) continue; for (int j = i * i; j <= n; j += i) p[j] = i; } return p; } vector v = prime_table(1000010); using mint = atcoder::modint998244353; vector C = {1, 6, 21, 55, 120, 231, 406, 666, 1035, 1540, 2211, 3081, 4186, 5565, 7260, 9316, 11781, 14706, 18145, 22155, 26796, 32131, 38226, 45150, 52975, 61776, 71631, 82621, 94830, 108345, 123256}; void solve() { int n; cin >> n; mint ans = 1; while(n > 1) { int k = v[n]; if(k == -1) { ans *= v[1]; break; } int c = 0; while(n % k == 0) { n /= k; c++; } ans *= C[c]; } cout << ans.val() << '\n'; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout << fixed << setprecision(15); int t = 1; cin >> t; while (t--) solve(); }