만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

아흐퉁!

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

요약
서로 다른 n개의 점을 한 번씩 지나 출발점으로 돌아오는 경로를 찾습니다. 선분끼리 교차하거나 겹치지 않게 순서를 정하고, 불가능하면 No solution을 출력합니다.
난이도

보통10점 중 6점

유형
기하, 정렬, 구현
정답자
아직 제출이 없습니다

문제

Ахтунг! 기계식 보모를 누군가 켰고, 이제 이 보모가 Пин을 쫓아다니며 사랑과 보살핌으로 에워싸려 합니다! Пин의 마당에는 nn개의 벙커가 있습니다. 그는 그중 한 곳에 숨고 싶지만, 각 벙커마다 아주 중요하고 매우 급한 일이 기다리고 있습니다.

그래서 Пин은 모든 벙커를 정확히 한 번씩 방문하고 출발한 벙커로 돌아오는 이동 경로를 만들어 달라고 부탁합니다. 출발점은 어느 벙커든 상관없습니다.

또한 Пин은 보모를 피하는 가로채기 프로그램을 직접 짰고 보모의 엔진도 직접 조립했기 때문에, 한 벙커에서 다른 벙커로 직선이 아닌 경로를 따라 달리면 잡힌다는 것을 정확히 압니다. 같은 장소를 두 번 지나가도 잡힙니다. 이미 달린 경로의 선분과 교차하거나 닿는 것도 같은 장Soo을 두 번 지나가는 것으로 봅니다.

입력

입력 파일에는 Пин 마당의 정보가 주어집니다.

첫째 줄에 벙커의 개수 nn (1≤n≤100,0001 \le n \le 100{,}000)이 정수로 주어집니다. 다음 nn개 줄에는 ii번째 벙커 입구의 좌표 xix_i와 yiy_i가 정수로 주어집니다 (∣xi∣,∣yi∣≤109|x_i|, |y_i| \le 10^9). 벙커 입구는 마당의 크기에 비해 매우 작으므로 점으로 봅니다. 서로 다른 두 벙커가 같은 점에 있는 경우는 없습니다.

출력

출력 파일에는 Пин이 방문하는 순서대로 벙커 번호를 적은 nn개 수의 순열을 출력합니다. 보모에게 잡히지 않고 달릴 수 있는 경로가 없다면 'No solution'을 출력합니다.

예제2

  1. 예제 1

    입력
    4
    0 0
    0 1
    1 0
    1 1
    
    예상 출력
    1 2 4 3
    
  2. 예제 2

    입력
    3
    0 0
    0 1
    0 2
    
    예상 출력
    No solution