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

import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
       
        OutputStream outputStream = System.out;
        Scanner in = new Scanner( System.in);
        PrintWriter out = new PrintWriter(outputStream);
        Task solver = new Task();
        solver.solve(in, out);
        out.close();
    }
    
    
    

    static class Task {
        
        
        
        public void solve( Scanner in, PrintWriter out) {
            
            int ans=0,n,m;
            n=in.nextInt();
            m=in.nextInt();
            in.nextLine();
            int[] ni,nj;
            char[][] s=new char[n][m];
            for(int i=0;i<n;i++){
                s[i]=in.nextLine().toCharArray();
            }
            int[] stan=new int[n];
                int[] stam=new int[m];
                
                
            for(int i=0;i<n;i++){
                
                
                ni=new int[n];
                nj=new int[m];
                for(int j=0;j<m;j++){
                    if(s[i][j]!='#'){
                        continue;
                    }
                    if(s[i][j]=='#'){
                        if(stam[j]==1||stan[i]==1){
                             out.println("No");
                            return;
                        }
                        s[i][j]='g';
                       ni[i]=1;
                        for(int k=0;k<n;k++){
                            if(s[k][j]!='#'){
                        continue;
                    }
                            if(s[k][j]=='#'){
                                ni[k]=1;
                                if(stan[k]==1){
                                     out.println("No");
                            return;
                                }
                                s[k][j]='g';
                                }
                               
                            }
                        
                            
                        nj[j]=1;
                    }
                     
                       
                }
               
                 for(int e=0;e<n;e++){
                                if(ni[e]==1)
                                stan[e]=1;
                            }
                              for(int e=0;e<m;e++){
                                if(nj[e]==1)
                                stam[e]=1;
                            }
                            
                            
                            for(int u=0;u<n;u++){
                                if(ni[u]!=1)
                                continue;
                                for(int j=0;j<m;j++){
                                    if(nj[j]==1){
                                        if(s[u][j]=='.'){
                                             out.println("No");
                                              return;
                                        }
                                    }
                                }
                            }
                }
            
            
        
            out.println("Yes");
       
             
          
          
          
          //fn end
        }
    }
    
    
    
    
    
    
    
    
    
    void merge(int arr[], int l, int m, int r)
    {
        
        int n1 = m - l + 1;
        int n2 = r - m;
 
        
        int L[] = new int [n1];
        int R[] = new int [n2];
 
      
        for (int i=0; i<n1; ++i)
            L[i] = arr[l + i];
        for (int j=0; j<n2; ++j)
            R[j] = arr[m + 1+ j];
 
 
        
        int i = 0, j = 0;
 
     
        int k = l;
        while (i < n1 && j < n2)
        {
            if (L[i] <= R[j])
            {
                arr[k] = L[i];
                i++;
            }
            else
            {
                arr[k] = R[j];
                j++;
            }
            k++;
        }
 
 
        while (i < n1)
        {
            arr[k] = L[i];
            i++;
            k++;
        }
 
       
        while (j < n2)
        {
            arr[k] = R[j];
            j++;
            k++;
        }
    }
 
  
    void sort(int arr[], int l, int r)
    {
        if (l < r)
        {
           
            int m = (l+r)/2;

            sort(arr, l, m);
            sort(arr , m+1, r);
 
         
            merge(arr, l, m, r);
        }
    
	

}
   
        


}