智斗恶龙
题号:NC210758
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

MoveToEx来到了一个异次元世界,在这个世界中存在着恶龙.作为拯救世界的勇士,MoveToEx要打倒恶龙.
为了寻找能打倒恶龙的能力,MoveToEx来到了一个地宫中.MoveToEx在刚到达地宫时,他因为传送魔法的原因,被传送到了(sx,sy)的位置,而由于这个地宫中特有的封印值d,MoveToEx只能到达那些他需要走小于等于d步就能到达的格子.在这个地宫中的某些格子中存在着一些宝藏,当MoveToEx来到这些存在宝藏的格子上时,他可以获得这些格子上的宝藏,当然他也可以选择不获取这些格子上的宝藏.每个宝藏有其特殊的能力值.为了打败恶龙,MoveToEx至少需要x种不同能力的宝藏,但是由于MoveToEx的身体无法承受太强烈的能量差距,所以他希望他所使用的宝藏的最大与最小的能力值之差最小.
当然,地宫中有一些陷阱,MoveToEx在地宫中时不能经过这些陷阱.
所以请你帮助MoveToEx计算一下,MoveToEx所使用宝藏的最大与最小的能力值之差.

输入描述:

第一行一个数字T表示数据组数
接下来有T组输入
每组输入的第一行有6个数字,分别表示地宫的大小,MoveToEx所在的起始点, 地宫的封印值以及打倒巨龙所需要的不同能力的宝藏个数.
接下来有一个的矩阵,表示这个地宫(用0表示普通的格子,用-1表示陷阱,其余数字表示宝藏的能力值)

输出描述:

对于每一组数据输出一行
如果对于能打倒恶龙,那么输出最小的所使用的宝藏能力值之差,否则输出no
示例1

输入

复制
3
3 3 1 1 3 3
0 1 2
1 0 3
0 2 3
3 3 1 1 3 3
0 1 2
-1 0 -1
2 0 2
3 3 1 1 3 1
0 1 2
-1 1 -1
2 0 2

输出

复制
2
no
0

说明

对于第一组数据,可以发现MoveToEx能到达除了(3,3)之外的所有格子,所以他得到的宝藏能力分别为[1,1,2,2,3],所以他可以使用能力值为1 \ 2 \ 3的宝藏,此时使用宝藏的能力值之差为2.
对于第二组数据,可以发现MoveToEx能获得的宝藏能力分别为[1,2],而打倒巨龙需要3种不同的宝藏,所以不能打倒巨龙
对于第三组数据,可以发现MoveToEx获得的宝藏能力分别为[1,1,2],他可以使用任意一种宝藏,能力值之差为0

备注:

对于的数据,保证 
对于的数据,保证
对于的数据,保证

宝藏的能力值小于并且
起点可能位于地宫的所有位置.
对于单组数据,保证