#include <bits/stdc++.h>
using namespace std;
template <typename T>
struct BIT {
  int n;
  vector<T> dat;
  BIT(int n = 0) { initialize(n); }
  void initialize(int nin) {
    n = nin;
    dat.resize(n, 0);
  }
  T sum(int i) {
    T s = 0;
    while (i >= 0) {
      s += dat[i];
      i = (i & (i + 1)) - 1;
    }
    return s;
  }
  T sum_between(int i, int j) { return sum(j) - sum(i - 1); }
  void plus(int i, T x) {
    while (i < n) {
      dat[i] += x;
      i |= i + 1;
    }
  }
};
void solve() {
  string S;
  cin >> S;
  int SN = S.size();
  vector<pair<int, int>> D;
  D.emplace_back('!', 0);
  for (int i = 0; i < SN - 1; i++)
    if (S[i] == S[i + 1]) {
      D.emplace_back(S[i] - 'a', i + 1);
    }
  D.emplace_back('!', SN);
  int N = D.size() - 1;
  BIT<int> bit(N);
  for (int i = 0; i < N; i++) bit.plus(i, D[i + 1].second - D[i].second);
  set<int> st[26];
  for (int i = 1; i < N; i++) st[D[i].first].insert(i);
  vector<int> num(26);
  for (int k = 0; k < 26; k++) num[k] = st[k].size();
  vector<pair<int, int>> ans;
  while (true) {
    int M = max_element(num.begin(), num.end()) - num.begin();
    int sum = accumulate(num.begin(), num.end(), 0);
    if (num[M] == sum) break;
    int fst = *st[M].begin();
    int l = -1, r = fst;
    for (int k = 0; k < 26; k++)
      if (k != M) {
        auto it = st[k].lower_bound(fst);
        if (it != st[k].begin()) l = max(l, *prev(it));
      }
    if (l == -1) {
      r = N;
      for (int k = 0; k < 26; k++)
        if (k != M && st[k].size()) {
          r = min(r, *st[k].begin());
        }
      l = *prev(st[M].lower_bound(r));
    }
    int Lnum = bit.sum(l - 1);
    int Rnum = bit.sum(r - 1);
    ans.emplace_back(Lnum + 1, Rnum);
    bit.plus(l, -(Rnum - Lnum));
    num[D[l].first]--;
    num[D[r].first]--;
    st[D[l].first].erase(l);
    st[D[r].first].erase(r);
  }
  int M = max_element(num.begin(), num.end()) - num.begin();
  st[M].insert(N);
  for (int i : st[M]) {
    int res = bit.sum(i - 1);
    ans.emplace_back(1, res);
    bit.plus(0, -res);
  }
  printf("%d\n", int(ans.size()));
  for (auto& p : ans) printf("%d %d\n", p.first, p.second);
}
int main() {
  int T;
  cin >> T;
  while (T--) solve();
  return 0;
}
