/* TASK: tri LANG: C++ FROM: CodeIT Round6 IDEA: hashing NOTES: - AUTHOR: Yasen Trifonov */ #include #include #include #include #define pb push_back #define MAXN (100001) using namespace std; typedef long long ll; struct node { long long a, b; double f; node() {} node(ll A, ll B) : a(A), b(B) { f = (double) A / (double) B; } bool operator< (const node& b) const { return f < b.f; } }; vector all; inline void solve() { int last = 0; int ans = 0; sort(all.begin(), all.end()); for (int i=1; i < (int)all.size(); ++i) if (all[i].a * all[i-1].b != all[i].b * all[i-1].a) { if (ans < i-last) ans = i-last; last = i; } last = (int)all.size() - last; if (ans < last) ans = last; printf("%d\n", ans); } inline void read() { int n; scanf("%d", &n); assert(n > 0); assert(n < MAXN); for (int a, b, c, d, e, f, i=0; i < n; ++i) { scanf("%d%d %d%d %d%d", &a, &b, &c, &d, &e, &f); assert(abs(a) <= 1000); assert(abs(b) <= 1000); assert(abs(c) <= 1000); assert(abs(d) <= 1000); assert(abs(e) <= 1000); assert(abs(f) <= 1000); ll A = (a-c)*(a-c) + (b-d)*(b-d); ll B = (a-e)*(a-e) + (b-f)*(b-f); ll C = (c-e)*(c-e) + (d-f)*(d-f); if (A == B) all.pb(node(A, C)); else if (B == C) all.pb(node(B, A)); else if (C == A) all.pb(node(C, B)); } } int main() { freopen("tri.in", "r", stdin); freopen("tri.out", "w", stdout); read(); solve(); return 0; }