#include #include #include #include #include using namespace std; #define NMAX 100002 int best; vector G[NMAX]; char S[NMAX], W[NMAX]; int N, T, x, y; void dfs(int nod, string p, string pp) { W[nod] = 1; for (vector::iterator it = G[nod].begin(); it != G[nod].end(); ++it) if (!W[*it]) dfs(*it, p+S[(*it)-1], S[(*it)-1]+pp); // cout << nod << " " << p << " " << pp << "\n"; if (p.length() > best && p == pp) { best = p.length(); } } int main() { //freopen("test.in", "r", stdin); scanf("%d", &T); while (T--) { scanf("%d\n", &N); for (int i=1; i<=N; ++i) G[i].clear(); memset(W, 0, sizeof(W)); best = 0; fgets(S, NMAX, stdin); for (int i=1; i