#include<bits/stdc++.h>
#define F first
#define S second
using namespace std;
int const N=50001, mod=1e9+7;
bool odw[N];
long long il[N];
double zm;
pair<long long,long long>dp[N];
vector<int>g[N];

void dfs(int v,int o){
    odw[v]=1;
    for(int i:g[v]){
        if(odw[i]==0) {
        	dfs(i,v);
        	il[v]=il[v]*(dp[i].F+dp[i].S)%mod;
        }
    }
    for(int i:g[v]){
    	if(i!=o){
    		zm=il[v]*dp[i].S;
	    	if(dp[i].F+dp[i].S!=0)	zm/=dp[i].F+dp[i].S;
	        dp[v].F=dp[v].F+zm;
	        dp[v].F%=mod;
    	}
    }
    dp[v].S=il[v]%mod;
}

int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
    int n,m,a,b;
    cin>>n>>m;
    for(int i=1;i<=n;i++)   il[i]=1;
    for(int i=0;i<m;i++){
    	cin>>a>>b;  g[a].push_back(b);  g[b].push_back(a);
    }
    dfs(1,0);
    //for(int i=1;i<=n;i++) cout<<dp[i].F<<' '<<dp[i].S<<endl;
    cout<<(dp[1].F+dp[1].S)%mod;
}
