#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
#define REP(i, n) for(int i=0; i<int(n); i++)
#define MAXN 100010
typedef long long LL;
const int inf=0x3f3f3f3f;
struct pr{
	int l, r;
	pr(int l, int r):l(l),r(r){}
	pr(){}
	LL operator*(const pr &x) const {
		return (LL)l*x.r-(LL)r*x.l;
	}
	pr operator-(const pr &x) const {
		return pr(l-x.l, r-x.r);
	}
	bool operator<(const pr &x) const {
		return l<x.l;
	}
} a[MAXN], s[MAXN];
int top;
struct fac{
	int n, d;
	void fix(){
		int g=__gcd(n, d);
		n/=g; d/=g;
	}
	fac(int n, int d):n(n),d(d){fix();}
	fac(int x):n(x),d(1){}
	fac(){}
	bool operator<(const fac &x) const {
		return (LL)n*x.d-(LL)x.n*d<0;
	}
	void print(){
		printf("%d/%d\n", n, d);
	}
};
bool better(int i, int j, int k){
	return (s[j]-s[k])*(s[i]-s[k])>=0;
}
fac gao(pr x){
	int l=0, r=top-1;
	while(l<r){
		int m=(l+r)>>1;
		LL t=(x-s[m])*(s[m+1]-s[m]);
		if(t>=0)l=m+1;
		else r=m;
	}
	return fac(x.r-s[l].r, x.l-s[l].l);
}
int main()
{
	freopen("caravan.in", "r", stdin);
	freopen("caravan.out", "w", stdout);
	int n;
	scanf("%d", &n);
	REP(i, n){
		int x, y;
		scanf("%d%d", &x, &y);
		a[i]=pr(x, y);
	}
	sort(a, a+n);
	top=0;
	fac ans=inf;
	REP(i, n){
		//ans.print();
		s[top++]=pr(i, a[i].l);
		while(top>=3 && better(top-1, top-2, top-3))s[--top-1]=pr(i, a[i].l);
		//cout<<"s:"<<endl;
		//REP(j, top)printf("%d %d\n", s[j].l, s[j].r);
		ans=min(ans, gao(pr(i+1, a[i].r)));
	}
	ans.print();
}
