while True:
    try:
        n, m, k = map(int, input().split())
        if k < max(n, m):
            print(-1)
        else:
            # 创建一个全是0的二维数组
            lst = [[0 for _ in range(m)] for _ in range(n)]   # 列表推导式
            # 首先把数组的对角线给放上小球
            i, j = 0, 0
            while i <= n-1 and j <= m-1:
                lst[i][j] = 1
                i += 1
                j += 1
            # 给剩下的行或列放上小球
            if j < m-1:
                while j <= m-1:
                    lst[n-1][j] = 1
                    j += 1
            else:   # 即i<n-1的情况
                while i < n-1:
                    lst[i][m-1] = 1
                    i += 1
            # 把剩余的小球放在最后一个位置上
            lst[n-1][m-1] = k - max(n, m) + 1
            for x in range(n):
                print(' '.join(map(str, lst[x])))
    except:
        break