def printans(ans):
    v = 0
    for a in ans:
        v += sum(a)
    print(v)
    for a in ans:
        print(*a)
    exit()
    
def rot90(A):
    # 時計回りに90度回転
    return list(zip(*(A[::-1])))

H, W = map(int, input().split())
if H % 2 == 0 and W % 2 == 0:
    ans = [[1] * W for _ in range(H)]
    printans(ans)
    
if H % 2 == 0 and W % 2:
    ans = [[1] * W for _ in range(H)]
    for i in range(H):
        ans[i][-1] = 0
    printans(ans)
    
if H % 2 and W % 2 == 0:
    ans = [[1] * W for _ in range(H)]
    for j in range(W):
        ans[-1][j] = 0
    printans(ans)
    
if H < W:
    H, W = W, H
    ans = [[1] * W for _ in range(H)]
    for i in range(W):
        ans[i][i] = 0
    for i in range(W, H):
        ans[i][-1] = 0
    ans = rot90(ans)
    printans(ans)
else:
    ans = [[1] * W for _ in range(H)]
    for i in range(W):
        ans[i][i] = 0
    for i in range(W, H):
        ans[i][-1] = 0
    printans(ans)