package main import ( "fmt" ) func main() { var R, K, H, W int fmt.Scan(&R, &K, &H, &W) HW := max(H, W) c := make([][]byte, HW) for i := 0; i < HW; i++ { c[i] = make([]byte, HW) } var s string for i := 0; i < H; i++ { fmt.Scan(&s) for j := 0; j < W; j++ { c[i][j] = s[j] } } d := make([][]byte, HW) for i := 0; i < HW; i++ { d[i] = make([]byte, HW) for j := 0; j < HW; j++ { d[i][j] = 'x' } } switch R { case 0: for i := 0; i < H; i++ { for j := 0; j < W; j++ { d[i][j] = c[i][j] } } case 90: for i := 0; i < H; i++ { for j := 0; j < W; j++ { d[j][H-i-1] = c[i][j] } } case 180: for i := 0; i < H; i++ { for j := 0; j < W; j++ { d[H-1-i][W-1-j] = c[i][j] } } case 270: for i := 0; i < H; i++ { for j := 0; j < W; j++ { d[W-1-j][i] = c[i][j] } } } for i := 0; i < HW; i++ { if d[i][0] == 'x' || d[i][0] == 0 { break } for t := 0; t < K; t++ { for j := 0; j < HW; j++ { if d[i][j] == 'x' || d[i][j] == 0 { continue } for t2 := 0; t2 < K; t2++ { fmt.Print(string(d[i][j])) } } fmt.Print("\n") } } } func max(a, b int) int { if a > b { return a } return b } func min(a, b int) int { if a < b { return a } return b }