Ти k-ий?#10446

Ти k-ий?

3 секунди
256 мегабайтів
Складна

У Козака Вуса є три секретні масиви , , з цілих додатних чисел. Позначимо їхні довжини як , та відповідно. Ці довжини не обов'язково однакові. Відомо, що кожен масив відсортований, тобто, кожен наступний елемент не менший за попередній.

Ви хочете отримати певну інформацію про ці масиви, а саме — значення -го елементу у відсортованому об'єднанні масивів. Тобто, якщо з цих трьох масивів зробити один великий масив довжини |a| + |b| + |c|, відсортувати його, то потрібно дізнатися -ий елемент у такому масиві.

Козак Вус відмовляється показувати вам ці масиви. Проте він погодився на наступне: ви можете дізнаватися значення певних чисел. Ви можете вибрати певний масив та певну позицію у цьому масиві, після чого Козак Вус повідомить вам значення цього елементу. Зверніть увагу, що ви можете робити цю операцію багато разів, не обов'язково над одним і тим же масивом. Оскільки Козак — дуже зайнята людина, він дозволив вам поставити йому не більше ніж питань.

Потрібно дізнатися -ий найменший елемент в об'єднанні масивів.

Вхідні дані

Перший рядок містить п'ять цілих чисел , , , , (0 \leq |a|, |b|, |c| \leq 10^6, 1 \leq k \leq |a| + |b| + |c|).

Гарантується, що всі загадані числа у межах [1, 10^9].

Число (0 \leq g \leq 9) — номер групи тестів (див. Оцінювання).

Взаємодія

Спочатку потрібно зчитати п'ять цілих чисел , , , , .

Щоб зробити запит, виведіть 1 . Тут — номер масиву: якщо r = 1, то операція буде здійснена над масивом , якщо r = 2, то над масивом , якщо r = 3, то над . А — номер позиції у цьому масиві. Якщо ви, наприклад, виконуєте операцію над масивом , то, щоб отримати перший елемент, потрібно, щоб m = 1, а щоб останній, потрібно, щоб m = |a|.

Приклад запиту 1 3 10 — отримати -те число у масиві .

Після виведення запиту не забудьте вивести символ нового рядка і скинути буфер виведення. В іншому випадку ви отримаєте вердикт Вичерпано ліміт часу. Для скидання буфера використовуйте:

  • fflush(stdout) або cout.flush() в C++;

  • System.out.flush() в Java;

  • flush(output) в Pascal;

  • stdout.flush() в Python;

дивіться документацію для інших мов.

Зверніть увагу, що якщо ваш запит недійсний (ліміт запитів перевищено або запит не задовольняє обмеженням), інтерактор виведе -1 та припинить роботу. Якщо ви зчитаєте -1, то негайно завершіть програму, щоб отримати вердикт Неправильна відповідь замість довільного вердикту.

Коли ви знайдете відповідь , виведіть 2 .

Приклади

Приклад

Вхідні дані
3 3 3 2 0

2

5

5

2

6

6

6

7

10
Вихідні дані

1 1 1

1 1 2

1 1 3

1 2 1

1 2 2

1 2 3

1 3 1

1 3 2

1 3 3

2 2

Оцінювання

Нехай n = \max(|a|, |b|, |c|), а також m = \max(a_i, b_j, c_t).

  1. ( балів): n \leq 10, Q = 150;

  2. ( бали): |b| = 0, |c| = 0, m \leq 2, Q = 150;

  3. ( балів): |c| = 0, m \leq 2, Q = 125;

  4. ( балів): m \leq 2, Q = 125;

  5. ( балів): |c| = 0, Q = 1000;

  6. ( балів): |c| = 0, Q = 125;

  7. ( балів): Q = 1000;

  8. ( бал): Q = 125;

  9. ( балів): Q = 65.