Chef likes trees a lot. Today he has an infinte full binary tree (each node has exactly two childs) with special properties.
Chef's tree has the following special properties :

Each node of the tree is either colored red or black.
Root of the tree is black intially.
Both childs of a red colored node are black and both childs of a black colored node are red.


The root of the tree is labelled as 1. For a node labelled v, it's left child is labelled as 2*v and it's right child is labelled as 2*v+1.


Chef wants to fulfill Q queries on this tree. Each query belongs to any of the following three types:


Qi 	   Change color of all red colored nodes to black and all black colored nodes to red.
Qb x y  Count the number of black colored nodes on the path from node x to node y (both inclusive).
Qr x y  Count the number of red colored nodes on the path from node x to node y (both inclusive).

Help chef accomplishing this task.

Input
First line of the input contains an integer Q denoting the number of queries. Next Q lines of the input contain Q queries (one per line). Each query belongs to one of the three types mentioned above.

Output
For each query of type Qb or Qr, print the required answer.

Constraints


1<=Q<=10^5


1<=x,y<=10^9



Sample Input
5
Qb 4 5
Qr 4 5
Qi
Qb 4 5
Qr 4 5

Sample Output
2
1
1
2

Explanation
With the initial configuration of the tree, Path from node 4 to node 5 is 4->2->5 and color of nodes on the path is B->R->B.  

Number of black nodes are 2.
Number of red nodes are 1. 

After Query Qi, New configuration of the path from node 4 to node 5 is R->B->R.

Number of black nodes are 1.
Number of red nodes are 2. 


Scoring

 Subtask #1: 1<=Q<=100  1<=x,y<=1000   	         	                        : 27 pts
 Subtask #2: 1<=Q<=10^3  1<=x,y<=10^5       :  25 pts

 Subtask #3: 1<=Q<=10^5  1<=x,y<=10^9       :  48 pts
from sys import stdin
from math import log
def printBS(li):
 print " ".join([str(x) for x in li])
def listInput():
 return map(int,stdin.readline().split())
def lcaP(a,b):
 if a==b: return a
 parents=set([])
 while a!=0:
  parents.add(a)
  a/=2
 while b!=0:
  if b in parents:
   return b
  b/=2
 return 1
#returns whether node black or red,blackcount,red count pair
def calc(node,rootBlack):
 if node==0: return (0,0,0)
 if node==1: level=1
 else: level=int(log(node,2))+1
 if level%2:
  if rootBlack:
   return (True,(level+1)/2,level/2)
  else: return (False,level/2,(level+1)/2)
 return (not rootBlack,level/2,level/2)
n=input()
blackRoot=True
for i in xrange(n):
 q=stdin.readline().split()
 if q[0]=="Qi":
  blackRoot=not blackRoot
 else: 
  a=int(q[1])
  b=int(q[2])
  ad=calc(a,blackRoot)
  bd=calc(b,blackRoot)
  lcan=lcaP(a,b)
  if q[0]=="Qb":
   print ad[1]+bd[1]-calc(lcan,blackRoot)[1]-calc(lcan/2,blackRoot)[1]
  else:
   print ad[2]+bd[2]-calc(lcan,blackRoot)[2]-calc(lcan/2,blackRoot)[2]