fun String.invert() = map { ('#'.code + '.'.code - it.code).toChar() }.joinToString("") fun List.rotate() = List(this[0].length) { c -> map { r-> r[c] }.joinToString("")}.reversed() fun List.isGood() = (0 until this[0].length).all {c -> val f = indexOfFirst { it[c] == '.' } f == -1 || f == indexOfLast { it[c] == '#' } + 1 } fun main() { val (n, m) = readInts() var data = List(n) { readln() } repeat(4) { if (data.isGood()) { println("${data.size} ${data[0].length}") println(data.joinToString("\n") { it.invert() }) return } data = data.rotate() } println("impossible") } private fun readStrings() = readln().split(" ") private fun readInts() = readStrings().map { it.toInt() }