{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "56e33e85",
   "metadata": {},
   "source": [
    "# Maxcut with Qiskit"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "089f28be",
   "metadata": {},
   "source": [
    "<div>\n",
    "<img src=\"maxcut_to_ising.png\" width=\"900\"/>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0f5edb50",
   "metadata": {},
   "source": [
    "### Construct the graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "aad91617",
   "metadata": {},
   "outputs": [],
   "source": [
    "import networkx as nx\n",
    "\n",
    "graph = nx.Graph()\n",
    "graph.add_weighted_edges_from([\n",
    "    (0, 1, 1), (1, 2, 3), (2, 3, 2),\n",
    "    (3, 4, 1), (4, 0, 3), (1, 4, 4)\n",
    "])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2ffc94e1",
   "metadata": {},
   "source": [
    "### Get the Hamiltonian"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "ee2e8af9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.5 * IIIZZ\n",
      "+ 1.5 * IIZZI\n",
      "+ 1.0 * IZZII\n",
      "+ 1.5 * ZIIIZ\n",
      "+ 2.0 * ZIIZI\n",
      "+ 0.5 * ZZIII\n"
     ]
    }
   ],
   "source": [
    "from qiskit_optimization.applications import Maxcut\n",
    "\n",
    "maxcut = Maxcut(graph)\n",
    "quadratic_program = maxcut.to_quadratic_program()\n",
    "hamiltonian, offst = quadratic_program.to_ising()\n",
    "print(hamiltonian)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c0b31498",
   "metadata": {},
   "source": [
    "### Choose the ansatz"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "1d40e5c2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 568.197x264.88 with 1 Axes>"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from qiskit.circuit.library import RealAmplitudes\n",
    "\n",
    "ansatz = RealAmplitudes(num_qubits=4, reps=2)\n",
    "ansatz.decompose().draw(\"mpl\", style=\"iqx\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b65056a7",
   "metadata": {},
   "source": [
    "### Setup VQE\n",
    "\n",
    "We need to set the `Estimator` to evaluate expectation values and a classical optimizer. Here we choose `COBYLA`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "d699e194",
   "metadata": {},
   "outputs": [],
   "source": [
    "from qiskit.primitives import Estimator\n",
    "from qiskit.algorithms.optimizers import COBYLA\n",
    "from qiskit.algorithms.minimum_eigensolvers import VQE\n",
    "\n",
    "estimator = Estimator()\n",
    "optimizer = COBYLA()\n",
    "\n",
    "vqe = VQE(estimator, ansatz, optimizer)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4b108328",
   "metadata": {},
   "source": [
    "Now we can run the VQE!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "2421d41d",
   "metadata": {},
   "outputs": [],
   "source": [
    "result = vqe.compute_minimum_eigenvalue(hamiltonian)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bb6f369d",
   "metadata": {},
   "source": [
    "And we're interested in the final state, so we use the `Sampler` to sample from the final distribution."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "adce60ed",
   "metadata": {},
   "outputs": [],
   "source": [
    "from qiskit.primitives import Sampler\n",
    "\n",
    "optimal_state = ansatz.bind_parameters(result.optimal_parameters)\n",
    "optimal_state.measure_all()\n",
    "\n",
    "sampler = Sampler(options={\"shots\": 1024})\n",
    "distribution = sampler.run([optimal_state]).result().quasi_dists[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8a5dff2e",
   "metadata": {},
   "source": [
    "Plotting it tells us, which state is the most likely solution."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "f9d1d0c2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "State, Probability\n",
      "('10100', 0.9990234375)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdsAAAFTCAYAAABxmaaBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAAA2H0lEQVR4nO3de7xVdZ3/8deHc4AgwEEM5GZAIAroQTyKFIJljKblZM5Ujl28D2maWTNa03RP7eboz0sqXUzLyzjqaCXq5AREIXQgUcAAAwyOAooYoAhx+Pz++K4ji80+5+y1zl7r7LN5Px+P9WDvtb7f9fl+9zrsz1637zJ3R0RERLLTpaMbICIiUu2UbEVERDKmZCsiIpIxJVsREZGMKdmKiIhkTMlWREQkY7Ud3YCOdNBBB/mwYcM6uhkiIlJBFi5c+LK7v62c69yvk+2wYcNoaGjo6GaIiEgFMbPny71OHUYWERHJmJKtiHRKjz76KKNHj2bkyJFcc801+yzfvHkzp59+OkceeSTHHnssS5YseXPZ9ddfz7hx4xg7dizXXXfdm/MXL17MpEmTOOKII/jABz7Ali1b8uiK7AeUbEWk02lqauLiiy9m5syZLFu2jLvvvptly5btVeaqq65i/PjxPP3009xxxx185jOfAWDJkiXMmDGDBQsWsHjxYn75y1+ycuVKAM4//3yuueYannnmGU4//XS++93v5t43qU5KtiLS6SxYsICRI0cyYsQIunXrxkc/+lEeeuihvcosW7aME088EYDDDjuMNWvWsGHDBp599lmOO+44evbsSW1tLVOnTuXBBx8EYPny5UyZMgWAadOmcf/99+fbMalaSrYi0uk0NjYydOjQN98PGTKExsbGvcrU1dXxwAMPACE5P//886xbt45x48YxZ84cNm3axOuvv84jjzzC2rVrARg3bhwPP/wwAPfdd9+b80XaS8lWRDqdYk8rM7O93l955ZVs3ryZ8ePHc8MNN3DUUUdRW1vL4YcfzhVXXMG0adM4+eSTqauro7Y23Jjx4x//mJtuuomjjz6arVu30q1bt1z6I9Vvv771R0Q6pyFDhuy117lu3ToGDRq0V5k+ffrwk5/8BAjJefjw4QwfPhyA8847j/POOw+AL37xiwwZMgQIh5sff/xxAFasWMGvfvWrzPsi+wft2YpIp3PMMcewcuVKVq9ezc6dO7nnnns47bTT9irz6quvsnPnTgB++MMfMmXKFPr06QPAxo0bAfjLX/7CAw88wJlnnrnX/N27d/PNb36T6dOn59UlqXLasxWRTqe2tpYbb7yRk046iaamJs4991zGjh3LLbfcAsD06dN59tln+cQnPkFNTQ1jxozhRz/60Zv1zzjjDDZt2kTXrl256aab6Nu3LwB33303N910EwAf+tCHOOecc/LvnFQlK3buY39RX1/vGkFKRETizGyhu9eXc506jCwiIpIxJVsREZGMKdmKiIhkTMlWREQkY0q2IiIiGVOyFRERyZiSrYiISMaUbEVERDKWa7I1sylm9rCZNZqZm9nZJdQ5wsxmm9n2qN6XrWDEcTObamYLzewNM1tlZhpjTUREKkbee7a9gCXAZ4DtbRU2sz7A/wIbgGOAS4F/BS6PlRkOPAL8HjgKuBq4wczOKHfjRURE0sh1bGR3f4SQGDGz20uochbQE/iku28HlpjZ4cDlZnath7EmpwMvuPslUZ1nzWwi8HlAT34WEZEOV+nnbCcBv40SbbPHgEHAsFiZxwvqPQbUm1nXzFsoIiLShkp/6s/BwLqCeRtiy1ZH//66SJla4CDgxfgCM7sQuBBg0KBBzJo1C4ARI0bQu3dvFi9eDEC/fv0YO3Ysc+bMAcJTRiZPnsyiRYvYsmULAPX19WzYsOHN52qOGjWK7t27s2TJEgD69+/PoYceyty5cwHo3r07kyZNoqGhgW3btgEwceJE1q1bR2NjIwCjR4+mpqaGZcuWhU4efDDDhw9n3rx5APTo0YOJEycyf/58tm8Pv0EmTZrE6tWrWb9+PQBjxoyhqamJ5cuXAzB48GCGDBnC/PnzAejVqxf19fXMmzePHTt2ADB58mRWrFjx5iPGxo0bx44dO1i5ciUAQ4cOZcCAATQ/uKFPnz5MmDCBuXPnsmvXLgCmTJnC0qVL2bRpEwB1dXVs3bqVVatWATBs2DAOPPBAFi1aBEDfvn2pq6tj9uzZuDtmxtSpU1m8eDGbN28GYMKECbzyyiusWbNG20nbKfF2+vlTJ1DMWeNnaTtV0HaqtP9PWeiwp/6Y2Tbg0+5+eytlHgfWuvt5sXlvB9YAk9z9STNbAdzp7t+IlZkKzAIGuvv6ltavp/6IVLcLris+f8ZlebZCOpv98ak/6wl7rnH9o383tFFmF7Apu6aJiIiUptKT7TzgeDN7S2zeNOAFwt5tc5n3FtSbBjS4+98yb6GIiEgb8r7PtpeZjTez8VHsQ6L3h0TLrzazJ2JV7gJeB243s3Fm9iHgSqD5SmSAW4AhZnadmR1uZucDZwPfy6lbIiIircp7z7Ye+GM09QC+Fr3+erR8IPCO5sLu/lfCXuogoAG4Cfg+cG2szGrgFGAK8BTw78Cl7q7bfkREpCLkfZ/tLMBaWX52kXnPEBJpa+udDUxoZ/NEREQyUennbEVERDo9JVsREZGMKdmKiIhkTMlWREQkY0q2IiIiGVOyFRERyZiSrYiISMaUbEVERDKmZCsiIpIxJVsREZGMKdmKiIhkTMlWREQkY0q2IiIiGVOyFRERyZiSrYiISMaUbEVERDKmZCsiIpIxJVsREZGMKdmKiIhkTMlWREQkY0q2IiIiGVOyFRERyZiSrYiISMaUbEVERDKmZCsiIpIxJVsREZGMKdmKiIhkTMlWREQkY0q2IiIiGVOyFRERyZiSrYiISMaUbEVERDKmZCsiIpIxJVsREZGMKdmKiIhkTMlWREQkY0q2IiIiGVOyFRERyZiSrYiISMaUbEVERDKmZCsiIpIxJVsREZGMKdmKiIhkTMlWREQkY0q2IiIiGVOyFRERyZiSrYiISMZKTrZm9kEzq8myMSIiItUoyZ7tz4FGM/u2mY3OqkEiIiLVJkmyPRj4CjAVWGZmc83sHDN7azZNExERqQ4lJ1t33+rut7r7ccARwHzgauBFM5thZsdl1UgREZHOLNUFUu6+DPhP4DagG/AR4LdmNt/MjmytrpldZGarzewNM1toZse3UvarZuYtTP2jMie0sPywNH0TEREpt0TJ1sy6mtmHzexRYDXwHmA6MAB4O7ACuLeV+h8BrgeuAo4Cfg/MNLNDWqjyPWBgwTQbmOXuGwvKji0otzJJ30RERLJSW2pBM7sBOBNw4E7g8mgPt9l2M/t3YE0rq7kcuN3dZ0TvLzGzk4FPAV8oLOzu24BtsTYMBY4HPl5k3Rvd/eVS+yMiIpKXJHu2Y4BPA4PdvTDRNnsBeHexymbWDTgaeLxg0ePAO0tsw3nAq8D9RZY1mNmLZvaEmRVtg4iISEcoec8W+Brwe3ffFZ9pZrXAO919TrRsdgv1DwJqgA0F8zcA720ruJl1Ac4F7nD3HbFFLxL2jP9AOH/8ceAJMzvB3ecUWc+FwIUAgwYNYtasWQCMGDGC3r17s3jxYgD69evH2LFjmTMnrKK2tpbJkyezaNEitmzZAkB9fT0bNmxg7dq1AIwaNYru3buzZMkSAPr378+hhx7K3LlzAejevTuTJk2ioaGBbdvCDvvEiRNZt24djY2NAIwePZqamhqWLQu/ZQ4++GCGDx/OvHnzAOjRowcTJ05k/vz5bN++HYBJkyaxevVq1q9fD8CYMWNoampi+fLlAAwePJghQ4Ywf/58AHr16kV9fT3z5s1jx47wUU6ePJkVK1awcWM4Oj9u3Dh27NjBypXhaPzQoUMZMGAADQ0NAPTp04cJEyYwd+5cdu0KfxJTpkxh6dKlbNq0CYC6ujq2bt3KqlWrABg2bBgHHnggixYtAqBv377U1dUxe/Zs3B0zY+rUqSxevJjNmzcDMGHCBF555RXWrFmj7aTtlHg7wQkU0/z/XtupMrZTpf1/yoK5e2kFzZqAgYXnSs2sH+EQbqsDXpjZIKARmOLuv43N/wpwpru3ekGTmZ0K/BIY5+5L2yj7CLDL3U9rrVx9fb03/7GLSPW54Lri82dclmcrpLMxs4XuXl/OdSY5jGyE87WF+gGvlVD/ZaCJcL9uXH/23dst5kLCnnWriTYyHxhVQjkREZHMtXkY2cwejl468DMzi+9j1wDjCFcVt8rdd5rZQmAacF9s0TSKn4ONt2EQcCpwfltxIuMJh5dFREQ6XCnnbDdF/xqwGdgeW7YTmAvMKKzUgmuBO81sAfA7wm1Dg4BbAMzsauBYdz+xoN65hL3n/ypcoZldRrgCeinhnO3HgA8CZ5TYJhERkUy1mWzd/RwAM1sDfM/dSzlk3NK67o3O8X6JcC/sEuAUd38+KjIQeEe8jpkZ4Srkn7v760VW241wP+5gwg+BpcCp7v5I2naKiIiUU8lXI7v718oR0N1vBm5uYdnZReY5MLyV9X0H+E452iYiIpKFVpOtmT0NTHX3zWb2DMUvkALA3VsdplFERGR/1dae7f1A8wVR/51xW0RERKpSq8k2fui4XIeRRURE9jepnvojIiIipWvrnG2r52njdM5WRESkuLbO2eo8rYiISDuVfM5WRERE0tE5WxERkYzpPlsREZGM6T5bERGRjOk+WxERkYyVPDZyMzN7B3B49PZZd/9zeZskIiJSXUpOttHTen4EnAbs3jPbfgmc6+6bWqwsIiKyH0tyNfIPgZHA8cBbomkK4Yk8pT7PVkREZL+T5DDyScCJ7j4vNu93ZvYvwK/L2ywREZHqkWTP9iWg2IPjXwd0CFlERKQFSZLt14HrzGxw84zo9fejZSIiIlJE0gcRDAfWmFlj9H4w8AbQn3BOV0RERAroQQQiIiIZ04MIREREMqYHEYiIiGSs5GRrZt3M7GtmtsLM3jCzpviUZSNFREQ6syR7tt8APkm4+ng38K/ATYTbfi4qf9NERESqQ5Jk+2FgurvfCjQBD7n7pcBXgGlZNE5ERKQaJEm2A4Bl0ettwN9Frx8F/r6MbRIREakqSZLtX4BB0evnCMM3AkwCtpezUSIiItUkSbJ9EDgxen098DUzWw3cjga0EBERaVHJDyJw9y/EXv+3ma0D3gmscPdfZtE4ERGRapD44fHN3P1J4MkytkVERKQqJRrUwswmmNkdZtYQTXea2YSsGiciIlINkgxqcRbwB2Ag8Eg0DQAWmNnHsmmeiIhI55fkMPK3gP9w96viM83sC8A3gZ+Vs2EiIiLVIslh5LcB/1Vk/n2ER+yJiIhIEUmS7W+AE4rMPwGYXY7GiIiIVKO2Hh7/odjbmcDVZlbPnquQjwM+BHw1k9aJiIhUgTQPj78wmuJuAG4uS4tERESqTFsPj9fzbkVERNpJyVRERCRjSQe1ONXM5pjZy2b2kpnNNrNTsmqciIhINUgyqMX5hIcR/Bm4ArgSWA08aGbnZtM8ERGRzi/JoBZXAJe7+42xeT8ys4WExPvjsrZMRESkSiQ5jHwI4UHxhWYCby9Pc0RERKpP0ofHTysy/++B58vTHBERkeqT5DDy94Aboqf8/B5wYDLwceCSDNomIiJSFZI8PP5WM9sIfI4wahTAs8CH3f2hLBonIiJSDUpKtmbWlfDUn5vcfXK2TRIREakuJZ2zdfe/ARcBlm1zREREqk+SC6QeA96TVUNERESqVZILpJ4ArjKzI4GFwGvxhe7+QDkbJiIiUi2SJNvmwSwuLbLMgZr2N0dERKT6JLkaWQ8tEBERSSH3BGpmF5nZajN7w8wWmtnxrZQdZmZeZDq5oNzUaF1vmNkqM5uefU9ERERKk/SpPx+MPfXnZTP7rZmdnqD+R4DrgauAowiDY8w0s0PaqHoyMDA2/V9sncOBR6J1HQVcTRh844wEXRMREclMkqf+fA64F1gO/Fs0/Qm4y8w+X+JqLgdud/cZ7v6su18CvAh8qo16m9x9fWzaGVs2HXjB3S+J1jkD+ClQaptEREQylWTP9vPAp939Anf/cTRdQLhg6nNtVTazbsDRwOMFix4H3tlG9QfMbKOZ/c7M/rFg2aQi63wMqI8G4xAREelQSa5G7gX8psj830TL2nIQ4YrlDQXzNwDvbaHONkKS/x2wCzgNuNfMPunuP4vKHAz8usg6a6OYL8YXmNmFwIUAgwYNYtasWQCMGDGC3r17s3jxYgD69evH2LFjmTNnDgC1tbVMnjyZRYsWsWXLFgDq6+vZsGEDa9euBWDUqFF0796dJUuWANC/f38OPfRQ5s6dC0D37t2ZNGkSDQ0NbNu2DYCJEyeybt06GhsbARg9ejQ1NTUsW7YsdO7ggxk+fDjz5s0DoEePHkycOJH58+ezfft2ACZNmsTq1atZv349AGPGjKGpqYnly5cDMHjwYIYMGcL8+fMB6NWrF/X19cybN48dO3YAMHnyZFasWMHGjRsBGDduHDt27GDlypUADB06lAEDBtDQ0ABAnz59mDBhAnPnzmXXrl0ATJkyhaVLl7Jp0yYA6urq2Lp1K6tWrQJg2LBhHHjggSxatAiAvn37UldXx+zZs3F3zIypU6eyePFiNm/eDMCECRN45ZVXWLNmjbaTtlPi7QQnUEzz/3ttp8rYTpX2/ykL5u6lFTS7E1jq7tcUzL8CONLdz2qj/iCgEZji7r+Nzf8KcKa7H1ZiO24GJrv7kdH7FcCd7v6NWJmpwCxgoLuvb2ld9fX13vzHLiLV54Lris+fcVmerZDOxswWunt9OdeZZM/2OeBKM3s3MC+ad1w0XWtmlzcXdPdri9R/GWgi7InG9Wffvd3WzAfOib1f38I6dwGbEqxXREQkE0mS7dnAZuDQaGq2mb2TnwP7JFt332lmCwnPxL0vtmgacH+Cdoxn70PD84APFpSZBjREYzqLiIh0qCSDWgwvQ7xrgTvNbAHhPOx0YBBwC4CZXQ0c6+4nRu8/CfwN+COwG/gAcDFwRWydtwCfNrPrgFuBdxF+GJxZhvaKiIi0W5I92zeZ2bsIe46JziS7+71m1g/4EuF+2SXAKe7+fFRkIPCOgmpfAt5OOAS9Ajg3dnEU7r7azE4B/pNwC9ELwKXunmRvWUREJDOpki0wk3A4d1XSiu5+M3BzC8vOLnj/U8I9s22tczYwIWlbRERE8pB2uEY911ZERKREeriAiIhIxtIm238h2e06IiIi+61U52zd/a5yN0RERKRatZpszexh4GPuviV63SJ3P62sLRMREakSbe3ZbiIMUtH8WkRERBJqNdm6+znFXouIiEjpUl+NbGY9zOy9Zvb2cjZIRESk2iR5ePztZnZR9LobsIDwHNnlZva+jNonIiLS6SXZsz0JeDJ6fRrQm/C0na9Gk4iIiBSRJNn2BTZGr08G7nf3jcA9wJhyN0xERKRaJEm264FxZlZD2Mv9dTS/F+HJPCIiIlJEkkEtfgzcS3iqThPwRDR/IvCnMrdLRESkaiR5nu3XzWwpcAhwn7vvjBbtAr6dReNERESqQaLhGos9IzZ6DJ6IiIi0IFGyNbNa4FjC3m23+DJ3v6OM7RIREakaJSdbMzsM+AUwnPA826ao/t+AHYCSrYiISBFJrka+DlgIHAC8DhwO1ANPAWeUu2EiIiLVIslh5GOAqe7+mpntBmrdfZGZ/RtwA3BkJi0UERHp5JLs2RphjxbgJWBw9HodMLKcjRIREakmSfZslwB1wCrCuMhXmFkTcAHwXAZtExERqQpJku23gLdGr78E/BL4DfAy8OEyt0tERKRqJBnU4rHY61XAGDM7ENjs7t5yTRERkf1bovtsC7n7K+VqiIiISLVKcp/tw60td/fT2t8cERGR6pNkz3ZTwfuuhAumhgIPlK1FIiIiVSbJOdtzis03s+8DW8vWIhERkSqT5D7bltwKXFSG9YiIiFSlciTb0WVYh4iISNVKcoHU/yucBQwE3kd4sLyIiIgUkeQCqSMK3u8mDNv4WZRsRUREWpTkAql3m9kBwChgJ7Da3XVhlIiISBtKOmdrZoeY2S8It//MB/4IvGxmd5tZ/1i57tk0U0REpPNqc8/WzAYDTxIOG38ZWEY4XzuGcBXyk2Z2FDAlmvftzForIiLSCZVyGPkrwGrgve6+PTb/QTP7T+Bx4GFgIvCx8jdRRESkcysl2Z4CnFWQaAFw99fN7EvA/wGXuvt/l7uBIiIinV0p52zfBvy5leXPAU3ufmN5miQiIlJdSkm2G4GRrSwfBawvT3NERESqTynJdibwzWJXGpvZW4BvAI+Uu2EiIiLVopRztl8FGoDnzOxG4E+AA2MJVyPXAB/OqoEiIiKdXZvJ1t1fMLN3AjcDVxFu+4GQcB8FLnb3F7JrooiISOdW0ghS7r4GOMXM+hLO0QKsdPfNWTVMRESkWiQZG5kouS7IqC0iIiJVqRyP2BMREZFWKNmKiIhkTMlWREQkY0q2IiIiGVOyFRERyZiSrYiISMaUbEVERDKmZCsiIpKx3JOtmV1kZqvN7A0zW2hmx7dS9gQze8jMXjSz183saTM7t0gZLzIdln1vRERE2pZrsjWzjwDXE8ZYPgr4PTDTzA5poco7gWeAfwTGAT8AbjOzfy5SdiwwMDatLG/rRURE0kk0XGMZXA7c7u4zoveXmNnJwKeALxQWdverCmb9wMzeDZwB3FWwbKO7v1zuBouIiLRXbsnWzLoBRwPfK1j0OGEPtlR9gHVF5jdEz9xdBnzT3X/TQjsuBC4EGDRoELNmzQJgxIgR9O7dm8WLFwPQr18/xo4dy5w5cwCora1l8uTJLFq0iC1btgBQX1/Phg0bWLt2LQCjRo2ie/fuLFmyBID+/ftz6KGHMnfuXAC6d+/OpEmTaGhoYNu2bQBMnDiRdevW0djYCMDo0aOpqalh2bJlABx88MEMHz6cefPmAdCjRw8mTpzI/Pnz2b59OwCTJk1i9erVrF+/HoAxY8bQ1NTE8uXLARg8eDBDhgxh/vz5APTq1Yv6+nrmzZvHjh07AJg8eTIrVqxg48aNAIwbN44dO3awcmU4QDB06FAGDBhAQ0ND2Ah9+jBhwgTmzp3Lrl27AJgyZQpLly5l06ZNANTV1bF161ZWrVoFwLBhwzjwwANZtGgRAH379qWuro7Zs2fj7pgZU6dOZfHixWzeHJ5xMWHCBF555RXWrFmj7aTtlHg7wQkU0/z/XtupMrZTpf1/yoK5eyYr3ieQ2SCgEZjq7nNi878MnOXuo0tYx/uBB4F3ufuCaN5o4N3AH4BuwMeB6cAJ8TjF1NfXe/Mfu4hUnwuuKz5/xmV5tkI6GzNb6O715Vxn3oeRITwHN86KzNuHmb2LcOj40uZEC+Duy4HlsaLzzGwY8Hmg1WQrIiKShzwvkHoZaAIOLpjfH9jQWkUzmwzMBL7s7j8oIdZ89jx3V0REpEPllmzdfSewEJhWsGga4arkosxsCiHRfs3drysx3HjgxeStFBERKb+8DyNfC9xpZguA3xHOrQ4CbgEws6uBY939xOj9CcCvgJuBn5tZ815xk7u/FJW5DFgDLCWcs/0Y8EHCFcsiIiIdLtdk6+73mlk/4EuEe2GXAKe4+/NRkYHAO2JVzgZ6Es6/fj42/3lgWPS6G+EK58HAdkLSPdXdH8mmFyIiIsnkfoGUu99M2FMttuzsIu/PLlY2VuY7wHfK0zoREZHy09jIIiIiGVOyFRERyZiSrYiISMaUbEVERDKmZCsiIpIxJVsREZGMKdmKiIhkTMlWREQkY0q2IiIiGVOyFRERyZiSrYiISMaUbEVERDKmZCsiIpIxJVsREZGMKdmKiIhkTMlWREQkY0q2IiIiGVOyFRERyZiSrYiISMaUbEVERDKmZCsiIpIxJVsREZGMKdmKiIhkTMlWREQkY0q2IiIiGVOyFRERyZiSrYiISMaUbEVERDKmZCsiIpIxJVsREZGMKdmKiIhkTMlWREQkY0q2IiIiGVOyFRERyZiSrYiISMaUbEVERDKmZCsiIpIxJVsREZGMKdmKiIhkTMlWREQkY0q2IiIiGVOyFRERyZiSrYiISMaUbEVERDKmZCsiIpIxJVsRkU7m0UcfZfTo0YwcOZJrrrlmn+XuzqWXXsrIkSM58sgjWbRoUZt177vvPsaOHUuXLl1oaGjIpR/7EyVbEZFOpKmpiYsvvpiZM2eybNky7r77bpYtW7ZXmZkzZ7Jy5UpWrlzJbbfdxqc+9ak2644bN44HHniAKVOm5N6n/YGSrYhIJ7JgwQJGjhzJiBEj6NatGx/96Ed56KGH9irz0EMP8YlPfAIz47jjjuPVV1/lxRdfbLXu4YcfzujRozuiS/sFJVsRkU6ksbGRoUOHvvl+yJAhNDY2llSmlLqSDSVbEZFOxN33mWdmJZUppa5kI/dka2YXmdlqM3vDzBaa2fFtlD/CzGab2XYzazSzL1vBX4eZTY3W9YaZrTKz6dn2QkSkYwwZMoS1a9e++X7dunUMGjSopDKl1JVs5JpszewjwPXAVcBRwO+BmWZ2SAvl+wD/C2wAjgEuBf4VuDxWZjjwSLSuo4CrgRvM7IzseiIi0jGOOeYYVq5cyerVq9m5cyf33HMPp5122l5lTjvtNO644w7cnSeffJIDDjiAgQMHllRXslGbc7zLgdvdfUb0/hIzOxn4FPCFIuXPAnoCn3T37cASMzscuNzMrvVwTGQ68IK7XxLVedbMJgKfB+7PsjMiInmrra3lxhtv5KSTTqKpqYlzzz2XsWPHcssttwAwffp0TjnlFB555BFGjhxJz549+clPftJqXYAHH3yQSy65hJdeeolTTz2V8ePH89hjj3VYP6uNFTuGn0kgs27A68CZ7n5fbP5NwDh3n1qkzh1AP3c/NTbvGGABMMLdV5vZHOAZd784VuafgLuAnu7+t5baVF9f77qfTKR6XXBd8fkzLsuzFdLZmNlCd68v5zrz3LM9CKghHBKO2wC8t4U6BwPripRvXrY6+vfXRcrURjFfjC8wswuBC6O3O8xsSYntb3YQ8HLGdaolRpo61RIjTZ1qiZGmTq4xfvjZzGKkqVMtMdLUqdQYZb8HKu/DyACFu9JWZF5b5Qvnl1ImzHC/DbgNwMwakv56yaNOtcSo1Hap7+p7JdWplhiV2q60MZKUL0WeF0i9DDQR9kTj+rPv3m6z9S2UJ1anpTK7gE2pWioiIlJGuSVbd98JLASmFSyaRriSuJh5wPFm9paC8i8Aa2JlCg9DTwMaWjtfKyIikpe877O9FjjbzM43s8PN7HpgEHALgJldbWZPxMrfRbio6nYzG2dmHwKuBJqvRCaqO8TMrovWeT5wNvC9EtpzW4o+5FGnWmKkqVMtMdLUqZYYaepUS4w0daolRpo61RKjTbldjfxmQLOLgH8DBgJLgM+6+5xo2e3ACe4+LFb+COAm4FhgMyG5fj2WbDGzqcB/AmMJe73fdvdb8uiPiIhIW3JPtiIiIvsbjY0sIiKSMSVbERGRjCnZRgofbtCZ4yhGZcXIK05efRGR5HTOVkRK1pzQPcMvDsWorBh5xamWGC3G3p+TbfTBDwROB3YCK4BGwoMNXjcza2mjmFkNYZvtzipOtcRIEqdaYrQnTqXFEJH229+T7cXAxUA34K2EkaeeBx4EZrj7n4rUGeHuqwrm1QC7W/mCThSnWmKkiVMtMdLEqdQYUZnuwLuA90TrX0kYm/wFd/9bPKkXvG5z3ZUaI22caomRNE61xGhPnFa5+347Aa8CFwGHRu8PAb4K/AXYDlxGGD/aCuosJTyTd2zB+iyaRgHd0saplhhp4lRLjErdJmliRMvuAjYSnri1kTAc6tOEQWZ6F/m/dXiRdde08f+x4mKkiVMtMSp1m1Tqdm9rSlWpGibgVMKQj7XR+5qC5V+Ilh8Rm3ca4ctqRrTRGoHfEh5qPyBWbhtwUpo41RIjTZxqiVGp2yRNjOj9J4DngOOBt0bzxhIGm/krIbG/N1b+n4DdwFzCADZDC9rVBehV8BlXXIw0caolRqVuk0rd7qVMHZ70OmoCJhPOb02JzesKvCV63Z/wRfSd2PJvAfcRHr90BHA+8FNgGbCWcOju+8DraeNUS4w0caolRqVukzQxonr/Bdwce18Te90X+G/g8eb50fsnCUn9acJjMh8hfOn1jMqcAuyq5Bhp4lRLjErdJpW63UvKOaUWrLaJ8KU0F/gz4eKSfQ4PAD8Dbou9/0fguoKN8jbCL6bPRhtoN3BL2jjVEiNNnGqJUanbJE2MqMyVwHyga2xeN6B79HoK4RzYyUAP4P+Az0XrPg64hJDknyOcJ7udsGd9X6XGiN4njlMtMSpxm1Tydi8p55RasBon4EDgbuBPwKPAvwOTCIcHPkN4LOA7W6hbW/DegImEL6tji8S5C3g2SRz2PSzYVozEfcmjH0n6ksc2yaMflb5NEvajDtgSrf/4IuvqDrwC1AO9CV9SFxaUGUx4GteXgN9EcY6OLR+fQ4yS+xG9TxwnST/aESPzflTiNsmjH+35vNqa2p2wOuMEdIm9HgCcB9xD+PWzgfDc3T8BX4iVq21hXTXsufjkY8D6YrGiDTWd8OX7e8JzeIvF6VIkRvxCnb1iJO1LXv1I2pe8tknW/ajkbZK0HwXljgOeIDw85H7Cl9ERwNHAncCKYust7BshqX+VcBVoYYyJwK+BZxLGKPbDoaUYifqRpi9J+5GmL3n0o1K3SR79SNuX1qb99tYfMxtGODnexd03RZeGH044hr8DeNndVxSps4Vwi8Vmd99WsPxk4CB3/1n0vhZo8tiHbGZ9gDGEQxU7gE3uvryl8kXa/b4oxp1p+5J1P9L2Jettklc/0vSlUv+2CpaPAv6BcK54KHAYYa/gYeAH7v6/xe7rje4F7uLuTdH7x4Gl7v7ZWJku7r7bzMYB7yc85WsI4UKWfWLAvgMTFNyusU+MJP0oXF+pfUnSj9j6UvUly35U4jbJox/t3Sat2e+SrZlNJlwY8n7CobZnCCfCHweecPfXS6izOKozB5jj7i+1EbOGsJeyy0sbqKAGoPkPqFx9ybsfpfYl722SVT/S9KVS/7Zi5QcSDqu9Buxw95fNrDcwkvALfyfwnLu/EZUfFPXjDcIVm+ubl0XLu0b9fcDdN0Tzat19V0HctwEjgL9FMf7s7ttbKl9QtytwAXB/LEaifqTpS9J+pOlLHv1oqV0dvU3y6EfavpTEE+wGV8NEuPLyIeAM4N2E5+AuJhzeuxcY0vzjpYQ66wmH7gZ7wWENwvmBLxL2FOLxuxGdqAcOiL1uqXwtew4X9iG60jRNX/LoR5q+5LFN8uhHpW6TNP2I5l0ELCR8uW0lXNl8DQXnvWJ9iZffAswi3M87jehilDb+b9ZScH9vG+VrKOG+x6T9aG9fkvaj1L7k3Y9K2iZ59yNJX0peX7lW1BkmwlVnG4t9gIR7EJ8hnDcY2M467yKcPH8h+vdJ4JMF/wl6EL58j01aPk278uhHyr5nvk3y6EelbpM0/YjmnUC4D/fbhMPf7yPcBrESeBG4mr1/ALRWvpFw21HzD58usb4sJuyNFA6i0Y1oMA7goOjf1srXEvZ2msvXpOlHmr4k7UcJfd+nL3n0o1K3SR79SLNNEuefpBU68wT8M2FP4vDYl0x8T+YdhEu7z21nnS8DvyKclP9HwhfZZsIhi/8BTiScmN9NOIySqHyaduXRj5R9z3yb5NGPSt0mafoRxbmL2O1PsfldCRdjbQR+lLZ8tOynhAu5XiSM6PMo8P6CMu+K5tcmLd+OdiXte5p2Je175v2o1G2SRz/S1kkydXgCzHMiHFpbBlxbMP/NwwWEK9Nua2edLwI/AHpE7/sQrny7iHD/1muEL7dfpCmfpl159CNl3zPfJnn0o1K3SZp+ROVuJ9xX2Hyo/y3svbdxHuFq57FpykfzZhNGuToiWv4oYYjJLcCPCLeF3AA8naZ8O9qVtO9p2pW075n3o1K3SR79SFsnUf5JU6kzT8A50Yf3HOGLaHhs2ZGEobs+3J46QE9gfJHYXYB+wN8TvuBOSVm++bDH2YQrXlttV9LyafvRjjqZbpM8+lGp2yRN36PlJxHu0S383Gtj6/0LMDVl+UHAD4F/id7XEK7UPoYwCMEfCFdU7wY+kLR82n4krZOmXSnrZNqPSt4mWfcjbZ2kU4cnv46YCL9cbiWcE1tP+FX0GGEc2V+0pw6xc2HR+y7E7peM5v0De4ZeS1S+SLvqgJuBpwiHP1rtS9LybXyOLbYraZ2stkmaz3d/2ibFyhPOS72FcLHWLsJ53ulAv2j5QcC5wJY05WNx+lEw5mw0v5Ywcs/XgVfbUb65XdcSrjxts10p6yRqV9I6aT7fatkmabZHHtskzbQ/3vrTlfDHV0P4sj6K8JSTwYTbMx529y1lqFNLuFWrKTbPopcXEa5K/UI7ysfv+eoLjAMOJVzSPgT433i7kpYvhYXHu+3VrjR18tgmST/fNHU64zZpq7yZnUK4oGo84ctoA+Fz7w780N2/157ysXo1sPctSWb2P4R7g88oQ/n3E86RjyeMGd1mu9LUaaFvLbYraZ00n2+1bJNybY+22lXOOnvV3x+SrZkdSDjs8UnC4YjnCYNLz3L3tRnVeYlwaGM5MNdjzxWNvrB7EH6xlVze971Hs8WHnLfQvkTlS1hfF8J5lH3ug22rDnv3PZNtknR7eHjYeuI6BTE71TZprbyZvdXdXzOznoS978MIPwS6Az8hjLrTlLZ8VKe3u28tmGeEwT1uAK5396faUT7+g2YgYdCPQ4DhhL/BYv1IXKclZtarWLvS1En5+Xb6bVLO7RGto2zbJIn9Jdk+QPgjW0i4QKQ/IdltIDwR4qe+743P5arTPapzP/Bjjw08kLR8VOd0YKG7/yU2rwtAc1kz6+7uO9KUb6lOkc+0q7v/LW2dPLZJys+3KrZJmm0YzTscuJxwpODPhB8084DfuvvLRdaRqHyROs8RftA8FdVZGyvX3d13JC1fJF7iHzTl/BHUUrtKqVOGz7cqtkkGP0pTb5PUQT3l8efOMhHuy3oNODI2rxfhKSn3EK42u5Vw75VlWOd14JbmOknLR8tHE07QbyeM8/nPwAEF/a0h3Cd2WNLyaWKkbFfm2yTl51sV2yRNjGjeOwh78XMI9zo+SDhH9hThiUDTCtaRqHwrdeYBiwg/mP6+PeWjOgOAjwMHFszvEttuNcQGQ0hap6XyRdrSfAWtpahTrs+3022Tcm7DMm8Ta61cq+tIW7GzTMC/RH9szVeuFd74fSrhPq1j86yTMsaVhIHmP064FH4r4WHgdwLvIZzIH0n4oj0kafk0MVK2q1I/36rYJmliRHF+APyCve+3HUC48nsO4YfIeWnL5xjjhqhvr0T9P4WCUYaiz+nz7PlyT1QnpxiZf76Vuk3y+HzT1kk7dXgyzHoiPJrpRfYeGKAre36pdCPcT3VtnnVSxrg6+kM/IHo/jJAg5hCu1FtFOPz5TJryedWp4M+3KrZJmhhRuUeAr0Wva9j3aSffJ/wY6ZmmfI4x5kWfwTmEPfsdhBG0bgAmRGW+QRh3N1WdnGJk/vlW6jbJ4/NNWyft1OHJMI+JMLTXX4GvEPs1Flv+FHBJ3nWSlGfPsHBnFSnXjXAl61cJv9LOSVo+TYy0dSrx862WbZJ2e0TLP0M493ZYQZ1u0esxhAdnvztN+TxiEO6XvI/oWaSEvfjDgCuibddEuFXsNeAzaerkESOvz7cSt0mOn2/iOu2ZOjwR5jUB/0YYR3Mn4RfMxcCF0esVxH6F5VknTYzmP4wi86YQvkTf2t7yedQhHJpZm/DzTVQnjxixevucz2ljmyQqn3UMwtWdfyR8UZ5bpN646DPpmaZ8HjEIV8B+AJhYpGxPwnjR/0W4ZaRHmjp5xMjr863EbZLj55u4TnumdlXubBPwdsIN0Q8Tri59njBqyOSOrJMmRqxuDXsuGPg8bQyCkLR8FnXY++HqYwiHOB8gHMIt2vekdXKKYfE6LXwOb/Y9afm8YjTXi/7tQzgE/VdgW9T/iwiDbjwN3JGmfF4xCvtE8Yc83E64arbddbKOQRjf+kbCeNYl9T2POmliFP4dJPm8kpTPs06Sqapv/TGzMYQvzQMIF4n83t3XxZb3JYwI4nnWKUOM14En3X11QX+PALa5++qk5dPESFunUHTbSzd3fyPq+1Zv5XmSaerkEaOFddQRRrcp2vf2ls8qhoUHbb+P8KCC8YTzvD8jPCt0fXvL5xUjqtf8A6TJzHoQHmn4A3d/sFx1yh2jYNlbCAO3TCFc4DaBsFe5V9/zqJMyRhfC4DBFk02RvicqnyZG2jrtUbXJ1syuBM4ijCr0ArAJcMIYl3cTksIuM+vie+5tzLxOGWI0RnV2Ew7l3AX8zve+fzdR+bzqmNnbgU3uvq2FbbbPvXRJ6+QRo5Q6RdaRqHxeMaJ6XQjDNr6NcPhsDeHB9a/Eyhzg7n9NU74DYzQCs919Y6xMLXC0u89PUyePGLTAwghNu93dC/vekXXSxCio3xWod/d5WZTPs06rvAy7x5U2EYYk2wpMj94PJTyc+3uEhw4/CZyQd50MYvyGcDXdCdGyLknLp4mRsl19CYfIHyAk6EOIPU4u1t/JwIDodaI6ecRIUWdg0vJ5xYje9yacl3opqr8omuYSxoI9PFbWkpbvwBgLgQbCQ8m/Sexinlb63mqdnGJ0JQzZWfQ2k+b+5l0nixjtLZ9nnXJMuQXKtVPh/OcfWlhWR7i5ewswIs861RIjZbs+TbiX7XHC5fUbCY+tOonwi78LIWGvYM9gDonq5BGjUtuVJkYU598JD8w+Jnp/GPAxwuAdDYT7Kd+WtnyFxPgD4XqIdtXJKcZlhKtff0K4eOdg9r21pg/hcHrXvOpkHONUwtXMicqniZG2TjmmDk+MWUzAPxHOHUyJ3u91LxhhPM0ngYvyrFMtMVK26ybCCE9dCL/2LyZ8ce4mJIBvEO7PezW2jkR18ohRqe1KEyOq91vg8iL/h2oI5+JWAo+mLV+pMSq1XYQjQr+J6jUR/o9dSzgicUBUZjrhdFNudaolRto65Zg6PDFmMRHOi8winNw+ooUyc4H/yLNOtcRIWofwy/hjwGfZ9xfkSMLhtJWExPClaH6iOnnEqNR2pYkRLaslXOX7O6K9K/b90XQisIRwtCJR+UqNUantIhyBmAP8c7RsSLR9V0TbbiHhHtA/EQbEJ4861RIjbZ1yTR2eGMs9secczrsI53n+RjhU8w+E+8OOBi4hXLI+LK861RKjHXW6An1jXzhd2ftL5zDCr8whsXmJ6uQRo1LblSZGNP84wmD13yY6J12wfCjh1o7BacpXaoxKbBfh3PtngZOKlDuKcPSi+SLE5jZlXqdaYqStU66pw5NjVhPhmPvbgJOBnxPGht1OOGSwkiIjguRRp1piJKnDnuT8DqB/wTqaL7j6D+AvsfmJ6uQRo1LblSZG8zLC3tcFhAt4NhNG0Hov4WEG/wTcQXRuPmn5So1R4e3qwd4D5Ruxi4+AbwF/LNiOmdeplhhp65Rj6vCkWNbOhMehfY5waf0zhAsQHiKM/jOSMPbth4j9wsyjTrXEKEO7/siei0I+TmwEI8LFCFPT1MkjRqW2K02MFv7v/B3hwpEFhNF/NhFuTfsfio+wk6h8pcaoxHZR5MreaH5PwuHNK4osy7xOtcRIW6e9U1XdZ2tmtwNjCVcrvgIcyJ4HJr8AfNHd/5B3nWqJUcZ2HRWVXwd8190fLyFGi3XyiFGp7UoTI6rXhzBIh8fmdSFc2NaLMOTea77nXtFE5Ss1RqW2q1j5QtEgEh8B7nb3nXnUidrb6WOkrdNSuVTKnb07aiIcCthGdHVsbN7bgQ8Tbol4DjgqzzrVEqPM7TqEcAjtccJzMUuJUbROHjEqtV1pYsTK3QqcRxgBqE8L/6f6xtaZqHylxqjUdpVY/u9SbMN21amWGGnrlHPKZKUdMRF+3T8DHNfC8m6EWyGuzrNOtcSo1Hap78liRPPPJFwA8iphyMNbCYf+R7JnkPZehEOcRyQtX6kxKrVdLZQ/nXAOvrl889CB41qJUdY61RIjbZ1yTx2eJMvWkfBBPUG4h2oURQZjJ1wh+1SedaolRqW2S31PFiOaN4MwqMIIwkMJniGMa/1HwsUh7wE+BexMU75SY1Rqu9T3yut7FlOmCTDviXCZ/VOEL5+zCZfVvzVa1pMwqtHP8q5TLTEqtV3qe6LytcAXgWsK4o4FriOc532Z8FixHyUtX6kxKrVd6nvl9T1t/mlr6vAEWfYOhUMT9xJuQXmZcOHIjwkPO55PkQEY8qhTLTEqtV3qe6LyfdkzLGQ3Cq7MJFwgshsYn6Z8pcao1Hap75XX9yymqroaOc7M+hNud/gg8AZhlJb73P1PHVmnWmJUarvU92QxYnW7EL6AmszsAsLoOT3LVb5SY1Rqu9T3yut7e1Vtso2z2OPqKqlOtcSo1Hap78lixOpeThh96rtZlK/UGJXaLvW98vqexn6RbEWkdNFzPJtKTdZJy1dqjEptl/peeX1PQ8lWREQkY106ugEiIiLVTslWREQkY0q2IiIiGVOyFRERyZiSrYiISMaUbEVERDL2/wEsAeLWbmBk4QAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from qiskit.visualization import plot_histogram\n",
    "\n",
    "solution = max(distribution.binary_probabilities().items(), key=lambda x: x[1])\n",
    "print(\"State, Probability\")\n",
    "print(solution)\n",
    "plot_histogram(distribution.binary_probabilities())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7fc34c9b",
   "metadata": {},
   "source": [
    "And indeed it matches our expectation!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "bc22ed3f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Node 0: 0\n",
      "Node 1: 0\n",
      "Node 2: 1\n",
      "Node 3: 0\n",
      "Node 4: 1\n"
     ]
    }
   ],
   "source": [
    "for i, group in enumerate(reversed(solution[0])):\n",
    "    print(f\"Node {i}: {group}\")"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "id": "ebba2472",
   "metadata": {},
   "source": [
    "<div>\n",
    "<img src=\"cut.png\" width=\"400\"/>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4e283fdf",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "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.10.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
