Условие
Храните список целых чисел в std::vector<int>. Исходно список пуст. Обработайте команды PUSH value, INSERT index value, ERASE index, GET index, SIZE. INSERT вставляет перед элементом с указанным индексом; индекс, равный текущему размеру, означает добавление в конец. ERASE удаляет элемент; GET читает его. Индексация начинается с нуля.
Для INSERT допустимы индексы от 0 до размера включительно, для ERASE и GET — от 0 до размера минус один. При недопустимом индексе выведите ERROR и сохраните список. Все изменения выполняйте средствами std::vector.
Ограничения
Время: 2 секунды. Память: 64 МиБ. Вывод: до 2 МиБ. Язык: C++17.
Входные данные
В первой строке вводится Q. Следующие Q строк содержат команды. Ограничения: 1 ≤ Q ≤ 10000, −1 ≤ index ≤ 10000, −10⁶ ≤ value ≤ 10⁶.
Выходные данные
Для успешных PUSH, INSERT, ERASE выведите OK. Для GET — значение, для SIZE — текущий размер. При ошибке индекса выведите ERROR. Ответ на каждую команду — отдельная строка. После всех ответов выведите итоговый список в одной строке через пробел; для пустого списка выведите пустую строку.
Примеры
6 PUSH 10 PUSH 30 INSERT 1 20 GET 1 ERASE 0 SIZE
OK OK OK 20 OK 2 20 30
4 GET 0 INSERT -1 5 ERASE 0 SIZE
ERROR ERROR ERROR 0
5 INSERT 0 7 INSERT 1 9 INSERT 3 11 ERASE 1 GET 0
OK OK ERROR OK 7 7