eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Текстовий редактор

Текстовий редактор

Лимит времени 1 секунда
Лимит использования памяти 64 MiB

Уявіть, що вас узяли на роботу у велику софтверну компанію і ви стали розробником потужного текстового редактора. Звичайно, сучасний текстовий редактор містить величезну кількість функцій, однак його розробку спрощує загальний підхід: усю функціональність редактора можна розбити на окремі функції й бібліотеки, розробка кожної з яких під силу окремій команді розробників чи навіть одному програмісту..

Текст формується таким чином: користувач щоразу додає по одному слову або в кінець, або на початок тексту, відбиваючи це слово пробілом від попередніх чи від наступних слів. Один рядок вікна текстового редактора вміщає не більше ніж L символів (якщо рахувати й пробіли). Редактор втілює стандартну логіку перенесення рядків: перше слово, яке не вміщається в попередній рядок, переноситься в наступний. Якщо два сусідніх слова розташовані в різних рядках, пробіл між ними зникає.

####Завдання

Ваша задача — реалізувати допоміжну програму, що в режимі реального часу рахуватиме кількість рядків у тексті, який вводить користувач

Входные данные

У першому рядку вхідного файлу містяться два натуральних числа, які не перевищують 10^5: максимальна кількість символів у рядку L та загальна кількість операцій із редактором N, причому під операцією ми розуміємо дію одного з трьох видів:

  1. користувач додає слово в кінець тексту;

  2. користувач додає слово на початок тексту;

  3. потрібно знайти кількість рядків, які займає поточний текст.

Далі йдуть N рядків по одному або два числа в кожному: тип операції (1, 2 або 3) і, для операцій 1 та 2 (введення слова), через пробіл довжина слова, яке ввів користувач. Ця довжина є натуральним числом, що не може перевищувати максимальну довжину рядка L. Перша операція у вхідному файлі може бути лише операцією типу 1 або операцією типу 2, які слід тлумачити однаково: це введення першого слова у порожній до того текст. Також відомо, що у вхідному файлі є щонайменше одна операція типу 3.

Выходные данные

Вихідний файл повинен містити стільки рядків, скільки операцій типу 3 задано у вхідному файлі. У кожному з них потрібно надати результат на відповідний запит — поточну на момент запиту кількість рядків у тексті.

####Оцінювання

Пiдзадача Бали Додатковi обмеження Необхідніпідзадачі

0 0 Тести з умови -

1 8 L ≤ 2 -

2 8 Сумарна довжина всіх уведених слів не перевищує L -

3 7 N ≤ 1000 та у вхідному файлі немає операцій типу 2 -

4 14 У вхідному файлі немає операцій типу 2 3

5 7 N ≤ 1000 та у вхідному файлі немає операцій типу 1 -

6 16 У вхідному файлі немає операцій типу 1 5

7 7 N ≤ 1000 3, 5

8 33 Без додаткових обмежень 0, 1, 2, 3, 4, 5, 6, 7

Пример

Входные данные #1
10 9
1 6
1 3
3
2 1
3
3
1 5
1 1
3
Выходные данные #1
1
2
2
3