14068 - 马走日

在国际象棋中,马的移动方式与中国象棋中的马类似,都是走“日”字。但国际象棋中的马没有“蹩腿”的限制,因此它可以向周围 8 个方向任意跳动(只要不超出棋盘边界)。具体来说,马每步可以从一个格子跳到与之水平距离为 1、垂直距离为 2,或者水平距离为 2、垂直距离为 1 的格子上。

现在给定一个 n m 列的棋盘,以及马的起始位置 (x, y)。请你计算马从起始位置出发,到达棋盘上每一个格子所需的最少移动步数。如果某个格子无法到达,则输出 -1

输入

输入仅一行,包含四个整数 n, m, x, y ,用空格隔开:

  • n :棋盘的行数
  • m :棋盘的列数
  • x :起始行号(1 ≤ x ≤ n)
  • y :起始列号(1 ≤ y ≤ m)

输出

输出 n 行,每行包含 m 个整数,依次表示从起点到该格子(第 i 行第 j 列)的最少步数。相邻整数之间用一个空格隔开。如果该格子无法到达,则输出 -1

样例

输入

3 3 3 1

输出

2 1 4
3 -1 1
0 3 2

提示

样例说明

棋盘为 3 \times 3 ,起点位于第 3 行第 1 列(即左下角)。马从起点出发,一步可以跳到 (1,2)、(2,3) 等位置,经过 BFS 计算得到各格子的最短步数如输出所示。注意 (2,2) 无法到达,因此输出 -1

数据范围与约定

  • 1 \le n, m \le 1000
  • 1 \le x \le n , 1 \le y \le m
时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题