#include <bits/stdc++.h>
using namespace std;
int n;
int x[100009], y[100009];
int leftymax = INT_MIN;
pair<int, int> p[100009];
int isneg;
long double err = 1e-7;
long double err2 = 1e-7;
int readin() {
  cin >> n;
  for (int i = 0; i < n; i++) {
    cin >> x[i] >> y[i];
    if (i == 0) {
      if (y[i] < 0) isneg = 1;
    } else {
      if (isneg == 0) {
        if (y[i] < 0) {
          cout << "-1";
          return 1;
        }
      }
      if (isneg == 1) {
        if (y[i] > 0) {
          cout << "-1";
          return 1;
        }
      }
    }
  }
  return 0;
}
bool allsamex() {
  for (int i = 1; i < n; i++) {
    if (x[i] != x[i - 1]) return 0;
  }
  return 1;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  if (readin() == 1) return 0;
  if (isneg) {
    for (int i = 0; i < n; i++) y[i] = -y[i];
  }
  for (int i = 0; i < n; i++) {
    p[i].first = x[i];
    p[i].second = y[i];
  }
  sort(p, p + n);
  cout << fixed << setprecision(7);
  if (n == 1) {
    cout << y[0] * 1.0 / 2 << endl;
    return 0;
  }
  for (int i = 0; i < n; i++) leftymax = max(y[i], leftymax);
  if (allsamex()) {
    cout << leftymax * 1.0 / 2 << endl;
    return 0;
  }
  long double left = leftymax * 1.0 / 2,
              right = (abs(p[0].first) + abs(p[n - 1].first)) * 1e8;
  left = min(left, right);
  right = max(left, right);
  long double mid = 0;
  long double t, t2;
  long double xmin, xmax;
  while (right - left > err) {
    int needgreater = 0;
    mid = (right + left) / 2;
    t = mid - y[0];
    t2 = sqrtl(mid * mid - t * t);
    xmin = x[0] - t2;
    xmax = x[0] + t2;
    for (int i = 1; i < n; i++) {
      t = mid - y[i];
      t2 = sqrtl(mid * mid - t * t);
      xmin = max(xmin, x[i] - t2);
      xmax = min(xmax, x[i] + t2);
      if (xmin > xmax + err2) {
        needgreater = 1;
        break;
      }
    }
    if (needgreater) {
      left = mid;
      err = max(err, mid * 1e-8);
    } else {
      right = mid;
    }
  }
  mid = (left + right) / 2;
  cout << mid;
  return 0;
}
