#include <stdio.h>
#include <stdlib.h>

#define UNUSED 32

typedef struct node{
  struct node* items[256];
  int nmb;
} node;

node *root=0; 
int cnt=0;

void addstring(unsigned char* s, node** p)
{
  if(s[0]!=0)
  {
    if(*p==0)
    {
      *p=(node*)calloc(sizeof(node),1);
      (**p).nmb=cnt;
      cnt++;
      addstring(&s[1], &((**p).items[s[0]]));
    }
    else
      addstring(&s[1], &((**p).items[s[0]]));
  }
  else
  {
    if(*p==0)
    {
      *p=(node*)calloc(sizeof(node),1);
      (**p).nmb=cnt;
      cnt++;
    }
  }
}

void output(node* p)
{
  int i;
  if(p!=0)
  for(i=0;i<256;i++)
  {
    if(p->items[i]!=0)
    {
      printf("%c %d %d\n",(unsigned char)i,p->nmb,p->items[i]->nmb);
      output(p->items[i]);
    }
  }
}

unsigned char s[2048];
int main(void)
{
  while(scanf("%s",(unsigned char*)s)==1)
    addstring((unsigned char*)s,&root);
  output(root);
  return 0;
}

