#include <bits/stdc++.h>
using namespace std;

#define rep(i, n) for(int i = 0; i < (n); i++)
#define repp(i, l, r) for(int i = (l); i < (r); i++)
#define per(i, n) for(int i = ((n)-1); i >= 0; i--)
#define perr(i, l, r) for(int i = ((r)-1); i >= (l); i--)
#define all(x) (x).begin(),(x).end()
#define MOD 1000000007
#define IINF 1000000000
#define LINF 1000000000000000000
#define SP <<" "<<
#define CYES cout<<"Yes"<<endl
#define CNO cout<<"No"<<endl
#define CFS cin.tie(0);ios::sync_with_stdio(false)

typedef long long LL;
typedef long double LD;

int main(){
  while(1){
    int n,m;
    cin >> n >> m;
    if(n==0) return 0;
    vector<vector<int>> e(n);
    int u,v;
    rep(i,m){
      cin >> u >> v;
      e[u-1].push_back(v-1);
      e[v-1].push_back(u-1);
    }
    queue<int> q;
    vector<int> c(n,-1);
    c[0]=0;
    q.push(0);
    bool ok=true;
    while(!q.empty()){
      int now=q.front();
      q.pop();
      for(auto nx:e[now]){
        if(c[nx]==-1){
          c[nx]=1-c[now];
          q.push(nx);
        }else{
          if(c[nx]==c[now]){
            ok=false;
            goto next;
          }
        }
      }
    }
    next:;
    if(ok){
      set<int> ans;
      int a=0,b=0;
      rep(i,n){
        if(c[i]) a++;
        else b++;
      }
      if(a%2==0) ans.insert(a/2);
      if(b%2==0) ans.insert(b/2);
      cout << ans.size() << endl;
      for(auto x:ans) cout << x << endl;
    }else{
      cout << 0 << endl;
    }
  }
  return 0;
}

