#include <bits/stdc++.h>
using namespace std;
const int MAX = 3000 + 10;
int n;
struct Point {
  int first, second;
  int num;
} d[MAX], st[MAX];
int dist[MAX][MAX];
int p[MAX * MAX], tot;
int operator<(const Point& a, const Point& b) {
  if (a.first != b.first)
    return a.first < b.first;
  else
    return a.second < b.second;
}
int chaji(const Point& s, const Point& a, const Point& b) {
  return (a.first - s.first) * (b.second - s.second) -
         (a.second - s.second) * (b.first - s.first);
}
int check(int S, int D) {
  int i, j;
  int top = 0;
  for ((i) = (1); (i) <= (n); ++(i))
    if (i != S && dist[S][i] >= D) {
      while (top > 1 && chaji(st[top - 1], st[top], d[i]) > 0) top--;
      st[++top] = d[i];
    }
  int di = top;
  for (i = n; i >= 1; --i)
    if (i != S && dist[S][i] >= D) {
      while (top > di && chaji(st[top - 1], st[top], d[i]) > 0) top--;
      st[++top] = d[i];
    }
  int ans = 0;
  --top;
  if (top <= 5) {
    for ((i) = (1); (i) <= (top); ++(i))
      for ((j) = (1); (j) <= (top); ++(j))
        ans = max(ans, dist[st[i].num][st[j].num]);
  } else {
    int u = 1;
    for ((i) = (1); (i) <= (top); ++(i)) {
      int k = st[i].num;
      for (; u % top + 1 != i &&
             dist[st[u % top + 1].num][k] >= dist[st[u].num][k];)
        u = u % top + 1;
      int p = dist[st[u].num][k];
      if (p > ans) ans = p;
    }
  }
  return ans >= D;
}
int main() {
  int i, j;
  scanf("%d", &n);
  for ((i) = (1); (i) <= (n); ++(i)) scanf("%d%d", &d[i].first, &d[i].second);
  sort(d + 1, d + n + 1);
  for ((i) = (1); (i) <= (n); ++(i)) d[i].num = i;
  for ((i) = (1); (i) <= (n); ++(i))
    for ((j) = (1); (j) <= (n); ++(j)) {
      dist[i][j] = ((d[i].first - d[j].first) * (d[i].first - d[j].first)) +
                   ((d[i].second - d[j].second) * (d[i].second - d[j].second));
      p[++tot] = dist[i][j];
    }
  sort(p + 1, p + tot + 1);
  tot = unique(p + 1, p + tot + 1) - p - 1;
  int ans = 1;
  for ((i) = (1); (i) <= (n); ++(i))
    if (check(i, p[ans])) {
      int left = ans, right = tot;
      while (left < right) {
        int mid = (left + right + 1) / 2;
        if (check(i, p[mid]))
          left = mid;
        else
          right = mid - 1;
      }
      ans = left;
    }
  printf("%.6lf\n", sqrt(p[ans]) / 2);
  return 0;
}
