小y的容器
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

求将1-nn个数放入三个容器中使得容器中的数排序以后相邻两个之差小于等于3的方案数(要保证任意容器中至少有一个数且每个数必须放入一个容器中)
例如某个容器中的数若是则是合法的,若是则不合法,原因是1,5的差超过了3
其中有m个限制x,y代表x不能放在y这个容器中,答案对取模
两个方案不同当且仅当两个方案中至少有一个数所在的容器不同

输入描述:

第一行两个正整数

接下来m行每行个数x,y

输出描述:

输出一行一个数代表答案
示例1

输入

复制
4 1
1 2

输出

复制
24

说明

对于样例[1][2][3,4]是一种合法方案,[1,2][3,4][]是不合法的,因为出现了空的序列,[2][1,3][4]是不合法的,因为1不能放在第二个容器中
示例2

输入

复制
4 3
1 1
1 2
1 3

输出

复制
0