#include <bits/stdc++.h>

using namespace std;

double IzracunajNagib(pair<int, int> tacka1, pair<int, int> tacka2) {
    double y2 = (double)tacka2.second;
    double y1 = (double)tacka1.second;
    double x2 = (double)tacka2.first;
    double x1 = (double)tacka1.first;
    if(x2 - x1 == 0) {
        return 0;
    }
    double m = (y2 - y1)/(x2 - x1);
    return m;
}

int main() {

    int n;

    cin >> n;

    vector<pair<int, int>> tacke;

    for(int i = 0; i < n; i++) {
        int x, y;
        cin >> x >> y;
        pair<int, int> tacka;
        tacka.first = x;
        tacka.second = y;
        tacke.push_back(tacka);
    }

    sort(tacke.begin(), tacke.end(), [](const pair<int, int> &prvi, const pair<int, int> &drugi) {
        return prvi.first < drugi.first;
    });

    int br = 0;

    for(int i = 0; i < tacke.size(); i++) {
        for(int j = i + 1; j < tacke.size(); j++) {
            for(int k = j + 1; k < tacke.size(); k++) {
                for(int l = k + 1; l < tacke.size(); l++) {
                    pair<int, int> tacka1, tacka2, tacka3, tacka4;
                    tacka1.first = tacke[i].first;
                    tacka1.second = tacke[i].second;
                    tacka2.first = tacke[j].first;
                    tacka2.second = tacke[j].second;
                    tacka3.first = tacke[k].first;
                    tacka3.second = tacke[k].second;
                    tacka4.first = tacke[l].first;
                    tacka4.second = tacke[l].second;
                    double str12 = IzracunajNagib(tacka1, tacka2);
                    double str23 = IzracunajNagib(tacka2, tacka3);
                    double str34 = IzracunajNagib(tacka3, tacka4);
                    double str41 = IzracunajNagib(tacka4, tacka1); 
                    if(abs(str12-str34) < 0.000001 || abs(str23-str41) < 0.000001) {
                        br++;
                    }
                }
            }
        }
    }

    cout << br;

}