#include<bits/stdc++.h>
using namespace std;
  
typedef long long ll;
int N, M;//街数、道路数
bool adj[1010][1010];
bool visited[1010];
int color[1010];
int counter[2];

bool dfs(int s, int c){
    if(visited[s]) return color[s]==c;
    
    visited[s]=true;
    color[s]=c;
    if(c==1) counter[c]++;
    for(int next=1; next<=N; next++){
        if(adj[s][next] && ! dfs(next, -c)){
            return false;
        }
    }
    return true;
}

int main(void){
    while(cin>>N>>M){
        if(N+M==0) break;
        for(int i=1; i<=N; i++){
            fill(adj[i]+1, adj[i]+(N+1), false);
        }
        
        for(int i=0; i<M; i++){
            int u, v;
            cin>>u>>v;
            adj[u][v]=adj[v][u]=true;
        }
        
        set<int> s;
        fill(visited+1, visited+(N+1), false);
        fill(color+1, color+(N+1), 0);
        fill(counter+0, counter+2, 0);
        
        if(dfs(1, 1)){
            if(counter[1]%2==0){
                s.insert(counter[1]/2);
            }
            if((N-counter[1])%2==0){
                s.insert((N-counter[1])/2);
            }
        }
        
        cout << s.size() << "\n";
        for(auto x: s){
            cout << x << "\n";
        }
        
        
    }
    
    return 0;
}
