Note

You can download this notebook here.

Gaussian Boson Sampling

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.

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 [1]

\[p(T) = \bra{T} \rho \ket{T} = \frac{1}{\sqrt{~\det Q}} \frac{ \operatorname{haf} \left( \operatorname{br}_{T} A \right) }{T_1! \dots T_d!}.\]

In this formula, \(\operatorname{br}_{T}\) is the block reduction according to Definition~:nbsphinx-math:ref{def:block_reduction} from Appendix~:nbsphinx-math:ref{app:red} and

\[\begin{split}A &= \begin{bmatrix} & I \\ I & \\ \end{bmatrix} \left(I - Q^{-1}\right), \\ Q &= \Sigma + \frac{1}{2} I, \\ \Sigma &= W \sigma W^\dagger,\end{split}\]

where \(W\) is the coordinate transformation from between the ladder and quadrature operators:

\[\mathbf{\xi} = W \mathbf{\chi},\]

where the operators are collected in a vector as

\[\begin{split}\mathbf{\xi} &= [ a_1, \dots, a_d, a_1^\dagger, \dots, a_d^\dagger ]^T, \\ \mathbf{\chi} &= \left [ \hat{x}_1, \dots, \hat{x}_d, \hat{p}_1, \dots, \hat{p}_d \right]^T, \\ W &= \frac{1}{\sqrt{2}} \begin{bmatrix} I & iI \\ I & -iI \end{bmatrix}.\end{split}\]

Furthermore, the hafnian of a matrix is defined by

\[\operatorname{haf}(A) = \sum_{M \in \operatorname{PMP}(n)} \prod_{(i,j) \in M} A_{i, j},\]

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.

For displaced Gaussian states, one needs to use a different formula accounting for the non-zero displacement vector:

\[p(T) = \bra{T} \rho \ket{T} = \frac{\exp\left( -\frac{1}{2} \mathbf{\gamma}^T \mathbf{\alpha} \right)}{\sqrt{\operatorname{det} Q}} \frac{ \operatorname{lhaf} \left( \operatorname{vid}(\operatorname{br}_{T} A, \operatorname{br}_{T} \mathbf{\gamma}) \right) }{T_1! \dots T_d!},\]

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:

\[\operatorname{lhaf}(A) = \sum_{M \in \operatorname{SPM}(n)} \prod_{(i,j) \in M} A_{i, j}.\]

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.

Although particle-resolved GBS is the most typical variant, it is often difficult to realize experimentally due to detector inefficiencies [2]. 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 [3] [4].

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 [5]

\[p(T) = \frac{ \operatorname{tor} ( \operatorname{br}_{T} A ) }{T_1! \dots T_d! \sqrt{\det Q}},\]

where \(A\) is defined as

\[A = I - Q^{-1},\]

and the torontonian \(\operatorname{tor}\) of a matrix \(M \in \mathbb{C}^{2n \times 2n}\) is

\[\operatorname{tor}(M) = \sum_{X \in \{ 0, 1 \}^{n} } \frac{ {(-1)}^{n - \sum_{i=1}^n X_i } }{ \sqrt{ |\det(I-\operatorname{br}_{X} M)| } }.\]

When the Gaussian state is displaced with complex displacement vector \(\mathbf{\alpha}\), the probability distribution is modified as [6]

\[p(T) = \frac{\exp(-\frac{1}{2}\mathbf{\alpha}^\dagger\Sigma^{-1}\mathbf{\alpha} )}{\sqrt{\operatorname{det}Q}} \operatorname{ltor}( \operatorname{br}_T A, \operatorname{br}_T \mathbf{\gamma}),\]

where $:nbsphinx-math:mathbf{gamma} = \overline{(\Sigma^{-1} \mathbf{\alpha})} $ and \(\operatorname{ltor}\) is the loop torontonian defined by

\[\operatorname{ltor}(M, \mathbf{\gamma}) = \sum_{X \in \{ 0, 1 \}^{n} } \frac{ (-1)^{ n -\sum_{i=1}^n X_i } }{ \sqrt{ |\operatorname{det}(I-\operatorname{br}_X M)|} } \exp( \frac{1}{2} \mathbf{\gamma}^T (I - \operatorname{br}_X M)^{-1} \overline{\mathbf{\gamma}} ).\]

Particle-resolved Gaussian Boson Sampling can be performed using Piquasso as shown by the following example:

[17]:
import piquasso as pq
import numpy as np

from scipy.stats import unitary_group


shots = 1000
squeezings = np.concatenate([0.25 * np.ones(5), np.zeros(5)])
d = len(squeezings)
unitary = unitary_group.rvs(d)

with pq.Program() as program:
    for i in range(d):
        pq.Q(i) | pq.Squeezing(squeezings[i])

    pq.Q() | pq.Interferometer(unitary)
    pq.Q() | pq.ParticleNumberMeasurement()

simulator = pq.GaussianSimulator(d=d)

result = simulator.execute(program, shots=shots)

print(result.samples)
[[0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 ...
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]
 [0 0 0 ... 0 0 0]]

Graph adjacency matrices can also be embedded:

[ ]:
A = np.array(
    [
        [0, 1, 0, 1, 1],
        [1, 0, 0, 0, 1],
        [0, 0, 0, 1, 0],
        [1, 0, 1, 0, 1],
        [1, 1, 0, 1, 0],
    ]
)

with pq.Program() as program:
    pq.Q(all) | pq.Graph(A, mean_photon_number=1.0)

    pq.Q(all) | pq.ParticleNumberMeasurement()


simulator = pq.GaussianSimulator(d=len(A))

result = simulator.execute(program, shots=shots)

print("Samples:", result.samples)
Samples: [[1 0 0 2 3]
 [1 1 0 1 1]
 [2 0 0 2 2]
 ...
 [0 0 0 0 0]
 [3 1 0 1 1]
 [0 0 0 0 0]]

The generated samples could be used to acquire some denser subgraphs of the generated graph with

[20]:
print("Subgraphs:", result.to_subgraph_nodes())
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], []]

One can also implement threshold GBS with ThresholdMeasurement:

[21]:
with pq.Program() as program:
    for i in range(d):
        pq.Q(i) | pq.Squeezing(squeezings[i])

    pq.Q() | pq.Interferometer(unitary)
    pq.Q() | pq.ThresholdMeasurement()

simulator = pq.GaussianSimulator(d=d)

result = simulator.execute(program, shots=shots)

print(result.samples)
[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 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]]