Вгадайте перестановку
Дано перестановку, яка складається з ( — степінь двійки) чисел. Порядок елементів у перестановці вам невідомий.
Перестановка — це послідовність довжини цілих чисел від до , в якій всі числа зустрічаються рівно по одному разу. Наприклад, , , — перестановки, а , , — ні.
Також є такий запит: ви даєте масив довжини , такий що (зауважте, що не обов'язково є перестановкою). У відповідь ви отримуєте масив довжини , який генерується таким чином:
c = масив довжини n з нулів for i = 1 to n: if p[a[i]] > p[i]: c[a[i]] += 1 повернути c
Вам потрібно знайти загадану перестановку . Максимальну кількість запитів дивіться у параграфі «Оцінювання».
Вхідні дані
Перший рядок містить два цілі числа і () — кількість наборів вхідних даних та максимальна кількість запитів, які можна використати у кожному наборі вхідних даних.
Протокол взаємодії
Для кожного набору вхідних даних спочатку слід прочитати ціле число () — кількість елементів у перестановці .
Гарантується, що є степеню двійки (тобто є таке ціле невід'ємне число , що ).
Щоб зробити запит, виведіть «1 ...» ().
У відповідь на запит програма журі виведе масив , отриманим за правилом з умови, у наступному форматі: « ...».
Після виведення запиту не забудьте вивести символ нового рядка і скинути буфер виведення. В іншому випадку ви отримаєте вердикт Вичерпано ліміт часу
. Для скидання буфера використовуйте:
fflush(stdout)
абоcout.flush()
в C++;System.out.flush()
в Java;flush(output)
в Pascal;stdout.flush()
в Python;
дивіться документацію для інших мов.
Зверніть увагу, що якщо ваш запит недійсний (ліміт запитів перевищено або вхідний масив не задовільняє обмеженням), інтерактор виведе «-1» та припинить роботу. Якщо ви зчитаєте «-1», то негайно завершіть програму, щоб отримати вердикт Неправильна відповідь
замість довільного вердикту.
Коли ви знайдете перестановку , виведіть «2 ...».
Після цього, якщо це був останній набір вхідних даних, ви повинні завершити роботу своєї програми, в іншому випадку ви повинні продовжити роботу з наступним набором вхідних даних.
Приклади
1 256 4 0 1 1 1
1 3 2 4 2 2 1 4 2 3
Примітка
З першого запиту дізналися, що .
Отже, шукана перестановка має вигляд: .
Оцінювання
— максимальна кількість запитів, яку може використати ваша програма.
( бали)
( балів)
( балів)
( балів)
( балів)
(до балів) ; Нехай — максимальна кількість запитів, яку ви використали у одному наборі даних. Тоді результат за цей тест буде рівний:
балів, якщо ;
балів, якщо ;
балів, якщо ;