循环子串

题目描述

一个字符串SS是另一字符串TT的循环子串当且仅当存在kk, TT所有字符循环右移kk位后得到的新串TT',满足SSTT'的子串。

例如: abccefab的循环子串。 (cefab循环右移22位得到abcef, abcabcef的子串)

一个串PP是完全循环串当且仅当对于它的任一子串HH, 都有HreverseH_{reverse}PP的循环子串 (HreverseH_{reverse}HH的倒转, 如abc reverse后 为cba)。

给一个长度为nn的字符串, 判断它是不是完全循环串。

输入格式

第一行一个正整数tt, 表示测试数据组数。

对于每一组数据,第一行一个正整数nn, 表示字符串的长度。接下来一行一个长度为nn的字符串. 仅包含小写字母。

输出格式

对于每组测试数据,如果这个串是完全循环串, 输出YES,否则输出NO。每组测试数据之间输出换行。

数据范围

对于所有数据 有 1t1001 \leq t \leq 100, 1n1031 \leq n \leq 10^3, n103\sum{n} \leq 10^3

样例输入

2
4
ccca
11
eeaafbddfaa

样例输出

YES
NO

提示 选中可以查看

1. 本道题目只需要语法知识就可以解决。

2. 任意子串是什么意思呢?

3. 如果一个子串包含另一个子串,那么我们是不是只需要求出大子串的合法情况,就可以推出小子串的合法情况。

4. 从大的子串向小的子串考虑 最大的子串是什么呢?