mod = 1000000007 eps = 10**-9 def main(): import sys input = sys.stdin.buffer.readline class UnionFind(): def __init__(self, n): self.n = n self.root = [-1] * (n + 1) self.rnk = [0] * (n + 1) def find_root(self, x): while self.root[x] >= 0: x = self.root[x] return x def unite(self, x, y): x = self.find_root(x) y = self.find_root(y) if x == y: return elif self.rnk[x] > self.rnk[y]: self.root[x] += self.root[y] self.root[y] = x else: self.root[y] += self.root[x] self.root[x] = y if self.rnk[x] == self.rnk[y]: self.rnk[y] += 1 def isSameGroup(self, x, y): return self.find_root(x) == self.find_root(y) def size(self, x): return -self.root[self.find_root(x)] N = int(input()) UF = UnionFind(2*10**5+1) cnt = [0] * (2*10**5+1) HW = set() for _ in range(N): h, w = map(int, input().split()) UF.unite(h, w) HW.add(h) HW.add(w) cnt[h] -= 1 cnt[w] += 1 M = len(HW) for h in HW: if UF.size(h) != M: print(0) exit() flg = 0 for h in HW: if cnt[h] == 1: flg += 1 elif cnt[h] > 1: flg = -1 if flg == 0: print(M) elif flg == 1: print(1) else: print(0) if __name__ == '__main__': main()