У цій задачі вам потрібно створити бієкцію, яка відображає кожну перестановку довжини з циклами в перестановку тієї ж довжини з записами.
Перестановка довжини — це послідовність з цілих чисел p(1), p(2), \ldots, p(n), де кожне число від до зустрічається рівно один раз.
Цикл у перестановці — це послідовність чисел c_1, c_2, \ldots, c_m, де p(c_1) = c_2, p(c_2) = c_3, , p(c_m) = c_1. Особливий випадок — цикл одиничної довжини: p(i) = i. Кожна перестановка може бути представлена як об'єднання попарно неперетинних циклів.
Записом у перестановці називається такий її елемент p_j, який більший за всі попередні елементи: p_j > p_i для кожного i < j. За визначенням, p_1 завжди є записом. Доведено, що для заданих і кількість перестановок довжини з циклами дорівнює кількості перестановок довжини з записами. Отже, існує бієкція між перестановками довжини з циклами і перестановками довжини з записами. Бієкція — це функція, яка встановлює взаємно однозначну відповідність між елементами двох множин: кожному елементу першої множини відповідає рівно один елемент другої множини, і навпаки. Вам потрібно знайти і реалізувати таку функцію.
Перший рядок містить кількість перестановок (1 \le t \le 300\,000).
Кожен з наступних рядків описує одну перестановку. Опис починається з числа (1 \le n \le 300\,000) — довжини перестановки, за яким слідує символ "r" або "c", що вказує на тип перестановки. Далі йде послідовність з цілих чисел, що задають саму перестановку. Кожне число від до зустрічається в цій послідовності тільки один раз.
Елементи в рядку розділені пробілами. Загальна довжина всіх вхідних перестановок не перевищує .
Формат виходу такий самий, як і вхідних даних.
Перший рядок містить кількість вхідних перестановок .
Для кожної з заданих перестановок виведіть відповідну перестановку в окремому рядку. Якщо тип вхідної перестановки — "r", знайдіть кількість записів у ній і виведіть відповідну перестановку типу "c" з такою ж кількістю циклів. Якщо тип вхідної перестановки — "c", знайдіть кількість циклів у ній і виведіть відповідну перестановку типу "r" з такою ж кількістю записів.
Кожен з рядків починається числом — довжиною перестановки, за яким слідує символ, що вказує на тип. Далі йдуть чисел, що описують саму перестановку. Елементи в одному рядку розділяються одним пробілом.
Відповідність має бути узгодженою: якщо перестановці типу "r" відповідає перестановка типу "c", то зворотне також має бути вірним, жодна інша перестановка типу "c" не може відповідати , і жодна інша перестановка типу "r" не може відповідати . Ваша бієкція не обов’язково має бути узгодженою з різними тестами.
Приклад 1
Довжина першої перестановки n = 3. Перша перестановка має тип "r" і містить три записи. Друга перестановка має тип "c" і містить три цикли. Ці дві перестановки відповідають одна одній. Третя і четверта перестановки мають тип "r" і містять по два записи кожна. П’ята перестановка має тип "c" і містить два цикли. Вона відповідає третій перестановці. Четверта перестановка відповідає перестановці типу "c", що містить два цикли.
Остання перестановка має довжину n = 2, тип "c" і складається з одного циклу. Вона відповідає перестановці типу "r" з одним записом.
Зазначимо, що це не єдина можлива бієкція: у прикладі дано альтернативний варіант виходу. Для третьої вхідної перестановки ( типу "r") ми обрали типу "c" як відповідну. Тоді четверта перестановка ( типу "r") повинна мати іншу відповідну перестановку, тому оберемо для неї перестановку типу "c". Для п’ятої перестановки ( типу "c") єдино можливою є типу "r", оскільки дві інші перестановки з двома записами вже відповідають іншим перестановкам з двома циклами.