#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;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBGIGZpcnN0CiNkZWZpbmUgUyBzZWNvbmQKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IGNvbnN0IE49NTAwMDEsIG1vZD0xZTkrNzsKYm9vbCBvZHdbTl07CmxvbmcgbG9uZyBpbFtOXTsKZG91YmxlIHptOwpwYWlyPGxvbmcgbG9uZyxsb25nIGxvbmc+ZHBbTl07CnZlY3RvcjxpbnQ+Z1tOXTsKCnZvaWQgZGZzKGludCB2LGludCBvKXsKICAgIG9kd1t2XT0xOwogICAgZm9yKGludCBpOmdbdl0pewogICAgICAgIGlmKG9kd1tpXT09MCkgewogICAgICAgIAlkZnMoaSx2KTsKICAgICAgICAJaWxbdl09aWxbdl0qKGRwW2ldLkYrZHBbaV0uUyklbW9kOwogICAgICAgIH0KICAgIH0KICAgIGZvcihpbnQgaTpnW3ZdKXsKICAgIAlpZihpIT1vKXsKICAgIAkJem09aWxbdl0qZHBbaV0uUzsKCSAgICAJaWYoZHBbaV0uRitkcFtpXS5TIT0wKQl6bS89ZHBbaV0uRitkcFtpXS5TOwoJICAgICAgICBkcFt2XS5GPWRwW3ZdLkYrem07CgkgICAgICAgIGRwW3ZdLkYlPW1vZDsKICAgIAl9CiAgICB9CiAgICBkcFt2XS5TPWlsW3ZdJW1vZDsKfQoKaW50IG1haW4oKXsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CgljaW4udGllKDApOwogICAgaW50IG4sbSxhLGI7CiAgICBjaW4+Pm4+Pm07CiAgICBmb3IoaW50IGk9MTtpPD1uO2krKykgICBpbFtpXT0xOwogICAgZm9yKGludCBpPTA7aTxtO2krKyl7CiAgICAJY2luPj5hPj5iOyAgZ1thXS5wdXNoX2JhY2soYik7ICBnW2JdLnB1c2hfYmFjayhhKTsKICAgIH0KICAgIGRmcygxLDApOwogICAgLy9mb3IoaW50IGk9MTtpPD1uO2krKykgY291dDw8ZHBbaV0uRjw8JyAnPDxkcFtpXS5TPDxlbmRsOwogICAgY291dDw8KGRwWzFdLkYrZHBbMV0uUyklbW9kOwp9Cg==