#include<bits/stdc++.h>
using namespace std;
// define
#define execute cerr << " Time: " << fixed << setprecision(6) << (1.0 * clock() / CLOCKS_PER_SEC) << "s\n";
#define ll long long
#define ld double
#define ii pair<int,int>
#define se second
#define fi first
#define iii pair<int,ii>
#define all(v) v.begin(),v.end()
#define bit(x,i) (((x)>>(i))&1LL)
#define flip(x,i) ((x)^(1LL<<(i)))
#define ms(d,x) memset(d,x,sizeof(d))
#define sitingfake 1
#define orz 1
#define exist __exist
#define ends __ends
#define visit visited
#define left __left
#define right __right
//constant
const ll mod = 1e9 + 7;
const long long linf = 4557430888798830399;
const int inf = 1061109567;
const int maxarr = 1e6 + 5;
int dx[] = {0 , -1 , 0 , 1};
int dy[] = {-1 , 0 , 1 , 0};
template<typename T> bool maximize(T &a, const T &b)
{
if(a < b) {a = b; return 1;}
return 0;
}
template<typename T> bool minimize(T &a, const T &b)
{
if(a > b) {a = b; return 1;}
return 0;
}
inline void Plus(ll & a ,ll b)
{
b %= mod;
a += b;
if(a >= mod) a -= mod;
if(a < 0) a += mod;
return;
}
inline void Mul(ll & a, ll b)
{
a %= mod; b %= mod;
a *= b;
a %= mod;
return;
}
//code
const int maxn = 1e5 + 7;
ld t[maxn] , r[maxn] , sumt[maxn] , sumr[maxn];
int n;
void solve(void)
{
cin >> n;
for(int i = 1; i <= n; i++)
{
cin >> t[i] >> r[i];
}
sort(t + 1, t + n + 1);
sort(r + 1, r + n + 1);
for(int i = 1; i <= n; i++)
{
sumt[i] = sumt[i - 1] + t[n - i + 1];
sumr[i] = sumr[i - 1] + r[n - i + 1];
}
ld ans = 0;
for(int i = 1; i <= n; i++)
{
int pos = lower_bound(sumr + 1 , sumr + n + 1 , sumt[i]) - sumr;
if(pos <= n)
{
maximize(ans , sumt[i] - 1.0 * (i + pos));
}
}
for(int i = 1; i <= n; i++)
{
int pos = lower_bound(sumt + 1 , sumt + n + 1 , sumr[i]) - sumt;
if(pos <= n)
{
maximize(ans , sumr[i] - 1.0 * (i + pos));
}
}
cout << setprecision(4) << fixed << ans;
}
/**
min(sumt(i) , sumr(j)) - (i + j)
**/
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
#define task "sure"
if(fopen(task".inp","r"))
{
freopen(task".inp","r",stdin);
freopen(task".out","w",stdout);
}
int tc; tc = 1;
while(tc--) solve();
//execute;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIGRlZmluZQoKI2RlZmluZSBleGVjdXRlIGNlcnIgPDwgIiBUaW1lOiAiIDw8IGZpeGVkIDw8IHNldHByZWNpc2lvbig2KSA8PCAoMS4wICogY2xvY2soKSAvIENMT0NLU19QRVJfU0VDKSA8PCAic1xuIjsKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBsZCBkb3VibGUKI2RlZmluZSBpaSBwYWlyPGludCxpbnQ+CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBpaWkgcGFpcjxpbnQsaWk+CiNkZWZpbmUgYWxsKHYpIHYuYmVnaW4oKSx2LmVuZCgpCiNkZWZpbmUgYml0KHgsaSkgKCgoeCk+PihpKSkmMUxMKQojZGVmaW5lIGZsaXAoeCxpKSAoKHgpXigxTEw8PChpKSkpCiNkZWZpbmUgbXMoZCx4KSBtZW1zZXQoZCx4LHNpemVvZihkKSkKI2RlZmluZSBzaXRpbmdmYWtlIDEKI2RlZmluZSBvcnogMQojZGVmaW5lIGV4aXN0IF9fZXhpc3QKI2RlZmluZSBlbmRzIF9fZW5kcwojZGVmaW5lIHZpc2l0IHZpc2l0ZWQKI2RlZmluZSBsZWZ0IF9fbGVmdAojZGVmaW5lIHJpZ2h0IF9fcmlnaHQKCi8vY29uc3RhbnQKCmNvbnN0IGxsIG1vZCA9IDFlOSArIDc7CmNvbnN0IGxvbmcgbG9uZyBsaW5mID0gNDU1NzQzMDg4ODc5ODgzMDM5OTsKY29uc3QgaW50IGluZiA9IDEwNjExMDk1Njc7CmNvbnN0IGludCBtYXhhcnIgPSAxZTYgKyA1OwppbnQgZHhbXSA9IHswICwgLTEgLCAwICwgMX07CmludCBkeVtdID0gey0xICwgMCAsIDEgLCAwfTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgbWF4aW1pemUoVCAmYSwgY29uc3QgVCAmYikKewogICAgaWYoYSA8IGIpIHthID0gYjsgcmV0dXJuIDE7fQogICAgcmV0dXJuIDA7Cn0KCnRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgbWluaW1pemUoVCAmYSwgY29uc3QgVCAmYikKewogICAgaWYoYSA+IGIpIHthID0gYjsgcmV0dXJuIDE7fQogICAgcmV0dXJuIDA7Cn0KCmlubGluZSB2b2lkIFBsdXMobGwgJiBhICxsbCBiKQp7CiAgICBiICU9IG1vZDsKICAgIGEgKz0gYjsKICAgIGlmKGEgPj0gbW9kKSBhIC09IG1vZDsKICAgIGlmKGEgPCAwKSBhICs9IG1vZDsKICAgIHJldHVybjsKfQoKaW5saW5lIHZvaWQgTXVsKGxsICYgYSwgbGwgYikKewogICAgYSAlPSBtb2Q7IGIgJT0gbW9kOwogICAgYSAqPSBiOwogICAgYSAlPSBtb2Q7CiAgICByZXR1cm47Cn0KCi8vY29kZQoKY29uc3QgaW50IG1heG4gPSAxZTUgKyA3OwoKbGQgdFttYXhuXSAsIHJbbWF4bl0gLCBzdW10W21heG5dICwgc3VtclttYXhuXTsKCmludCBuOwoKdm9pZCBzb2x2ZSh2b2lkKQp7CiAgICBjaW4gPj4gbjsKCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgIHsKICAgICAgICBjaW4gPj4gdFtpXSA+PiByW2ldOwogICAgfQoKICAgIHNvcnQodCArIDEsIHQgKyBuICsgMSk7CiAgICBzb3J0KHIgKyAxLCByICsgbiArIDEpOwoKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgewogICAgICAgIHN1bXRbaV0gPSBzdW10W2kgLSAxXSArIHRbbiAtIGkgKyAxXTsKICAgICAgICBzdW1yW2ldID0gc3VtcltpIC0gMV0gKyByW24gLSBpICsgMV07CiAgICB9CgogICAgbGQgYW5zID0gMDsKCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgIHsKICAgICAgICBpbnQgcG9zID0gbG93ZXJfYm91bmQoc3VtciArIDEgLCBzdW1yICsgbiArIDEgLCBzdW10W2ldKSAtIHN1bXI7CiAgICAgICAgaWYocG9zIDw9IG4pCiAgICAgICAgewogICAgICAgICAgICBtYXhpbWl6ZShhbnMgLCBzdW10W2ldIC0gMS4wICogKGkgKyBwb3MpKTsKICAgICAgICB9CiAgICB9CgogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICB7CiAgICAgICAgaW50IHBvcyA9IGxvd2VyX2JvdW5kKHN1bXQgKyAxICwgc3VtdCArIG4gKyAxICwgc3VtcltpXSkgLSBzdW10OwogICAgICAgIGlmKHBvcyA8PSBuKQogICAgICAgIHsKICAgICAgICAgICAgbWF4aW1pemUoYW5zICwgc3VtcltpXSAtIDEuMCAqIChpICsgcG9zKSk7CiAgICAgICAgfQogICAgfQogICAgY291dCA8PCBzZXRwcmVjaXNpb24oNCkgPDwgZml4ZWQgPDwgYW5zOwp9Ci8qKgptaW4oc3VtdChpKSAsIHN1bXIoaikpIC0gKGkgKyBqKQoKKiovCnNpZ25lZCBtYWluKCkKewogICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICBjaW4udGllKDApOwogICBjb3V0LnRpZSgwKTsKCiAgICNkZWZpbmUgdGFzayAic3VyZSIKCiAgIGlmKGZvcGVuKHRhc2siLmlucCIsInIiKSkKICAgewogICAgICAgZnJlb3Blbih0YXNrIi5pbnAiLCJyIixzdGRpbik7CiAgICAgICBmcmVvcGVuKHRhc2siLm91dCIsInciLHN0ZG91dCk7CiAgIH0KCiAgIGludCB0YzsgdGMgPSAxOwoKICAgd2hpbGUodGMtLSkgc29sdmUoKTsKCiAgIC8vZXhlY3V0ZTsKfQo=