이상한 섞기 연산
시간 제한1초메모리 제한1024 MB
각 n에 대해 k와 k를 나누는 가장 큰 2의 거듭제곱을 교환하는 연산을 순서대로 적용한 뒤 값 1이 있는 위치를 구한다.
문제
인덱스가 부터 시작하는 길이 의 수열 가 있으며, 초기에 모든 인덱스 에 대해 입니다. 흐즈로는 이 수열에 할 수 있는 매우 이상하고 신기한 연산을 생각해 냈습니다. 그 연산은 다음과 같습니다.
- 어떠한 양의 정수 가 주어질 때, 의 약수인 가장 큰 의 거듭제곱수 을 찾고, 이라면 와 을 서로 교환하는 동작을 -교환이라고 합시다.
- -교환을 에 대해 순서대로 반복합니다.
흐즈로는 이 연산을 이상한 섞기 연산이라고 부르기로 했습니다. 수열 의 길이 이 주어질 때, 에 이상한 섞기 연산을 수행한 뒤 원소 이 있는 인덱스를 출력하세요. 다시 말해, 연산이 끝난 후 이 되는 인덱스 를 찾아 출력해야 합니다.
입력
첫 번째 줄에 테스트 케이스의 개수 가 주어집니다. ()
그다음 줄부터 총 개의 줄에 각각 의 길이를 나타내는 정수 이 한 줄에 하나씩 주어집니다. ()
출력
각 테스트 케이스에 대해, 길이가 인 수열 에 이상한 섞기 연산을 수행한 뒤 원소 이 있는 인덱스 를 별도의 줄에 출력하세요.
힌트
본 문제에서 의 거듭제곱수는 꼴로 표현했을 때 가 음이 아닌 정수가 되는 수로 정의됩니다.