Олимпиадный тренинг

Задача . B. Serval и Инверсионная магия


У Serval есть бинарная строка \(s\), которая может состоять только из символов 0 и 1, длины \(n\). \(i\)-й символ \(s\) обозначается как \(s_i\), где \(1\leq i\leq n\).

Serval может применять следующую операцию, названную Инверсионной магией, к строке \(s\):

  • Выбрать отрезок \([l, r]\) (\(1\leq l\leq r\leq n\)). Для \(l\leq i\leq r\), заменить \(s_i\) на 1, если \(s_i\) является 0, и заменить \(s_i\) на 0, если \(s_i\) является 1.

Например, пусть \(s\) равна 010100 и выбран отрезок \([2,5]\). Строка \(s\) будет равна 001010 после применения Инверсионной магии.

Serval хочет сделать \(s\) палиндромом после применения Инверсионной магии ровно один раз. Помогите ему определить, возможно ли это.

Строка является палиндромом тогда и только тогда, когда она одинаково читается слева направо и справа налево. Например, 010010 является палиндромом, но 10111 не является.

Входные данные

Каждый тест состоит из нескольких наборов входных данных. Первая строка содержит количество наборов входных данных \(t\) (\(1\leq t\leq 10^4\)). Далее следует описание наборов входных данных.

Первая строка каждого набора входных данных содержит единственное целое число \(n\) (\(2\leq n\leq 10^5\)) — длина строки \(s\).

Вторая строка каждого набора входных данных содержит бинарную строку \(s\) длины \(n\). В строке \(s\) могут содержаться только символы 0 и 1.

Гарантируется, что сумма \(n\) по всем наборам входных данных не превосходит \(2\cdot 10^5\).

Выходные данные

Для каждого набора входых данных выведите Yes, если \(s\) может стать палиндромом, после применения Инверсионной магии один раз, и No, если нет.

Вы можете вывести Yes и No в любом регистре (например, строки yEs, yes, Yes и YES будут распознаны как положительный ответ).

Примечание

В первом наборе входных данных Serval может применить Инверсионную магию на отрезке \([1,4]\). Строка \(s\) станет равной 0110 после магии.

Во втором наборе входных данных Serval может применить Инверсионную магию на отрезке \([1,3]\). Строка \(s\) станет равной 01110 после магии.

В третьем наборе входных данных Serval не может сделать \(s\) палиндромом после применения Инверсионной магии ровно один раз.


Примеры
Входные данныеВыходные данные
1 3
4
1001
5
10010
7
0111011
Yes
Yes
No

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя