자리 바꾸기
시간 제한1초메모리 제한1024 MB
모든 학생이 정확히 한 번씩 상하좌우로 인접한 칸으로 이동해 서로 자리를 바꾸는 배치가 가능한지 판정하고, 가능하면 그 배치 하나를 출력한다.
문제
준혁이는 여름방학을 맞아 교실에 작은 장난을 계획하고 있다. 바로 학생들의 자리를 살짝 바꿔 놓는 것이다.
교실은 개의 행과 개의 열로 구성된 2차원 격자 형태로, 행 열에는 출석번호 번 학생이 앉아 있다. 모든 학생의 출석번호는 다르다.
자리를 너무 멀리 바꾸면 선생님에게 들킬 수 있기 때문에, 학생은 자신의 자리에서 상하좌우로 인접한 칸으로만 이동할 수 있다. 즉, 행 열에 있는 학생은 이 성립할 때만 행 열로 이동할 수 있다. 또한, 자리가 전혀 바뀌지 않은 학생이 생기면 소외감을 느낄 수 있으므로, 모든 학생은 반드시 정확히 한 번만 자리를 바꿔야 한다.
준혁이를 위해 위의 조건들을 모두 만족하는 새로운 자리 배치가 가능한지 판단하고, 가능하다면 그중 하나를 출력해 보자.
입력
첫째 줄에 두 정수 이 공백으로 구분되어 주어진다.
둘째 줄부터 개의 줄에 걸쳐 개의 정수가 공백으로 구분되어 주어진다. 번째 줄의 번째 수는 를 의미한다.
출력
조건을 만족하는 배치가 가능하다면 첫째 줄에 Yes를 출력한다.
이어 둘째 줄부터 개의 줄에 걸쳐 개의 정수를 공백으로 구분하여 출력한다. 번째 줄의 번째 수는 조건을 만족하는 배치에서 번째 행 번째 열에 위치하는 학생의 출석번호를 의미한다.
조건을 만족하는 배치가 불가능하다면 첫째 줄에 No를 출력한다.
제한
- 주어지는 모든 수는 정수이다.
- (; )
- 는 모두 서로 다르다.