Виключення бітового підвідрізка#13086

Виключення бітового підвідрізка

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

Вам задано бінарний масив довжини , де кожен елемент a_i \in \{0, 1\}.

Потрібно відповісти на незалежних запитів. У кожному запиті задано відрізок [l, r] (1 \le l \le r \le n).

Для будь-якої бінарної послідовності b = [b_1, b_2, \dots, b_k] довжини k \ge 1 її числове значення визначається шляхом неявного дописування біта '1' на початок послідовності. Формально значення обчислюється так:

val(b) = 2^k + \sum_{i=1}^{k} b_i \cdot 2^{k - i}

Наприклад:

Для кожного запиту [l, r] ваше завдання — знайти таку бінарну послідовність , яка НЕ зустрічається як неперервний підвідрізок у підмасиві a[l \dots r], щоб значення val(b) було строго мінімальним.

Виведіть це мінімальне значення за модулем .

Вхідні дані

Перший рядок містить одне ціле число (1 \le t \le 10^4) — кількість тестових випадків.

Перший рядок кожного тестового випадку містить два цілих числа та (1 \le n, q \le 2 \cdot 10^5) — довжину бінарного масиву та кількість запитів.

Другий рядок кожного тестового випадку містить цілих чисел a_1, a_2, \dots, a_n (a_i \in \{0, 1\}), розділених пробілами, — елементи масиву.

Наступні рядків описують запити. Кожен рядок містить два цілих числа та (1 \le l \le r \le n) — межі відрізка запиту.

Гарантується, що як сума , так і сума за всіма тестовими випадками не перевищують 2 \cdot 10^5.

Вихідні дані

Для кожного запиту виведіть в окремому рядку одне ціле число — мінімальне числове значення бінарної послідовності, яка не зустрічається як неперервний підвідрізок у a[l \dots r], за модулем .

Приклади

Приклад 1

Loading
Loading

Примітка

У першому тестовому випадку масив дорівнює a = [0, 1, 0].

  • У першому запиті наявні такі неперервні підвідрізки: [0], [1], [0, 1], [1, 0] та [0, 1, 0]. Їхні десяткові значення дорівнюють відповідно 2, 3, 5, 6 та . Найменше значення, яке не утворюється, — це , що відповідає послідовності .

  • У другому запиті підмасив дорівнює . Наявні підвідрізки: та . Найменше відсутнє значення знову дорівнює (послідовність ).

  • У третьому запиті підмасив дорівнює . Єдиний наявний підвідрізок — (значення ). Найменше відсутнє значення — (послідовність ).

У другому тестовому випадку масив дорівнює a = [1, 1, 1, 1]. Для запиту послідовність (значення ) не зустрічається ніколи, тому відповідь дорівнює .

У третьому тестовому випадку масив дорівнює a = [1, 0, 0, 1].

  • Для запиту підмасив дорівнює [1, 0, 0]. Він містить [0], [1], [0, 0], [1, 0] (значення 2, 3, 4, 6). Найменше відсутнє значення — (послідовність ).

  • Для запиту підмасив дорівнює [0, 0, 1]. Він містить [0], [1], [0, 0], [0, 1] (значення 2, 3, 4, 5). Найменше відсутнє значення — (послідовність ).

  • Для запиту підмасив містить значення 2, 3, 4, 5 та . Найменше відсутнє значення — (послідовність ).

Оцінювання

  • Підзадача 1 (100 балів): \sum n \le 2000 та \sum q \le 2000.

  • Підзадача 2 (150 балів): \sum n \le 40000 та \sum q \le 40000.

  • Підзадача 3 (250 балів): Без додаткових обмежень.