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

Задача . B. Notepad#


Задача

Темы: реализация *1000

Вы хотите набрать строку \(s\), состоящую из \(n\) строчных латинских букв, в вашем любимом текстовом редакторе Notepad#.

Notepad# поддерживает два типа операций:

  • дописать любую букву в конец строки;
  • скопировать непрерывную подстроку уже напечатанной строки и вставить эту подстроку в конец строки.

Можете ли вы набрать строку \(s\) строго меньше, чем за \(n\) операций?

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

В первой строке записано одно целое число \(t\) (\(1 \le t \le 10^4\)) — количество наборов входных данных.

В первой строке каждого набора входных данных записано одно целое число \(n\) (\(1 \le n \le 2 \cdot 10^5\)) — длина строки \(s\).

Во второй строке записана строка \(s\), состоящая из \(n\) строчных латинских букв.

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

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

На каждый набор входных данных выведите «YES», если вы можете набрать строку \(s\) строго меньше, чем за \(n\) операций. В противном случае выведите «NO».

Примечание

В первом наборе входных данных можно начать с набора «codef» (\(5\) операций), затем скопировать «o» (\(1\) операций) из уже набранной части, затем завершить набором «rces» (\(4\) операции). Это будет \(10\) операций, что не строго меньше \(n\). Существуют и другие способы набрать «codeforces». Однако, что бы вы ни делали, нельзя это сделать меньше, чем за \(n\) операций.

Во втором наборе входных данных можно набрать «labac» (\(5\) операций), затем скопировать «aba» (\(1\) операция), завершив строку за \(6\) операций.


Примеры
Входные данныеВыходные данные
1 6
10
codeforces
8
labacaba
5
uohhh
16
isthissuffixtree
1
x
4
momo
NO
YES
NO
YES
NO
YES

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

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