欧拉回路
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
#define MAXN 100050
typedef long long ll;
int n,m;
int par[MAXN];
int ran[MAXN];
void init()
{
for(int i=1;i<=n;i++)
{
par[i]=i;
ran[i]=1;
}
}
int find(int x)
{
if(par[x]==x) return x;
return x=find(par[x]);
}
void unite(int a,int b)
{
a=find(a);
b=find(b);
if(a==b) return ;
if(ran[a]<ran[b])
{
par[a]=b;
}
else
{
par[b]=a;
if(ran[a]==ran[b])
{
ran[a]++;
}
}
}
int same(int a,int b)
{
return find(a)==find(b);
}
struct point
{
int x,y;
}s[MAXN];
int ind[MAXN];
int main()
{
ios::sync_with_stdio(0);
while(cin>>n&&n)
{
memset(ind,0,sizeof(ind));
cin>>m;
init();
int ans=0;
for(int i=0;i<m;i++)
{
cin>>s[i].x>>s[i].y;
unite(s[i].x,s[i].y);
ind[s[i].x]++;
ind[s[i].y]++;
}
for(int i=1;i<=n;i++)
{
if(par[i]==i) ans++;
}
if(ans>1) cout<<"0"<<endl;
else
{
int flag=1;
for(int i=1;i<=n;i++)
{
if(ind[i]&1||ind[i]==0)
{
flag=0;
break;
}
}
cout<<flag<<endl;
}
}
return 0;
}