#include <bits/stdc++.h>
using namespace std;
#define S 26
#define SZ 2000999
char str[SZ];
int ml[SZ],fail[SZ],lst,cl,ch[SZ][S],an,rot;
void ins(char s)
{
int x=++an,len=++cl,p=lst;
lst=x; ml[x]=len;
for(;p&&!ch[p][s];p=fail[p]) ch[p][s]=x;
if(!p) {fail[x]=rot; return;}
if(ml[ch[p][s]]==ml[p]+1) fail[x]=ch[p][s];
else
{
int chh=ch[p][s],cm=++an;
ml[cm]=ml[p]+1; fail[cm]=fail[chh];
for(int i=0;i<S;i++) ch[cm][i]=ch[chh][i];
fail[chh]=fail[x]=cm;
for(;ch[p][s]==chh;p=fail[p]) ch[p][s]=cm;
}
}
int main()
{
lst=rot=an=1; cl=0; scanf("%s",str);
for(int i=0;str[i];++i) ins(str[i]-'a');
fprintf(stderr,"%d nodes\n",an);
for(int i=1;i<=an;++i)
{
printf("%d",fail[i]);
for(int j=0;j<S;++j) printf(" %d",ch[i][j]);
puts("");
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgUyAyNgojZGVmaW5lIFNaIDIwMDA5OTkKY2hhciBzdHJbU1pdOwppbnQgbWxbU1pdLGZhaWxbU1pdLGxzdCxjbCxjaFtTWl1bU10sYW4scm90Owp2b2lkIGlucyhjaGFyIHMpCnsKICAgIGludCB4PSsrYW4sbGVuPSsrY2wscD1sc3Q7CiAgICBsc3Q9eDsgbWxbeF09bGVuOwogICAgZm9yKDtwJiYhY2hbcF1bc107cD1mYWlsW3BdKSBjaFtwXVtzXT14OwogICAgaWYoIXApIHtmYWlsW3hdPXJvdDsgcmV0dXJuO30KICAgIGlmKG1sW2NoW3BdW3NdXT09bWxbcF0rMSkgZmFpbFt4XT1jaFtwXVtzXTsKICAgIGVsc2UKICAgIHsKICAgICAgICBpbnQgY2hoPWNoW3BdW3NdLGNtPSsrYW47CiAgICAgICAgbWxbY21dPW1sW3BdKzE7IGZhaWxbY21dPWZhaWxbY2hoXTsKICAgICAgICBmb3IoaW50IGk9MDtpPFM7aSsrKSBjaFtjbV1baV09Y2hbY2hoXVtpXTsKICAgICAgICBmYWlsW2NoaF09ZmFpbFt4XT1jbTsKICAgICAgICBmb3IoO2NoW3BdW3NdPT1jaGg7cD1mYWlsW3BdKSBjaFtwXVtzXT1jbTsKICAgIH0KfQppbnQgbWFpbigpCnsKCWxzdD1yb3Q9YW49MTsgY2w9MDsgc2NhbmYoIiVzIixzdHIpOwoJZm9yKGludCBpPTA7c3RyW2ldOysraSkgaW5zKHN0cltpXS0nYScpOwoJZnByaW50ZihzdGRlcnIsIiVkIG5vZGVzXG4iLGFuKTsKCWZvcihpbnQgaT0xO2k8PWFuOysraSkKCXsKCQlwcmludGYoIiVkIixmYWlsW2ldKTsKCQlmb3IoaW50IGo9MDtqPFM7KytqKSBwcmludGYoIiAlZCIsY2hbaV1bal0pOwoJCXB1dHMoIiIpOwoJfQp9Cg==