const
  maxn = 100;
  eps = 1e-9;

var
  x, y : array[1..maxn] of integer;
  a, b, c : array[1..maxn] of double;
  t, l, r, rr, xx, yy : double;
  n, i, j, k, step : integer;
  hasgood, good : boolean;
  s : double;

begin
  reset(input, 'stadium.in');
  rewrite(output, 'stadium.out');
  read(n);
  for i := 1 to n do begin
    read(x[i], y[i]);
  end;
  s := 0;
  for i := 1 to n do begin
    s := s + x[i] * y[i mod n + 1] - x[i mod n + 1] * y[i];
  end;
  for i := 1 to n do begin
    a[i] := y[i mod n + 1] - y[i];
    b[i] := x[i] - x[i mod n + 1];
    t := sqrt(a[i] * a[i] + b[i] * b[i]);
    a[i] := a[i] / t;
    b[i] := b[i] / t;
    c[i] := -a[i] * x[i] - b[i] * y[i];
  end;
  l := 0;
  r := 100000;
  for step := 1 to 100 do begin
    rr := (l + r) / 2;
    for i := 1 to n do begin
      if (s > 0) then
        c[i] := c[i] + rr
      else 
        c[i] := c[i] - rr;
    end;
    hasgood := false;
    for i := 1 to n do begin
      for j := 1 to n do begin
        if (abs(a[i] * b[j] - a[j] * b[i]) < eps) then continue;
        xx := (b[i] * c[j] - b[j] * c[i]) / (a[i] * b[j] - a[j] * b[i]);
        yy := -(a[i] * c[j] - a[j] * c[i]) / (a[i] * b[j] - a[j] * b[i]);
        good := true;
        for k := 1 to n do begin
          if (s < 0) and (a[k] * xx + b[k] * yy + c[k] < -eps) then begin
            good := false;
          end;
          if (s > 0) and (a[k] * xx + b[k] * yy + c[k] > eps) then begin
            good := false;
          end;
        end;
        if (good) then begin
          hasgood := true;
        end;
      end;
    end;
    for i := 1 to n do begin
      if (s > 0) then
        c[i] := c[i] - rr
      else 
        c[i] := c[i] + rr;
    end;
    if hasgood then begin
      l := rr;
    end else begin
      r := rr;
    end;
  end;
  writeln(((l + r) / 2):0:6);
end.