#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<(n);++i)
#define ALL(v) begin(v),end(v)
template<typename A, typename B> inline bool chmax(A &a, B b) { if (a<b) { a=b; return 1; } return 0; }
template<typename A, typename B> inline bool chmin(A &a, B b) { if (a>b) { a=b; return 1; } return 0; }
#define TO_STRING(VariableName) # VariableName
#define debug(x) cerr<<TO_STRING(x)<<" : "<<x<<" "<<endl;
void debugs() { cerr << endl; }
template <class T, class... Args>
void debugs(const T& x, const Args &... args) {
		cerr << x << " ";
		debugs(args...);
}
template<class A, class B>
ostream& operator<<(ostream& ost, const pair<A, B>& p) {
		ost << "{ " << p.first << ", " << p.second << " }";
	return ost;
}
template<class T>
ostream& operator<<(ostream& ost, const vector<T>& v) {
	ost << "{ ";
	for (int i = 0; i < v.size(); i++) {
		if (i)ost << ", ";
		ost << v[i];
	}
	ost << " }";
	return ost;
}
template<class A, class B>
ostream& operator<<(ostream& ost, const map<A, B>& v) {
	ost << "{ ";
	for (auto p : v) {
		ost << "{ " << p.first << ", " << p.second << " }";
	}
	ost << " }";
	return ost;
}
using ll = long long;
using pii = pair<int, int>;
constexpr ll INF = 1ll<<30;
constexpr ll longINF = 1ll<<60;
constexpr ll MOD = 1000000007;
constexpr bool debug = 0;
//---------------------------------//

std::vector<ll> find_divisor(ll n) {
	std::vector<ll> divisor;
	
	ll i = 1;
	for (; i * i <= n; i++) if (n % i == 0) divisor.push_back(i);
	i--;
	if (i * i == n) i--;
	for (; i >= 1; i--) if (n % i == 0) divisor.push_back(n / i);
	
	return divisor;
}

int main() {
	ll n;
	cin >> n;
	vector<ll> a(n+1);
	cout << "1";
	a[1] = 1;
	for(ll i = 2; i <= n; i++){
		a[i] = 0;
		vector<ll> d = find_divisor(i);
		rep(j, d.size()-1){
			a[i] = max(a[i], a[d[j]]);
		}
		a[i]++;
		cout << " " << a[i];
	}
	cout << endl;
	return 0;
}


// Problem: F - Silver Woods
// Contest: AtCoder - AtCoder Beginner Contest 181
// URL: https://atcoder.jp/contests/abc181/tasks/abc181_f
// Memory Limit: 1024 MB
// Time Limit: 2000 ms
// Powered by CP Editor (https://github.com/cpeditor/cpeditor)

#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define forn(i,x,n) for(int i = x;i <= n;++i)	
typedef pair<int,int> pii;
#define x first
#define y second

const int N = 215;
const double eps = 1e-6;
int fa[N],n;
pii pts[N];
int find(int x)
{
	if(fa[x] == x)	return x;
	return fa[x] = find(fa[x]);
}
double dist(int a,int b)
{
	int dx = pts[a].x - pts[b].x,dy = pts[a].y - pts[b].y;
	return sqrt(dx * dx + dy * dy);
}
bool check(double r)
{
	forn(i,1,N - 1)	fa[i] = i;
	forn(i,1,n)
	{
		if(abs(pts[i].y - 100) < 2 * r)
		{
			int fax = find(N - 1),fay = find(i);
			fa[fax] = fay;
		}
		if(abs(pts[i].y + 100) < 2 * r)
		{
			int fax = find(N - 2),fay = find(i);
			fa[fax] = fay;
		}
		forn(j,1,n)
		{
			if(dist(i,j) < 2 * r)
			{
				int fax = find(i),fay = find(j);
				fa[fax] = fay;
			}
		}
	}	
	return find(N - 1) != find(N - 2);
}
int main()
{
	scanf("%d",&n);
    forn(i,1,n)	scanf("%d%d",&pts[i].x,&pts[i].y);
    double l = 0,r = 205;
    while(r - l > eps)
    {
    	double mid = (l + r) / 2;
    	if(check(mid))	l = mid;
    	else			r = mid;
    }
    printf("%.18lf",l);
    return 0;
}
