#include <bits/stdc++.h>
#define endl '\n'

using namespace std;

const int N = 318;

struct point {
    int x,y;
    int idx;
    int code;
    point(){}
    point(int a, int b, int c) {
        x=a;
        y=b;
        idx=c;
    }
};

int tests,current_case;
int n;
point a[N];
int ans[N];
point pta,ptb;
point good[N];
int sz;
int c3[N],c1[N],c1c3[N];
set < point > s;
int all;
int it[N];

void message(int current_case) {
    //cerr<<"Case "<<current_case<<" solved!"<<endl;
    fprintf(stderr, "Case %d solved!\n", current_case);
}

void update(int pos, int val) {
    for(;pos<=all;pos+=pos&(-pos)) it[pos]+=val;
}

int query(int pos) {
    --pos;
    int ans=0;
    for(;pos>=1;pos-=pos&(-pos)) ans+=it[pos];
    return ans;
}

void compress() {
    sort(good+1,good+1+sz);
    for(int i=1;i<=sz;i++) {
        good[i].code=i;
    }
}

int count_less(point a) {
    return query(a.code);
}

long long oriented_area(point a, point b, point c) {
    return ((a.x-b.x)*1ll*(a.y+b.y) + (b.x-c.x)*1ll*(b.y+c.y) + (c.x-a.x)*1ll*(c.y+a.y));
}

long long area(point a, point b, point c) {
    return abs(oriented_area(a,b,c));
}

bool operator <(const point &a, const point &b) {
    return oriented_area(ptb,b,a)>0;
}

int prcmp(point a, point b) {
    return make_pair(a.x,a.y)<make_pair(b.x,b.y);
}

bool cmpa(point a, point b) {
    return oriented_area(pta,a,b)<0;
}

void solve() {
    sz=0;
    int i;
    for(i=1;i<=n;i++) if(oriented_area(pta,ptb,a[i])>0 && prcmp(pta,a[i])) {
        good[++sz]=a[i];
    }
    compress();
    all=sz;
    for(i=1;i<=sz;i++) c1c3[good[i].idx]=i-1;
    for(i=1;i<=all;i++) it[i]=0;
    sort(good+1,good+1+sz,cmpa);
    for(i=1;i<=sz;i++) {
        c3[good[i].idx]=count_less(good[i]);
        update(good[i].code,1);
        c1[good[i].idx]=c1c3[good[i].idx]-c3[good[i].idx];
        ++ans[c1[good[i].idx]];
    }
}

int main() {
    //ios_base::sync_with_stdio(false);
    //cin.tie(NULL);
    freopen("triangles.in","r",stdin);
    freopen("triangles.out","w",stdout);
    int i,j;

    tests=1;
    //scanf("%d", &tests);
    //cin>>tests;
    for(current_case=1;current_case<=tests;current_case++) {
        scanf("%d", &n);
        for(i=1;i<=n;i++) {
            scanf("%d %d", &a[i].x, &a[i].y);
            a[i].idx=i;
        }
        memset(ans,0,sizeof(ans));
        for(i=1;i<=n;i++) {
            for(j=1;j<=n;j++) {
                pta=a[i];
                ptb=a[j];
                if(!prcmp(pta,ptb)) continue;
                solve();
            }
        }
        for(i=0;i<=n-3;i++) {
            printf("%d\n", ans[i]);
        }

        MESSAGE:
        message(current_case);
    }

    return 0;
}