아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

제곱수 순열

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

요약
1부터 N까지를 한 번씩 써서 이웃한 두 수의 합이 모두 제곱수가 되는 순열을 만들고, 없으면 -1을 출력한다.
난이도

보통10점 중 6점

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

문제

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)

입력

총 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
    15
    
    예상 출력
    -1
    8 1 15 10 6 3 13 12 4 5 11 14 2 7 9