#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long int ll; typedef unsigned long long ull; vector> v[55][55]; double dist(pair x,pair y){ return sqrt((x.first-y.first)*(x.first-y.first)+(x.second-y.second)*(x.second-y.second)); } int main(){ cin.tie(nullptr); ios::sync_with_stdio(false); int n; cin >> n; vector x(n),y(n); vector> vv; map,int> mp; for(int i=0;i> x[i] >> y[i]; v[x[i]/10][y[i]/10].push_back({x[i],y[i]}); vv.push_back(make_pair(x[i],y[i])); mp[make_pair(x[i],y[i])]=i+1; } set> st; vector res; sort(vv.begin(), vv.end(),[](auto i,auto j){ return (i.first+i.second)<(j.first+j.second); }); for(int i=0;i10)continue; else{ st.insert(p); } } for(auto p:v[vv[i].first/10+1][vv[i].second/10]){ if(dist(vv[i],p)>10)continue; else{ st.insert(p); } } for(auto p:v[vv[i].first/10+1][vv[i].second/10+1]){ if(dist(vv[i],p)>10)continue; else{ st.insert(p); } } for(auto p:v[vv[i].first/10+1][max(0,vv[i].second/10-1)]){ if(dist(vv[i],p)>10)continue; else{ st.insert(p); } } for(auto p:v[vv[i].first/10][vv[i].second/10+1]){ if(dist(vv[i],p)>10)continue; else{ st.insert(p); } } for(auto p:v[max(0,vv[i].first/10-1)][vv[i].second/10]){ if(dist(vv[i],p)>10)continue; else{ st.insert(p); } } for(auto p:v[max(0,vv[i].first/10-1)][vv[i].second/10+1]){ if(dist(vv[i],p)>10)continue; else{ st.insert(p); } } for(auto p:v[max(0,vv[i].first/10-1)][max(0,vv[i].second/10-1)]){ if(dist(vv[i],p)>10)continue; else{ st.insert(p); } } for(auto p:v[vv[i].first/10][max(0,vv[i].second/10-1)]){ if(dist(vv[i],p)>10)continue; else{ st.insert(p); } } } } printf("%d\n",res.size()); for(int i=0;i