#include <bits/stdc++.h>

#define int long long
#define pb push_back
#define rr return 0;
#define x first
#define y second

using namespace std;

typedef pair<int, int> pp;
typedef long double ld;
typedef unsigned long long ull;
typedef pair<ld, ld> Point;

bool cw(pp a, pp b, pp c){
    int x1 = b.x - a.x, y1 = b.y - a.y, x2 = c.x - b.x, y2 = c.y - b.y;
    return x1 * y2 - x2 * y1 < 0;
}

bool ccw(pp a, pp b, pp c){
    int x1 = b.x - a.x, y1 = b.y - a.y, x2 = c.x - b.x, y2 = c.y - b.y;
    return x1 * y2 - x2 * y1 > 0;
}

vector<pp> a;
vector<int> cur1, cur2;


vector<int> convexhull(int num) {
    pp s, f;
    int fnom, start;
    cur1.clear();
    cur2.clear();
    if(num == 0) {
        s = a[1], f = a.back();
        cur1.pb(1);
        cur2.pb(1);
        start = 2;
        fnom = a.size() - 1;
    }
    else if(num == a.size() - 1){
        s = a[0], f = a[a.size() - 2];
        fnom = a.size() - 2;
        cur1.pb(0);
        cur2.pb(0);
        start = 1;
    }
    else{
        s = a[0], f = a.back();
        cur1.pb(0);
        cur2.pb(0);
        start = 1;
        fnom = a.size() - 1;
    }
    for(int i = start; i + 1 < a.size(); ++i) {
        if(i == num) continue;
        if(cw(s, a[i], f)) {
//            cout << a[i].x << " " << a[i].y << " " << endl;
//            cout << cur1.size() << endl;
            while(cur1.size() > 1 && !cw(a[cur1[cur1.size() - 2]], a[cur1.back()], a[i]))
            {
//                cout << "!!";
                cur1.pop_back();
            }
//            cout << cur1.size() << endl;
            cur1.push_back(i);
//            cout << cur1.size() << endl;
        }
        else if(ccw(s, a[i], f)) {
            while(cur2.size() > 1 && !ccw(a[cur2[cur2.size() - 2]], a[cur2.back()], a[i]))
            {
                cur2.pop_back();
            }
            cur2.push_back(i);
        }
    }
    cur1.pb(fnom);
    reverse(cur2.begin(), cur2.end());
    for(int i = 0; i < cur2.size(); ++i) {
        cur1.pb(cur2[i]);
    }
    cur1.pop_back();
    return cur1;
}


main()
{
    ios::sync_with_stdio(0);
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
//    freopen("input.txt", "r", stdin);
//    freopen("output.txt", "w", stdout);
    int n, q, p = 0;
    cin >> n;
    q = n;
    a.resize(n);
    for(int i = 0; i < n; ++i) {
        cin >> a[i].x >> a[i].y;
    }
    sort(a.begin(), a.end());
    vector<int> c;
    for(int i = 0; i < a.size(); ++i) {
        c = convexhull(i);
        p += c.size();
    }
    int g = __gcd(p, q);
    p /= g;
    q /= g;
    cout << p << " " << q << endl;
    return 0;
}
