#include <bits/stdc++.h>
#define For(i,x,y) for(int i=(x);i<=(y);++i)
#define Fov(i,x,y) for(int i=(x);i>=(y);--i)
#define Fo(i,x,y) for(int i=(x);i<(y);++i)
#define midf(a,b) ((a)+(b)>>1)
#define L(_) (_)<<1
#define R(_) ((_)<<1)|1
#define fi first
#define se second
#define ss(_) scanf("%s",_)
#define si(_) scanf("%d",&_)
#define sii(x,y) scanf("%d%d",&x,&y)
#define siii(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define sl(_) scanf("%I64d",&_)
#define mem(x,y) memset(x,y,sizeof(x))
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int>P;
inline int read()
{
char ch=getchar(); int x=0, f=1;
while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar();}
while('0'<=ch&&ch<='9') { x=x*10+ch-'0'; ch=getchar();}
return x*f;
}
const int inf=0x3f3f3f3f;
const double pi=acos(-1.0);
const int mod=1e9+7;
const int n_max=1e3+10;
int p[n_max],d[n_max],r[n_max];
void init(int n)
{
For(i,1,n)
{
p[i]=i;
r[i]=1;
d[i]=0;
}
}
int Find(int x)
{
if(x==p[x]) return x;
return p[x]=Find(p[x]);
}
void unite(int x,int y)
{
x=Find(x);
y=Find(y);
if(x==y) return;
if(r[x]>r[y]) p[y]=x;
else
{
p[x]=y;
if(r[x]==r[y]) ++r[y];
}
}
int main()
{
//freopen("in.txt","r",stdin);
int n,m;
while(~si(n)&&n)
{
si(m);
init(n);
int u,v;
For(i,1,m)
{
sii(u,v);
++d[u];
++d[v];
unite(u,v);
}
int anc=Find(1),flag=0;
For(i,1,n)
{
if(Find(i)!=anc)
{
flag=1;
break;
}
if(d[i]&1)
{
flag=1;
break;
}
}
if(flag) puts("0");
else puts("1");
}
return 0;
}