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