import std.algorithm;
import std.range;
import std.stdio;
import std.math;
import std.array;
import std.string;
import std.conv;

/// 数列の読み込み
auto readNums() {
	return readln().chomp.split.map!(to!int).array;
}

/// 数の読み込み
auto readNum() {
	return readNums.front;
}

/// 指定行数読み込み
auto readRows(size_t rows) {
	return generate(() => readln().chomp).take(rows).array;
}

void main() {
	const nums = readNums();
	immutable size_t rows = nums[0];
	immutable size_t cols = nums[1];
	const grid = readRows(rows);
    foreach(y, row; grid) {
        foreach(x, c; row) {
            if(c != '#') {
                continue;
            }
            if(x > 0 && grid[y][x - 1] == '#') {
                continue;
            }
            if(x < (cols - 1) && grid[y][x + 1] == '#') {
                continue;
            }
            if(y > 0 && grid[y - 1][x] == '#') {
                continue;
            }
            if(y < (rows - 1) && grid[y + 1][x] == '#') {
                continue;
            }

            writefln("No");
            return;
        }
    }

    writefln("Yes");
}

