#abc272d. [abc272_d]Root M Leaper

[abc272_d]Root M Leaper

问题描述

有一个 NtimesNN \\times N 的网格,我们用 (i,j)(i, j) 表示从上往下数第 ii 行、从左往右数第 jj 列的方格。

初始时,一个棋子放在 (1,1)(1, 1) 处。你可以重复以下操作任意次数:

  • 设当前棋子所在的方格为 (i,j)(i, j),将棋子移动到距离 (i,j)(i, j) 恰好为 sqrtM\\sqrt{M} 的方格中。

这里,我们定义方格 (i,j)(i, j) 与方格 (k,l)(k, l) 之间的距离为 sqrt(ik)2+(jl)2\\sqrt{(i-k)^2+(j-l)^2}

对于所有的方格 (i,j)(i, j),确定棋子是否可以到达 (i,j)(i, j)。如果可以到达,找出所需的最小操作次数。

约束条件

  • 1leNle4001 \\le N \\le 400
  • 1leMle1061 \\le M \\le 10^6
  • 输入中的所有值都是整数。

输入

输入以以下格式从标准输入给出:

NN MM

输出

输出 NN 行。第 ii 行应包含 NN 个整数。如果棋子可以到达 (i,j)(i, j),则第 ii 行的第 jj 个整数应为所需的最小操作次数;否则应为 1-1


示例输入 1

3 1

示例输出 1

0 1 2
1 2 3
2 3 4

你可以将棋子移动到四个相邻的方格。

例如,我们可以通过以下两次操作将棋子移动到 (2,2)(2,2)

  • 棋子当前位于 (1,1)(1,1)。方格 (1,1)(1,1)(1,2)(1,2) 之间的距离恰好为 sqrt1\\sqrt{1},因此将棋子移动到 (1,2)(1,2)
  • 棋子当前位于 (1,2)(1,2)。方格 (1,2)(1,2)(2,2)(2,2) 之间的距离恰好为 sqrt1\\sqrt{1},因此将棋子移动到 (2,2)(2,2)

示例输入 2

10 5

示例输出 2

0 3 2 3 2 3 4 5 4 5
3 4 1 2 3 4 3 4 5 6
2 1 4 3 2 3 4 5 4 5
3 2 3 2 3 4 3 4 5 6
2 3 2 3 4 3 4 5 4 5
3 4 3 4 3 4 5 4 5 6
4 3 4 3 4 5 4 5 6 5
5 4 5 4 5 4 5 6 5 6
4 5 4 5 4 5 6 5 6 7
5 6 5 6 5 6 5 6 7 6