유리수 수열

각 노드 p/q의 왼쪽 자식이 p/(p+q), 오른쪽 자식이 (p+q)/q인 이진 트리를 너비 우선으로 읽을 때, 주어진 p/q가 몇 번째인지 구한다.

보통4수학정수론트리구현면접 대비아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

무한히 많은 노드로 이루어진 이진 트리의 각 노드에 다음 규칙으로 유리수를 붙인다.

  • 루트의 값은 1/11/1이다.
  • 어떤 노드의 값이 p/qp/q이면 왼쪽 자식의 값은 p/(p+q)p/(p+q), 오른쪽 자식의 값은 (p+q)/q(p+q)/q이다.

이 트리를 너비 우선으로 방문하되 같은 깊이에서는 왼쪽부터 오른쪽으로 방문해서 유리수 수열 a1,a2,a3,a_1, a_2, a_3, \dots를 만든다. 그러면 a1=1/1a_1 = 1/1, a2=1/2a_2 = 1/2, a3=2/1a_3 = 2/1, a4=1/3a_4 = 1/3, a5=3/2a_5 = 3/2가 된다.

ppqq가 주어지면 an=p/qa_n = p/q인 정수 nn을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 tt가 주어진다. (1t10001 \le t \le 1000)

다음 tt개의 줄에 테스트 케이스가 한 줄에 하나씩 주어진다. 각 줄은 pp, 문자 /, qq를 공백 없이 이어 붙인 형태이다. 주어지는 p/qp/q는 항상 트리에 나타나는 값이고, 모든 테스트 케이스에서 답 nn은 32비트 정수 범위에 들어간다.

출력

각 테스트 케이스마다 an=p/qa_n = p/q를 만족하는 정수 nn을 한 줄에 하나씩 출력한다.