#NOIP260103. 局部函数

局部函数

T3 局部函数(function)

时间限制:22 秒。内存限制:512512 MB。

题目描述

有 nn 个寄存器排成一行,第 ii 个寄存器的初值为 ai∈{1,2,3,4}a_i\in\{1,2,3,4\}。两端各有一个额外的寄存器,编号为 00 和 n+1n+1,值始终为 11,不参与刷新。

对于每个 1≤i≤n1\le i\le n,给定函数 gi:{1,2,3,4}2→{1,2,3,4}g_i:\{1,2,3,4\}^2\to\{1,2,3,4\}(即,输入两个 1∼41\sim4 的整数,输出一个 1∼41\sim4 的整数的函数)。刷新第 ii 个寄存器时,读取左右相邻寄存器的当前值 x,yx,y,将它的值改为 gi(x,y)g_i(x,y)。其他寄存器的值不变。

选择 1,2,…,n1,2,\ldots,n 的一个排列,按此顺序将每个内部寄存器恰好刷新一次。求能得到多少个不同的最终序列,答案对 998244353998244353 取模。

最终序列只包含编号 11 至 nn 的寄存器。不同刷新顺序得到相同的最终序列,只计一种结果。

输入格式

第一行包含一个整数 nn。

第二行包含 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n。

接下来 nn 行,第 ii 行包含 1616 个整数,依次为 $g_i(1,1),g_i(1,2),\ldots,g_i(1,4),g_i(2,1),\ldots,g_i(4,4)$,即先按第一个参数递增,再按第二个参数递增。

输出格式

输出一个整数,表示不同最终序列的数量对 998244353998244353 取模后的值。

样例

输入:

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

输出:

3

样例解释

当刷新顺序为 (1,2,3)(1,2,3) 或 (3,2,1)(3,2,1) 时,最终序列为 (2,2,2)(2,2,2);当顺序为 (1,3,2)(1,3,2) 或 (3,1,2)(3,1,2) 时,最终序列为 (2,1,2)(2,1,2);当顺序为 (2,1,3)(2,1,3) 或 (2,3,1)(2,3,1) 时,最终序列为 (1,1,1)(1,1,1)。六种顺序共得到三种结果,答案为 3。

附加样例对应的数据范围如下:

  • function2.in/.ans:满足测试点 7∼97\sim9 的限制,还满足特殊性质 CC。
  • function3.in/.ans:满足测试点 10∼1110\sim11 的限制。
  • function4.in/.ans:满足测试点 12∼1312\sim13 的限制。
  • function5.in/.ans:满足测试点 17∼2017\sim20 的限制。

数据范围

测试点编号 n≤n\le 特殊性质
1—3 88 无
4—6 2020
7—9 100100
10—11 2×1052\times10^5 AA
12—13 BB
14—16 CC
17—20 无

对于所有测试点,1≤n≤2×1051\le n\le2\times10^5,ai∈{1,2,3,4}a_i\in\{1,2,3,4\}。对于每个 1≤i≤n1\le i\le n 及任意 x,y∈{1,2,3,4}x,y\in\{1,2,3,4\},都有 gi(x,y)∈{1,2,3,4}g_i(x,y)\in\{1,2,3,4\}。

特殊性质 AA:对于所有 ii 及任意 x∈{1,2,3,4}x\in\{1,2,3,4\},都有 gi(x,1)=gi(x,2)=gi(x,3)=gi(x,4)g_i(x,1)=g_i(x,2)=g_i(x,3)=g_i(x,4)。

特殊性质 BB:对于所有 ii 及任意 x,y∈{1,2,3,4}x,y\in\{1,2,3,4\},都有 gi(x,y)=max⁡(x,y)g_i(x,y)=\max(x,y)。

特殊性质 CC:所有初值均属于 {1,2}\{1,2\},且对所有 ii 及任意 x,y∈{1,2}x,y\in\{1,2\},都有 gi(x,y)∈{1,2}g_i(x,y)\in\{1,2\}。