#include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(x, to) for (int x = 0; x < (to); x++) #define REP(x, a, to) for (int x = (a); x < (to); x++) #define foreach(itr, x) for (typeof((x).begin()) itr = (x).begin(); itr != (x).end(); itr++) #define sq(x) ((x) * (x)) using namespace std; typedef long long ll; typedef pair PII; typedef pair PLL; const int BOX_N = 205; int N; int X[100005]; int Y[100005]; vector< vector< vector > > box(BOX_N); int ans; int mx[] = {1, 1, 0, -1, -1, -1, 0, 1}; int my[] = {0, 1, 1, 1, 0, -1,-1,-1}; int dist(PII a, PII b) { return sq(a.first - b.first) + sq(a.second - b.second); } void solve(int x, int y) { int bx = x / 100; int by = y / 100; bool add = true; //着目 { rep(i, box[by][bx].size()) { if (dist(box[by][bx][i], PII(y, x)) < 400) { add = false; } } } //着目近傍 rep(k, 8) { int nx = bx + mx[k]; int ny = by + my[k]; if (nx < 0 || ny < 0) continue; rep(i, box[ny][nx].size()) { if (dist(box[ny][nx][i], PII(y, x)) < 400) { add = false; } } } if (add) { box[by][bx].push_back(PII(y, x)); ans++; } } int main() { rep(i, BOX_N) box[i].resize(BOX_N); cin >> N; rep(i, N) { cin >> X[i] >> Y[i]; solve(X[i], Y[i]); } cout << ans << endl; return 0; }