#P12011. 去世

去世

题目背景

随着 NOIP 的落幕,一切已经尘埃落定。一些人的生死,也在当天决定。

民间数据带走了一部分的人。与以往不同的是,他们将面对的,是漫长的文化课。

未来将会如何?一切都是未知数。

题目描述

小 Z 作为民间数据带走的人之一,希望通过修改数据让自己获得一线生机。

具体的,nn 个数据被存储在一个二维的硬盘里,第 ii 个数据被存储在 (xi,yi)(x_i,y_i) 处(自然两个数据无法存储在同一个位置)。而小 Z 的输出却与第 aia_i 个数据的标准答案相同(保证 aa 是一个 11nn 的排列)。

他希望通过修改数据让自己的得分提高。他每次可以交换两个数据的标准答案(注意交换的是当前该数据的标准答案而非一开始的),但是这会使它们之间线段上的电路被烧坏。若他烧坏的位置出现了交点则会发生短路引起网站的爆炸,他就会进局子。他希望在自己不进局子的前提下获得满分。(在数据处相交不算,重合算相交)

现在请你输出方案来帮助小 Z 完成翻盘吧!

输入格式

第一行一个正整数 nn

接下来 nn 行,第 i+1i+1 行三个整数表示 xi,yi,aix_i,y_i,a_i

输出格式

第一行一个整数 cntcnt,表示你的操作数。你应当保证 0cntn×(n1)20\le cnt\le \cfrac{n\times(n-1)}{2}。若无法完成翻盘,此处应当输出 1-1

接下来 cntcnt 行,每行两个数 p,qp,q 表示你交换 p,qp,q 两道题的标准答案。你需要保证 pqp\not=q1p,qn1\le p,q\le n

若输出了不合法的内容该子任务将会直接获得 00 分。

输入输出样例 1

die1.in die1.out
5
1 1 2
-1 -2 5
3 3 4
-2 3 1
-2 1 3
4
1 2
3 2
2 5
3 4

输入输出样例 2

见 die2.in/out。

输入输出样例 3

见 die3.in/out。

说明/提示

样例 1 解释:

一开始,每道题的标准答案是 1,2,3,4,5

经过第一次操作后标准答案为 2,1,3,4,5

经过第二次操作后标准答案为 2,3,1,4,5

经过第三次操作后标准答案为 2,5,1,4,3

经过第四次操作后标准答案为 2,5,4,1,3

与每道题小 Z 的输出相符。而被烧坏的硬盘的电路形如:

没有交点,故方案合法。

数据范围:

子任务编号 分值 特殊性质
subtask 1\texttt{subtask 1} 66 n3n\le 3
subtask 2\texttt{subtask 2} 1313 n5n\le 5
subtask 3\texttt{subtask 3} 1414 n18n\le 18
subtask 4\texttt{subtask 4} 1717 保证点能围成凸多边形
subtask 5\texttt{subtask 5} 2424 n200n\le 200
subtask 6\texttt{subtask 6} 2626

对于所有的数据,1n20001\le n\le 20001xi,yi1061\le x_i,y_i\le 10^6。保证任意三点不共线。