#include <bits/stdc++.h>   #pragma warning(disable : 4996)   using namespace std;   using namespace std;   const double eps = 1e-8;   const double pi = acos(-1.0);   inline double sqr(double x) { return x * x; }   int cmp(double x) {     if (fabs(x) < eps) return 0;     if (x > 0) return 1;     return -1;   }   int n;   struct point {     double x, y;     point() {}     point(double a, double b) : x(a), y(b) {}     void input() { scanf( %lf%lf , &x, &y); }     friend point operator+(const point &a, const point &b) {       return point(a.x + b.x, a.y + b.y);     }     friend point operator-(const point &a, const point &b) {       return point(a.x - b.x, a.y - b.y);     }     friend bool operator==(const point &a, const point &b) {       return cmp(a.x - b.x) == 0 && cmp(a.y - b.y) == 0;     }     friend point operator*(const point &a, const double &b) {       return point(a.x * b, a.y * b);     }     friend point operator*(const double &a, const point &b) {       return point(a * b.x, a * b.y);     }     friend point operator/(const point &a, const double &b) {       return point(a.x / b, a.y / b);     }     double norm() { return sqrt(sqr(x) + sqr(y)); }     double norm1() { return sqr(x) + sqr(y); }   } P[200];   double det(const point &a, const point &b) { return a.x * b.y - a.y * b.x; }   point Cir(point a, point b, point c) {     point cp;     double a1 = b.x - a.x, b1 = b.y - a.y, c1 = (a1 * a1 + b1 * b1) / 2;     double a2 = c.x - a.x, b2 = c.y - a.y, c2 = (a2 * a2 + b2 * b2) / 2;     double d = a1 * b2 - a2 * b1;     cp.x = a.x + (c1 * b2 - c2 * b1) / d;     cp.y = a.y + (a1 * c2 - a2 * c1) / d;     return cp;   }   double dot(const point &a, const point &b) { return a.x * b.y + a.y * b.x; }   double dist(const point &a, const point &b) { return (a - b).norm(); }   double dist2(const point &a, const point &b) { return (a - b).norm1(); }   bool JudgeRet(int a, int b, int c) {     double dis1 = dist2(P[a], P[b]);     double dis2 = dist2(P[a], P[c]);     double dis3 = dist2(P[b], P[c]);     if ((cmp(dis1 + dis2 - dis3) == 1) && (cmp(dis2 + dis3 - dis1) == 1) &&         (cmp(dis1 + dis3 - dis2) == 1))       return true;     else if (cmp(dis1 + dis2 - dis3) == 0 || cmp(dis1 + dis3 - dis2) == 0 ||              cmp(dis2 + dis3 - dis1) == 0) {       if (cmp(dis1 + dis2 - dis3) == 0) {         for (int i = 1; i <= n; i++) {           if (cmp(P[i].x - (P[b].x + P[c].x - P[a].x)) == 0 &&               cmp(P[i].y - (P[b].y + P[c].y - P[a].y)) == 0) {             return true;           }         }       } else if (cmp(dis1 + dis3 - dis2) == 0) {         for (int i = 1; i <= n; i++) {           if (cmp(P[i].x - (P[a].x + P[c].x - P[b].x)) == 0 &&               cmp(P[i].y - (P[a].y + P[c].y - P[b].y)) == 0) {             return true;           }         }       } else {         for (int i = 1; i <= n; i++) {           if (cmp(P[i].x - (P[a].x + P[b].x - P[c].x)) == 0 &&               cmp(P[i].y - (P[a].y + P[b].y - P[c].y)) == 0) {             return true;           }         }       }       return false;     } else       return false;   }   void Compute() {     double Max = -1;     JudgeRet(2, 3, 5);     for (int i = 1; i <= n; i++) {       for (int j = i + 1; j <= n; j++) {         for (int k = j + 1; k <= n; k++) {           if (JudgeRet(i, j, k)) {             point center = Cir(P[i], P[j], P[k]);             double r = dist(center, P[i]);             bool ret = true;             for (int i = 1; i <= n; i++) {               if (cmp(dist(center, P[i]) - r) == -1) {                 ret = false;                 break;               }             }             if (ret) Max = max(Max, r);           }         }       }     }     if (Max == -1)       printf( -1 n );     else       printf( %.6f n , Max);   }   int main() {     double x, y;     while (~scanf( %d , &n)) {       for (int i = 1; i <= n; i++) {         scanf( %lf%lf , &x, &y);         P[i] = point(x, y);       }       Compute();     }     return 0;   }