fun main(arr: Array<String>) {
    println(if(getAns()) "Possible" else "Impossible")
}

fun getAns():Boolean {
    val (h,w) = readLine()!!.split(" ").map { it.toInt() }
    val map = (1..h).map { readLine()!!.toMutableList() }
    if(map[0][0] != '#' || map.last().last() != '#') {
        return false
    }
    map[0][0] = '*'
    var x = 0
    var y = 0
    while (x != map.last().lastIndex || y != map.lastIndex) {
        var nextX = x
        var nextY = y
        var cnt = 0
        map[y][x] = '*'
        for(i in (y-1..y+1)) {
            if(i < 0 || i >= h) {
                continue
            }
            for(j in (x-1..x+1)) {
                if(j < 0 || j >= w) {
                    continue
                }
                if(i != y && j != x) {
                    continue
                }
                if(map[i][j] != '#') {
                    continue
                }
                nextY = i
                nextX = j
                cnt++
            }
        }
        if(cnt != 1) {
            return false
        }
        if(nextY < y) {
            return false
        }
        if(nextX < x) {
            return false
        }
        y = nextY
        x = nextX
    }
    if(map.sumBy { it.count { it=='#' } } > 1) {
        return false
    }
    return true
}