#iroha2019day4g. [iroha2019_day4_g]真実の魔法陣

[iroha2019_day4_g]真実の魔法陣

故事背景

「这是……?」我们到达的地方看到的是一个像魔法阵一样的东西。它模糊不清,有着一些缺口,明显地不完整。
以前的我可能会在不修复它的情况下回去。但现在─── 我想知道"真相"。

问题描述

在你面前画着一个巨大的圆。你需要使用这个圆来完成魔法阵。
魔法阵是由 2N2N 个点等间距地分布在圆周上,并且被划分成 NN 对线段的形状。
圆周上有 2N2N 个点等间距地排列,并以某个点为基准,顺时针从 112N2N 编号。
在你面前的 2N2N 个点中,一些点已经确定了配对关系并通过线段连接起来,而其他点则没有确定配对关系。你需要确定这些配对的方式,以完成魔法阵。

当魔法阵的复杂度被定义为"圆内相交的线段对数"时,你希望尽量减小最终魔法阵的复杂度。
请计算出能够使魔法阵复杂度最小化的配对方式有多少种,并求出其对 109+710^9+7 取余的结果。

约束条件

  • 所有输入均为整数
  • 1leqNleq3001 \\leq N \\leq 300
  • 0leqKleqN0 \\leq K \\leq N
  • 1leqai,bileq2N1 \\leq a_i,b_i\\leq 2N (i=1,2,dots,K)(i=1,2,\\dots,K)
  • a1,a2,..,aK,b1,b2,..,bKa_1,a_2,..,a_K,b_1,b_2,..,b_K 均不相同

输入

第一行包含两个整数,魔法阵的大小 NN 和已配对的线段数量 KK
接下来的 KK 行中,给出了已配对的线段。

NN K K a1a_1 b1b_1 :: aKa_K bKb_K

输出

请输出答案。


示例 1


3 0

输出示例 1


5

魔法阵的最小复杂度为 00
55 种配对方式,使得线段不相交。

示例 2


7 3
1 13
3 11
9 4

输出示例 2


4

最小复杂度为 22。 以下是实现复杂度为 2244 种配对方式。
(2,10),(5,6),(7,8),(12,14)(2,10),(5,6),(7,8),(12,14)
(2,10),(5,8),(6,7),(12,14)(2,10),(5,8),(6,7),(12,14)
(2,14),(5,6),(7,8),(10,12)(2,14),(5,6),(7,8),(10,12)
(2,14),(5,8),(6,7),(10,12)(2,14),(5,8),(6,7),(10,12)

示例 3


30 15
44 36
1 11
53 21
38 52
8 22
26 42
35 2
23 37
30 58
18 17
3 33
51 9
39 14
12 41
4 49

输出示例 3


1136

解释

解释