#include<cstdio>
#define RI register int
#define CI const int&
using namespace std;
const int N=605,mod=1e9+7;
int n,k,x,y,f[N][N],p[N],g[N],sum[N],ans;
inline void DP(CI l,CI r)
{
	if ((sum[r]-sum[l-1])&1) return; RI i;
	for (i=l;i<=r;++i) if (p[i]&&(p[i]<l||p[i]>r)) return;
	int ret=g[sum[r]-sum[l-1]]; for (i=l+1;i<=r;++i)
	if (f[l][i-1]) ret=(ret-1LL*f[l][i-1]*g[sum[r]-sum[i-1]]%mod+mod)%mod;
	f[l][r]=ret; (ans+=1LL*ret*g[n-(k<<1)-(sum[r]-sum[l-1])]%mod)%=mod;
}
int main()
{
	RI i,j; for (scanf("%d%d",&n,&k),n<<=1,i=1;i<=k;++i)
	scanf("%d%d",&x,&y),p[x]=y,p[y]=x;
	for (g[0]=1,i=2;i<=n;i+=2) g[i]=1LL*g[i-2]*(i-1)%mod;
	for (i=1;i<=n;++i) sum[i]=sum[i-1]+(!p[i]);
	for (j=1;j<=n;++j) for (i=n;i-j+1;--i) DP(i-j+1,i);
	return printf("%d",ans),0;
}