#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f;
const long double eps = 1e-9;
long long mod = 998244353;
const long long N = 1e6 + 5;
long long n;
struct node {
  long double x, y;
} p[N];
bool check(long double R) {
  long double l = -100000000000000000.0, r = 100000000000000000.0;
  for (long long i = 1; i <= n; i++) {
    if (p[i].y > 2 * R) return 0;
    long double t = sqrtl(R * R - (p[i].y - R) * (p[i].y - R));
    (l) = (l) >= (p[i].x - t) ? (l) : (p[i].x - t);
    (r) = (r) <= (t + p[i].x) ? (r) : (t + p[i].x);
  }
  return r > l;
}
signed main() {
  scanf("%lld", &n);
  long long a = 0, b = 0;
  for (long long i = 1; i <= n; i++) {
    scanf("%Lf", &p[i].x), scanf("%Lf", &p[i].y);
    if (p[i].y < 0) a = 1;
    if (p[i].y > 0) b = 1;
    if (a && b) {
      cout << -1;
      return 0;
    }
    p[i].y = fabsl(p[i].y);
  }
  long double l = 0, r = 100000000000000000.0;
  for (long long i = 1; i <= 1000; i++) {
    if (check(((l + ((r - l) / 2)))))
      r = ((l + ((r - l) / 2)));
    else
      l = ((l + ((r - l) / 2)));
  }
  printf("%.10Lf\n", ((l + ((r - l) / 2))));
}
