#agc028d. [agc028_d]Chords

[agc028_d]Chords

题目描述

在一个圆的周长上均匀地分布有 2N2N 个点。这些点按顺时针顺序编号为 112N2N,从其中一些点开始。

Snuke 将这些点分成 NN 对,然后对于每一对,他将连接两个点之间的线段。在绘制完线段之后,两个点被 连接 当且仅当一个点可以通过只沿着线段行走到达另一个点。这里所说的 连接部分的数量 指的是具有 2N2N 个顶点的图中连接组件的数量,其中每一对对应的两个连接点的顶点之间都存在边。

Snuke 已经决定了 KK 对,其中第 ii 对是点 AiA_i 和点 BiB_i

他打算尝试所有可能的方法来生成剩下的 NKN-K 对,并计算每种方法中连接部分的数量。求这些连接部分的数量之和。由于答案可能非常大,计算取模 109+710^9+7 后的和。

约束条件

  • 1N3001 \leq N \leq 300
  • 0KN0 \leq K \leq N
  • 1Ai,Bi2N1 \leq A_i,B_i \leq 2N
  • A1,A2,...,AK,B1,B2,...,BKA_1, A_2, ..., A_K, B_1, B_2, ..., B_K 两两不相同。
  • 输入数据中的所有值均为整数。

输入

从标准输入读入输入数据,输入格式如下:

NN KK A1A_1 B1B_1 A2A_2 B2B_2 :: AKA_K BKB_K

输出

打印出对于生成剩下的 NKN-K 对的所有可能方法,连接部分的数量之和。


示例输入1

2 0

示例输出1

5

有三种画线段的方式,如下所示,这些方式的连接部分数量分别为 222211。因此,答案是 2+2+1=52+2+1=5


示例输入2

4 2
5 2
6 1

示例输出2

6

示例输入3

20 10
10 18
11 17
14 7
4 6
30 28
19 24
29 22
25 32
38 34
36 39

示例输出3

27087418