#include <iostream>

using namespace std;

int n, d[6][100];

int r[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}
};

//0:??? 1:??? 2:??? 3:??? 4:??? 5:???

int dx[4] = {0, 0, -1, 1};
int dy[4] = {-1, 1, 0, 0};

int main(){
    while(true){
        cin >> n;
        if(n == 0) break;
        int map[200][200] = { 0 };
        int value[200][200] = { 0 };
        for(int i = 0; i < n; ++i){
            cin >> d[4][i] >> d[0][i];
            d[1][i] = 7 - d[0][i];
            d[5][i] = 7 - d[4][i];
            d[3][i] = r[d[4][i] - 1][d[0][i] - 1];
            d[2][i] = 7 - d[3][i];
        }
        
        for(int i = 0; i < n; ++i){
            int map1 = 100, map2 = 100;
            while(true){
                int d4, d5, d6;
                for(int j = 0; j < 6; ++j){
                    if(d[j][i] == 4) d4 = j;
                    if(d[j][i] == 5) d5 = j;       
                    if(d[j][i] == 6) d6 = j;
                }
                if((d6 != 4 && d6 != 5) && map[map1][map2] > map[map1 + dx[d6]][map2 + dy[d6]]){
                    map1 = map1 + dx[d6];
                    map2 = map2 + dy[d6];
                    if(d6 == 0){
                        int c1 = d[0][i];
                        int c2 = d[1][i];
                        d[0][i] = d[4][i];
                        d[1][i] = d[5][i];
                        d[4][i] = c2;
                        d[5][i] = c1;
                    }
                    if(d6 == 1){
                        int c1 = d[0][i];
                        int c2 = d[1][i];
                        d[0][i] = d[5][i];
                        d[1][i] = d[4][i];
                        d[4][i] = c1;
                        d[5][i] = c2;
                    }
                    if(d6 == 2){
                        int c1 = d[2][i];
                        int c2 = d[3][i];
                        d[2][i] = d[4][i];
                        d[3][i] = d[5][i];
                        d[4][i] = c2;
                        d[5][i] = c1;
                    }
                    if(d6 == 3){
                        int c1 = d[2][i];
                        int c2 = d[3][i];
                        d[2][i] = d[5][i];
                        d[3][i] = d[4][i];
                        d[4][i] = c1;
                        d[5][i] = c2;
                    }
                }
                else if((d5 != 4 && d5 != 5) && map[map1][map2] > map[map1 + dx[d5]][map2 + dy[d5]]){
                    map1 = map1 + dx[d5];
                    map2 = map2 + dy[d5];
                    if(d5 == 0){
                        int c1 = d[0][i];
                        int c2 = d[1][i];
                        d[0][i] = d[4][i];
                        d[1][i] = d[5][i];
                        d[4][i] = c2;
                        d[5][i] = c1;
                    }
                    if(d5 == 1){
                        int c1 = d[0][i];
                        int c2 = d[1][i];
                        d[0][i] = d[5][i];
                        d[1][i] = d[4][i];
                        d[4][i] = c1;
                        d[5][i] = c2;
                    }
                    if(d5 == 2){
                        int c1 = d[2][i];
                        int c2 = d[3][i];
                        d[2][i] = d[4][i];
                        d[3][i] = d[5][i];
                        d[4][i] = c2;
                        d[5][i] = c1;
                    }
                    if(d5 == 3){
                        int c1 = d[2][i];
                        int c2 = d[3][i];
                        d[2][i] = d[5][i];
                        d[3][i] = d[4][i];
                        d[4][i] = c1;
                        d[5][i] = c2;
                    }
                }
                else if((d4 != 4 && d4 != 5) && map[map1][map2] > map[map1 + dx[d4]][map2 + dy[d4]]){
                    map1 = map1 + dx[d4];
                    map2 = map2 + dy[d4];
                    if(d4 == 0){
                        int c1 = d[0][i];
                        int c2 = d[1][i];
                        d[0][i] = d[4][i];
                        d[1][i] = d[5][i];
                        d[4][i] = c2;
                        d[5][i] = c1;
                    }
                    if(d4 == 1){
                        int c1 = d[0][i];
                        int c2 = d[1][i];
                        d[0][i] = d[5][i];
                        d[1][i] = d[4][i];
                        d[4][i] = c1;
                        d[5][i] = c2;
                    }
                    if(d4 == 2){
                        int c1 = d[2][i];
                        int c2 = d[3][i];
                        d[2][i] = d[4][i];
                        d[3][i] = d[5][i];
                        d[4][i] = c2;
                        d[5][i] = c1;
                    }
                    if(d4 == 3){
                        int c1 = d[2][i];
                        int c2 = d[3][i];
                        d[2][i] = d[5][i];
                        d[3][i] = d[4][i];
                        d[4][i] = c1;
                        d[5][i] = c2;
                    }
                }
                else break;
            }
            map[map1][map2]++;
            value[map1][map2] = d[4][i];
        }

        int ans[6] = { 0 };
        for(int i = 0; i < 200; ++i){
            for(int j = 0; j < 200; ++j){
                ans[value[i][j] - 1]++;
            }
        }

        for(int i = 0; i < 6; ++i){
            cout << ans[i];
            if(i < 5) cout << " ";
        }
        cout << endl;
    }

    return 0;
}

Measured memory_bytes: 3384