#include <bits/stdc++.h>
using namespace std;
bool mul_overflow(long long a, long long b) { return (a > (LLONG_MAX / b)); }
bool add_overflow(long long a, long long b) { return (a > (LLONG_MAX - b)); }
const int N = 1e6 + 5;
int n;
long double a[N][3];
bool sol(long double mid) {
  long double l = -1e8, r = 1e8;
  for (int i = 1; i <= n; i++) {
    long double rs = 2 * mid * a[i][2] - a[i][2] * a[i][2];
    if (rs < 0) {
      l = -1e8, r = 1e8;
    } else {
      l = max(l, a[i][1] - sqrt(rs));
      r = min(r, a[i][1] + sqrt(rs));
    }
  }
  cout << (l <= r) << '\n';
  return (l <= r);
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> a[i][1] >> a[i][2];
  }
  int f = -1;
  if (a[1][1] >= 0 && a[1][2] >= 0 || a[1][2] >= 0 && a[1][1] <= 0)
    f = 1;
  else
    f = 0;
  for (int i = 2; i <= n; i++) {
    if (f == 1) {
      if (!(a[i][1] >= 0 && a[i][2] >= 0 || a[i][2] >= 0 && a[i][1] <= 0)) {
        cout << "-1\n";
        return 0;
      }
    } else {
      if (a[i][1] >= 0 && a[i][2] >= 0 || a[i][2] >= 0 && a[i][1] <= 0) {
        cout << "-1\n";
        return 0;
      }
    }
  }
  if (n == 1) {
    cout << a[1][2] / 2 << '\n';
    return 0;
  }
  long double lo = 0, hi = 1e18;
  for (int i = 1; i <= 100; i++) {
    long double xl = -1e18, xr = 1e18;
    long double r = (lo + hi) / 2;
    bool f = 0;
    for (int i = 1; i <= n; i++) {
      long double x = a[i][1], y = abs(a[i][2]);
      long double t = 2 * y * r - y * y;
      if (t < 0) {
        f = 1;
        break;
      }
      t = sqrt(t);
      xl = max(xl, x - t);
      xr = min(xr, x + t);
    }
    if (f == false && xr > xl) {
      hi = r;
    } else
      lo = r;
  }
  cout << fixed << setprecision(11) << lo << '\n';
  return 0;
}
