fun main(args: Array<String>) {
    agc007a()
}

private var roots: List<BooleanArray>? = null
private var h: Int? = null
private var w: Int? = null


fun agc007a() {
    readLine()!!.split(" ").map { it.toInt() }.let {
        h = it[0]
        w = it[1]
    }
    roots = (1..h!!).map { readLine()!!.map { it == '#' }.toBooleanArray() }

    dfs(0, 0)
    val answer = roots!!.all { booleans -> booleans.all { !it } }
        .let { if (it) "Possible" else "Impossible" }

    println(answer)
}

private fun dfs(x: Int, y: Int): Boolean {
    if (x >= w!! || y >= h!!) return false

    return if (roots!![y][x]) {
        return if (x == w!! - 1 && y == h!! - 1) {
            roots!![y][x] = false
            true
        } else {
            if (dfs(x + 1, y) || dfs(x, y + 1)) {
                roots!![y][x] = false
                true
            } else false
        }
    } else false
}
