#include const int MAXN =1e5+5; using namespace std; vector e[MAXN]; unordered_map rcd; int fa[MAXN],dp[MAXN],num[MAXN],cnt[MAXN]; int n,m,tot; int find( int x) { return x==fa[x] ? x:fa[x] =find(fa[x]); } int main() { ios::sync_with_stdio(false); cin >>n >>m; for ( int i=1; i<=n; i++) fa[i] =i; for ( int i=1; i<=m; i++) { int u,v; cin >>u >>v; if ( u==v) continue; if ( u>v) swap(u,v); e[u].push_back(v),e[v].push_back(u); int fu =find(u),fv =find(v); // cout <s) tmp =s; x =i*tmp,s -=tmp; sum +=x; for ( int j=sum-x; ~j; j--) dp[j+x] =min(dp[j+x],tmp+dp[j]); d <<=1; } } for ( int i=1; i<=n; i++) cout <<(dp[i]