/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
Scanner in
= new Scanner
(System.
in); int t
= Integer.
parseInt(in.
nextLine()); int i=1;
while(i <= t){
int n
= Integer.
parseInt(in.
nextLine()); System.
out.
println("Test Case #"+i
); periodString(input,n);
i++;
}
}
private static void periodString
(String in,
int len
){ int[] lps = prefixTable(in);
int i=0;
int n;
int k;
for(i=0;i<len;i++){
if(lps[i] != 0) {
n = i+1; //length of string ..upto i.
int t = n-lps[i];
if(t > 0 && n % t == 0){
k = n/t;
}
}
}
}
private static int[] prefixTable
(String pattern
) { int n = pattern.length();
int[] lps = new int[n];
int len = 0; // length of common prefix n suffix
lps[0] = 0;
int i = 1;
while (i < n) {
if (pattern.charAt(i) == pattern.charAt(len)) {
len++;
lps[i] = len;
i++;
} else {
if (len > 0) {
len = lps[len - 1];
} else {
lps[i] = 0; // len = 0
i++;
}
}
}
return lps;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVNjYW5uZXIgaW4gPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwoJCWludCB0ID0gSW50ZWdlci5wYXJzZUludChpbi5uZXh0TGluZSgpKTsKCQlpbnQgaT0xOwoJCXdoaWxlKGkgPD0gdCl7CgkJCWludCBuID0gSW50ZWdlci5wYXJzZUludChpbi5uZXh0TGluZSgpKTsKCQkJU3RyaW5nIGlucHV0ID0gaW4ubmV4dExpbmUoKTsKCQkJU3lzdGVtLm91dC5wcmludGxuKCJUZXN0IENhc2UgIyIraSk7CgkJCXBlcmlvZFN0cmluZyhpbnB1dCxuKTsKCQkJaSsrOwoJCQlTeXN0ZW0ub3V0LnByaW50bG4oKTsKCQl9Cgl9CgkKCXByaXZhdGUgc3RhdGljIHZvaWQgcGVyaW9kU3RyaW5nKFN0cmluZyBpbixpbnQgbGVuKXsKCQlpbnRbXSBscHMgPSBwcmVmaXhUYWJsZShpbik7CgkJaW50IGk9MDsKCQlpbnQgbjsKCQlpbnQgazsKCQlmb3IoaT0wO2k8bGVuO2krKyl7CgkJCWlmKGxwc1tpXSAhPSAwKSB7CgkJCQluID0gaSsxOyAvL2xlbmd0aCBvZiBzdHJpbmcgLi51cHRvIGkuCgkJCQlpbnQgdCA9IG4tbHBzW2ldOwoJCQkJaWYodCA+IDAgJiYgbiAlIHQgPT0gMCl7CgkJCQkJayA9IG4vdDsKCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4obisiICIgK2spOwoJCQkJfQoJCQl9CgkJfQoJfQoJCgkJcHJpdmF0ZSBzdGF0aWMgaW50W10gcHJlZml4VGFibGUoU3RyaW5nIHBhdHRlcm4pIHsKCQlpbnQgbiA9IHBhdHRlcm4ubGVuZ3RoKCk7CgkJaW50W10gbHBzID0gbmV3IGludFtuXTsKCQlpbnQgbGVuID0gMDsgLy8gbGVuZ3RoIG9mIGNvbW1vbiBwcmVmaXggbiBzdWZmaXgKCQlscHNbMF0gPSAwOwoJCWludCBpID0gMTsKCQl3aGlsZSAoaSA8IG4pIHsKCQkJaWYgKHBhdHRlcm4uY2hhckF0KGkpID09IHBhdHRlcm4uY2hhckF0KGxlbikpIHsKCQkJCWxlbisrOwoJCQkJbHBzW2ldID0gbGVuOwoJCQkJaSsrOwoJCQl9IGVsc2UgewoJCQkJaWYgKGxlbiA+IDApIHsKCQkJCQlsZW4gPSBscHNbbGVuIC0gMV07CgkJCQl9IGVsc2UgewoJCQkJCWxwc1tpXSA9IDA7IC8vIGxlbiA9IDAKCQkJCQlpKys7CgkJCQl9CgkJCX0KCQl9CgkJcmV0dXJuIGxwczsKCX0KfQ==