ps = gets.to_i.times.map { Complex(*gets.split.map(&:to_i)) }
i, r = 0, 0
while ps.size >= 3
  u, v = ps[(i+1)%ps.size] - ps[i], ps[i-1] - ps[i]
  a = (v / u).arg
  if a > 0
    c = (u.conj * v).imag
    x = Complex(*v.rect.reverse!)
    y = -Complex(*u.rect.reverse!)
    if ps.size.times.reject {|j| j == i || j == (i-1)%ps.size || j == (i+1)%ps.size }.all? {|j|
         w = ps[j] - ps[i]
         s = (x * w).real.to_f / c
         t = (y * w).real.to_f / c
         !(s >= 0 && t >= 0 && s + t <= 1)
       }
      r += c * 0.5
      ps.delete_at i
      i %= ps.size
    else
      i = (i+1)%ps.size
    end
  else
    i = (i+1)%ps.size
  end
end
puts '%.1f' % r