tmp.a[2][0]=num;
}
}
else
{
if(s2[0]=='C')
{
if(s2[1]=='1') tmp.a[0][0]=tmp.a[0][1]=tmp.a[1][1]=1;
else tmp.a[0][0]=1,tmp.a[1][1]=2;
}
else
{
lld num=get_val(s2);
tmp.a[0][0]=tmp.a[1][1]=1;
tmp.a[2][1]=num;
}
}
}
else
{
lld num=get_val(s2);
if(s1[1]=='1')
{
tmp.a[0][0]=num;
tmp.a[1][1]=1;
}
else
{
tmp.a[0][0]=1;
tmp.a[1][1]=num;
}
}
//tmp.print();
// ms.print();
// ms.print();
}
Matrix mat=ms;
int Q;
char num[110];
scanf("%d",&Q);
printf("Case %d:\n",ca++);
while(Q--)
{
ms.init0();
ms.a[0][0]=V,ms.a[0][2]=1;
tmp=mat;
scanf("%s",num);
int len=strlen(num);
for(int i=0;i
{
if(bit[0]&1) ms=matrix_mul(ms,tmp);
tmp=matrix_mul(tmp,tmp);
int pre=0,sum;
for(int i=len-1;i>=0;i--)
{
sum=bit[i]+pre*10;
bit[i]= (sum>>1);
pre=sum&1;
}
while(len>0 && bit[len-1]==0) len--;
}
printf("%I64d\n",ms.a[0][1]);
}
}
return 0;
}