Це інтерактивна задача. Після виведення кожного рядка необхідно скидати буфер виведення (flush). Ви можете використовувати cout << flush у C++, System.out.flush() у Java та sys.stdout.flush() у Python. Ви повинні суворо дотримуватися інструкцій у розділі «Протокол взаємодії», інакше ви можете отримати вердикт «неправильна відповідь» (wrong answer), «перевищено ліміт часу» (time limit exceeded) або інший.
Оскільки робота в шахті важка і забирає багато часу, гноми вирішили звернутися по допомогу для автоматизації деяких своїх завдань. Їхнє поточне завдання — розподілити $N$ мінералів (пронумерованих від $1$ до $N$) за різними класами. Щоб допомогти з цим, Гном-Робітник встановив новий конвеєр. Гноми можуть додавати зразки мінералів на початок стрічки конвеєра та знімати їх з її кінця (тобто знімати ті мінерали, які були додані найраніше).
На жаль, цей конвеєр не має бази знань, тому він не може визначити клас жодного мінералу на ньому. Проте він має іншу корисну функцію: він показує, скільки різних класів мінералів наразі перебуває на стрічці. Виявляється, для шахти цього достатньо, оскільки гномам не потрібно знати клас кожного мінералу: їм просто потрібно розділити мінерали на купи одного класу.
Чи можете ви допомогти гномам розв'язати це завдання за допомогою конвеєра?
Протокол взаємодії
Класи мінералів зафіксовані на початку і не залежать від зроблених запитів.
Спочатку зчитайте рядок, що містить одне ціле число $N$ — кількість мінералів для класифікації. Потім ви можете виконувати операції таких двох типів:
+ id— мінерал з ідентифікаторомidдодається на початок конвеєрної стрічки.-— мінерал з кінця конвеєрної стрічки знімається. Якщо стрічка порожня, нічого не відбувається.
Після кожної операції конвеєр виводить один рядок, що містить кількість різних класів, які перебувають на ньому в даний момент.
Щоб вивести відповідь, спочатку виведіть рядок, що містить символ !, за яким іде $k$ — кількість різних класів у шахті. Потім виведіть $k$ рядків, кожен з яких описує один клас. Кожен рядок повинен містити число $c_i$, за яким ідуть $c_i$ ідентифікаторів мінералів цього класу. Кожен із $N$ мінералів повинен з'явитися рівно в одному класі. Ви можете виводити класи та мінерали всередині кожного класу в довільному порядку.
Не забувайте скидати буфер виведення після кожної операції та після виведення відповіді. Не забувайте ставити пробіли між числами та символами +, -, !. Ви повинні зчитати всі дані від інтерактора.
Обмеження
$1 \le N \le 500$, ви можете виконати не більше $35\,000$ операцій.
Приклади
Вхідні дані 1
3 1 2 2 2
Вихідні дані 1
+ 1 + 2 + 3 - ! 2 2 1 3 1 2
Примітка
У першому прикладі $N = 3$, а класи мінералів $1, 2, 3$ дорівнюють $1, 2, 1$ відповідно.
Локальне тестування
У розділі Files ви можете знайти архів A.zip, що містить приклади тестів та грейдер grader.cpp. Щоб протестувати своє рішення, скомпілюйте його, а потім передайте ім'я тесту та ваш виконуваний файл скомпільованому ./grader:
./grader [test] [executable]
Наприклад: ./grader 0b.in ./abc
Не гарантується, що поведінка прикладу грейдера повністю збігається з офіційним. Проте жоден із них не є адаптивним.