#d2552. 循环子串

循环子串

循环子串

题目描述

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

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

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

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

输入格式

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

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

输出格式

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

样例输入

2
4
ccca
11
eeaafbddfaa

样例输出

YES
NO

数据范围

对于所有数据 有 1≤t≤1001 \leq t \leq 100, 1≤n≤1031 \leq n \leq 10^3, ∑n≤103\sum{n} \leq 10^3。

提示

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

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

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

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