410659: GYM104071 A 种花

Memory Limit:512 MB Time Limit:1 S
Judge Style:Text Compare Creator:
Submit:5 Solved:0

Description

A. 种花time limit per test1 secondmemory limit per test512 megabytesinputplant.inoutputplant.out

小 C 决定在他的花园里种出 CCF 字样的图案,因此他想知道 CF 两个字母各自有多少种种花的方案;不幸的是,花园中有一些土坑,这些位置无法种花,因此他希望你能帮助他解决这个问题。

花园可以看作有 n × m 个位置的网格图,从上到下分别为第 1 到第 n 行,从左到右分别为第 1 列到第 m 列,其中每个位置有可能是土坑,也有可能不是,可以用 ai, j = 1 表示第 i 行第 j 列这个位置有土坑,否则用 ai, j = 0 表示这个位置没土坑。

一种种花方案被称为 C -  的,如果存在 ,以及 ,满足 x1 + 1 < x2,并且 y0 < y1, y2 ≤ m,使得第 x1 的第 y0 到第 y1 、第 x2 的第 y0 到第 y2 以及第 y0 的第 x1 到第 x2 不为土坑,且只在上述这些位置上种花。

一种种花方案被称为 F -  的,如果存在 ,以及 ,满足 x1 + 1 < x2 < x3,并且 y0 < y1, y2 ≤ m,使得第 x1 的第 y0 到第 y1 、第 x2 的第 y0 到第 y2 以及第 y0 的第 x1 到第 x3 不为土坑,且只在上述这些位置上种花。

样例一解释中给出了 C -  形和 F -  形种花方案的图案示例。

现在小 C 想知道,给定 n, m 以及表示每个位置是否为土坑的值 {ai, j}C -  形和 F -  形种花方案分别有多少种可能?由于答案可能非常之大,你只需要输出其对 998244353 取模的结果即可,具体输出结果请看输出格式部分。

Input

从文件 'plant.in' 读入。

第一行包含两个整数 T, id,分别表示数据组数和测试点编号。如果数据为样例则保证 id = 0在这里测试点编号没用!

接下来一共 T 组数据,在每组数据中:

第一行包含四个整数 n, m, c, f,其中 n, m 分别表示花园的行数、列数,对于 c, f 的含义见输出格式部分。

接下来 n 行,每行包含一个长度为 m 且仅包含 01 的字符串,其中第 i 个串的第 j 个字符表示 ai, j,即花园里的第 i 行第 j 列是不是一个土坑。

Output

输出至文件 'plant.out'。

设花园中 C -  形和 F -  形的种花方案分别有 VCVF 种,则你需要对每一组数据输出一行用一个空格隔开的两个非负整数,分别表示 ,其中 表示 aP 取模后的结果。

ExamplesInput
1 0
4 3 1 1
001
010
000
000
Output
4 2
Input
1 0
6 6 1 1
000010
011000
000110
010000
011000
000000
Output
36 18
Input
1 0
16 12 1 1
000000000001
011111111111
000000000011
011111111111
010011111111
010111100011
010011101111
011111100011
111111111111
000011111111
011111111111
000000111111
011111000111
011111011111
011111000111
011111011111
Output
114 514
Note

Source/Category

加入题单

算法标签: