#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
const int INF = 1001001001;
const int dx[4] = {1,0,-1,0};
const int dy[4] = {0,1,0,-1};
std::string to_string(long long);
using std::stol;

int main() {
ll n;
cin >> n;
vector<double> x(n);
vector<double> y(n);
ll ans = 0;
rep(i,n) {
    cin >> x[i] >> y[i];

}
for(ll i = 0;i < n;i++) {
    double cnt;
    for(ll j = i+1;j < n;j++) {
        double cnt = (y[i]-y[j]) /(x[i]-x[j]);
        if (cnt >= -1 && cnt <= 1) ans++;
    }
}
cout << ans << endl;



return 0;
}

#include<iostream>
#include<vector>
using namespace std;

float findslope(vector<long> point1, vector<long> point2)
{
  double x1 = point1[0];
  double y1 = point1[1];
  double x2 = point2[0];
  double y2 = point2[1];
  return ((y2-y1)/(x2-x1));
}

int main(){
  long N;
  cin >> N;
  vector<vector<long>> coordinates;
  coordinates.resize(N);
  long x,y;
  for(int i=0;i<N;++i)
  {
    cin >> x >> y;
    coordinates[i].push_back(x);
    coordinates[i].push_back(y);
  }
  
  int count=0;
  float slope;
  
  for(int i=0;i<N;++i)
  {
    for(int j=0;j<N;++j)
    {
      if(i==j) continue;
      slope = findslope(coordinates[i], coordinates[j]);
      if(slope >= -1 && slope <= 1) 
      {
        ++count;
      }
    }
  }
  
  cout << count/2;
}
