#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<cmath>
using namespace std;
#define Maxn 1000010 char s[Maxn];
int a[Maxn],nt[Maxn];
int l; void kmp()
{
int p=;
for(int i=;i<=l;i++)
{
while(s[i]!=s[p+]&&p) p=nt[p];
if(s[i]==s[p+]) p++;
nt[i]=p;
}
} int main()
{
int kase=;
while()
{
scanf("%d",&l);
if(l==) break;
scanf("%s",s+);
kmp();
printf("Test case #%d\n",++kase);
// for(int i=2;i<=l;i++) printf("%d ",nt[i]);printf("\n");
for(int i=;i<=l;i++)
{
if(nt[i]!=&&i%(i-nt[i])==) printf("%d %d\n",i,i/(i-nt[i]));
}printf("\n");
}
return ;
}
KMP
2016-11-17 20:12:31