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

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

오렌지 섬 여행하기

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

요약
1번부터 N번까지 번호가 붙은 나무들 사이에 서로소인 쌍을 간선으로 이은 그래프에서 해밀턴 경로를 찾아 출력한다.
난이도

보통10점 중 5점

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

문제

브루는 오렌지 섬으로 여행을 떠났다. 오렌지 섬에는 NN개의 오렌지 나무가 서 있고, 이들은 각각 1번부터 NN번까지의 번호가 붙어 있다.

브루는 섬의 1번 오렌지 나무에게 오렌지 섬의 역사에 관해 물었다. 1번 오렌지 나무는 아래와 같이 오렌지 섬의 역사를 읊어 주었다.

"태초에, NN 그루의 오렌지 나무는 오렌지를 하나도 가지고 있지 않았단다.

어느 날, 모든 나무들은 서로 한 번씩 악수를 했지. 악수를 한 두 나무의 번호가 서로소였을 때, 두 나무는 좋은 관계를 형성하고 더 큰 번호의 나무에 오렌지가 하나 자랐어.

악수가 모두 끝난 뒤, 오렌지를 가지지 못한 1번 오렌지 나무에도 오렌지가 하나 자랐단다."

- 1번 오렌지 나무

예를 들어, N=4N=4일 경우에는, 1번, 2번 나무는 오렌지를 각각 하나씩 가지고 있고, 3번, 4번 나무는 오렌지를 각각 두 개씩 가지고 있게 된다.

브루는 오렌지 섬의 모든 오렌지를 따 먹으려고 한다. 구체적으로, 브루는 아래와 같은 과정을 통해 오렌지를 먹게 된다.

  1. 아무 나무로 이동해 오렌지를 정확히 하나 따 먹는다.
  2. 그 후, 현재 위치한 나무와 좋은 관계인 나무로 이동해 오렌지를 정확히 하나 따 먹는다.
  3. 오렌지를 모두 먹을 때까지 2번 과정을 반복한다.

브루가 오렌지를 모두 먹을 수 있는지 판별하고, 먹을 수 있는 경우 오렌지를 먹는 순서를 아무거나 하나 출력하는 프로그램을 작성하자.

입력

첫째 줄에는 오렌지 섬에 있는 나무의 수 NN이 주어진다.

출력

만약 브루가 모든 오렌지를 따 먹는 것이 가능하다면, 브루가 오렌지를 먹는 순서대로 오렌지 나무의 번호를 출력 예시와 같은 형식으로 출력한다.

만약 브루가 모든 오렌지를 따 먹는 것이 불가능하다면, -1을 출력한다.

제한

  • 1≤N≤1031 \le N \le 10^3

예제1

  1. 예제 1

    입력
    4
    
    예상 출력
    1 2 3 4 3 4