A Famous Airport Manager
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 576 Accepted Submission(s): 119
The airport can be divided into 9 square areas (3 rows x 3 columns), and at most one plane can be parked in one area. The area located at the first column of the first row is the "takeoff area". The plane can take off only in the takeoff area. Besides, each plane (including the one in the takeoff area) can move to a vacant neighboring area. Two areas are neighboring if and only if they share an edge.
There are about 30,000 test cases. Be careful!
*BB BBB BBB *GB BBB BBB
Case 1: 1 Case 2: 8
很重要的思想:用二进制或三进制。。。的方式去储存表的情况。。即表中的每一种情况都可以转化为一个具体的数,实在是很巧妙
这题的代码里隐藏了很多解题的小技巧,实在为一道好题
本题的思路 大致是这样的:先给3 x 3的表格标上序号 按层次 从左到右 标上 1 --> 9 然后通过dfs求出每个点出去的序列 存在一个二维数组中 比如预计可能的排列有M种,那么就开这么一个M行9列的数组 每一行代表了一种排列
然后就是创建 答案表的过程了
题目的意思,无非是把我们从dfs中得出的那么多序列 所对应的点 进行染色,很显然,题目给出的要求,只有3种颜色:‘ * ’、 ‘G’ 和 ‘B’ ,那么我们就用 三进制 去储存所有 染色情况 ,它们分别对应 0 1 和2 把 那么染色情况有多少种呢 很容易计算 也是按层次来 我们写出一个九位的三进制就ok了 0 0 0 0 0 0 0 0 0 ,其中第一位一定是 0 (飞机的起飞点 : ‘ * ’),那么所有情况的值便是 0 1 1 1 1 1 1 1 1 ==>就看作 1 0 0 0 0 0 0 0 等于 3 的 8次方。 L 可以定为 6562 。
之后,对于每一种染色情况(我们可以直接用十进制数字表示),去判断它有几种不同的序列。这里又要再次用到 类似的思想 。因为我们知道,飞机起飞的序列只跟飞机颜色有关,这里只有两种颜色,所以可以用二进制来储存飞机起飞的序列,然后去比较 前面 dfs 出来的所有的 “每个点出去的序列”(也就是M种),然后通过做标记,计算出有几种序列(这里可以用STL里的map很方便),这样得出答案ans[i]。。i 从 0 到 6562 所有情况都用这串过程算出,然后打表。。然后。。你懂的。。。不打表的话会超时。
#include <iostream>
#include <map>
#include <string.h>
using namespace std;
/*********************************************************************
#define L 6562 // 6562 ==> 3*3*3*3*3*3*3*3
#define N 3 // N 代表给出矩阵的行列数
#define NN 9 // NN ==> N*N
#define M 2000 //可能的排列
struct node{
bool can[N][N];//判断当前点是否可选,即能否直接到达0点
};
bool vis[N][N];//判断当前点是否已遍历
int seq[NN], nseq;//dfs中的临时量
int vldseqs[M][NN], nvldseqs;//dfs得出的最终量
int mx[4] = {1, -1, 0, 0};
int my[4] = {0, 0, 1, -1};
int ans[L];//最终的答案:每种颜色情况有多少种不同的序列的数量,需要输出打表
void dfs(node u, int a, int b)
{
if(a < 0 || a >= N || b < 0 || b >= N || vis[a][b]) return;
if(nseq == NN-1){//保存这种序列
seq[NN-1] = a * N + b;
for(int i = 0; i < NN; i++)
vldseqs[nvldseqs][i] = seq[i];
nvldseqs++;
return;
}
vis[a][b] = 1;//标记当前(a,b)已被访问
int tmp = nseq;
seq[nseq++] = a * N + b;
int x, y;
for(int i = 0; i < 4; i++){
x = a + mx[i];
y = b + my[i];
if(x >= 0 && x < N && y >= 0 && y < N) u.can[x][y] = 1;
}
for(int i = 0; i < N; i++)
for(int j = 0; j < N; j++)
if(u.can[i][j]) dfs(u, i, j);
vis[a][b] = 0;
nseq = tmp;
}
int main()
{
node u;
memset(vis, 0, sizeof(vis));
memset(u.can, 0, sizeof(u.can));
u.can[0][0] = 1;
dfs(u, 0, 0);
// for (int i=0;i<nvldseqs;i++) {for (int j=0;j<NN;j++) cout << vldseqs[i][j] << " "; cout << '\n';}//test
// cout << nvldseqs << '\n';
int layout[NN];
layout[0] = 0;
map<int, bool> kmap;
for(int i = 0; i < L; i++){
int k = NN-1, x = i;
while(k > 0){
layout[k--] = x % 3;
x /= 3;
}
kmap.clear();
for(int j = 0; j < nvldseqs; j++){
int kind = 0;
for(int k = 0; k < NN; k++){
int x = layout[vldseqs[j][k]];
if(x==1) kind = (kind << 1) + 0;
if(x==2) kind = (kind << 1) + 1;
}
kmap[kind] = 1;
}
ans[i] = kmap.size();
}
for(int i = 0; i < L; i++)
cout << ans[i] << ", ";
return 0;
}
**********************************************************************/
int ans[6562] = {1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1, 3, 2, 3, 3, 1, 2, 1, 2, 3, 3, 1, 3, 1, 1, 1, 2, 1, 1, 2, 2, 3, 3, 1, 1, 3, 1, 1, 3, 3, 4, 6, 2, 3, 3, 3, 4, 5, 3, 6, 4, 1, 2, 1, 2, 3, 3, 1, 2, 1, 2, 3, 3, 3, 4, 6, 3, 5, 4, 1, 3, 1, 3, 6, 4, 1, 3, 1, 1, 1, 2, 1, 1, 3, 2, 3, 3, 1, 1, 3, 1, 1, 4, 3, 3, 6, 2, 3, 3, 3, 4, 6, 3, 6, 4, 1, 1, 3, 1, 1, 3, 3, 4, 6, 1, 1, 3, 1, 1, 4, 3, 4, 6, 3, 4, 6, 4, 5, 9, 6, 10, 10, 2, 3, 3, 3, 4, 6, 3, 5, 4, 3, 4, 6, 4, 5, 10, 6, 8, 10, 3, 6, 4, 6, 10, 10, 4, 9, 5, 1, 2, 1, 2, 3, 3, 1, 3, 1, 2, 3, 3, 3, 4, 6, 3, 6, 4, 1, 3, 1, 3, 6, 3, 1, 4, 1, 2, 3, 3, 3, 4, 5, 3, 6, 4, 3, 4, 6, 4, 5, 9, 6, 10, 10, 3, 6, 4, 6, 10, 8, 4, 10, 5, 1, 3, 1, 3, 6, 4, 1, 3, 1, 3, 6, 4, 6, 10, 10, 4, 9, 5, 1, 3, 1, 3, 6, 4, 1, 4, 1, 1, 1, 2, 1, 1, 3, 2, 3, 3, 1, 1, 3, 1, 1, 4, 3, 4, 6, 2, 3, 3, 2, 3, 5, 3, 6, 4, 1, 1, 3, 1, 1, 3, 3, 4, 6, 1, 1, 4, 1, 1, 4, 4, 5, 10, 3, 4, 6, 3, 4, 6, 6, 10, 10, 2, 3, 3, 3, 4, 6, 3, 5, 4, 3, 4, 6, 4, 5, 10, 6, 9, 10, 3, 6, 4, 5, 9, 9, 4, 9, 5, 1, 1, 3, 1, 1, 4, 3, 3, 6, 1, 1, 4, 1, 1, 5, 4, 4, 10, 3, 3, 6, 3, 4, 9, 6, 6, 10, 1, 1, 3, 1, 1, 4, 3, 4, 6, 1, 1, 4, 1, 1, 5, 4, 5, 10, 3, 4, 6, 4, 5, 9, 6, 10, 10, 3, 4, 6, 4, 5, 10, 6, 8, 10, 4, 5, 10, 5, 6, 15, 10, 13, 20, 6, 9, 10, 9, 14, 19, 10, 15, 15, 2, 3, 3, 3, 4, 6, 3, 6, 4, 3, 4, 6, 4, 5, 10, 6, 10, 10, 3, 6, 4, 5, 9, 8, 4, 10, 5, 3, 4, 6, 4, 5, 9, 6, 10, 10, 4, 5, 10, 5, 6, 14, 10, 15, 20, 6, 10, 10, 9, 14, 14, 10, 20, 15, 3, 6, 4, 6, 10, 10, 4, 9, 5, 6, 10, 10, 10, 15, 20, 10, 19, 15, 4, 9, 5, 8, 15, 13, 5, 14, 6, 1, 2, 1, 2, 3, 3, 1, 3, 1, 2, 3, 3, 3, 4, 6, 2, 5, 3, 1, 3, 1, 3, 6, 4, 1, 4, 1, 2, 3, 3, 3, 4, 5, 3, 6, 4, 3, 4, 6, 4, 5, 9, 5, 9, 9, 3, 6, 4, 6, 10, 9, 4, 10, 5, 1, 3, 1, 3, 6, 4, 1, 3, 1, 3, 6, 4, 6, 10, 10, 3, 6, 4, 1, 4, 1, 4, 10, 5, 1, 4, 1, 2, 3, 3, 3, 4, 6, 3, 6, 4, 3, 4, 6, 4, 5, 10, 5, 8, 9, 3, 6, 4, 6, 10, 10, 4, 10, 5, 3, 4, 6, 4, 5, 9, 6, 10, 10, 4, 5, 9, 5, 6, 14, 8, 13, 15, 6, 10, 10, 10, 15, 19, 10, 20, 15, 3, 6, 4, 6, 10, 10, 4, 9, 5, 6, 10, 10, 10, 15, 20, 9, 14, 14, 4, 10, 5, 10, 20, 15, 5, 14, 6, 1, 3, 1, 3, 6, 3, 1, 4, 1, 3, 6, 3, 6, 10, 6, 3, 9, 4, 1, 4, 1, 4, 10, 4, 1, 5, 1, 3, 6, 4, 6, 10, 8, 4, 10, 5, 6, 10, 9, 10, 15, 15, 9, 19, 14, 4, 10, 5, 10, 20, 13, 5, 15, 6, 1, 3, 1, 3, 6, 4, 1, 4, 1, 3, 6, 4, 6, 10, 10, 4, 9, 5, 1, 4, 1, 4, 10, 5, 1, 5, 1, 1, 1, 2, 1, 1, 3, 2, 3, 3, 1, 1, 3, 1, 1, 4, 3, 4, 6, 2, 3, 3, 3, 4, 6, 3, 6, 4, 1, 1, 3, 1, 1, 3, 3, 4, 6, 1, 1, 4, 1, 1, 4, 4, 5, 10, 3, 4, 6, 4, 5, 9, 6, 10, 10, 2, 3, 3, 3, 4, 6, 3, 5, 4, 3, 4, 6, 4, 5, 10, 6, 9, 10, 3, 6, 4, 6, 10, 10, 4, 9, 5, 1, 1, 3, 1, 1, 3, 3, 4, 6, 1, 1, 3, 1, 1, 4, 3, 4, 6, 3, 4, 6, 4, 5, 9, 6, 10, 10, 1, 1, 4, 1, 1, 4, 4, 5, 10, 1, 1, 4, 1, 1, 4, 4, 5, 10, 4, 5, 10, 5, 6, 13, 10, 15, 20, 3, 3, 6, 3, 4, 6, 6, 8, 10, 3, 4, 6, 4, 5, 10, 6, 9, 10, 6, 9, 10, 9, 14, 16, 10, 17, 15, 2, 3, 3, 3, 4, 6, 3, 6, 4, 3, 4, 6, 4, 5, 10, 6, 10, 10, 3, 6, 4, 6, 10, 9, 4, 10, 5, 3, 4, 6, 4, 5, 9, 6, 10, 10, 4, 5, 10, 5, 6, 13, 10, 15, 20, 6, 10, 10, 10, 15, 17, 10, 20, 15, 3, 6, 4, 6, 10, 10, 4, 9, 5, 6, 10, 10, 10, 15, 20, 10, 18, 15, 4, 9, 5, 9, 16, 14, 5, 13, 6, 1, 1, 3, 1, 1, 4, 3, 4, 6, 1, 1, 4, 1, 1, 5, 4, 5, 10, 3, 4, 6, 3, 4, 9, 6, 10, 10, 1, 1, 4, 1, 1, 4, 4, 5, 10, 1, 1, 5, 1, 1, 5, 5, 6, 15, 4, 5, 10, 4, 5, 10, 10, 15, 20, 3, 4, 6, 4, 5, 10, 6, 9, 10, 4, 5, 10, 5, 6, 15, 10, 14, 20, 6, 10, 10, 9, 14, 19, 10, 19, 15, 1, 1, 3, 1, 1, 4, 3, 4, 6, 1, 1, 4, 1, 1, 5, 4, 5, 10, 3, 4, 6, 4, 5, 9, 6, 10, 10, 1, 1, 4, 1, 1, 4, 4, 5, 10, 1, 1, 5, 1, 1, 5, 5, 6, 15, 4, 5, 10, 5, 6, 14, 10, 15, 20, 3, 4, 6, 4, 5, 10, 6, 9, 10, 4, 5, 10, 5, 6, 15, 10, 14, 20, 6, 10, 10, 9, 14, 19, 10, 19, 15, 3, 4, 6, 4, 5, 10, 6, 10, 10, 4, 5, 10, 5, 6, 15, 10, 15, 20, 6, 10, 10, 9, 14, 18, 10, 20, 15, 4, 5, 10, 5, 6, 13, 10, 15, 20, 5, 6, 15, 6, 7, 19, 15, 21, 35, 10, 15, 20, 14, 20, 27, 20, 35, 35, 6, 10, 10, 10, 15, 20, 10, 18, 15, 10, 15, 20, 15, 21, 35, 20, 33, 35, 10, 19, 15, 18, 30, 33, 15, 33, 21, 2, 3, 3, 3, 4, 6, 3, 6, 4, 3, 4, 6, 4, 5, 10, 5, 9, 9, 3, 6, 4, 6, 10, 10, 4, 10, 5, 3, 4, 6, 4, 5, 9, 6, 10, 10, 4, 5, 10, 5, 6, 14, 9, 14, 19, 6, 10, 10, 10, 15, 19, 10, 20, 15, 3, 6, 4, 6, 10, 10, 4, 9, 5, 6, 10, 10, 10, 15, 20, 9, 16, 14, 4, 10, 5, 10, 20, 15, 5, 14, 6, 3, 4, 6, 4, 5, 9, 6, 10, 10, 4, 5, 9, 5, 6, 14, 8, 13, 15, 6, 10, 10, 10, 15, 19, 10, 20, 15, 4, 5, 10, 5, 6, 13, 10, 15, 20, 5, 6, 14, 6, 7, 18, 13, 19, 29, 10, 15, 20, 15, 21, 32, 20, 35, 35, 6, 9, 10, 9, 14, 16, 10, 17, 15, 9, 14, 16, 14, 20, 30, 15, 25, 24, 10, 19, 15, 19, 34, 31, 15, 31, 21, 3, 6, 4, 6, 10, 9, 4, 10, 5, 6, 10, 9, 10, 15, 16, 9, 19, 14, 4, 10, 5, 10, 20, 14, 5, 15, 6, 6, 10, 10, 10, 15, 17, 10, 20, 15, 10, 15, 19, 15, 21, 29, 19, 34, 34, 10, 20, 15, 20, 35, 32, 15, 35, 21, 4, 9, 5, 9, 16, 14, 5, 13, 6, 9, 16, 14, 16, 25, 30, 14, 28, 20, 5, 14, 6, 14, 30, 20, 6, 19, 7, 1, 2, 1, 2, 3, 3, 1, 3, 1, 2, 3, 3, 3, 4, 6, 3, 6, 4, 1, 3, 1, 3, 6, 4, 1, 4, 1, 2, 3, 3, 3, 4, 5, 3, 6, 4, 3, 4, 6, 4, 5, 9, 6, 10, 10, 3, 6, 4, 6, 10, 9, 4, 10, 5, 1, 3, 1, 3, 6, 4, 1, 3, 1, 3, 6, 4, 6, 10, 10, 4, 9, 5, 1, 4, 1, 4, 10, 5, 1, 4, 1, 2, 3, 3, 3, 4, 6, 3, 6, 4, 3, 4, 6, 4, 5, 10, 6, 9, 10, 3, 6, 4, 6, 10, 10, 4, 10, 5, 3, 4, 6, 4, 5, 9, 6, 10, 10, 4, 5, 9, 5, 6, 13, 9, 14, 16, 6, 10, 10, 10, 15, 18, 10, 20, 15, 3, 6, 4, 6, 10, 10, 4, 9, 5, 6, 10, 10, 10, 15, 20, 10, 17, 15, 4, 10, 5, 10, 20, 15, 5, 13, 6, 1, 3, 1, 3, 6, 4, 1, 3, 1, 3, 6, 4, 6, 10, 10, 4, 9, 5, 1, 3, 1, 3, 6, 4, 1, 4, 1, 3, 6, 3, 6, 10, 8, 3, 6, 4, 6, 10, 9, 10, 15, 17, 9, 16, 14, 3, 6, 4, 6, 10, 9, 4, 10, 5, 1, 4, 1, 4, 10, 5, 1, 4, 1, 4, 10, 5, 10, 20, 15, 5, 13, 6, 1, 4, 1, 4, 10, 5, 1, 4, 1, 2, 3, 3, 3, 4, 6, 3, 6, 4, 3, 4, 6, 4, 5, 10, 6, 10, 10, 3, 6, 4, 5, 9, 9, 4, 10, 5, 3, 4, 6, 4, 5, 9, 6, 10, 10, 4, 5, 10, 5, 6, 14, 10, 15, 20, 6, 10, 10, 9, 14, 16, 10, 20, 15, 3, 6, 4, 6, 10, 10, 4, 9, 5, 6, 10, 10, 10, 15, 20, 10, 19, 15, 4, 10, 5, 9, 19, 14, 5, 14, 6, 3, 4, 6, 4, 5, 10, 6, 9, 10, 4, 5, 10, 5, 6, 15, 10, 14, 20, 6, 9, 10, 9, 14, 19, 10, 16, 15, 4, 5, 9, 5, 6, 13, 9, 14, 16, 5, 6, 14, 6, 7, 19, 14, 20, 30, 9, 14, 16, 14, 20, 28, 16, 30, 25, 6, 10, 10, 10, 15, 20, 10, 17, 15, 10, 15, 20, 15, 21, 35, 20, 32, 35, 10, 19, 15, 19, 34, 34, 15, 29, 21, 3, 6, 4, 6, 10, 10, 4, 9, 5, 6, 10, 10, 10, 15, 20, 10, 19, 15, 4, 9, 5, 8, 15, 13, 5, 14, 6, 6, 10, 9, 10, 15, 17, 9, 16, 14, 10, 15, 19, 15, 21, 31, 19, 31, 34, 9, 16, 14, 15, 24, 25, 14, 30, 20, 4, 10, 5, 10, 20, 15, 5, 13, 6, 10, 20, 15, 20, 35, 35, 15, 32, 21, 5, 14, 6, 13, 29, 19, 6, 18, 7, 1, 3, 1, 3, 6, 4, 1, 4, 1, 3, 6, 4, 6, 10, 10, 3, 9, 4, 1, 4, 1, 4, 10, 5, 1, 5, 1, 3, 6, 4, 6, 10, 9, 4, 10, 5, 6, 10, 10, 10, 15, 19, 9, 19, 14, 4, 10, 5, 10, 20, 14, 5, 15, 6, 1, 4, 1, 4, 10, 5, 1, 4, 1, 4, 10, 5, 10, 20, 15, 4, 10, 5, 1, 5, 1, 5, 15, 6, 1, 5, 1, 3, 6, 4, 6, 10, 10, 4, 10, 5, 6, 10, 10, 10, 15, 20, 9, 18, 14, 4, 10, 5, 10, 20, 15, 5, 15, 6, 6, 10, 10, 10, 15, 18, 10, 20, 15, 10, 15, 19, 15, 21, 33, 18, 33, 30, 10, 20, 15, 20, 35, 33, 15, 35, 21, 4, 10, 5, 10, 20, 15, 5, 13, 6, 10, 20, 15, 20, 35, 35, 14, 27, 20, 5, 15, 6, 15, 35, 21, 6, 19, 7, 1, 3, 1, 3, 6, 4, 1, 4, 1, 3, 6, 4, 6, 10, 10, 4, 9, 5, 1, 4, 1, 4, 10, 5, 1, 5, 1, 3, 6, 4, 6, 10, 9, 4, 10, 5, 6, 10, 10, 10, 15, 19, 9, 19, 14, 4, 10, 5, 10, 20, 14, 5, 15, 6, 1, 4, 1, 4, 10, 5, 1, 4, 1, 4, 10, 5, 10, 20, 15, 5, 14, 6, 1, 5, 1, 5, 15, 6, 1, 5, 1, 1, 1, 2, 1, 1, 3, 2, 3, 3, 1, 1, 3, 1, 1, 4, 3, 4, 6, 2, 3, 3, 3, 4, 6, 3, 6, 4, 1, 1, 3, 1, 1, 3, 3, 4, 6, 1, 1, 4, 1, 1, 4, 4, 5, 10, 3, 4, 6, 4, 5, 9, 6, 10, 10, 2, 3, 3, 3, 4, 6, 3, 5, 4, 3, 4, 6, 4, 5, 10, 6, 9, 10, 3, 6, 4, 6, 10, 10, 4, 9, 5, 1, 1, 3, 1, 1, 3, 3, 4, 6, 1, 1, 3, 1, 1, 4, 3, 4, 6, 3, 4, 6, 4, 5, 9, 6, 10, 10, 1, 1, 4, 1, 1, 4, 4, 5, 10, 1, 1, 4, 1, 1, 4, 4, 5, 10, 4, 5, 10, 5, 6, 13, 10, 15, 20, 3, 3, 6, 3, 4, 6, 6, 8, 10, 3, 4, 6, 4, 5, 10, 6, 9, 10, 6, 9, 10, 9, 14, 16, 10, 17, 15, 2, 3, 3, 3, 4, 6, 3, 6, 4, 3, 4, 6, 4, 5, 10, 6, 10, 10, 3, 6, 4, 6, 10, 9, 4, 10, 5, 3, 4, 6, 4, 5, 9, 6, 10, 10, 4, 5, 10, 5, 6, 13, 10, 15, 20, 6, 10, 10, 10, 15, 17, 10, 20, 15, 3, 6, 4, 6, 10, 10, 4, 9, 5, 6, 10, 10, 10, 15, 20, 10, 18, 15, 4, 9, 5, 9, 16, 14, 5, 13, 6, 1, 1, 2, 1, 1, 3, 2, 3, 3, 1, 1, 3, 1, 1, 4, 3, 4, 6, 2, 3, 3, 3, 4, 6, 3, 6, 4, 1, 1, 3, 1, 1, 3, 3, 4, 6, 1, 1, 4, 1, 1, 4, 4, 5, 10, 3, 4, 6, 4, 5, 9, 6, 10, 10, 2, 3, 3, 3, 4, 6, 3, 5, 4, 3, 4, 6, 4, 5, 10, 6, 9, 10, 3, 6, 4, 6, 10, 10, 4, 9, 5, 1, 1, 3, 1, 1, 4, 3, 4, 6, 1, 1, 4, 1, 1, 5, 4, 4, 10, 3, 4, 6, 4, 5, 9, 6, 10, 10, 1, 1, 4, 1, 1, 4, 4, 5, 10, 1, 1, 4, 1, 1, 5, 4, 5, 10, 4, 5, 10, 5, 6, 13, 10, 15, 20, 3, 4, 6, 4, 5, 10, 6, 8, 10, 4, 5, 10, 5, 6, 15, 10, 13, 20, 6, 9, 10, 9, 14, 19, 10, 18, 15, 2, 3, 3, 3, 4, 6, 3, 6, 4, 3, 4, 6, 4, 5, 10, 6, 10, 10, 3, 6, 4, 6, 10, 9, 4, 10, 5, 3, 4, 6, 4, 5, 9, 6, 10, 10, 4, 5, 10, 5, 6, 14, 10, 15, 20, 6, 10, 10, 10, 15, 17, 10, 20, 15, 3, 6, 4, 6, 10, 10, 4, 9, 5, 6, 10, 10, 10, 15, 20, 10, 19, 15, 4, 9, 5, 9, 16, 14, 5, 14, 6, 2, 3, 3, 3, 4, 6, 3, 6, 4, 3, 4, 6, 4, 5, 10, 5, 9, 9, 3, 6, 4, 6, 10, 10, 4, 10, 5, 3, 4, 6, 4, 5, 8, 6, 10, 10, 4, 5, 10, 5, 6, 13, 9, 14, 19, 6, 10, 10, 10, 15, 18, 10, 20, 15, 3, 6, 4, 6, 10, 10, 4, 8, 5, 6, 10, 10, 10, 15, 20, 9, 15, 14, 4, 10, 5, 10, 20, 15, 5, 13, 6, 3, 4, 6, 4, 5, 9, 6, 10, 10, 4, 5, 9, 5, 6, 14, 8, 12, 15, 6, 10, 10, 10, 15, 19, 10, 20, 15, 4, 5, 10, 5, 6, 13, 10, 15, 20, 5, 6, 13, 6, 7, 18, 12, 18, 25, 10, 15, 20, 15, 21, 32, 20, 35, 35, 6, 9, 10, 9, 14, 16, 10, 17, 15, 9, 14, 16, 14, 20, 30, 15, 23, 24, 10, 19, 15, 19, 34, 31, 15, 31, 21, 3, 6, 4, 6, 10, 9, 4, 10, 5, 6, 10, 9, 10, 15, 16, 9, 19, 14, 4, 10, 5, 10, 20, 13, 5, 15, 6, 6, 10, 10, 10, 15, 17, 10, 20, 15, 10, 15, 19, 15, 21, 28, 19, 34, 34, 10, 20, 15, 20, 35, 30, 15, 35, 21, 4, 9, 5, 9, 16, 14, 5, 13, 6, 9, 16, 14, 16, 25, 30, 14, 27, 20, 5, 13, 6, 13, 26, 19, 6, 18, 7, 1, 1, 3, 1, 1, 4, 3, 4, 6, 1, 1, 4, 1, 1, 5, 4, 5, 10, 3, 4, 6, 4, 5, 10, 6, 10, 10, 1, 1, 4, 1, 1, 4, 4, 5, 10, 1, 1, 5, 1, 1, 5, 5, 6, 15, 4, 5, 10, 5, 6, 14, 10, 15, 20, 3, 4, 6, 4, 5, 10, 6, 9, 10, 4, 5, 10, 5, 6, 15, 10, 14, 20, 6, 10, 10, 10, 15, 20, 10, 19, 15, 1, 1, 4, 1, 1, 4, 4, 5, 10, 1, 1, 4, 1, 1, 5, 4, 5, 10, 4, 5, 10, 5, 6, 14, 10, 15, 20, 1, 1, 5, 1, 1, 5, 5, 6, 15, 1, 1, 5, 1, 1, 5, 5, 6, 15, 5, 6, 15, 6, 7, 19, 15, 21, 35, 4, 4, 10, 4, 5, 10, 10, 13, 20, 4, 5, 10, 5, 6, 15, 10, 14, 20, 10, 14, 20, 14, 20, 30, 20, 32, 35, 3, 4, 6, 4, 5, 10, 6, 10, 10, 4, 5, 10, 5, 6, 15, 10, 15, 20, 6, 10, 10, 10, 15, 19, 10, 20, 15, 4, 5, 10, 5, 6, 14, 10, 15, 20, 5, 6, 15, 6, 7, 19, 15, 21, 35, 10, 15, 20, 15, 21, 31, 20, 35, 35, 6, 10, 10, 10, 15, 20, 10, 19, 15, 10, 15, 20, 15, 21, 35, 20, 33, 35, 10, 19, 15, 19, 31, 34, 15, 32, 21, 1, 1, 3, 1, 1, 4, 3, 4, 6, 1, 1, 4, 1, 1, 5, 4, 5, 10, 3, 4, 6, 4, 5, 10, 6, 10, 10, 1, 1, 4, 1, 1, 4, 4, 5, 10, 1, 1, 5, 1, 1, 5, 5, 6, 15, 4, 5, 10, 5, 6, 14, 10, 15, 20, 3, 4, 6, 4, 5, 10, 6, 9, 10, 4, 5, 10, 5, 6, 15, 10, 14, 20, 6, 10, 10, 10, 15, 20, 10, 19, 15, 1, 1, 4, 1, 1, 4, 4, 5, 10, 1, 1, 4, 1, 1, 5, 4, 5, 10, 4, 5, 10, 5, 6, 14, 10, 15, 20, 1, 1, 5, 1, 1, 5, 5, 6, 15, 1, 1, 5, 1, 1, 5, 5, 6, 15, 5, 6, 15, 6, 7, 19, 15, 21, 35, 4, 4, 10, 4, 5, 10, 10, 13, 20, 4, 5, 10, 5, 6, 15, 10, 14, 20, 10, 14, 20, 14, 20, 30, 20, 32, 35, 3, 4, 6, 4, 5, 10, 6, 10, 10, 4, 5, 10, 5, 6, 15, 10, 15, 20, 6, 10, 10, 10, 15, 19, 10, 20, 15, 4, 5, 10, 5, 6, 14, 10, 15, 20, 5, 6, 15, 6, 7, 19, 15, 21, 35, 10, 15, 20, 15, 21, 31, 20, 35, 35, 6, 10, 10, 10, 15, 20, 10, 19, 15, 10, 15, 20, 15, 21, 35, 20, 33, 35, 10, 19, 15, 19, 31, 34, 15, 33, 21, 3, 4, 6, 4, 5, 10, 6, 10, 10, 4, 5, 10, 5, 6, 15, 9, 14, 19, 6, 10, 10, 10, 15, 20, 10, 20, 15, 4, 5, 10, 5, 6, 13, 10, 15, 20, 5, 6, 15, 6, 7, 19, 14, 20, 34, 10, 15, 20, 15, 21, 33, 20, 35, 35, 6, 10, 10, 10, 15, 20, 10, 18, 15, 10, 15, 20, 15, 21, 35, 19, 30, 34, 10, 20, 15, 20, 35, 35, 15, 33, 21, 4, 5, 10, 5, 6, 13, 10, 15, 20, 5, 6, 13, 6, 7, 19, 12, 18, 25, 10, 15, 20, 15, 21, 33, 20, 35, 35, 5, 6, 15, 6, 7, 18, 15, 21, 35, 6, 7, 19, 7, 8, 23, 18, 25, 44, 15, 21, 35, 21, 28, 51, 35, 56, 70, 10, 13, 20, 13, 19, 26, 20, 30, 35, 13, 19, 26, 19, 26, 45, 25, 39, 44, 20, 33, 35, 33, 54, 61, 35, 63, 56, 6, 10, 10, 10, 15, 19, 10, 20, 15, 10, 15, 19, 15, 21, 31, 19, 34, 34, 10, 20, 15, 20, 35, 33, 15, 35, 21, 10, 15, 20, 15, 21, 31, 20, 35, 35, 15, 21, 34, 21, 28, 48, 34, 55, 69, 20, 35, 35, 35, 56, 63, 35, 70, 56, 10, 19, 15, 19, 31, 34, 15, 32, 21, 19, 31, 34, 31, 46, 65, 34, 61, 55, 15, 33, 21, 33, 61, 54, 21, 51, 28, 2, 3, 3, 3, 4, 6, 3, 6, 4, 3, 4, 6, 4, 5, 10, 6, 10, 10, 3, 6, 4, 6, 10, 10, 4, 10, 5, 2, 3, 5, 3, 4, 6, 5, 9, 9, 3, 4, 9, 4, 5, 10, 9, 14, 19, 5, 9, 9, 9, 14, 16, 9, 19, 14, 3, 6, 4, 6, 10, 10, 4, 9, 5, 6, 10, 10, 10, 15, 20, 10, 19, 15, 4, 10, 5, 10, 20, 15, 5, 14, 6, 3, 3, 6, 3, 4, 6, 6, 9, 10, 3, 4, 6, 4, 5, 10, 6, 10, 10, 6, 9, 10, 9, 14, 16, 10, 19, 15, 3, 4, 9, 4, 5, 9, 9, 14, 19, 4, 5, 9, 5, 6, 14, 9, 14, 19, 9, 14, 19, 14, 20, 28, 19, 34, 34, 6, 6, 10, 6, 10, 10, 10, 15, 15, 6, 10, 10, 10, 15, 20, 10, 19, 15, 10, 16, 15, 16, 30, 25, 15, 29, 21, 3, 6, 4, 6, 10, 10, 4, 9, 5, 6, 10, 10, 10, 15, 20, 10, 19, 15, 4, 9, 5, 9, 16, 14, 5, 14, 6, 5, 9, 8, 9, 14, 14, 8, 15, 13, 9, 14, 18, 14, 20, 27, 18, 30, 33, 8, 15, 13, 15, 24, 25, 13, 29, 19, 4, 10, 5, 10, 20, 15, 5, 14, 6, 10, 20, 15, 20, 35, 35, 15, 33, 21, 5, 14, 6, 14, 30, 20, 6, 18, 7, 2, 3, 3, 3, 4, 6, 3, 6, 4, 3, 4, 6, 4, 5, 10, 6, 10, 10, 3, 6, 4, 6, 10, 10, 4, 10, 5, 3, 4, 6, 4, 5, 9, 6, 10, 10, 4, 5, 10, 5, 6, 14, 10, 15, 20, 6, 10, 10, 9, 14, 16, 10, 20, 15, 3, 6, 4, 6, 10, 10, 4, 9, 5, 6, 10, 10, 10, 15, 20, 10, 19, 15, 4, 10, 5, 10, 20, 15, 5, 14, 6, 3, 4, 6, 4, 5, 10, 6, 9, 10, 4, 5, 10, 5, 6, 15, 10, 14, 20, 6, 9, 10, 9, 14, 19, 10, 19, 15, 4, 5, 9, 5, 6, 13, 9, 14, 19, 5, 6, 14, 6, 7, 19, 14, 20, 30, 9, 14, 19, 14, 20, 28, 19, 34, 34, 6, 10, 10, 10, 15, 20, 10, 18, 15, 10, 15, 20, 15, 21, 35, 20, 32, 35, 10, 19, 15, 19, 34, 34, 15, 29, 21, 3, 6, 4, 6, 10, 10, 4, 9, 5, 6, 10, 10, 10, 15, 20, 10, 19, 15, 4, 9, 5, 9, 16, 14, 5, 14, 6, 6, 10, 9, 10, 15, 17, 9, 16, 14, 10, 15, 19, 15, 21, 31, 19, 31, 34, 9, 16, 14, 15, 24, 25, 14, 30, 20, 4, 10, 5, 10, 20, 15, 5, 14, 6, 10, 20, 15, 20, 35, 35, 15, 33, 21, 5, 14, 6, 14, 30, 20, 6, 18, 7, 3, 6, 4, 6, 10, 10, 4, 10, 5, 6, 10, 10, 10, 15, 20, 9, 19, 14, 4, 10, 5, 10, 20, 15, 5, 15, 6, 5, 9, 9, 9, 14, 15, 9, 19, 14, 9, 14, 19, 14, 20, 29, 18, 33, 33, 9, 19, 14, 19, 34, 30, 14, 34, 20, 4, 10, 5, 10, 20, 15, 5, 13, 6, 10, 20, 15, 20, 35, 35, 14, 29, 20, 5, 15, 6, 15, 35, 21, 6, 19, 7, 6, 9, 10, 9, 14, 16, 10, 19, 15, 9, 14, 16, 14, 20, 30, 15, 28, 24, 10, 19, 15, 19, 34, 31, 15, 34, 21, 9, 14, 19, 14, 20, 27, 19, 34, 34, 14, 20, 28, 20, 27, 47, 27, 47, 49, 19, 34, 34, 34, 55, 61, 34, 69, 55, 10, 16, 15, 16, 30, 25, 15, 28, 21, 16, 30, 25, 30, 50, 55, 24, 46, 35, 15, 31, 21, 31, 65, 46, 21, 48, 28, 4, 9, 5, 9, 16, 14, 5, 13, 6, 9, 16, 14, 16, 25, 30, 14, 28, 20, 5, 13, 6, 13, 26, 19, 6, 19, 7, 8, 15, 12, 15, 24, 23, 12, 25, 18, 15, 24, 28, 24, 35, 46, 27, 49, 47, 12, 25, 18, 25, 44, 39, 18, 44, 25, 5, 14, 6, 14, 30, 20, 6, 18, 7, 14, 30, 20, 30, 55, 50, 20, 47, 27, 6, 19, 7, 19, 45, 26, 7, 23, 8, 1, 2, 1, 2, 3, 3, 1, 3, 1, 2, 3, 3, 3, 4, 6, 3, 6, 4, 1, 3, 1, 3, 6, 4, 1, 4, 1, 2, 3, 3, 3, 4, 5, 3, 6, 4, 3, 4, 6, 4, 5, 9, 6, 10, 10, 3, 6, 4, 6, 10, 9, 4, 10, 5, 1, 3, 1, 3, 6, 4, 1, 3, 1, 3, 6, 4, 6, 10, 10, 4, 9, 5, 1, 4, 1, 4, 10, 5, 1, 4, 1, 2, 3, 3, 3, 4, 6, 3, 6, 4, 3, 4, 6, 4, 5, 10, 6, 9, 10, 3, 6, 4, 6, 10, 10, 4, 10, 5, 3, 4, 6, 4, 5, 9, 6, 10, 10, 4, 5, 9, 5, 6, 13, 9, 14, 16, 6, 10, 10, 10, 15, 18, 10, 20, 15, 3, 6, 4, 6, 10, 10, 4, 9, 5, 6, 10, 10, 10, 15, 20, 10, 17, 15, 4, 10, 5, 10, 20, 15, 5, 13, 6, 1, 3, 1, 3, 6, 4, 1, 3, 1, 3, 6, 4, 6, 10, 10, 4, 9, 5, 1, 3, 1, 3, 6, 4, 1, 4, 1, 3, 6, 3, 6, 10, 8, 3, 6, 4, 6, 10, 9, 10, 15, 17, 9, 16, 14, 3, 6, 4, 6, 10, 9, 4, 10, 5, 1, 4, 1, 4, 10, 5, 1, 4, 1, 4, 10, 5, 10, 20, 15, 5, 13, 6, 1, 4, 1, 4, 10, 5, 1, 4, 1, 2, 3, 3, 3, 4, 6, 3, 6, 4, 3, 4, 6, 4, 5, 10, 6, 10, 10, 3, 6, 4, 5, 9, 9, 4, 10, 5, 3, 4, 6, 4, 5, 8, 6, 10, 10, 4, 5, 10, 5, 6, 13, 10, 15, 20, 6, 10, 10, 9, 14, 15, 10, 20, 15, 3, 6, 4, 6, 10, 10, 4, 8, 5, 6, 10, 10, 10, 15, 20, 10, 18, 15, 4, 10, 5, 9, 19, 14, 5, 13, 6, 3, 4, 6, 4, 5, 10, 6, 9, 10, 4, 5, 10, 5, 6, 15, 10, 13, 20, 6, 9, 10, 9, 14, 19, 10, 16, 15, 4, 5, 9, 5, 6, 13, 9, 14, 16, 5, 6, 13, 6, 7, 18, 13, 19, 26, 9, 14, 16, 14, 20, 27, 16, 30, 25, 6, 10, 10, 10, 15, 20, 10, 17, 15, 10, 15, 20, 15, 21, 35, 20, 30, 35, 10, 19, 15, 19, 34, 34, 15, 28, 21, 3, 6, 4, 6, 10, 10, 4, 9, 5, 6, 10, 10, 10, 15, 20, 10, 19, 15, 4, 9, 5, 8, 15, 12, 5, 14, 6, 6, 10, 9, 10, 15, 17, 9, 16, 14, 10, 15, 19, 15, 21, 31, 19, 31, 34, 9, 16, 14, 15, 24, 23, 14, 30, 20, 4, 10, 5, 10, 20, 15, 5, 13, 6, 10, 20, 15, 20, 35, 35, 15, 32, 21, 5, 13, 6, 12, 25, 18, 6, 18, 7, 1, 2, 1, 2, 3, 3, 1, 3, 1, 2, 3, 3, 3, 4, 6, 3, 6, 4, 1, 3, 1, 3, 6, 4, 1, 4, 1, 2, 3, 3, 3, 4, 5, 3, 6, 4, 3, 4, 6, 4, 5, 9, 6, 10, 10, 3, 6, 4, 6, 10, 9, 4, 10, 5, 1, 3, 1, 3, 6, 4, 1, 3, 1, 3, 6, 4, 6, 10, 10, 4, 9, 5, 1, 4, 1, 4, 10, 5, 1, 4, 1, 2, 3, 3, 3, 4, 6, 3, 6, 4, 3, 4, 6, 4, 5, 10, 6, 9, 10, 3, 6, 4, 6, 10, 10, 4, 10, 5, 3, 4, 6, 4, 5, 9, 6, 10, 10, 4, 5, 9, 5, 6, 14, 9, 14, 16, 6, 10, 10, 10, 15, 19, 10, 20, 15, 3, 6, 4, 6, 10, 10, 4, 9, 5, 6, 10, 10, 10, 15, 20, 10, 17, 15, 4, 10, 5, 10, 20, 15, 5, 14, 6, 1, 3, 1, 3, 6, 4, 1, 4, 1, 3, 6, 4, 6, 10, 10, 4, 9, 5, 1, 4, 1, 4, 10, 4, 1, 5, 1, 3, 6, 4, 6, 10, 8, 4, 10, 5, 6, 10, 9, 10, 15, 18, 9, 19, 14, 4, 10, 5, 10, 20, 13, 5, 15, 6, 1, 4, 1, 4, 10, 5, 1, 4, 1, 4, 10, 5, 10, 20, 15, 5, 13, 6, 1, 4, 1, 4, 10, 5, 1, 5, 1, 2, 3, 3, 3, 4, 6, 3, 6, 4, 3, 4, 6, 4, 5, 10, 6, 10, 10, 3, 6, 4, 6, 10, 10, 4, 10, 5, 3, 4, 6, 4, 5, 9, 6, 10, 10, 4, 5, 10, 5, 6, 14, 10, 15, 20, 6, 10, 10, 10, 15, 19, 10, 20, 15, 2, 5, 3, 5, 9, 9, 3, 6, 4, 5, 9, 9, 9, 14, 19, 9, 16, 14, 3, 9, 4, 9, 19, 14, 4, 10, 5, 3, 4, 6, 4, 5, 9, 6, 10, 10, 4, 5, 9, 5, 6, 14, 9, 14, 16, 6, 10, 10, 10, 15, 19, 10, 20, 15, 4, 5, 10, 5, 6, 14, 10, 15, 20, 5, 6, 14, 6, 7, 18, 14, 20, 30, 10, 15, 20, 15, 21, 33, 20, 35, 35, 5, 8, 9, 8, 13, 15, 9, 14, 14, 8, 13, 15, 13, 19, 29, 15, 25, 24, 9, 18, 14, 18, 33, 30, 14, 27, 20, 3, 6, 3, 6, 10, 9, 3, 6, 4, 6, 10, 9, 10, 15, 19, 9, 16, 14, 3, 6, 4, 6, 10, 10, 4, 10, 5, 6, 10, 6, 10, 15, 15, 6, 10, 10, 10, 15, 16, 15, 21, 29, 16, 25, 30, 6, 10, 10, 10, 15, 19, 10, 20, 15, 3, 9, 4, 9, 19, 14, 4, 9, 5, 9, 19, 14, 19, 34, 34, 14, 28, 20, 4, 9, 5, 9, 19, 14, 5, 14, 6, 3, 4, 6, 4, 5, 10, 6, 10, 10, 4, 5, 10, 5, 6, 15, 10, 15, 20, 6, 10, 10, 9, 14, 19, 10, 20, 15, 4, 5, 10, 5, 6, 13, 10, 15, 20, 5, 6, 15, 6, 7, 19, 15, 21, 35, 10, 15, 20, 14, 20, 29, 20, 35, 35, 5, 9, 9, 9, 14, 19, 9, 15, 14, 9, 14, 19, 14, 20, 34, 19, 30, 34, 9, 19, 14, 18, 33, 33, 14, 29, 20, 4, 5, 9, 5, 6, 13, 9, 14, 16, 5, 6, 13, 6, 7, 19, 13, 19, 26, 9, 14, 16, 14, 20, 28, 16, 30, 25, 5, 6, 14, 6, 7, 18, 14, 20, 30, 6, 7, 19, 7, 8, 23, 19, 26, 45, 14, 20, 30, 20, 27, 47, 30, 50, 55, 8, 12, 15, 12, 18, 25, 15, 23, 24, 12, 18, 25, 18, 25, 44, 25, 39, 44, 15, 28, 24, 27, 47, 49, 24, 46, 35, 6, 10, 9, 10, 15, 19, 9, 16, 14, 10, 15, 19, 15, 21, 34, 19, 31, 34, 9, 16, 14, 15, 24, 28, 14, 30, 20, 10, 15, 16, 15, 21, 28, 16, 25, 30, 15, 21, 31, 21, 28, 48, 31, 46, 65, 16, 25, 30, 24, 35, 46, 30, 55, 50, 9, 19, 14, 19, 34, 34, 14, 27, 20, 19, 34, 34, 34, 55, 69, 34, 61, 55, 14, 28, 20, 27, 49, 47, 20, 47, 27, 2, 3, 3, 3, 4, 6, 3, 6, 4, 3, 4, 6, 4, 5, 10, 6, 10, 10, 3, 6, 4, 6, 10, 10, 4, 10, 5, 3, 4, 6, 4, 5, 9, 6, 10, 10, 4, 5, 10, 5, 6, 14, 10, 15, 20, 6, 10, 10, 10, 15, 19, 10, 20, 15, 3, 6, 4, 6, 10, 10, 4, 9, 5, 6, 10, 10, 10, 15, 20, 9, 16, 14, 4, 10, 5, 10, 20, 15, 5, 14, 6, 3, 4, 6, 4, 5, 9, 6, 10, 10, 4, 5, 9, 5, 6, 14, 9, 14, 16, 6, 10, 10, 10, 15, 19, 10, 20, 15, 4, 5, 10, 5, 6, 14, 10, 15, 20, 5, 6, 14, 6, 7, 18, 14, 20, 30, 10, 15, 20, 15, 21, 33, 20, 35, 35, 6, 9, 10, 9, 14, 16, 10, 17, 15, 9, 14, 16, 14, 20, 30, 15, 25, 24, 10, 19, 15, 19, 34, 31, 15, 31, 21, 3, 6, 4, 6, 10, 9, 4, 10, 5, 6, 10, 9, 10, 15, 19, 9, 19, 14, 4, 10, 5, 10, 20, 14, 5, 15, 6, 6, 10, 10, 10, 15, 18, 10, 20, 15, 10, 15, 19, 15, 21, 29, 19, 34, 34, 10, 20, 15, 20, 35, 32, 15, 35, 21, 4, 9, 5, 9, 19, 14, 5, 13, 6, 9, 19, 14, 19, 34, 34, 14, 28, 20, 5, 14, 6, 14, 30, 20, 6, 19, 7, 1, 3, 1, 3, 6, 4, 1, 4, 1, 3, 6, 4, 6, 10, 10, 4, 10, 5, 1, 4, 1, 4, 10, 5, 1, 5, 1, 3, 6, 4, 6, 10, 9, 4, 10, 5, 6, 10, 10, 10, 15, 19, 10, 20, 15, 4, 10, 5, 10, 20, 14, 5, 15, 6, 1, 4, 1, 4, 10, 5, 1, 4, 1, 4, 10, 5, 10, 20, 15, 5, 14, 6, 1, 5, 1, 5, 15, 6, 1, 5, 1, 3, 6, 4, 6, 10, 10, 4, 10, 5, 6, 10, 10, 10, 15, 20, 10, 19, 15, 4, 10, 5, 10, 20, 15, 5, 15, 6, 6, 10, 10, 10, 15, 19, 10, 20, 15, 10, 15, 19, 15, 21, 32, 19, 34, 31, 10, 20, 15, 20, 35, 33, 15, 35, 21, 4, 10, 5, 10, 20, 15, 5, 14, 6, 10, 20, 15, 20, 35, 35, 15, 31, 21, 5, 15, 6, 15, 35, 21, 6, 19, 7, 1, 4, 1, 4, 10, 5, 1, 4, 1, 4, 10, 5, 10, 20, 15, 5, 14, 6, 1, 4, 1, 4, 10, 5, 1, 5, 1, 4, 10, 4, 10, 20, 13, 4, 10, 5, 10, 20, 14, 20, 35, 32, 14, 30, 20, 4, 10, 5, 10, 20, 14, 5, 15, 6, 1, 5, 1, 5, 15, 6, 1, 5, 1, 5, 15, 6, 15, 35, 21, 6, 19, 7, 1, 5, 1, 5, 15, 6, 1, 5, 1, 3, 6, 4, 6, 10, 10, 4, 10, 5, 6, 10, 10, 10, 15, 20, 10, 20, 15, 4, 10, 5, 9, 19, 14, 5, 15, 6, 6, 10, 10, 10, 15, 18, 10, 20, 15, 10, 15, 20, 15, 21, 33, 20, 35, 35, 10, 20, 15, 19, 34, 30, 15, 35, 21, 4, 10, 5, 10, 20, 15, 5, 13, 6, 10, 20, 15, 20, 35, 35, 15, 33, 21, 5, 15, 6, 14, 34, 20, 6, 19, 7, 6, 10, 10, 10, 15, 20, 10, 19, 15, 10, 15, 20, 15, 21, 35, 20, 33, 35, 10, 19, 15, 19, 34, 34, 15, 31, 21, 10, 15, 19, 15, 21, 32, 19, 34, 31, 15, 21, 33, 21, 28, 51, 33, 54, 61, 19, 34, 31, 34, 55, 61, 31, 65, 46, 10, 20, 15, 20, 35, 35, 15, 31, 21, 20, 35, 35, 35, 56, 70, 35, 63, 56, 15, 34, 21, 34, 69, 55, 21, 48, 28, 4, 10, 5, 10, 20, 15, 5, 13, 6, 10, 20, 15, 20, 35, 35, 15, 33, 21, 5, 13, 6, 12, 25, 18, 6, 19, 7, 10, 20, 13, 20, 35, 30, 13, 26, 19, 20, 35, 33, 35, 56, 63, 33, 61, 54, 13, 26, 19, 25, 44, 39, 19, 45, 26, 5, 15, 6, 15, 35, 21, 6, 18, 7, 15, 35, 21, 35, 70, 56, 21, 51, 28, 6, 19, 7, 18, 44, 25, 7, 23, 8, 1, 3, 1, 3, 6, 4, 1, 4, 1, 3, 6, 4, 6, 10, 10, 4, 10, 5, 1, 4, 1, 4, 10, 5, 1, 5, 1, 3, 6, 4, 6, 10, 9, 4, 10, 5, 6, 10, 10, 10, 15, 19, 10, 20, 15, 4, 10, 5, 10, 20, 14, 5, 15, 6, 1, 4, 1, 4, 10, 5, 1, 4, 1, 4, 10, 5, 10, 20, 15, 5, 14, 6, 1, 5, 1, 5, 15, 6, 1, 5, 1, 3, 6, 4, 6, 10, 10, 4, 10, 5, 6, 10, 10, 10, 15, 20, 10, 19, 15, 4, 10, 5, 10, 20, 15, 5, 15, 6, 6, 10, 10, 10, 15, 19, 10, 20, 15, 10, 15, 19, 15, 21, 33, 19, 34, 31, 10, 20, 15, 20, 35, 33, 15, 35, 21, 4, 10, 5, 10, 20, 15, 5, 14, 6, 10, 20, 15, 20, 35, 35, 15, 31, 21, 5, 15, 6, 15, 35, 21, 6, 19, 7, 1, 4, 1, 4, 10, 5, 1, 4, 1, 4, 10, 5, 10, 20, 15, 5, 14, 6, 1, 4, 1, 4, 10, 5, 1, 5, 1, 4, 10, 4, 10, 20, 13, 4, 10, 5, 10, 20, 14, 20, 35, 32, 14, 30, 20, 4, 10, 5, 10, 20, 14, 5, 15, 6, 1, 5, 1, 5, 15, 6, 1, 5, 1, 5, 15, 6, 15, 35, 21, 6, 19, 7, 1, 5, 1, 5, 15, 6, 1, 5, 1, 1};
int kind;
void function(char *a){
for(int i = 0; i < 3; i++){
kind *= 3;
if(a[i]=='B') kind += 2;
if(a[i]=='G') kind += 1;
}
}
int main()
{
int cases = 1;
char a[10], b[10], c[10];
while(cin >> a){
cin >> b;
cin >> c;
kind = 0;
function(a);
function(b);
function(c);
cout << "Case "<< cases++ << ": "<< ans[kind] << endl;
}
return 0;
}