맥스와 거리
시간 제한2초메모리 제한1024 MB
n×n 거리 행렬이 주어질 때, 이를 생성하는 정렬된 점 배열 x와 순열 a, b를 복원합니다. 복원할 수 없으면 NO를 출력합니다.
문제
맥스는 직선 위에 있는 정수 점 개로 이루어진 배열 를 찾았다. 이 배열은 비내림차순으로 정렬되어 있다. 맥스에게는 부터 까지의 수로 이루어진 순열 와 도 있다. 생일 선물로 받은 것이다.
맥스는 이 두 순열을 가지고 놀기로 했다. 거리 행렬 를 만들었고, 각 원소는 이다. 즉 는 번 점과 번 점 사이의 거리이다.
맥스가 놀던 중에 청소를 하던 캐티가 , , 를 모두 치워 버렸다. 맥스에게 남은 것은 행렬 뿐이다. 맥스는 와 같은 행렬을 만드는 비내림차순 배열 와 순열 , 를 복원하려고 한다. 다만 맥스가 를 잘못 계산했을 수도 있으며, 그 경우에는 , , 를 복원할 수 없다.
맥스가 이것들을 복원하도록 도와라.
입력
첫 줄에 자연수 이 주어진다 (). 다음 개의 줄에 행렬 가 주어진다 (). 행렬의 모든 수는 정수이다.
출력
와 같은 행렬을 만드는 , , 가 존재하면 첫 줄에 <<YES>>를 출력한다. 둘째 줄에는 비내림차순 정수 배열 (; )를 출력한다. 셋째 줄에는 부터 까지의 수로 이루어진 순열 를, 넷째 줄에는 순열 를 출력한다.
존재하지 않으면 <<NO>>를 출력한다.
힌트
입력 데이터가 클 수 있으므로 사용하는 언어의 빠른 입출력 스트림을 쓰는 것을 권장한다.