#include <bits/stdc++.h>
using namespace std;

#define REP(i,n) for(int i = 0; i < (n); ++i)
#define FOR(i,a,b) for(int i = (a); i <= (b); ++i)
#define FORD(i,a,b) for(int i = (a); i >= (b); --i)

#define maxN 100005
#define INF 1.0e11
#define err 1e-3
#define err2 1e-3

long double my_inf = INF;

int N;

int t[maxN], v[maxN];

long double get_distance(long double left) {
//  printf("get distance for %d\n", left);
  long double min_d;
  long double max_d = 0;
  REP(i, N) {
    long double dist = (left - t[i]) * v[i];
    if (i == 0) min_d = dist;
    min_d = min(min_d, dist);
    max_d = max(max_d, dist);
  }
  return max_d - min_d;
}

void testcase() {
  REP(i, N) {
    scanf("%d%d", t + i, v + i);
  }
//  int best_i = 0;
//  REP(i, N) {
//    if (v[i] > v[best_i] || (v[i] == v[best_i] && t[i] > t[best_i])) best_i = i;
//  }
//  my_inf = 0;
//  REP(i, N) {
//    if (t[best_i] <= t[i]) continue;
////    printf("i %d\n", i);
//    if (v[best_i] == v[i]) continue;
////    printf("i %d\n", i);
//    my_inf = max(my_inf, abs(((long double)v[best_i] * t[best_i] - (long double)v[i] * t[i]) / (v[best_i] - v[i])));
//  }
  long double dl, dr, dm1, dm2;
  dl = 0;
  REP(i, N) dl = max(dl, (long double)t[i]);
  dr = my_inf;
//  printf("%Lf\n", my_inf);
  int step = 0;
  while (step++ < 140) {
    long double dist_m1, dist_m2;
//    long double dist_1 = get_distance(dl);
//    long double dist_2 = get_distance(dl + 1e-9);
////    printf("dl %Lf, dr %Lf\n", dl, dr);
////    printf("err %Lf\n", dr - dl);
//    if (abs(dr - dl) < err && abs(dist_1 - dist_2) / (1e-9) < 0.5) {
//      break;
//    }
    dm1 = (2.0 / 3) * dl + (1.0 / 3) * dr;
    dm2 = (1.0 / 3) * dl + (2.0 / 3) * dr;
//    printf("middle %Lf %Lf\n", dm1, dm2);
    dist_m1 = get_distance(dm1);
    dist_m2 = get_distance(dm2);
    if (dist_m1 < dist_m2) dr = dm2;
    else dl = dm1;
  }
//  printf("%Lf %Lf\n", dl, dr);
  printf("%.9Lf\n", get_distance(dl));
}

int main() {
  while (scanf("%d", &N) == 1 && N > 0) {
    testcase();
  }
  return 0;
}