#include <cstdio>
#include <cstring>
#include<vector>
#include<set>
#include<algorithm>
#include<iostream>
using namespace std;

vector<long long>velocity;
vector<long long>starting_point;

double binarne(double a, double b){
    //cout << a << " " << b <<endl;
    double s = (a+b)/2.0;
    double mini = 20000000000,maxi = 0;
    long long velocity_min = 200000000, velocity_max=0;
    if(b-a < 0.000000001){
        for(int i = 0; i < (int) velocity.size(); i++){
            double pos = starting_point[i];
            pos += s*velocity[i];
            mini = min(mini,pos);
            maxi = max(maxi,pos);
        }
        return maxi-mini;
    }
    for(int i = 0; i < (int) velocity.size(); i++){
        double pos = starting_point[i];
        pos += s*velocity[i];
        if(pos < mini){
            //cout<<"velocity: "<<velocity[i]<<" i: "<<i<<endl;
            velocity_min = velocity[i];
        }
        if(pos >maxi){
            velocity_max = velocity[i];
        }
        mini = min(mini,pos);
        maxi = max(maxi,pos);
    }
   //cout << velocity_max << " max vs min velocity " << velocity_min <<endl;
    if(velocity_max > velocity_min){
        return binarne(a,s);
    }
    else
        {
            return binarne(s,b);
        }
}

int main(void)
{
int n;
while(scanf("%d",&n)==1 && n != 0){
    vector<long long>time (n,0);
    velocity = vector<long long>(n,0);
    starting_point = vector<long long>(n,0);
    for(int i=0; i<n; i++){
        scanf("%lld",&time[i]);
        scanf("%lld",&velocity[i]);
    }
    long long max_time = 0;
    for(int i = 0; i<n; i++){
        max_time = max(max_time, time[i]);
    }
    //cout<<max_time<<"  max time "<<endl;
    long long starting_point_min = 20000000000;
    long long starting_point_max = 0, starting_max_index, starting_min_index;
    for(int i = 0; i < n; i++){
        starting_point[i]=velocity[i]*(max_time-time[i]);
        //cout<<" "<< time[i] <<" "<<(max_time-time[i])<<" "<< velocity[i]<< " "<<starting_point[i]<<" "<<endl;
       /* if(starting_max_index > starting_point[i]){
            starting_max_index = i;
        }
        if(starting_min_index < starting_point[i]){
            starting_min_index = i;
        }
        starting_point_max = max(starting_point_max, starting_point[i]);
        starting_point_min = min(starting_point_min, starting_point[i]);*/
    }
    //cout<<endl;
    printf("%.10lf\n", binarne(0, 10 /*20000000000*/));
};



}