#include <bits/stdc++.h>
using namespace std;
struct edge {
  int u, v, w;
  edge() {}
  edge(int __u, int __v, int __w) {
    u = __u;
    v = __v;
    w = __w;
  }
  bool operator<(const edge temp) const { return w > temp.w; }
} e[9000010];
bitset<3010> bs[3010];
int n, x[3010], y[3010];
inline int dis(int i, int j) {
  return (x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]);
}
int main() {
  while (cin >> n) {
    for (int i = 0; i < n; i++) cin >> x[i] >> y[i];
    int id = 0;
    for (int i = 0; i < n; i++)
      for (int j = i + 1; j < n; j++) {
        e[id++] = edge(i, j, dis(i, j));
      }
    sort(e, e + id);
    for (int i = 0; i < n; i++) bs[i].reset();
    int ans;
    for (int i = 0; i < id; i++) {
      int u = e[i].u, v = e[i].v, w = e[i].w;
      bitset<3010> temp;
      temp = bs[u] & bs[v];
      if (temp.any()) {
        ans = w;
        break;
      }
      bs[u].set(v);
      bs[v].set(u);
    }
    printf("%.20lf\n", sqrt(1. * ans) / 2);
  }
  return 0;
}
