#include <bits/stdc++.h>   using namespace std;   int has[205][205];   int vis[205][205];   vector<pair<int, int> > q;   int gcd(int x, int y) {     if (x < y) swap(x, y);     while (y) {       int t = x % y;       x = y;       y = t;     }     return x;   }   int main() {     int n;     scanf( %d , &n);     for (int i = 0; i < n; i++) {       int x, y;       scanf( %d%d , &x, &y);       q.push_back(make_pair(y + 100, x + 100));       has[x + 100][y + 100] = 1;     }     sort(q.begin(), q.end());     if (n < 3) {       printf( 0 n );       return 0;     }     long long ans1 = 0;     int hehe = 0;     int L = q.size();     for (int i = 1; i <= 200; i++) {       for (int j = 1; j <= 200; j++) {         if (gcd(i, j) != 1) continue;         memset(vis, 0, sizeof(vis));         for (int k = 0; k < L; k++) {           int yy = q[k].first;           int xx = q[k].second;           if (vis[xx][yy]) continue;           int res = 0;           while (xx <= 200 && yy <= 200) {             vis[xx][yy] = 1;             res += has[xx][yy];             xx += i;             yy += j;           }           if (res > 2) ans1 += (long long)res * (res - 1) * (res - 2) / 6;         }         memset(vis, 0, sizeof(vis));         for (int k = 0; k < L; k++) {           int yy = q[k].first;           int xx = q[k].second;           if (vis[xx][yy]) continue;           int res = 0;           while (xx >= 0 && yy <= 200) {             vis[xx][yy] = 1;             res += has[xx][yy];             xx -= i;             yy += j;           }           if (res > 2) ans1 += (long long)res * (res - 1) * (res - 2) / 6;         }       }     }     for (int i = 0; i <= 200; i++) {       int xx = i;       int yy = 0;       int res = 0;       while (xx <= 200 && yy <= 200) {         res += has[xx][yy];         yy += 1;       }       if (res >= 3) {         ans1 += (long long)res * (res - 1) * (res - 2) / 6;       }     }     for (int i = 0; i <= 200; i++) {       int xx = 0;       int yy = i;       int res = 0;       while (xx <= 200 && yy <= 200) {         res += has[xx][yy];         xx += 1;       }       if (res >= 3) {         ans1 += (long long)res * (res - 1) * (res - 2) / 6;       }     }     long long ans = (long long)n * (n - 1) * (n - 2) / 6 - ans1;     cout << ans << endl;     return 0;   }   