def sparse_multiply(a, b):
    rows = len(a)
    cols = len(b[0]) if b else 0
    nonzero = [[(j, value) for j, value in enumerate(row) if value != 0]
               for row in b]
    output = [[0] * cols for _ in range(rows)]
    for i, row in enumerate(a):
        for p, value in enumerate(row):
            if value != 0:
                for j, other in nonzero[p]:
                    output[i][j] += value * other
    return output
