#include<stdio.h>
int MIN(int n,int m){
if (n>m) {
return n;
}else return m;
}
int main(){
int T,n;
int i=0,j=0,k=0,f=1;
int m1[9999],m2[9999];
scanf("%d", &T);
for (i=0; i<T; i++) {//组数
scanf("%d",&n);
for (j=0; j<=n; j++) {
scanf("%d",&m1[j]);
}
for (k=0; k<=n; k++) {
scanf("%d",&m2[k]);
}
for (k=n; k>=0; k--) {
if (m1[k]==0&&m2[k]!=0) {//上是0
printf("0 1\n");
break;
}else if (m1[k]==0&&m2[k]==0){//都是0
continue;
}else if (m2[k]==0&&m1[k]!=0){//下是0
printf("infty\n");
break;
}else if (m1[k]!=0&&m2[k]!=0){//都不0
for (f=1; f<MIN(m1[k],m2[k]); f++) {
if (m1[k]%f==0&&m2[k]%f==0) {
m1[k]/=f;
m2[k]/=f;
}
}
printf("%d %d\n",m1[k],m2[k]);
break;
}
}
}
return 0;}