<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def maximum_ell_bundle(self, ell):
 """Return a maximum ell bundle in the rectangle bounded by :math:`\{x0,x1\} \\times \{y0,y1\}` with vertical component and horizontal component Note that we don't require :math:`x0 \leq x1` or :math:`y0 \leq y1`. We go through some shenanigans so that the qubits we return are all in a path. A nice side-effect of this is that where ``edges`` will be a list of lists of chain edges. INPUTS:: ell: a tuple of 4 integers defining the ell, ``(x0, x1, y0, y1)`` OUTPUT:: chains: list of lists of qubits Note: this function only to be called to construct a native clique embedding *after* the block embedding has been constructed. Using this to evaluate the goodness of an ell block will be slow. """

        (x0, x1, y0, y1) = ell
        hlines = self.maximum_hline_bundle(y0, x0, x1)
        vlines = self.maximum_vline_bundle(x0, y0, y1)

        if self.random_bundles:
            shuffle(hlines)
            shuffle(vlines)

        return [v + h for h, v in zip(hlines, vlines)]