1 #include <iostream>
2 #include <cstring>
3 #include <cstdio>
4
5 using namespace std;
6
7 //矩阵大小上限
8 const int SIZ=100;
9 int MOD=100;
10
11 //矩阵大小为n*m,初始化全部为0
12 struct mat
13 {
14 int n,m;
15 int ar[SIZ][SIZ];
16 mat()
17 {
18 memset(ar,0,sizeof(ar));
19 n=m=SIZ;
20 };
21 };
22
23 //矩阵乘法
24 mat operator *(mat a,mat b)
25 {
26 mat c;
27 c=mat();
28 c.n=a.n;
29 c.m=b.m;
30 for(int i=1;i<=a.n;i++)
31 for(int j=1;j<=b.n;j++)
32 if(a.ar[i][j]!=0)
33 for(int k=1;k<=a.m;k++)
34 {
35 c.ar[i][k]+=(a.ar[i][j]*b.ar[j][k])%MOD;
36 c.ar[i][k]%=MOD;
37 }
38 return c;
39 }
40
41 //矩阵快速幂
42 mat operator ^(mat a,long long k)
43 {
44 mat c;
45 c=mat();
46 c.n=a.n;
47 c.m=a.m;
48 for(int i=1;i<=a.n;i++)
49 c.ar[i][i]=1;
50 while(k)
51 {
52 if(k&1)
53 c=c*a;
54 a=a*a;
55 k/=2;
56 }
57 return c;
58 }
59
60 int main()
61 {
62 int T;
63 while(scanf("%d",&T)!=EOF)
64 {
65 if(T==0)
66 break;
67 for(int l=1;l<=T;l++)
68 {
69 long long n;
70 mat a;
71 a.m=a.n=4;
72 for(int i=1;i<=4;i++)
73 {
74 for(int j=1;j<=4;j++)
75 {
76 a.ar[i][j]=1;
77 if(i==j)
78 a.ar[i][j]=2;
79 if(i+j==5)
80 a.ar[i][j]=0;
81 }
82 }
83 scanf("%I64d",&n);
84 mat b=a^n;
85 int ans=b.ar[1][1];
86 cout<<"Case "<<l<<": "<<ans<<endl;
87 }
88 cout<<endl;
89 }
90 return 0;
91 }