[SNOI2019]纸牌
题号:NC50789
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

有一副纸牌。牌一共有n种,分别标有,每种有C张。故这副牌共有nC张。
三张连号的牌(i,i+1,i+2)或三张相同的牌(i,i,i)可以组成一。如果一组牌可以分成若干(包括零),就称其为一组王牌
你从牌堆中摸了一些初始牌。现在你想再挑出一些牌组成一组王牌,请问有多少种可能组成的王牌呢?答案对998244353取模。
两组牌相同当且仅当它们含有的每一种牌数量都相同。

输入描述:

第1行两个整数n,C表示牌的种类数和每种的张数;
第2行一个整数X表示初始牌的种类数;
接下来X行每行两个整数k_i,a_i,表示初始牌中有a_ik_i号牌。每行的k_i依次递增。

输出描述:

输出1行1个自然数表示答案,对998244353取模。
示例1

输入

复制
3 3
0

输出

复制
10

说明

所有方案如下:

1.{ }(不选任何牌)

2.{1,1,1 }
3.{2,2,2 }

4.{3,3,3 }

5.{1,2,3 }
6.{1,1,1,2,2,2 }
7.{1,1,1,3,3,3 }
8.{2,2,2,3,3,3 }
9.{1,1,2,2,3,3 }
10.{1,1,1,2,2,2,3,3,3 }
示例2

输入

复制
9 4
9
1 3
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 3

输出

复制
3521

备注:

对于所有数据,
注意a_i和C可能为0。
对于的数据,n=9,C=4;
对于另外的数据,
对于另外的数据,
对于另外的数据,X=0;
对于另外的数据,
对于余下的数据,无特殊限制