#dice[shaft][side]=>next_side Hidari Mawari
@dice=[[],[0,1,3,5,2,4,6],[0,4,2,1,6,5,3],[0,2,6,3,4,1,5],[0,5,1,3,4,6,2],[0,3,2,6,1,5,4],[0,1,4,2,5,3,6]]

def move(t,f,roll)
  shaft=nil
  case roll
  when [1,0]
    shaft=f
  when [-1,0]
    shaft=7-f
  when [0,1]
    shaft=@dice[7-t][f]
  when [0,-1]
    shaft=@dice[t][f]
  end
  [@dice[shaft][t],@dice[shaft][f]]
end

def get_can_roll(t,f,pos,board)
  front=f
  sides=[]
  return nil if pos[0]==0
  [[-1,1,0],[-1,0,-1],[-1,-1,0],[-1,0,1]].each{|i|
    new_pos=[]
    new_pos[0]=pos[0]+i[0];new_pos[1]=pos[1]+i[1];new_pos[2]=pos[2]+i[2]
    if !board.key?(new_pos)
      sides<<[@dice[t][front],i]
    end
    #p "t:",t,"front:",front
    front=@dice[t][front]
  }
  #p sides
  roll=sides.select{|i| i[0]>3}.sort_by{|i| i[0]}[-1]
  if roll
    roll[1]
  else
    nil
  end
end


loop do
  n=gets.to_i
  break if n==0

  board={} #[h,x,y]=>n (n is 1 indexed,none = nil)
  max_h = 0
  n.times do
    t,f=gets.split.map(&:to_i)
    now_pos=[0,0,0]
    while board.key?(now_pos)
      now_pos[0]+=1
      max_h=now_pos[0]
    end

    loop do
      roll = get_can_roll(t,f,now_pos,board) #[1,0],[0,-1]etc...
      if roll
        t,f=move(t,f,roll[1..-1])
        #puts "roll to ",roll.inspect
        now_pos[0]+=roll[0];now_pos[1]+=roll[1];now_pos[2]+=roll[2]
      else
        board[now_pos]=t
        break
      end
    end
  end
  print_b={}
  #p board.to_a
  board.to_a.sort_by{|i| i[0][0]}.reverse.each{|i|
    pos=i[0][1..-1]
    print_b[pos]=i[1] unless print_b.key? pos
  }
  sum=[0,0,0,0,0,0]
  print_b.each{|k,v|
    sum[v-1]+=1
  }
  puts sum.join(" ")
end