// ACM-ICPC国内予選2012 C. 偏りのあるサイコロ #include #include using namespace std; int dx[] = {-1, 0, 1, 0}; int dy[] = {0, -1, 0, 1}; int side[6][6] = { {0, 3, 5, 2, 4, 0}, {4, 0, 1, 6, 0, 3}, {2, 6, 0, 0, 1, 5}, {5, 1, 0, 0, 6, 2}, {3, 0, 6, 1, 0, 4}, {0, 4, 2, 5, 3, 0} }; int main(){ int n; int height[300][300]; int top[300][300]; while(cin >> n, n){ memset(height, 0, sizeof(height)); memset(top, 0, sizeof(top)); int t, f; cin >> t >> f; top[150][150] = t; height[150][150] = 1; for(int i=1;i> t >> f; int dice[6]; dice[0] = f; dice[2] = 7-f; dice[4] = t; dice[5] = 7-t; dice[1] = side[t-1][f-1]; dice[3] = 7-dice[1]; int x = 150, y = 150; while(true){ int dir = -1; for(int j=0;j<4;j++){ if(dice[j] >= 4 && (dir == -1 || dice[j] > dice[dir]) && height[x][y] > height[x+dx[j]][y+dy[j]]){ dir = j; } } if(dir == -1){ height[x][y]++; top[x][y] = dice[4]; break; } x += dx[dir]; y += dy[dir]; int tmp = dice[dir]; dice[dir] = dice[4]; dice[4] = dice[(dir+2)%4]; dice[(dir+2)%4] = dice[5]; dice[5] = tmp; } } int res[6] = {0, 0, 0, 0, 0, 0}; for(int i=0;i<300;i++) for(int j=0;j<300;j++) if(top[i][j] != 0) res[top[i][j]-1]++; cout << res[0]; for(int i=1;i<6;i++) cout << " " << res[i]; cout << endl; } }