#include <iostream>
#include <limits.h>
#include <algorithm>
using namespace std;

struct kor
{
    long double x;
    long double y;
};

long double povrs(kor tacka1, kor tacka2, kor tacka3)
{
    long double povrsina = 0;
    povrsina += (tacka2.y + tacka1.y)/2*(tacka2.x - tacka1.x);
    povrsina += (tacka3.y + tacka2.y)/2*(tacka3.x - tacka2.x);
    povrsina += (tacka1.y + tacka3.y)/2*(tacka1.x - tacka3.x);
    return abs(povrsina);
}

bool proveri(kor R, kor P, kor Q)
{
    if((R.x - P.x)*(Q.y - P.y) == (R.y - P.y)*(Q.x - P.x))
    {
        return true;
    }
    return false;
}

int main()
{
    int n;
    cin >> n;
    if (n == 3)
    {
        kor tacke[3];
        kor nula; nula.x = 0; nula.y = 0;
        cin >> tacke[0].x >> tacke[0].y >> tacke[1].x >> tacke[1].y >> tacke[2].x >> tacke[2].y;
        long double povrsinaT = povrs(tacke[0], tacke[1], tacke[2]);
        long double povrsina1 = povrs(tacke[0], tacke[1], nula);
        long double povrsina2 = povrs(tacke[1], tacke[2], nula);
        long double povrsina3 = povrs(tacke[0], tacke[2], nula);
        if ((povrsinaT - povrsina1 - povrsina2 - povrsina3) < 0.000001)
        {
            if(povrsinaT < 0.000001 && (tacke[0].x*tacke[1].x < 0 || tacke[1].x*tacke[2].x < 0 || tacke[2].x*tacke[0].x < 0))
            {
                cout << 3 << endl;
            }
            else
            {
                if(proveri(tacke[0], tacke[1], nula) || proveri(tacke[0], tacke[2], nula) || proveri(tacke[1], tacke[2], nula))
                {
                    cout << 2 << endl;
                }
                else
                {
                    cout << 1 << endl;
                }
            }

        }
        else
        {
            cout << 0 << endl;
        }
    }
    else
    {
        cout << 0 << endl;
    }
    return 0;
}