#include struct pi { int x; int y; pi minus() { pi result; result.x = this->x; result.y = this->y; return result; } }; struct picomparator { bool operator() (const pi& a, const pi& b) { if(a.x < b.x) return true; else if(a.x > b.x) return false; else return a.y < b.y; } }; pi piminus(const pi& v1, const pi& v2) { pi result; result.x = v1.x - v2.x; result.y = v1.y - v2.y; return result; } int main() { pi stars[1010]; int totalVectors = 0; int starCount; scanf("%d", &starCount); for(int i = 0; i < starCount; i++) { scanf("%d%d", &stars[i].x, &stars[i].y); } std::set differences[1010]; for(int i = 0; i < starCount; i++) { for(int j = 0; j < starCount; j++) { if(i != j) differences[i].insert(piminus(stars[i], stars[j])); } } std::set possibleDiffVectors; for(int i = 0; i < starCount; i++) { possibleDiffVectors.insert(differences[i].begin(), differences[i].end()); } for(auto it = possibleDiffVectors.begin(); it != possibleDiffVectors.end(); it++) { const pi curr = *it; int i; for(i = 0; i < starCount; i++) { if(differences[i].find(curr) == differences[i].end() && differences[i].find(curr.minus()) == differences[i].end()) break; } if(i == starCount) totalVectors++; } printf("%d", totalVectors); return 0; }