#include<iostream>
#include<vector>

using namespace std;

#define rep(i, n) for(int i = 0; i < (int)n; ++i)

typedef vector<int> Dice;

enum {TOP, FRONT, RIGHT, LEFT, BACK, BOTTOM};
#define rotate_swap(x, a, b, c, d) swap(x[a], x[b]); swap(x[b], x[c]); swap(x[c], x[d]);

void rotate_r(Dice &dice) {rotate_swap(dice, TOP, LEFT, BOTTOM, RIGHT);}
void rotate_l(Dice &dice) {rotate_swap(dice, TOP, RIGHT, BOTTOM, LEFT);}
void rotate_f(Dice &dice) {rotate_swap(dice, TOP, BACK, BOTTOM, FRONT);}
void rotate_b(Dice &dice) {rotate_swap(dice, TOP, FRONT, BOTTOM, BACK);}
void rotate_w(Dice &dice) {rotate_swap(dice, BACK, LEFT, FRONT, RIGHT);}
void rotate_c(Dice &dice) {rotate_swap(dice, BACK, RIGHT, FRONT, LEFT);}

vector<Dice> generate_all(Dice dice) {
  vector<Dice> res;
  rep(i, 6){
    rep(j, 4){
      res.push_back(dice);
      rotate_w(dice);
    }
    if (i % 2 == 0) rotate_r(dice);
    else rotate_f(dice);
  }
  return res;
}

int board[201][201][2];

int main() {
  Dice ini(6);
  rep (i, 6) ini[i] = i;
  vector<Dice> all = generate_all(ini);
  while (true) {
    int n;
    cin >> n;
    if (n == 0) break;
    rep (i, 201) rep (j, 201) board[i][j][0] = 0;
    rep (i, n) {
      int t, f;
      cin >> t >> f;
      Dice dice;
      rep (j, 24) if (all[j][TOP] == t - 1 && all[j][FRONT] == f - 1) {
	dice = all[j];
	break;
      }
      int x = 100, y = 100;
      while (true) {
	pair<int, int> r = make_pair(-1, -1);
	if (dice[FRONT] > 2 && board[x][y + 1][0] < board[x][y][0]) {
	  if (r.first < dice[FRONT]) r = make_pair(dice[FRONT], (int)FRONT);
	}
	if (dice[RIGHT] > 2 && board[x + 1][y][0] < board[x][y][0]) {
	  if (r.first < dice[RIGHT]) r = make_pair(dice[RIGHT], (int)RIGHT);
	}
	if (dice[LEFT] > 2 && board[x - 1][y][0] < board[x][y][0]) {
	  if (r.first < dice[LEFT]) r = make_pair(dice[LEFT], (int)LEFT);
	}
	if (dice[BACK] > 2 && board[x][y - 1][0] < board[x][y][0]) {
	  if (r.first < dice[BACK]) r = make_pair(dice[BACK], (int)BACK);
	}
	if (r.first == -1) break;
	if (r.second == FRONT) {
	  ++y;
	  rotate_f(dice);
	} else if (r.second == RIGHT) {
	  ++x;
	  rotate_r(dice);
	} else if (r.second == LEFT) {
	  --x;
	  rotate_l(dice);
	} else {
	  --y;
	  rotate_b(dice);
	}
      }
      ++board[x][y][0];
      board[x][y][1] = dice[TOP];
    }
    int res[6] = {};
    rep (i, 201) rep (j, 201) if (board[i][j][0] > 0) ++res[board[i][j][1]];
    rep (i, 6) {
      if (i > 0) cout << " ";
      cout << res[i];
    }
    cout << endl;
  }
  return 0;
}