# https://atcoder.jp/contests/agc038/tasks/agc038_a

import sys
# sys.setrecursionlimit(100000)


def input():
    return sys.stdin.readline().strip()


def input_int():
    return int(input())


def input_int_list():
    return [int(i) for i in input().split()]


def main():
    h, w, a, b = input_int_list()
    grid = []
    for i in range(h):
        if i < b:
            grid.append("1" * a + "0" * (w - a))
        else:
            grid.append("0" * a + "1" * (w - a))
    for line in grid:
        print(line)

    return


if __name__ == "__main__":
    main() import sys sys def input():
    return sys.stdin.readline().strip() input return sys.stdin.readline().strip() sys.stdin.readline().strip() sys.stdin.readline().strip sys.stdin.readline() sys.stdin.readline sys.stdin sys stdin readline strip def input_int():
    return int(input()) input_int return int(input()) int(input()) int input() input def input_int_list():
    return [int(i) for i in input().split()] input_int_list int(i) for i in input().split() for i in input().split() i input().split() ().split () input split for i in input().split() int(i) int i return [int(i) for i in input().split()] [int(i) for i in input().split()] def main():
    h, w, a, b = input_int_list()
    grid = []
    for i in range(h):
        if i < b:
            grid.append("1" * a + "0" * (w - a))
        else:
            grid.append("0" * a + "1" * (w - a))
    for line in grid:
        print(line)

    return main h, w, a, b = input_int_list() h input_int_list() input_int_list w a b grid = [] grid [] for i in range(h):
        if i < b:
            grid.append("1" * a + "0" * (w - a))
        else:
            grid.append("0" * a + "1" * (w - a))
     i range(h) range h if i < b:
            grid.append("1" * a + "0" * (w - a))
        else:
            grid.append("0" * a + "1" * (w - a))
     i < b i b grid.append("1" * a + "0" * (w - a)) grid.append grid append "1" * a + "0" * (w - a) "1" * a "1" a "0" * (w - a) "0" w - a w a grid.append("0" * a + "1" * (w - a)) grid.append grid append "0" * a + "1" * (w - a) "0" * a "0" a "1" * (w - a) "1" w - a w a for line in grid:
        print(line)

     line grid print(line) print line return if __name__ == "__main__":
    main() __name__ == "__main__" __name__ "__main__" main() main def input_int_list():
    return [int(i) for i in input().split()] def input_int_list():
    return [int(i) for i in input().split()] input_int_list def main():
    h, w, a, b = input_int_list()
    grid = []
    for i in range(h):
        if i < b:
            grid.append("1" * a + "0" * (w - a))
        else:
            grid.append("0" * a + "1" * (w - a))
    for line in grid:
        print(line)

    return def main():
    h, w, a, b = input_int_list()
    grid = []
    for i in range(h):
        if i < b:
            grid.append("1" * a + "0" * (w - a))
        else:
            grid.append("0" * a + "1" * (w - a))
    for line in grid:
        print(line)

    return main def input():
    return sys.stdin.readline().strip() def input():
    return sys.stdin.readline().strip() input def input_int():
    return int(input()) def input_int():
    return int(input()) input_int
# https://atcoder.jp/contests/agc038/tasks/agc038_a

import sys
# sys.setrecursionlimit(100000)


def input():
    return sys.stdin.readline().strip()


def input_int():
    return int(input())


def input_int_list():
    return [int(i) for i in input().split()]


def main():
    h, w, a, b = input_int_list()
    grid = []
    for i in range(h):
        if i < b:
            grid.append("1" * a + "0" * (w - a))
        else:
            grid.append("0" * a + "1" * (w - a))
    for line in grid:
        print(line)

    return


if __name__ == "__main__":
    main()
