Уявіть, що вас узяли на роботу у велику софтверну компанію і ви стали розробником потужного текстового редактора. Сучасний текстовий редактор містить чимало функцій, але його розробку спрощує модульний підхід: усю функціональність редактора можна розбити на окремі функції й бібліотеки, які може розробляти окрема команда чи навіть один програміст.
Текст формується так: користувач щоразу додає по одному слову або в кінець, або на початок тексту, відокремлюючи його пробілом від попередніх чи наступних слів. Один рядок у редакторі може містити не більше ніж символів (включно з пробілами). Редактор застосовує стандартне перенесення слів: перше слово, яке не вміщається на поточному рядку, переноситься на наступний. Якщо два послідовних слова розділяються перенесенням, пробіл між ними зникає.
У першому рядку містяться два натуральних числа і (1 \leq L, N \leq 10^5): максимальна кількість символів у рядку та загальна кількість операцій з редактором.
Кожен із наступних рядків описує одну з трьох можливих операцій:
Додати слово довжини (1 \leq w \leq L) у кінець тексту.
Додати слово довжини (1 \leq w \leq L) на початок тексту.
Дізнатися, скільки зараз рядків займає текст.
Для операцій типу 1 чи 2 у рядку вказано два числа: тип операції та довжину слова . Для операції 3 — лише тип операції. Перша операція у вхідних даних завжди буде типу 1 або 2 (тлумачаться однаково: додавання першого слова у порожній текст). У вхідних даних гарантовано є хоча б одна операція 3.
Для кожної операції 3 випишіть актуальну кількість рядків у тексті на момент запиту, кожну з нового рядка.
Приклад 1
Підзадача | Бали | Додаткові обмеження | Необхідні підзадачі |
|---|---|---|---|
0 | 0 | Приклади з умови | — |
1 | 8 | L \leq 2 | — |
2 | 8 | Сумарна довжина всіх слів не перевищує | — |
3 | 7 | N \leq 1000 та немає операцій типу 2 | — |
4 | 14 | Немає операцій типу 2 | 3 |
5 | 7 | N \leq 1000 та немає операцій типу 1 | — |
6 | 16 | Немає операцій типу 1 | 5 |
7 | 7 | N \leq 1000 | 3, 5 |
8 | 33 | Без додаткових обмежень | 0, 1, 2, 3, 4, 5, 6, 7 |