#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;
}