#include<stdio.h>
#include<algorithm>
using namespace std;
struct xy { int x, y;}a[121212];
bool sort_y(xy a, xy b) {
if (a.y != b.y)return a.y < b.y;
return a.x < b.x;
}
int max(int a, int b) { if (a < b)return b; return a; }
int main() {
int n, i;
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d%d", &a[i].x, &a[i].y);
}
sort(a, a + n,sort_y);
int p1 = 0, p2 = n - 1;
int ans = 0;
while (p1 <= p2) {
ans = max(ans, a[p1].y + a[p2].y);
if (a[p1].x == a[p2].x) p1++, p2--;
else if (a[p1].x < a[p2].x) a[p2].x -= a[p1++].x;
else a[p1].x -= a[p2--].x;
}
printf("%d", ans);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpzdHJ1Y3QgeHkgewlpbnQgeCwgeTt9YVsxMjEyMTJdOwpib29sIHNvcnRfeSh4eSBhLCB4eSBiKSB7CglpZiAoYS55ICE9IGIueSlyZXR1cm4gYS55IDwgYi55OwoJcmV0dXJuIGEueCA8IGIueDsKfQppbnQgbWF4KGludCBhLCBpbnQgYikgeyBpZiAoYSA8IGIpcmV0dXJuIGI7IHJldHVybiBhOyB9CmludCBtYWluKCkgewoJaW50IG4sIGk7CglzY2FuZigiJWQiLCAmbik7Cglmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CgkJc2NhbmYoIiVkJWQiLCAmYVtpXS54LCAmYVtpXS55KTsKCX0KCXNvcnQoYSwgYSArIG4sc29ydF95KTsKCWludCBwMSA9IDAsIHAyID0gbiAtIDE7CglpbnQgYW5zID0gMDsKCXdoaWxlIChwMSA8PSBwMikgewoJCWFucyA9IG1heChhbnMsIGFbcDFdLnkgKyBhW3AyXS55KTsKCQlpZiAoYVtwMV0ueCA9PSBhW3AyXS54KSBwMSsrLCBwMi0tOwoJCWVsc2UgaWYgKGFbcDFdLnggPCBhW3AyXS54KSBhW3AyXS54IC09IGFbcDErK10ueDsKCQllbHNlIGFbcDFdLnggLT0gYVtwMi0tXS54OwoJfQoJcHJpbnRmKCIlZCIsIGFucyk7CglyZXR1cm4gMDsKfQ==