제곱수 원순열

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

요약
1부터 N까지를 원형으로 배치해 이웃한 두 수의 합과 처음과 끝의 합이 모두 제곱수가 되도록 한다.
난이도

어려움10점 중 8점

유형
그래프, 백트래킹, 정수론, 구현
정답자
아직 제출이 없습니다

문제

11부터 NN까지의 정수를 한 번씩만 사용하여 다음 조건을 만족하는 수열 A_1A\_1, A_2A\_2, ⋯\cdots, A_NA\_N을 출력하시오.

  • A_i+A_i+1A\_i + A\_{i + 1}은 제곱수이다. (1≤i<N)(1 \le i \lt N)
  • A_1+A_NA\_1 + A\_N은 제곱수이다.

입력

총 TT개의 테스트 케이스가 입력으로 주어지며, 첫 번째 줄에 TT가 주어진다.

그 다음 줄부터 각 테스트 케이스마다 하나의 줄에 양의 정수 NN이 주어진다.

출력

각 테스트 케이스마다 주어진 순서대로 한 개의 줄에,

  • 조건을 만족하는 수열이 있다면 수열 A_1A\_1, A_2A\_2, ⋯\cdots, A_NA\_N을 공백으로 구분하여 출력한다.
  • 조건을 만족하는 수열이 없다면 -1을 출력한다.

제한

  • 1≤T≤5,0001 \le T \le 5\\,000 
  • 2≤N≤1072 \le N \le 10^7
  • 모든 테스트 케이스의 NN의 합은 10710^7을 넘지 않는다.

예제1

  1. 예제 1

    입력
    2
    2
    32
    
    예상 출력
    -1
    1 8 28 21 4 32 17 19 30 6 3 13 12 24 25 11 5 31 18 7 29 20 16 9 27 22 14 2 23 26 10 15