2841: 字体设计

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:2 解决:1

题目描述

现在,需要你协助某人开发某种新的Linux 下的中文字体。

现在,需要给上图里的黄点做「位置锚固」,然而有些黄点的位置可以由「插 值」确定,这样就可以减少锚固的数量。例如,在上图中,#46 #49 #52 #53 的 位置可以由#42 和#57 插值得到, 我就不需要去锚固它们,只需要固定#42 和#57 就可以了。这样可以给这个字减少至少12 字节。 抽象一下问题,现在给出数组a。定义ax可以被al 和ar插值得到为: * 存在l < x < r,使得al < ax < ar 或者al > ax >ar。 求最少的「锚固」元素的数目,使得非锚固元素都可以由其左右最靠近它的 锚固元素插值得到。并输出锚固元素的下标。

 

输入

输入文件第一行一个整数n,表示数组的大小(1 ≤ n ≤ 10^5)。 第二行为n 个整数a1,a2,...,an,表示数组中的元素(1 ai ≤ 10^9)。 保证所有ai互不相同。

输出

输出文件第一行包含一个整数,表示锚固元素的数目。 第二行包含n 个整数,表示锚固元素的下标,每2 个数之间用1 个空格隔开。

样例输入 复制

7
1 2 3 10 6 5 4

样例输出 复制

3
1 4 7

提示

in

8

3 4 2 1 8 5 7 6

out

7

1 2 4 5 6 7 8