
#include <cstdio>
#include <algorithm>

using namespace std;
const int Max_N(605);
const int MOD(1000000000 + 7);

constexpr int Mult(int a, int b)
{
	return a * 1LL * b % MOD;
}

constexpr int Add(int a, int b)
{
	return a + b >= MOD ? a + b - MOD : a + b;
}

constexpr int Sub(int a, int b)
{
	return a - b < 0 ? a - b + MOD : a - b;
}

inline void upd(int &a, int b)
{
	a = Add(a, b);
}

inline void inc(int &a, int b)
{
	a = Sub(a, b);
}

int N, K, P[Max_N], F[Max_N][Max_N], H[Max_N], Cnt[Max_N][Max_N];

int main()
{
	scanf("%d%d", &N, &K), N <<= 1;
	for (int i = 1;i <= N;++i)
		Cnt[i][i] = 1;
	for (int a, b, i = 1;i <= K;++i)
		scanf("%d%d", &a, &b), P[a] = b, P[b] = a;
	for (int a = 1;a <= N;++a)
		for (int b = a;b <= N;++b)
			Cnt[a][b] = Cnt[a][b - 1] + (P[b] == 0);
	H[0] = 1;
	for (int n = 2;n <= N;n += 2)
		H[n] = Mult(n - 1, H[n - 2]);
	for (int ad = 1;ad <= N;++ad)
		for (int i = 1, j = ad;j <= N;++i, ++j)
		{
			for (int k = i;k <= j;++k)
				if (P[k] && (P[k] < i || P[k] > j))
					goto loop;
			F[i][j] = H[Cnt[i][j]];
			for (int k = i + 1;k <= j - 1;++k)
				inc(F[i][j], Mult(F[i][k], H[Cnt[k + 1][j]]));
			loop :
			;
		}
	int Ans = 0;
	for (int i = 1;i <= N;++i)
		for (int j = i + 1;j <= N;++j)
			upd(Ans, Mult(F[i][j], H[(N / 2 - K) * 2 - Cnt[i][j]]));
	printf("%d", Ans); 
	return 0;
}