Alice给出了平面上的一个简单N-多边形。所谓简单N-多边形,包括N个给定的端点,和连接相邻点的直线段,特别的,我们认为1号点与N号是相邻的。对于边界上不同的直线段,保证它们只会在公共端点处相交。
有的时候Alice会指着平面上一个点,然后问Bob:“这个点是在多边形的里面呢,还是外面呢,还是在边界上呢?”
这个时候,如果她所指的点是多边形的一个顶点或者在多边形某条边的边界上,都将被认为是在多边形的边界上。
还有的时候,Alice为了加大难度,会删除连接a和b的边,并插入新的点c(新插入的点保证不与任何已有的端点重合,也不在任何边界上),然后新增a到c的边与b到c的边,从而得到一个新的简单多边形。
Alice保证这样的操作得到的新图形总是简单多边形。
Bob要做的,就是准确回答出Alice的提问。而实际上,Alice的每一次提问都将由Bob上一次的回答决定,虽然这个回答是唯一的,但却意味着如果Bob不能回答出前一个问题,就不能拿到Alice的下一个问题。不过,Alice对多边形的修改确实事先准备好的。
详细来说:Alice的每一次修改命令可以看作是一个六元组:
〈x_a,y_a,x_b,y_b,x_c,y_c〉
表示删除了坐标位置(x_a,y_a),与坐标位置(x_b,y_b)的点之间的连边,并插入新的点(x_c,y_c)。这里我们保证坐标为(x_a,y_a)的点与坐标为(x_b,y_b)的点总是存在的。
因为Alice保证了所有出现的点(这包括了询问点)的坐标都是非负整数,且都小于1000000000,且多边形中(这不包括询问点)任意两个点的x坐标不同,y坐标也不同。
所以每一次询问Alice将给出7个非负整数:
r,x_{in},y_{in},x_{out},y_{out},x_{bd},y_{bd}
而Alice这一次询问真正要询问的点(X,Y)的坐标将由上一次询问的点(x_0,y_0)与上一次询问的回答而决定。例如,若上一次询问的点在多边形外,则:
X = (r * x_0 + x_{out}) mod 1000000000
Y = (r * y_0 + y_{out}) mod 1000000000
对于第一次讯问,我们假设x_0 = y_0 = 0,也就是说将(0,0)考虑为前一次的询问。