#include <bits/stdc++.h>
using namespace std;
struct node {
  int u, v;
  double dis;
  node() {}
  node(int U, int V, double Dis) { u = U, v = V, dis = Dis; }
} r[3005 * 3005];
bitset<3005> g[3005];
int n, cnt;
double x[3005], y[3005];
double calc(int i, int j) {
  return sqrt((x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]));
}
bool cmp(node x, node y) { return x.dis > y.dis; }
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%lf %lf", &x[i], &y[i]);
  for (int i = 1; i <= n; i++)
    for (int j = i + 1; j <= n; j++) r[++cnt] = node(i, j, calc(i, j));
  sort(r + 1, r + cnt + 1, cmp);
  for (int i = 1; i <= cnt; i++) {
    int u = r[i].u, v = r[i].v;
    g[u][v] = g[v][u] = 1;
    if ((g[u] & g[v]).count()) return !printf("%.20f", r[i].dis / 2);
  }
  return 0;
}
