나선 행렬
시간 제한4초메모리 제한512 MB
질의로 주어진 부분 행렬마다 모든 칸을 인접 칸으로 이어 한 번씩 방문하는 경로가 있는지, 그리고 방문 순서대로 적은 값이 연속된 정수 구간을 이루는지 판별합니다.
문제
두 칸이 인접한다는 것은 다음 중 하나를 만족한다는 뜻이다.
- 이고 이다.
- 이고 이다.
나선 행렬은 다음 조건을 모두 만족하는 행렬이다.
- 행렬에는 서로 다른 양의 정수만 들어 있다.
- 어떤 칸 에서 출발해 나머지 모든 칸을 하나의 경로로 방문할 수 있다. 경로에서 연속한 두 칸은 항상 인접한다. 방문한 순서대로 값을 읽으면 연속된 정수 구간 을 이룬다.
크기의 서로 다른 양의 정수 행렬과 개의 질의가 주어진다. 각 질의는 꼭짓점 과 로 부분 행렬을 나타낸다. 각 질의에 대해 이 부분 행렬이 나선 행렬인지 판단한다.
입력
첫 줄에 세 정수 , , (, )가 주어진다. 각각 행렬의 크기와 질의의 개수이다.
다음 개 줄에는 각각 개의 정수가 주어진다. 번째 줄의 번째 정수는 행 열의 원소 이다 (). 모든 원소는 서로 다르다고 보장된다.
다음 개 줄에는 네 정수 , , , (, )가 주어진다. 부분 행렬의 꼭짓점이다.
출력
각 질의에 대해 부분 행렬이 나선 행렬이면 YES를, 아니면 NO를 한 줄에 출력한다.