#include using namespace std; using ll = long long; const int MOD = 998244353; const int MAX = 1000000; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); // 最小素因数を前計算 vector spf(MAX + 1); for (int i = 2; i <= MAX; i++) { if (spf[i] != 0) continue; spf[i] = i; if (1LL * i * i > MAX) continue; for (int j = i * i; j <= MAX; j += i) { if (spf[j] == 0) spf[j] = i; } } // 指数 e に対応する場合の数 auto cal = [&](ll e) -> ll { return (e + 1) * (e + 2) * (e * e + 3 * e + 4) / 8; }; int T; cin >> T; while (T--) { int K; cin >> K; ll ans = 1; while (K > 1) { int p = spf[K]; int e = 0; while (K % p == 0) { K /= p; e++; } ans = ans * cal(e) % MOD; } cout << ans << '\n'; } return 0; }