题目背景
大样例下发链接:http://pan.baidu.com/s/1c0LbQ2 密码:jigg
题目描述
小 C 在了解了她所需要的信息之后,让兔子们调整到了恰当的位置。小 C 准备给兔子 们分成若干个小组来喂恰当的胡萝卜给兔子们吃。
此时, $n$ 只兔子按一定顺序排成一排,第 $i$ 只兔子的颜色是 $a_i$ 。由于顺序已经是被 调整好了的,所以每个小组都应当是序列上连续的一段。
在分组前,小 C 发现了一个规律:有些兔子会两两发生矛盾。并且,两只兔子会发生矛 盾,当且仅当代表他们的颜色的数值之和为一个正整数的平方。比如,1 色兔子和 2 色兔子 不会发生矛盾,因为 3 不是任何一个正整数的平方;而 1 色兔子却会和 3 色兔子发生矛盾, 因为 $4 = 2^2$。
小 C 认为,只要一个小组内的矛盾不要过大就行。因此,小 C 定义了一个小组的矛盾 值 $k$ ,表示在这个小组里,至少需要将这个组再一次分成 $k$ 个小团体;每个小团体并不需 要是序列上连续的一段,但是需要使得每个小团体内任意两只兔子之间都不会发生矛盾。
小 C 要求,矛盾值最大的小组的矛盾值 $k$ 不超过 $K$ 就可以了。当然,这样的分组方 法可能会有很多个;为了使得分组变得更加和谐,小 C 想知道,在保证分组数量最少的情况 下,字典序最小的方案是什么。你能帮帮她吗?
字典序最小的方案是指,按顺序排列分组的间隔位置,即所有存在兔子 $i$ 和 $i + 1$ 在 不同组的位置 $i$,和其它所有相同分组组数相同的可行方案相比总有第一个不同的位置比其 它方案小的方案。
输入格式:
从标准输入中读入数据。
输入第 1 行两个正整数 n,K。
输入第 2 行 n 个正整数,第 i 个数表示第 i 只兔子的颜色 a_i。
输出格式:
输出到标准输出中。
输出第 1 行一个正整数 $m$,为你至少需要将兔子分为多少个小组。
输出第 2 行m-1个从小到大的排列的正整数,第 $i$ 个数 $s_i$ 表示 $s_i$ 和 $s_i + 1$ 在 你的方案里被分到了两个小组。如果 $m = 1$,那么请输出一个空行。
输入样例#1:
5 2
1 3 15 10 6
输出样例#1:
2
1