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 for i := 0; i < H; i++ { row := next() for j, r := range row { if r == '#' { board[i][j] = true } } } check := func(dh, dw int) bool { var checked [110][110]bool var count int for h := 0; h < H; h++ { for w := 0; w < W; w++ { if !board[h][w] || checked[h][w] { continue } if !board[h+dh][w+dw] { return false } checked[h+dh][w+dw] = true count++ } } return count > 0 } for dh := 0; dh < H; dh++ { for dw := 0; dw < W; dw++ { if dh == 0 && dw == 0 { continue } if check(dh, dw) { fmt.Println("YES") return } } } fmt.Println("NO") }