#include <bits/stdc++.h>
const int N = 1000005;
int T, n, s[N], cnum[N], a[N];
char S[N];
inline int Max(const int p, const int q) { return p > q ? p : q; }
int main() {
  scanf("%d", &T);
  while (T--) {
    scanf("%s", S + 1), n = strlen(S + 1);
    register int i, j, k, pos, top = 0, mx = 0, tot = 0;
    for (i = 0; i < 26; ++i) cnum[i] = 0;
    for (i = 1; i <= n; ++i) S[i] -= 'a';
    for (i = 2; i <= n; ++i)
      cnum[S[i]] += (S[i] == S[i - 1]), tot += (S[i] == S[i - 1]);
    for (i = 0; i < 26; ++i) mx = (cnum[i] > mx ? cnum[i] : mx);
    printf("%d\n", Max(mx, tot + 1 >> 1) + 1);
    for (i = top = 0, j = 1; j <= n; ++j) {
      a[++i] = S[j];
      if (i == 1 || a[i] != a[i - 1]) continue;
      if ((!top) || a[i] == a[s[top]]) {
        s[++top] = i;
        continue;
      }
      for (k = pos = 0; k < 26; ++k) pos = (cnum[k] > cnum[pos] ? k : pos);
      ((cnum[pos] << 1) < tot || pos == a[i] || pos == a[s[top]]) ? --tot,
          --cnum[a[i]], --tot, --cnum[a[s[top]]],
          printf("%d %d\n", s[top], i - 1), a[s[top]] = a[i],
                                            i = s[top--] : s[++top] = i;
    }
    for (j = i; i; --i)
      if (i == 1 || a[i] == a[i - 1]) printf("%d %d\n", i, j), j = i - 1;
  }
  return 0;
}
