#X3858. 悬线

悬线

题目背景

我们定义一个数字是质数,当且仅当它的因子仅有 11 和自身。特别的,11 不是质数。

题目描述

给定一个 n×mn \times m 的数字阵。约定第 ii 行第 jj 列上的数用 (i,j)(i,j) 表示。

我们称以第 ii 行第 jj 列的格子为底的悬线的长度是最大的 kk,满足 kik \leq i(i,j),(i1,j),(i2,j),(ik+1,j)(i,j), (i-1,j), (i-2,j),\dots(i-k+1,j)kk 个数都是质数。特别的,如果 (i,j)(i, j) 本身不是质数,称以第 ii 行第 jj 列为底的悬线长度为 00

对于每个格子,请你求出以它为底的悬线长度。

输入格式

本题单个测试点内有多组测试数据。输入的第一行是一个整数,表示数据组数 TT

对每组数据,按如下格式输入:

每组数据第一行是两个整数,表示数字阵的行数 nn 和列数 mm。 接下来 nn 行,每行 mm 个整数,第 ii 行第 jj 个整数表示 (i,j)(i,j)

输出格式

对每组数据,输出 nn 行,每行 mm 个用单个空格隔开的整数。第 ii 行第 jj 个数表示以第 ii 行第 jj 列的格子为底的悬线长度。

样例 #1

样例输入 #1

1
3 3
1 2 3
4 5 6
7 8 9

样例输出 #1

0 1 1
0 2 0
1 0 0

样例 #2

样例输入 #2

2
3 3
1 1 3
4 3 6
7 8 9
3 3
1 2 3
4 5 6
7 8 9

样例输出 #2

0 0 1 
0 1 0 
1 0 0 
0 1 1 
0 2 0 
1 0 0 

提示

数据规模与约定

  • 20%20\% 的数据,n=1n = 1
  • 50%50\% 的数据,(i,j)100(i,j) \leq 100
  • 80%80\% 的数据,(i,j)1000(i,j) \leq 1000
  • 100%100\% 的数据,1n,m2001 \leq n, m \leq 2001(i,j)1051 \leq (i,j) \leq 10^51T151 \leq T \leq 15