#include<bits/stdc++.h>
using namespace std;
 
const int N=100010;
struct node{
	int a,b;
	bool operator<(const node q)const{
		return a>q.a;
	}
}s[N];
int n;
long long sum=0;
 
long long gcd(long long x,long long y){
	if(y==0) return x;
	return gcd(y,x%y);
}
 
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		int x,y;
		scanf("%d %d",&x,&y);
		sum+=x;
		s[i].a=max(x,y);s[i].b=y;
	}
	sort(s+1,s+1+n);
	long long as=0;
	int k=0;
	while(1){
		k++;
		as+=s[k].a;
		if(as>=sum) break;
	}
	long long ansx=1,ansy=1;
	for(int i=1;i<=n;i++){
		long long now=sum-(as-s[min(i,k)].a);
		if(now<=s[i].b && now*ansy<1ll*s[i].b*ansx) ansx=now,ansy=s[i].b;
	}
	ansx=ansy-ansx+(n-k)*ansy;
	ansy*=n;
	printf("%lld %lld",ansx/gcd(ansx,ansy),ansy/gcd(ansx,ansy));
}