#include <bits/stdc++.h>
using namespace std;
const int maxn = 3050;
const int maxm = maxn * maxn / 2;
int n, m;
struct Point {
  int x, y;
} p[maxn];
inline int Distance2(Point A, Point B) {
  return (A.x - B.x) * (A.x - B.x) + (A.y - B.y) * (A.y - B.y);
}
struct Line {
  int s, t, len2;
} L[maxm];
inline int cmp(Line A, Line B) { return A.len2 > B.len2; }
bitset<maxn> had[maxn], tmp;
int main() {
  ios::sync_with_stdio(false);
  cin >> n;
  for (int i = 1; i <= n; ++i) cin >> p[i].x >> p[i].y;
  for (int i = 1; i <= n; ++i) {
    for (int j = i + 1; j <= n; ++j) {
      ++m;
      L[m].s = i;
      L[m].t = j;
      L[m].len2 = Distance2(p[i], p[j]);
    }
  }
  sort(L + 1, L + m + 1, cmp);
  int ans = 0;
  for (int j = 1; j <= m; ++j) {
    tmp.reset();
    tmp = had[L[j].s] & had[L[j].t];
    if (tmp.any()) ans = max(ans, L[j].len2);
    had[L[j].s].set(L[j].t);
    had[L[j].t].set(L[j].s);
  }
  cout << fixed << setprecision(14) << sqrt(ans) * 0.5 << endl;
  return 0;
}
