# coding: utf-8
import sys
#from operator import itemgetter
sysread = sys.stdin.buffer.readline
read = sys.stdin.buffer.read
#from heapq import heappop, heappush
#from collections import defaultdict
sys.setrecursionlimit(10**7)
import math
#from itertools import product, accumulate, combinations, product
#import bisect
#import numpy as np
#from copy import deepcopy
#from collections import deque
#from decimal import Decimal
#from numba import jit

INF = 1 << 50
EPS = 1e-8
mod = 10 ** 9 + 7


def run():
    H, W, A, B = map(int, sysread().split())
    MAP = [[0] * W for _ in range(H)]


    for i in range(H):
        for j in range(W):
            if (0 <= i <= B-1 and 0 <= j <= A-1) or (B <= i and A <= j):
                MAP[i][j] = 1


    for m in MAP:
        print(''.join([str(s) for s in m]))

if __name__ == "__main__":
    run() import sys sys sysread = sys.stdin.buffer.readline sysread sys.stdin.buffer.readline sys.stdin.buffer sys.stdin sys stdin buffer readline read = sys.stdin.buffer.read read sys.stdin.buffer.read sys.stdin.buffer sys.stdin sys stdin buffer read sys.setrecursionlimit(10**7) sys.setrecursionlimit sys setrecursionlimit 10**7 10 7 import math math INF = 1 << 50 INF 1 << 50 1 50 EPS = 1e-8 EPS 1e-8 mod = 10 ** 9 + 7 mod 10 ** 9 + 7 10 ** 9 10 9 7 def run():
    H, W, A, B = map(int, sysread().split())
    MAP = [[0] * W for _ in range(H)]


    for i in range(H):
        for j in range(W):
            if (0 <= i <= B-1 and 0 <= j <= A-1) or (B <= i and A <= j):
                MAP[i][j] = 1


    for m in MAP:
        print(''.join([str(s) for s in m])) run H, W, A, B = map(int, sysread().split()) H map(int, sysread().split()) map int sysread().split() ().split () sysread split W A B [0] * W for _ in range(H) for _ in range(H) _ range(H) range H for _ in range(H) [0] * W [0] 0 W MAP = [[0] * W for _ in range(H)] MAP [[0] * W for _ in range(H)] for i in range(H):
        for j in range(W):
            if (0 <= i <= B-1 and 0 <= j <= A-1) or (B <= i and A <= j):
                MAP[i][j] = 1


     i range(H) range H for j in range(W):
            if (0 <= i <= B-1 and 0 <= j <= A-1) or (B <= i and A <= j):
                MAP[i][j] = 1


     j range(W) range W if (0 <= i <= B-1 and 0 <= j <= A-1) or (B <= i and A <= j):
                MAP[i][j] = 1


     (0 <= i <= B-1 and 0 <= j <= A-1) or (B <= i and A <= j) 0 <= i <= B-1 and 0 <= j <= A-1 0 <= i <= B-1 0 <= i 0 i B-1 B 1 0 <= j <= A-1 0 <= j 0 j A-1 A 1 B <= i and A <= j B <= i B i A <= j A j MAP[i][j] = 1 MAP[i][j] [i] MAP i j 1 for m in MAP:
        print(''.join([str(s) for s in m])) m MAP str(s) for s in m for s in m s m for s in m str(s) str s print(''.join([str(s) for s in m])) print ''.join([str(s) for s in m]) ''.join '' join [str(s) for s in m] if __name__ == "__main__":
    run() __name__ == "__main__" __name__ "__main__" run() run def run():
    H, W, A, B = map(int, sysread().split())
    MAP = [[0] * W for _ in range(H)]


    for i in range(H):
        for j in range(W):
            if (0 <= i <= B-1 and 0 <= j <= A-1) or (B <= i and A <= j):
                MAP[i][j] = 1


    for m in MAP:
        print(''.join([str(s) for s in m])) def run():
    H, W, A, B = map(int, sysread().split())
    MAP = [[0] * W for _ in range(H)]


    for i in range(H):
        for j in range(W):
            if (0 <= i <= B-1 and 0 <= j <= A-1) or (B <= i and A <= j):
                MAP[i][j] = 1


    for m in MAP:
        print(''.join([str(s) for s in m])) run read = sys.stdin.buffer.read sys.stdin.buffer.read read mod = 10 ** 9 + 7 10 ** 9 + 7 mod sysread = sys.stdin.buffer.readline sys.stdin.buffer.readline sysread INF = 1 << 50 1 << 50 INF EPS = 1e-8 1e-8 EPS
# coding: utf-8
import sys
#from operator import itemgetter
sysread = sys.stdin.buffer.readline
read = sys.stdin.buffer.read
#from heapq import heappop, heappush
#from collections import defaultdict
sys.setrecursionlimit(10**7)
import math
#from itertools import product, accumulate, combinations, product
#import bisect
#import numpy as np
#from copy import deepcopy
#from collections import deque
#from decimal import Decimal
#from numba import jit

INF = 1 << 50
EPS = 1e-8
mod = 10 ** 9 + 7


def run():
    H, W, A, B = map(int, sysread().split())
    MAP = [[0] * W for _ in range(H)]


    for i in range(H):
        for j in range(W):
            if (0 <= i <= B-1 and 0 <= j <= A-1) or (B <= i and A <= j):
                MAP[i][j] = 1


    for m in MAP:
        print(''.join([str(s) for s in m]))

if __name__ == "__main__":
    run()
