#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef pair<ll,ll> pll;
typedef long double D;
#define F first
#define S second
const ll MOD=1000000007;
const ll E=1e18;

ll gcd(ll a,ll b){
  while(a%b){a%=b; swap(a,b);}
  return b;
}

bool same(pll a,pll b,pll c,pll d){
  b.F-=a.F; b.S-=a.S;
  d.F-=c.F; d.S-=c.S;
  if(b.S==0 && d.S==0){return true;}
  if(b.S==0 || d.S==0){return false;}
  ll g=gcd(abs(b.F),abs(b.S));
  b.F/=g; b.S/=g;
  if(b.S<0){b.S*=-1; b.F*=-1;}
  g=gcd(abs(d.F),abs(d.S));
  d.F/=g; d.S/=g;
  if(d.S<0){d.S*=-1; d.F*=-1;}
  return b==d || (b.F==0 && d.F==0);
}


int main(){
  ll n;
  cin>>n;
  vector<pll> A(n);
  const ll MX=1LL<<n;
  for(auto &I:A){cin>>I.F>>I.S;}
  vector<ll> dp(MX,0);
  vector<int> dp2(MX);
  vector<ll> bitcount(MX,0);
  for(int i=0;i<MX;i++){
    for(int j=0;j<n;j++){bitcount[i]+=i>>j&1;}
    bitcount[i]/=2;
  }
  for(int i=0;i<n;i++){
    for(int t=i+1;t<n;t++){
      for(auto &I:dp2){I=0;}
      dp2[0]=1;
      for(ll j=1;j<MX;j++){
	ll B=-1;
	for(int k=0;k<n;k++){
	  if(j>>k&1){B=k; break;}
	}
	for(int k=B+1;k<n;k++){
	  if(j>>k&1 && dp2[j^(1LL<<B)^(1LL<<k)] && same(A[i],A[t],A[B],A[k])){dp2[j]=1;}
	}
      }
      for(int j=0;j<MX;j++){
	if(dp2[j]){dp[j]=bitcount[j]*(bitcount[j]-1)/2;}
      }
    }
  }
  for(int i=0;i<MX;i++){
    ll z=(MX-1)^i;
    for(int k=z;k>0;k=(k-1)&z){
      dp[i^k]=max(dp[i^k],dp[i]+dp[k]);
    }
  }
  cout<<dp.back()<<endl;
  

  return 0;
}

