피보나치 반반수열
시간 제한2초메모리 제한1024 MB
n이 최대 10^18일 때, 1, 2, 3, 5, ...로 이어지는 피보나치 수열 f에 대해 a[a[n]] = f[n]을 만족하는 사전순 최소 수열 a의 n번째 항을 구합니다. 10^18을 넘으면 -1을 출력합니다.
문제
1, 2로 시작하는 피보나치 수열 은 다음과 같이 정의한다.
- 일 때,
이 피보나치 수열의 반반수열 은 다음과 같이 정의한다.
- 은 모든 양의 정수 에 대해 을 만족하는 모든 수열 중에서 사전 순으로 가장 작은 수열이다.
수열 이 보다 사전 순으로 작다는 것은, 어떤 가 존재하여 보다 작은 모든 에 대해 이고 인 것을 뜻한다.
입력
첫 번째 줄에 테스트 케이스의 개수 가 주어진다.
다음 줄부터 개의 줄에 걸쳐 의 값이 한 줄에 하나씩 주어진다.
출력
개의 줄에 걸쳐 각각의 에 대해 의 값을 출력한다. 이라면 -1을 대신 출력한다.