#include <stdio.h>
#include <string.h>

struct Seq
{
  char *begin;
  unsigned length;
};

void findSubSeq(struct Seq *parent)
{
  int srcOffset;
  int seqFound = 0;
  struct Seq firstSeq;

  firstSeq.length = parent->length/2;
  while (firstSeq.length && !seqFound)
  {
    firstSeq.begin = parent->begin;
    while ((firstSeq.begin+firstSeq.length*2<=parent->begin+parent->length) && !seqFound)
    {
      struct Seq nextSeq;
      nextSeq.begin = firstSeq.begin + firstSeq.length;
      nextSeq.length = firstSeq.length;
      while ((nextSeq.begin+nextSeq.length <= parent->begin+parent->length) &&
	     !seqFound)
      {
        seqFound = (strncmp(firstSeq.begin, nextSeq.begin, firstSeq.length)) 
	           == 0;
	if (!seqFound)
	{
	  ++nextSeq.begin;
	}
      }
      if (seqFound)
      {
	printf("begin: %d, length: %d\n",firstSeq.begin - parent->begin,firstSeq.length);
	findSubSeq(&firstSeq);
      }
      else
      {
	++firstSeq.begin;
      }
    }
    if (!seqFound)
    {
      --firstSeq.length;
    }
    ++srcOffset;
  }
}

int main(void)
{
  struct Seq root;
  char buffer[256];
  
  fgets(buffer, sizeof(buffer), stdin);
  root.begin = buffer;
  root.length = strlen(buffer);
  findSubSeq(&root);
}

