{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "4cc4aa0a",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pennylane as pl\n",
    "from pennylane import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c896f750",
   "metadata": {},
   "source": [
    "# Exercise 1: Uniform superposition"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "471d2d94",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Initial state: [1.+0.j 0.+0.j 0.+0.j 0.+0.j]\n",
      "After applying the Hadamard gates: [0.5+0.j 0.5+0.j 0.5+0.j 0.5+0.j]\n",
      "execution_results: [0.25 0.25 0.25 0.25]\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 600x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n_bits = 2\n",
    "dev = pl.device(\"default.qubit\", wires=n_bits)\n",
    "wires = list(range(n_bits))\n",
    "\n",
    "@pl.qnode(dev)\n",
    "def circuit():\n",
    "    pl.Snapshot(\"Initial state\")\n",
    "    for i in range(n_bits):\n",
    "        pl.Hadamard(wires=i)\n",
    "    pl.Snapshot(\"After applying the Hadamard gates\")\n",
    "    return pl.probs(wires=wires)  \n",
    "\n",
    "pl.drawer.use_style(\"black_white\")\n",
    "pl.draw_mpl(circuit)();\n",
    "results = pl.snapshots(circuit)()\n",
    "for k, result in results.items():\n",
    "    print(f\"{k}: {result}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "ca7966f3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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y4OeDSBtUHMDwG26mN+cOXNk5MiRMmXKFAkODjYLO2qNR4MGDR54/d69e+XAgQNmVJI2O61duzbJ9+uz8ufPbzr8LliwwNTwqHz58slPP/1kaneSKznPfuONN1zNVfq91q1b1zRp1alTx6NlAeBZhBsAqdK2bVuzHTt2TDZu3CgzZ86Uhg0byrJly6Rp06YJXqOrVzdr1ky2bdtmOiBrs5N2HNbFPpOio450eLWukB2Xho0CBQokq7wpebb2s4lLO047V1v3RFkApA3CDQCP0JXHW7duLa1atZKKFSvKl19+mWi4+eKLL0xfFg0KuXLlMsc++OADGTFiRJLP0JXN8+bNa4aIuyslzz5//vx9r53BxRNlAZA2GAoOwG3Hjx83tRdxaSdiPZYnTx7z2hkgdN4aJ50/RsOQ85yzc25cCV3XqFEj2bdvn6xZsybeey9fvmy25EjOs52WLFni2tf5drRzs3NUmCfKAiBtBGjHmzS6NwDLffXVV9K/f39p0aKFlCtXTm7fvm36pGzfvl2ioqKkfPny5n3a/0RHFLVs2dIMldYajxo1aphRRVrLo/fR9+vQ7JiYGNf9771OR0t1797d1Ar16dNHSpYsaYZp6/U6gaA2G91L76d9arQZSodqb9269YHP1iYnvVfBggXNyC8txyeffGJCm17v7IfzoLLc+2wA3kHNDQC3aejQYKBzxWzevNkMDdegEx0d7Qo2KiIiwgynXr58uels+5e//MV81aHY69evlyZNmsjixYtNk1Zc916npk6davq5aEdgfbaGHh2CnVCwUdmyZTN9gjRQqeQ8O2fOnOYa7WQcGhoqP//8s/zjH/8w18WdD+dBZbn32QC8g5obAABgFWpuAACAVQg3AADAKoQbAABgFcINAACwCuEGAABYhXADAACsQrgBAABWIdwAAACrEG4AAIBVCDcAAMAqhBsAAGAVwg0AABCb/B9+iMcN7NSpcAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "y = np.real(results[\"After applying the Hadamard gates\"])\n",
    "bit_strings = [f\"{x:0{n_bits}b}\" for x in range(len(y))]\n",
    "plt.bar(bit_strings, y, color = \"#70CEFF\")\n",
    "plt.xticks(rotation=\"vertical\")\n",
    "plt.xlabel(\"State label\")\n",
    "plt.ylabel(\"Probability Amplitude\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "83f70d12",
   "metadata": {},
   "source": [
    "# Exercise 2: Oracle as a reflection\n",
    "\n",
    "Recall that for one marked key $w$, Grover's phase oracle is\n",
    "\n",
    "$$O_w=I-2|w\\rangle\\langle w|.$$\n",
    "\n",
    "This is a **reflection**: it changes the sign of the marked state's amplitude and leaves the other computational-basis amplitudes unchanged.\n",
    "\n",
    "We will construct it as a quantum circuit in **two steps**:\n",
    "\n",
    "1. **Check the key.** Construct the reversible oracle $U_f|x\\rangle|b\\rangle=|x\\rangle|b\\oplus f(x)\\rangle$, where $f(x)=1$ precisely when $x=w$. To check a key such as `01`, apply $X$ to the wires where the key contains a `0`, use a multi-controlled $X$ on the extra qubit, and undo the initial $X$ gates.\n",
    "2. **Turn the check into a phase flip.** Prepare the extra qubit in $|-\\rangle=(|0\\rangle-|1\\rangle)/\\sqrt2$. Since $X|-\\rangle=-|-\\rangle$, the same checker now acts as $O_w$ on the data qubits:\n",
    "\n",
    "$$U_f(|x\\rangle|-\\rangle)=(-1)^{f(x)}|x\\rangle|-\\rangle.$$\n",
    "\n",
    "For this exercise, mark just **one key**, `01`. You can use `pl.ctrl(pl.PauliX, control=wires)(wires=flag_wire)` for the multi-controlled $X$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "72a17641",
   "metadata": {},
   "outputs": [],
   "source": [
    "keys = [[0,1]]  # one marked key\n",
    "flag_wire = n_bits\n",
    "dev = pl.device(\"default.qubit\", wires=n_bits + 1)\n",
    "\n",
    "def oracle(keys):\n",
    "    # build the reversible checker for keys[0]\n",
    "    for wire, bit in zip(wires, keys[0]):\n",
    "        if bit == 0:\n",
    "            pl.PauliX(wires=wire)\n",
    "    pl.ctrl(pl.PauliX, control=wires)(wires=flag_wire)\n",
    "    for wire, bit in zip(wires, keys[0]):\n",
    "        if bit == 0:\n",
    "            pl.PauliX(wires=wire)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d7087e9d",
   "metadata": {},
   "source": [
    "Now apply the oracle to a uniform superposition. Prepare the extra qubit in $|-\\rangle$ using $X$ followed by $H$, and use the snapshots to observe the **reflection**: the amplitude of $|01\\rangle$ becomes negative, but its measurement probability does not change."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "00c44e80",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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VL58+QzXAaRnyAv6A6xYsaI3p1pJgxBhKPjwvQYvvtvgxXebWkY9Qk4UUAMAAKsRhgAAgNUIQ8iysLAwGTt2rLlG8OB7DV58t8GL7/bmUEANAACsRs8QAACwGmEIAABYjTAEAACsRhiCV4tW7d27V3bs2CHXr1/P8jnwPxcvXpQff/xRDh06lO45165dk82bN8v+/ftztG24OSdPnpQNGzbIuXPn0j3n6NGjsnXr1gzPgf/Rf2t/+OGHmz4HbnQFaiA9sbGxjjp16jhKlSrliIqKcpQrV86xYcOGGz4H/ufTTz91REREOGrWrGmu27Zt6zh//rzr8YSEBMfLL7/sqFixonn8L3/5S662F97ZuXOn47HHHnOUKVNGN2NyLF++PNU5V69edfTq1csRHh7uqF27trn++9//zo/Yz82bN89x5513OooVK+YICwvL8jlIjZ4hZKhXr15SuXJlOXbsmPz222/SpUsX6datm1y6dOmGzoF/+eWXX6Rfv37y9ttvm9tHjhwx393w4cNd55w6dUry588v0dHR0qJFi1xtL7z3008/ycMPPyy7du1K95zXXntN1qxZIz///LPpQVi2bJmMHj1avv32W37Ufky/r5kzZ5rv72bOQRrSCEiAsWvXLvM/S/denvj4eEeePHkcCxYs8Poc+J8xY8aYHh93M2bMcBQsWNBx+fLlVOfff//99AwFmHPnzqXbM1S1alXH8OHDPY41a9aM7zhA/POf/8y018ebc/D/6BlCurZv326uGzdu7DpWrlw5s0+b8zFvzoH/0e/G/TtTTZo0Mb151AYF/4aeBw8eTPP75+8sbEUYQrrOnj0rBQsWlPDwcI/jJUqUMI95ew78j343+h25c97newtuzu83re+f7x62IgwhXaGhoXLlyhUzU8zdn3/+aWpJvD0H/ke/t8uXL6f6zhTfW/B/9yqt75/vHrYiDCFdt9xyiyQlJcmJEydcx5KTk+X48eMSFRXl9TnwP/q96bRqd877fG/BrWzZsmYfq7S+f7572IowhHTdc8895h9NnWni9N1338kff/wh7dq18/oc+B/9bnQNktOnT7uOLV26VGrXri0VKlTI1bYhe+XNm1fuvfdej7+z2ru7cuVK/s7CWvlyuwHwX5GRkTJmzBh58cUXJSQkRCIiImTUqFFmKv3tt9/u9TnwPz179pQ333xTOnfubL673bt3y4cffiiLFi3yOG/jxo1mCFTDrV7rIn4afu+8885cazsydubMGdm3b59cuHDB3Nep80WLFjWTGnQJDDVhwgTzH5mhQ4fKfffdJx988IH5Xv/2t7/x4/VjugyGLnlx4MAB199HVb9+fSlcuLDX5yA1dq1Hpj755BPzS/Lq1avSvn17ee6551LVFnhzDvyLrjo8depUswJx8eLF5emnn07VM9C6detUK4qXLl1aFi9enMOthbfWrVsnL7/8cpoB+Nlnn3Xdj4mJMetMxcfHmx5B/U+MBib4r3Hjxpn1oVKaNWuW1KlTx+tzkBphCAAAWI2aIQAAYDXCEAAAsBphCAAAWI0wBAAArEYYAgAAViMMAQAAqxGGAACA1QhDAOBGFw7997//bVbd9tbFixfNc5yrPufkewO4eYQhADlON/bVVXJXrVrlscmvczd1DQTnz5+/odfM6vNSSkhIMKs1Hz582Ovn6PYH+hzdoDin3xvAzSMMAchRr7zyilSpUkUmTZokb731ltnnrHfv3nLp0iXzuPaKaCCIi4u7odfN6vMAgI1aAeTovlkagnTzyBYtWphjycnJMn/+fLNzeoECBWTp0qXmuO6ivmfPHilVqpS0adNG/vOf/5hzddf1W265RRo2bCihoaHmXN2QMr3nOXtcNm3aZG43aNBAypQpc0Ptzui9U9q/f7/ZLFM3Ra1Xr16qx2+2LQB8jzAEIMdoSAkPD5fmzZu7juXJk8f06CgNHCtWrDC3v/nmG4mMjJRatWqZUKNhJykpyWwcu2vXLhNGNPhUqlTJhKH0nqcbCOsmtBpMChYsaILI5MmTPTYtzUxG7+3u+eefl9jYWKlataoJfPq+M2bMcD3ui7YAyAYOAMghW7ZscYSEhDgGDhzo2L17tyM5OTnVOceOHXPoP036eHqSkpIcXbt2dfTp0yfD5x08eNBRqFAhx7p161zHYmJiHOHh4Y59+/al+dqnTp0yr7N9+3av3/vQoUPmOW3btnVcvXrV9Vnz5MnjWL9+vddtyey9AWQPeoYA5JgmTZrI559/LuPHj5f3339fChcuLK1atTI9Ku3atcv0+Xv37pWDBw+aWVs6DLZ+/foMz9f3KlGihClwXrBggelBUsWLF5fvv//e9B55y5v3HjJkiGv4TD9r69atzRDbPffc49O2APAtwhCAHNWjRw9zOXr0qGzevFk+/vhjad++vSxfvlw6duyY5nP+/PNP6dSpk2zfvt0UXOswmBZKnzx5MsP30llZOl194cKFHsc1nJQsWdKr9t7Ie2udkDstFP/tt9981hYA2YMwBCBXVKhQQbp27SpdunSRunXrymeffZZuGJozZ46pxdFgERERYY698847Mm7cuAzfo0iRIlKsWDEz5T6rbuS9z507l+q+M+j4oi0AsgdT6wHkmPj4eNM74k6LpvVY0aJFzX1n4NB1g5x0/R4NT87HnMXI7tJ6XocOHWTfvn3y3XffeZybmJhoLt7w5r2dvvjiC9dtXe9Ii7mds+Z80RYA2SNEC4ey6bUBwMOSJUvkhRdekEceeURq164t165dMzU1O3bskB9++EHq1KljztP6GZ1x9eijj5qp59qj0rRpUzPrSnuR9HX0fJ3qfvr0adfrp3yeziYbMGCA6XV67rnnpFq1ambauz5fF3zUYayU9PW0JkiHxXTq+7Zt2zJ9bx0C09cqXbq0mRmn7fjnP/9pQp4+31lHlFlbUr43gJxBzxCAHKMhRYOErtUTExNjptprMDpw4IArCKkvv/zSTE//+uuvTXFxo0aNzLVObd+4caM89NBDsnjxYjPE5i7l89QHH3xg6nS08FnfW0OSTmlPKwipsLAwU9OkAUx5896FChUyz9Gi6vLly0t0dLR07tzZPM99PaLM2pLyvQHkDHqGAACA1egZAgAAViMMAQAAqxGGAACA1QhDAADAaoQhAABgNcIQAACwGmEIAABYjTAEAACsRhgCAABWIwwBAACrEYYAAIDVCEMAAEBs9n++jr6ObgHabwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "@pl.qnode(dev)\n",
    "def circuit(keys):\n",
    "    for i in range(n_bits):\n",
    "        pl.Hadamard(wires=i)\n",
    "    pl.PauliX(wires=flag_wire)\n",
    "    pl.Hadamard(wires=flag_wire)\n",
    "    pl.Snapshot(\"Before oracle\")\n",
    "    oracle(keys)\n",
    "    pl.Snapshot(\"After oracle\")\n",
    "    return pl.state()\n",
    "\n",
    "results = pl.snapshots(circuit)(keys)\n",
    "\n",
    "# The flag stays in |->. Display the data amplitudes using its |0> component.\n",
    "y1 = np.sqrt(2) * np.real(results[\"Before oracle\"][::2])\n",
    "y2 = np.sqrt(2) * np.real(results[\"After oracle\"][::2])\n",
    "bit_strings = [f\"{x:0{n_bits}b}\" for x in range(len(y1))]\n",
    "pos = np.arange(len(y1))\n",
    "plt.bar(pos - 0.2, y1, width=0.4, color=\"#70CEFF\", label=\"Before oracle\")\n",
    "plt.bar(pos + 0.2, y2, width=0.4, color=\"#C756B2\", label=\"After oracle\")\n",
    "plt.xticks(pos, bit_strings)\n",
    "plt.axhline(0, color=\"black\", linewidth=0.8)\n",
    "plt.xlabel(\"State label\")\n",
    "plt.ylabel(\"Probability amplitude\")\n",
    "plt.legend()\n",
    "plt.show()\n",
    "assert np.allclose(y1, [0.5]*4)\n",
    "assert np.allclose(y2, [0.5,-0.5,0.5,0.5])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2b008098",
   "metadata": {},
   "source": [
    "# Exercise 3: Diffusion operator\n",
    "\n",
    "The second reflection in Grover's algorithm is the **diffusion operator**:\n",
    "\n",
    "$$D=2|s\\rangle\\langle s|-I,\\qquad |s\\rangle=H^{\\otimes n}|0^n\\rangle.$$\n",
    "\n",
    "Unlike the oracle's reflection, this one reflects the amplitudes **about their mean**. Together, the two reflections amplify the marked state's amplitude.\n",
    "\n",
    "To implement diffusion, apply $H$ to each data qubit, then $X$ to each data qubit, then a multi-controlled $Z$, and finally undo the $X$ and $H$ gates in reverse order. Use\n",
    "\n",
    "```python\n",
    "pl.ctrl(pl.PauliZ, control=wires[:-1])(wires=wires[-1])\n",
    "```\n",
    "\n",
    "This implementation gives $-D$ rather than $D$, which differs only by an overall global phase. The extra flag qubit is **not** part of diffusion."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "29a6952a",
   "metadata": {},
   "outputs": [],
   "source": [
    "def diffusion_operator(wires):\n",
    "    for wire in wires:\n",
    "        pl.Hadamard(wires=wire)\n",
    "    for wire in wires:\n",
    "        pl.PauliX(wires=wire)\n",
    "    pl.ctrl(pl.PauliZ, control=wires[:-1])(wires=wires[-1])\n",
    "    for wire in wires:\n",
    "        pl.PauliX(wires=wire)\n",
    "    for wire in wires:\n",
    "        pl.Hadamard(wires=wire)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a050822b",
   "metadata": {},
   "source": [
    "# Exercise 4: One Grover iteration\n",
    "\n",
    "A Grover iteration consists of the oracle reflection followed by the diffusion reflection. With two data qubits and one marked key, **one iteration** is enough to reach the marked state with probability $1$.\n",
    "\n",
    "Run the circuit and compare the amplitudes before the oracle, after the oracle, and after diffusion. In particular, check that **the oracle alone does not change the measurement probabilities**."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "fceb5e77",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Uniform superposition: [ 0.35355339+0.j -0.35355339+0.j  0.35355339+0.j -0.35355339+0.j\n",
      "  0.35355339+0.j -0.35355339+0.j  0.35355339+0.j -0.35355339+0.j]\n",
      "State marked by oracle: [ 0.35355339+0.j -0.35355339+0.j -0.35355339+0.j  0.35355339+0.j\n",
      "  0.35355339+0.j -0.35355339+0.j  0.35355339+0.j -0.35355339+0.j]\n",
      "Amplitude after diffusion: [ 9.52420783e-18+0.j -9.52420783e-18+0.j -7.07106781e-01+0.j\n",
      "  7.07106781e-01+0.j -6.49514367e-34+0.j  6.49514367e-34+0.j\n",
      " -1.66988925e-17+0.j  1.66988925e-17+0.j]\n",
      "execution_results: [1.81421069e-34 1.00000000e+00 8.43737825e-67 5.57706021e-34]\n"
     ]
    },
    {
     "data": {
      "image/png": "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AOCr/CYMaUfpIkWKyPbt212Ob926VapXr57stR9++KGMHj3a1Aq1aNHinq+ltU05c+Z02QAAQGDymzCk+vfvLzNnzpTjx4+b/blz58qRI0fkhRdecBlx1r59e8f+Rx99ZEaaaRBq2bJlupQbAAD4Lr/pQK20dkcnWSxXrpxpGrt+/brMnj1bqlSp4tLR+ujRo+b+5cuXZdCgQZIjRw4ZPny42ey0yaxDhw7p8j4AAIDv8KswpMPiNfzohIsXL140cwYlHDqvIUdDktLmrd9++83tcxUtWjRNygwAAHybX4Uhu9y5c5vNHe1X5DzpYsWKFdOwZAAAwN/4VZ8hAAAAbyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAAS0txGLp165Zs2LBB5syZ4zh27tw5b5ULAADAd8PQH3/8IVWqVJFWrVpJnz59HMdfeeUVWbp0qTfLBwAA4HthaPDgwdKgQQOJiYlxOT58+HB55513vFU2AACAVBeckos2btwoR44ckeBg18srVqwou3fv9lbZAAAAfLNmSPsL2QUFBTnunz59WrJnz+6dkgEAAPhqGGrYsKF88sknLmEoLi5Ohg0bJk2bNvVuCQEAAHytmez999+X+vXry3/+8x+x2WzSvn172bJli2k201sAAICArhkqW7as7Nu3T9q2bWuCkBo4cKD8+uuv8vDDD3u7jAAAAL5VM6Ty5csno0aN8m5pAAAAfDUMnTx50uMnLVGiRErLAwAA4Jth6H6av7QfEQAAQED1GTpx4oRj05FkRYsWlU8//VT27NljNr2vx+yjzAAAAAKqZsi56WvGjBny7bffSu3atR3HKleubCZdfOmll8wGAAAQsKPJDh8+bEaUJfTII4+YmanTQnx8fJpcAwAAAluKwpD2H9K5hpz7Bul9PZbaQ+snTJggBQsWlEyZMkmlSpVk7dq1qXINAACwhhQNrZ86dao8/fTTsnDhQqlRo4YJQj///LNZjmP58uWSWqZNmyZvv/22LF68WCIiIuS9996T1q1by/79+5MMYSm5BgAAWEeKaoaaNGkix48flx49epimJw1Del+PNWrUSFLL5MmTpW/fvmbJj9DQUImMjDTzHWng8eY1AADAOlI86aI2O73++uuSVv788085evSoNGjQwHFM10XT/a1bt3rtGgAAYC0pCkP3moAxNSZdPHfunLnNnz+/y/ECBQrIjh07vHaNunnzptnsYmNjXW696Wac+LVU+EgAn8a/2cDFdxt4PP3dTlEYuldfm9ScdDHhiDDd19oeb16jHa7HjRuX6Hh4ePh9lzfQ/Tu9CwDgvvBvNnDx3aZcisKQNj0lDBd67LXXXpNBgwZJaihcuLC5PX/+vMtx3S9UqJDXrlG65trQoUNdkqUGoaioKMmZM+cDvQ9Yx8hfxW91/OB78Wc1P3syvYsAwAfYf79TJQyVLl060TGdd6hIkSLSv39/efHFF8XbcufOLRUqVJB169ZJp06dHCFM93v37u04786dO+Z45syZPb4moZCQELMlpEGIMARPhYT672eVPVM28Wf8OwWQ6qPJklKmTBk5cOCApJYRI0bI7NmzzezX0dHRpvYmLi7OZcbrAQMGSLVq1e7rGgAAYF0pHk2W0PXr12XixIlSvHhxSS3PPfecCTLajKWdo3UCxTVr1kixYsUc5+jEis61Op5cAwAArCvIloLezlmyZEl0TEdf5cqVS7788ktp2bKlBFqbY1hYmMTExFD9Do8N2e2/H1aXd1Jv8tS0ELGgTXoXAYAf/X6nqGbom2++SXRM++dorQtt9QAAwJ+kKAx99tlnbgOR0o7KST0GAAAQEB2otTOyOzpSS9cAAwAACMiaoYsXL7q9bw9CW7ZsSXb+HgAAAL8OQ87LWiRc4kJlzJjRrAoPAAAQkGFo9+7/Gx5TtWpVx33nIe06XF17bQMAAARkGKpSpYq51WUpmKcHAABYKgydPXvW3GqfoODgYMe+O/QbAgAAAReG7Iue6hyN9vvpsWo9AABAuoShvXv3ur0PAABgiTBUsWJFt/cBAAAs1WfIE/QZAgAAAdtnyBP0GQIAAAHdZwgAAMDSfYYAAAAsvWq9unr1qsyfP18OHjxo9itUqCA9evSQ0NBQb5YPAADA91at37Fjh5QsWVIiIyNNGNJt7Nix5tiuXbu8X0oAAABfCkMDBgyQTp06yalTp2TNmjVm0/sdO3Y0jwEAAAR0M5nWBGkACgkJcRzT+2+88YYUL17cm+UDAADwvZqh0qVLy+nTpxMdj46OllKlSnmjXAAAAL4bhgYNGiSdO3eWZcuWyZkzZ0wI0vt6bMiQIRIXF+fYAAAAfFmQLQUzJAYFBVlqAsbY2FgJCwuTmJgYyZkzZ3oXB35iyG7xW13eWS7+LGJBm/QuAgA/+v1OUZ+hrVu3PkjZAAAAfEaKwlBERIT3SwIAAOAvfYYAAAAsHYZ0TqFnnnnGLN6aJUuWRBsAAEBAN5M999xzphP1e++9J7ly5fJ+qQAAAHw5DG3fvl2ioqIkX7583i8RAACArzeTFS1aVK5du+b90gAAAPhDGBo1apT069dPDh06JLdv35Y7d+64bAAAAAEdhh577DHZuXOnlC9fXjJnziyZMmVy2QAAAAK6z1Dfvn3l8ccflxdffJEO1AAAwHph6OjRo7J+/XrJkyeP90sEAADg681kJUuWlMuXL0t60ZFsu3btMmuOeOLu3bty8OBBE+Lo0wQAAB44DGnzWO/evWX37t1y9epVl1XqU3Ol+r/++ks6duwojzzyiPTs2VMKFSokH330UbLXvPXWW2b0m17XvHlzKVGihHz33XepVkYAAGCBZrLBgweb22rVqqXpSvXjxo2THTt2yO+//25mv16yZIm0b99eatWqJbVr13ZbI3Tjxg05cOCAo0kvMjJSunTpYp5DwxQAALA2v1q1fs6cOfLSSy+ZIKTatWsnFStWNMfdhaGMGTPKm2++6XJMr9dQ9csvv0irVq3SrOwAAMA3+c2q9dHR0XLu3DmpXr26y3GtFdLmOk/plACqVKlSSZ5z8+ZNs9l52jcJAABYJAx5i3Zo1oCTnBo1apjFXy9dumT28+bN6/K47tsfu5eLFy/KwIEDpXPnzqbfUVImTJhgao8AAEDgS1EY0j5B8+fPl4ULF5oV7BOO0Nq3b59Hz6PXr1ixItlzFixYYDpA2ydz1E7UzrRPkE78eC8xMTHSsmVL009o5syZ95xhe+jQoS41Q+Hh4fd8DQAAYJEwNGnSJJk8ebL0799fli9fbmpStGOzdmh++eWXPX6e0aNHm80TGkYyZMggp0+fdjmu+8WLF0/2Wg0zOpJM+xCtXLlScuTIkez5ISEhZgMAAIEvRUPrZ8yYYWp1dGSWGjlypCxatEimTJkiJ06ckNSQLVs2qVOnjixbtsxxTBeL/eGHH6RZs2aOY8eOHXPpQ2QPQmr16tUSFhaWKuUDAAD+KciWgnHwwcHBpnlKm66yZs0q58+fN7Ut2hRVrFgxM/dQatiwYYMJPsOGDTPLgegcQxq+9uzZI6GhoeacF154QbZt22aa6nQR2YYNG5qANHv2bJcgVKZMGSlYsKBHr6uBSq/V95czZ85UeW8IPEM879fvc7q8s1z8WcSCNuldBAA+wNPf7xQ1k+n8PfY+PNpEpSO0GjdubPoPpeZCrQ0aNJB169bJv/71L9MsV6lSJZk3b54jCNlDzq1bt8z969evS1BQkDmmTXnOtDardevWqVZWAABgkdFkffr0MZMYNmnSRDZu3CgdOnSQ1FS3bl2zJWXEiBGO+5oGN2/enKrlAQAAFgxDFy5ccAkfOkJLJ2J87bXX7qsDNQAAgF+GoXz58rnsP//882YDAACwxGgyAACAQEEYAgAAlkYYAgAAlpaiMKQrvgMAAFg2DOnK8VWqVJGpU6d6vEgqAABAwIShI0eOyJNPPikTJ06UIkWKmHmGVq1aJfHx8d4vIQAAgK+FIfuMzjrj9LfffmtWrW/Tpo2UKFFCXn/9dTl+/Lj3SwoAAOBrHah1FfinnnrKLInxzjvvyLlz5+TNN9+U0qVLS/v27SUqKsp7JQUAAPC1MKQLor744otSuHBhmTx5srz66qumVkiP6yKp7dq1815JAQAAfGUG6kmTJplV4I8ePSqtWrWS+fPnm1utKVIPP/ywLFy40GUBVQAAgIAJQ9OmTTMLtPbu3dvUCrmTNWtWmTVr1oOWDwAAwPeaySpXriyjR492G4Q6derkuN+rV68HKx0AAIAvhqFFixa5Pa5D6xcvXvygZQIAAPDNZrKLFy+6vW8PQlu2bJFChQp5r3QAAAC+FIby58/v9r6ddqB+7733vFMyAAAAXwtDu3fvNrdVq1Z13LfLlCmTFCtWTMLCwrxbQgAAAF8JQ7oemdLJFDX4AAAAWCYMnT171txqn6Dg4GDHvjv0GwIAAAEXhuzD6G02W5JzC9npOQAAAAEVhvbu3ev2PgAAgCXCUMWKFd3eBwAAsFSfIU/QZwgAAARsnyFP0GcIAAAEdJ8hAAAAS/cZAgAAsPQ8Q/fqP0SfIQAA4C+YZwgAAFga8wwBAABLY54hAABgafe1UKuzq1evyvz58+XgwYNmv0KFCtKjRw8JDQ31ZvkAAABSVYaUXLRjxw4pWbKkREZGmjCk29ixY82xXbt2eb+UAAAAvlQzNGDAAOnUqZNMmTJFQkJCzLGbN2/K4MGDzWOpGYj0dVavXi3nzp2TSpUqSe3atT2+9vfff5fvv/9eqlSpIvXq1Uu1MgIAgAAPQ1oTtGbNGkcQUnr/jTfekOLFi0tqOX/+vDRs2NDcr1y5srz22mvSoUMHmTlzpkchqmPHjnL06FHp168fYQgAAKQ8DJUuXVpOnz4tefPmdTkeHR0tpUqVktQycuRIyZQpk2zbtk2yZs0qe/bskerVq0vbtm2lTZs2yV47dOhQqVOnTqqVDQAABHifobi4OMc2aNAg6dy5syxbtkzOnDljQpDe12NDhgxJlYLGx8fLN998I7169TJBSGlzlwacBQsWJHvt4sWLZe3atTJp0qRUKRsAALBAzVCOHDkSHdMamYT69u0rffr0EW+LiooyI9jKly/vclz3k+ujpNe99NJLsmLFCsmWLZtHr6VNarrZxcbGPkDJAQBAQIShrVu3ev3Ff/zxR8fQ/KT07NlTwsLCTBBSuXLlcnk8d+7cSYaVu3fvSvfu3U1tVbVq1Twu14QJE2TcuHEenw8AACwQhiIiIrz+4trEdujQoWTPuX37trm1N43ZQ5GdBqGkanw+//xz2bt3rzzzzDPy8ccfm2MXL16UX3/91ey/8sorEhQUlOi6UaNGmT5Gzq8RHh6egncIAAACdtJFb9BJGnXzhI5Sy5w5s5w4ccLl+PHjx6VMmTJurylRooR5/iNHjjiOafPX5cuXTQiz2Wxuw5COjHMeKQcAAAJXisKQhgidfXrhwoVy6tQpuXPnjsvj+/btE2/TUWRPPvmkfPHFF2ZovIaY//73v7J+/XqZMWOG47x169bJ2bNnpVu3blK/fn2zOdu8ebMZnq9zJAEAAKRoBmodlaVz/Gg/HG1y0tqXsmXLyoEDBxzzAKWGiRMnmmav1q1by/jx46Vx48ZmNNmzzz7r0jT21ltvpVoZAABAYElRzZDWxGitkM7irB2Ndf4fNXXqVFm1apWklkceecTUOs2bN8/MQD169GgThIKD//9taEDSZUGS0rVr1ySb1QAAgPUE2bTN6z5p+Lhx44ZputKOzToztA69j4mJkWLFiiXq5OzvtAO1jmjT95czZ870Lg78xJDd4re6vLNc/FnEguQnYQVgDbEe/n6nqJlMh6xrELJ3bN65c6e5r/2H7McBAAAsMZpMJ1js0qWLNGnSRDZu3GjWCgMAAAjoMHThwgXH/REjRkihQoXMpIzaqfrll1/2ZvkAAAB8Lwzly5fPZf/55583GwAAgGWaybSTtM41ZF9Oo0KFCmaIfWhoqDfLBwAAkKpS1IF6x44dZvh6ZGSkCUO6jR071hxLbtFUAACAgAhDAwYMkE6dOpnRY2vWrDGb3u/YsaN5DAAAIKCbybQmSAOQ8/pdev+NN94wQ+0BAAACumaodOnScvr06UTHo6OjpVSpUt4oFwAAgG+Fobi4OMc2aNAg6dy5syxbtkzOnDljQpDe12NDhgxJ3RIDAACkRzOZLreRUNu2bRMd69u3r5mIEQAAIKDCkE6qCAAAYNkwFBERkbolAQAA8Le1yXS1+sOHD4sufF+uXDkpUKCA90oGAADgq6PJrl+/bvoGFS5cWOrXry8NGjQw9/WYPgYAABDQYWjYsGGyefNmWbp0qVm09eLFi+b+pk2bZPjw4d4vJQAAQCoJsmkbVwoWav3xxx+lcuXKLsf37NkjzZo1c1nVPhDExsZKWFiYxMTESM6cOdO7OECq29ZluV9/yhEL2qR3EQD40e93imqGdK6h8PDwRMf1mC7gCgAA4C9SFIaqV68ub7/9tsTHxzuO6f233npLatSo4c3yAQAA+N5ossmTJ0vz5s1l0aJFjvCjq9VfunRJVq1a5e0yAgAA+FbNUO3ateXYsWNmpumMGTNKcHCwuX/06FHzGAAAQEDXDP3tb3+Tjz/+WMaMGeP9EgEAAPh6zdCsWbPk5s2b3i8NAACAP4Shxx9/3AytBwAAsGQzWb169aRbt27Sr18/qVChgmTOnNnl8R49enirfAAAAL4XhmbMmCFZs2aV+fPnu32cMAQAAAI6DJ05c8bcBgUFebs8AAAAvttn6MqVK6Z5LEeOHGbT+zrFNQAAgCXC0D/+8Q/ZuHGjjBgxwmwbNmwwxwAAACzRTLZ8+XIz67R9YsWmTZtK165dzZxDAAAAAV8zFB0d7bL2WK1ateT06dOpUS4AAADfC0N37941y2/Y6X09BgAAYJnRZBUrVrznsX379j1YqQAAAHwxDA0bNizRsZYtW0paOnnypMyZM0fOnTsnlSpVkr59+0qWLFmSvcZms5n+TmvXrpVs2bLJc889J+XKlUuzMgMAgAAJQ5MmTZL0pDVOdevWlebNm0tERIRMmzZN5s2bJ5s2bZJMmTK5veb27dvSsWNH2bNnj7z00ksmDPXs2VNmz55twhQAALC2FE26mF50OL922l64cKFjpuuHHnpI5s6da2qI3Jk8ebKZAmD//v1SrFgxc2zAgAFy7dq1NC07AAAIoIVa08OtW7dkzZo10qVLF8exggULSuPGjU0TWFKmT59uaoLsQUiFhIRInjx5Ur3MAADA9/lNzdCpU6dMk1eJEiVcjuu+NpO5o7NjnzhxwsyLNHPmTPn555+lSJEiZubs0qVLJ/laN2/eNJtdbGysF98JAADwJekahjSgbN68Odlz3n33XSlQoIDcuHHD7GfPnt3lcV0WxP5YQlevXjW3kZGRJhDVq1dPtm/fLo8++qisXLlSGjVq5Pa6CRMmyLhx41L4rgAAgD9J1zCkI7qCg5MvQtasWc1tzpw5HeujObt06ZKEhYW5vdZ+/JFHHpEvvvjC3H/55ZdNSBo7dmySYWjUqFEydOhQl5qh8PDw+3pvAADAP6RrGNKaGt08oWFEw412hH7yySddRpi5m/vIXmukHawTPq41Q59//nmSr6V9inQDAACBz286UGfIkMF0ntYh8XFxceaYNnnp1r17d8d5OgfRmDFjHPvaeXrVqlWOPkDa70ibyGrWrJkO7wIAAPgavwlD9r48OsGizg/09NNPS7NmzWTgwIHSokULxzlbtmyRJUuWuDR5aZ+j8uXLS+fOnc2tBiMdcg8AABBk0+mZ/cidO3dk48aNjhmoEzaB/fTTT3LhwgVp27at45i+xW3btskff/whxYsXN52pnddYuxftM6RNdDo6zd53CQhk27okPV2FP4hY0Ca9iwDAB3j6++03Q+vttMO1zi2UlDp16iQ6FhQUJI8//rjZAAAA/LaZDAAAwNsIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNIIQwAAwNL8LgytXLlSnnrqKalRo4b07t1bTp48mez5t27dkilTpkjz5s2lZs2a0rFjR1m1alWalRcAAPi2DP4WhNq0aSNPPPGEvP/++3LlyhWpV6+euU3KkCFDZOLEidKvXz/55JNPpEqVKtKqVStZvXp1mpYdAAD4Jr8KQ2PHjpWuXbvKyJEjpUGDBvLVV1/JtWvXZNq0aUles2LFCnnxxRflmWeeMTVDr7/+ujz66KMmWAEAAPhNGIqLi5OdO3eaWh27kJAQadq0qaxbty7J6+rWrSubNm2SGzdumP3Dhw/LiRMnTI0SAACA34Sh06dPi81mk8KFC7sc1/2oqKgkr5s1a5YULFjQbKVLl5bq1aubPkQdOnRI8pqbN29KbGysywYAAAJTcHq++JgxY2TJkiXJnvP9999LeHi43Llzx+xnzpzZ5XGtHbp9+3aS10+YMEE2btwo06dPl1KlSpm+QkOHDpXy5ctLnTp1krxm3LhxKXpPAADAvwTZtLolHWt7Ll++nOw5ZcuWNQHo7NmzphZo2bJlphO1XZ8+feTgwYOydevWRNdqjU6ePHlM7dDzzz/vON6uXTvTbJbUqDKtGdLN+Xk0kMXExEjOnDlT+G4B/7Gty3LxZxEL/v+/EQCsKzY2VsLCwu75+52uNUNFixY1mycKFSokRYoUke3bt7uEIQ1BTZo0cXuNBp67d+9Kvnz5XI7nz59f9u3bl+RraW2TbgAAIPD5TZ8h1b9/f5k5c6YcP37c7M+dO1eOHDkiL7zwgsuIs/bt25v72k+oQoUK8tFHH5lRZ+rQoUOyaNEiady4cTq9CwAA4EvStWbofo0ePdpMsliuXDlT23P9+nWZPXu2mTvIuent6NGjjv2vv/7aNKVpMCpQoIB5vHv37maIPQAAQLr2GUop7Wd08eJFKV68eKLmrOjoaBOSdOSYM52Y8c8//5RixYrddxOYp22OQKCgzxCAQOAXfYZSKnfu3GZzR/sVuZMrVy6zAQAA+H0Y8kXx8fFmHTTgQWTKlEkyZszIhwgAaYgw5AUagnRWaw1EwIPSGkwdPRkUFMSHCQBpgDD0gLTL1ZkzZ8z/zetcRBky+NUAPfjY35L2dzt//rzZTzjbOgAgdRCGHpDOjK0/YNpXKVu2bN75VmBZWbNmNbcaiHT0I01mAJD6qMZ4QDqpo7tlQoCUsofq5JaZAQB4D2HIS+jfAf6WAMA/EYaQrKtXr8qkSZOkX79+MmXKlID/tHQhX11AGABgHYQhi9OJKHv16iUffvih28d79+4tS5culdq1a0ulSpVk5cqV8s9//lMC1YEDB2TJkiXpXQwAQBqiA3UqGbJb0tQHVVN23bx588xabQsXLjTBJ+EMnevXr5cZM2ZIhw4dzL7WEi1btkzGjx/vjWIDAJDuCEMWN2vWLImMjJSPP/5YvvzyS7MYrtI13P7xj3+YpU8++eQTE4AiIiJkwYIFcurUKVObpJ5//nlp1KiRWQj3s88+k3379plRULpYrvOaccuXL5c9e/aY4/PnzzejpXRdOXfOnTtnyqXr0OnyKRrSdNqCez3X9u3b5d///rc5J3v27GaRXr024Sg/LauGwF9//dU8v65dl9ww9nu9NwCAf6OZzMK2bdtmFrXVQPPCCy/IzJkzHY9pmGjYsKGZN0mbx/R+2bJlpVSpUhIaGmr2ddMpBS5cuCBVq1aVVatWyaOPPmpGQWlA0tomOw0ekydPlo4dO0qePHmkfv36bssUFRUljz32mGzcuFEqVqwoP//8s9k/fPjwPZ9Lg4q9XLqYr75+zZo1XWYG16ClZf3000/Ne/nrr7+kefPmpm+UO568NwCAf6NmyMK09kUDRd68eU3tyNixY+W3334z4UNnQdbanwEDBkiTJk2kdevW5ppffvlFDh065KgZUlqbpEFh8eLFjmNlypSRIUOGyDPPPOM4FhcXJ7t27TIhJClahocfflhWrFhhgtjf//53adq0qYwePVq+/fbbZJ9Lr9PNTsv+yCOPmODy7LPPmmP6PDoNggZBXfpCDR48OMnFe7UztSfvDQDgvwhDFqVNP9rkpc1fSpd/aNOmjakdmjp16n0913/+8x8pXry4qV3SWZR1u3Tpkmlqu3jxouTLl8+cp8EluSCkNmzYIK+88orLTN5du3aVkSNHupyX1HNpU9l3331nZgXXCTG1VkjDm933339vwo89CCkNgw/63gAA/oswZFEahOx9YXRTZ8+eNWHkvffeS7KmJKkRaS1atJB69eq5HG/Xrp1kyZLFsa+1TfeizVIJw4kGDg0gGm6Cg4OTfC7tLzRixAgTXKpVq2b6CmlNlnMTmPaB0uY0b783AID/IgxZlNYA9ezZ0/SvsdP72kylo8u6devm8eSS2gnZ3qz2oLQWRjtOO9NFcIsWLeoIQkmZNm2ajBs3zjRh2enot4RlPXbsmMfl8eZ7AwD4JjpQW5DOpbN161YzWkx/5J03HULv3JE6Ie2wrLU0zp577jnTIVmf106bp7755pv7Lpv2w5kzZ47jNWJjY2X69OnSqVOne16rQU1rfux0vqD9+/e7nNOjRw8zVcAff/zhOLZ582ZTS+aON98bAMA3UTNk0Y7TOuxcOwInpM0/OgGj1sY4d0a2a9asmQwaNMh0atZaEx2JNmrUKPn999+lRo0aZmSX9sfZu3evGdbuSYhxNnz4cFm3bp0ZSfb444/Lzp07TX8mTyZ61H5FGui0Y7WuGaejzhK+Ry2rBiTtJK5l1bClIUonk3THm+8NAOCbgmzaIxTJ0h/MsLAwiYmJSTQpoQ7NtgcHf+lDop2mtV9O3bp1Ez2mIULn7qlTp44JEjofjw4l1+Dj3K/np59+kitXrpi5h3TEltLQoEPhdei9hgfnvjk6Sk2HzT/11FP3LJ/+SWrNlX2eIe2v49yhOrnnOn78uAlDOjXAE088YcJUjhw5pFatWi7n6ZxBummznL4H+/NrDZBON9C2bVuX85N7b97mC39T27osF38WsaBNehcBgI//fjsjDD3gh+kLP1wILL7wN0UYAmClMESfIQAAYGmEIQAAYGmEIQAAYGmEIQAAYGmEIQAAYGmEIQAAYGmEIQAAYGmEIQAAYGmEIdyTztT87bffyqZNm9Ll09JZpf/zn/849o8cOZJo+Yz4+HizxtjXX38thw8fNsd0hmw976uvvnJZuT6l3L0uAMD/EYYs7vbt2yYsbNu2ze3jb7zxhjRu3Fi+/PJLs0SGBo1Vq1alaRnXrl1r1kOzW7FihVnDzFmLFi2kX79+JrTpchr//e9/zXIi7777rlmw1RthyN3rAgD8Hwu1BshyBildi2np0qXSrVs3KVq0qFnJPWPGjC6P6wrv77//vvTs2dPsT5o0yaxdpuEjvehaaE8++aRLzdEPP/wgp06dkvDwcHNs6tSpUqRIEROkUut1AQCBgTBkcTNnzpT+/fubmh9tArIvfqrruHz//fdy7tw500ymtUe6aOqePXtM85Puq5o1a0qpUqUci5nqubqIadWqVV3W1dIFUKOjo83iqVrDdP78eencubPbMulisVu2bJEbN25I5cqVEz2ur6crzSutBVqwYIG5r8EnJCTE3F+/fr2j1itXrlzSsmVL2b17t8TFxZky2GmZDx065LLoq75nPTdr1qxmUVZd9DXh6zr75ZdfHIvK6ufhfI79fTdo0MB8drrIbbVq1aRQoUL3+U0BAFILYcjCtCZFa1Q0wOgPuAYjeyjQZiVtXtJgouFFa410lfv9+/eboKSPqXz58kmJEiXkxRdflGXLlknt2rXNj78ujqe1To8++qg5b9GiRTJr1iyzUF7evHlNYHIXhq5duybNmzc3IUVDw6+//irly5dP1FylZdWAowuabtiwwRxfvny5BAf/35+0NuddvHjRlFNri/Tc//mf/5Fjx465hKE1a9aY2i77+543b568/PLL5n3oZ6Kf0WeffSaPP/64y+sqDWvt2rUzYUhDkAao0qVLm/5N9gUB7e87d+7ckidPHnONvicta6NGjVLlewUAWCAM2Ww2uXnzpmTOnFkyZPC825N2sr2f8wPdnDlzpE6dOlKuXDlTO6Q/6ForUrBgQVPLobUqGiZee+01ad26tblGP3dtJrPXDKn33ntPdu7caQKMPQS8+uqr0rdvX5e+SFp7snjxYhMgkqJNcmfOnDE1KhoeNFhVqVIlydWGNTjpYxrqNLSEhoaa42PGjDEdqp3L6Ynx48ebfkYvvfSS2dfPQ9+XO5MnTzbl1DCpn9mlS5ekVq1a8uabb5rnsNMg+emnn0rTpk3NvvZtioyMJAwBgI/wq2SgTQzvvPOOlCxZ0jRhbNy40aPrJkyYYH6sMmXKJJUqVfJqPxJ/pcFQw5DW6CgNHLpp7cn90ufR5qzVq1fLwoULzYguDTI7duwwNT12WkOTXBBSeq2GKL1eab8fe3+ltKB/VwcPHpRbt26Zff270cDojgatPn36mHOUlllDVMIAprVF9iCkGjZs6BjxBgBIf34Vhv7973/L5cuX7+sHe9q0afL222/L559/bpp3OnToYGo5tHnFyrQmJSoqSu7cuWN+vHUrW7asadK5X1rjo81P33zzjRnNpU1D2hSkzWDaLGRXuHDhez6XNktps5uzhx9+WNKKdhjXkJ0/f37TdKbNYvoZuaM1PhrMnWm/Ih3J5nyNPdjZab+mv/76K5XeAQAgoJvJ/vnPf5pb/bHxlDZlaE2D/f/MtXlCazI0JE2cOFGsSn/kH3vssUTz5mizlM4n5Nyv5l60mapNmzYyevToZM9z1/k4Ie1PpIHXWcL9lNImUq0Rc5YwlERERJiOzvo3pjVd+veifYI++eSTRM+n/aW0acyZ7mv/IHvfJQCA7/OrmqH79eeff5rRRjqSx/kHWfe1U7BVacdi7dz80UcfOWqF7NvTTz9tglJStE9OwgChHYo1YGp/ImenT5++77LVq1fP0Tnb3j9M+xl5g04fkLD/z7p169yWWftMaROY9u9Jag4mLavWgjnT2jE9DgDwH+n6v6869FlHKyVHmxQ8qVFwRzu/Km3ycKYjmbQ/S1L0R935h11HRgUSHTGlw83d9YXRPj29evUyQcldp2Udaq4BUztNax8g7XStfbK0Jkk7D/fu3dv0zdKh8fq5fffdd/dVttdff928hjaxaW2ejlDT5rywsDB5UM8884x5fi2jBhbtO6ah2Pl96mvWr1/flEHL/69//ctlwseEna2rV69uPjNtUvvxxx9Np+2kwhMAwDelaxjSIcz6w5wcHa2TsF/G/UrYNKL7yQUs/XEfN26cBCrtO6VNWu5G1umkglo7pEPodTi5hhKtUbHTkKD9gnQWam0+0qYiDRDatDR37lzZtWuXqT3SgNCpUyfHdTrEPmHNkTvab0mD6vTp083zd+zYUYYMGWKGoic1+aGWoUuXLiaE2WkToI42dFa8eHHz3LNnz5aff/7ZBBgNfs5LfejweP2b1NFx2plaz23VqpXb19W+Tdo3SvsZadOi/p3q5+D89+rufWuI1Pfly1I6iScA+KMgm7ZD+Bntz6E/KNrEoSNzkqJ9TbTzqo5wcv5hfvbZZ01ziE7M52nNkL6ehoiEtSXaZKSdsbWTr/Mkg0BK8TcFAN6hv9/asuDu9zug+wzpKB77sGjtyFqhQgWXfiFaK6T7OoFgck1z+qE5bwAAIDD5VRjS/kX6f832WhsNPbrvPIx5wIABZuZiuxEjRpimDm3a0ZFSQ4cONUsy2CfVAwAA1uZXYeiLL74wHX+1H4bW3mjfFt3XiRjttN+IfX0q9dxzz5lZjUeNGmWWddA+LboEg44WAgAA8Ms+Q77U5kj/Dngbf1MA4B2W7TMEAABwPwhDXkIFG/hbAgD/RBh6QBkzZjS39hFswIO6fv26uXWeNwkAkHpYQOlBP8DgYMmWLZtcuHDB/Hi5m8gQ8LR2UYPQ+fPnzcAAe9AGAKQuwtAD0pmsdTV2nXhRVzEHHpQGoUKFCvFBAkAaIQx5gS77UKZMGZrK8MC0dpEaIQBIW4QhL9HmMZbjAADA/9DBBQAAWBphCAAAWBrNZPcxh5DOZAkAAPyD/Xf7XnMBEoY8cPXqVXMbHh7uje8GAACk8e+4LsuRFNYm80B8fLxZ8T5HjhxmKD3+P3FrQIyKikp2zRf4F77XwMV3G7j4bt3TGiENQkWKFEl2HkBqhjygHyCr3CdNgxBhKPDwvQYuvtvAxXebWHI1QnZ0oAYAAJZGGAIAAJZGGEKKhYSEyNixY80tAgffa+Diuw1cfLcPhg7UAADA0qgZAgAAlkYYAgAAlkYYAgAAlkYYgkeTVh04cED27Nkjd+7cSfE58D3Xrl2Tn3/+WU6cOJHkObdv35Zt27bJkSNH0rRseDDnz5+XzZs3y+XLl5M85/Tp07Jr165kz4Hv0f/W/vTTTw98DpzYgGQcPXrUVqFCBVv+/PltxYsXtxUuXNi2efPm+z4Hvmfu3Lm20NBQW9myZc1t06ZNbTExMY7HY2NjbWPGjLEVK1bMPP7ss8+ma3nhmV9//dXWtWtXW8GCBXUxJtvy5csTnXPr1i1b9+7dbVmyZLGVL1/e3L7zzjt8xD7u888/t9WsWdOWO3duW0hISIrPQWLUDCFZ3bt3lxIlSsiZM2fkjz/+kA4dOkinTp3k+vXr93UOfMvhw4elT58+MnXqVHP/1KlT5rsbPny445wLFy5I5syZZceOHVK3bt10LS88t3//fnn66aflt99+S/Kcd999V3744Qc5dOiQqUFYtmyZjBo1StauXctH7cP0+/roo4/M9/cg58ANNwEJMH777Tfzf5bOtTzR0dG2DBky2BYuXOjxOfA9o0ePNjU+zqZMmWLLli2b7a+//kp0fosWLagZ8jOXL19OsmaoZMmStuHDh7sci4iI4Dv2E59++uk9a308OQf/j5ohJGn37t3mtnr16o5jhQsXNuu02R/z5Bz4Hv1unL8zVatWLVObR9+gwF/Q8/jx426/f/7NwqoIQ0jSpUuXJFu2bJIlSxaX43nz5jWPeXoOfI9+N/odObPv870FNvv36+7757uHVRGGkKRMmTLJzZs3zUgxZzdu3DB9STw9B75Hv7e//vor0Xem+N4C/7tX7r5/vntYFWEISXrooYfk7t27cu7cOcex+Ph4OXv2rBQvXtzjc+B79HvTYdXO7Pt8b4GtUKFCZh0rd98/3z2sijCEJD3xxBPmP5o60sRuw4YNcuXKFWnWrJnH58D36Hejc5BcvHjRcWzp0qVSvnx5KVq0aLqWDakrY8aM0qhRI5d/s1q7u3LlSv7NwrKC07sA8F1hYWEyevRoefXVVyUoKEhCQ0Nl5MiRZij9Y4895vE58D3dunWTDz74QNq2bWu+u71798qsWbPk22+/dTlvy5YtpglUw63e6iR+Gn5r1qyZbmVH8v788085ePCgxMXFmX0dOp8rVy4zqEGnwFDjx483/yMzZMgQady4sUyfPt18r3/729/4eH2YToOhU14cO3bM8e9RVa5cWXLkyOHxOUiMVetxT5999pn5kbx165Y0b95cBg4cmKhvgSfnwLforMMTJ040MxDnyZNH+vXrl6hmoGHDholmFC9QoIAsWrQojUsLT61fv17GjBnjNgC/8sorjv2dO3eaeaaio6NNjaD+T4wGJviuyMhIMz9UQjNmzJAKFSp4fA4SIwwBAABLo88QAACwNMIQAACwNMIQAACwNMIQAACwNMIQAACwNMIQAACwNMIQAACwNMIQADjRiUO/+uorM+u2p65du2ausc/6nJavDeDBEYYApDld2FdnyV29erXLIr/21dQ1EMTExNzXc6b0uoRiY2PNbM0nT570+Bpd/kCv0QWK0/q1ATw4whCANPX666/Lww8/LG+++aZ8+OGHZp2zHj16yPXr183jWiuigSAqKuq+njel1wEAC7UCSNN1szQE6eKRdevWNcfi4+NlwYIFZuX0rFmzytKlS81xXUV93759kj9/fmnSpIl8/fXX5lxddf2hhx6SqlWrSqZMmcy5uiBlUtfZa1y2bt1q7lepUkUKFix4X+VO7rUTOnLkiFksUxdFrVSpUqLHH7QsALyPMAQgzWhIyZIli9SpU8dxLEOGDKZGR2ng+P777839H3/8UcLCwqRcuXIm1GjYuXv3rlk49rfffjNhRINPeHi4CUNJXacLCOsitBpMsmXLZoLIW2+95bJo6b0k99rO/v73v8vRo0elZMmSJvDp606ZMsXxuDfKAiAV2AAgjWzfvt0WFBRkGzBggG3v3r22+Pj4ROecOXPGpv9p0seTcvfuXVvHjh1tvXr1Sva648eP27Jnz25bv36949jOnTttWbJksR08eNDtc1+4cME8z+7duz1+7RMnTphrmjZtart165bjvWbIkMG2ceNGj8tyr9cGkDqoGQKQZmrVqiVffvmljBs3TqZNmyY5cuSQBg0amBqVZs2a3fP6AwcOyPHjx82oLW0G27hxY7Ln62vlzZvXdHBeuHChqUFSefLkkU2bNpnaI0958tqDBw92NJ/pe23YsKFpYnviiSe8WhYA3kUYApCmunTpYrbTp0/Ltm3bZM6cOdK8eXNZvny5tG7d2u01N27ckDZt2sju3btNh2ttBtOO0ufPn0/2tXRUlg5X/+abb1yOazjJly+fR+W9n9fWfkLOtKP4H3/84bWyAEgdhCEA6aJo0aLSsWNH6dChg1SsWFG++OKLJMPQvHnzTF8cDRahoaHm2McffyyRkZHJvkbOnDkld+7cZsh9St3Pa1++fDnRvj3oeKMsAFIHQ+sBpJno6GhTO+JMO03rsVy5cpl9e+DQeYPsdP4eDU/2x+ydkZ25u65ly5Zy8OBB2bBhg8u5V69eNZsnPHltuyVLljju63xH2pnbPmrOG2UBkDqCtONQKj03ALhYvHixDBs2TNq1ayfly5eX27dvmz41e/bskZ9++kkqVKhgztP+Mzriqn379mboudao1K5d24y60lokfR49X4e6X7x40fH8Ca/T0WT9+/c3tU4DBw6UUqVKmWHver1O+KjNWAnp82mfIG0W06Hvv/zyyz1fW5vA9LkKFChgRsZpOT799FMT8vR6ez+ie5Ul4WsDSBvUDAFIMxpSNEjoXD07d+40Q+01GB07dswRhNR3331nhqevWLHCdC6uVq2audWh7Vu2bJGnnnpKFi1aZJrYnCW8Tk2fPt3009GOz/raGpJ0SLu7IKRCQkJMnyYNYMqT186ePbu5RjtVFylSRHbs2CFt27Y11znPR3SvsiR8bQBpg5ohAABgadQMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAASyMMAQAAsbL/BVIkyud5KI1QAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Success probability: 0.9999999999999989\n"
     ]
    }
   ],
   "source": [
    "@pl.qnode(dev)\n",
    "def circuit():\n",
    "    for i in range(n_bits):\n",
    "        pl.Hadamard(wires=i)\n",
    "    pl.PauliX(wires=flag_wire)\n",
    "    pl.Hadamard(wires=flag_wire)\n",
    "    pl.Snapshot(\"Uniform superposition\")\n",
    "    oracle(keys)\n",
    "    pl.Snapshot(\"State marked by oracle\")\n",
    "    diffusion_operator(wires)\n",
    "    pl.Snapshot(\"Amplitude after diffusion\")\n",
    "    return pl.probs(wires=wires)\n",
    "\n",
    "results = pl.snapshots(circuit)()\n",
    "# inspect the results; plot the amplitudes after the oracle and after diffusion\n",
    "for k, result in results.items():\n",
    "    print(f\"{k}: {result}\")\n",
    "\n",
    "y1 = np.sqrt(2) * np.real(results[\"State marked by oracle\"][::2])\n",
    "y2 = np.sqrt(2) * np.real(results[\"Amplitude after diffusion\"][::2])\n",
    "bit_strings = [f\"{x:0{n_bits}b}\" for x in range(len(y1))]\n",
    "pos = np.arange(len(y1))\n",
    "plt.bar(pos - 0.2, y1, width=0.4, color=\"#70CEFF\", label=\"After oracle\")\n",
    "plt.bar(pos + 0.2, y2, width=0.4, color=\"#C756B2\", label=\"After diffusion\")\n",
    "plt.xticks(pos, bit_strings)\n",
    "plt.axhline(0, color=\"black\", linewidth=0.8)\n",
    "plt.xlabel(\"State label\")\n",
    "plt.ylabel(\"Probability amplitude\")\n",
    "plt.legend()\n",
    "plt.show()\n",
    "print(\"Success probability:\", results[\"execution_results\"][1])\n",
    "assert np.isclose(results[\"execution_results\"][1], 1.0)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e9a3e5b3",
   "metadata": {},
   "source": [
    "# Exercise 5: Grover's algorithm\n",
    "\n",
    "Now use **four data qubits** and search for the single marked key $0101$. Build Grover's algorithm from the oracle and diffusion functions above.\n",
    "\n",
    "For $N=2^n$ possible inputs and $M=1$ marked key, let $\\theta=\\arcsin\\sqrt{M/N}$. A suitable number of iterations is\n",
    "\n",
    "$$r_{\\mathrm{opt}}\\approx\\operatorname{round}\\left(\\frac{\\pi}{4\\theta}-\\frac12\\right).$$\n",
    "\n",
    "**Step 5a.** Set up the new circuit and calculate how many iterations to use."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "3de9e0fb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Suggested Grover iterations: 3\n"
     ]
    }
   ],
   "source": [
    "n_bits = 4\n",
    "wires = list(range(n_bits))\n",
    "flag_wire = n_bits\n",
    "dev = pl.device(\"default.qubit\", wires=n_bits + 1)\n",
    "keys = [[0,1,0,1]]\n",
    "N = 2**n_bits\n",
    "M = 1\n",
    "theta = np.arcsin(np.sqrt(M / N))\n",
    "r_opt = int(np.round(np.pi / (4 * theta) - 0.5))\n",
    "print(\"Suggested Grover iterations:\", r_opt)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9b4d4285",
   "metadata": {},
   "source": [
    "**Step 5b.** Complete the circuit: prepare a uniform superposition on the data qubits and $|-\\rangle$ on the extra qubit, then repeat the oracle and diffusion operations `iterations` times. Measure only the data qubits."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "0e81f0f6",
   "metadata": {},
   "outputs": [],
   "source": [
    "@pl.qnode(dev)\n",
    "def circuit(iterations):\n",
    "    for i in range(n_bits):\n",
    "        pl.Hadamard(wires=i)\n",
    "    pl.PauliX(wires=flag_wire)\n",
    "    pl.Hadamard(wires=flag_wire)\n",
    "    for _ in range(iterations):\n",
    "        oracle(keys)\n",
    "        diffusion_operator(wires)\n",
    "    return pl.probs(wires=wires)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3091315b",
   "metadata": {},
   "source": [
    "**Inspect the result.** Try one and two iterations, then the suggested number $r_{\\mathrm{opt}}$. Plot the final distribution and check whether the most likely outcome is the marked key. You do **not** need to plot a success-probability curve over many iterations."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "3ac712e5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "After 1 iteration(s): P(0101) = 0.4727\n",
      "After 2 iteration(s): P(0101) = 0.9084\n",
      "After 3 iteration(s): P(0101) = 0.9613\n"
     ]
    },
    {
     "data": {
      "image/png": "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tMnNwg4ePNiaNm1q1apVs1tuucXatGljjz76aNTbGjBggG3dujXtZ+XKlbl8bwAAAFCggtlKlSpZSkqKTZ8+PcN2zbiq3FYkmrHVT4kSJTJs198HDx6MeltKRyhbtmyGHwAAAIRfvqYZ3HHHHTZmzBhXiWDv3r0uHUALu7p165Z2nt69e9s555zjfq9YsaKdffbZ7nyrVq1yge20adNs0qRJdtlll+XjPQEAAECBWgAmvXr1cmkGl156qe3YscOOO+44e+edd6x27dpp59m5c2eGBVtvvPGG9enTx+rWresC4PLly1vfvn1dIwUAAAAULElerNVWAdEQdu/ebSVLljzktF27dtn+/futTJkyh5ymCgVKIcguBcdaCKb8WVIOgPj1jd2gL08MaxT8bQIA8l+88Vq+zsz6kpKSIgayEm275CSQBQAAwOEj30tzAQAAADlFMAsAAIDQIpgFAABAaBHMAgAAILQIZgEAABBaBLMAAAAILYJZAAAAhBbBLAAAAEKLYBYAAAChRTALAACA0CKYBQAAQGgRzAIAACC0CGYBAAAQWgSzAAAACC2CWQAAAIQWwSwAAABCi2AWAAAAoUUwCwAAgNAimAUAAEBoEcwCAAAgtAhmAQAAEFoEswAAAAgtglkAAACEFsEsAAAAQotgFgAAAKFFMAsAAIDQIpgFAABAaBHMAgAAILQIZgEAABBaBLMAAAAILYJZAAAAhBbBLAAAAEKLYBYAAAChRTALAACAghXMfv755+Z5Xu6PBgAAAMjrYLZFixZWs2ZNGzx4sK1YsSInVwEAAADkTzC7cuVK69atm7366qt2/PHH2yWXXGKvv/667dmz5++PCAAAAMjLYLZq1arWv39/+/nnny01NdWOOeYY69Kli1WrVs169epl8+bNy8nVAgAAAMEuAGvSpIk9+uijdt9999lff/1lI0eOtEaNGtmFF15ov/zyy9+9egAAACD3g9mDBw/aRx99ZNdee62bkR0/frwNGTLEVq9e7WZsNXt79dVX5/TqAQAAgCwVsRwYOHCgvfTSS7Zp0yYXsH722WfWtGnTtNMrV65s48aNs5IlS+bk6gEAAIC8C2YnT55sAwYMsBtuuMGSk5Mjnqd48eL21ltvZXldf/75p73xxhu2bt06a9CggV111VVWqFDWE8bffPONffHFF1aqVCm75ppr3EwwAAAA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qYOXZlRFAeOUKVPc71OnTnUd2U488UQXlCpYPXDggO3fv9/mz5/vgkkFruoCpmA22uX++9//WteuXV1gWapUKRdIDhkyxHr27Bn3uGPddnq9e/e2X3/91VJSUlzArtt98skn007PjbEAQK7Jpza6ABBa6k2flJTkde/e3VuwYIF38ODBQ86zZs0aT2+xOj2aAwcOeO3atfNuueWWmJdbtmyZV7p0aW/atGlp22bPnu2VKFHCW7RoUcTr3rBhg7ueuXPnxn3bv/32m7tMs2bNvL1796bd10KFCnmpqalxjyWr2waA3MTMLABk05lnnmmvvfaaDRo0yEaOHGllypSx888/381oNm/ePMvL//TTT7Zs2TJXNUBpBKmpqTHPr9uqWLGiW6A1adIkN4MrFSpUsOnTp7vZ23jFc9t9+vRJSz/Qfb3gggtcikLTpk1zdSwAkBsIZgEgB6677jr388cff9isWbNs3Lhx1qJFC3v//fft8ssvj3iZXbt22RVXXGFz5851C8aURqCFXuvXr495W6oKoHJXb775ZobtCi4rVaoU13izc9vKk01PC92WL1+ea2MBgNxEMAsAf8PRRx9t7dq1s7Zt21r9+vXt1VdfjRrMvvzyyy4XVYHhEUcc4bY988wz9o9//CPmbZQtW9bKly/vSnblVHZue/PmzYf87QequTEWAMhNlOYCgGxavXq1m51MT4u+tK1cuXLubz9gVN1Yn+q3Kvj1T/MXU6UX6XItW7a0RYsW2ZdffpnhvNu3b3c/8Yjntn3vvPNO2u+qd6vFaH7VhtwYCwDkpiQlzubqNQLAYe7tt9+2u+66y6688kqrW7eu7du3z+WUzps3z2bOnGn16tVz51P+qFb8X3XVVa50lWY0zzrrLLfqX7O4uh6dX6WyNm7cmHb9mS+nagbdunVzs769evWymjVrurJZurwaNigNIDNdn3JilVag0lnff/99lretFAJdV5UqVVxlBo1j9OjRLkjX5f082qzGkvm2ASAvMTMLANmkIFOBoGq1zp4925XqUmC7ZMmStEBWPvjgA1feavLkyW5x1Kmnnur+V2msr776yi677DJ76623XIpCepkvJ6NGjXJ5qlq4pdtWkKuSWJECWSlevLjL6VUALfHcdunSpd1ltCisWrVq9u2331qbNm3c5dLXo81qLJlvGwDyEjOzAAAACC1mZgEAABBaBLMAAAAILYJZAAAAhBbBLAAAAEKLYBYAAAChRTALAACA0CKYBQAAQGgRzAIAACC0CGYBAAAQWgSzAAAACC2CWQAAAIQWwSwAAAAsrP4fz+0WexEgxvoAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 800x350 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Most likely outcome: 0101\n"
     ]
    },
    {
     "data": {
      "image/png": "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IxV9zFomX6XlqquuypuBt/cWIhdddFE+f2RvmwG15I477ohp06a16Wu9jVHHk6/SYj4H9UdZyFdpMZ/Dtqk/0iJfpcV8DuqPspCv0mI+h21Tf6RFvkqL+bwy/uu//qvF/W984xvRr1+/dj/e/vvv32rbiBEj8njtiv322y++/vWv5++cvMlvf/vb+O53v7tLj0sNNgRvSTMwuypbUTp7u+odNapoVqHa3XjjjXHYYYfFu+++W5HHy86Zm266qSKPxd/IV2nZXiPwzsQMqlH2IiovpEqHfJUW8zn8jfojffJVWsznsG3qj7TIV2kxn8PfqD/SJ1+lxXwO26b+SIt8lRbz+a7bsGFDzJ07t8W2448/vt2P9+ijj2713Vpnz54dlZCN7b0NwdnYs33Y3qKctI8l6ADYaR/+8IfjyiuvrNiRyx7rQx/6kEgAAADqDwAAoDCufwAAUAbPPfdcrF69usW2f/iHf2jXYzU3N8dRRx3Vavv06dMrtijmlmNbtWpVPP/88xV5bFrSEAxAu1xyySVx3nnn7fLRO//88/PHAgAAUH8AAABFc/0DAIDU/c///E+L+42NjdGnT592PdaECRO2un306NFRKX379o3Bgwdvdx+oDA3BALT7LRymTp0aV199dbteEZR9T/a9N9xwQ/5YAAAA6g8AAKBorn8AAJC6P/3pTy3uH3LIIe16nBUrVuS9P1tatGhRVNqWY9xyH6gMDcEA7NIfxS699NKYO3dufOpTn2rz92VfO2/evPx7NQMDAADqDwAAICWufwAAkLI1a9a0uP++972vXY+z//77t9o2YsSIfMXhSttyjFvuA5VRX6HHAaCGffjDH47HHnssfv/738eMGTPiySefzD9fv359/v8NDQ351xxxxBFx1llnxUc+8pGihwwAAJSU+gMAAFB/AABQyy666KL46le/mjfVZrf+/fvv9GM8+uijsXbt2lbbZ8+eHR3hggsuiK985Sux++6757cDDjigQ56n1mkIBqBiskbf66+/Pv/8rbfeir322iv/fNmyZe1+NRIAAID6AwAAKJLrHwAApGTAgAH5rb2am5vjqKOOarV9+vTp0a1bt+gIH/3oR/MbHatLBz8+ADWqvr5+q58DAACoPwAAgLJy/QMAgLKbMGHCVrePHj2608dCZWkIBgAAAAAAAAAAAKhyK1asiKlTp7bavmjR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",
      "text/plain": [
       "<Figure size 2800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "bit_strings = [f\"{x:0{n_bits}b}\" for x in range(2**n_bits)]\n",
    "marked_index = int(\"\".join(map(str, keys[0])), 2)\n",
    "\n",
    "for iterations in [1, 2, r_opt]:\n",
    "    results = circuit(iterations)\n",
    "    print(f\"After {iterations} iteration(s): P(0101) = {results[marked_index]:.4f}\")\n",
    "\n",
    "results = circuit(r_opt)\n",
    "plt.figure(figsize=(8, 3.5))\n",
    "plt.bar(bit_strings, results, color=\"#70CEFF\")\n",
    "plt.xticks(rotation=\"vertical\")\n",
    "plt.xlabel(\"State label\")\n",
    "plt.ylabel(\"Probability\")\n",
    "plt.title(f\"Grover after {r_opt} iterations\")\n",
    "plt.show()\n",
    "print(\"Most likely outcome:\", bit_strings[int(np.argmax(results))])\n",
    "# draw the final circuit\n",
    "pl.drawer.use_style(\"black_white\")\n",
    "pl.draw_mpl(circuit)(r_opt);\n",
    "assert bit_strings[int(np.argmax(results))] == \"0101\"\n",
    "assert np.isclose(results[marked_index], 0.9613189697265625)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "pennylane (3.14.7)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.14.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
