fun c96(args: Array<String>) {
    val board = args.drop(1).map { it.toCharArray() }

    var ans = true
    board.forEachIndexed { y, chars ->
        chars.forEachIndexed { x, c ->
            if (board[y][x] == '#') {
                var alone = true
                (-1..1).forEach { dy ->
                    (-1..1).forEach { dx ->
                        val ny = y + dy
                        val nx = x + dx
                        if ((ny >= 0 && ny < board.size && nx >= 0 && nx < board.first().size)
                                && !(dy == 0 && dx == 0)
                                && (dy == 0 || dx == 0)
                                && board[ny][nx] == '#') {
                            alone = false
                        }
                    }
                }
                if (alone) {
                    ans = false
                }
            }
        }
    }

    println(if (ans) "Yes" else "No")
}


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

fun readLineList(): Array<String> {
    val lineList = mutableListOf<String>()
    while (true) {
        val line = readLine()
        if (line.isNullOrBlank()) {
            break
        } else {
            lineList.add(line!!)
        }
    }
    return lineList.toTypedArray()
}