package main

import (
	"os"
	"fmt"
	"bufio"
	"strings"
	"strconv"
)

func main() {
	var sc = bufio.NewScanner(os.Stdin)
	sc.Scan()
	HW   := strings.Split(sc.Text(), " ")
	H, _ := strconv.Atoi(HW[0])
	W, _ := strconv.Atoi(HW[1])
	var grid = make([][]string, H)
	for i := 0; i < H; i++ {
		sc.Scan()
		grid[i] = make([]string, W)
		grid[i] = strings.Split(sc.Text(), "")
	}
	
	canDraw := true
	for i := 0; i < len(grid); i++ {
		for j := 0; j < len(grid[i]); j++ {
			fmt.Println(grid[i][j])
			if grid[i][j] == "#" {
				// grid[i - 1][j] 上
				if i != 0 && grid[i - 1][j] == "#" {
					continue
				}

				// grid[i + 1][j] 下
				if i != len(grid) - 1 && grid[i + 1][j] == "#" {
					continue
				}

				// grid[i][j - 1] 左
				if j != 0 && grid[i][j - 1] == "#" {
					continue
				}

				// grid[i][j + 1] 右
				if j != len(grid[i]) - 1 && grid[i][j + 1] == "#" {
					continue
				}

				canDraw = false
				break
			}
		}
		if canDraw == false {
			break
		}
	}

	if canDraw == true {
		fmt.Println("Yes")
	} else {
		fmt.Println("No")
	}

}