#include<bits/stdc++.h>
using namespace std;
struct Tacka{
    double x, y;
    Tacka(double _x, double _y) :x(_x), y(_y) {}
};

double Orijentacija(const Tacka& t, const Tacka& t1, const Tacka& t2) {
    return (t1.x - t.x) * (t2.y - t.y) - (t2.x - t.x) * (t1.y - t.y);
}

bool Izmedju(const Tacka& t, const Tacka& t1, const Tacka& t2) {
    return min(t1.x, t2.x) <= t.x && max(t1.x, t2.x) >= t.x && min(t1.y, t2.y) <= t.y && max(t1.y, t2.y) >= t.y;
}

bool NaDuzi(const Tacka& t, const Tacka& t1, const Tacka& t2) {
    return abs(Orijentacija(t, t1, t2)) < 1e-8 && Izmedju(t, t1, t2);
}

bool DuziSeSeku(const Tacka& t1, const Tacka& t2, const Tacka& t3, const Tacka& t4) {
    double d1 = Orijentacija(t1, t3, t4);
    double d2 = Orijentacija(t2, t3, t4);
    double d3 = Orijentacija(t3, t1, t2);
    double d4 = Orijentacija(t4, t1, t2);
    return  (d1 * d2 < 0 && d3 * d4 < 0) ||
        (abs(d1) < 1e-8 && Izmedju(t1, t3, t4)) ||
        (abs(d2) < 1e-8 && Izmedju(t2, t3, t4)) ||
        (abs(d3) < 1e-8 && Izmedju(t3, t1, t2)) ||
        (abs(d4) < 1e-8 && Izmedju(t4, t1, t2));
}

bool TackaUPoligonu(Tacka t, vector<Tacka>& P) {
    size_t n = P.size();
    bool rez = false;
    for (size_t i = 0; i < n; i++) {
        Tacka p1 = P[i];
        Tacka p2 = P[(i + 1) % n];

        if (NaDuzi(t, p1, p2))
            return true;

        Tacka desniKraj(max(p1.x, p2.x) + 1, t.y);
        if (DuziSeSeku(t, desniKraj, p1, p2) &&
                ((p1.y < t.y && p2.y >= t.y) || (p2.y < t.y && p1.y >= t.y)))
            rez = !rez;
    }
    return rez;
}

bool glavna(Tacka P1,Tacka P2,Tacka P3){

    vector<Tacka>P;
    P.push_back(P1);
    P.push_back(P2);
    P.push_back(P3);
    Tacka T(0, 0);
    if (TackaUPoligonu(T, P))
        return true;
    else
        return false;
}
bool glavna2(vector<Tacka>& P){

    Tacka T(0, 0);
    if (TackaUPoligonu(T, P))
        return true;
    else
        return false;
}

int main() {
    long long broj=0;
    int N;
    double X, Y;
    cin >> N;
    vector<Tacka> koo;
    for (int i = 0; i < N; i++) {
        cin >> X >> Y;
        koo.push_back(Tacka(X, Y));
    }
    vector<int>ss;

    if(glavna2(koo)){

    for(int a=0;a<N-2;a++){
        for(int b=a;b<N-1;b++){
            for(int c=b;c<N;c++){
                if( glavna( koo[a], koo[b], koo[c] ) ){
                    //broj++;
                    //cout << a << " " << b << " " << c << endl;
                    ++a;++b;++c;
                    int s=a*100+b*10+c;
                    ss.push_back(s);
                }
            }
        }
    }

    for(int i=0;i<ss.size();i++){
        cout << ss[i] <<" ";
    }

    //cout << broj;
    }
    else{
        cout << "0";
    }
    return 0;
}