import java.util.*

fun main(args: Array<String>) {
  val sc = Scanner(System.`in`)
  val h = sc.nextInt()
  val w = sc.nextInt()
  val s = (1..h).map { sc.next() }

  val array = Array(h) { Array(w) { '.' } }
  for (i in 0 until h) {
    val si = s.get(i)!!
    for (j in 0 until w) {
      array[i][j] = si[j]
    }
  }

  var ok = true
  for (i in 0 until h) {
    if (!ok) break
    for (j in 0 until w) {
      if (!ok) break
      if (array[i][j] == '.') {
        continue
      }

      var tmp = false

      if (i != 0) {
        val top = array[i-1][j]
        if (top == '#') {
          tmp = true
        }
      }
      if (i != h-1) {
        val bottom = array[i+1][j]
        if (bottom == '#') {
          tmp = true
        }
      }
      if (j != 0) {
        val left = array[i][j-1]
        if (left == '#') {
          tmp = true
        }
      }
      if (j != w-1) {
        val right = array[i][j+1]
        if (right == '#') {
          tmp = true
        }
      }
      if (!tmp) {
        ok = false
      }
    }
  }

  if (ok) {
    println("Yes")
    return
  }
  println("No")
}
