#include <bits/stdc++.h>
const int maxn = 3000 + 3;
int a[maxn];
int b[maxn];
std::bitset<maxn> C[maxn];
int main() {
  std::vector<std::pair<int, std::pair<int, int> > > Edge;
  int n;
  std::cin >> n;
  for (int i = 1; i <= n; i++) {
    scanf("%d%d", &a[i], &b[i]);
  }
  for (int i = 1; i <= n - 1; i++) {
    for (int j = i + 1; j <= n; j++) {
      Edge.push_back(std::make_pair(
          (a[i] - a[j]) * (a[i] - a[j]) + (b[i] - b[j]) * (b[i] - b[j]),
          std::make_pair(i, j)));
    }
  }
  std::sort((Edge).begin(), (Edge).end());
  int m = Edge.size();
  for (int i = m - 1; i >= 0; i--) {
    int x = Edge[i].second.first;
    int y = Edge[i].second.second;
    if ((C[x] & C[y]).any()) {
      printf("%0.10lf\n", sqrt(Edge[i].first + 0.0) / 2);
      return 0;
    }
    C[x].set(y);
    C[y].set(x);
  }
  return 0;
}
