#include <bits/stdc++.h>
using namespace std;
const int inf = 1 << 30;
const int infLL = 1ll << 62;
const int mod1 = 1000000007;
const int mod2 = 1000000009;
int n, m;
char table[128][128];
bool used[128][128];
vector<pair<int, int> > graph[128][128];
vector<pair<int, int> > cities;
void dfs(int x, int y) {
  cities.push_back(make_pair(x, y));
  used[x][y] = true;
  for (int j = 0; j < (int)(graph[x][y].size()); j++) {
    if (!used[graph[x][y][j].first][graph[x][y][j].second]) {
      dfs(graph[x][y][j].first, graph[x][y][j].second);
    }
  }
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      cin >> table[i][j];
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      if (table[i][j] != '#') {
        continue;
      }
      for (int i2 = 0; i2 < n; i2++) {
        if (i2 == i) {
          continue;
        }
        if (table[i2][j] == '#') graph[i][j].push_back(make_pair(i2, j));
      }
      for (int j2 = 0; j2 < m; j2++) {
        if (j2 == j) {
          continue;
        }
        if (table[i][j2] == '#') {
          graph[i][j].push_back(make_pair(i, j2));
        }
      }
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      if (table[i][j] == '#')
        if (!used[i][j]) {
          bool ok = true;
          cities.clear();
          dfs(i, j);
          int X = -1, Y = -1;
          sort(cities.begin(), cities.end());
          vector<int> yy;
          bool stop_yy = false;
          vector<int> xx;
          map<int, int> mp_y;
          map<int, int> mp_x;
          for (int cities_i = 0; cities_i < (int)(cities.size()); cities_i++) {
            int i = cities_i;
            if (!mp_y[cities[i].second]) {
              mp_y[cities[i].second] = true;
              yy.push_back(cities[i].second);
            }
            if (!mp_x[cities[i].first]) {
              mp_x[cities[i].first] = true;
              xx.push_back(cities[i].first);
            }
          }
          for (int xx_i = 0; xx_i < (int)(xx.size()); xx_i++) {
            for (int yy_i = 0; yy_i < (int)(yy.size()); yy_i++) {
              if (table[xx[xx_i]][yy[yy_i]] != '#') {
                ok = false;
              }
            }
          }
          if (ok) {
            continue;
          }
          cout << "No" << endl;
          return 0;
        }
    }
  }
  cout << "Yes" << endl;
  return 0;
}
