#include <bits/stdc++.h>
const int MAXINT = 2147483640;
const long long MAXLL = 9223372036854775800LL;
const long long MAXN = 1123456;
using namespace std;
char c[100][100];
bool used[MAXN];
vector<int> take;
bool f[MAXN];
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n, m;
  cin >> n >> m;
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= m; ++j) cin >> c[i][j];
  }
  for (int i = 1; i <= n; ++i)
    if (!f[i]) {
      f[i] = 1;
      for (int j = 1; j <= m; ++j) used[j] = 0;
      for (int j = 1; j <= m; ++j)
        if (c[i][j] == '#') used[j] = 1;
      for (int k = i + 1; k <= n; ++k) {
        bool flag = 0;
        for (int j = 1; j <= m; ++j)
          if (c[k][j] == '#' && used[j]) {
            flag = 1;
            break;
          }
        if (flag) {
          f[k] = 1;
          for (int j = 1; j <= m; ++j) {
            if (c[k][j] == '#' && !used[j]) {
              cout << "No" << '\n';
              return 0;
            }
            if (c[k][j] == '.' && used[j]) {
              cout << "No" << '\n';
              return 0;
            }
          }
        }
      }
    }
  cout << "Yes" << '\n';
  return 0;
}
