#include <bits/stdc++.h>
#include <cstring>
#include <vector>
using namespace std;
int N, M;
int a, b;
int g[1001][1001];
void dfs(int v,vector<bool> &visited) {
    visited[v] = 1;
    for (int i = 1; i <= N; i++) {
        if (visited[i]==0&&g[v][i] == 1) {
            dfs(i,visited);
        }
    }
}
int main() {
    while (cin >> N && N) {
        cin >> M;
        memset(g, 0, sizeof(g));
        vector<int>degree(M + 1, 0);
        for (int i = 0; i < M; i++) {
            cin >> a >> b;
            if (a == b) continue;
            degree[a]++;
            degree[b]++;
            g[a][b] =g[b][a]= 1;
        }
        //判断连通与否
        bool can = 1;
        vector<bool> visited(N + 1, 0);
        dfs(1,visited);
        for (int i = 1; i <= N; i++) {
            //如果没被遍历,并且度数不为0,则不是孤立点,不存在欧拉回路
            if (visited[i] == 0 && degree[i] != 0) {
                cout << "0" << endl;
                can = 0;
                break;
            }
        }
        if (can == 1) {
            //判断度数是否都是偶数
            for (int i = 1; i <= N; i++) {
                //不是偶数,返回0
                if (degree[i] % 2 == 1) {
                    cout << "0" << endl;
                    can = 0;
                    break;
                }
            }
            if (can == 1) {
                cout << "1" << endl;
            }
        }
    }
}
// 64 位输出请用 printf("%lld")