아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

백남이의 여행

시간 제한1초메모리 제한512 MB

요약
N×N 체스판에서 모든 칸을 적어도 한 번 방문하면서 총 방문 횟수가 2N^2을 넘지 않는 나이트의 이동 경로를 출력하고, 불가능하면 -1을 출력한다.
난이도

보통10점 중 7점

유형
그래프, 그리디, 구현, 시뮬레이션
정답자
아직 제출이 없습니다

문제

체스판의 세계에는 귀여운 백마인 백남이가 살고 있다. 백남이는 방학을 맞아 체스판 여행을 떠나려고 한다.

백남이가 생각 중인 계획은 다음과 같은 규칙을 따른다.

  • 체스판의 총 크기는 N×NN\times N이다.
  • 체스판에 있는 모든 칸을 방문해야 한다.
  • 같은 칸을 여러 번 방문할 수 있다. 하지만 칸을 방문한 총 횟수는 2N22N^2 이하여야 한다.
  • 백남이가 이동하는 방법의 수는 8가지이며, 다음과 같다.

MBTI가 N(직관형)인 백남이는 모든 계획을 짜지 않고는 여행을 시작할 수 없다!

계획 수립에 골머리를 앓고 있는 백남이를 도와 백남이의 여행 계획을 짜주자!

입력

첫 줄에 격자판의 행의 수이자 열의 수인 NN 이 주어진다. (1≤N≤5001\leq N \leq 500)

둘째 줄에는 현재 백남이의 좌표를 나타내는 정수 r, c가 주어진다. 이는 r번째 행, c번째 열에 위치한 칸을 의미한다.

출력

만약 여행이 불가능하다고 판단되면, -1을 출력하고,

여행이 가능하면, 첫째 줄에 칸을 방문한 총 횟수 KK를 출력하고, 이후 KK개의 줄에 한 줄에 하나씩 백남이가 방문한 칸의 좌표를 차례대로 출력한다.

예제2

  1. 예제 1

    입력
    5
    1 1
    
    예상 출력
    25
    1 1
    3 2
    5 1
    4 3
    5 5
    3 4
    1 5
    2 3
    4 2
    2 1
    1 3
    2 5
    4 4
    5 2
    3 1
    1 2
    2 4
    4 5
    5 3
    4 1
    2 2
    1 4
    3 3
    5 4
    3 5
    
  2. 예제 2

    입력
    3
    2 2
    
    예상 출력
    -1