← Home
```go
package main

import (
	"fmt"
)

func main() {
	var a, b, c, d int
	fmt.Scan(&a, &b, &c, &d)

	const n, m = 50, 50
	grid := make([][]byte, n)
	for i := range grid {
		grid[i] = make([]byte, m)
		for j := range grid[i] {
			if i < 25 {
				grid[i][j] = 'C'
			} else {
				grid[i][j] = 'D'
			}
		}
	}

	cnt := 0
	for i := 0; i < 25 && cnt < a; i += 2 {
		for j := 0; j < m && cnt < a; j += 2 {
			grid[i][j] = 'A'
			cnt++
		}
	}

	cnt = 0
	for i := 0; i < 25 && cnt < b; i += 2 {
		for j := 1; j < m && cnt < b; j += 2 {
			grid[i][j] = 'B'
			cnt++
		}
	}

	if d > 1 {
		cnt = 0
		need := d - 1
		for i := 1; i < 24 && cnt < need; i += 2 {
			for j := 0; j < m && cnt < need; j += 2 {
				grid[i][j] = 'D'
				cnt++
			}
		}
	}

	if c > 1 {
		cnt = 0
		need := c - 1
		for i := 26; i < n && cnt < need; i += 2 {
			for j := 0; j < m && cnt < need; j += 2 {
				grid[i][j] = 'C'
				cnt++
			}
		}
	}

	fmt.Println(n, m)
	for i := 0; i < n; i++ {
		fmt.Println(string(grid[i]))
	}
}
```