#include <bits/stdc++.h>
#define int long long
#define pb push_back
using namespace std;

const int N = 1e6+5;
struct point
{
    int x, y;
};
int n, pos[N], base = 1;
point a[N];
int st[N], sz = 0;
int len(point a, point b)
{
    return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);
}

int s(point a, point b,point c)
{
    return (a.x-b.x)*(a.y+b.y)+(b.x-c.x)*(b.y+c.y)+(c.x-a.x)*(c.y+a.y);
}

bool cmp(point aa, point b)
{
    if (s(a[1], aa, b) == 0)
        return len(a[1], aa) < len(a[1], b);
    return s(a[1], aa, b) < 0;
}
int st1[N], used[N];
signed main()
{
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i].x >> a[i].y;
        if (a[i].x < a[base].x || (a[i].x == a[base].x && a[i].y < a[base].y))
            base = i;
    }
    swap(a[1], a[base]);
    sort(a+2, a+n+1, cmp);
    st[0] = 1;
    st[1] = 2;
    sz = 2;
    for (int i = 3; i <= n; i++)
    {
        //cout << a[i].x << ' ' << a[i].y<<endl;
        while (1)
        {
            if (sz == 1)
                break;
            point aa = a[st[sz-2]], b = a[st[sz-1]], c = a[i];
            //cout << aa.x << ' '<< aa.y << ' ' << b.x << ' ' << b.y << ' ' << c.x << ' ' << c.y <<endl;
            if (s(aa, b, c) >= 0)
                sz--;
            else
                break;
        }
        st[sz] = i;
        sz++;
    }
    for (int i = 0; i < sz; i++)
        used[st[i]] = i+1;
    int kol = 0;
    for (int j = 1; j <= n; j++)
        if (!used[j])
            kol += sz;
        else
        {
            int ans = sz-1;
            st1[0] = st[(used[j]-2+sz)%sz], st1[1] = st[(used[j]-3+sz)%sz];
            int sz1 = 2;
            int last = st[(used[j]+sz)%sz];
            if (last == 1)
                last = n+1;
            for (int i = st[(used[j]-2+sz)%sz]+1; i < last; i++)
            {
               while (1)
        {
            if (sz1 == 1)
                break;
            point aa = a[st1[sz1-2]], b = a[st1[sz1-1]], c = a[i];
            //cout << aa.x << ' '<< aa.y << ' ' << b.x << ' ' << b.y << ' ' << c.x << ' ' << c.y <<endl;
            if (s(aa, b, c) >= 0)
                sz1--;
            else
                break;
        }
        st1[sz1] = i;
        sz1++;
            }
            //cout << sz << ' '  << sz1 << ' ' <<sz - 3 + sz1 << endl;
            kol += sz-3+sz1;
        }
    int p = __gcd(kol, n);
    kol /= p;
    n /= p;
    cout << kol << ' ' << n;
    return 0;
}
