#include<stdio.h>
#include<string.h>
struct BN
{
int len;
int num[1005];
};
int wei=0;
char str1[1005];
char str2[1005];
int cmp(BN a,BN b)//1:a>b;0:b>a;-1:a=b;
{
if(a.len>b.len)
{
return 1;
}
else if(b.len>a.len)
{
return 0;
}
for(int i=a.len;i>0;i--)
{
if(a.num[i]>b.num[i])
{
return 1;
}
else if(a.num[i]<b.num[i])
{
return 0;
}
}
return -1;
}
BN jian(BN a,BN b)//a比b大
{
BN tmp;
tmp.len=0;
int n;
int flag=0;
n=a.len;
int i;
for(i=1;i<=a.len;i++)
{
if(i>b.len)
{
b.num[i]=0;
}
if(a.num[i]-b.num[i]<0)
{
a.num[i]+=2;
a.num[i+1]-=1;
}
tmp.num[i]=a.num[i]-b.num[i];
}
for(i=n;i>0;i--)
{
if(flag==0&&tmp.num[i]!=0)
{
flag=1;
}
if(flag==1)
{
tmp.len++;
}
}
return tmp;
}
BN chu2(BN a)
{
int i;
for(i=1;i<=a.len;i++)
{
a.num[i]=a.num[i+1];
}
a.num[a.len]=0;
a.len--;
return a;
}
BN gcd(BN a,BN b)
{
while(a.len&&b.len)
{
if(a.num[1])
{
if(b.num[1])
{
if(cmp(a,b)==1)
{
BN item=b;
b=jian(a,b);
a=item;
}
else if(cmp(a,b)==0)
{
BN item=a;
a=jian(b,a);
b=item;
}
else
{
return a;
}
}
else
{
b=chu2(b);
}
}
else
{
if(b.num[1])
{
a=chu2(a);
}
else
{
a=chu2(a);
b=chu2(b);
wei++;
}
}
}
}
int main()
{
int t;
BN a,b,ans;
int j;
while(scanf("%d",&t)!=EOF)
{
for(int cas=1;cas<=t;cas++)
{
for(int i=0;i<=1004;i++)
{
ans.num[i]=a.num[i]=b.num[i]=0;
}
wei=0;
scanf("%s%s",str1+1,str2+1);
int len1=strlen(str1+1);
int len2=strlen(str2+1);
for(j=1;j<=len1;j++)
{
a.num[len1-j+1]=str1[j]-'0';
}
a.len=len1;
for(j=1;j<=len2;j++)
{
b.num[len2-j+1]=str2[j]-'0';
}
b.len=len2;
ans=gcd(a,b);
printf("Case #%d: ",cas);
for(j=ans.len;j>0;j--)
{
printf("%d",ans.num[j]);
}
for(j=0;j<wei;j++)
{
printf("0");
}
printf("\n");
}
}
return 0;
}