为了比较赛道,我们希望计算它们的长度。赛道是严格二维的(没有高度)。它由两个简单多边形描述,其中一个完全包含在另一个内部。赛道是这两个多边形之间的区域。我们将赛道的长度定义为完成一圈所需行驶的绝对最小距离。这可能涉及在赛道的边缘行驶以及进行任意急转弯(见图 A.1)。
图 A.1:样例输入 3 的示意图,以及绕赛道的最短路径(虚线)。
输入格式
输入包含: 一行,包含一个整数 $n$ ($3 \le n \le 50$),表示内多边形的顶点数; $n$ 行,第 $i$ 行包含两个整数 $x_i$ 和 $y_i$ ($-5\,000 \le x_i, y_i \le 5\,000$):内多边形第 $i$ 个顶点的坐标; 一行,包含一个整数 $m$ ($3 \le m \le 50$),表示外多边形的顶点数; $m$ 行,第 $i$ 行包含两个整数 $x_i$ 和 $y_i$ ($-5\,000 \le x_i, y_i \le 5\,000$):外多边形第 $i$ 个顶点的坐标。
两个多边形的顶点均按逆时针顺序给出。两个多边形的边界互不相交或接触。
输出格式
输出一行,包含一个浮点数:赛道的长度。你的答案应具有至少 $10^{-6}$ 的绝对或相对误差。
样例
输入 1
3 1 1 2 1 1 2 3 0 0 4 0 0 4
输出 1
3.41421356237309
输入 2
5 1 1 5 1 5 5 3 3 1 5 4 0 0 6 0 6 6 0 6
输出 2
16
输入 3
5 1 1 5 1 5 5 3 3 1 5 5 0 0 6 0 6 6 3 4 0 6
输出 3
16.4721359549996