9 5
.....
#....
..#..
.....
.#..#
...#.
.#...
....#
.....
 4 10
..#......#
.....##...
#.........
.#.......#
 50 2
..
..
#.
..
.#
..
..
..
.#
..
..
.#
##
..
..
..
.#
..
..
.#
..
..
.#
..
..
.#
..
.#
..
.#
..
.#
.#
.#
..
..
..
.#
.#
.#
..
..
.#
.#
..
..
..
..
..
..
 2 50
...#.##.###...#.#..##....##..........#.#..#.#####.
...#.##.###...#.#..##....##..........#.#..#.#####.
 1 1
#
 3 3
.##
#.#
##.
 50 8
.....#..
........
........
.....#..
.....#..
........
........
........
........
...#....
...#....
........
...#....
#.#.#...
...#....
...#....
........
...#....
...#....
...#....
........
#.#.#...
.....#..
........
#.#.#...
#.#.#...
#.#.#...
...#....
........
........
........
#.#.#...
........
.....#..
........
........
........
........
........
........
.....#..
........
........
........
.....#..
#.#.#...
...#....
........
........
........
 1 1
.
 25 16
.............#..
.............#..
.......#...#....
............#...
.....#..........
.....#..........
#...............
................
........#.......
................
................
.#..............
#...............
.....#..........
.#..............
............#...
................
................
................
........#.......
..#.............
..........#.....
.......#...#....
.............#..
..........#.....
 25 16
..............#.
................
...#...#........
........#.#.....
..............##
..............#.
.......#........
......#.........
............#...
.........#.....#
..............#.
.......#........
#...........#...
...#.#..........
.#..............
................
......#.....#...
.......#........
........#.....#.
................
......#.........
..#.............
................
...#.#..........
.#..............
 10 15
.......#.......
.....#.........
....#..........
....#..........
.....#.........
.....#.........
#.............#
...#..#........
...............
.............#.
 4 10
###..#..##
...##..#..
.##..#..#.
.........#
 2 5
.####
#..##
 5 2
##
##
..
##
..
 2 2
##
#.
 50 1
.
.
#
.
#
.
#
.
.
#
#
#
.
#
#
#
#
.
.
.
.
.
.
.
.
.
#
#
#
#
.
.
.
.
.
#
.
.
.
#
#
.
.
#
#
.
.
#
#
.
 5 2
#.
##
##
#.
..
 2 3
#.#
###
 2 1
.
#
 2 3
#.#
##.
 10 10
..........
..........
..........
..........
.#.......#
#.........
......#...
..........
..........
#.....#...
 4 4
###.
##.#
#.##
.###

No
 No
 No
 Yes
 Yes
 No
 Yes
 Yes
 Yes
 No
 Yes
 No
 No
 Yes
 No
 Yes
 No
 No
 Yes
 No
 No
 No

#include <bits/stdc++.h>
const double pi = acos(-1.0);
using namespace std;
inline long long MAX2(long long a, long long b) {
  return (a) > (b) ? (a) : (b);
}
inline long long MAX3(long long a, long long b, long long c) {
  return (a) > (b) ? ((a) > (c) ? (a) : (c)) : ((b) > (c) ? (b) : (c));
}
inline long long MIN2(long long a, long long b) {
  return (a) < (b) ? (a) : (b);
}
inline long long MIN3(long long a, long long b, long long c) {
  return (a) < (b) ? ((a) < (c) ? (a) : (c)) : ((b) < (c) ? (b) : (c));
}
int mod = 1e9 + 7;
int64_t extGcd(int64_t a, int64_t b, int64_t& x, int64_t& y) {
  if (!a) {
    x = 0;
    y = 1;
    return b;
  }
  int64_t x1, y1;
  int64_t d = extGcd(b % a, a, x1, y1);
  x = y1 - (b / a) * x1;
  y = x1;
  return d;
}
inline long long addmod(long long a, long long b) {
  a = a % mod + b % mod;
  if (a > mod) a %= mod;
  return a;
}
inline long long submod(long long a, long long b) {
  a = a % mod - b % mod;
  if (a < 0) a += mod;
  return a;
}
inline long long mulmod(long long a, long long b) {
  return (a % mod * b % mod) % mod;
}
int dx[] = {1, 1, 0, -1, -1, -1, 0, 1};
int dy[] = {0, 1, 1, 1, 0, -1, -1, -1};
inline long long exp(long long a, long long b) {
  if (a == 0) return 0ll;
  long long r = 1LL;
  while (b > 0) {
    if (b & 1) {
      r = r * (a % mod);
      r = (r + mod) % mod;
    }
    b /= 2;
    a = (a % mod) * (a % mod);
    a = (a + mod) % mod;
  }
  return (r + mod) % mod;
}
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  if (a == 0) return b;
  return gcd(b, a % b);
}
unsigned long int setbits(long long n) {
  unsigned long int count = 0;
  while (n) {
    n &= (n - 1);
    count++;
  }
  return count;
}
int main() {
  if (fopen("input.txt", "r"))
    freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
  ;
  int n, m;
  cin >> n >> m;
  char a[n][m];
  for (long long i = (long long)(0); i < (long long)(n); i++) {
    for (long long j = (long long)(0); j < (long long)(m); j++) cin >> a[i][j];
  }
  set<int> cols;
  set<int> rows;
  bool vis[n][m];
  memset((vis), (false), sizeof(vis));
  map<int, vector<int>> m1;
  for (int i = 0; i < n; i++) {
    set<int> temp_r;
    set<int> temp_c;
    for (int j = 0; j < m; j++) {
      if (a[i][j] == '#' and vis[i][j] == false) {
        vis[i][j] = true;
        if (rows.find(i) != rows.end()) {
          cout << "No" << '\n';
          return 0;
        }
        if (cols.find(j) != cols.end()) {
          cout << "No" << '\n';
          return 0;
        }
        m1[i].push_back(j);
        temp_r.insert(i);
        temp_c.insert(j);
        for (int k = i + 1; k < n; k++) {
          if (a[k][j] == '#') {
            vis[k][j] = true;
            temp_r.insert(k);
            if (rows.find(k) != rows.end()) {
              cout << "No" << '\n';
              return 0;
            }
            m1[k].push_back(j);
            m1[i].push_back(j);
            for (int l = j - 1; l >= 0; l--) {
              if (a[k][l] == '#') {
                vis[k][l] = true;
                m1[k].push_back(l);
                m1[i].push_back(l);
                temp_c.insert(l);
                if (cols.find(l) != cols.end()) {
                  cout << "No" << '\n';
                  return 0;
                }
                for (int o = k - 1; o >= 0; o--) {
                  if (a[o][l] == '#') {
                    vis[o][l] = true;
                    if (rows.find(o) != rows.end()) {
                      cout << "No" << '\n';
                      return 0;
                    }
                    m1[o].push_back(l);
                    m1[i].push_back(l);
                    m1[k].push_back(l);
                    temp_r.insert(o);
                  }
                }
              }
            }
          }
        }
      }
    }
    for (auto x : temp_c) cols.insert(x);
    for (auto y : temp_r) rows.insert(y);
  }
  vector<pair<int, int>> g1;
  for (auto x : m1) {
    for (auto y : x.second) {
      g1.push_back(make_pair(x.first, y));
    }
  }
  for (int i = 0; i < g1.size(); i++) {
    if (a[g1[i].first][g1[i].second] != '#') {
      cout << "No" << '\n';
      return 0;
    }
  }
  cout << "Yes" << '\n';
}
