시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB63240.000%

문제

Экспедиция готовится отправиться в путь на космическом корабле нового поколения. Планируется последовательно посетить $N$ планет звёздной системы --- от планеты Земля до планеты Победа. Планеты пронумерованы от $1$ до $N$ в порядке их посещения, Земля имеет номер $1$, а Победа --- номер $N$.

Для перелёта между планетами корабль может использовать любой тип топлива, существующий в звёздной системе. Перед началом экспедиции корабль находится на планете Земля, и бак корабля пуст. Существующие типы топлива пронумерованы целыми числами, на планете с номером $i$ можно заправиться только топливом типа $a_i$. При посещении $i$-й планеты можно заправиться, полностью освободив бак от имеющегося топлива и заполнив его топливом типа $a_i$.

На каждой планете станция заправки устроена таким образом, что в бак заправляется ровно столько топлива, сколько потребуется для перелёта до следующей планеты с топливом такого же типа. Если далее такой тип топлива не встречается, заправляться на этой планете невозможно. Иначе говоря, после заправки на $i$-й планете топлива хватит для посещения планет от $(i + 1)$-й до $j$-й включительно, где $j$ --- минимальный номер планеты, такой что $j > i$ и $a_j = a_i$. Для продолжения экспедиции дальше $j$-й планеты корабль необходимо снова заправить на одной из этих планет.

Требуется написать программу, которая по заданным типам топлива на планетах определяет минимальное количество заправок, требуемых для экспедиции.

입력

В первой строке входного файла записано число $N$ ($2 \leqslant N \leqslant 300\,000$) --- количество планет.

Во второй строке входного файла записано $N$ целых чисел $a_1, a_2, \ldots, a_N$ ($1 \leqslant a_i \leqslant 300\,000$) --- типы топлива на планетах.

출력

В первой строке выходного файла выведите единственное число $K$ --- минимальное количество заправок, которые нужно произвести.

Во второй строке выведите $K$ чисел, разделённых пробелами, --- номера планет, на которых требуется заправиться. Номера планет требуется выводить в порядке времени заправок.

Если решений с минимальным количеством заправок несколько, выведите любое из них. Если решения не существует, выведите число $0$.

제한

  • $N \le 300\,000$

예제 입력 1

7
1 3 2 1 3 2 3

예제 출력 1

3
1 3 5

예제 입력 2

7
4 3 2 4 3 2 1

예제 출력 2

0