#include <bits/stdc++.h>
#define rep(i,n) for (int i=0; i<(int)(n); i++)
#define REP(i,m,n) for(ll i=(ll)(m);i<(ll)(n);i++)
using namespace std;
using ll = long long;
using P = pair<int, int>;

int main() {
  // Grid Repainting 2
  int h, w; cin >> h >> w;
  vector<string> s(h);
  vector<vector<bool>> visited(h, vector<bool>(w));
  rep(i,h) cin >> s.at(i);

  vector<int> di = {1, 0, -1, 0};
  vector<int> dj = {0, 1, 0, -1};

  rep(i,h) {
    rep(j,w) {
      if (visited.at(i).at(j)) continue;
      if (s.at(i).at(j) == '#') {
        int cnt = 0;
        rep(k,4) {
          int ni = i + di[k];
          int nj = j + dj[k];
          if (0 <= ni && ni < h && 0 <= nj && nj < w) {
            if (s.at(ni).at(nj) == '.') { cnt++;
            } else {
              visited.at(i).at(j) == true;
              visited.at(ni).at(nj) == true;
            }
          }
        }
        if (cnt == 4) {
          cout << "No" << endl;
          return 0;
        }
      }
    }
  }
  cout << "Yes" << endl;
  return 0;
}
#include<iostream>
using namespace std;

int main(){
	
	int n,m;
	int judge;
	int max=0;
	
	cin >> n >> m ;
	
	int a[n];
	int b[1000]={};
	
	for( int i=0 ; i<n ; i++ ) cin >> a[i] ;
	for( int i=0 ; i<m ; i++ ){
		cin >> judge ;
		for( int j=0 ; j<n ; j++ ){
			if( a[j] <= judge ){
				b[j]++;
				if( max < b[j]) max=b[j];
				break;
			}
		}
	}
	
	for( int i=0 ; i<n ; i++ ){
		if( b[i] == max ){
			cout << i+1 << endl ;
			break;
		}
	}
	
return 0;
}