#abc215h. [abc215_h]Cabbage Master
[abc215_h]Cabbage Master
问题描述
Takahashi是一位种植卷心菜的农民,他种了个品牌的卷心菜,分别称为Brand 到Brand 。他有颗Brand 的卷心菜。这里要注意:所有的卷心菜都是可区分的。
他有个客户,分别称为Company 到Company 。Company 订购了颗卷心菜。
不同的公司接受不同品牌的卷心菜。对于每一对 ,
- 如果,表示Brand 的卷心菜可以发货给Company ;
- 如果,表示Brand 的卷心菜无法发货给Company 。
如果Takahashi成功决定发往哪个公司的卷心菜,以至于每个公司 至少收到颗卷心菜,那么他将被称为Cabbage Master。
Snuke决定选择吃掉零颗或多颗卷心菜,以便无论Takahashi把卷心菜发往何处,他都无法获得Cabbage Master的称号。因为他不太喜欢卷心菜,所以他会选择吃掉最少数量的卷心菜,以达到他的目标。
输出Snuke将吃掉的卷心菜数量,并且Snuke选择吃掉卷心菜的方式有多少种(对998244353取模)。当两种选择吃掉卷心菜的方式在某个卷心菜头被其中一种方式吃掉而另一种方式没有吃掉时,两种方式被认为是不同的。记住,即使它们是相同品牌的,任意两颗卷心菜都是可区分的。
约束条件
- 对于每个,存在使得。
- 输入中的所有值都是整数。
输入格式
输入的格式如下,从标准输入中获取:
输出格式
按顺序用空格隔开,输出(Snuke将吃掉的卷心菜数量)和(Snuke选择吃掉卷心菜的方式的数量,对998244353取模)。
示例输入1
3 2
2 2 5
3 4
1 0
1 1
0 1
示例输出1
2 6
Snuke将吃掉两颗卷心菜,以阻止Takahashi成为Cabbage Master。有六种方式可以选择要吃掉的卷心菜,如下所示,其中表示Brand 的第个卷心菜。
示例输入2
1 1
3
4
1
示例输出2
0 1
即使Snuke不吃任何卷心菜,Takahashi也可能无法成为Cabbage Master。然后,Snuke将不吃任何卷心菜,他可以选择其方式只有一种:什么都不吃。
示例输入3
1 3
100
30 30 30
1 1 1
示例输出3
11 892328666
对于Snuke选择要吃掉的卷心菜的方式的数量,一定要对取模。