암벽 등반
시간 제한2초메모리 제한512 MB
네 지점에 손과 발을 둔 상태에서 팔다리 간 거리와 높이 제약을 지키며 n번 지점에 닿는 최소 이동 횟수를 구한다.
문제
암벽에는 자연이 만든 것이든 사람이 만든 것이든 손가락이나 발가락을 걸 수 있는 작은 구멍과 돌출부가 있다. 목표 지점까지 오르려면 힘만큼이나 계획이 필요하다. 한 번 움직이기 전에 그다음 동작에서 쓸 자리로 팔다리 하나를 옮길 수 있는지 미리 확인해야 하기 때문이다.
이 문제는 그 계획 과정을 다음과 같이 모형으로 만든다. 2차원 벽에 있는 지점 개의 좌표가 주어진다. 한 지점에는 손 하나 또는 발 하나만 걸 수 있다. 한 번의 이동에서 팔다리 하나를 다른 지점으로 옮기며, 다음 규칙이 항상 성립해야 한다.
- 두 손 사이의 거리는 이하이고, 두 발 사이의 거리도 이하이다.
- 왼손과 왼발 사이의 거리는 이하이고, 오른손과 오른발 사이의 거리도 이하이다.
- 왼손과 오른발 사이의 거리는 이하이고, 오른손과 왼발 사이의 거리도 이하이다.
- 서로 다른 두 팔다리가 같은 지점에 놓이지 않는다.
- 두 발 모두 두 손보다 높지 않다. 즉 각 발의 좌표는 각 손의 좌표 이하이다.
처음에 왼발은 번 지점, 오른발은 번 지점, 왼손은 번 지점, 오른손은 번 지점에 있다. 시작 자세는 항상 규칙을 만족한다. 팔다리 중 하나가 번 지점에 닿으면 벽을 다 오른 것이다. 팔다리 하나를 번 지점에 올려놓는 데 필요한 최소 이동 횟수를 구하라.
입력
첫째 줄에 데이터 집합의 개수 가 주어진다. 이다. 이어서 데이터 집합 개가 다음 형식으로 주어진다.
각 데이터 집합의 첫째 줄에는 지점의 개수 이 주어진다. 이다. 다음 줄에는 실수 개 , , , , ..., , 이 주어지며, 는 번 지점의 좌표이다.
출력
각 데이터 집합마다 먼저 "Data Set x:"를 한 줄에 출력한다. 여기서 x는 데이터 집합의 번호이고 부터 센다. 다음 줄에는 팔다리 하나가 번 지점에 처음 닿을 때까지의 최소 이동 횟수를 출력한다. 어떤 방법으로도 번 지점에 팔다리를 올려놓을 수 없으면 그 줄에 Impossible을 출력한다. 각 데이터 집합 뒤에는 빈 줄을 하나 출력한다.