{
"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
}