#include<iostream>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<cstdio>
#include<string>
#include<deque>
#include<stack>
#include<queue>
#include<vector>
#include<stdio.h>
#include<map>
#include<set>
#include<string.h>
#include<time.h>
#include<stdlib.h>
#include<bitset>
using namespace std;
long long last_ans;
long long n,a[100005],m[100005];
long long exgcd(long long a,long long b,long long &x,long long &y){
if(b==0){
x=1,y=0;
return a;
}
long long d=exgcd(b,a%b,x,y);
long long z=x;
x=y;
y=z-y*(a/b);
return d;
}
long long lcm_m=1;
int main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>m[i]>>a[i];
for(int i=1;i<=n;i++){
long long x,y;
if(1){
long long gcd=exgcd(lcm_m,m[i],x,y);
last_ans=last_ans+x*lcm_m*(a[i]-last_ans)/gcd;
lcm_m=lcm_m*m[i]/gcd;
}
}
cout<<lcm_m<<endl;
cout<<last_ans%lcm_m;
return 0;
}