fun main(args : Array<String>) {
    val (h, w) = readLine()!!.split(" ").map { it.toInt() }
    val aa = Array(h) { readLine()!! }

    var hPos = 0
    var wPos = 0

    for (hIdx in 0 until h) {
        inner@for (wIdx in 0 until w) {
            if (aa[hIdx][wIdx] != '#') continue@inner

            //println("h:$hIdx w:$wIdx hPos:$hPos wPos:$wPos")

            if (hIdx < hPos || wPos < wIdx) {
                println("Impossible")
                return
            }

            // start
            if (hIdx == 0 && wIdx == 0) {
                if (aa[hIdx+1][wIdx] == '#' && aa[hIdx][wIdx+1] == '#') {
                    println("Impossible")
                    return
                }
                if (aa[hIdx+1][wIdx] == '#') {
                    hPos++
                }
                if (aa[hIdx][wIdx+1] == '#') {
                    wPos++
                }
                continue@inner
            }

            // end
            if (hIdx == h-1 && wIdx == w-1) {
                if (aa[hIdx][wIdx-1] == '#' && aa[hIdx-1][wIdx] == '#') {
                    println("Impossible")
                    return
                }
                continue@inner
            }

            var cnt = 0

            // top
            if (hIdx != 0 && aa[hIdx-1][wIdx] == '#') {
                cnt++
            }
            // bottom
            if (hIdx != h-1 && aa[hIdx+1][wIdx] == '#') {
                hPos++
                cnt++
            }
            // left
            if (wIdx != 0 && aa[hIdx][wIdx-1] == '#') {
                cnt++
            }
            // right
            if (wIdx != w-1 && aa[hIdx][wIdx+1] == '#') {
                wPos++
                cnt++
            }

            //println("h:$hIdx w:$wIdx cnt:$cnt")

            if (cnt != 2) {
                println("Impossible")
                return
            }
        }
    }

    println("Possible")
}