#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; #define fi first #define se second #define mp make_pair #define mt make_tuple #define pqueue priority_queue const int inf=1e9+7; const ll mod=1e9+7; const ll mod1=998244353; const ll big=1e18; const double PI=2*asin(1); int main() { int N; cin>>N; ll x[N], y[N]; for(int i=0;i>x[i]>>y[i]; priority_queue, vector >, greater > > que; for(int i=0;i amap; int ans = 0; tuple state; int x1, y1; while(!que.empty()) { state = que.top();que.pop(); x1 = get<1>(state); y1 = get<2>(state); if(amap[x1]>0 || amap[y1]>0) continue; if(x1==0 || y1==0) ans++; if(x1!=0) amap[x1]++; if(y1!=0) amap[y1]++; } cout<