/** * @FileName a.cpp * @Author kanpurin * @Created 2020.05.25 18:40:40 **/ #include "bits/stdc++.h" using namespace std; typedef long long ll; vector< tuple< ll, ll, ll, ll > > v; // (a,b)-(c,d)を通る直線がv[t]を通るか bool f(int a, int b, int c, int d, int t) { int x1 = get<0>(v[t]); int y1 = get<1>(v[t]); int x2 = get<2>(v[t]); int y2 = get<3>(v[t]); if (((b-d)*(x1-a)+(c-a)*(y1-b)) * ((b-d)*(x2-a)+(c-a)*(y2-b)) <= 0) { return true; } return false; } int main() { int n; cin >> n; v.resize(n); vector< pair< ll, ll > > v2; for (int i = 0; i < n; i++) { ll a, b, c, d; cin >> a >> b >> c >> d; v[i] = make_tuple(a, b, c, d); v2.push_back({a, b}); v2.push_back({c, d}); } int ans = 0; for (int i = 0; i < v2.size(); i++) { for (int j = i + 1; j < v2.size(); j++) { int cnt = 0; for (int k = 0; k < n; k++) { if (f(v2[i].first, v2[i].second, v2[j].first, v2[j].second, k)) { cnt++; } } ans = max(ans,cnt); } } cout << ans << endl; return 0; }