2381: 种花

内存限制:512 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:0 解决:0

题目描述

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

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

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

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

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

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

输入

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

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

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

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

输出

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

样例输入 复制

1 0
4 3 1 1
001
010
000
000

样例输出 复制

4 2

提示

【样例 1 解释】

四个 \texttt{C-}C- 形种花方案为:

**1 **1 **1 **1
*10 *10 *10 *10
**0 *** *00 *00
000 000 **0 ***

其中*表示在这个位置种花。注意C的两横可以不一样长。

类似的,两个F-形种花方案为:

**1 **1
*10 *10
**0 ***
*00 *00