Byteotian 古生物学家最近挖掘出了一些琥珀,里面困着古代蚊子。在分析了昆虫样本后,发现它们来自侏罗纪时期,因此很可能接触过统治 Byteotian 大陆的大型爬行动物。这给了遗传学家一个奇特的想法:尝试从蚊子的血液中提取 byteoraptor 的遗传物质。
Byteoraptor 的基因组,和所有 Bytean 生物一样,是一个由若干 byteo-氨基酸组成的链。为简单起见,我们用自然数表示 byteo-氨基酸的类型。基因组中存在冗余——每种类型的 byteo-氨基酸都会重复 $k$ 次(具体来说,每个正确基因组的长度都是 $k$ 的倍数)。换句话说,如果我们把基因组分成若干个由连续 $k$ 个 byteo-氨基酸组成的块,那么每一块都将包含相同类型的 byteo-氨基酸。
遗传学家从蚊子血液中分离出了一条长度为 $n$ 的疑似 byteo-氨基酸链。不幸的是,该链可能不是一个有效的基因组——科学家怀疑它可能被外来的 byteo-氨基酸污染了。目前,他们想要验证这一假设,并从该链中移除最少数量的 byteo-氨基酸,使得剩余部分构成一个正常的基因组。在存在多种同样最优的可能性时,研究人员希望得到字典序最小的基因组。你的任务是帮助他们实现这一突破性的发现。
输入格式
第一行包含两个整数 $n$ 和 $k$ ($1 \leqslant n \leqslant 1\,000\,000$, $2 \leqslant k \leqslant 1\,000\,000$):提取出的 byteo-氨基酸链的长度和正确基因组的冗余度。第二行包含一个整数序列 $g_1, \dots, g_n$ ($1 \leqslant g_i \leqslant 1\,000\,000$):链中连续的 byteo-氨基酸类型。
输出格式
输出应包含两行。第一行应包含一个数字 $m$ ($0 \leqslant m \leqslant n$),表示通过从指定链中移除某些 byteo-氨基酸后,所能产生的最长正确基因组的长度。第二行应包含一个由 $m$ 个数字组成的链,描述正确基因组中连续的 byteo-氨基酸类型。如果存在多个解,你的程序应输出字典序最小的那一个。如果 $m=0$(即遗传学家未能分离出任何非空的正确基因组),则输出的第二行应为空。
样例
样例输入 1
16 3 3 2 3 1 3 1 1 2 4 2 1 1 2 2 2 2
样例输出 1
9 1 1 1 2 2 2 2 2 2
说明
*设 $l_1$ 和 $l_2$ 是两条长度相同且由 byteo-氨基酸组成的链。要确定哪一条在字典序上更靠前,需要找到两条链第一个不同的位置。在字典序上更靠前的链,是在该位置上标记的 byteo-氨基酸数值较小的那一条。