#include using namespace std; const int N=1e5+10,INF=1e9; int n,m,cnt,a[N],vis[N],f[N]; vectormp[N]; void dfs(int x) { a[cnt]++; for(auto v:mp[x]) if(!vis[v]) vis[v]=1,dfs(v); } int main() { cin>>n>>m; for(int i=1,u,v;i<=m;i++) { cin>>u>>v; mp[u].push_back(v); mp[v].push_back(u); } for(int i=1;i<=n;i++) if(!vis[i]) vis[i]=1,cnt++,dfs(i); for(int i=1;i<=n;i++)f[i]=INF; f[0]=0; for(int i=1;i<=cnt;i++) for(int j=n;j>=a[i];j--) if(f[j-a[i]]!=INF) f[j]=min(f[j],f[j-a[i]]+1); for(int i=1;i<=n;i++) if(f[i]==INF)cout<<-1<<"\n"; else cout<