#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; using namespace atcoder; typedef long long ll; typedef pair P; int main() { int n, m; cin>>n>>m; using mint=modint1000000007; vector> v[100010]; int par[100010]; for(int i=0; i>a>>b; a--; b--; a=par[a], b=par[b]; if(a==b) continue; if(v[a].size()>v[b].size()) swap(a, b); if(v[a].size()!=v[b].size()){ while(!v[a].empty()){ auto p=v[a].back(); v[a].pop_back(); v[b].push_back(make_pair(mint(0), p.second)); par[p.second]=b; } }else{ for(auto &p:v[b]) p.first/=mint(2); while(!v[a].empty()){ auto p=v[a].back(); v[a].pop_back(); v[b].push_back(make_pair(p.first/mint(2), p.second)); par[p.second]=b; } } } mint ans[100010]; for(int i=0; i