#1045. 网格

网格

Grid (color, 3s, 512M)

Bytegrid 是 Byteland 最新潮的游戏。在这个游戏中,玩家在一个 n×nn\times n 的网格上辗转腾挪。

具体地,玩家可以从任意格子出发,一开始属于失能状态。第 ii 行第 jj 列的格子在时刻 ai,ja_{i,j} 会充能,如果当时玩家处于该格子就可以花 0.10.1 秒转移到任意相邻(四联通)格,并再次变为失能状态。每到达一个格子玩家都会获得一个新的奇遇,因此玩家可能的移动方案数决定了每局游戏的丰富程度。

作为 Bytegrid 的开发者,你计划上线一个新版本,其中网格有一个格子不会被充能(但仍然可以出发或被移动到)。你有 qq 种不同的更新计划,每次计划给定了 i,ji,j,指定了第 ii 行第 jj 列的格子不会被充能(相当于将 ai,ja_{i,j} 置为 -\infty),你希望获取在移除该格后玩家可能的移动方案数对 998244353998244353,其中移动方案指的是依次经过的格子序列。每次计划都是在原网格上进行改动,即计划两两独立。

输入格式

第一行一个正整数 nn,表示网格大小。

接下来 nn 行,第 iinn 个正整数 ai,1,ai,2,,ai,na_{i,1},a_{i,2},\cdots,a_{i,n},表示初始第 ii 行每个格子的充能时刻。

接下来一行一个正整数 qq,表示计划的个数。

接下来 qq 行,每行三个正整数 x,yx,y,表示该次计划使第 xx 行第 yy 列的格子无法被充能。

输出格式

输出 qq 行,第 ii 行一个整数,表示第 ii 个计划中玩家的移动方案数,对 998244353998244353 取模。

样例输入1

2
1 2
4 4
3
1 1
2 1
2 2

样例输出1

12
16
14

在第一次测试中,一种可能的移动序列为 (1,2),(2,2),(2,1)(1,2),(2,2),(2,1):第一次测试中玩家可以在 (1,2)(1,2) 出发,在 22 时刻被充能后转移到 (2,2)(2,2),在 44 时刻被充能后转移到 (2,1)(2,1)

注意 (1,2),(2,2),(2,1),(1,1)(1,2),(2,2),(2,1),(1,1) 并不是可能的移动序列:到达 (2,1)(2,1)44 时刻已经过去,所以玩家无法再在 (2,1)(2,1) 上被充能。

第一次测试中所有合法的移动序列:[(1,1)],[(1,1)], [(1,2)],[(1,2)], [(1,2),(1,1)],[(1,2),(1,1)], [(1,2),(2,2)],[(1,2),(2,2)], [(1,2),(2,2),(1,2)],[(1,2),(2,2),(1,2)], [(1,2),(2,2),(2,1)],[(1,2),(2,2),(2,1)], [(2,1)],[(2,1)], [(2,1),(1,1)],[(2,1),(1,1)], [(2,1),(1,2)],[(2,1),(1,2)], [(2,2)],[(2,2)], [(2,2),(1,2)],[(2,2),(1,2)], [(2,2),(2,1)][(2,2),(2,1)],共 12 个。

样例输入2、样例输出2

见选手文件夹下 ex_grid2.inex_grid2.ans

样例输入3、样例输出3

见选手文件夹下 ex_grid3.inex_grid3.ans

数据范围

对于所有数据,2n5002\le n\le 5001q1061\le q\le 10^61ai,j1091\le a_{i,j}\le 10^9

对于 20% 的数据,n,q40n,q \le 40

对于 40% 的数据,n,q200n,q \le 200

对于 60% 的数据,q500q\le 500

对于另外 20% 的数据,输入中的所有时刻(aa)两两不同。