11476. Турнір на виліт
\(2^N\) гравців, позначені від 1 до \(2^N\), змагатимуться один з одним у турнірі з програмування на виліт. Рейтинг гравця \(i\) – \(A_i\). Будь-які два гравці мають різні рейтинги, і турнір між двома гравцями завжди призводить до перемоги гравця з вищим рейтингом.
Турнір виглядає як ідеальне бінарне дерево.
Формально турнір проходитиме так:
Для кожного цілого числа \(i = 1, 2, 3, \dots, N\) в такому порядку відбувається наступне.
- Для кожного цілого числа \(j\) (\(1 \le j \le 2^{N - i}\)), серед гравців, які ніколи не програвали, гравець (\(2j - 1\))-й та гравець з \(2j\)-й грають один проти одного.
Знайдіть індекс гравця, який займе друге місце, тобто програє у фінальному матчі.
Формат вхідних даних
Перший рядок містить ціле число \(N\) (\(1 \le N \le 16\))
Наступний рядок містить \(2^N\) цілих чисел \(A_i\) (\(1 \le A_i \le 10^9\), \(A_i\) попарно різні)
Числа у рядках розділяються пропуском.
Формат вихідних даних
У вихідний потік виведіть шуканий індекс.
Примітка
До прикладу 1:
Спочатку відбудуться два турніри між гравцями 1 і 2 і між гравцями 3 і 4. За рейтингом переможуть гравці 2 і 4.
Потім відбудеться турнір між гравцями 2 і 4, і турнір завершиться тим, що гравець 4 стане чемпіоном.
Гравець, який програє у фінальному матчі, — це гравець 2.
Приклад вхідних даних
2
1 4 2 5
Приклад вихідних даних
2
Приклад вхідних даних
2
3 1 5 4
Приклад вихідних даних
1
Приклад вхідних даних
4
6 13 12 5 3 7 10 11 16 9 8 15 2 1 14 4
Приклад вихідних даних
2
Коментарі