A Famous Airport Manager(dfs + 打表)

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


Problem Description
Mr. B is an airport manager. One day after lunch he looked out of his office and found that the color of each plane in the airport is either blue or green. Before supper he looked the airport again, and found that no plane is in the airport now. He couldn't remember the order in which the planes took off, but he knew between his two observations no plane had arrived at the airport. In addition, while one plane is setting its way to the takeoff area, the remaining planes must stay at their own position and not move. In other words, considering the planes taking off in a specific order, the first plane will move while others stay at their own position. After the first plane took off, the second plane could move to the takeoff area and so on, until all the planes gone. Now he wants you to find out the number of different possible color sequences he might see, if he watched at the takeoff area during the whole afternoon.

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.
 

Input
Each test case contains 3 lines, each of which contains 3 characters '*', 'B', 'G', denoting that the corresponding area is currently vacant, occupied by a blue plane, or occupied by a green plane, respectively. The first character of the first row is always a '*'. There is at least one place in the apron.

There are about 30,000 test cases. Be careful!
 

Output
For each test case, display a single line containing the case number and the number of different possible color sequences Mr. B might see.
 

Sample Input
  
  
*BB BBB BBB *GB BBB BBB
 

Sample Output
  
  
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;
}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值