h,w,a,b=map(int,input().split())
for i in range(h):
    if i<b:
        print("1"*a+"0"*(w-a))
    else:
        print("0"*a+"1"*(w-a))
'''
行と列のそれぞれに注目して考えると、条件を満たすものであればそれぞれを入れ替えても条件を満たす(自分の都合のいいように行列を作ることができる)
↓
また、条件を満たすものであれば0と1を入れ替えても条件を満たす(0の個数にまずは注目して考える)
↓
入れ替えていってまずは行列を最終的には下のような形にすることができる
''' h,w,a,b=map(int,input().split()) h map(int,input().split()) map int input().split() ().split () input split w a b for i in range(h):
    if i<b:
        print("1"*a+"0"*(w-a))
    else:
        print("0"*a+"1"*(w-a)) i range(h) range h if i<b:
        print("1"*a+"0"*(w-a))
    else:
        print("0"*a+"1"*(w-a)) i<b i b print("1"*a+"0"*(w-a)) print "1"*a+"0"*(w-a) "1"*a "1" a "0"*(w-a) "0" w-a w a print("0"*a+"1"*(w-a)) print "0"*a+"1"*(w-a) "0"*a "0" a "1"*(w-a) "1" w-a w a '''
行と列のそれぞれに注目して考えると、条件を満たすものであればそれぞれを入れ替えても条件を満たす(自分の都合のいいように行列を作ることができる)
↓
また、条件を満たすものであれば0と1を入れ替えても条件を満たす(0の個数にまずは注目して考える)
↓
入れ替えていってまずは行列を最終的には下のような形にすることができる
''' h,w,a,b=map(int,input().split()) map(int,input().split()) h a,b=map(int,input().split()) map(int,input().split()) a w,a,b=map(int,input().split()) map(int,input().split()) w b=map(int,input().split()) map(int,input().split()) b
h,w,a,b=map(int,input().split())
for i in range(h):
    if i<b:
        print("1"*a+"0"*(w-a))
    else:
        print("0"*a+"1"*(w-a))
'''
行と列のそれぞれに注目して考えると、条件を満たすものであればそれぞれを入れ替えても条件を満たす(自分の都合のいいように行列を作ることができる)
↓
また、条件を満たすものであれば0と1を入れ替えても条件を満たす(0の個数にまずは注目して考える)
↓
入れ替えていってまずは行列を最終的には下のような形にすることができる
'''