小杜跑酷
题号:NC247497
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小杜又在玩游戏了!这回他玩的是跑酷游戏!
已知该跑酷地图长为n,有3层,可以理解为一张3×n的地图。令人新奇的是,这张跑酷地图有一些弹射机关。假设玩家现在位置为
每一秒钟,如果玩家没有踩到机关,玩家可以正常向前移动一格;如果玩家踩到机关,即当前玩家位置上存在一个机关,弹射机关会立即随机触发以下一种状态:
1.    上升:将玩家向上向前弹射一格,即将玩家瞬间移动到
2.    跳跃:将玩家向前弹射两格,即将玩家瞬间移动到
3.    下降:将玩家向下向前弹射一格,即将玩家瞬间移动到
如下图所示。

已知小杜起始位于,求小杜最终到达, , 的方案数(对998244353取模)。
(如果两种方案被认为是不同的,那么至少存在一个机关,触发的状态不同)


输入描述:

第一行包括,分别表示跑酷地图的长度和其中包含的机关个数;
接下去m行,每行包括两个正整数,代表弹射机关的位置在(保证任意两个机关位置不同)。

输出描述:

输出三行三个正整数,第行代表最终到达的方案数,答案对 998244353 取模。
示例1

输入

复制
16 4
1 3
2 7
3 11
2 15

输出

复制
5
2
4
示例2

输入

复制
10 1
1 9

输出

复制
2
1
0