Це інтерактивна задача.
Рядок вважається паліндромом, якщо він читається однаково з обох сторін. Формально, рядок довжини вважається паліндромом, якщо s_i = s_{n-i+1} для 1 \le i \le n. Наприклад, рядки «gg», «ara», «abacaba», «rotator» є паліндромами, а рядки «array», «palindrome», «uoi» — ні.
Назвемо рядок майже паліндромом, якщо в ньому можна переставити символи так, щоб він став паліндромом. Наприклад, рядки «n», «ara», «arr», «array» є майже паліндромами, а рядки «palindrome», «uoi», «random» — ні.
Підрядком рядка вважається рядок, який може бути утворений за допомогою видалення деякої (можливо нульової) кількості елементів з його початку та кінця.
Визначимо як максимальну довжину серед довжин підрядків , які не є майже паліндромами, або , якщо таких підрядків немає.
Задано рядок довжини , що складається з маленьких літер латинського алфавіту. Також задано запитів виду l_i, r_i. Для кожного запиту знайдіть значення f(s[l_i..r_i]), де s[l_i..r_i] позначає підрядок, що складається з символів s_{l_i}, s_{l_{i} + 1}, \ldots, s_{r_i}.
У першому рядку задано одне ціле число (1 \le n \le 2\cdot 10^5) — довжина рядка.
У другому рядку задано рядок , що складається з маленьких літер латинського алфавіту.
У третьому рядку задано одне ціле число (1\le q \le 2\cdot 10^5) — кількість запитів.
У четвертому рядку задано два цілі числа l_1, r_1 (1 \leq l_1 \leq r_1 \leq n) — параметри першого запиту.
Параметри наступних запитів ви отримаєте від програми журі (див. розділ «Протокол взаємодії»).
Програма журі виводитиме у окремих рядках по два цілі числа l_i, r_i (1\le l_i\le r_i\le n) — параметри чергового запиту, починаючи з другого.
Програма журі не виведе параметри чергового запиту, доки не прочитає відповідь вашої програми на попередній запит.
Подбайте про виклик методу flush після виводу кожного рядка. Для цього можна використовувати:
fflush(stdout), cout << endl або cout.flush() в C++;
System.out.flush() в Java;
flush(output) в Pascal;
sys.stdout.flush() в Python;
дивіться документації для інших мов програмування.
Для -го запиту в окремому рядку виведіть одне ціле число — шукане значення f(s[l_i..r_i]).
Приклад
8
aabaaaba
3
3 7
1 8
4 44
6
0У першому прикладі необхідно знайти відповіді на три запити:
s[3..7] =\;«baaab», підрядком якого є рядок «aaab» довжини 4, який не є майже паліндромом;
s[1..8] =\;«aabaaaba», підрядком якого є рядок «aabaaa» довжини 6, який не є майже паліндромом;
s[4..4] =\;«a», усі підрядки якого є майже паліндромами.
( балів): q=1, l_1=1, r_1=n, — парне, має вигляд «aabbaabbaa...»;
( балів): q=1, l_1=1, r_1=n, n \le 200;
( балів): q=1, l_1=1, r_1=n, n \le 5000;
( балів): q=1, l_1=1, r_1=n;
( балів): містить лише літери a та b;
( балів): s_{l_i} \neq s_{r_i} для 1 \le i \le q;
( балів): s_i \neq s_{i+1} для 1 \le i < n;
( балів): містить лише літери a, b, c, d, e та f;
( балів): (r_i-l_i+1) — непарне для 1\le i\le q;
( балів): без додаткових обмежень.