#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <sstream>
using namespace std;

#define rep(i,x,y) for(int (i)=(x);(i)<(y);(i)++)

int deast[7][7] = {
  {0, 0, 0, 0, 0, 0, 0},
  {0, 0, 3, 5, 2, 4, 0},
  {0, 4, 0, 1, 6, 0, 3},
  {0, 2, 6, 0, 0, 1, 5},
  {0, 5, 1, 0, 0, 6, 2},
  {0, 3, 0, 6, 1, 0, 4},
  {0, 0, 4, 2, 5, 3, 0}
};

enum sf{
  top, south, east, north, west, bottom
};

void oneflip(int *m, int t, int s, int e, int n, int w, int b){
  m[0] = t; m[1] = s; m[2] = e;
  m[3] = n; m[4] = w; m[5] = b;
}

struct dice_t{
  int men[6];

  dice_t(int t,int f){
    men[0]=t;
    men[1]=f;
    men[2]=deast[t][f];
    men[3]=7-f;
    men[4]=7-men[2];
    men[5]=7-t;
  }

  void flip(int r){
    switch(r){
      case 0://south
      oneflip(men, men[north], men[top], men[east],
              men[bottom], men[west], men[south]);
      break;
      case 1://east
      oneflip(men, men[west], men[south], men[top],
              men[north], men[bottom], men[east]);
      break;
      case 2://north
      oneflip(men, men[south], men[bottom], men[east],
              men[top], men[west], men[north]);
      break;
      case 3://west
      oneflip(men, men[east], men[south], men[bottom],
              men[north], men[top], men[west]);
      break;
    }
  }
};

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

void solve(int n) {
  std::vector<dice_t> vs[300][300];
  const int geta=150;
  rep(i,0,n){
    int t,f;
    cin >> t >> f;
    dice_t d(t,f);
    int x=geta,y=geta;
    while(true){
      bool f=false;
      for(int i=6; i>=4; --i){
          if(f) break;
          rep(j,1,5){
            if(d.men[j]!=i) continue;
            int nx=x+dx[j-1],ny=y+dy[j-1];
            if(vs[x][y].size()<=vs[nx][ny].size()) continue;
            d.flip(j-1);
            x=nx;
            y=ny;
            f=true;
            break;
        }
      }
      if(!f){
        vs[x][y].push_back(d);
        break;
      }
    }
  }
  int ans[7]={};
  rep(x,0,300) rep(y,0,300){
    if(!vs[x][y].size()) continue;
    ++ans[vs[x][y].back().men[0]];
  }
  rep(i,1,7) cout << ans[i] << (i==6?"\n":" ");
}

int main(){
  while (true) {
    int n;
    cin >> n;
    if(!n) break;
    solve(n);
  }
}