#include <bits/stdc++.h>
long double INF = 1e8;
using namespace std;
int sgn(int x) {
  if (x > 0)
    return 1;
  else
    return -1;
}
long double dist(pair<long double, long double> &p1,
                 pair<long double, long double> &p2) {
  long double a = p1.first - p2.first;
  long double b = p1.second - p2.second;
  return sqrtl(a * a + b * b);
}
long double mdist(vector<pair<long double, long double> > &v,
                  pair<long double, long double> &p) {
  for (int i = 0; i < int((v).size()); i++) {
    if (p.second < dist(v[i], p)) return 1e16;
  }
  return p.second;
}
long double fdsh(vector<pair<long double, long double> > &v, long double x) {
  long double res = 0;
  for (int i = 0; i < int((v).size()); i++) {
    long double a = (v[i].first - x);
    res = max(res, (a * a + v[i].second * v[i].second) / (2 * v[i].second));
  }
  return res;
}
int main(int argc, char *argv[]) {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long n;
  cin >> n;
  vector<pair<long double, long double> > v(n);
  for (int i = 0; i < n; i++) cin >> v[i].first >> v[i].second;
  bool flag = 0;
  for (int i = 1; i < n; i++) {
    if (sgn(v[i].second) != sgn(v[0].second)) {
      flag = 1;
      break;
    }
  }
  if (flag) {
    cout << -1 << endl;
  } else {
    for (int i = 0; i < int((v).size()); i++) {
      if (v[i].second < 0) v[i].second *= -1;
    }
    long double xmn = -1e7, xmx = 1e7;
    while (abs(xmx - xmn) / max((long double)1, abs(xmn)) > 1e-12) {
      long double x1 = xmn + (xmx - xmn) / 3.0;
      long double x2 = xmx - (xmx - xmn) / 3.0;
      if (fdsh(v, x1) < fdsh(v, x2)) {
        xmx = x2;
      } else {
        xmn = x1;
      }
    }
    cout << setprecision(14) << fixed << fdsh(v, xmn) << endl;
  }
  return 0;
}
