// #pragma GCC optimize ("Ofast") // #pragma GCC optimize ("unroll-loops") // #pragma GCC target ("avx,avx2,fma") #include using std::cin, std::cout, std::cerr; using ll = long long; struct Point { ll x, y; Point operator -(Point p) { return {x - p.x, y - p.y}; } ll Dot(Point p) { return x * p.x + y * p.y; } ll Length2() { return Dot(*this); } }; int main() { std::ios::sync_with_stdio(false); int n; cin >> n; std::vector p(n); for(int i = 0; i < n; i ++) cin >> p[i].x >> p[i].y; std::vector del(n); auto simulate = [&]() { auto burst = del; std::vector> t; for(int i = 0; i < n; i ++) for(int j = i + 1; j < n; j ++) t.push_back({(p[i] - p[j]).Length2(), i, j}); std::ranges::sort(t); for(auto [l, i, j] : t) { if(burst[i] || burst[j]) continue; burst[i] = burst[j] = true; if(i == 0) return j; } return -1; }; int ans = 0; while(true) { int x = simulate(); if(x == -1) break; del[x] = true; ans ++; } cout << ans << '\n'; }