def cross_point(p1, p2, p3, p4)
  d = (p2[0] - p1[0])*(p4[1] - p3[1]) - (p2[1] - p1[1])*(p4[0] - p3[0])
  return nil if d == 0
  u = ((p3[0] - p1[0])*(p4[1]-p3[1]) - (p3[1]-p1[1])*(p4[0]-p3[0]))/d.to_f
  return [p1[0] + u * (p2[0] - p1[0]), p1[1] + u * (p2[1] - p1[1])]
end

$len = {}
def length(p1, p2)
  unless $len[[p1,p2]]
    $len[[p1,p2]] =  Math.sqrt((p1[0]-p2[0])**2 + (p1[1]-p2[1])**2)
  end
  return $len[[p1,p2]]
end

def area(p1, p2, p3)
  a = length(p1, p2)
  b = length(p2, p3)
  c = length(p3, p1)
  s = (a+b+c)/2.0
  return Math.sqrt(s*(s-a)*(s-b)*(s-c))
end

n = gets.to_i
pt = []
d = []
n.times{|i|
  pt[i] = gets.split.map(&:to_i)
}

q = gets.to_i
q.times{
  x1,y1,x2,y2 = gets.split.map(&:to_i)
  left = []
  right = []
  flag = false
  n.times{|i|
    side = pt[i][0] * (y1-y2) + x1 * (y2-pt[i][1]) + x2 * (pt[i][1]-y1)
    if side > 0
      if right.index(pt[i-1]) != nil
        cpt = cross_point(pt[i-1], pt[i], [x1,y1], [x2,y2])
        left << cpt
        right << cpt
      end
      left << pt[i]
    elsif side < 0
      if left.index(pt[i-1]) != nil
        cpt = cross_point(pt[i-1], pt[i], [x1,y1], [x2,y2])
        left << cpt
        right << cpt
      end
      right << pt[i]
    end
  }
  p left
  s = left.shift
  ans = 0
  (left.size-1).times{|i|
    ans += area(s, left[i], left[i+1])
  }
  puts "%.5f" % ans
}