对一个有 n 种元素的集合 U(内部元素依次标号 1,2,\dots,n-1,n),初始其所有子集均有为 0 的权值,依次给出 q 个以下形式的指令。
0 m a1 ... am x :对包含每个 a_i (i \in [1,m]) 的集合,将它们的权值加上 x 。1 m a1 ... am :输出 {a_i|i \in [1,m]} 所有子集权值之和对 998244353 取模的值。输入
第一行两个正整数 n,q (0 \leq n \leq 20,1 \leq q \leq 2 \times 10^5),分别表示集合 U 的大小与指令的个数。
随后 q 行每行一条指令 (0 \leq m \leq n,1 \leq a_i \leq n,1 \leq x \leq 10^9) ,具体格式见上。
保证对同一条指令,有 i \neq j \Leftrightarrow a_i \neq a_j 。
数据保证所有形如 0 m a1 ... am x 的操作出现在所有形如 1 m a1 ... am 的操作之前。
输出
对每个形如 1 m a1 ... am 的指令,输出一行一个整数,表示 {a_i|i \in [1,m]} 所有子集权值之和对 998244353 取模的值。
样例
| 标准输入 复制文本 |
2 10 0 2 1 2 998244344 0 1 1 1 0 1 2 8 1 1 1 1 2 1 2 1 1 1 1 2 1 2 1 1 2 1 1 1 1 0 |
| 标准输出 复制文本 |
1 9 1 9 8 1 0 |
提示
由于 SoCodingOJ 的 KaTeX 渲染有一些问题,这里暂时用圆括号代替原本表示集合的花括号。
U 的所有子集初始权值为 0 : (\emptyset)=0,(1)=0,(2)=0,(1,2)=0
0 2 1 2 998244344 : (\emptyset)=0,(1)=0,(2)=0,(1,2)=998244344
0 1 1 1 : (\emptyset)=0,(1)=1,(2)=0,(1,2)=998244345
0 1 2 8 : (\emptyset)=0,(1)=1,(2)=8,(1,2)=998244353
1 1 1 : (\emptyset)+(1)=0+1=1
1 2 1 2 : (\emptyset)+(1)+(2)+(1,2)=0+1+8+998244353=998244362\ (\bmod 998244353=9\ )
1 1 2 : (\emptyset)+(2)=0+8=8
1 0 : (\emptyset)=0