import sys, re, os
from collections import deque, defaultdict, Counter
from math import ceil, sqrt, hypot, factorial, pi, sin, cos, radians, acos, atan, asin
from itertools import permutations, combinations, product, accumulate
from operator import itemgetter, mul
from copy import deepcopy
from string import ascii_lowercase, ascii_uppercase, digits
from fractions import gcd
def input(): return sys.stdin.readline().strip()
def STR(): return input()
def INT(): return int(input())
def MAP(): return map(int, input().split())
def S_MAP(): return map(str, input().split())
def LIST(): return list(map(int, input().split()))
def S_LIST(): return list(map(str, input().split()))
sys.setrecursionlimit(10 ** 9)
inf = sys.maxsize
mod = 10 ** 9 + 7

h,w,a,b = MAP()
if a > w // 2 or b > h // 2:
    print('No')
    exit()
ans = [['0' for _ in range(w)] for _ in range(h)]
for i in range(h):
    for j in range(w):
        if (i < b and j < a) or (i >= b and j >= a):
            ans[i][j] = '1'
for i in range(h):
    print(''.join(ans[i])) import sys, re, os sys re os from collections import deque, defaultdict, Counter from math import ceil, sqrt, hypot, factorial, pi, sin, cos, radians, acos, atan, asin from itertools import permutations, combinations, product, accumulate from operator import itemgetter, mul from copy import deepcopy from string import ascii_lowercase, ascii_uppercase, digits from fractions import gcd def input(): return sys.stdin.readline().strip() input def STR(): return input() STR def INT(): return int(input()) INT def MAP(): return map(int, input().split()) MAP def S_MAP(): return map(str, input().split()) S_MAP def LIST(): return list(map(int, input().split())) LIST def S_LIST(): return list(map(str, input().split())) S_LIST sys.setrecursionlimit(10 ** 9) sys.setrecursionlimit sys setrecursionlimit 10 ** 9 10 9 inf = sys.maxsize inf sys.maxsize sys maxsize mod = 10 ** 9 + 7 mod 10 ** 9 + 7 10 ** 9 10 9 7 h,w,a,b = MAP() h MAP() MAP w a b if a > w // 2 or b > h // 2:
    print('No')
    exit() a > w // 2 or b > h // 2 a > w // 2 a w // 2 w 2 b > h // 2 b h // 2 h 2 print('No') print 'No' exit() exit ['0' for _ in range(w)] for _ in range(h) for _ in range(h) _ range(h) range h for _ in range(h) ['0' for _ in range(w)] ans = [['0' for _ in range(w)] for _ in range(h)] ans [['0' for _ in range(w)] for _ in range(h)] for i in range(h):
    for j in range(w):
        if (i < b and j < a) or (i >= b and j >= a):
            ans[i][j] = '1' i range(h) range h for j in range(w):
        if (i < b and j < a) or (i >= b and j >= a):
            ans[i][j] = '1' j range(w) range w if (i < b and j < a) or (i >= b and j >= a):
            ans[i][j] = '1' (i < b and j < a) or (i >= b and j >= a) i < b and j < a i < b i b j < a j a i >= b and j >= a i >= b i b j >= a j a ans[i][j] = '1' ans[i][j] [i] ans i j '1' for i in range(h):
    print(''.join(ans[i])) i range(h) range h print(''.join(ans[i])) print ''.join(ans[i]) ''.join '' join ans[i] ans i def input(): return sys.stdin.readline().strip() def input(): return sys.stdin.readline().strip() input inf = sys.maxsize sys.maxsize inf mod = 10 ** 9 + 7 10 ** 9 + 7 mod a,b = MAP() MAP() a h,w,a,b = MAP() MAP() h b = MAP() MAP() b ans = [['0' for _ in range(w)] for _ in range(h)] [['0' for _ in range(w)] for _ in range(h)] ans def STR(): return input() def STR(): return input() STR def LIST(): return list(map(int, input().split())) def LIST(): return list(map(int, input().split())) LIST def S_LIST(): return list(map(str, input().split())) def S_LIST(): return list(map(str, input().split())) S_LIST def INT(): return int(input()) def INT(): return int(input()) INT def MAP(): return map(int, input().split()) def MAP(): return map(int, input().split()) MAP w,a,b = MAP() MAP() w def S_MAP(): return map(str, input().split()) def S_MAP(): return map(str, input().split()) S_MAP
import sys, re, os
from collections import deque, defaultdict, Counter
from math import ceil, sqrt, hypot, factorial, pi, sin, cos, radians, acos, atan, asin
from itertools import permutations, combinations, product, accumulate
from operator import itemgetter, mul
from copy import deepcopy
from string import ascii_lowercase, ascii_uppercase, digits
from fractions import gcd
def input(): return sys.stdin.readline().strip()
def STR(): return input()
def INT(): return int(input())
def MAP(): return map(int, input().split())
def S_MAP(): return map(str, input().split())
def LIST(): return list(map(int, input().split()))
def S_LIST(): return list(map(str, input().split()))
sys.setrecursionlimit(10 ** 9)
inf = sys.maxsize
mod = 10 ** 9 + 7

h,w,a,b = MAP()
if a > w // 2 or b > h // 2:
    print('No')
    exit()
ans = [['0' for _ in range(w)] for _ in range(h)]
for i in range(h):
    for j in range(w):
        if (i < b and j < a) or (i >= b and j >= a):
            ans[i][j] = '1'
for i in range(h):
    print(''.join(ans[i]))