#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define popcount __builtin_popcount using namespace std; using namespace atcoder; typedef long long ll; typedef pair P; struct unionfind{ vector par, sz; unionfind() {} unionfind(int n):par(n), sz(n, 1){ for(int i=0; isz[y]) swap(x, y); par[x]=y; sz[y]+=sz[x]; } bool same(int x, int y){ return find(x)==find(y); } int size(int x){ return sz[find(x)]; } }; int main() { int n; cin>>n; int d1[200020]={}, d2[200020]={}, cnt[200020]={}; unionfind uf(200001); int e=0, v=0; for(int i=0; i>h>>w; cnt[h]++; cnt[w]++; if(!uf.same(h, w)) e++; uf.unite(h, w); d1[h]++; d2[w]++; } for(int i=1; i<=200000; i++) if(cnt[i]) v++; if(v-1!=e){ cout<<0<