import sys

sys.setrecursionlimit(10**7)
def I(): return int(sys.stdin.readline().rstrip())
def MI(): return map(int,sys.stdin.readline().rstrip().split())
def LI(): return list(map(int,sys.stdin.readline().rstrip().split()))  #空白あり
def LI2(): return list(map(int,sys.stdin.readline().rstrip()))  #空白なし
def S(): return sys.stdin.readline().rstrip()
def LS(): return list(sys.stdin.readline().rstrip().split())  #空白あり
def LS2(): return list(sys.stdin.readline().rstrip())  #空白なし


H,W,A,B = MI()
for _ in range(B):
    print(''.join(['0']*A+['1']*(W-A)))
for _ in range(H-B):
    print(''.join(['1']*A+['0']*(W-A))) import sys sys sys.setrecursionlimit(10**7) sys.setrecursionlimit sys setrecursionlimit 10**7 10 7 def I(): return int(sys.stdin.readline().rstrip()) I def MI(): return map(int,sys.stdin.readline().rstrip().split()) MI def LI(): return list(map(int,sys.stdin.readline().rstrip().split()))  #空白あり LI def LI2(): return list(map(int,sys.stdin.readline().rstrip()))  #空白なし LI2 def S(): return sys.stdin.readline().rstrip() S def LS(): return list(sys.stdin.readline().rstrip().split())  #空白あり LS def LS2(): return list(sys.stdin.readline().rstrip())  #空白なし LS2 H,W,A,B = MI() H MI() MI W A B for _ in range(B):
    print(''.join(['0']*A+['1']*(W-A))) _ range(B) range B print(''.join(['0']*A+['1']*(W-A))) print ''.join(['0']*A+['1']*(W-A)) ''.join '' join ['0']*A+['1']*(W-A) ['0']*A ['0'] '0' A ['1']*(W-A) ['1'] '1' W-A W A for _ in range(H-B):
    print(''.join(['1']*A+['0']*(W-A))) _ range(H-B) range H-B H B print(''.join(['1']*A+['0']*(W-A))) print ''.join(['1']*A+['0']*(W-A)) ''.join '' join ['1']*A+['0']*(W-A) ['1']*A ['1'] '1' A ['0']*(W-A) ['0'] '0' W-A W A def LS(): return list(sys.stdin.readline().rstrip().split())  #空白あり def LS(): return list(sys.stdin.readline().rstrip().split())  #空白あり LS A,B = MI() MI() A def I(): return int(sys.stdin.readline().rstrip()) def I(): return int(sys.stdin.readline().rstrip()) I def LS2(): return list(sys.stdin.readline().rstrip())  #空白なし def LS2(): return list(sys.stdin.readline().rstrip())  #空白なし LS2 def LI(): return list(map(int,sys.stdin.readline().rstrip().split()))  #空白あり def LI(): return list(map(int,sys.stdin.readline().rstrip().split()))  #空白あり LI W,A,B = MI() MI() W H,W,A,B = MI() MI() H B = MI() MI() B def S(): return sys.stdin.readline().rstrip() def S(): return sys.stdin.readline().rstrip() S def MI(): return map(int,sys.stdin.readline().rstrip().split()) def MI(): return map(int,sys.stdin.readline().rstrip().split()) MI def LI2(): return list(map(int,sys.stdin.readline().rstrip()))  #空白なし def LI2(): return list(map(int,sys.stdin.readline().rstrip()))  #空白なし LI2
import sys

sys.setrecursionlimit(10**7)
def I(): return int(sys.stdin.readline().rstrip())
def MI(): return map(int,sys.stdin.readline().rstrip().split())
def LI(): return list(map(int,sys.stdin.readline().rstrip().split()))  #空白あり
def LI2(): return list(map(int,sys.stdin.readline().rstrip()))  #空白なし
def S(): return sys.stdin.readline().rstrip()
def LS(): return list(sys.stdin.readline().rstrip().split())  #空白あり
def LS2(): return list(sys.stdin.readline().rstrip())  #空白なし


H,W,A,B = MI()
for _ in range(B):
    print(''.join(['0']*A+['1']*(W-A)))
for _ in range(H-B):
    print(''.join(['1']*A+['0']*(W-A)))
