笨蛋同学被怪兽抓走了!她不希望天才同学冒险来救她,于是留下了一些谜题。 但是,天才同学认为:“无论如何,笨蛋同学都是我最好的朋友,她需要我”。于是踏上了拯救笨蛋同学之路。 笨蛋同学留下了一个 的整数矩阵。你需要为每一组测试数据计算一个“密码”。 我们先定义两件事: 1. 子矩阵 从矩阵中选出连续的若干行(比如第 行到第 行),再选出连续的若干列(比如第 列到第 列),它们交叉出来的那一块就是一个子矩阵。子矩阵必须非空。 2. 子矩阵的值 一个子矩阵的值等于它里面所有元素的按位与。记按位与为 。例如:。 把这个矩阵的所有子矩阵都列出来。每个子矩阵都会得到一个整数值。把这些值放到一个数组里,从小到大排序。 设一共有 个子矩阵。 把所有子矩阵的值从小到大排序后,我们定义中位数为第 个数。这个数就是本题答案。 :代表对 进行下取整操作,得到不超过 的最大整数。
输入描述:
每个测试文件均包含多组测试数据。第一行输入一个整数 代表数据组数,每组测试数据描述如下:第一行输入两个整数 表示矩阵的行数与列数。此后 行,第 行输入 个整数 ,表示矩阵第 行第 列的元素。除此之外,保证单个测试文件的所有测试数据满足:,。


输出描述:
对于每一组测试数据,新起一行,输出一个整数,表示谜题答案。
示例1

输入

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

输出

5
1

说明

\hspace{15pt}第一组测试数据是一个 2 \times 2 矩阵,一共有 k=9 个子矩阵。它们的按位与结果分别为:
\hspace{23pt}\bullet\,四个 1 \times 1 子矩阵:7, 6, 5, 4
\hspace{23pt}\bullet\,两个 1 \times 2 子矩阵:7 \operatorname{and} 6 = 65 \operatorname{and} 4 = 4
\hspace{23pt}\bullet\,两个 2 \times 1 子矩阵:7 \operatorname{and} 5 = 56 \operatorname{and} 4 = 4
\hspace{23pt}\bullet\,一个 2 \times 2 子矩阵:7 \operatorname{and} 6 \operatorname{and} 5 \operatorname{and} 4 = 4
\hspace{15pt}把这 9 个值从小到大排序后,第 \left\lfloor \frac{9+1}{2} \right\rfloor = 5 个数是 5,所以答案是 5
\hspace{15pt}第二组测试数据是一个 1 \times 3 矩阵,一共有 k=6 个子矩阵。它们的按位与结果是 1,3,7, 1 \operatorname{and} 3 = 1, 3 \operatorname{and} 7 = 3, 1 \operatorname{and} 3 \operatorname{and} 7 = 1。排序后第 \left\lfloor \frac{6+1}{2} \right\rfloor = 3 个数为 1,所以答案是 1

备注:
如果您选用 Python 作答本题,请注意:在几乎全部的情况下,PyPy 的运行速度优于 Python,我们建议您选择对应版本的 PyPy 进行提交、而不是 Python。
加载中...