← Home
package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
)

func main() {
	in := bufio.NewReader(os.Stdin)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	pairs := [][2]int{{1, 12}, {2, 6}, {3, 4}, {4, 3}, {6, 2}, {12, 1}}

	var t int
	fmt.Fscan(in, &t)

	for ; t > 0; t-- {
		var s string
		fmt.Fscan(in, &s)

		ans := make([]string, 0)
		for _, p := range pairs {
			a, b := p[0], p[1]
			ok := false
			for c := 0; c < b; c++ {
				allX := true
				for r := 0; r < a; r++ {
					if s[r*b+c] != 'X' {
						allX = false
						break
					}
				}
				if allX {
					ok = true
					break
				}
			}
			if ok {
				ans = append(ans, strconv.Itoa(a)+"x"+strconv.Itoa(b))
			}
		}

		fmt.Fprint(out, len(ans))
		for _, v := range ans {
			fmt.Fprint(out, " ", v)
		}
		fmt.Fprintln(out)
	}
}