#include <bits/stdc++.h>   using namespace std;   bool f = 0;   const double eps = 1e-8;   int n;   struct point {     double x, y;   } p[100010];   inline int rd() {     int x = 0;     bool f = 0;     char c = getchar();     while (!isdigit(c)) {       if (c ==  - ) f = 1;       c = getchar();     }     while (isdigit(c)) {       x = (x << 1) + (x << 3) + (c ^ 48);       c = getchar();     }     return f ? -x : x;   }   inline bool valid(double x) {     double l = -(double)1e18, r = (double)1e18, dlt;     for (register int i = 1; i <= n; ++i) {       if (p[i].y > x + x) return 0;       dlt = sqrt(p[i].y * (2 * x - p[i].y));       l = max(l, p[i].x - dlt);       r = min(r, p[i].x + dlt);     }     return (r - l + eps >= 0.0);   }   int main() {     n = rd();     for (register int i = 1; i <= n; ++i) {       p[i].x = (double)rd();       p[i].y = (double)rd();       if (p[i].y < 0.0) f = 1;     }     if (f == 1)       for (register int i = 1; i <= n; ++i) {         p[i].y = -p[i].y;         if (p[i].y < 0.0) {           puts( -1 );           return 0;         }       }     int t = 0;     register double l = 0.0, r = (double)1e18, mid;     while (t <= 300) {       mid = (l + r) / 2.0;       ++t;       valid(mid) ? r = mid : l = mid;     }     printf( %.10lf , l);     return 0;   }   