h,w,a,b=map(int,input().split())

#行に含まれる数はa、列に含まれる数はb
#行の並び替えは可能
#列の並び替えも可能

if b>h//2:
    print("No")
    exit()
if a>w//2:
    print("No")
    exit()


mapss=[[0]*w for _ in range(h)]

for y in range(b):
    for x in range(a):
        mapss[y][x]=1

for y in range(b,h):
    for x in range(a,w):
        mapss[y][x]=1


for item in mapss:
    print("".join(map(str,item))) h,w,a,b=map(int,input().split()) h map(int,input().split()) map int input().split() ().split () input split w a b if b>h//2:
    print("No")
    exit() b>h//2 b h//2 h 2 print("No") print "No" exit() exit if a>w//2:
    print("No")
    exit() a>w//2 a w//2 w 2 print("No") print "No" exit() exit [0]*w for _ in range(h) for _ in range(h) _ range(h) range h for _ in range(h) [0]*w [0] 0 w mapss=[[0]*w for _ in range(h)] mapss [[0]*w for _ in range(h)] for y in range(b):
    for x in range(a):
        mapss[y][x]=1 y range(b) range b for x in range(a):
        mapss[y][x]=1 x range(a) range a mapss[y][x]=1 mapss[y][x] [y] mapss y x 1 for y in range(b,h):
    for x in range(a,w):
        mapss[y][x]=1 y range(b,h) range b h for x in range(a,w):
        mapss[y][x]=1 x range(a,w) range a w mapss[y][x]=1 mapss[y][x] [y] mapss y x 1 for item in mapss:
    print("".join(map(str,item))) item mapss print("".join(map(str,item))) print "".join(map(str,item)) "".join "" join map(str,item) map str item w,a,b=map(int,input().split()) map(int,input().split()) w h,w,a,b=map(int,input().split()) map(int,input().split()) h mapss=[[0]*w for _ in range(h)] [[0]*w for _ in range(h)] mapss a,b=map(int,input().split()) map(int,input().split()) a b=map(int,input().split()) map(int,input().split()) b
h,w,a,b=map(int,input().split())

#行に含まれる数はa、列に含まれる数はb
#行の並び替えは可能
#列の並び替えも可能

if b>h//2:
    print("No")
    exit()
if a>w//2:
    print("No")
    exit()


mapss=[[0]*w for _ in range(h)]

for y in range(b):
    for x in range(a):
        mapss[y][x]=1

for y in range(b,h):
    for x in range(a,w):
        mapss[y][x]=1


for item in mapss:
    print("".join(map(str,item)))