Останнім часом пан Хамсадех працює ІТ-інженером у відділі центрального контролю дорожнього руху муніципалітету Тегерана. Тепер він відповідає за нову систему спостереження за трафіком, з якою транспортні засоби, що порушують закон, будуть штрафуватись через автоматичне розпізнавання номерних знаків та виписку штрафних квитанцій. Система працює вже кілька тижнів у продакшн-середовищі й ось настав час пану Хамсадеху виписувати штрафи. Поки він готував систему, диск серверу баз даних пережив фатальний збій апаратного забезпечення і всі його дані були катастрофічно втрачені. Сміючись над власним лихом, нещасний пан Хамсадех почав перевіряти інші системи в надії на відновлення даних. Єдиною доступною інформацією виявилися журнали, що залишилися на сервері застосунків. На щастя, всі форми внесення даних логуються у сервісному шарі серверу застосунків, і, таким чином, втрачену інформацію можливо повністю відновити, використовуючи ці журнали. Але такі задачі з відновлення даних занадто складні для пана Хамсадеха, і часу на встановлення нової бази, імпорт відновлених даних та переналаштування всієї архітектури для виписки штрафів вже не залишилося. Відчуваючи справжній тиск, пан Хамсадех звертається до вас по допомогу. Ви маєте написати програму, яка зчитує всі журнали та виписує штрафні квитанції. У наступних абзацах пан Хамсадех описує правила дорожнього руху Тегерану, сервіси, що надає система спостереження, формат журналів та правила виписки штрафів.

Кожна дорога вважається такою, що знаходиться в одній із трьох зон трафіку Тегерана:
Центральна зона обмеження трафіку ()
Зона парних/непарних обмежень ()
Незаборонена зона ()
Звичайним легковим автомобілям зазвичай заборонено в'їжджати в у такі часові інтервали:
З суботи по середу з : до :
У четвер з : до :
Звичайним легковим авто, номер яких закінчується на парну цифру, заборонено в'їжджати в у такі інтервали:
У неділю та вівторок з : до :
У четвер з : до :
Звичайним легковим авто, номер яких закінчується на непарну цифру, заборонено в'їжджати в у такі інтервали:
У суботу, понеділок та середу з : до :
Таким чином, у п'ятницю (офіційний вихідний в Ірані) жодних зональних обмежень не діє. Деяким транспортним засобам (зокрема громадському транспорту та службам екстреної допомоги) дозволено в'їжджати у та у будь-який час без обмежень. Звичайні авто також можуть заїжджати в ці зони, якщо куплять одноденний дозвіл, але у цій задачі купівля дозволів не враховується. Якщо автомобіль незаконно потрапляє у або , він має бути оштрафований. Кожен транспортний засіб має штрафуватись щонайбільше один раз на день за порушення зональних обмежень. Якщо в один день для авто сталося порушення як , так і обмежень, враховується порушення , яке має вищий штраф. Кожна дорога спочатку вважається, що належить до , але це може змінитись через оголошення. Нові правила з таких оголошень починають діяти з наступного дня після оголошення. Так само, на початку жоден транспортний засіб не звільнений від зональних правил, але виключення додаються та видаляються з часом. Такі зміни також враховують із наступного дня.
Далі наводяться сервіси, які надає сервер застосунків. Для кожного сервісу у журналі є відповідний запис, що містить ім'я сервісу та параметри. Як видно з опису та прикладів сервісів, параметри задаються у визначеному порядку. Незалежно від типу сервісу, список параметрів будь-якого запису завжди починається зі спеціальної пари параметрів (званих timestamp): "day" та "time". Timestamp природно відображає точний час запиту. Параметр "day" — це додатне ціле число, що показує кількість днів після дня початку роботи системи (день ). Параметр "time" показує час запиту цього дня у форматі "HH:mm:ss" (00 \le HH \le 23, 00 \le mm, ss \le 59).
setRoadZone(day, time, zone, roads)
Параметр "zone" може бути "UZ", "CTRZ", або "EORZ". Параметр "roads" містить непорожній список не обов'язково різних назв доріг. Починаючи з наступного дня, відповідні дороги вважаються такими, що належать до вказаної "zone" (перекриваючи попередній стан зони). Приклади у журналі:
setRoadZone 2 "09:12:53" "CTRZ" "Enghelab" "Sa'di" "Ferdowsi" "Ferdowsi"
setRoadZone 5 "14:32:01" "EORZ" "Resalat"
setRoadZone 12 "00:00:59" "UZ" "Persian_Gulf"
addZoneException(day, time, vehicles) | removeZoneException(day, time, vehicles)
Параметр "vehicles" містить непорожній список не обов'язково різних номерів авто. Починаючи з наступного дня, відповідні авто {не повинні | повинні} штрафуватись у разі в'їзду в або у заборонений час. Ці команди перекривають попередній стан заданих авто (який міг бути таким самим). Приклади у журналі:
addZoneException 1 "09:00:13" "1234567" "9876543"
removeZoneException 3 "15:33:02" "1234567" "9876345"
addPhotoInfo(day, time, photoId, road, vehicles)
Це одна із ключових функцій системи. Вона не викликається з UI-шару. Її викликає інша складна система: зовнішній сервер обробки зображень, що аналізує фото з камер спостереження. Даний сервіс викликається, коли фото зроблено й проаналізовано. Ідентифікатор аналізованого фото приводиться у параметрі "photoId", ціле додатне число. У параметрі "road" — назва дороги, на якій зроблено фото. Сервер обробки зображень знаходить транспортні засоби на фото та розпізнає їхні номери. Параметр "vehicles" містить список розпізнаних номерів. Можливо, цей список порожній (якщо на фото не було жодного авто). "timestamp" тут означає момент зйомки фото. Приклади у журналі:
addPhotoInfo 18 "03:18:43" 3324249 "Pastor" "6256256" "8888310"
addPhotoInfo 4 "20:47:31" 54 "Mokhberoddoleh,_sar-e_Sa'di"
addPhotoInfo 27 "06:39:14" 112385612 "17-e_shahrivar" "1006016"
Можна припускати такі твердження:
Об'єкти-параметри завжди мають одну з таких форм:
Цілі числа: усі невід'ємні
Рядки: завжди у лапках (")
Списки: завжди останній параметр, складаються з розділених пробілами параметрів-рядків до кінця рядка
Усі токени, включаючи імена сервісів та параметр-об'єкти (рядки, цілі числа й члени списків), розділені одним пробілом.
Параметр "time" у форматі "HH:mm:ss" має рівно символів і всі його три складові мають рівно цифри (заповнюються "0", якщо менше ).
Назви доріг складаються з англійських букв (малі та великі), цифр, дефісу (-), підкреслення (_), крапки (.), коми (,) та апострофа ('). Назви не порожні та не довші за символів.
Усі номери зареєстрованих авто — це рядки рівно з цифр.
Кожна дорога чи авто завжди згадуються одним і тим самим рядком.
Не буває двох однакових міток часу.
Якщо на один і той самий день припадають конфліктні команди, пріоритет має новіша (з більшим timestamp). Можна вважати, що сервіс "addPhotoInfo" викликається не більше ніж один раз для кожного photoId.
Кожен номер авто з'являється не більше одного разу на кожному фото.
Тривалість роботи системи не більше днів.
Авто має бути оштрафоване за незаконне відвідування зони навіть якщо його фото зроблено у прикордонний момент (наприклад, у понеділок о ::).
Штрафи треба накласти на основі результату аналізу фото. Як зазначалося вище, квитанція про штраф видається на кожне авто, що порушило, не більше ніж один раз на день. До квитанції мають бути прикріплені всі фото з будь-яким порушенням цього дня. Фото у квитанції мають бути відсортовані за часом зростання (timestamp). Якщо для одного авто сталося і порушення , і , треба прикріпити фото усіх порушень, але виписати квитанцію з штрафом за . Порядок виводу квитанцій також важливий. Квитанції мають бути спочатку відсортовані за номерами авто у лексикографічному порядку. Квитанції одного авто — за зростанням дня порушення.
Вхідний файл складається з кількох тестових випадків. Кожен починається рядком з єдиного цілого числа — кількість рядків у журналі (1 \le N \le 1000). У другому рядку подано рядок і два додатних цілі числа і . Рядок — одне з "Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday" або "Friday", що показує день тижня початку роботи системи (день ). Числа і — відповідно суми штрафів за незаконний в'їзд у і (EOP < CTP). Далі у рядках вказані сервісні журнали у вказаному форматі. Логи не обов'язково впорядковані — це конкатенація багатьох журналів. Кожен рядок має не більше символів. Усі числа у вхідних даних менші за 10^9. Кінець введення — рядок "0" (без лапок).
Для кожного тестового випадку треба вивести квитанції про штраф у вказаному порядку. Кожна квитанція складається з основного рядка та одного чи більше доданих фото. Основна частина має бути надрукована у вигляді:
vehicle: "NUMBER", day: DAY, offence: "OFFENCE", penalty: PENALTY
Тут значення шаблонів такі:
NUMBER: реєстраційний номер порушника
DAY: день порушення (як у timestamp)
OFFENCE: тип порушення, завжди один з рядків:
Outlawed entrance to
Outlawed entrance to
Outlawed entrance to &
PENALTY: сума, яку має сплатити водій
Кожне додане фото має бути надруковано окремим рядком у такому форматі:
photo: PHOTO-ID, time: "TIME", road: "ROAD"
Тут значення такі:
PHOTO-ID: ідентифікатор фото (для рендерингу справжньої квитанції)
TIME: час зйомки у форматі "HH:mm:ss" (точно як timestamp)
ROAD: назва дороги, де зроблено фото
Додержуйтесь форматування, зокрема порядку параметрів, пробілів, розділових знаків і лапок. Між відповідями для різних тестів виводьте один рядок "###".
Приклад 1