//方法1 二分
//方法1 二分
int get(int a, int b) {
int l = 1, r = 1e9 + 1; //这里取到1e9 + 1 是因为下面可能有b - 1,当b取1时
//为0的情况,所以当r = 1e9 + 1可以让成立这个情况
while (l < r) {
int mid = l + r >> 1;
if ((a / mid) <= b) r = mid;
else l = mid + 1;
}
return l;
}
int main() {
scanf("%d", &n);
int min_v = 1, max_v = 1e9;
while (n--) {
int a, b;
scanf("%d%d", &a, &b);
min_v = max(min_v, get(a, b));
max_v = min(max_v, get(a, b - 1) - 1);
}
printf("%d %d", min_v, max_v);
return 0;
}
//方法1 推公式
#include<bits/stdc++.h>
#include<set>
using namespace std;
int n;
int get_max(int a, int b) {
return a / b;
}
int get_min(int a, int b) {
return a / (b + 1) + 1;
}
int main() {
scanf("%d", &n);
int min_v = 1, max_v = 1e9;
while (n--) {
int a, b;
scanf("%d%d", &a, &b);
min_v = max(min_v, get_min(a, b));
max_v = min(max_v, get_max(a, b));
}
printf("%d %d", min_v, max_v);
return 0;
}