print #include
#include
#include
using namespace std;
const int maxn=1e6+9;
int next[maxn],ans[maxn];
char a[maxn];
int main()
{
while(scanf("%s",a+1)!=EOF)
{
next[1]=0;
int n=strlen(&a[1]);
for(int i=2;i<=n;i++)
{
int t=i-1;
while(t&&a[i]!=a[next[t]+1])
t=next[t];
next[i]=next[t]+(a[i]==a[next[t]+1]);
}
int lon=1;
ans[1]=n;
int t=n;
while(next[t]!=0)
{
ans[++lon]=next[t];
t=next[t];
}
printf("%d",ans[lon]);
for(int i=lon-1;i>=1;i--)
printf(" %d",ans[i]);
printf("\n");
memset(a,0,sizeof(a));
}
return 0;
}
#include
#include
#include
using namespace std;
const int maxn=1e6+9;
int next[maxn],ans[maxn];
char a[maxn];
int main()
{
while(scanf("%s",a+1)!=EOF)
{
next[1]=0;
int n=strlen(&a[1]);
for(int i=2;i<=n;i++)
{
int t=i-1;
while(t&&a[i]!=a[next[t]+1])
t=next[t];
next[i]=next[t]+(a[i]==a[next[t]+1]);
}
int lon=1;
ans[1]=n;
int t=n;
while(next[t]!=0)
{
ans[++lon]=next[t];
t=next[t];
}
printf("%d",ans[lon]);
for(int i=lon-1;i>=1;i--)
printf(" %d",ans[i]);
printf("\n");
memset(a,0,sizeof(a));
}
return 0;
}