<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _decompose_(self, qubits):
 """An adjacency-respecting decomposition. 0: ───p───@──────────────@───────@──────────@────────── │ │ │ │ 1: ───p───X───@───p^-1───X───@───X──────@───X──────@─── │ │ │ │ 2: ───p───────X───p──────────X───p^-1───X───p^-1───X─── where p = T**self._exponent """

        if protocols.is_parameterized(self):
            return NotImplemented

        a, b, c = qubits

        # Hacky magic: avoid the non-adjacent edge.
        if hasattr(b, 'is_adjacent'):
            if not b.is_adjacent(a):
                b, c = c, b
            elif not b.is_adjacent(c):
                a, b = b, a

        p = common_gates.T**self._exponent
        sweep_abc = [common_gates.CNOT(a, b),
                     common_gates.CNOT(b, c)]

        return [
            p(a), p(b), p(c),
            sweep_abc,
            p(b)**-1, p(c),
            sweep_abc,
            p(c)**-1,
            sweep_abc,
            p(c)**-1,
            sweep_abc,
        ]