import java.util.Scanner

object Main {
  def main(args: Array[String]): Unit = {
    //nextLineとnextを同時に使ったら死ぬ
    val sc = new Scanner(System.in)
    val h, w = sc.nextInt()
    val map = Array.fill(h)(sc.next()).map(_.toCharArray)

    def nextPoint(i: Int, j: Int): List[(Int, Int)] = {
      val a = List((i, j + 1), (i + 1, j), (i, j - 1), (i - 1, j))
      a.filter { case (a, b) => 0 <= a && a < h && 0 <= b && b < w }
    }

    var flag = true

    for {
      i <- 0 until h
      j <- 0 until w
    } {
      if (map(i)(j) == '#') {
        flag = flag && nextPoint(i, j).exists {
          case (a, b) => map(a)(b) == '#'
        }
      }
    }

    val ans = if (flag) "Yes" else "No"
    println(ans)
  }

  def debug(args: Any*): Unit = {
    Console.err.println(args.mkString(" "))
  }
}
