#include #include using namespace std; using namespace atcoder; #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define all(x) (x).begin(),(x).end() const long long MOD = 1000000007; const long long INF = 9999999999999999; using ll = long long; using mint = modint1000000007; templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b>N; vector> G(200200); vector aru; ll H[200200] = {}; ll W[200200] = {}; rep(i,N){ ll a,b; cin>>a>>b; if(a == b){ aru.push_back(a); continue; } H[a]++; W[b]++; } ll d = 0; rep(i,aru.size()){ if(H[aru[i]] == 0 && W[aru[i]] == 0){ d = 1; } } ll Hh = 0; ll Wh = 0; rep(i,200200){ if(abs(H[i]-W[i]) > 1){ d = 1; } else if(H[i]-W[i] == 1){ Hh++; } else if(W[i]-H[i] == 1){ Wh++; } else{ continue; } } if(d){ cout << 0 << endl; return 0; } if(Hh == 0 && Wh == 0){ ll ans = 0; rep(i,200200){ if(H[i]>0){ ans++; } } cout << ans << endl; } else if(Hh == 1 && Wh == 1){ cout << 1 << endl; } else{ cout << 0 << endl; } return 0; }