#include <bits/stdc++.h>
using namespace std;
int b[100005], c[100005];
int main() {
  int n, i, j, k, a[100005], l, r;
  char s[100005];
  scanf("%s", s);
  n = strlen(s);
  a[0] = 0;
  l = 0;
  r = 0;
  for (i = 1; i < n; i++) {
    if (i > r) {
      l = i, r = i;
      while (r < n && s[r] == s[r - l]) r++;
      r--;
      a[i] = r - l + 1;
    } else {
      k = i - l;
      if (a[k] < r - i + 1)
        a[i] = a[k];
      else {
        l = i;
        while (r < n && s[r] == s[r - l]) r++;
        r--;
        a[i] = r - l + 1;
      }
    }
  }
  a[0] = n;
  for (i = n - 1; i >= 0; i--) {
    if (a[i] == n - i) c[n - i] = 1;
  }
  for (i = 0; i < n; i++) b[a[i]]++;
  for (i = n - 1; i > 0; i--) b[i] += b[i + 1];
  j = 0;
  for (i = 1; i <= n; i++) {
    if (b[i] != b[i + 1] && c[i]) j++;
  }
  printf("%d\n", j);
  for (i = 1; i <= n; i++) {
    if (b[i] != b[i + 1] && c[i]) printf("%d %d\n", i, b[i]);
  }
  return 0;
}
