import java.io.*; import java.util.*; public class Main_yukicoder565 { private static Scanner sc; private static Printer pr; private static void solve() { int r = sc.nextInt(); int k = sc.nextInt(); int h = sc.nextInt(); int w = sc.nextInt(); char[][] c = new char[h][]; for (int i = 0; i < h; i++) { c[i] = sc.next().toCharArray(); } char[][] ret = null; if (r == 0) { ret = new char[h * k][w * k]; for (int i = 0; i < h; i++) { for (int ik = 0; ik < k; ik++) { for (int j = 0; j < w; j++) { for (int jk = 0; jk < k; jk++) { ret[i * k + ik][j * k + jk] = c[i][j]; } } } } } else if (r == 180) { ret = new char[h * k][w * k]; for (int i = 0; i < h; i++) { for (int ik = 0; ik < k; ik++) { for (int j = 0; j < w; j++) { for (int jk = 0; jk < k; jk++) { ret[i * k + ik][j * k + jk] = c[h - 1 - i][w - 1 - j]; } } } } } else if (r == 90) { ret = new char[w * k][h * k]; for (int j = 0; j < w; j++) { for (int jk = 0; jk < k; jk++) { for (int i = 0; i < h; i++) { for (int ik = 0; ik < k; ik++) { ret[j * k + jk][i * k + ik] = c[h - 1 - i][j]; } } } } } else { ret = new char[w * k][h * k]; for (int j = 0; j < w; j++) { for (int jk = 0; jk < k; jk++) { for (int i = 0; i < h; i++) { for (int ik = 0; ik < k; ik++) { ret[j * k + jk][i * k + ik] = c[i][w - 1 - j]; } } } } } for (int i = 0; i < ret.length; i++) { for (int j = 0; j < ret[0].length; j++) { pr.print(ret[i][j]); } pr.println(); } } // --------------------------------------------------- public static void main(String[] args) { sc = new Scanner(System.in); pr = new Printer(System.out); solve(); pr.close(); sc.close(); } private static class Printer extends PrintWriter { Printer(PrintStream out) { super(out); } } }