Ограничение по времени: 2.000 секунд
Ограничение по памяти: 256.000 мегабайт
Чтобы добраться зимой до офиса в Новосибирске нужно преодолеть n снежных гор, высота i-й горы составляет ai метров.
Сергей боится поскользнуться и упасть, поэтому он никогда не спускается и не прыгает вниз. Зато он очень хорошо прыгает и развил в себе полезный навык: если высота i-й горы равна высоте j-й, то Сергей может за одно действие сделать все горы на отрезке с i по j включительно высотой ai.
Чтобы добраться до офиса, Сергею требуется применить свой навык к некоторым отрезкам гор так, чтобы ему никогда не пришлось спускаться вниз, то есть выполнялось бы условие ai ⩽ ai+1. Сергей очень торопится и не хочет тратить много сил, поэтому не может слишком часто менять высоты гор. Помогите Сергею добраться до офиса за минимальное количество действий.
В первой строке дано целое число n — количество гор на пути к офису (1 ⩽ n ⩽ 106). Во второй строке дано n целых чисел ai — высоты гор (1 ⩽ ai ⩽ 106).
В первой строке выведите p — минимальное количество действий, которое нужно совершить Сергею, чтобы добраться до офиса.
В каждой из последующих p строк выведите два числа l и r — границы очередного отрезка гор, с которым нужно совершить действие по уравниванию.
Действия выводите в том порядке, в котором их должен совершать Сергей.
Если решения нет, в единственной строке выведите -1
.
input | output |
---|---|
6 1 2 3 1 4 5 |
1 1 4 |
10 1 2 1 3 1 5 6 5 6 6 |
2 1 5 6 8 |