#include<fstream>
#include<cstring>
#define dim 100000
using namespace std;
ifstream fin("resturi.in");
ofstream fout("resturi.out");
int rez[dim],k[dim],aux[dim],r[dim],N[dim],sol[dim];
int m[32][dim],x[32][dim];
int res,p,t,z,i,a[32],n[32];
void atrib(int A[],int B[])
{
for(int i=B[0]+1;i<=A[0];i++) A[i]=0;
for(int i=0;i<=B[0];i++) A[i]=B[i];
}
void Subtract(int A[], int B[])
{
int i,T=0;
for(i=B[0]+1;i<=A[0];) B[i++]=0;
for(i=1;i<=A[0];i++)
A[i]+=(T=(A[i]-=B[i]+T)<0)?10:0;
while(!A[A[0]]&&A[0]>1) A[0]--;
}
void imp(int A[], unsigned long X)
{
int i,R=0;
for(i=A[0];i;i--) A[i]=(R=10*R+A[i])/X,R%=X;
while(!A[A[0]]&&A[0]>1) A[0]--;
}
void inm(int H[], unsigned long X)
{
int i,T=0;
for(i=1;i<=H[0];i++)
{
H[i]=H[i]*X+T;T=H[i]/10;
H[i]=H[i]%10;
}
while(T) H[++H[0]]=T%10,T/=10;
}
void Shl(int H[], int Count)
{
memmove(&H[Count+1],&H[1],sizeof(int)*H[0]);
memset(&H[1],0,sizeof(int)*Count);
H[0]+=Count;
}
int Sgn(int H1[], int H2[])
{
while(H1[0]&&!H1[H1[0]]) H1[0]--;
while(H2[0]&&!H2[H2[0]]) H2[0]--;
if(H1[0]<H2[0])return -1;
else if(H1[0]>H2[0]) return 1;
for(int i=H1[0];i>0;--i)
if(H1[i]<H2[i]) return -1;
else if(H1[i]>H2[i]) return 1;
return 0;
}
void Minm(int A[], int B[], int C[])
{
int i,j,T=0;
C[0]=A[0]+B[0]-1;
for(i=1;i<=C[0];i++) C[i]=0;
for(i=1;i<=A[0];i++)for(j=1;j<=B[0];j++) C[i+j-1]+=A[i]*B[j];
for(i=1;i<=C[0];i++) T=(C[i]+=T)/10,C[i]%=10;
if(T) C[++C[0]]=T;
}
void Mimp(int A[], int B[], int C[], int R[])
{
int i;
R[0]=0;C[0]=A[0];
for(i=A[0];i;i--)
{
Shl(R,1);R[1]=A[i];
C[i]=0;
while(Sgn(B,R)!=1)
{
C[i]++;
Subtract(R,B);
}
}
while(!C[C[0]]&&C[0]>1) C[0]--;
}
void rid(int A[],int B[])
{
while(!(B[0]==1&&B[1]==1))
{
if(B[1]%2==0)
{
Minm(rez,A,k);
Mimp(k,N,rez,r);
atrib(rez,r);
}
Minm(A,A,k);
Mimp(A,N,k,r);
atrib(A,r);
}
Minm(rez,A,k);
atrib(A,k);
}
void Add(int A[], int B[])
{
int i,T=0;
if(B[0]>A[0])
{
for(i=A[0]+1;i<=B[0];) A[i++]=0;
A[0]=B[0];
}
else for(i=B[0]+1;i<=A[0];) B[i++]=0;
for(i=1;i<=A[0];i++)
{
A[i]+=B[i]+T;
T=A[i]/10;
A[i]%=10;
}
if(T) A[++A[0]]=T;
}
int main()
{
fin>>t;
for(;t--;)
{
fin>>z;memset(N,0,sizeof(N));
N[0]=1;N[1]=1;
for(i=1;i<=z;i++)
{
fin>>n[i]>>a[i];
inm(N,n[i]);
}
for(i=1;i<=z;i++)
{
imp(m[i],n[i]);res=0,p=1;
atrib(x[i],m[i]);atrib(aux,N);
while(!res)
{
aux[p]-=res;res=0;
if(aux[p]<0) aux[p]+=10,res=1;
p++;
}
while(aux[aux[0]]==0) aux[0]--;
rid(x[i],aux);
Minm(m[i],x[i],k);atrib(m[i],k);
inm(m[i],a[i]);
Add(sol,m[i]);
Mimp(sol,N,aux,r);
atrib(sol,r);
}
for(i=sol[0];i;i--) fout<<sol[i];
}
return 0;
}