tailrec fun gcd(a: Int, b: Int) : Int = if (b == 0) a else gcd(b, a % b) fun conv(c: Char) = when (c) { 'w' -> 1 'r' -> 2 'g' -> 4 'b' -> 8 else -> error("") } fun main() { val (h, w) = readInts() val s = List(h) { readln() } val g = gcd(h, w) for (i in 0 until w) { for (j in i + 1 until w) { // (r1 - r2) + A * h == (j - i) + B * w // (r1 - r2) == (j - i) mod g val have = Array(g) { BooleanArray(15) } for (r in 0 until h) { have[r % g][conv(s[r][i]) or conv(s[r][j])] = true } for (r in 0 until h) { val need = 15 - (conv(s[r][i]) or conv(s[r][j])) if (have[(r + j - i) % g][need]) { println("possible") return } } } } println("impossible") } private fun readStrings() = readln().split(" ") private fun readInts() = readStrings().map { it.toInt() }