```go
package main
import (
"fmt"
)
func main() {
var k int
if _, err := fmt.Scan(&k); err != nil {
return
}
grid := [][]byte{
[]byte("+------------------------+"),
[]byte("|#.#.#.#.#.#.#.#.#.#.#.|D|)"),
[]byte("|#.#.#.#.#.#.#.#.#.#.#.|.|"),
[]byte("|#.......................|"),
[]byte("|#.#.#.#.#.#.#.#.#.#.#.|.|"),
[]byte("+------------------------+"),
}
for i := 0; i < k; i++ {
col := 0
row := 0
if i < 4 {
col = 0
row = i
} else {
rem := i - 4
col = 1 + rem/3
r := rem % 3
if r == 0 {
row = 0
} else if r == 1 {
row = 1
} else if r == 2 {
row = 3
}
}
grid[row+1][1+2*col] = 'O'
}
for _, line := range grid {
fmt.Println(string(line))
}
}
```