#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
typedef pair<int,P> P1;
typedef pair<P,P> P2;
#define pu push
#define pb push_back
#define mp make_pair
#define eps 1e-7
#define INF 1000000000
#define fi first
#define sc second
#define rep(i,x) for(int i=0;i<x;i++)
#define SORT(x) sort(x.begin(),x.end())
#define ERASE(x) x.erase(unique(x.begin(),x.end()),x.end())
#define POSL(x,v) (lower_bound(x.begin(),x.end(),v)-x.begin())
#define POSU(x,v) (upper_bound(x.begin(),x.end(),v)-x.begin())
typedef complex<double> pt;
typedef pair<pt,pt> L;
typedef vector<P> poly;
const double EPS = 1e-9;
#define x real()
#define y imag()
bool eq(double a,double b){
  return (-EPS < a-b && a-b < EPS);
}
double dot(pt a,pt b){
	return (conj(a)*b).x;
}
double cross(pt a,pt b){
	return (conj(a)*b).y;
}
int ccw(pt a,pt b,pt c){
	b -= a; c -= a;
	if(cross(b,c) > EPS) return 1; // counter clockwise
	if(cross(b,c) < -EPS) return -1; // clockwise
	if(dot(b,c) < -EPS) return 2; //c-a-b
	if(norm(b) < norm(c)) return -2; //a-b-c
	return 0; //a-c-b
}
pt crossPoint(pt a,pt b,pt c,pt d){
	double A = cross(b-a,d-c);
	double B = cross(b-a,b-c);
	if( fabs(A) < EPS && fabs(B) < EPS ) return c;
	else if(fabs(A) >= EPS ) return c+B/A*(d-c);
	else pt(1e9,1e9);
}
vector<pt> convex_cut(vector<pt> G, pair<pt,pt>l){
  vector<pt> ans;
  for(int i=0;i<(int)G.size();i++){
    pt A = G[i];
    pt B = G[(i+1)%G.size()];
    if(ccw(l.fi,l.sc,A) != -1) ans.pb(A);
    if(ccw(l.fi,l.sc,A) * ccw(l.fi,l.sc,B) < 0)
      ans.pb(crossPoint(A,B,l.fi,l.sc));
  }
  return ans;
}
int n;
pt p[105];
int main(){
	while(1){
		cin >> n; if(!n) return 0;
		for(int i=0;i<n;i++){
			double xx,yy; scanf("%lf%lf",&xx,&yy);
			p[i] = pt(xx,yy);
		}
		double lb = 0.0,ub = 10000.0;
		rep(WWW,100){
			double mid = (lb+ub)/2;
			vector<pt>vec; rep(i,n) vec.pb(p[i]);
			rep(j,n){
				pt A = p[j],B = p[(j+1)%n];
				pt C = A-B;
				C *= pt(0.0,-1.0); //cout << C << endl;
				C *= mid / abs(C);
				A += C; B += C;
			//	cout << A << " " << B << endl;
				vec = convex_cut(vec,mp(A,B));
				//rep(i,vec.size()) cout << vec[i] << endl;
			}
			//cout << vec.size() << endl;
			if(vec.size() <= 2) ub = mid;
			else lb = mid;
		}
		printf("%.12f\n",lb);
	}
}