B1. ""Is the bit string balanced?"" oracle
*special
Implement a quantum oracle on \(N\) qubits which checks whether the input bit string is balanced, i.e., whether it has exactly \(\frac{N}{2}\) zeros and \(\frac{N}{2}\) ones in it. Your operation should take the following inputs: an array of \(N \le 10\) qubits ""inputs"" in an arbitrary state. \(N\) will be an even number. a qubit ""output"" in an arbitrary state. Your operation should perform a unitary transformation on those qubits that can be described by its effect on the basis states: if ""inputs"" is in the basis state \(|x\rangle\) and ""output"" is in the basis state \(|y\rangle\), the result of applying the operation should be \(|x\rangle|y \oplus f(x)\rangle\), where \(f(x) = 1\) if the bit string \(x\) has the same number of zeros and ones in it, and \(0\) otherwise.For example, if the qubits passed to your operation are in the state \(\frac{1}{\sqrt{2}}(|01\rangle + |00\rangle)_x \otimes |0\rangle_y\), the state of the system after applying the operation should be \(\frac{1}{\sqrt{2}}(|01\rangle_x\otimes |1\rangle_y + |00\rangle_x |0\rangle_y)\).Your code should have the following signature (note that your operation should have Adjoint and Controlled variants defined for it; is Adj+Ctl in the operation signature will generate them automatically based on your code):namespace Solution { open Microsoft.Quantum.Intrinsic; operation Solve (inputs : Qubit[], output : Qubit) : Unit is Adj+Ctl { // your code here }}Your code is not allowed to use measurements or arbitrary rotation gates. This operation can be implemented using just the X gate and its controlled variants (possibly with multiple qubits as controls).