#include<bits/stdc++.h>
using namespace std;
int a[12],b[12];
int n;
int gcd(int x,int y)
{
if(y==0) return x;
return gcd(y,x%y);
}
struct Node
{
int p,q;
};
Node jia(int v,int p,int q) //整数加分数
{
p=v*q+p;
int com=gcd(p,q);
p=p/com;
q=q/com;
Node tmp;tmp.p=p,tmp.q=q;
return tmp;
}
Node chu(int v,int p,int q) //整数除分数
{
Node tmp;tmp.p=v*q,tmp.q=p;
int com=gcd(tmp.p,tmp.q);
tmp.p=tmp.p/com;
tmp.q=tmp.q/com;
return tmp;
}
Node dfs(int cen)
{
if(cen==n)
{
return jia(a[n-1],b[n],a[n]); //从终止条件推..快
}
Node tmp1=dfs(cen+1);
Node tmp=chu(b[cen],tmp1.p,tmp1.q);
return jia(a[cen-1],tmp.p,tmp.q);
}
int main()
{
int t,kase=1;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++) scanf("%d",&b[i]);
Node tmp=dfs(1);
printf("Case #%d: %d %d\n",kase++,tmp.p,tmp.q);
}
return 0;
}