#include<bits/stdc++.h>
using namespace std;
const long long p=1e9+7;
const int maxn=1e6+9;
int n,m;
long long ans[maxn];
long long js(int a){
	if(ans[a])return ans[a];
	return 2*js(a-1)%p;
}
long long c(int x){
	long long sump=1;
	for(int i=1;i<=x;i++){
		sump=sump*(n-i+1)/i%p;
	}
	return sump;
}
int main(){
	freopen("barrack.in","r",stdin);
	freopen("barrack.out","w",stdout);
	cin>>n>>m;
	int l,r;
	for(int i=1;i<=m;i++){
		cin>>l>>r;
	}
	ans[1]=2;ans[0]=1;
	for(int i=1;i<=m;i++){
		ans[i]=js(i);
	}
	long long sum=0;
	for(int i=1;i<=m;i++){
		sum=(sum+(c(i+1)*ans[m-i]*ans[i-1])%p)%p;
	}
	sum=(sum+(n*ans[m])%p)%p;
	cout<<sum;
}
