由欧拉函数很容易想到积性函数 ans*=(qpow(p,q,N)+((p-1)*q%N)*qpow(p,q-1,N)%N)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<iostream>
#define ll long long
#define ull unsigned long long
const int M=1e3+5;
const int N=998244353;
using namespace std;
ll qpow(ll a,ll b,ll mod)
{
ll sum=1;
while(b)
{
if(b&1) sum=sum*a%mod;
a=a*a%mod;
b>>=1;
}
return sum;
}
ll p,q,ans;
int main()
{
int T,m;
scanf("%d",&T);
while(T--)
{
ans=1;
scanf("%d",&m);
for(int i=0;i<m;i++)
{
scanf("%lld%lld",&p,&q);
ans*=(qpow(p,q,N)+((p-1)*q%N)*qpow(p,q-1,N)%N);
ans%=N;
}
printf("%lld\n",ans);
}
return 0;
}
/*
2
2
2 1
3 1
2
2 2
3 2
*/