#include <bits/stdc++.h>
using namespace std;
string s;
int cnt[27], pos[1000010], sta[1000010], top, a[1000010];
int main() {
  int T;
  scanf("%d", &T);
  while (T--) {
    cin >> s;
    int n = s.size();
    s = " " + s;
    int maxx = 0, sum = 0;
    memset(cnt, 0, sizeof(cnt));
    for (int i = 1; i < n; i++) {
      if (s[i] == s[i + 1]) {
        cnt[s[i] - 'a' + 1]++;
        maxx = max(maxx, cnt[s[i] - 'a' + 1]);
        sum++;
      }
    }
    printf("%d\n", max((sum + 1) / 2, maxx) + 1);
    top = 0;
    int m = 0;
    for (int i = 1; i <= n; i++) {
      a[++m] = s[i] - 'a' + 1;
      if (m <= 1 || a[m] != a[m - 1]) continue;
      if (!top || a[sta[top]] == a[m]) {
        sta[++top] = m;
      } else {
        maxx = 1;
        for (int j = 1; j <= 26; j++) {
          if (cnt[j] > cnt[maxx]) maxx = j;
        }
        if (cnt[maxx] * 2 < sum || a[sta[top]] == maxx || a[m] == maxx) {
          cnt[a[sta[top]]]--;
          cnt[a[m]]--;
          sum -= 2;
          printf("%d %d\n", sta[top], m - 1);
          a[sta[top]] = a[m];
          m = sta[top];
          top--;
        } else {
          sta[++top] = m;
        }
      }
    }
    for (int i = m, lst = m; i >= 1; i--) {
      if (i == 1 || a[i - 1] == a[i]) {
        printf("%d %d\n", i, lst);
        lst = i - 1;
      }
    }
  }
}
