import bisect
import math
import sys
from collections import Counter, defaultdict, deque
from copy import copy, deepcopy
from heapq import heapify, heappop, heappush
from itertools import combinations, permutations
from queue import Queue

read = sys.stdin.read
readline = sys.stdin.readline 
readlines = sys.stdin.readlines 

def SI():
    return int(readline())
def MI():
    return map(int, readline().split())
def MLI():
    return map(int, open(0).read().split())

inf = float("inf")


def main():
    H, W, A, B = MI()
    ret = [[0] * A + [1] * (W - A)] * B \
    	+ [[1] * A + [0] * (W - A)] * (H - B)
    for row in ret:
        row = [str(i) for i in row]
        row = ''.join(row)
        print(row)
        

if __name__ == "__main__":
    main() import bisect bisect import math math import sys sys from collections import Counter, defaultdict, deque from copy import copy, deepcopy from heapq import heapify, heappop, heappush from itertools import combinations, permutations from queue import Queue read = sys.stdin.read read sys.stdin.read sys.stdin sys stdin read readline = sys.stdin.readline readline sys.stdin.readline sys.stdin sys stdin readline readlines = sys.stdin.readlines readlines sys.stdin.readlines sys.stdin sys stdin readlines def SI():
    return int(readline()) SI return int(readline()) int(readline()) int readline() readline def MI():
    return map(int, readline().split()) MI return map(int, readline().split()) map(int, readline().split()) map int readline().split() ().split () readline split def MLI():
    return map(int, open(0).read().split()) MLI return map(int, open(0).read().split()) map(int, open(0).read().split()) map int open(0).read().split() (0).read().split (0).read() (0).read (0) open 0 read split inf = float("inf") inf float("inf") float "inf" def main():
    H, W, A, B = MI()
    ret = [[0] * A + [1] * (W - A)] * B \
    	+ [[1] * A + [0] * (W - A)] * (H - B)
    for row in ret:
        row = [str(i) for i in row]
        row = ''.join(row)
        print(row)
         main H, W, A, B = MI() H MI() MI W A B ret = [[0] * A + [1] * (W - A)] * B \
    	+ [[1] * A + [0] * (W - A)] * (H - B) ret [[0] * A + [1] * (W - A)] * B \
    	+ [[1] * A + [0] * (W - A)] * (H - B) [[0] * A + [1] * (W - A)] * B [[0] * A + [1] * (W - A)] [0] * A + [1] * (W - A) [0] * A [0] 0 A [1] * (W - A) [1] 1 W - A W A B [[1] * A + [0] * (W - A)] * (H - B) [[1] * A + [0] * (W - A)] [1] * A + [0] * (W - A) [1] * A [1] 1 A [0] * (W - A) [0] 0 W - A W A H - B H B for row in ret:
        row = [str(i) for i in row]
        row = ''.join(row)
        print(row)
         row ret str(i) for i in row for i in row i row for i in row str(i) str i row = [str(i) for i in row] row [str(i) for i in row] row = ''.join(row) row ''.join(row) ''.join '' join row print(row) print row if __name__ == "__main__":
    main() __name__ == "__main__" __name__ "__main__" main() main def MLI():
    return map(int, open(0).read().split()) def MLI():
    return map(int, open(0).read().split()) MLI def main():
    H, W, A, B = MI()
    ret = [[0] * A + [1] * (W - A)] * B \
    	+ [[1] * A + [0] * (W - A)] * (H - B)
    for row in ret:
        row = [str(i) for i in row]
        row = ''.join(row)
        print(row)
         def main():
    H, W, A, B = MI()
    ret = [[0] * A + [1] * (W - A)] * B \
    	+ [[1] * A + [0] * (W - A)] * (H - B)
    for row in ret:
        row = [str(i) for i in row]
        row = ''.join(row)
        print(row)
         main read = sys.stdin.read sys.stdin.read read def MI():
    return map(int, readline().split()) def MI():
    return map(int, readline().split()) MI inf = float("inf") float("inf") inf readline = sys.stdin.readline sys.stdin.readline readline readlines = sys.stdin.readlines sys.stdin.readlines readlines def SI():
    return int(readline()) def SI():
    return int(readline()) SI
import bisect
import math
import sys
from collections import Counter, defaultdict, deque
from copy import copy, deepcopy
from heapq import heapify, heappop, heappush
from itertools import combinations, permutations
from queue import Queue

read = sys.stdin.read
readline = sys.stdin.readline 
readlines = sys.stdin.readlines 

def SI():
    return int(readline())
def MI():
    return map(int, readline().split())
def MLI():
    return map(int, open(0).read().split())

inf = float("inf")


def main():
    H, W, A, B = MI()
    ret = [[0] * A + [1] * (W - A)] * B \
    	+ [[1] * A + [0] * (W - A)] * (H - B)
    for row in ret:
        row = [str(i) for i in row]
        row = ''.join(row)
        print(row)
        

if __name__ == "__main__":
    main()