#include <bits/stdc++.h>
using namespace std;

int main(){
  vector<string> mt(100001, "");
  int N; cin >> N;
  
  for(int i=0; i<N; i++){
    string s;
    int t;
    cin >> s >> t;
    mt[t]=s;
  }
  bool f=false;
  for(int i=100000; i>0; i--){
    if(mt[i].size()>0){
      if(f){
        cout << mt[i] << endl;
        return 0;
      }else{
        f=true;
      }
    }
  }
}
#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
const int MAX = 105;
int x[MAX], y[MAX];
int sq(int x) { return x * x; }
double dis(int i, int j) { return sqrt(1.0 * sq(x[i] - x[j]) + sq(y[i] - y[j])); }
int par[MAX], sz[MAX], n;
void init(int v) {
	par[v] = v;
	sz[v] = 1;
}
int find(int v) {
	return v == par[v] ? v : par[v] = find(par[v]);
}
void join(int u, int v) {
	u = find(u), v = find(v);
	if(u != v) {
		if(sz[u] < sz[v]) swap(u, v);
		par[v] = u;
		sz[u] += sz[v];
	}
}
bool f(double r) {
	for(int i = 1; i <= n + 2; i ++) init(i);
	// n+1 -> x=-100
	// n+2 -> x=100
	for(int i = 1; i <= n; i ++) {
		if(y[i] - 2 * r < -100) join(i, n + 1);
		if(y[i] + 2 * r > 100) join(i, n + 2);
		for(int j = i + 1; j <= n; j ++) {
			if(dis(i, j) < 2 * r) join(i, j);
		}
	}
	return find(n + 1) != find(n + 2);
}
int main() {
	ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
	
	cin >> n;
	for(int i = 1; i <= n; i ++) cin >> x[i] >> y[i];
	double l = 0, r = 200;
	for(int i = 0; i < 60; i ++) {
		double m = (l + r) / 2;
		if(f(m)) l = m;
		else r = m;
	}
	cout << setprecision(10) << fixed << l;

	return 0;
}

// Hope for us because I believed 