#include <bits/stdc++.h>
using namespace std;
int t;
char str[13];
int main() {
  scanf("%d", &t);
  getchar();
  while (t--) {
    scanf("%s", str);
    bool flag1 = false, flag2 = false;
    for (int i = 0; i < 12; i++) {
      if (str[i] == 'O') flag2 = true;
      if (str[i] == 'X') flag1 = true;
    }
    bool exist[10];
    int num = 0;
    memset(exist, 0, sizeof(exist));
    if (flag1 == true) {
      exist[1] = true;
      num++;
    }
    if ((str[0] == str[6] && str[0] == 'X') ||
        (str[1] == str[7] && str[1] == 'X') ||
        (str[2] == str[8] && str[2] == 'X') ||
        (str[3] == str[9] && str[3] == 'X') ||
        (str[4] == str[10] && str[4] == 'X') ||
        (str[5] == str[11] && str[5] == 'X')) {
      exist[2] = 1;
      num++;
    }
    for (int i = 0; i < 4; i++) {
      if (str[i] == str[i + 4] && str[i] == str[i + 8] && str[i] == 'X') {
        exist[3] = 1;
        num++;
        break;
      }
    }
    for (int i = 0; i < 3; i++) {
      if (str[i] == str[i + 3] && str[i] == str[i + 6] &&
          str[i] == str[i + 9] && str[i] == 'X') {
        exist[4] = 1;
        num++;
        break;
      }
    }
    for (int i = 0; i < 2; i++) {
      if (str[i] == str[i + 2] && str[i] == str[i + 4] &&
          str[i] == str[i + 6] && str[i] == str[i + 8] &&
          str[i] == str[i + 10] && str[i] == 'X') {
        exist[5] = 1;
        num++;
        break;
      }
    }
    if (flag1 == true && flag2 == false) {
      exist[6] = 1;
      num++;
    }
    printf("%d", num);
    for (int i = 1; i <= 6; i++) {
      if (exist[i]) switch (i) {
          case 1:
            printf(" 1x12");
            break;
          case 2:
            printf(" 2x6");
            break;
          case 3:
            printf(" 3x4");
            break;
          case 4:
            printf(" 4x3");
            break;
          case 5:
            printf(" 6x2");
            break;
          case 6:
            printf(" 12x1");
            break;
        }
    }
    printf("\n");
  }
  return 0;
}
