#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:1000000000,1000000000")
using namespace std;
const long long inf = 1e18 + 7;
const long long mod = 1000000009;
const double eps = 1e-12;
const double PI = 2 * acos(0.0);
const double E = 2.71828;
int x[3005], y[3005], sz = 0;
bitset<3005> b[3005];
pair<int, pair<int, int> > q[3005 * (3004) / 2];
void gen() {
  long long n = 3000;
  srand(time(NULL));
  cout << n << endl;
  for (int(i) = 0; (i) < (long long)(n); (i)++) {
    int x = (rand() << 16 | rand()) % 20000 - 10000;
    int y = (rand() << 16 | rand()) % 20000 - 10000;
    cout << x << " " << y << endl;
  }
  exit(0);
}
int main(void) {
  int n;
  scanf("%d", &n);
  for (int(i) = 0; (i) < (long long)(n); (i)++) {
    scanf("%d%d", &x[i], &y[i]);
  }
  for (int(i) = 0; (i) < (long long)(n); (i)++)
    for (int(j) = 0; (j) < (long long)(i); (j)++)
      q[sz++] = make_pair(
          (x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]),
          make_pair(j, i));
  sort(q, q + sz);
  for (long long i = sz - 1; i >= 0; i--) {
    int x = q[i].second.first, y = q[i].second.second;
    long double dist = q[i].first;
    if ((b[x] & b[y]).count()) {
      cout << setprecision(12) << fixed << sqrt(dist) / 2.0 << endl;
      exit(0);
    }
    b[x][y] = b[y][x] = 1;
  }
  return 0;
}
