{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Gaussian Boson Sampling" ] }, { "cell_type": "markdown", "id": "ec7ab6f0", "metadata": {}, "source": [ "The term Gaussian Boson Sampling (GBS) essentially refers to photon number detection in Gaussian states. The most prominent case is the particle-resolved GBS, where the concrete particle numbers are observed during the measurement via a particle number-resolving photon detector. There is theoretical evidence that it is intractable to simulate this sampling problem on a classical computer, making it a promising quantum advantage scheme with several experimental demonstrations in recent years. Through the hafnian, GBS is connected to certain graph-theoretical problems." ] }, { "cell_type": "markdown", "id": "ca68c449", "metadata": {}, "source": [ "For a Gaussian input state $\\rho$ without displacement (i.e., $\\mu \\equiv 0$), the probability of an detecting a sample $T = (T_1, \\dots, T_d)$ during particle number resolved photon detection is given by \n", "$$\n", "p(T) = \\bra{T} \\rho \\ket{T} = \\frac{1}{\\sqrt{~\\det Q}} \\frac{\n", " \\operatorname{haf} \\left( \\operatorname{br}_{T} A \\right)\n", " }{T_1! \\dots T_d!}.\n", "$$\n", "In this formula, $\\operatorname{br}_{T}$ is the block reduction according to Definition~\\ref{def:block_reduction} from Appendix~\\ref{app:red} and\n", "$$\n", " A &= \\begin{bmatrix}\n", " & I \\\\\n", " I & \\\\\n", " \\end{bmatrix}\n", " \\left(I - Q^{-1}\\right), \\\\\n", " Q &= \\Sigma + \\frac{1}{2} I, \\\\\n", " \\Sigma &= W \\sigma W^\\dagger,\n", "$$\n", "where $W$ is the coordinate transformation from between the ladder and quadrature operators:\n", "$$\n", " \\mathbf{\\xi}\n", " =\n", " W\n", " \\mathbf{\\chi},\n", "$$\n", "where the operators are collected in a vector as\n", "$$\n", " \\mathbf{\\xi} &= [\n", " a_1,\n", " \\dots,\n", " a_d,\n", " a_1^\\dagger,\n", " \\dots,\n", " a_d^\\dagger\n", " ]^T, \\\\\n", " \\mathbf{\\chi} &= \\left [\n", " \\hat{x}_1, \\dots,\n", " \\hat{x}_d,\n", " \\hat{p}_1, \\dots,\n", " \\hat{p}_d\n", " \\right]^T, \\\\\n", " W &= \\frac{1}{\\sqrt{2}}\n", " \\begin{bmatrix}\n", " I & iI \\\\\n", " I & -iI\n", " \\end{bmatrix}.\n", "$$\n", "Furthermore, the hafnian of a matrix is defined by\n", "$$\n", " \\operatorname{haf}(A) = \\sum_{M \\in \\operatorname{PMP}(n)} \\prod_{(i,j) \\in M} A_{i, j},\n", "$$\n", "where $\\operatorname{PMP}(n)$ is the set of perfect matching permutations of $n$ even elements, such that $\\sigma(2i-1)<\\sigma(2i)$ and $\\sigma(2i-1)<\\sigma(2i+1)$, where $\\sigma$ is a permutation.\n", "\n", "For displaced Gaussian states, one needs to use a different formula accounting for the non-zero displacement vector:\n", "$$\n", " p(T) = \\bra{T} \\rho \\ket{T} = \\frac{\\exp\\left( -\\frac{1}{2} \\mathbf{\\gamma}^T \\mathbf{\\alpha} \\right)}{\\sqrt{\\operatorname{det} Q}} \\frac{\n", " \\operatorname{lhaf} \\left( \\operatorname{vid}(\\operatorname{br}_{T} A, \\operatorname{br}_{T} \\mathbf{\\gamma}) \\right)\n", " }{T_1! \\dots T_d!},\n", "$$\n", "where $\\operatorname{vid}$ (vector in diagonal) denotes putting the second (vector) argument in the diagonal of the first (matrix) argument, $\\mathbf{\\alpha} = W \\mu$ and $\\mathbf{\\gamma}^T = \\mathbf{\\alpha}^\\dagger \\Sigma^{-1}$. The loop hafnian $\\operatorname{lhaf}$ is defined similarly as the hafnian, but the concept of single pair matchings (SPM) is used instead of perfect matching permutations:\n", "$$\n", " \\operatorname{lhaf}(A) = \\sum_{M \\in \\operatorname{SPM}(n)} \\prod_{(i,j) \\in M} A_{i, j}.\n", "$$\n", "Here, the definition of single-pair matchings is almost the same as the definition of perfect matching permutations, the difference is that when enumerating single-pair matchings, single vertices are also allowed to be paired up with themselves.\n", "\n", "Although particle-resolved GBS is the most typical variant, it is often difficult to realize experimentally due to detector inefficiencies . One can easily specialize towards a coarser detection scheme by using threshold detectors instead, which do not resolve exactly how many particles are detected, and only signals detection or no detection. In particular, this variant of GBS, called threshold GBS, was used in several quantum advantage experiments in recent years .\n", "\n", "More specifically, let output $1$ correspond to \"click\", and $0$ correspond to \"no click\". In the case of threshold measurement of a non-displaced ($\\mu \\equiv 0$) Gaussian state, the probability of an output $T = (T_1, \\dots, T_d) \\in {\\{0, 1 \\}}^d$ during detection is given by \n", "$$\n", " p(T) = \\frac{\n", " \\operatorname{tor} ( \\operatorname{br}_{T} A )\n", " }{T_1! \\dots T_d! \\sqrt{\\det Q}},\n", "$$\n", "where $A$ is defined as\n", "$$\n", " A = I - Q^{-1},\n", "$$\n", "and the torontonian $\\operatorname{tor}$ of a matrix $M \\in \\mathbb{C}^{2n \\times 2n}$ is\n", "$$\n", " \\operatorname{tor}(M) =\n", " \\sum_{X \\in \\{ 0, 1 \\}^{n} }\n", " \\frac{\n", " {(-1)}^{n - \\sum_{i=1}^n X_i }\n", " }{\n", " \\sqrt{\n", " |\\det(I-\\operatorname{br}_{X} M)|\n", " }\n", " }.\n", "$$\n", "When the Gaussian state is displaced with complex displacement vector $\\mathbf{\\alpha}$, the probability distribution is modified as \n", "$$\n", " p(T) = \\frac{\\exp(-\\frac{1}{2}\\mathbf{\\alpha}^\\dagger\\Sigma^{-1}\\mathbf{\\alpha} )}{\\sqrt{\\operatorname{det}Q}}\n", " \\operatorname{ltor}( \\operatorname{br}_T A, \\operatorname{br}_T \\mathbf{\\gamma}),\n", "$$\n", "where $\\mathbf{\\gamma} = \\overline{(\\Sigma^{-1} \\mathbf{\\alpha})} $ and $\\operatorname{ltor}$ is the loop torontonian defined by\n", "$$\n", " \\operatorname{ltor}(M, \\mathbf{\\gamma})\n", " =\n", " \\sum_{X \\in \\{ 0, 1 \\}^{n} }\n", " \\frac{\n", " (-1)^{ n -\\sum_{i=1}^n X_i }\n", " }{\n", " \\sqrt{\n", " |\\operatorname{det}(I-\\operatorname{br}_X M)|}\n", " }\n", " \\exp( \\frac{1}{2} \\mathbf{\\gamma}^T (I - \\operatorname{br}_X M)^{-1} \\overline{\\mathbf{\\gamma}} ).\n", "$$" ] }, { "cell_type": "markdown", "id": "e1635bde", "metadata": {}, "source": [ "Particle-resolved Gaussian Boson Sampling can be performed using Piquasso as shown by the following example:" ] }, { "cell_type": "code", "execution_count": 17, "id": "cabac735", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0 0 0 ... 0 0 0]\n", " [0 0 0 ... 0 0 0]\n", " [0 0 0 ... 0 0 0]\n", " ...\n", " [0 0 0 ... 0 0 0]\n", " [0 0 0 ... 0 0 0]\n", " [0 0 0 ... 0 0 0]]\n" ] } ], "source": [ "import piquasso as pq\n", "import numpy as np\n", "\n", "from scipy.stats import unitary_group\n", "\n", "\n", "shots = 1000\n", "squeezings = np.concatenate([0.25 * np.ones(5), np.zeros(5)])\n", "d = len(squeezings)\n", "unitary = unitary_group.rvs(d)\n", "\n", "with pq.Program() as program:\n", " for i in range(d):\n", " pq.Q(i) | pq.Squeezing(squeezings[i])\n", "\n", " pq.Q() | pq.Interferometer(unitary)\n", " pq.Q() | pq.ParticleNumberMeasurement()\n", "\n", "simulator = pq.GaussianSimulator(d=d)\n", "\n", "result = simulator.execute(program, shots=shots)\n", "\n", "print(result.samples)" ] }, { "cell_type": "markdown", "id": "7f9e5014", "metadata": {}, "source": [ "Graph adjacency matrices can also be embedded:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Samples: [[1 0 0 2 3]\n", " [1 1 0 1 1]\n", " [2 0 0 2 2]\n", " ...\n", " [0 0 0 0 0]\n", " [3 1 0 1 1]\n", " [0 0 0 0 0]]\n" ] } ], "source": [ "A = np.array(\n", " [\n", " [0, 1, 0, 1, 1],\n", " [1, 0, 0, 0, 1],\n", " [0, 0, 0, 1, 0],\n", " [1, 0, 1, 0, 1],\n", " [1, 1, 0, 1, 0],\n", " ]\n", ")\n", "\n", "with pq.Program() as program:\n", " pq.Q(all) | pq.Graph(A, mean_photon_number=1.0)\n", "\n", " pq.Q(all) | pq.ParticleNumberMeasurement()\n", "\n", "\n", "simulator = pq.GaussianSimulator(d=len(A))\n", "\n", "result = simulator.execute(program, shots=shots)\n", "\n", "print(\"Samples:\", result.samples)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The generated samples could be used to acquire some denser subgraphs of the generated graph with" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Subgraphs: [[0, 3, 3, 4, 4, 4], [0, 1, 3, 4], [0, 0, 3, 3, 4, 4], [0, 0, 0, 1, 3, 4, 4, 4], [], [0, 2, 2, 3, 3, 3], [0, 0, 0, 3, 4, 4], [0, 4], [3, 4], [0, 3, 3, 4], [0, 3, 4, 4], [0, 1, 3, 3, 4, 4], [], [2, 3], [], [0, 0, 1, 4, 4, 4], [], [0, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4], [0, 4], [], [0, 0, 0, 1, 1, 1, 3, 4], [0, 0, 0, 3, 3, 4], [0, 0, 0, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4], [2, 3], [0, 0, 0, 0, 1, 1, 3, 4, 4, 4], [], [], [3, 4], [0, 0, 0, 0, 1, 2, 3, 3, 3, 4], [0, 0, 1, 1, 1, 1, 4, 4, 4, 4], [0, 0, 0, 2, 3, 3, 3, 4], [], [], [], [0, 3, 4, 4], [0, 3, 3, 4, 4, 4], [0, 1], [0, 0, 0, 1, 1, 1, 1, 3, 3, 4, 4, 4], [0, 0, 0, 1, 2, 3, 3, 3, 3, 4], [], [2, 3], [], [0, 0, 0, 1, 1, 2, 3, 3, 3, 3, 4, 4, 4, 4], [0, 4], [], [], [0, 1], [], [], [0, 2, 3, 3, 3, 4], [0, 0, 0, 0, 1, 1, 1, 3, 4, 4, 4, 4], [1, 4], [], [2, 3], [0, 2, 3, 4], [], [0, 0, 0, 1, 3, 4], [0, 0, 0, 3, 3, 4, 4, 4], [0, 0, 0, 0, 1, 1, 1, 1, 3, 4], [], [0, 0, 0, 3, 4, 4], [0, 0, 0, 0, 1, 3, 3, 3, 3, 4, 4, 4], [3, 4], [0, 1, 3, 4], [3, 4], [0, 3], [0, 0, 0, 0, 1, 3, 3, 4, 4, 4], [0, 3], [0, 3], [0, 0, 0, 1, 1, 3, 4, 4, 4, 4], [0, 1, 3, 4], [0, 0, 0, 0, 1, 1, 2, 3, 3, 3, 3, 4], [], [0, 0, 0, 1, 1, 4], [], [1, 1, 2, 3, 3, 4, 4, 4], [0, 2, 3, 3], [], [0, 0, 0, 1, 1, 2, 3, 3, 3, 3, 4, 4], [0, 0, 0, 1, 1, 1, 3, 4, 4, 4], [0, 0, 0, 0, 1, 1, 1, 2, 3, 4], [0, 0, 0, 3, 3, 4], [0, 0, 0, 1, 1, 2, 3, 3, 3, 3, 4, 4, 4, 4], [], [0, 0, 0, 2, 2, 3, 3, 3, 3, 4, 4, 4], [0, 0, 3, 4], [0, 0, 1, 3, 3, 4, 4, 4], [0, 0, 0, 0, 1, 1, 1, 1, 3, 3, 3, 4, 4, 4], [], [], [0, 0, 0, 3, 3, 4, 4, 4], [], [], [0, 1], [0, 0, 0, 1, 1, 3, 3, 4, 4, 4], [0, 0, 0, 2, 3, 3, 4, 4, 4, 4], [], [0, 4], [0, 0, 0, 0, 1, 1, 1, 3, 3, 3, 4, 4, 4, 4], [0, 1, 3, 4], [0, 3, 4, 4], [0, 0, 0, 1, 1, 1, 1, 3, 4, 4, 4, 4], [], [0, 0, 3, 4, 4, 4], [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3], [], [0, 3, 3, 4, 4, 4], [], [], [], [0, 1, 1, 3, 4, 4], [0, 0, 1, 2, 3, 3, 4, 4], [], [0, 1, 3, 4], [0, 0, 1, 3, 3, 4, 4, 4], [], [1, 4], [], [], [3, 3, 4, 4], [0, 0, 0, 1, 3, 3, 4, 4], [0, 0, 0, 1, 1, 1], [], [3, 4], [0, 1], [], [0, 0, 0, 1, 3, 3, 3, 4], [2, 3], [1, 3, 4, 4], [2, 3], [0, 0, 0, 1, 1, 3, 4, 4], [], [2, 3], [0, 0, 1, 3, 4, 4], [], [], [], [], [0, 0, 2, 2, 2, 3, 3, 3, 3, 4], [1, 2, 3, 4], [0, 1], [1, 1, 4, 4], [3, 4], [0, 0, 1, 4], [], [2, 3], [0, 2, 2, 3, 3, 3], [0, 0, 2, 3, 3, 3], [0, 0, 0, 1, 1, 2, 3, 3, 3, 4, 4, 4], [0, 0, 1, 3], [], [0, 0, 0, 1, 2, 3, 3, 3, 3, 4], [0, 2, 2, 3, 3, 3, 3, 4], [2, 2, 3, 3, 3, 4], [0, 1, 3, 4], [], [], [0, 1, 3, 4, 4, 4], [0, 4], [], [0, 0, 0, 1, 3, 3, 4, 4], [0, 0, 1, 3, 3, 4], [0, 2, 3, 4], [0, 0, 1, 2, 3, 3, 4, 4, 4, 4], [1, 2, 3, 4], [], [0, 0, 1, 3, 3, 4], [0, 4], [2, 3], [], [0, 0, 0, 0, 1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4], [], [], [0, 1], [2, 3], [0, 0, 1, 1, 2, 3, 3, 4], [3, 4], [], [0, 0, 3, 4], [], [], [0, 0, 2, 3, 3, 3], [0, 3], [0, 3], [0, 2, 3, 3], [3, 4], [0, 4], [0, 0, 0, 2, 2, 3, 3, 3, 4, 4], [2, 3], [0, 3], [0, 1, 1, 3, 3, 4, 4, 4], [1, 4], [0, 4], [0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 4, 4], [0, 1, 2, 3], [0, 0, 0, 0, 1, 2, 3, 3, 3, 4, 4, 4], [0, 0, 0, 0, 1, 3, 3, 3, 4, 4, 4, 4], [0, 0, 1, 1, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4], [3, 3, 4, 4], [1, 2, 3, 3, 4, 4], [0, 0, 0, 3, 3, 4], [0, 0, 0, 0, 1, 1, 1, 3, 3, 3, 4, 4, 4, 4], [], [], [], [0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 4, 4], [0, 0, 0, 0, 1, 1, 3, 3, 3, 4, 4, 4], [], [0, 0, 0, 3, 3, 4, 4, 4], [0, 0, 3, 4], [0, 1], [], [0, 0, 1, 3, 3, 3, 3, 4, 4, 4], [0, 0, 0, 1, 1, 3, 4, 4], [], [], [], [3, 4], [0, 0, 1, 3], [0, 1, 1, 2, 3, 3, 3, 3, 4, 4, 4, 4], [0, 0, 1, 1, 3, 4], [], [1, 3, 4, 4], [0, 0, 0, 1, 2, 3, 3, 3, 4, 4], [0, 0, 1, 4, 4, 4], [0, 3, 3, 4], [0, 4], [], [0, 2, 3, 3, 4, 4], [0, 0, 1, 3], [0, 0, 0, 3, 3, 3, 4, 4], [0, 0, 1, 1, 4, 4], [0, 0, 1, 1, 1, 2, 3, 3, 3, 4, 4, 4], [1, 2, 3, 4], [0, 2, 3, 3], [], [], [0, 0, 0, 2, 2, 3, 3, 3, 3, 4, 4, 4], [0, 0, 1, 3], [0, 4], [0, 4], [0, 0, 4, 4], [0, 0, 0, 1, 1, 4, 4, 4], [0, 4], [0, 3, 3, 3, 4, 4], [0, 0, 0, 0, 1, 1, 2, 3, 3, 3, 4, 4], [0, 0, 3, 4], [0, 0, 0, 0, 1, 1, 1, 1, 2, 3, 3, 4, 4, 4], [0, 0, 1, 1, 3, 3, 4, 4], [2, 3, 3, 4], [], [0, 0, 1, 2, 3, 4], [], [0, 0, 1, 3], [0, 0, 0, 0, 1, 3, 4, 4], [], [0, 0, 3, 4, 4, 4], [3, 3, 4, 4], [], [0, 2, 3, 3, 3, 4, 4, 4], [2, 3], [0, 0, 4, 4], [], [1, 4], [], [0, 1], [0, 0, 1, 1, 2, 3, 3, 3, 3, 4, 4, 4], [], [3, 4], [], [], [0, 0, 0, 1, 3, 3, 3, 4, 4, 4], [], [], [0, 0, 3, 4], [], [0, 0, 1, 3, 4, 4], [0, 0, 1, 4], [], [], [0, 0, 0, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4], [0, 0, 1, 2, 2, 3, 3, 3, 4, 4], [0, 1, 1, 3, 4, 4, 4, 4], [], [1, 4], [2, 2, 2, 3, 3, 3], [0, 1, 1, 4], [0, 1, 2, 3, 3, 3, 4, 4], [0, 3], [2, 3], [3, 4], [0, 0, 1, 1, 1, 4, 4, 4], [0, 1, 4, 4], [1, 3, 4, 4], [0, 0, 1, 1, 3, 4, 4, 4], [0, 0, 1, 1], [0, 2, 3, 3], [0, 1], [0, 2, 2, 2, 3, 3, 3, 3], [0, 0, 2, 3, 3, 3, 4, 4], [0, 3], [], [0, 3], [0, 1, 3, 4, 4, 4], [], [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4], [0, 0, 0, 1, 1, 1, 4, 4], [0, 0, 3, 3, 3, 4], [0, 0, 1, 4, 4, 4], [0, 0, 0, 0, 1, 1, 1, 3, 3, 3, 4, 4, 4, 4], [0, 3], [3, 4], [], [], [], [], [0, 1, 4, 4], [3, 4], [0, 0, 0, 0, 1, 1, 1, 1, 2, 3, 3, 4, 4, 4], [0, 1, 2, 2, 3, 3, 3, 4], [], [], [], [0, 4], [0, 1], [], [], [3, 4], [0, 0, 0, 0, 1, 1, 3, 3, 4, 4], [], [0, 3], [0, 0, 0, 3, 4, 4], [], [0, 0, 1, 1, 2, 3, 3, 4], [2, 3, 3, 4], [0, 3], [0, 3], [0, 0, 0, 1, 1, 1, 4, 4], [], [0, 0, 0, 1, 1, 1, 2, 3, 3, 3, 4, 4, 4, 4], [], [0, 4], [0, 0, 0, 1, 3, 3, 3, 4, 4, 4], [2, 3, 3, 4], [0, 1], [0, 4], [1, 4], [], [0, 0, 0, 1, 2, 3, 3, 3, 4, 4], [], [], [0, 0, 1, 3, 3, 4, 4, 4], [3, 4], [], [0, 1, 2, 3, 3, 4], [2, 3], [], [], [1, 4], [0, 0, 1, 1], [], [], [0, 4], [3, 4], [0, 0, 1, 3], [0, 2, 3, 3, 4, 4], [0, 4], [0, 0, 0, 1, 1, 3, 4, 4], [], [0, 0, 0, 0, 1, 3, 3, 3, 4, 4, 4, 4], [], [3, 3, 4, 4], [], [0, 0, 1, 1, 3, 3, 3, 3, 4, 4, 4, 4], [0, 0, 2, 3, 4, 4], [], [0, 0, 0, 1, 3, 3], [0, 0, 0, 2, 3, 3, 3, 4, 4, 4], [], [], [0, 0, 0, 1, 3, 3, 3, 3, 4, 4], [1, 1, 4, 4], [], [], [0, 2, 2, 2, 3, 3, 3, 3], [0, 1, 1, 3, 4, 4], [0, 2, 3, 3], [0, 0, 3, 4], [0, 0, 1, 3, 3, 4], [0, 0, 0, 1, 1, 1, 3, 3, 4, 4, 4, 4], [], [0, 1, 3, 4], [0, 1, 3, 4], [], [], [3, 4], [], [1, 4], [2, 3, 3, 4], [0, 0, 1, 1, 2, 2, 3, 3, 3, 4], [0, 4], [], [0, 0, 1, 4], [0, 0, 0, 1, 4, 4], [], [0, 3], [0, 0, 0, 0, 1, 1, 1, 3], [], [2, 3], [0, 0, 1, 1, 3, 4], [0, 0, 1, 1, 3, 3, 4, 4], [0, 0, 1, 4], [], [0, 2, 3, 4], [0, 1, 3, 4], [0, 0, 2, 2, 2, 3, 3, 3, 3, 4], [], [], [], [2, 3], [3, 3, 4, 4], [0, 4], [2, 2, 3, 3], [0, 2, 3, 3], [3, 4], [0, 3], [1, 2, 2, 3, 3, 3, 3, 4, 4, 4], [], [0, 0, 1, 1, 3, 4], [0, 0, 3, 3, 4, 4], [], [0, 0, 1, 1, 1, 3, 3, 3, 4, 4, 4, 4], [], [], [0, 1, 1, 1, 1, 3, 4, 4, 4, 4], [0, 0, 0, 1, 3, 4], [0, 0, 0, 0, 1, 1, 1, 1, 3, 3, 4, 4, 4, 4], [], [2, 3], [3, 4], [0, 0, 0, 0, 1, 1, 2, 3, 3, 3, 3, 4, 4, 4], [0, 0, 1, 3, 4, 4], [], [0, 0, 0, 1, 3, 4, 4, 4], [0, 1], [0, 0, 3, 3, 3, 4, 4, 4], [1, 1, 3, 3, 4, 4, 4, 4], [0, 4], [0, 1], [], [2, 3], [], [], [0, 3], [], [], [], [], [0, 0, 1, 2, 2, 3, 3, 3, 3, 4], [], [], [], [0, 0, 3, 4], [], [2, 3], [2, 3], [0, 1, 1, 3, 4, 4], [2, 3], [0, 4], [], [0, 1, 4, 4], [], [0, 0, 0, 0, 1, 1, 3, 3, 3, 4, 4, 4], [0, 0, 0, 0, 1, 3, 3, 3, 4, 4], [0, 4], [2, 2, 3, 3], [], [], [0, 0, 0, 1, 1, 3, 3, 3, 4, 4, 4, 4], [], [1, 1, 4, 4], [], [], [0, 0, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4], [0, 0, 1, 3, 3, 4, 4, 4], [2, 3, 3, 4], [0, 1, 3, 4], [0, 0, 0, 1, 3, 3, 4, 4], [], [0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4], [], [3, 4], [0, 0, 0, 1, 3, 3], [0, 1, 1, 4], [], [0, 1, 3, 3, 3, 4, 4, 4], [0, 0, 1, 1, 1, 2, 3, 3, 4, 4, 4, 4], [0, 0, 3, 4], [2, 3, 3, 4], [0, 0, 0, 1, 1, 2, 3, 3, 3, 4, 4, 4], [3, 3, 4, 4], [0, 0, 0, 1, 2, 3, 3, 3, 3, 4, 4, 4], [0, 0, 0, 1, 3, 3], [0, 0, 0, 0, 1, 1, 3, 3, 3, 3, 4, 4, 4, 4], [], [], [], [], [3, 3, 4, 4], [], [], [], [0, 4], [], [0, 0, 1, 1, 1, 3, 4, 4], [0, 0, 0, 0, 1, 1, 1, 1, 3, 4], [0, 0, 3, 3], [0, 0, 0, 0, 1, 1, 1, 3, 3, 4], [0, 0, 3, 4, 4, 4], [1, 4], [], [2, 3], [], [0, 0, 0, 1, 2, 3, 3, 3, 4, 4, 4, 4], [0, 1, 4, 4], [], [1, 3, 3, 4, 4, 4], [0, 1, 2, 2, 3, 3, 3, 4], [], [0, 0, 0, 1, 1, 3, 4, 4], [2, 3, 3, 3, 3, 4, 4, 4], [2, 3, 3, 4], [], [0, 3, 4, 4], [], [], [0, 0, 0, 0, 1, 1, 3, 3, 3, 4, 4, 4], [0, 0, 0, 3, 3, 4], [], [1, 4], [0, 4], [0, 0, 0, 1, 3, 3, 3, 4, 4, 4], [0, 0, 2, 3, 3, 4], [0, 0, 3, 3, 4, 4], [], [], [0, 0, 1, 1, 1, 1, 4, 4], [], [0, 0, 1, 2, 3, 3, 3, 3, 4, 4, 4, 4], [2, 3], [], [1, 4], [0, 3, 3, 4, 4, 4], [], [], [0, 0, 0, 0, 1, 1, 1, 1, 3, 4], [0, 3, 4, 4], [], [0, 1, 4, 4], [0, 1, 1, 4], [0, 0, 1, 1, 3, 3, 4, 4, 4, 4], [0, 3], [2, 2, 2, 3, 3, 3], [], [1, 1, 4, 4], [0, 3, 4, 4], [0, 0, 0, 0, 1, 1, 1, 1, 2, 3, 3, 3, 4, 4, 4, 4], [0, 3, 4, 4], [], [], [], [], [0, 1], [0, 0, 0, 1, 2, 3, 3, 4, 4, 4], [2, 3], [], [0, 0, 0, 2, 3, 3, 4, 4], [], [], [0, 1, 3, 4], [0, 3], [1, 2, 3, 3, 4, 4], [], [0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 4, 4], [], [], [2, 3], [], [0, 4], [], [0, 0, 1, 3, 3, 4, 4, 4], [3, 4], [0, 0, 0, 1, 3, 3, 3, 3, 4, 4, 4, 4], [3, 4], [], [], [3, 4], [0, 0, 0, 0, 1, 2, 3, 3, 3, 4, 4, 4], [], [], [0, 1], [], [0, 0, 0, 1, 1, 1, 3, 3, 3, 4, 4, 4], [], [0, 4], [], [0, 0, 0, 0, 2, 3, 3, 3, 4, 4, 4, 4], [0, 3, 4, 4], [3, 4], [2, 3], [0, 1], [], [0, 1, 1, 2, 3, 4], [0, 0, 0, 0, 1, 1, 1, 2, 3, 3, 3, 3, 4, 4], [0, 1, 3, 4], [0, 0, 0, 1, 1, 1, 1, 3, 3, 4, 4, 4], [], [0, 0, 0, 1, 1, 3], [], [0, 1, 3, 4, 4, 4], [0, 0, 0, 1, 3, 3, 4, 4], [], [0, 0, 0, 1, 2, 3, 3, 3, 4, 4], [1, 4], [1, 4], [], [2, 3], [0, 0, 1, 2, 3, 3, 4, 4], [1, 4], [0, 1, 1, 2, 3, 3, 3, 4, 4, 4], [], [], [], [0, 3], [], [0, 1, 3, 4], [], [0, 0, 0, 0, 1, 3, 3, 4], [0, 0, 1, 1], [0, 1], [], [], [0, 4], [1, 3, 4, 4], [], [2, 3], [0, 0, 1, 3, 4, 4, 4, 4], [0, 4], [0, 2, 3, 3, 3, 4], [1, 2, 3, 4], [0, 0, 3, 3, 4, 4], [], [0, 4], [0, 1, 1, 3, 4, 4], [], [], [0, 0, 0, 0, 1, 1, 1, 2, 3, 3, 3, 4, 4, 4], [], [0, 0, 1, 3, 4, 4], [], [0, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 4], [], [0, 0, 1, 1, 3, 4], [0, 0, 0, 1, 1, 1, 4, 4], [0, 1], [0, 3, 3, 4], [3, 4], [0, 1, 3, 4], [], [1, 4], [1, 4], [], [0, 0, 0, 0, 1, 2, 3, 3, 3, 3, 4, 4], [], [0, 0, 0, 1, 1, 1, 1, 3, 3, 4, 4, 4], [], [0, 0, 0, 1, 3, 4, 4, 4], [], [3, 3, 4, 4], [1, 4], [0, 0, 1, 1, 1, 3, 4, 4, 4, 4], [0, 0, 0, 1, 1, 3, 4, 4], [3, 4], [0, 0, 1, 1], [0, 1, 3, 4], [0, 3], [], [], [], [], [], [0, 3, 4, 4], [0, 3, 4, 4], [0, 0, 0, 4, 4, 4], [0, 0, 0, 0, 1, 1, 1, 1, 2, 3, 3, 3, 3, 4, 4, 4], [0, 4], [], [0, 0, 0, 0, 1, 1, 2, 3, 3, 3], [0, 0, 1, 2, 3, 3, 3, 4, 4, 4], [], [0, 0, 1, 3, 4, 4], [], [0, 0, 0, 0, 1, 1, 1, 1, 3, 3, 3, 3, 4, 4, 4, 4], [2, 2, 3, 3], [0, 1, 4, 4], [0, 0, 0, 1, 1, 1, 2, 3, 3, 4], [0, 0, 0, 1, 1, 1, 3, 4, 4, 4], [0, 0, 0, 1, 1, 1, 3, 4, 4, 4], [0, 3], [0, 0, 0, 1, 3, 4, 4, 4], [1, 3, 4, 4], [0, 3], [], [], [], [1, 3, 3, 3, 4, 4, 4, 4], [0, 1], [0, 0, 4, 4], [], [], [2, 3], [0, 3], [0, 1], [2, 3], [], [], [1, 3, 4, 4], [0, 1, 2, 2, 2, 3, 3, 3, 3, 4], [3, 4], [], [0, 1, 3, 4], [0, 0, 0, 0, 1, 3, 3, 4, 4, 4], [0, 0, 1, 1, 1, 2, 3, 3, 4, 4], [], [], [0, 0, 0, 2, 3, 3, 4, 4], [0, 0, 0, 0, 1, 1, 1, 3, 4, 4], [], [], [1, 4], [], [0, 4], [0, 1, 2, 3, 3, 4], [], [0, 1], [], [0, 0, 0, 0, 1, 1, 3, 4], [0, 0, 1, 3, 3, 4], [0, 0, 1, 4], [2, 3], [0, 3], [0, 0, 1, 4], [2, 3], [0, 1, 2, 3, 3, 3, 4, 4], [], [], [0, 1], [0, 0, 1, 1, 3, 4], [], [0, 4], [], [], [0, 2, 2, 3, 3, 3], [], [0, 1, 3, 4, 4, 4], [2, 3], [2, 2, 3, 3], [], [3, 4], [1, 4], [], [0, 4], [1, 4], [], [1, 4], [0, 1, 1, 4, 4, 4], [], [0, 1, 3, 3, 4, 4], [3, 4], [0, 4], [0, 3, 3, 4], [0, 3], [0, 0, 0, 0, 1, 3, 3, 4], [0, 1, 3, 4], [0, 0, 0, 0, 3, 3, 3, 3, 4, 4], [0, 2, 3, 3, 3, 3, 4, 4], [0, 0, 0, 0, 1, 1, 1, 2, 3, 3, 3, 4, 4, 4], [2, 2, 3, 3], [0, 0, 0, 0, 1, 1, 1, 3, 4, 4], [0, 1, 2, 3, 3, 3, 4, 4], [1, 4], [0, 0, 0, 1, 1, 1, 1, 3, 3, 3, 4, 4, 4, 4], [], [0, 1], [], [], [0, 1], [], [], [], [0, 3], [2, 3], [], [], [0, 4], [], [0, 1, 2, 3, 3, 4, 4, 4], [0, 1, 2, 3], [0, 0, 1, 4], [0, 1, 1, 4], [0, 3], [], [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4], [0, 0, 0, 0, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4], [0, 0, 1, 3, 3, 4, 4, 4], [0, 1, 1, 3, 4, 4], [0, 2, 3, 4], [2, 3], [0, 1, 3, 3, 4, 4], [0, 1, 3, 3, 3, 3, 4, 4, 4, 4], [], [], [], [0, 0, 3, 3, 3, 4, 4, 4], [0, 0, 0, 1, 1, 3, 3, 4, 4, 4], [], [0, 0, 1, 1], [0, 4], [0, 0, 3, 4], [0, 0, 0, 0, 3, 4, 4, 4], [], [0, 1], [0, 0, 1, 2, 3, 3], [0, 0, 4, 4], [0, 0, 0, 1, 1, 4], [0, 4], [3, 4], [], [2, 3], [0, 3], [0, 1], [0, 0, 0, 0, 1, 1, 2, 3, 3, 3, 4, 4, 4, 4], [0, 0, 0, 1, 3, 3, 4, 4], [0, 4], [0, 3], [0, 0, 1, 3], [3, 3, 4, 4], [0, 0, 3, 4], [0, 0, 0, 1, 1, 3, 4, 4], [0, 0, 0, 0, 3, 3, 4, 4], [0, 1, 4, 4], [0, 0, 0, 2, 3, 3, 3, 3, 4, 4], [0, 1, 1, 2, 3, 4], [0, 0, 0, 0, 1, 3, 3, 3, 4, 4, 4, 4], [], [0, 1], [0, 0, 1, 2, 3, 4], [2, 3, 3, 3, 4, 4], [1, 2, 3, 4], [0, 0, 0, 1, 3, 3], [0, 0, 0, 1, 1, 2, 3, 3, 3, 4, 4, 4], [0, 0, 0, 0, 2, 2, 3, 3, 3, 3, 4, 4], [0, 0, 0, 0, 1, 1, 3, 4], [2, 2, 3, 3], [], [], [0, 0, 1, 1, 3, 4, 4, 4], [2, 2, 3, 3], [2, 3], [0, 0, 0, 3, 3, 4], [0, 0, 0, 2, 3, 3, 4, 4], [], [0, 0, 1, 1, 4, 4], [0, 0, 0, 1, 3, 3, 4, 4], [0, 1, 3, 3, 4, 4], [1, 3, 4, 4], [0, 4], [], [], [0, 0, 0, 1, 2, 3, 3, 4, 4, 4], [], [0, 0, 0, 0, 1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4], [0, 0, 0, 0, 1, 1, 1, 4, 4, 4], [0, 3], [], [0, 1, 3, 4, 4, 4], [0, 0, 2, 2, 3, 3, 3, 3], [], [], [], [2, 3], [], [1, 4], [0, 4], [0, 0, 1, 1], [0, 3, 4, 4], [0, 1, 3, 3, 4, 4], [1, 4], [0, 0, 1, 1, 3, 3, 3, 4, 4, 4], [], [0, 0, 1, 3, 3, 4, 4, 4], [2, 3, 3, 4], [0, 0, 0, 1, 1, 1, 3, 3, 4, 4, 4, 4], [], [1, 4], [1, 4], [], [0, 0, 1, 3], [0, 0, 0, 1, 1, 1, 3, 4, 4, 4], [], [], [0, 0, 3, 3], [3, 4], [0, 0, 0, 0, 1, 3, 4, 4, 4, 4], [], [0, 0, 0, 1, 3, 3, 3, 4], [0, 0, 0, 1, 1, 3, 3, 3, 4, 4, 4, 4], [0, 0, 1, 3, 3, 4], [], [], [0, 0, 0, 0, 1, 1, 1, 3, 4, 4], [2, 3], [0, 1, 2, 2, 3, 3], [0, 1], [], [0, 0, 0, 2, 3, 3, 3, 3, 4, 4], [], [0, 3], [0, 0, 3, 3, 4, 4], [0, 0, 0, 1, 3, 4, 4, 4], [], [0, 2, 2, 3, 3, 3, 3, 4], [2, 3], [], [0, 0, 0, 0, 1, 1, 1, 2, 3, 3, 3, 3, 4, 4, 4, 4], [0, 0, 1, 3, 4, 4], [], [], [2, 3, 3, 4], [3, 4], [], [0, 3], [0, 1], [1, 4], [], [], [0, 1, 1, 3, 4, 4], [], [], [0, 3, 4, 4], [0, 1, 1, 2, 3, 3, 4, 4], [], [], [0, 0, 0, 1, 2, 3, 3, 4], [0, 1, 3, 4], [0, 0, 1, 1, 1, 3, 4, 4], [0, 2, 3, 3], [0, 0, 1, 1, 2, 3, 3, 3, 4, 4, 4, 4], [0, 0, 1, 2, 3, 3], [2, 3, 3, 4], [], [0, 1, 3, 3, 4, 4], [], [0, 4], [], [0, 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4], [1, 4], [3, 4], [0, 3], [0, 0, 0, 0, 1, 3, 3, 4, 4, 4], [0, 0, 1, 1, 3, 3, 4, 4], [1, 4], [0, 0, 1, 1, 3, 4], [3, 4], [0, 3], [1, 4], [0, 1], [], [3, 4], [0, 0, 0, 0, 1, 1, 3, 3, 4, 4], [], [0, 4], [0, 0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 4], [], [], [0, 1, 3, 4], [0, 1, 3, 4], [0, 3, 3, 4], [3, 4], [0, 3, 3, 4], [], [], [0, 3, 4, 4], [0, 1], [2, 3], [0, 0, 1, 1, 4, 4], [0, 0, 0, 1, 1, 1, 3, 3, 3, 4, 4, 4], [], [0, 0, 0, 1, 3, 4], []]\n" ] } ], "source": [ "print(\"Subgraphs:\", result.to_subgraph_nodes())" ] }, { "cell_type": "markdown", "id": "a92afdce", "metadata": {}, "source": [ "One can also implement threshold GBS with [ThresholdMeasurement](../instructions/measurements.rst#piquasso.instructions.measurements.ThresholdMeasurement):" ] }, { "cell_type": "code", "execution_count": 21, "id": "24335b9f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 1, 1, 1, 0, 0, 0, 1], [1, 0, 0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 1, 1, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 1, 0, 1, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 1, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 1, 0, 0, 0, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 1, 0, 0, 1, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 1, 0, 0, 0, 1, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 1, 0, 0, 0, 0], [0, 1, 0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 1, 0], [0, 0, 0, 1, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 1, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 1, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 1, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 1, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 1, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]\n" ] } ], "source": [ "with pq.Program() as program:\n", " for i in range(d):\n", " pq.Q(i) | pq.Squeezing(squeezings[i])\n", "\n", " pq.Q() | pq.Interferometer(unitary)\n", " pq.Q() | pq.ThresholdMeasurement()\n", "\n", "simulator = pq.GaussianSimulator(d=d)\n", "\n", "result = simulator.execute(program, shots=shots)\n", "\n", "print(result.samples)" ] }, { "cell_type": "markdown", "id": "e37bad73", "metadata": {}, "source": [] } ], "metadata": { "kernelspec": { "display_name": ".venv", "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.16" } }, "nbformat": 4, "nbformat_minor": 5 }