#S1031a. 返乡(home)

返乡(home)

返乡(home)

【题目背景】

"束の間 人を信じたら,もう半年がんばれる。"

每当小C回到那里时,都会想起当年被旧友7维偏序的恐惧。

又是一次考试失利,看着自己七科都比那位低的时候小C皱紧了眉头。

"但也没关系嘛,把 1217121^7 种考试成绩取满,总会有一对被偏序的人嘛!"小C的伙伴安慰着他。

"不是的,我想肯定没必要有 1217121^7 种成绩,就会产生偏序的!!"小C如是回答。

"唔,那到底有多少呢?"

"......先想想弱化版吧,先想想只有语数外三科的。"

【题目描述】

请问最多能有多少人,使得不存在一个人被另外一个人的成绩三维偏序,每科满分为 nn,分数都是整数,并且可以爆零。

形式化的,找出最大的 kk,使得存在一个三元组数组 (a1,b1,c1)(ak,bk,ck)(a_1,b_1,c_1)\cdots (a_k,b_k,c_k) 满足 0ai,bi,cin,ai,bi,ciZ0\le a_i,b_i,c_i\le n,a_i,b_i,c_i\in \mathbb{Z},且不存在点对 iji\not = j,aiaj,bibj,cicja_i\le a_j,b_i\le b_j,c_i\le c_j

输出最大的 kk,并给出构造,如有多种构造方式输出任意一种即可。

【输入格式】

从文件 home.in 中读入数据。

输入一个正整数 nn 含义同题目描述。

【输出格式】

输出到文件 home.out 中。

第一行输出一个整数 kk,表示最大的人数。

接下来 kk 行,每行三个整数,表示这个人的每科成绩。

【样例 1 输入】

1

【样例 1 输出】

3
0 0 1
0 1 0
1 0 0

【样例 2 输入】

2

【样例 2 输出】

7
1 0 2
2 0 1
1 2 0
0 1 2
2 1 0
1 1 1
0 2 1

【数据范围】

对于所有测试数据,保证 1n6001\le n\le 600

测试点编号 nn\le
121\sim 2 44
353\sim 5 1010
676\sim 7 5050
8108\sim 10 600600