#include<bits/stdc++.h>
using namespace std;
using P = pair<int, int>;

int n;
vector<P> ps;

int gcd(int a, int b) {
    while (b > 0) {
        int t = a % b;
        a = b;
        b = t;
    }
    return a;
}

int cnt(const map<P, int>& mp) {
    int ret = 0;
    for (auto& i : mp)
        ret += i.second * (i.second - 1) / 2;

    return ret;
}

P getpair(int i, int j) {
    int dx = ps[j].first - ps[i].first;
    int dy = ps[j].second - ps[i].second;
    int g = gcd(abs(dx), abs(dy));
    dx /= g;
    dy /= g;
    if (dx > 0 || dx == 0 && dy >= 0)
        return P(dx, dy);
    else
        return P(-dx, -dy);
}

int dfs(int s, map<P, int>& mp) {
    if (s == 0) return cnt(mp);
    int fir = -1;
    for (int i = 0; i < n; ++i) {
        if ((s >> i) & 1) {
            fir = i;
            s ^= 1 << i;
            break;
        }
    }
    int ma = 0;
    for (int i = 0; i < n; ++i) {
        if ((s >> i) & 1) {
            P p = getpair(i, fir);
            ++mp[p];
            ma = max(ma, dfs(s ^ (1 << i), mp));
            --mp[p];
        }
    }
    return ma;
}

int main() {
    cin >> n;
    ps = vector<P>(n);
    for (int i = 0; i < n; ++i) {
        cin >> ps[i].first >> ps[i].second;
    }
    map<P, int> mp;
    cout << dfs((1 << n) - 1, mp) << "\n";
    return 0;
}

