제곱수 순열2^2

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

요약
1부터 N까지의 순열 A와 B를 골라 인접한 두 항의 곱 A_i^B_i * A_{i+1}^B_{i+1}이 모두 제곱수가 되도록 배열하거나, 불가능하면 NO를 출력한다.
난이도

어려움10점 중 9점

유형
정수론, 수학, 그리디, 구현
정답자
아직 제출이 없습니다

문제

당신은 다음 조건을 만족하는 길이 NN의 순열 A=\[A_1,A_2,⋯ ,A_N],B=\[B_1,B_2,⋯ ,B_N]A=\[A\_1,A\_2,\cdots,A\_N], B=\[B\_1,B\_2,\cdots,B\_N]을 찾아야 한다.

  • 1≤i\<N1\le i\<N인 모든 정수 ii에 대해 A_iB_i×A_i+1B_i+1A\_i^{ B\_i} \times A\_{i+1}^{ B\_{i+1}}가 제곱수이다.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. (1≤T≤100)(1\le T\le 100)

각 테스트 케이스의 첫째 줄에 양의 정수 NN이 주어진다. (2≤N≤5,000)(2\le N\le 5\\,000)

모든 테스트 케이스에서 NN의 합은 5,0005\\,000을 넘지 않는다.

출력

각 테스트 케이스의 첫째 줄에 순열 A,BA, B가 존재한다면 YES를, 존재하지 않는다면 NO를 출력한다.

YES를 출력하였다면 둘째 줄에 A_1,A_2,⋯ ,A_NA\_1, A\_2, \cdots, A\_N을 공백으로 구분하여 출력한다.

YES를 출력하였다면 셋째 줄에 B_1,B_2,⋯ ,B_NB\_1, B\_2, \cdots, B\_N을 공백으로 구분하여 출력한다.

답이 여러 개 있다면, 그중 하나를 아무 것이나 출력한다.

힌트

길이 NN의 순열이라는 것은 11부터 NN까지의 모든 양의 정수가 한 번씩만 등장하는 수열을 말한다.

예제1

  1. 예제 1

    입력
    1
    2
    
    예상 출력
    YES
    1 2
    1 2