Звёздный путь

아직 제출이 없습니다시간 제한1초메모리 제한1024 MB

문제

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

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

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

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

입력

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

Во второй строке входного файла записано NN целых чисел a_1,a_2,,a_Na\_1, a\_2, \ldots, a\_N (1a_i300,0001 \leqslant a\_i \leqslant 300\\,000) --- типы топлива на планетах.

출력

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

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

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

제한

  • N300,000N \le 300\\,000