#include #define ll long long using namespace std; int n,m; vector g[100010]; int fa[100010]; int siz[100010]; int tot=0,a[100010],t[100010]; int dp[510]; inline int find(int k) { if(k==fa[k]) return k; return fa[k]=find(fa[k]); } int main() { scanf("%d%d",&n,&m); for(register int i=1;i<=n;i++) fa[i]=i,siz[i]=1; for(register int i=1;i<=m;i++) { int u,v; scanf("%d%d",&u,&v); int fx=find(u),fy=find(v); if(fx==fy) continue; fa[fx]=fy,siz[fy]+=siz[fx],siz[fx]=0; } for(register int i=1;i<=n;i++) if(fa[i]==i) tot++,a[tot]=siz[i],t[a[tot]]++; sort(a+1,a+tot+1); tot=unique(a+1,a+tot+1)-a-1; dp[0]=0; for(register int i=1;i<=n;i++) dp[i]=1e9; for(register int i=1;i<=tot;i++) for(register int k=1;t[a[i]]>0;k*=2) { int x=min(k,t[a[i]]); for(register int j=n;j>=a[i]*x;j--) dp[j]=min(dp[j],dp[j-a[i]*x]+x); t[a[i]]-=x; } for(register int i=1;i<=n;i++) if(dp[i]==1e9) puts("-1"); else printf("%d\n",dp[i]-1); return 0; }