#include<iostream>
using namespace std;
#define ll long long
int t;
ll n;//用ll 定义n是因为要用到n的乘运算可能会查过整数范围
const int p=998244353;
const int maxn=1e6+10;
ll a[maxn]={1};
//这里的maxn是数据范围除10的结果因为下边要打表
 ll pow(ll a, ll b){
     ll ans=1;
     for(;b;b>>=1)
     {
         if(b&1)ans=(ans*a)%p;
         a=(a*a)%p;
     }
     return ans;
 }
int main(){
    cin>>t;
    ll ans=1;
    for(int i=1;i<maxn*10;i++)
    {
        ans=(ans*i)%p;
        if(i%10==0)
        a[i/10]=ans;
        //对数据叠乘打表,每10个数打一个表 
    }

    while(t--)
    {

        cin>>n;

        //第一个公式的结果是叠加求和的平方
        ll sum=(n*(n+1)/2)%p;
        cout<<(sum*sum)%p<<" ";


        //第二个叠乘公式的结果是(1~n的叠乘)^(2*n) 
        ll num=a[n/10]; 

        for(int i=n,j=0;j<n%10;j++,i--)
        num=(num*i)%p;

        cout<<pow(num,2*n)<<endl;
    }
    return 0;
}