#include<bits/stdc++.h>
#define maxn 610
#define ll long long
#define mod 1000000007
using namespace std;
int f[maxn][maxn], pr[maxn], tot[maxn], pre[maxn], g[maxn][maxn];
int main()
{
	int n, m;
	scanf("%d%d", &n, &m);
	n *= 2;
	for (int i = 1; i <= m; i++)
	{
		int x, y;
		scanf("%d%d", &x, &y);
		pr[x] = y; pr[y] = x;
	}
	for (int i = 1; i <= n; i++)
		if (pr[i] == 0) pre[i] = pre[i - 1] + 1;
		else pre[i] = pre[i - 1];
	for (int i = 1; i <= n - 1; i++)
		if ((pr[i] || pr[i + 1]) && pr[i] != i + 1) f[i][i + 1] = 0;
		else f[i][i + 1] = g[i][i + 1] = 1;
	tot[0] = 1;
	for (int i = 1; i <= n; i++)
		if (i % 2) tot[i] = 0;
		else tot[i] = ((ll)i - 1) * tot[i - 2] % mod;
	for (int len = 4; len <= n; len += 2)
		for (int i = 1; i <= n - len + 1; i++)
		{
			int j = i + len - 1, flag = 1;
			for (int k = i; k <= j; k++)
				if (pr[k] && (pr[k] < i || pr[k] > j)) flag = 0;
			if (flag == 0) continue;
			f[i][j] = g[i][j] = tot[pre[j] - pre[i - 1]];
			for (int k = i + 1; k < j; k += 2)
				f[i][j] = (f[i][j] - (ll)f[i][k] * g[k + 1][j] % mod + mod) % mod;
		}
	int res = 0;
	for (int i = 1; i <= n; i++)
		for (int j = i + 1; j <= n; j += 2)
		{
			if (f[i][j] == 0) continue;
			int tmp = pre[n] - (pre[j] - pre[i - 1]);
			res = (res + (ll)f[i][j] * tot[tmp] % mod) % mod;
		}
	printf("%d\n", res);
	return 0;
}