이상한 섞기 연산

시간 제한1초메모리 제한1024 MB

요약
각 n에 대해 k와 k를 나누는 가장 큰 2의 거듭제곱을 교환하는 연산을 순서대로 적용한 뒤 값 1이 있는 위치를 구한다.
난이도

보통10점 중 5점

유형
수학, 시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

인덱스가 11부터 시작하는 길이 nn의 수열 BB가 있으며, 초기에 모든 인덱스 kk에 대해 B_k=kB\_k=k입니다. 흐즈로는 이 수열에 할 수 있는 매우 이상하고 신기한 연산을 생각해 냈습니다. 그 연산은 다음과 같습니다.

  • 어떠한 양의 정수 kk가 주어질 때, kk의 약수인 가장 큰 22의 거듭제곱수 ll을 찾고, k≠lk \neq l이라면 B_kB\_k와 B_lB\_l을 서로 교환하는 동작을 kk-교환이라고 합시다.
  • ii-교환을 i=1,2,⋯ ,ni=1,2,\cdots,n에 대해 순서대로 반복합니다.

흐즈로는 이 연산을 이상한 섞기 연산이라고 부르기로 했습니다. 수열 BB의 길이 nn이 주어질 때, BB에 이상한 섞기 연산을 수행한 뒤 원소 11이 있는 인덱스를 출력하세요. 다시 말해, 연산이 끝난 후 B_j=1B\_j=1이 되는 인덱스 jj를 찾아 출력해야 합니다.

입력

첫 번째 줄에 테스트 케이스의 개수 TT가 주어집니다. (1≤T≤10001 \le T \le 1000)

그다음 줄부터 총 TT개의 줄에 각각 BB의 길이를 나타내는 정수 nn이 한 줄에 하나씩 주어집니다. (1≤n≤1091 \le n \le 10^9)

출력

각 테스트 케이스에 대해, 길이가 nn인 수열 BB에 이상한 섞기 연산을 수행한 뒤 원소 11이 있는 인덱스 jj를 별도의 줄에 출력하세요.

힌트

본 문제에서 22의 거듭제곱수는 2k2^k 꼴로 표현했을 때 kk가 음이 아닌 정수가 되는 수로 정의됩니다.

예제1

  1. 예제 1

    입력
    2
    1
    3
    
    예상 출력
    1
    3