#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=5e5+10;
const int M=N<<2;
const int mod=1e9+7;
int n,m,ans;
struct edge
{
	int u,v,next;
}e[M];
int cnt=1,head[N];
void add(int u,int v)
{
	e[++cnt]={u,v,head[u]};
	head[u]=cnt;
}
int ksm(int a,int l)
{
	int res=1;
	for(;l;l>>=1,a=a*a%mod)
		if(l&1) res=res*a%mod;
	return res;
}
signed main()
{
	freopen("barrack.in","r",stdin);
	freopen("barrack.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin>>n>>m;
	for(int i=1,u,v;i<=m;i++)
	{
		cin>>u>>v;
		add(u,v);
		add(v,u);
	}
	for(int i=1;i<=n;i++)
	{
		ans=(ans+i*ksm(2,i-1)%mod)%mod;	
	}
	cout<<ans;
}