#include <bits/stdc++.h>   using namespace std;   int n, m;   char a[60][60];   bool isRowChecked[60];   bool isColChecked[60];   bool doCheck(int r, int c) {     bool isRowRegard[60];     bool isColRegard[60];     memset(isRowRegard, false, sizeof(isRowRegard));     memset(isColRegard, false, sizeof(isColRegard));     std::vector<int> rows;     std::vector<int> cols;     for (int rr = r; rr < n; rr++) {       if (a[rr][c] ==  # ) {         isRowRegard[rr] = true;         rows.push_back(rr);       }     }     for (int cc = c; cc < m; cc++) {       if (a[r][cc] ==  # ) {         isColRegard[cc] = true;         cols.push_back(cc);       }     }     for (int i = 0; i < rows.size(); i++) {       for (int cc = 0; cc < m; cc++) {         if ((a[rows[i]][cc] ==  . ) && (isColRegard[cc] == true)) return false;         if ((a[rows[i]][cc] ==  # ) && (isColRegard[cc] == false)) return false;       }     }     for (int j = 0; j < cols.size(); j++) {       for (int rr = 0; rr < n; rr++) {         if ((a[rr][cols[j]] ==  . ) && (isRowRegard[rr] == true)) return false;         if ((a[rr][cols[j]] ==  # ) && (isRowRegard[rr] == false)) return false;       }     }     for (int i = 0; i < rows.size(); i++) isRowChecked[rows[i]] = true;     for (int j = 0; j < cols.size(); j++) isColChecked[cols[j]] = true;     return true;   }   int main() {     scanf( %d%d n , &n, &m);     for (int i = 0; i < n; i++) scanf( %s n , a[i]);     memset(isRowChecked, false, sizeof(isRowChecked));     memset(isColChecked, false, sizeof(isColChecked));     for (int r = 0; r < n; r++) {       if (isRowChecked[r]) continue;       for (int c = 0; c < m; c++) {         if (isColChecked[c]) continue;         if (a[r][c] ==  # ) {           if (doCheck(r, c) == false) {             printf( No n );             return 0;           }         }       }     }     printf( Yes n );     return 0;   }   