有一个 $n \times n$ 的网格,左上角为 $(1, 1)$,右下角为 $(n, n)$。在位于第 $i$ 行第 $j$ 列的单元格 $(i, j)$ 中,有 $n^{2^{a_{i,j}}}$ 颗钻石。
你从 $(1, 1)$ 出发前往 $(n, n)$。在任何单元格 $(i, j)$,你可以移动到 $(i+1, j)$ 或 $(i, j+1)$,前提是不能移出网格。显然,你总共会走 $2n-2$ 步。当你到达一个单元格时,你可以拿走该单元格内的所有钻石,包括起点 $(1, 1)$ 和终点 $(n, n)$。
然而,有些单元格是阻塞的,但你不知道哪些单元格被阻塞了。请编写一个程序来回答 $q$ 次询问。在每次询问中,给定四个整数 $r_1, r_2, c_1, c_2$,你需要报告在不经过任何满足 $r_1 \le i \le r_2$ 且 $c_1 \le j \le c_2$ 的单元格 $(i, j)$ 的前提下,你所能拿到的钻石数量的最大值。
输入格式
第一行包含一个整数 $T$ ($1 \le T \le 5$),表示测试用例的数量。对于每个测试用例:
第一行包含两个整数 $n$ 和 $q$ ($2 \le n \le 400, 1 \le q \le 200\,000$),分别表示网格的大小和询问次数。
接下来的 $n$ 行,每行包含 $n$ 个整数,第 $i$ 行包含 $a_{i,1}, a_{i,2}, \dots, a_{i,n}$ ($1 \le a_{i,j} \le n^2$),表示每个单元格中的钻石数量参数。
接下来的 $q$ 行,每行包含四个整数 $r_1, r_2, c_1, c_2$ ($1 \le r_1 \le r_2 \le n, 1 \le c_1 \le c_2 \le n$),描述一个询问。保证每次询问至少存在一条有效路径。
输出格式
对于每次询问,输出一行,包含一个整数:你所能拿到的钻石数量的最大值。注意答案可能非常大,请输出其对 $10^9 + 7$ 取模的结果。
样例
输入格式 1
1 2 2 2 3 1 4 1 1 2 2 2 2 1 1
输出格式 1
276 336