#include <stdio.h>
#include <stdlib.h>

struct tacka{
    long long x;
    long long y;
};

struct tacka a[10000];

long long stepen(int n,int k){
    if(k==0){
        return 1;
    }
    if(k%2==0){
        return stepen(n*n,k/2);
    }
    return stepen(n,k-1)*n;
}

int main()
{
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%lld%lld",&a[i].x,&a[i].y);
    }
    long long ukupno=0;
    float b;
    for(int i=0;i<n;i++){
        for(int j=i+1;j<n;j++){
            if(a[i].x==a[j].x){
                if(a[i].x==0){
                    ukupno++;
                }
                continue;
            }
            b=(float)a[i].y-a[i].x*(a[i].y-a[j].y)/(a[i].x-a[j].x);
            if(b==0){
                ukupno++;
            }
        }
    }

    float p,p1,p2,p3;
    long long broj;
    for(int i=0;i<n;i++){
        if(n>=3+i){
            broj=stepen(2,n-3-i);
        }
        else{
            break;
        }
        for(int j=i+1;j<n;j++){
            for(int k=j+1;k<n;k++){
                p=1/2.*abs(a[i].x*(a[j].y-a[k].y)+a[j].x*(a[k].y-a[i].y)+a[k].x*(a[i].y-a[j].y));
                p1=1/2.*abs(a[j].x*(a[k].y)+a[k].x*(-a[j].y));
                p2=1/2.*abs(a[i].x*(-a[k].y)+a[k].x*(a[i].y));
                p3=1/2.*abs(a[i].x*(a[j].y)+a[j].x*(-a[i].y));
                if(p==p1+p2+p3){
                    broj=broj/stepen(2,j-i-1);
                    ukupno+=broj;
                    broj/=2;
                }
            }
        }
    }
    printf("%lld",ukupno);
    return 0;
}