几个世纪以来,Byteotian 高地的居民一直以放牧为生。每一位理智的牧羊人都拥有一个凸多边形形状的围栏牧场供羊群吃草。每一只理智的羊在牧场上都有自己最喜欢的觅食点,它们整天都待在那里。然而,有时羊群也想玩耍。由于它们成对玩耍,每位牧羊人都会饲养偶数只羊,这样每只羊都有一个玩伴。
牧羊人们对 Byteburg 农业高级专员最近发布的一项法令感到担忧。该法令规定,从明年开始,羊群只能在三角形的牧场上吃草。因此,任何牧场为 $n$ 边形($n > 3$)的牧羊人都必须通过在内部放置 $n-3$ 条栅栏将其划分为三角形。当然,每一条新栅栏都是连接多边形(牧场)两个顶点的线段。此外,栅栏只能在这些顶点处相交。不满足这些要求的牧羊人将不再获得补贴。
作为一名牧羊人,Byteasar 必须决定如何划分他的牧场。事实上,他不确定有多少种划分方式。他只对满足以下条件的划分感兴趣:没有任何栅栏穿过任何羊的觅食点,且每个生成的三角形内包含的觅食点数量为偶数,以便这些羊可以成对玩耍。请编写一个程序来帮助 Byteasar 计算满足这些条件的划分数量!
输入格式
标准输入的第一行包含三个整数 $n$、$k$ 和 $m$($4 \le n \le 600$,$2 \le k \le 20\,000$,$2 \mid k$,$2 \le m \le 20\,000$),用空格分隔,分别表示:牧场多边形的顶点数、羊的数量以及一个特定的正整数 $m$。接下来的 $n$ 行,每行包含两个整数 $x_i$ 和 $y_i$($-15\,000 \le x_i, y_i \le 15\,000$),用空格分隔,表示牧场第 $i$ 个顶点的坐标。顶点按顺时针顺序给出。随后的 $k$ 行,每行包含两个整数 $p_j$ 和 $q_j$($-15\,000 \le p_j, q_j \le 15\,000$),用空格分隔,表示第 $j$ 只羊的觅食点坐标。所有觅食点均严格位于牧场内部(即不在边界上)。
输出格式
程序应在标准输出上打印一个整数,即满足以下条件的牧场三角形划分方案数除以 $m$ 的余数:没有任何栅栏穿过任何羊的觅食点,且每个生成的三角形内包含的觅食点数量为偶数。
样例
输入 1
5 4 10 5 5 3 0 -1 -1 -3 4 1 10 1 0 -1 0 1 6 -2 5
输出 1
3
该图描绘了三种可能的三角形划分方式。羊的觅食点用点标记。
凸多边形是一个简单多边形(即没有自交的多边形),其中每个内角都小于 180°。