#X3858. 悬线

悬线

题目背景

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

题目描述

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

我们称以第 ii 行第 jj 列的格子为底的悬线的长度是最大的 kk,满足 k≤ik \leq i 且 (i,j),(i−1,j),(i−2,j),…(i−k+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\% 的数据,1≤n,m≤2001 \leq n, m \leq 200,1≤(i,j)≤1051 \leq (i,j) \leq 10^5,1≤T≤151 \leq T \leq 15。