#include <bits/stdc++.h>
int n;
double anss;
struct qwq {
  int x, y;
} q[3500];
struct asd {
  int from, to;
  double dis;
} as[6000100];
double juli(int a, int b) {
  int ans;
  ans = (q[a].x - q[b].x) * (q[a].x - q[b].x) +
        (q[a].y - q[b].y) * (q[a].y - q[b].y);
  return std::sqrt(ans);
}
bool Cmp(const asd& a, const asd& b) { return a.dis - b.dis > 0; }
std::bitset<3500> bs[3500];
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) {
    bs[i].reset();
    bs[i][i] = 1;
  }
  for (int i = 1; i <= n; ++i) {
    scanf("%d%d", &q[i].x, &q[i].y);
  }
  int tot = 0;
  for (int i = 1; i <= n; ++i) {
    for (int j = i; j <= n; ++j) {
      if (i == j) continue;
      as[++tot].from = i;
      as[tot].to = j;
      as[tot].dis = juli(i, j);
    }
  }
  std::sort(as + 1, as + 1 + tot, Cmp);
  for (int i = 1; i <= tot; ++i) {
    int e = as[i].from, g = as[i].to;
    if ((bs[e] & bs[g]) != 0) {
      anss = as[i].dis / 2;
      break;
    } else {
      bs[as[i].from][as[i].to] = 1;
      bs[as[i].to][as[i].from] = 1;
    }
  }
  printf("%.20lf", anss);
}
