package main import ( "bufio" "fmt" "os" "strconv" ) var sc = bufio.NewScanner(os.Stdin) func next() string { sc.Split(bufio.ScanWords) if !sc.Scan() { panic("could not scan a word from the reader") } return sc.Text() } func nextInt() int { i, e := strconv.Atoi(next()) if e != nil { panic(e) } return i } func main() { H, W := nextInt(), nextInt() var board [110][110]bool var count int for i := 0; i < H; i++ { row := next() for j, r := range row { if r == '#' { board[i][j] = true count++ } } } if count == 0 || count%2 > 0 { fmt.Println("NO") return } check := func(dh, dw int) bool { var checked [110][110]bool for h := 0; h < H; h++ { for w := 0; w < W; w++ { if !board[h][w] || checked[h][w] { continue } if h+dh < 0 || H <= h+dh || w+dw < 0 || W <= w+dw || !board[h+dh][w+dw] { return false } checked[h+dh][w+dw] = true } } return true } for dh := -H + 1; dh < H; dh++ { for dw := -W + 1; dw < W; dw++ { if dh == 0 && dw == 0 { continue } if check(dh, dw) { fmt.Println("YES") return } } } fmt.Println("NO") }