# VQE and QAOA with Qiskit

## Table of content
1. [Qiskit Optimization module](#optim)
 1. [The `QuadraticProgram` class](#qp)
 2. [From QP to QUBO to Operator](#qubo)
 3. [Optimization application class](#app)

2. [VQE and QAOA in Qiskit](#qiskit)
 1. [General overview](#gen)
 2. [Hamiltonian](#ham)
 3. [Optimizer](#opt)
 4. [Variational form or ansatz](#ansatz)
 5. [Quantum instance](#inst)
 6. [Minimum Eigen Optimizer](#meo)

3. [Application to the MaxCut problem](#maxcut)

4. [The runtime programs](#runtime)


```python
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import networkx as nx
import matplotlib.axes as axes
from numpy import cos, sin, pi

# Importing standard Qiskit libraries and configuring account
from qiskit import QuantumCircuit, execute, Aer, IBMQ, QuantumRegister, ClassicalRegister
from qiskit.circuit import Parameter
from qiskit.circuit.library import TwoLocal, NLocal, RealAmplitudes, EfficientSU2, ExcitationPreserving, ZGate
from qiskit.compiler import transpile, assemble
from qiskit.tools.jupyter import *
from qiskit.visualization import *
from qiskit.tools.visualization import plot_histogram

from qiskit.utils import algorithm_globals, QuantumInstance
from qiskit.opflow import Z

# Quantum and Classical algorithms
from qiskit.algorithms import VQE, NumPyMinimumEigensolver, QAOA
from qiskit.algorithms.optimizers import COBYLA, SPSA, SLSQP, NELDER_MEAD

# Optimization applications 
from qiskit_optimization import QuadraticProgram
from qiskit_optimization.converters import QuadraticProgramToQubo
from qiskit_optimization.translators import from_docplex_mp
from qiskit_optimization.applications import Maxcut
from qiskit_optimization.applications import optimization_application #sample_most_likely
from qiskit_optimization.algorithms import MinimumEigenOptimizer


# noise models and measurement mitigation
from qiskit.providers.aer.noise import NoiseModel
from qiskit.ignis.mitigation.measurement import CompleteMeasFitter

# set qiskit optimization logging
from qiskit_optimization import QiskitOptimizationError
```

## 1 - Qiskit optimization module <a name = 'optim'></a>

See [here](https://qiskit.org/documentation/optimization/tutorials/index.html) for all the optimization tutorials available in the documentation.

The code is open-source and available [here](https://github.com/Qiskit/qiskit-optimization).

    pip install qiskit-optimization

### A - The `QuadraticProgram` class <a name = 'qp'></a>

Here we'll see how to use the `QuadraticProgram` class to build an optimization problem using Qiskit.

It is possible to directly create a `QuadraticProgram` from a Docplex model via `from_docplex_mp` from `qiskit_optimization.translators` : 

    mod = from_docplex_mp(mdl)

You can also directly construct your program and give it the name you want. It supports three types of variables : binary, integer, continuous.


```python
mod = QuadraticProgram('my problem')
```


```python
mod.binary_var(name='x')
mod.integer_var(name='y', lowerbound=-1, upperbound=5)
mod.continuous_var(name='z', lowerbound=-1, upperbound=5)
```




    <qiskit_optimization.problems.variable.Variable at 0x7ffdbfae0550>




```python
mod.minimize(constant=3, linear={'x': 1}, quadratic={('x', 'y'): 2, ('z', 'z'): -1})
```


```python
mod.minimize(constant=3, linear=[1,0,0], quadratic=[[0,1,0],[1,0,0],[0,0,-1]])
```


```python
print(mod.export_as_lp_string())
```

    \ This file has been generated by DOcplex
    \ ENCODING=ISO-8859-1
    \Problem name: my problem
    
    Minimize
     obj: x + [ 4 x*y - 2 z^2 ]/2 + 3
    Subject To
    
    Bounds
     0 <= x <= 1
     -1 <= y <= 5
     -1 <= z <= 5
    
    Binaries
     x
    
    Generals
     y
    End
    


You can access the constant, the linear term, and the quadratic term by looking at `Quadratic.objective.{constant, linear, quadratic}`, respectively. As for linear and quadratic terms, you can get a dense matrix (`to_array`), a sparse matrix (`coefficients`), and a dictionary (`to_dict`). For dictionaries, you can specify whether to use variable indices or names as keys. Note that the quadratic terms are stored in a compressed way, e.g., `{('x', 'y'): 1, ('y', 'x'): 2}` is stored as `{('x', 'y'): 3}`. You can get the quadratic term as a symmetric matrix by calling `to_array(symmetric=True)` or `to_dict(symmetric=True)`. If you call `to_dict(name=True)`, you can get a dictionary whose keys are pairs of variable names.




```python
print('constant:\t\t\t', mod.objective.constant)
print('linear dict:\t\t\t', mod.objective.linear.to_dict())
print('linear array:\t\t\t', mod.objective.linear.to_array())
print('linear array as sparse matrix:\n', mod.objective.linear.coefficients, '\n')
print('quadratic dict w/ index:\t', mod.objective.quadratic.to_dict())
print('quadratic dict w/ name:\t\t', mod.objective.quadratic.to_dict(use_name=True))
print('symmetric quadratic dict w/ name:\t', mod.objective.quadratic.to_dict(use_name=True, symmetric=True))
print('quadratic matrix:\n', mod.objective.quadratic.to_array(),'\n')
print('symmetric quadratic matrix:\n', mod.objective.quadratic.to_array(symmetric=True),'\n')
print('quadratic matrix as sparse matrix:\n', mod.objective.quadratic.coefficients)
```

    constant:			 3
    linear dict:			 {0: 1}
    linear array:			 [1 0 0]
    linear array as sparse matrix:
       (0, 0)	1 
    
    quadratic dict w/ index:	 {(0, 1): 2, (2, 2): -1}
    quadratic dict w/ name:		 {('x', 'y'): 2, ('z', 'z'): -1}
    symmetric quadratic dict w/ name:	 {('y', 'x'): 1, ('x', 'y'): 1, ('z', 'z'): -1}
    quadratic matrix:
     [[ 0  2  0]
     [ 0  0  0]
     [ 0  0 -1]] 
    
    symmetric quadratic matrix:
     [[ 0  1  0]
     [ 1  0  0]
     [ 0  0 -1]] 
    
    quadratic matrix as sparse matrix:
       (0, 1)	2
      (2, 2)	-1


You can also add linear and quadratic constraints by specifying the name, the linear and quadratic constraints, the sense, the RHS value. You can also access them plus its caracteristics easily.


```python
mod.linear_constraint(linear={'x': 1, 'y': 2}, sense='==', rhs=3, name='lin_eq')
mod.linear_constraint(linear={'x': 1, 'y': 2}, sense='<=', rhs=3, name='lin_leq')
mod.linear_constraint(linear={'x': 1, 'y': 2}, sense='>=', rhs=3, name='lin_geq')
```




    <qiskit_optimization.problems.linear_constraint.LinearConstraint at 0x7ffdbe66a580>




```python
mod.quadratic_constraint(linear={'x': 1, 'y': 1}, quadratic={('x', 'x'): 1, ('y', 'z'): -1}, sense='==', rhs=1, name='quad_eq')
mod.quadratic_constraint(linear={'x': 1, 'y': 1}, quadratic={('x', 'x'): 1, ('y', 'z'): -1}, sense='<=', rhs=1, name='quad_leq')
mod.quadratic_constraint(linear={'x': 1, 'y': 1}, quadratic={('x', 'x'): 1, ('y', 'z'): -1}, sense='>=', rhs=1, name='quad_geq')
```




    <qiskit_optimization.problems.quadratic_constraint.QuadraticConstraint at 0x7ffdc0565af0>




```python
lin_geq = mod.get_linear_constraint('lin_geq')
print('lin_geq:', lin_geq.linear.to_dict(use_name=True), lin_geq.sense, lin_geq.rhs)
quad_geq = mod.get_quadratic_constraint('quad_geq')
print('quad_geq:', quad_geq.linear.to_dict(use_name=True), quad_geq.quadratic.to_dict(use_name=True), quad_geq.sense, lin_geq.rhs)

```

    lin_geq: {'x': 1.0, 'y': 2.0} ConstraintSense.GE 3
    quad_geq: {'x': 1.0, 'y': 1.0} {('x', 'x'): 1.0, ('y', 'z'): -1.0} ConstraintSense.GE 3


Finally, you can remove any constraint you have, and substitute any variable you want. An error will be return if the substitution is unfeasible or already done.


```python
mod.remove_linear_constraint('lin_eq')
mod.remove_quadratic_constraint('quad_leq')
mod.remove_linear_constraint('lin_leq')
mod.remove_quadratic_constraint('quad_eq')

```


```python
sub = mod.substitute_variables(constants={'x': 0}, variables={'y': ('z', -1)})

```


```python
print(mod.export_as_lp_string())
```

    \ This file has been generated by DOcplex
    \ ENCODING=ISO-8859-1
    \Problem name: my problem
    
    Minimize
     obj: x + [ 4 x*y - 2 z^2 ]/2 + 3
    Subject To
     lin_geq: x + 2 y >= 3
     quad_geq: [ x^2 - y*z ] + x + y >= 1
    
    Bounds
     0 <= x <= 1
     -1 <= y <= 5
     -1 <= z <= 5
    
    Binaries
     x
    
    Generals
     y
    End
    


### B - From QP to QUBO to Operator <a name = 'qubo'></a>

Now, since Qiskit provides optimization algorithms that handle QUBO problems (Quadratic Unconstrained Binary Optimization) in particular, we need to be able to translate any quadratic problem into a QUBO. First let's construct a `QuadraticProgram` : 


```python
qp = QuadraticProgram()
qp.binary_var('x')
qp.binary_var('y')
qp.integer_var(lowerbound=0, upperbound=4, name='z')

qp.maximize(linear={'x': 2, 'y': 1, 'z': 1})
qp.linear_constraint(linear={'x': 1, 'y': 1, 'z': 1}, sense='LE', rhs=3.5,name='xyz_leq')
qp.linear_constraint(linear={'x': 1, 'y': 1, 'z': 1}, sense='GE', rhs=2.5,name='xyz_geq')
print(qp.export_as_lp_string())
```

    \ This file has been generated by DOcplex
    \ ENCODING=ISO-8859-1
    \Problem name: CPLEX
    
    Maximize
     obj: 2 x + y + z
    Subject To
     xyz_leq: x + y + z <= 3.500000000000
     xyz_geq: x + y + z >= 2.500000000000
    
    Bounds
     0 <= x <= 1
     0 <= y <= 1
           z <= 4
    
    Binaries
     x y
    
    Generals
     z
    End
    


`QuadraticProgramToQubo` is a wrapper for three (already available) converters in Qiskit : 
- `InequalityToEquality`: converts inequality constraints into equality constraints with additional slack variables. 
- `IntegerToBinary`: converts integer variables into binary variables and corresponding coefficients. 
- `LinearEqualityToPenalty`: convert equality constraints into additional terms of the object function.

All the details for each step is available [here](https://qiskit.org/documentation/optimization/tutorials/02_converters_for_quadratic_programs.html).


```python
conv = QuadraticProgramToQubo()
qubo = conv.convert(qp)
print(qubo.export_as_lp_string())
```

    Warning: Using 100000.000000 for the penalty coefficient because a float coefficient exists in constraints. 
    The value could be too small. If so, set the penalty coefficient manually.


    \ This file has been generated by DOcplex
    \ ENCODING=ISO-8859-1
    \Problem name: CPLEX
    
    Minimize
     obj: - 98 x - 97 y - 97 z@0 - 194 z@1 - 97 z@2 - 48 xyz_leq@int_slack@0
          - 96 xyz_leq@int_slack@1 + 48 xyz_geq@int_slack@0 + 96 xyz_geq@int_slack@1
          + [ 32 x^2 + 64 x*y + 64 x*z@0 + 128 x*z@1 + 64 x*z@2
          + 32 x*xyz_leq@int_slack@0 + 64 x*xyz_leq@int_slack@1
          - 32 x*xyz_geq@int_slack@0 - 64 x*xyz_geq@int_slack@1 + 32 y^2 + 64 y*z@0
          + 128 y*z@1 + 64 y*z@2 + 32 y*xyz_leq@int_slack@0
          + 64 y*xyz_leq@int_slack@1 - 32 y*xyz_geq@int_slack@0
          - 64 y*xyz_geq@int_slack@1 + 32 z@0^2 + 128 z@0*z@1 + 64 z@0*z@2
          + 32 z@0*xyz_leq@int_slack@0 + 64 z@0*xyz_leq@int_slack@1
          - 32 z@0*xyz_geq@int_slack@0 - 64 z@0*xyz_geq@int_slack@1 + 128 z@1^2
          + 128 z@1*z@2 + 64 z@1*xyz_leq@int_slack@0 + 128 z@1*xyz_leq@int_slack@1
          - 64 z@1*xyz_geq@int_slack@0 - 128 z@1*xyz_geq@int_slack@1 + 32 z@2^2
          + 32 z@2*xyz_leq@int_slack@0 + 64 z@2*xyz_leq@int_slack@1
          - 32 z@2*xyz_geq@int_slack@0 - 64 z@2*xyz_geq@int_slack@1
          + 16 xyz_leq@int_slack@0^2 + 64 xyz_leq@int_slack@0*xyz_leq@int_slack@1
          + 64 xyz_leq@int_slack@1^2 + 16 xyz_geq@int_slack@0^2
          + 64 xyz_geq@int_slack@0*xyz_geq@int_slack@1 + 64 xyz_geq@int_slack@1^2
          ]/2 + 144
    Subject To
    
    Bounds
     0 <= x <= 1
     0 <= y <= 1
     0 <= z@0 <= 1
     0 <= z@1 <= 1
     0 <= z@2 <= 1
     0 <= xyz_leq@int_slack@0 <= 1
     0 <= xyz_leq@int_slack@1 <= 1
     0 <= xyz_geq@int_slack@0 <= 1
     0 <= xyz_geq@int_slack@1 <= 1
    
    Binaries
     x y z@0 z@1 z@2 xyz_leq@int_slack@0 xyz_leq@int_slack@1 xyz_geq@int_slack@0
     xyz_geq@int_slack@1
    End
    


Now in order to feed the VQE algorithm or the QAOA with the right type of data, we'll need an Ising hamiltonian. We'll see later how exactly the transformation is done. The code in Qiskit to go from QUBO to ising and vice versa.


```python
ising, offset = qubo.to_ising()
print("The offset is : ", offset)
print("\nThe ising hamiltonian is : \n", ising)
```

    The offset is :  84.5
    
    The ising hamiltonian is : 
     -24.0 * ZIIIIIIII
    - 12.0 * IZIIIIIII
    + 8.0 * ZZIIIIIII
    - 24.0 * IIZIIIIII
    - 12.0 * IIIZIIIII
    + 8.0 * IIZZIIIII
    + 0.5 * IIIIZIIII
    - 8.0 * ZIIIZIIII
    - 4.0 * IZIIZIIII
    + 8.0 * IIZIZIIII
    + 4.0 * IIIZZIIII
    + 1.0 * IIIIIZIII
    - 16.0 * ZIIIIZIII
    - 8.0 * IZIIIZIII
    + 16.0 * IIZIIZIII
    + 8.0 * IIIZIZIII
    + 16.0 * IIIIZZIII
    + 0.5 * IIIIIIZII
    - 8.0 * ZIIIIIZII
    - 4.0 * IZIIIIZII
    + 8.0 * IIZIIIZII
    + 4.0 * IIIZIIZII
    + 8.0 * IIIIZIZII
    + 16.0 * IIIIIZZII
    + 0.5 * IIIIIIIZI
    - 8.0 * ZIIIIIIZI
    - 4.0 * IZIIIIIZI
    + 8.0 * IIZIIIIZI
    + 4.0 * IIIZIIIZI
    + 8.0 * IIIIZIIZI
    + 16.0 * IIIIIZIZI
    + 8.0 * IIIIIIZZI
    + 1.0 * IIIIIIIIZ
    - 8.0 * ZIIIIIIIZ
    - 4.0 * IZIIIIIIZ
    + 8.0 * IIZIIIIIZ
    + 4.0 * IIIZIIIIZ
    + 8.0 * IIIIZIIIZ
    + 16.0 * IIIIIZIIZ
    + 8.0 * IIIIIIZIZ
    + 8.0 * IIIIIIIZZ



```python
qubo = QuadraticProgram()
qubo.from_ising(qubit_op=ising, offset=offset, linear=True)
print(qubo.export_as_lp_string())
```

    \ This file has been generated by DOcplex
    \ ENCODING=ISO-8859-1
    \Problem name: CPLEX
    
    Minimize
     obj: - 82 x0 - 81 x1 - 81 x2 - 130 x3 - 81 x4 - 40 x5 - 64 x6 + 56 x7 + 128 x8
          + [ 64 x0*x1 + 64 x0*x2 + 128 x0*x3 + 64 x0*x4 + 32 x0*x5 + 64 x0*x6
          - 32 x0*x7 - 64 x0*x8 + 64 x1*x2 + 128 x1*x3 + 64 x1*x4 + 32 x1*x5
          + 64 x1*x6 - 32 x1*x7 - 64 x1*x8 + 128 x2*x3 + 64 x2*x4 + 32 x2*x5
          + 64 x2*x6 - 32 x2*x7 - 64 x2*x8 + 128 x3*x4 + 64 x3*x5 + 128 x3*x6
          - 64 x3*x7 - 128 x3*x8 + 32 x4*x5 + 64 x4*x6 - 32 x4*x7 - 64 x4*x8
          + 64 x5*x6 + 64 x7*x8 ]/2 + 144
    Subject To
    
    Bounds
     0 <= x0 <= 1
     0 <= x1 <= 1
     0 <= x2 <= 1
     0 <= x3 <= 1
     0 <= x4 <= 1
     0 <= x5 <= 1
     0 <= x6 <= 1
     0 <= x7 <= 1
     0 <= x8 <= 1
    
    Binaries
     x0 x1 x2 x3 x4 x5 x6 x7 x8
    End
    


### C - Optimization application class <a name = 'app'></a>

Link to the documentation [here](https://qiskit.org/documentation/optimization/apidocs/qiskit_optimization.applications.html#module-qiskit_optimization.applications).

- Exact cover problem
>Given a collection of subsets of items, find a subcollection such that each item is covered exactly once.

- Knapsack problem
> Given a set of items, find a subset of items such that the total weight is within the capacity and the total value is maximized.

- Number partition problem
> Given a multiset of positive integers, find a partition of the multiset into two subsets such that the sums of the subsets are equal.

- Set packing problem
> Given a collection of subsets of items, find a subcollection such that all subsets of the subcollection are pairwise disjoint and the number of items in the subcollection is maximized.

*Graph problems*

- Clique problem
> Given an undirected graph, find a subset of nodes with a specified number or the maximum number such that the induced subgraph is complete.

- Graph partition problem
> Given an undirected graph, find a partition into two components whose sizes are equal such that the total capacity of the edges between the two components is minimized.

- Max-cut problem
> Given an undirected graph, find a partition of nodes into two subsets such that the total weight of the edges between the two subsets is maximized.

- Stable set problem
> Given an undirected graph, find a subset of nodes such that no edge connects the nodes in the subset and the number of nodes is maximized.

- Traveling salesman problem
> Given a graph, find a route with the minimum distance such that the route visits each city exactly once.

- Vehicle routing problem
> Given a graph, a depot node, and the number of vehicles (routes), find a set of routes such that each node is covered exactly once except the depot and the total distance of the routes is minimized.

- Vertex cover problem
> Given an undirected graph, find a subset of nodes with the minimum size such that each edge has at least one endpoint in the subsets.


The application classes for graph problems (GraphOptimizationApplication) provide a functionality to draw graphs of an instance and a result. Note that you need to install matplotlib beforehand to utilize the functionality.



## 2 - VQE and QAOA in Qiskit <a name = 'qiskit'></a>

### 2.1 - General overview <a name = 'gen'></a>

The **Variational Quantum Eigensolver algorithm** (VQE) and the **Quantum Approximate Optimization Algorithm** (QAOA) are both hybrid algorithms that use a variational technique to find the minimum eigenvalue of the *hamiltonian* $H$ of the studied system.

In both cases the algorithm is based on the variational method. It starts with a circuit called an **ansatz** or **trial state** parameterized by $\theta$. This parameter will vary thanks to a classical optimizer in order to minimize the energy value, and the final value found by the algorithm is an upper bound for the minimum energy. The associated ansatz will be a close approximation of the ground state.



####  Comparison 
Both algorithms are variational quantum eigensolvers, meaning they use the **variational method** to approximate the ground state and the associated energy.  
QAOA is a special case of the VQE on the fact that it also relies on the **adiabatic theorem** : 
> If the hamiltonian of a quantum system in its ground state is perturbed slowly enough, the system varies in its ground state.

The ansatz of the QAOA consists of the preparation of the equal superposition state followed by $p$ repetitions of alterning cost and mixer layers.

See details of implementation here for the [VQE](https://qiskit.org/documentation/stubs/qiskit.algorithms.VQE.html#qiskit.algorithms.VQE) and here for the [QAOA](https://qiskit.org/documentation/stubs/qiskit.algorithms.QAOA.html?highlight=qaoa#qiskit.algorithms.QAOA).

### 2.2 - Optimizer  <a name = 'opt'></a>

The optimizer is on the classical part of the hybrid algorithm, and will send to the quantum circuit new parameters to be tested.

All the optimizers can be called from `qiskit.algorithms.optimizers`.   
See details [here](https://qiskit.org/documentation/stubs/qiskit.algorithms.optimizers.html). The available optimizers on Qiskit are :

- **ADAM** : Adam Kingma, Diederik & Ba, Jimmy. (2014). Adam: A Method for Stochastic Optimization;
- **CG** : Conjugate Gradient algorithm;
- **COBYLA** : Constrained Optimization By Linear Approximation algorithm;
- **L_BFGS_B** : Limited-memory BFGS algorithm;
- **NELDER_MEAD** : Nelder-Mead algorithm;
- **P_BFGS** : Limited-memory BFGS algorithm. Parallel instantiations;
- **POWELL** : Powell algorithm;
- **SLSQP** : Sequential Least SQuares Programming algorithm;
- **SPSA** : Simultaneous Perturbation Stochastic Approximation algorithm;
- **TNC** : Truncated Newton algorithm;
- **AQGD** : Analytic Quantum Gradient Descent optimizer class. Performs optimization by gradient descent where gradients are evaluated “analytically” using the quantum circuit evaluating the objective function;
- **NFT** : Nakanishi-Fujii-Todo algorithm;
- **GSLS** : Gaussian-smoothed Line Search;
- **GradientDescend** : The gradient descent minimization routine;
- **QNSPSA** : The Quantum Natural SPSA (QN-SPSA) optimizer.

See this example for initializing an optimizer: 


```python
from qiskit.algorithms.optimizers import COBYLA, SPSA
```


```python
testOp = COBYLA(maxiter=500)
testOp
```




    <qiskit.algorithms.optimizers.cobyla.COBYLA at 0x7ffdd8a49910>



### 2.3 - Variational form or ansatz  <a name = 'ansatz'></a>

The **anzatz** (or **trial wavefunction**) is a mathematical guess as to what the answer may be. It prepares the state we need in order to apply the variational principle.


The ideal ansatz would be one that can reach as many states as possible while having a small depth. Of course, in practice, both are quite the opposite. The best balance is often hard to find and needs a little investigation beforehand. 

---

In Qiskit, there are three ways to create the ansatz for a VQE instance :  
- by using classes of parameterized circuits already implemented in Qiskit (the *N-Local circuits* in `qiskit.circuit.library`). See [here](https://qiskit.org/documentation/apidoc/circuit_library.html#n-local-circuits) for all the details about each class.
- by creating a parameterized circuit. See [here](https://qiskit.org/documentation/tutorials/circuits_advanced/01_advanced_circuits.html) for how to create a parameterized circuit. Being able to use it for such algorithms is new in the latest version of Aqua, and is easier than before if one wants to create an ansatz.
- by doing both! Instances of the implemented classes are circuits, therefore any gate can be added to it.



#### An example - TwoLocal
The [two-local circuit](https://qiskit.org/documentation/stubs/qiskit.circuit.library.TwoLocal.html#qiskit.circuit.library.TwoLocal) is a ``parameterized`` circuit consisting of alternating rotation layers and
entanglement layers. The rotation layers are single qubit gates applied on all qubits.
The entanglement layer uses two-qubit gates to entangle the qubits according to a strategy set
using ``entanglement``.


```python
from qiskit.circuit.library import TwoLocal
rotation_blocks = ['ry', 'rz']
entanglement_blocks = ['cx']
testAnsatz = TwoLocal(num_qubits=3, 
                        rotation_blocks=rotation_blocks, 
                        entanglement_blocks=entanglement_blocks, 
                        entanglement='full',
                        reps=2,
                        skip_final_rotation_layer=False,
                        insert_barriers=True)
testAnsatz.draw(output='mpl')
```


```python
testAnsatz.decompose().draw(output='mpl')
```

**Example with a personalized circuit :** **(Parameterized circuits from Qiskit Core-Terra)**


```python
n = 3

from qiskit.circuit import ParameterVector
theta = ParameterVector('θ', length=n)
```


```python
qc = QuantumCircuit(n)
qc.h(0)
for i in range(n-1):
    qc.cx(i,i+1)
qc.barrier()
for i in range(n):
    qc.rz(theta[i], i)
qc.barrier()
for i in reversed(range(n-1)):
    qc.cx(i, i+1)
qc.h(0)
qc.draw('mpl')
```

### 2.4 - Hamiltonian  <a name = 'qubitop'></a>

The hamiltonian, describing the problem, is already implemented in Qiskit for several optimization problems. See [here](https://qiskit.org/documentation/optimization/apidocs/qiskit_optimization.applications.html) for all of the optimization problems already implemented.  
- For those already implemented, one can access the associated `QuadraticProgram` with the function `to_quadratic_program()`. 
- To access the ising hamiltonian and the offset, there is the method `QuadraticProgram.to_ising()`.



### 2.5 - Quantum instance  <a name = 'inst'></a>

A quantum instance allows to specify a backend and add configuration for the transpilation and the execution, such as the basis gates, the coupling map, backend options, noise model and many other options. See [here](https://qiskit.org/documentation/stubs/qiskit.utils.QuantumInstance.html#qiskit.utils.QuantumInstance) for more details.

### 2.6 - Minimum Eigen Optimizer  <a name = 'meo'></a>

For the use in Qiskit, VQE will require at least an ansatz and an optimizer, QAOA an optimizer and the $p$ value. Since both algorithms live at the core of Qiskit, the method to solve the considered system takes an Operator in an Ising form. To use those algorithms within Qiskit Optimization, there is an available wrapper that can take directly a `QuadraticProgram` in `qiskit_optimization.algorithms` : `MinimumEigenOptimizer`. 

- it translates from a `QuadraticProgram` to an Ising hamiltonian that will go into every available `MinimumEigenSolver`
- it takes care of  the call of the chosen `MinimumEigenSolver` in the computation
- it deals wih the raw results to translate them back to an `OptimizationResult` object.

Here is an example of how to use it : 


```python
print(qp.export_as_lp_string())
```

    \ This file has been generated by DOcplex
    \ ENCODING=ISO-8859-1
    \Problem name: CPLEX
    
    Maximize
     obj: 2 x + y + z
    Subject To
     xyz_leq: x + y + z <= 3.500000000000
     xyz_geq: x + y + z >= 2.500000000000
    
    Bounds
     0 <= x <= 1
     0 <= y <= 1
           z <= 4
    
    Binaries
     x y
    
    Generals
     z
    End
    



```python
algorithm_globals.random_seed = 10598
quantum_instance = QuantumInstance(Aer.get_backend('statevector_simulator'),
                                   seed_simulator=algorithm_globals.random_seed,
                                   seed_transpiler=algorithm_globals.random_seed)
qaoa_mes = QAOA(quantum_instance=quantum_instance, initial_point=[0., 1.])

qaoa = MinimumEigenOptimizer(qaoa_mes)   # using QAOA

qaoa_result = qaoa.solve(qp)
print(qaoa_result)
```

    Warning: Using 100000.000000 for the penalty coefficient because a float coefficient exists in constraints. 
    The value could be too small. If so, set the penalty coefficient manually.


    optimal function value: 4.0
    optimal value: [1. 1. 1.]
    status: SUCCESS


Remark : it is possible to compare the solution from the VQE and QAOA instance with the exact solution by using this function :   
    `from qiskit.algorithms import NumPyMinimumEigensolver`  
    `ee = NumPyMinimumEigensolver()`  
    `result = ee.compute_minimum_eigenvalue(qubitOp)`  

Or with the wrapper : 


```python
exact_mes = NumPyMinimumEigensolver()
exact = MinimumEigenOptimizer(exact_mes)  # using the exact classical numpy minimum eigen solver

exact_result = exact.solve(qp)
print(exact_result)
```

    Warning: Using 100000.000000 for the penalty coefficient because a float coefficient exists in constraints. 
    The value could be too small. If so, set the penalty coefficient manually.


    optimal function value: 4.0
    optimal value: [1. 1. 1.]
    status: SUCCESS


## 3 - Application to the MaxCut problem <a name = 'maxcut'></a>


Max-Cut is a well-known NP-complete optimization problem. Besides its theoretical importance, Max-Cut has applications in network science, clustering, and statistical physics.  

  
We formally define the Max-Cut problem as the following:  
We consider an undirected graph $G = (V,E)$ with $|V| = n$ nodes, and each edge $ij \in E$ has a weight $w_{i,j} = w_{j,i} >0$.

A **cut** of a graph is a partition of the set $V$ in two subset $A,B$ such that $A \sqcup B = V$.  
The objective of the optimization problem  is to maximize the total cost of all the edges connecting $A$ with $B$.



By assigning a binary variable $x_i$ to each node $i$, the cost function of the optimization problem is written this way:
$$C(\textbf{x}) = \sum_{i,j = 1}^n w_{ij} x_i (1-x_j) = \sum_{(i,j) \in E} w_{ij} \left( x_i (1-x_j) + x_j (1-x_i)\right)$$



In order to be able to write the hamiltonian as a sum of Pauli operators, we will make the following transformation for each bit $x_i$:
$$ x_i \mapsto \frac{1}{2}\left(1-Z_i\right) $$
where $Z_i = \begin{pmatrix} 1 & 0 \\ 0 & -1 \end{pmatrix}$ is the Pauli Z operator that acts only on qubit $i$ and leaves the rest unchanged.  
We can allow ourselves this mapping because first there is a bijective mapping between bits and spins; then considering $\pm 1$ are the eigenvalues of the Pauli Z operator, we can promote spins into operators.

Then, by applying the mapping from bits to Pauli Z operators we get the cost hamiltonian:
$$C \equiv H_C = \frac{1}{2} \sum_{(i,j) \in E} w_{ij}\left(  I - Z_iZ_j \right) $$

Maximizing the cost hamiltonian is equivalent to minimizing this quantity : $$ H = \sum_{(i,j) \in E} w_{ij}  Z_iZ_j $$

We'll consider an instance of a Maxcut problem. Let's consider the corresponding matrix of a 5 nodes graph:


```python
n=5   # we simulate 5 nodes 
G=nx.Graph() #Graph instance
G.add_nodes_from(np.arange(0,n,1)) #Set of nodes of the graph
#list of the edges of G with associated weight
e_list=[(0,1,1.0),(0,3,1.0),(0,4,1.0), (1,2,1.0),(1,3,1.), (2,3,1.0),(2,4,1.0)] 
# tuple is (i,j,weight) where (i,j) is the edge
G.add_weighted_edges_from(e_list) #adding created edges to the graph

colors = ['r' for node in G.nodes()]
pos = nx.spring_layout(G)

def draw_graph(G, colors, pos):
    default_axes = plt.axes(frameon=True)
    nx.draw_networkx(G, node_color=colors, node_size=600, alpha=.8, ax=default_axes, pos=pos)
    edge_labels = nx.get_edge_attributes(G, 'weight')
    nx.draw_networkx_edge_labels(G, pos=pos, edge_labels=edge_labels)

draw_graph(G, colors, pos)
```


```python
from sympy import Matrix
w = np.zeros([n,n])

for i in range(n):
    for j in range(i,n):
        edge = G.get_edge_data(i,j, default=0)
        if edge != 0:
            val = edge["weight"]
            w[i,j], w[j,i] = val, val
print ("This is our Hamiltonian: ")
Matrix(w)
```

    This is our Hamiltonian: 





$\displaystyle \left[\begin{matrix}0 & 1.0 & 0 & 1.0 & 1.0\\1.0 & 0 & 1.0 & 1.0 & 0\\0 & 1.0 & 0 & 1.0 & 1.0\\1.0 & 1.0 & 1.0 & 0 & 0\\1.0 & 0 & 1.0 & 0 & 0\end{matrix}\right]$



It is possible to directly construct from the matrix the quadratic program via Qiskit. Next, getting the ising model is as easy.


```python
# Call the method to convert the model into Ising Hamiltonian.
from qiskit_optimization.applications import Maxcut

max_cut = Maxcut(w)

qp = max_cut.to_quadratic_program()
print(qp.export_as_lp_string())
```

    \ This file has been generated by DOcplex
    \ ENCODING=ISO-8859-1
    \Problem name: Max-cut
    
    Maximize
     obj: 3 x_0 + 3 x_1 + 3 x_2 + 3 x_3 + 2 x_4 + [ - 4 x_0*x_1 - 4 x_0*x_3
          - 4 x_0*x_4 - 4 x_1*x_2 - 4 x_1*x_3 - 4 x_2*x_3 - 4 x_2*x_4 ]/2
    Subject To
    
    Bounds
     0 <= x_0 <= 1
     0 <= x_1 <= 1
     0 <= x_2 <= 1
     0 <= x_3 <= 1
     0 <= x_4 <= 1
    
    Binaries
     x_0 x_1 x_2 x_3 x_4
    End
    



```python
qubitOp, offset = qp.to_ising()
qubitOp, offset

print("The offset is : ", offset)
print("\nThe operator is : \n", qubitOp)
```

    The offset is :  -3.5
    
    The operator is : 
     0.5 * ZIZII
    + 0.5 * IZZII
    + 0.5 * IZIZI
    + 0.5 * IIZZI
    + 0.5 * ZIIIZ
    + 0.5 * IZIIZ
    + 0.5 * IIIZZ


You can also go from the Ising hamiltonian to the QUBO by doing this : 


```python
testQUBO = QuadraticProgram()
testQUBO.from_ising(qubitOp, offset)
print(testQUBO.export_as_lp_string())
```

    \ This file has been generated by DOcplex
    \ ENCODING=ISO-8859-1
    \Problem name: CPLEX
    
    Minimize
     obj: [ - 6 x0^2 + 4 x0*x1 + 4 x0*x3 + 4 x0*x4 - 6 x1^2 + 4 x1*x2 + 4 x1*x3
          - 6 x2^2 + 4 x2*x3 + 4 x2*x4 - 6 x3^2 - 4 x4^2 ]/2
    Subject To
    
    Bounds
     0 <= x0 <= 1
     0 <= x1 <= 1
     0 <= x2 <= 1
     0 <= x3 <= 1
     0 <= x4 <= 1
    
    Binaries
     x0 x1 x2 x3 x4
    End
    


We execute VQE using the qasm_simulator.


```python
seed = 10598
optimizer = COBYLA(maxiter=500, tol=0.0001)
# optimizer = SPSA(maxiter=300)
var_form = TwoLocal(qubitOp.num_qubits,'ry', 'cz',
                    reps=1,
                    insert_barriers=True, 
                    skip_final_rotation_layer=True, 
                    entanglement='linear')

backend = Aer.get_backend('qasm_simulator')
quantum_instance = QuantumInstance(backend, shots=8192, seed_simulator=seed, seed_transpiler=seed)
vqe = VQE(var_form, optimizer, quantum_instance=quantum_instance)

vqe_result = vqe.compute_minimum_eigenvalue(qubitOp)

exact = NumPyMinimumEigensolver()
exact_run = exact.compute_minimum_eigenvalue(qubitOp)

print('\nVQE with the ansatz TwoLocal\n',vqe_result)
print('\nExact eigensolver\n',exact_run)
```

    
    VQE with the ansatz TwoLocal
     {   'aux_operator_eigenvalues': None,
        'cost_function_evals': 75,
        'eigenstate': {'11010': 1.0},
        'eigenvalue': (-2.5+0j),
        'optimal_parameters': {   ParameterVectorElement(θ[1]): -3.131051806612164,
                                  ParameterVectorElement(θ[4]): -3.140097206029844,
                                  ParameterVectorElement(θ[3]): 9.42060336365565,
                                  ParameterVectorElement(θ[0]): -0.008894750440984492,
                                  ParameterVectorElement(θ[2]): 0.003352480130327102},
        'optimal_point': array([-8.89475044e-03, -3.13105181e+00,  3.35248013e-03,  9.42060336e+00,
           -3.14009721e+00]),
        'optimal_value': -2.5,
        'optimizer_evals': None,
        'optimizer_time': 1.4258639812469482}
    
    Exact eigensolver
     {   'aux_operator_eigenvalues': None,
        'eigenstate': VectorStateFn(Statevector([0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j,
                 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j,
                 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j,
                 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 1.+0.j, 0.+0.j,
                 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],
                dims=(2, 2, 2, 2, 2)), coeff=1.0, is_measurement=False),
        'eigenvalue': (-2.5+0j)}



```python
# print results
x = max_cut.sample_most_likely(vqe_result.eigenstate)
print('energy:', vqe_result.eigenvalue.real)
print('time:', vqe_result.optimizer_time)
print('max-cut objective:', vqe_result.eigenvalue.real + offset)
print('solution:', x)
print('solution objective:', qp.objective.evaluate(x))

# plot results
colors = ['r' if x[i] == 0 else 'c' for i in range(n)]
draw_graph(G, colors, pos)
```

**The same run with QAOA :**


```python
seed = 10598
optimizer = COBYLA(maxiter=10000)
optimizer=SPSA(maxiter=1000)
p = 4

backend = Aer.get_backend('qasm_simulator')
quantum_instance = QuantumInstance(backend, shots=8192, seed_simulator=seed, seed_transpiler=seed)
qaoa = QAOA(optimizer=optimizer,
            reps=p,
            quantum_instance=quantum_instance,
           initial_point=[0.,1.]*p)

qaoa_result = qaoa.compute_minimum_eigenvalue(qubitOp)


print('\nQAOA with p=2 \n',qaoa_result)
print('\nExact eigensolver\n',exact_run)
```

    
    QAOA with p=2 
     {   'aux_operator_eigenvalues': None,
        'cost_function_evals': 2000,
        'eigenstate': {   '00000': 0.034938562148434216,
                          '00001': 0.048159484398195125,
                          '00010': 0.027063293868263706,
                          '00011': 0.03983608994994363,
                          '00100': 0.04133986423538423,
                          '00101': 0.6522384832731813,
                          '00110': 0.036643873123620545,
                          '00111': 0.15546678704790937,
                          '01000': 0.03314563036811941,
                          '01001': 0.04133986423538423,
                          '01010': 0.10597390598633231,
                          '01011': 0.011048543456039806,
                          '01100': 0.04555431167847891,
                          '01101': 0.1570293065800139,
                          '01110': 0.015625,
                          '01111': 0.03125,
                          '10000': 0.024705294220065465,
                          '10001': 0.015625,
                          '10010': 0.16312978920172735,
                          '10011': 0.04133986423538423,
                          '10100': 0.015625,
                          '10101': 0.10481568644530265,
                          '10110': 0.04941058844013093,
                          '10111': 0.034938562148434216,
                          '11000': 0.15108655942041965,
                          '11001': 0.034938562148434216,
                          '11010': 0.6504580717655828,
                          '11011': 0.046875,
                          '11100': 0.034938562148434216,
                          '11101': 0.0427908248050911,
                          '11110': 0.04555431167847891,
                          '11111': 0.029231698334171417},
        'eigenvalue': (-2.269775390625+0j),
        'optimal_parameters': {   ParameterVectorElement(t[7]): 1.5646984529067334,
                                  ParameterVectorElement(t[4]): 0.9383451424903264,
                                  ParameterVectorElement(t[0]): 0.4563790342495924,
                                  ParameterVectorElement(t[2]): 0.8923947857182726,
                                  ParameterVectorElement(t[3]): 1.1405094247882221,
                                  ParameterVectorElement(t[1]): -0.46135137243440766,
                                  ParameterVectorElement(t[5]): 2.8618760532172423,
                                  ParameterVectorElement(t[6]): -1.207464020591253},
        'optimal_point': array([ 0.45637903, -0.46135137,  0.89239479,  1.14050942,  0.93834514,
            2.86187605, -1.20746402,  1.56469845]),
        'optimal_value': -2.269775390625,
        'optimizer_evals': None,
        'optimizer_time': 44.97881293296814}
    
    Exact eigensolver
     {   'aux_operator_eigenvalues': None,
        'eigenstate': VectorStateFn(Statevector([0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j,
                 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j,
                 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j,
                 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j, 1.+0.j, 0.+0.j,
                 0.+0.j, 0.+0.j, 0.+0.j, 0.+0.j],
                dims=(2, 2, 2, 2, 2)), coeff=1.0, is_measurement=False),
        'eigenvalue': (-2.5+0j)}



```python
# print results
x = max_cut.sample_most_likely(qaoa_result.eigenstate)
print('energy:', qaoa_result.eigenvalue.real)
print('time:', qaoa_result.optimizer_time)
print('max-cut objective:', qaoa_result.eigenvalue.real + offset)
print('solution:', x)
print('solution objective:', qp.objective.evaluate(x))

# plot results
colors = ['r' if x[i] == 0 else 'c' for i in range(n)]
draw_graph(G, colors, pos)
```

**How to do it with the wrapper?**


```python
exact_mes = NumPyMinimumEigensolver()
exact = MinimumEigenOptimizer(exact_mes)  # using the exact classical numpy minimum eigen solver

exact_result = exact.solve(qp)
print(exact_result)
```

    optimal function value: 6.0
    optimal value: [0. 1. 0. 1. 1.]
    status: SUCCESS



```python
qaoa_mes = MinimumEigenOptimizer(qaoa)  # using the exact classical numpy minimum eigen solver

qaoa_mes_result = qaoa_mes.solve(qp)
print(qaoa_mes_result)
```

    optimal function value: 6.0
    optimal value: [1. 0. 1. 0. 0.]
    status: SUCCESS



```python
vqe_mes = MinimumEigenOptimizer(vqe)  # using the exact classical numpy minimum eigen solver

vqe_mes_result = vqe_mes.solve(qp)
print(vqe_mes_result)
```

    optimal function value: 6.0
    optimal value: [0. 1. 0. 1. 1.]
    status: SUCCESS



```python
max_cut.interpret(vqe_mes_result)
```




    [[0, 2], [1, 3, 4]]




```python
max_cut.get_gset_result(vqe_mes_result.x)
```




    {1: 1.0, 2: 0.0, 3: 1.0, 4: 0.0, 5: 0.0}




```python
max_cut.draw(vqe_mes_result)
```

## 4 - The runtime programs <a name = 'runtime'></a>

The available programs are [here](https://quantum-computing.ibm.com/services?services=runtime).




```python
from qiskit import IBMQ

IBMQ.load_account()
provider = IBMQ.get_provider(hub='your_hub', group='your_group', project='your_project')
```


```python
runtime_backends = provider.backends(input_allowed='runtime')
runtime_backends
```


```python
simulator = provider.backend.ibmq_qasm_simulator
backend = provider.backend.ibmq_bogota

measurement_error_mitigation = False
```


```python
def callback(nfev, parameters, energy, stddev):
    intermediate_info['nfev'].append(nfev)
    intermediate_info['parameters'].append(parameters)
    intermediate_info['energy'].append(energy)
    intermediate_info['stddev'].append(stddev)
```

**VQE**


```python
from qiskit_nature.runtime import VQEProgram

# in this first release, the optimizer must be specified as dictionary
optimizer = {'name': 'QN-SPSA',
             'maxiter': 500}

intermediate_info = {
    'nfev': [],
    'parameters': [],
    'energy': [],
    'stddev': []
}


initial_point = [0.]*var_form.num_parameters

runtime_vqe = VQEProgram(ansatz=var_form,
                         optimizer=optimizer,
                         initial_point=initial_point,
                         provider=provider,
                         backend=simulator,
                         shots=2048,
                         measurement_error_mitigation=measurement_error_mitigation,
                         callback=callback)
```


```python
runtime_result = runtime_vqe.compute_minimum_eigenvalue(qubitOp)
```


```python
print('Eigenvalue:', runtime_result.eigenvalue)
```

    Eigenvalue: (-2.423828125+0j)



```python
# print results
x = max_cut.sample_most_likely(runtime_result.eigenstate)
print('energy:', runtime_result.eigenvalue.real)
print('time:', runtime_result.optimizer_time)
print('max-cut objective:', runtime_result.eigenvalue.real + offset)
print('solution:', x)
print('solution objective:', qp.objective.evaluate(x))

# plot results
colors = ['r' if x[i] == 0 else 'c' for i in range(n)]
draw_graph(G, colors, pos)
```


```python
intermediate_info['parameters']
```




    [array([ 0.1,  0.1, -0.1,  0.1,  0.1]),
     array([-0.1, -0.1,  0.1, -0.1, -0.1]),
     array([ 0.5828375,  0.5828375, -0.5828375,  0.5828375,  0.5828375]),
     array([ 0.39636021,  0.39636021, -0.39636021,  0.39636021,  0.39636021]),
     array([ 31.59405202,  31.77304695, -31.77304695,  31.59405202,
             31.77304695]),
     array([ 31.77304695,  31.59405202, -31.59405202,  31.77304695,
             31.59405202]),
     array([ 29.55866663,  33.80843234, -33.80843234,  29.38479772,
             33.98230125]),
     array([ 29.38479772,  33.98230125, -33.98230125,  29.55866663,
             33.80843234]),
     array([ 34.60890876,  28.75819021, -28.92818437,  24.50454976,
             39.03254338]),
     array([ 34.4389146 ,  28.92818437, -28.75819021,  24.33455559,
             38.86254921]),
     array([ 33.94860836,  29.25159815, -28.26788397,  23.84424935,
             38.53913544]),
     array([ 34.11550082,  29.41849061, -28.43477643,  24.01114181,
             38.37224297]),
     array([ 46.93532956,  42.40263356, -41.41891937,  36.99528475,
             25.38810003]),
     array([ 47.09964376,  42.23831936, -41.25460517,  36.83097056,
             25.55241423]),
     array([ 40.34192232,  48.99604081, -48.17443965,  43.588692  ,
             18.79469278]),
     array([ 40.17980929,  49.15815383, -48.01232662,  43.75080503,
             18.63257975]),
     array([ 37.31801799,  52.18014108, -44.99033938,  46.61259633,
             15.77078845]),
     array([ 37.15782205,  52.01994514, -45.15053532,  46.77279227,
             15.61059251]),
     array([ 43.00739109,  58.02801445, -39.30096627,  40.92322323,
             21.46016156]),
     array([ 43.16589136,  57.86951419, -39.142466  ,  40.76472296,
             21.61866182]),
     array([ 51.33658585,  49.54183789, -30.97177151,  32.43704666,
             29.78935631]),
     array([ 51.49356766,  49.6988197 , -30.8147897 ,  32.59402847,
             29.94633812]),
     array([ 52.65039496,  51.01125527, -29.65796241,  33.90646404,
             31.10316542]),
     array([ 52.80600323,  50.85564699, -29.50235413,  33.75085577,
             31.2587737 ]),
     array([ 57.7633228 ,  46.05268279, -24.54503457,  28.7935362 ,
             36.0617379 ]),
     array([ 57.60896744,  45.89832743, -24.69938993,  28.94789156,
             36.21609326]),
     array([ 58.71084438,  46.84700003, -23.59751299,  27.84601462,
             35.26742066]),
     array([ 58.55764004,  47.00020437, -23.75071732,  27.99921896,
             35.11421632]),
     array([ 51.60861473,  54.10137016, -30.85188312,  34.94824427,
             28.16519101]),
     array([ 51.45647425,  53.94922968, -30.69974264,  35.10038475,
             28.01305053]),
     array([ 51.22990446,  53.5715079 , -30.47317285,  35.32695454,
             27.78648074]),
     array([ 51.07875246,  53.72265989, -30.32202085,  35.47810653,
             27.63532874]),
     array([ 52.97898153,  51.82243083, -32.22224992,  33.72810677,
             29.53555781]),
     array([ 52.82875222,  51.97266013, -32.07202061,  33.57787747,
             29.38532851]),
     array([ 52.17928697,  52.62212538, -31.27319083,  32.92841222,
             28.58649872]),
     array([ 52.02992244,  52.77148991, -31.42255536,  32.77904769,
             28.73586325]),
     array([ 49.36462212,  55.28823913, -33.93930458,  30.11374737,
             31.40116358]),
     array([ 49.51317322,  55.43679024, -34.08785569,  30.26229847,
             31.25261247]),
     array([ 48.6728536 ,  54.59647062, -33.09975256,  29.27419534,
             32.2407156 ]),
     array([ 48.5250701 ,  54.44868711, -33.24753607,  29.42197885,
             32.09293209]),
     array([ 50.2824552 ,  56.05901516, -31.63720802,  27.66459375,
             33.70326014]),
     array([ 50.13539815,  56.20607221, -31.49015097,  27.8116508 ,
             33.85031719]),
     array([ 46.39886088,  59.94260948, -27.89998142,  31.54818807,
             37.58685446]),
     array([ 46.5452286 ,  59.79624176, -27.7536137 ,  31.40182035,
             37.44048674]),
     array([ 46.51021387,  59.97696854, -27.93434048,  31.58254713,
             37.47550146]),
     array([ 46.36450182,  59.83125648, -27.78862842,  31.43683508,
             37.62121352]),
     array([ 47.60391621,  60.92558382, -28.88295576,  32.53116241,
             36.52688618]),
     array([ 47.45882916,  61.07067087, -29.02804281,  32.67624947,
             36.38179913]),
     array([ 49.43496081,  59.09453922, -26.90742107,  30.55562772,
             38.35793078]),
     array([ 49.5794509 ,  58.95004913, -27.05191116,  30.70011781,
             38.50242087]),
     array([ 49.41084516,  58.97473602, -26.88330542,  30.67543092,
             38.47773398]),
     array([ 49.55476401,  59.11865487, -27.02722427,  30.53151207,
             38.33381513]),
     array([ 49.53075131,  59.23801349, -27.00321157,  30.55552477,
             38.21445651]),
     array([ 49.67412262,  59.09464217, -27.14658288,  30.41215346,
             38.35782783]),
     array([ 48.96168386,  59.80708094, -26.29129847,  31.26743787,
             37.50254341]),
     array([ 48.81883821,  59.94992659, -26.43414412,  31.12459222,
             37.64538906]),
     array([ 46.66367383,  62.24743124, -28.5893085 ,  28.96942784,
             39.94289371]),
     array([ 46.52133356,  62.10509097, -28.73164877,  28.82708757,
             39.80055344]),
     array([ 46.97301677,  62.55677418, -28.27996556,  29.27877078,
             40.25223665]),
     array([ 46.83116304,  62.41492045, -28.42181929,  29.13691705,
             40.11038292]),
     array([ 47.15837518,  62.74213259, -28.09460715,  29.32274448,
             40.43759507]),
     array([ 47.01699047,  62.60074788, -28.23599186,  29.4641292 ,
             40.29621035]),
     array([ 45.7830506 ,  61.36680801, -29.32899965,  30.55713699,
             39.20320256]),
     array([ 45.92398268,  61.50774009, -29.46993173,  30.69806906,
             39.06227048]),
     array([ 48.1447074 ,  63.58797006, -31.5501617 ,  32.91879378,
             36.84154576]),
     array([ 48.00421265,  63.72846481, -31.69065645,  32.77829903,
             36.98204051]),
     array([ 47.43673974,  64.43600949, -32.39820113,  32.21082613,
             37.54951342]),
     array([ 47.29666797,  64.29593772, -32.25812936,  32.07075435,
             37.68958519]),
     array([ 48.23139942,  65.09100689, -33.19286081,  32.86582353,
             36.75485374]),
     array([ 48.09173714,  65.23066917, -33.05319853,  33.00548581,
             36.89451602]),
     array([ 48.92526967,  64.53640211, -33.74746559,  32.31121875,
             36.20024896]),
     array([ 48.7860042 ,  64.39713664, -33.88673106,  32.17195328,
             36.06098349]),
     array([ 48.64727519,  64.11952702, -34.02546007,  31.89434365,
             35.78337386]),
     array([ 48.50839458,  64.25840763, -34.16434068,  32.03322426,
             35.92225448]),
     array([ 46.99631662,  65.77048559, -35.81492568,  33.68380926,
             37.43433243]),
     array([ 46.85780958,  65.90899263, -35.67641864,  33.54530222,
             37.57283948]),
     array([ 45.08404727,  67.68275493, -34.04080048,  31.90968406,
             39.20845764]),
     array([ 45.22219141,  67.54461079, -33.90265634,  31.77153992,
             39.34660178]),
     array([ 46.24288305,  66.38612781, -32.8819647 ,  30.61305694,
             40.50508476]),
     array([ 46.3806744 ,  66.52391915, -32.74417336,  30.75084828,
             40.36729342]),
     array([ 47.3445945 ,  67.48783926, -31.91770138,  31.71476839,
             39.54082144]),
     array([ 47.20714637,  67.35039113, -31.78025325,  31.57732026,
             39.40337331]),
     array([ 46.13445816,  66.41481693, -30.84467904,  30.50463205,
             38.3306851 ]),
     array([ 46.27157217,  66.27770292, -30.70756504,  30.64174605,
             38.4677991 ]),
     array([ 47.59601441,  64.81647215, -29.3831228 ,  31.9661883 ,
             39.92902987]),
     array([ 47.73280294,  64.95326068, -29.24633427,  32.10297683,
             39.79224134]),
     array([ 46.95782317,  64.17828091, -30.15778532,  31.32799706,
             40.56722111]),
     array([ 46.82135189,  64.04180963, -30.02131404,  31.19152577,
             40.7036924 ]),
     array([ 46.96992364,  64.0542195 , -30.16988579,  31.34009752,
             40.69128252]),
     array([ 46.83376176,  64.19038138, -30.03372391,  31.20393565,
             40.55512064]),
     array([ 46.46687715,  64.55726599, -29.53097935,  30.83705104,
             40.05237608]),
     array([ 46.3310172 ,  64.69312594, -29.6668393 ,  30.70119109,
             40.18823604]),
     array([ 48.30047458,  62.85923373, -27.83294709,  32.5350833 ,
             38.21877866]),
     array([ 48.16490941,  62.72366856, -27.69738192,  32.67064847,
             38.35434382]),
     array([ 48.5078249 ,  62.93130684, -28.0402974 ,  32.46301019,
             38.01142834]),
     array([ 48.37254769,  63.06658404, -27.9050202 ,  32.32773298,
             38.14670555]),
     array([ 46.70675903,  64.86736848, -26.10423576,  30.66194433,
             39.8124942 ]),
     array([ 46.57176325,  64.7323727 , -26.23923154,  30.52694855,
             39.94748998]),
     array([ 48.13369283,  66.42902288, -24.54258136,  32.08887812,
             38.2508398 ]),
     array([ 48.26841344,  66.29430228, -24.67730196,  32.22359873,
             38.3855604 ]),
     array([ 47.85794984,  66.70476588, -24.40128979,  31.81313513,
             38.10954823]),
     array([ 47.99240126,  66.57031445, -24.26683836,  31.94758656,
             37.9750968 ]),
     array([ 47.99465861,  66.56805711, -24.13039303,  31.9498439 ,
             37.83865147]),
     array([ 48.1288466 ,  66.43386912, -24.26458102,  32.08403189,
             37.97283946]),
     array([ 46.8169436 ,  67.61184203, -23.08660811,  30.90605898,
             36.66093647]),
     array([ 46.95087369,  67.74577211, -22.95267803,  30.7721289 ,
             36.79486655]),
     array([ 49.00495699,  69.79985541, -20.89859472,  28.85172307,
             38.84894985]),
     array([ 48.87127951,  69.66617794, -21.0322722 ,  28.7180456 ,
             38.71527238]),
     array([ 47.49994829,  68.42827668, -22.27017346,  27.34671437,
             37.47737112]),
     array([ 47.63337825,  68.29484672, -22.40360342,  27.48014434,
             37.34394116]),
     array([ 44.42777522,  71.63363711, -19.06481303,  24.14135394,
             40.54954419]),
     array([ 44.29458786,  71.50044975, -19.19800038,  24.2745413 ,
             40.68273155]),
     array([ 46.3093162 ,  73.64812757, -17.18327205,  22.12686349,
             38.53505373]),
     array([ 46.44226568,  73.51517809, -17.05032257,  22.25981296,
             38.66800321]),
     array([ 44.47223654,  75.61792338, -19.02035171,  20.15706768,
             36.56525792]),
     array([ 44.33952039,  75.48520723, -19.15306786,  20.28978383,
             36.69797407]),
     array([ 44.41966858,  75.56535542, -18.94043246,  20.07714843,
             36.48533868]),
     array([ 44.55215579,  75.69784262, -19.07291967,  20.20963564,
             36.61782588]),
     array([ 45.93275447,  76.94617881, -20.32125586,  21.59023432,
             37.99842457]),
     array([ 45.80049197,  77.07844131, -20.45351835,  21.45797183,
             37.86616207]),
     array([ 45.91600819,  76.83088321, -20.33800213,  21.57348805,
             38.11372017]),
     array([ 46.04805007,  76.96292509, -20.20596026,  21.70552992,
             37.98167829]),
     array([ 45.32303589,  76.2379109 , -20.79914924,  21.11234094,
             38.57486728]),
     array([ 45.45486109,  76.3697361 , -20.93097444,  20.98051574,
             38.70669247]),
     array([ 45.18381551,  76.09869053, -20.7915412 ,  21.25156131,
             38.56725924]),
     array([ 45.31542785,  76.23030287, -20.65992887,  21.11994898,
             38.4356469 ]),
     array([ 44.33415749,  75.38043567, -21.50979607,  22.10121934,
             39.2855141 ]),
     array([ 44.46556065,  75.2490325 , -21.64119923,  21.96981618,
             39.41691727]),
     array([ 44.35457558,  75.22882002, -21.53021416,  21.94960369,
             39.43712975]),
     array([ 44.48577313,  75.36001757, -21.66141172,  22.08080125,
             39.30593219]),
     array([ 44.50583015,  75.24907919, -21.55047333,  22.10085827,
             39.28587517]),
     array([ 44.37483475,  75.3800746 , -21.68146874,  21.96986287,
             39.41687058]),
     array([ 44.29991729,  75.45499205, -21.75638619,  21.89494541,
             39.36099144]),
     array([ 44.43071389,  75.32419546, -21.6255896 ,  22.025742  ,
             39.49178804]),
     array([ 44.30994225,  75.31436607, -21.61576021,  22.03557139,
             39.50161743]),
     array([ 44.44054328,  75.4449671 , -21.74636124,  21.90497037,
             39.3710164 ]),
     array([ 44.3543804 ,  75.48921282, -21.66019836,  21.99113324,
             39.45717927]),
     array([ 44.48478901,  75.35880422, -21.79060696,  21.86072464,
             39.32677067]),
     array([ 44.36425705,  75.34911695, -21.67007501,  21.98125659,
             39.44730263]),
     array([ 44.49447627,  75.47933618, -21.80029423,  21.85103737,
             39.3170834 ]),
     array([ 44.46039213,  75.44525203, -21.63617729,  21.88512152,
             39.35116755]),
     array([ 44.33035933,  75.31521924, -21.76621009,  22.01515431,
             39.48120034]),
     array([ 44.33012089,  75.31498079, -21.76644853,  22.01539276,
             39.61128803]),
     array([ 44.20027165,  75.18513155, -21.89629777,  22.145242  ,
             39.48143879]),
     array([ 44.28654235,  75.27140225, -21.81002707,  21.92930283,
             39.56770949]),
     array([ 44.41621082,  75.40107072, -21.6803586 ,  22.0589713 ,
             39.69737796]),
     array([ 44.32942479,  75.31428469, -21.76714463,  21.97218527,
             39.61059193]),
     array([ 44.45891519,  75.4437751 , -21.63765422,  22.10167568,
             39.74008234]),
     array([ 44.30770675,  75.16325168, -21.91817764,  21.95046723,
             39.45955892]),
     array([ 44.17839178,  75.29256665, -21.78886267,  21.82115226,
             39.58887389]),
     array([ 44.07996993,  75.3909885 , -21.69044082,  21.85187251,
             39.55815364]),
     array([ 44.20911203,  75.2618464 , -21.81958292,  21.72273042,
             39.68729574]),
     array([ 43.80046439,  75.67049404, -21.41093528,  22.00240636,
             39.2786481 ]),
     array([ 43.92943609,  75.54152234, -21.53990698,  22.13137806,
             39.4076198 ]),
     array([ 44.03582894,  75.56393322, -21.5174961 ,  22.23777091,
             39.38520892]),
     array([ 43.90702521,  75.43512949, -21.64629983,  22.10896718,
             39.51401265]),
     array([ 43.55753867,  75.21428107, -21.86714825,  21.75948064,
             39.86349919]),
     array([ 43.68617678,  75.08564296, -21.99578637,  21.88811875,
             39.73486107]),
     array([ 43.81406448,  75.08623004, -21.99519928,  21.88753166,
             39.60697337]),
     array([ 43.68558969,  74.95775526, -22.12367407,  22.01600645,
             39.73544816]),
     array([ 44.0762498 ,  75.34841536, -21.60470026,  21.62534634,
             39.21647436]),
     array([ 44.2045635 ,  75.47672906, -21.73301396,  21.49703265,
             39.34478805]),
     array([ 44.11421514,  75.3863807 , -21.51451082,  21.71553578,
             39.25443969]),
     array([ 43.98606036,  75.25822592, -21.6426656 ,  21.58738101,
             39.12628492]),
     array([ 44.49991421,  75.64408179, -21.12881175,  22.10123485,
             39.51214078]),
     array([ 44.37191623,  75.77207977, -21.25680973,  21.97323687,
             39.64013876]),
     array([ 44.55334035,  75.71849889, -21.20322885,  22.02681775,
             39.45871464]),
     array([ 44.42549711,  75.59065565, -21.07538561,  22.154661  ,
             39.58655789]),
     array([ 44.03029344,  75.19545199, -20.68018195,  22.54986466,
             40.10945208]),
     array([ 43.90260292,  75.06776146, -20.55249142,  22.67755519,
             39.98176155]),
     array([ 44.52829539,  75.82099371, -21.30572367,  21.92432293,
             40.7349938 ]),
     array([ 44.65583517,  75.69345393, -21.17818389,  22.05186271,
             40.60745402]),
     array([ 44.68167027,  75.66761883, -21.15234879,  22.07769782,
             40.58161892]),
     array([ 44.80906121,  75.54022789, -21.02495785,  22.20508876,
             40.45422798]),
     array([ 44.8002783 ,  75.67625478, -21.16098474,  22.06906186,
             40.46301089]),
     array([ 44.67303432,  75.5490108 , -21.03374076,  22.19630584,
             40.59025487]),
     array([ 43.77836001,  74.52723765, -20.01196761,  23.09098015,
             41.61202803]),
     array([ 43.65126116,  74.65433649, -20.13906645,  23.218079  ,
             41.48492919]),
     array([ 44.96448361,  73.34111404, -18.69888851,  21.90485655,
             42.92510713]),
     array([ 45.0914391 ,  73.21415855, -18.825844  ,  21.77790105,
             42.79815163]),
     array([ 44.96883579,  73.33676186, -18.70324069,  21.90050437,
             42.92075495]),
     array([ 45.09564968,  73.20994797, -18.83005458,  21.77369048,
             42.79394106]),
     array([ 45.34784484,  72.83107883, -19.20892372,  21.39482133,
             42.5417459 ]),
     array([ 45.47451882,  72.95775281, -19.08224974,  21.52149532,
             42.41507191]),
     array([ 45.2589896 ,  72.74222359, -19.29777896,  21.43250184,
             42.50406539]),
     array([ 45.38552534,  72.86875933, -19.17124322,  21.3059661 ,
             42.63060113]),
     array([ 43.91560162,  71.39883561, -20.64116694,  22.77588982,
             41.03427828]),
     array([ 43.78920249,  71.27243648, -20.76756607,  22.90228895,
             41.16067741]),
     array([ 45.53613019,  73.14562829, -18.89437426,  21.02909714,
             39.2874856 ]),
     array([ 45.6623943 ,  73.01936418, -19.02063837,  21.15536125,
             39.41374971]),
     array([ 45.75816771,  73.04972141, -18.99028114,  21.12500402,
             39.38339248]),
     array([ 45.63203707,  72.92359077, -19.11641178,  21.25113466,
             39.50952312]),
     array([ 44.40928095,  71.70083465, -20.2131692 ,  22.47389078,
             40.60628054]),
     array([ 44.53527965,  71.82683335, -20.3391679 ,  22.34789208,
             40.73227924]),
     array([ 42.63419115,  69.92574485, -18.4380794 ,  24.37484882,
             38.70532249]),
     array([ 42.50832291,  69.79987661, -18.31221116,  24.24898058,
             38.83119073]),
     array([ 40.96848751,  68.26004121, -16.77237576,  22.58340594,
             40.37102613]),
     array([ 40.84274827,  68.13430197, -16.64663652,  22.70914519,
             40.49676537]),
     array([ 42.64193935,  69.93349305, -18.4458276 ,  21.03556577,
             38.69757429]),
     array([ 42.51632768,  69.80788138, -18.32021593,  20.9099541 ,
             38.82318596]),
     array([ 42.84493849,  70.0110067 , -18.64882674,  21.11307942,
             38.49457515]),
     array([ 42.719453  ,  70.13649219, -18.52334125,  21.23856492,
             38.62006065]),
     array([ 41.11521886,  71.61536564, -16.91910711,  22.71743836,
             40.22429478]),
     array([ 41.24057955,  71.74072633, -17.0444678 ,  22.84279905,
             40.09893409]),
     array([ 43.11379301,  73.73917701, -19.04291848,  24.84124973,
             38.10048341]),
     array([ 43.23903023,  73.61393978, -18.91768126,  24.71601251,
             38.22572063]),
     array([ 44.75555469,  72.2225304 , -17.40115681,  23.19948805,
             39.61713001]),
     array([ 44.63043961,  72.09741533, -17.52627188,  23.32460312,
             39.74224509]),
     array([ 42.66726471,  70.25923462, -19.36445258,  25.16278383,
             41.70542   ]),
     array([ 42.79225891,  70.13424042, -19.48944679,  25.28777803,
             41.58042579]),
     array([ 41.90841096,  71.14296297, -18.48072424,  24.27905549,
             42.46427374]),
     array([ 41.78353636,  71.01808837, -18.60559884,  24.40393009,
             42.58914834]),
     array([ 42.51578932,  71.75034132, -17.99810211,  23.67167713,
             41.85689538]),
     array([ 42.39103309,  71.6255851 , -17.87334588,  23.79643336,
             41.98165161]),
     array([ 43.94082798,  73.05074092, -19.42314078,  22.37127754,
             40.43185672]),
     array([ 43.81618891,  73.17537999, -19.29850171,  22.24663847,
             40.55649579]),
     array([ 43.58517533,  73.40639357, -19.06748812,  22.01562488,
             40.78750937]),
     array([ 43.46065223,  73.53091667, -18.94296502,  21.89110179,
             40.91203247]),
     array([ 44.05965299,  72.93191591, -19.41755748,  22.36569425,
             40.43744001]),
     array([ 43.93524469,  73.05632421, -19.54196578,  22.49010254,
             40.31303171]),
     array([ 46.21623095,  70.89963258, -17.38527415,  20.20911628,
             42.46972334]),
     array([ 46.09193632,  70.77533795, -17.26097952,  20.33341092,
             42.59401797]),
     array([ 45.97250741,  70.65590905, -17.14155062,  20.32865773,
             42.58926478]),
     array([ 46.0966895 ,  70.78009114, -17.26573271,  20.45283982,
             42.71344688]),
     array([ 45.96872605,  70.77619834, -17.26183991,  20.44894702,
             42.70955408]),
     array([ 46.0927967 ,  70.65212768, -17.13776925,  20.32487637,
             42.58548342]),
     array([ 47.10504965,  69.63987474, -16.24947661,  19.31262343,
             41.69719078]),
     array([ 46.98108935,  69.76383504, -16.12551631,  19.43658372,
             41.57323048]),
     array([ 47.82545567,  68.91946872, -16.96988263,  18.46836641,
             42.5414478 ]),
     array([ 47.94930667,  68.79561772, -17.09373363,  18.5922174 ,
             42.4175968 ]),
     array([ 46.29950965,  70.321672  , -15.56767935,  16.94242039,
             43.94365107]),
     array([ 46.42325239,  70.44541474, -15.44393661,  17.06616313,
             44.06739382]),
     array([ 46.81608222,  70.96188008, -14.92747127,  17.45899296,
             44.46022364]),
     array([ 46.93971773,  70.83824457, -15.05110678,  17.58262846,
             44.58385915]),
     array([ 48.61056288,  69.16739942, -16.72195193,  19.25347362,
             46.2547043 ]),
     array([ 48.73409216,  69.04387014, -16.84548121,  19.3770029 ,
             46.37823358]),
     array([ 47.36964766,  70.53173868, -15.35761267,  18.01255839,
             45.01378908]),
     array([ 47.24622362,  70.40831464, -15.48103671,  17.88913436,
             44.89036504]),
     array([ 46.05190512,  69.21399614, -16.79867498,  16.57149609,
             43.69604655]),
     array([ 45.92858535,  69.09067637, -16.67535521,  16.69481586,
             43.57272678]),
     array([ 45.89617138,  69.0582624 , -16.51972479,  16.72722984,
             43.41709636]),
     array([ 45.77295493,  68.93504595, -16.64294123,  16.85044628,
             43.5403128 ]),
     array([ 47.40088567,  70.68609075, -15.01501049,  15.09940148,
             41.91238206]),
     array([ 47.52399973,  70.56297669, -14.89189643,  15.22251554,
             41.789268  ]),
     array([ 48.23344537,  69.85353105, -14.30546339,  15.93196119,
             41.20283496]),
     array([ 48.11043278,  69.97654364, -14.18245079,  15.80894859,
             41.07982236]),
     array([ 48.92168997,  69.28819849, -14.99370798,  16.49729375,
             41.89107955]),
     array([ 48.79877793,  69.16528645, -14.87079595,  16.62020578,
             41.76816752]),
     array([ 49.35555232,  69.72206083, -15.30475797,  16.18624376,
             42.3249419 ]),
     array([ 49.23273995,  69.59924847, -15.42757033,  16.0634314 ,
             42.20212954]),
     array([ 49.17028738,  69.41408234, -15.4900229 ,  15.87826526,
             42.0169634 ]),
     array([ 49.04757382,  69.5367959 , -15.61273646,  16.00097883,
             42.13967697]),
     array([ 49.20316274,  69.25859135, -15.45714754,  15.72277428,
             41.98408804]),
     array([ 49.32577837,  69.38120698, -15.33453192,  15.84538991,
             41.86147242]),
     array([ 49.17440758,  69.10731766, -15.48590271,  15.57150058,
             42.13536174]),
     array([ 49.05188904,  69.22983619, -15.60842124,  15.69401912,
             42.01284321]),
     array([ 49.37492746,  68.7843755 , -15.28538282,  15.3709807 ,
             42.33588163]),
     array([ 49.49734973,  68.90679777, -15.16296055,  15.24855843,
             42.4583039 ]),
     array([ 49.69749171,  68.98461292, -15.0851454 ,  15.17074328,
             42.65844588]),
     array([ 49.57516488,  69.10693975, -14.96281857,  15.04841645,
             42.53611905]),
     array([ 49.76394588,  68.91815876, -15.15159957,  15.23719744,
             42.72490004]),
     array([ 49.88617807,  68.79592657, -15.27383176,  15.35942963,
             42.84713223]),
     array([ 49.87750857,  68.80459606, -15.38730061,  15.35076014,
             42.83846274]),
     array([ 49.99964692,  68.68245772, -15.26516226,  15.47289848,
             42.96060108]),
     array([ 49.93599057,  68.86815934, -15.32881861,  15.28719686,
             42.77489946]),
     array([ 49.81394529,  68.74611406, -15.45086388,  15.40924214,
             42.89694474]),
     array([ 49.8408898 ,  68.77305857, -15.42391938,  15.38229763,
             42.87000023]),
     array([ 49.71893682,  68.65110559, -15.54587236,  15.50425061,
             42.99195321]),
     array([ 49.76718959,  68.69935836, -15.49761959,  15.45599784,
             43.06556188]),
     array([ 49.64532815,  68.57749692, -15.61948103,  15.57785928,
             42.94370044]),
     array([ 49.73622572,  68.66839449, -15.52858346,  15.48696171,
             43.15636864]),
     array([ 49.85799635,  68.79016512, -15.40681283,  15.36519108,
             43.03459801]),
     array([ 49.5620308 ,  68.372519  , -15.82445895,  15.7828372 ,
             43.33056356]),
     array([ 49.44035023,  68.49419957, -15.70277838,  15.66115663,
             43.45224413]),
     array([ 48.9688447 ,  69.08729631, -15.10968163,  15.06805989,
             44.04534088]),
     array([ 48.84725348,  68.9657051 , -15.23127285,  15.1896511 ,
             43.92374966]),
     array([ 47.9487254 ,  68.1886796 , -16.12980093,  16.08817918,
             43.14672416]),
     array([ 48.07022799,  68.06717702, -16.00829835,  15.9666766 ,
             43.02522158]),
     array([ 46.386279  ,  69.75112601, -17.69224734,  17.77204023,
             44.70917057]),
     array([ 46.26486435,  69.87254065, -17.81366198,  17.65062559,
             44.83058521]),
     array([ 48.12463109,  68.01277391, -15.95389524,  19.51039233,
             42.84949108]),
     array([ 48.24595848,  67.89144652, -15.83256785,  19.63171972,
             42.97081848]),
     array([ 47.74858327,  68.26758091, -16.20870224,  19.25558533,
             42.59468409]),
     array([ 47.8698241 ,  68.38882173, -16.32994306,  19.13434451,
             42.47344327]),
     array([ 46.5085052 ,  67.14865775, -14.96862416,  20.37450849,
             43.71360724]),
     array([ 46.62966012,  67.02750283, -15.08977908,  20.49566341,
             43.83476216]),
     array([ 45.34746848,  68.30969448, -13.80758744,  19.33454144,
             42.6736402 ]),
     array([ 45.46853815,  68.1886248 , -13.92865712,  19.21347176,
             42.55257052]),
     array([ 47.59391351,  66.06324945, -16.05403247,  17.08809641,
             40.42719517]),
     array([ 47.71489859,  65.94226436, -16.17501755,  16.96711133,
             40.30621009]),
     array([ 47.24669849,  66.41046447, -15.82771858,  17.43531143,
             40.65350906]),
     array([ 47.36759962,  66.28956334, -15.70681745,  17.3144103 ,
             40.77441019]),
     array([ 45.40218896,  68.25497399, -17.5514103 ,  19.15900315,
             38.92981734]),
     array([ 45.52300677,  68.13415618, -17.6722281 ,  19.27982096,
             38.80899954]),
     array([ 45.70023505,  67.9569279 , -17.97019149,  19.57778434,
             38.51103615]),
     array([ 45.82097016,  67.8361928 , -17.84945639,  19.45704924,
             38.63177125]),
     array([ 47.76974529,  66.00807068, -15.90068126,  17.62892713,
             40.58054638]),
     array([ 47.64909227,  65.88741767, -16.02133427,  17.50827411,
             40.45989337]),
     array([ 48.97363499,  67.21196039, -14.81736308,  18.83281683,
             41.78443609]),
     array([ 48.85306346,  67.09138886, -14.69679155,  18.7122453 ,
             41.66386455]),
     array([ 48.77140101,  66.88923577, -14.61512911,  18.51009221,
             41.46171146]),
     array([ 48.65091037,  67.00972641, -14.49463846,  18.63058285,
             41.58220211]),
     array([ 48.86386257,  66.91718456, -14.70759066,  18.538041  ,
             41.36924991]),
     array([ 48.74345222,  66.79677421, -14.58718032,  18.41763066,
             41.48966026]),
     array([ 48.62345375,  66.55644512, -14.34685122,  18.29763219,
             41.72998935]),
     array([ 48.50312313,  66.67677574, -14.46718185,  18.17730156,
             41.60965872]),
     array([ 49.67363039,  65.62651996, -13.29667459,  19.22755735,
             42.78016599]),
     array([ 49.55337892,  65.50626848, -13.41692606,  19.34780883,
             42.65991451]),
     array([ 49.04551467,  64.87823135, -13.92479031,  19.85567308,
             42.03187738]),
     array([ 48.92534178,  64.99840423, -14.04496319,  19.97584596,
             42.15205026]),
     array([ 48.64822632,  65.27551969, -14.20198379,  20.13286656,
             42.30907087]),
     array([ 48.76832118,  65.15542484, -14.32207865,  20.25296142,
             42.42916572]),
     array([ 48.81402284,  64.9897058 , -14.36778031,  20.29866307,
             42.47486738]),
     array([ 48.93404021,  65.10972318, -14.48779768,  20.41868045,
             42.59488475]),
     array([ 48.74933518,  64.80507771, -14.30309265,  20.11403498,
             42.29023928]),
     array([ 48.62939474,  64.92501814, -14.18315221,  20.23397541,
             42.41017972]),
     array([ 48.44572631,  65.10868657, -13.99948378,  20.53750788,
             42.71371218]),
     array([ 48.32586228,  65.2285506 , -13.87961975,  20.41764384,
             42.59384815]),
     array([ 48.04971653,  65.50469635, -13.48368585,  20.1414981 ,
             42.19791425]),
     array([ 47.92992838,  65.6244845 , -13.603474  ,  20.02170994,
             42.3177024 ]),
     array([ 47.76308833,  65.67161176, -13.65060125,  19.85486989,
             42.36482965]),
     array([ 47.88280113,  65.79132455, -13.77031405,  19.97458269,
             42.48454245]),
     array([ 47.0189837 ,  64.92750713, -12.78685867,  19.11076526,
             41.62072502]),
     array([ 46.89934574,  64.80786917, -12.90649662,  18.99112731,
             41.50108707]),
     array([ 47.18960704,  65.09813047, -12.61623533,  19.40095222,
             41.91091198]),
     array([ 47.30917066,  65.21769409, -12.49667171,  19.28138861,
             41.79134837]),
     array([ 47.61251194,  65.52103536, -12.19333043,  18.97804733,
             41.36851731]),
     array([ 47.73200172,  65.64052515, -12.07384065,  18.85855755,
             41.48800709]),
     array([ 47.71714972,  65.62567315, -12.08869264,  18.87340954,
             41.59257153]),
     array([ 47.83656616,  65.74508959, -11.9692762 ,  18.7539931 ,
             41.47315509]),
     array([ 47.76774762,  65.79561463, -11.91875116,  18.82281165,
             41.42263005]),
     array([ 47.8870912 ,  65.67627105, -12.03809475,  18.70346806,
             41.54197364]),
     array([ 48.00992608,  65.55343617, -12.04165841,  18.58063319,
             41.66480851]),
     array([ 47.89065486,  65.67270739, -12.16092962,  18.6999044 ,
             41.5455373 ]),
     array([ 47.71148808,  65.85187417, -12.45929572,  18.87907119,
             41.36637051]),
     array([ 47.59228876,  65.97107349, -12.34009641,  18.9982705 ,
             41.2471712 ]),
     array([ 47.68940696,  65.87395529, -12.55634249,  18.78202441,
             41.46341729]),
     array([ 47.80853485,  65.7548274 , -12.43721461,  18.9011523 ,
             41.3442894 ]),
     array([ 47.80809347,  65.75526878, -12.31859906,  19.01976785,
             41.22567385]),
     array([ 47.9271504 ,  65.63621185, -12.43765598,  18.90071092,
             41.34473078]),
     array([ 48.03918963,  65.52417262, -12.54969521,  18.78867169,
             41.45677001]),
     array([ 47.92020321,  65.64315904, -12.43070879,  18.90765811,
             41.33778359]),
     array([ 48.05681624,  65.38762964, -12.56732183,  18.65212871,
             41.47439662]),
     array([ 48.17573261,  65.50654601, -12.68623819,  18.77104508,
             41.59331299]),
     array([ 48.24874049,  65.57955389, -12.87809283,  18.96289972,
             41.78516763]),
     array([ 48.36758725,  65.69840065, -12.75924608,  18.84405296,
             41.66632087]),
     array([ 49.05882005,  66.27085586, -12.18679086,  18.27159775,
             41.09386566]),
     array([ 48.94004246,  66.38963345, -12.06801327,  18.15282016,
             40.97508806]),
     array([ 49.72036579,  65.72801899, -12.72962774,  18.93314349,
             41.75541139]),
     array([ 49.60165693,  65.60931012, -12.8483366 ,  18.81443462,
             41.63670253]),
     array([ 49.58225838,  65.47127101, -12.98637572,  18.79503607,
             41.49866341]),
     array([ 49.46361781,  65.58991157, -12.86773515,  18.6763955 ,
             41.61730398]),
     array([ 49.63117721,  65.42235217, -12.91672186,  18.72538221,
             41.56831727]),
     array([ 49.51260451,  65.54092487, -13.03529456,  18.84395491,
             41.44974458]),
     array([ 48.88415781,  66.16937157, -13.66374126,  19.47240162,
             40.82129787]),
     array([ 49.00266305,  66.05086633, -13.54523602,  19.35389637,
             40.93980311]),
     array([ 49.62954914,  65.30554203, -12.79991172,  18.60857207,
             41.5666892 ]),
     array([ 49.74798735,  65.42398024, -12.91834993,  18.72701028,
             41.68512741]),
     array([ 50.10290278,  65.66052408, -13.27326536,  18.96355412,
             41.92167126]),
     array([ 49.98453119,  65.77889567, -13.15489377,  19.08192571,
             42.04004284]),
     array([ 50.09650019,  65.66692667, -13.26686277,  18.85165134,
             41.92807385]),
     array([ 50.21480556,  65.5486213 , -13.38516814,  18.96995671,
             41.80976848]),
     array([ 50.19307418,  65.45211313, -13.36343676,  19.06646489,
             41.7132603 ]),
     array([ 50.31131373,  65.57035268, -13.48167631,  18.94822533,
             41.83149986]),
     array([ 50.05772022,  65.31675917, -13.34625693,  19.08364471,
             41.57790635]),
     array([ 50.17589436,  65.43493331, -13.2280828 ,  19.20181885,
             41.69608048]),
     array([ 50.54980927,  65.92695733, -12.73605878,  19.69384286,
             42.1881045 ]),
     array([ 50.66791837,  65.80884822, -12.85416789,  19.57573375,
             42.06999539]),
     array([ 50.92086994,  65.43785218, -13.22516393,  19.32278219,
             41.69899935]),
     array([ 51.03891441,  65.55589665, -13.10711946,  19.20473771,
             41.81704382]),
     array([ 50.79120613,  65.19020815, -13.35482774,  19.452446  ,
             41.45135532]),
     array([ 50.67322591,  65.30818836, -13.47280796,  19.57042622,
             41.56933554]),
     array([ 50.64349783,  65.33791644, -13.50253604,  19.48223795,
             41.59906361]),
     array([ 50.76141417,  65.2200001 , -13.3846197 ,  19.6001543 ,
             41.48114727]),
     array([ 50.79699864,  65.30226848, -13.34903524,  19.63573876,
             41.44556281]),
     array([ 50.6791458 ,  65.18441564, -13.46688808,  19.51788592,
             41.56341565]),
     array([ 51.79452004,  66.18200017, -12.35151383,  20.51547045,
             40.44804141]),
     array([ 51.67673033,  66.29978988, -12.46930354,  20.63326016,
             40.56583112]),
     array([ 51.11288371,  66.74590955, -12.91542321,  21.07937984,
             41.12967773]),
     array([ 51.23061066,  66.8636365 , -13.03315016,  21.19710678,
             41.01195079]),
     array([ 50.06469214,  65.81538253, -11.98489618,  20.14885281,
             42.17786931]),
     array([ 50.18235668,  65.69771798, -11.86723164,  20.03118826,
             42.06020476]),
     array([ 50.01773576,  65.7447364 , -12.03185256,  20.19580919,
             42.10722318]),
     array([ 50.13533826,  65.8623389 , -11.91425006,  20.07820668,
             42.22482569]),
     array([ 49.25914537,  64.98614601, -12.79044296,  20.83685876,
             41.34863279]),
     array([ 49.37668618,  65.10368682, -12.67290214,  20.95439958,
             41.46617361]),
     array([ 50.19757631,  65.80709747, -11.9694915 ,  21.65781022,
             42.28706373]),
     array([ 50.08009683,  65.92457695, -11.85201201,  21.7752897 ,
             42.16958425]),
     array([ 49.85662278,  66.14805099, -11.51111948,  22.11618224,
             41.82869171]),
     array([ 49.73920429,  66.26546949, -11.62853797,  21.99876375,
             41.9461102 ]),
     array([ 49.89728172,  66.2247499 , -11.58781838,  22.15684118,
             41.90539062]),
     array([ 49.77992388,  66.10739205, -11.47046053,  22.03948334,
             41.78803277]),
     array([ 50.88444923,  67.32921494, -12.69228342,  23.14400869,
             43.00985566]),
     array([ 51.00174677,  67.2119174 , -12.57498588,  23.26130623,
             42.89255812]),
     array([ 51.45411569,  66.75954848, -12.12261696,  23.71367515,
             42.32295162]),
     array([ 51.57135326,  66.64231091, -12.00537939,  23.83091272,
             42.4401892 ]),
     array([ 51.52913549,  66.68452868, -12.04759716,  23.78869495,
             42.51514936]),
     array([ 51.64631342,  66.56735075, -11.93041923,  23.90587288,
             42.39797142]),
     array([ 51.85630182,  66.47448098, -11.83754946,  24.11586128,
             42.18798303]),
     array([ 51.73918319,  66.35736235, -11.72043083,  23.99874265,
             42.30510165]),
     array([ 51.91653694,  66.5347161 , -11.78072494,  24.1760964 ,
             42.1277479 ]),
     array([ 51.7994773 ,  66.41765646, -11.89778459,  24.05903676,
             42.24480754]),
     array([ 51.6306143 ,  66.24879346, -12.06664759,  24.00717474,
             42.29666956]),
     array([ 51.74761528,  66.36579444, -11.94964661,  23.89017376,
             42.41367055]),
     array([ 50.8453883 ,  65.46356746, -12.85187359,  24.79240074,
             41.6283862 ]),
     array([ 50.96233094,  65.5805101 , -12.73493095,  24.6754581 ,
             41.51144356]),
     array([ 52.0218137 ,  66.75687748, -11.67544818,  23.61597534,
             40.4519608 ]),
     array([ 52.13869832,  66.63999286, -11.55856357,  23.49909072,
             40.33507618]),
     array([ 51.23761244,  67.42425184, -12.45964944,  24.28334969,
             41.11933516]),
     array([ 51.35443935,  67.54107874, -12.34282254,  24.40017659,
             41.23616206]),
     array([ 49.74388028,  65.93051967, -13.83661211,  22.78961753,
             39.74237249]),
     array([ 49.86064977,  66.04728917, -13.95338161,  22.90638702,
             39.62560299]),
     array([ 49.07094979,  65.25758919, -13.28039403,  22.23339944,
             40.41530297]),
     array([ 49.18766219,  65.37430158, -13.16368163,  22.11668704,
             40.29859057]),
     array([ 50.61672573,  66.80336512, -11.73461809,  20.5709679 ,
             38.86952704]),
     array([ 50.73338133,  66.92002072, -11.61796249,  20.68762351,
             38.75287143]),
     array([ 50.01017952,  66.19681891, -12.45776341,  19.9644217 ,
             39.47607324]),
     array([ 49.89358041,  66.08021981, -12.3411643 ,  19.84782259,
             39.59267235]),
     array([ 49.35182827,  65.53846766, -11.79941215,  19.30607044,
             40.01788159]),
     array([ 49.46837117,  65.65501057, -11.91595506,  19.42261335,
             40.1344245 ]),
     array([ 50.52244286,  66.82556925, -12.97002674,  20.59317204,
             41.30498318]),
     array([ 50.63892986,  66.70908225, -13.08651375,  20.47668503,
             41.18849618]),
     array([ 50.45541972,  66.89259239, -13.019435  ,  20.54376378,
             41.25557493]),
     array([ 50.57185111,  66.776161  , -12.90300361,  20.66019517,
             41.37200632]),
     array([ 51.09302595,  66.37136223, -12.49820484,  21.18137   ,
             41.89318115]),
     array([ 50.97664988,  66.25498616, -12.38182878,  21.06499394,
             41.77680509]),
     array([ 50.5035079 ,  65.78184418, -11.90868679,  20.59185196,
             41.30366311]),
     array([ 50.38718688,  65.66552316, -11.79236577,  20.47553094,
             41.18734209]),
     array([ 50.92236937,  66.08443939, -12.211282  ,  20.89444716,
             41.60625831]),
     array([ 50.80610311,  66.20070565, -12.32754826,  21.01071343,
             41.72252457]),
     array([ 50.54320583,  66.46360293, -12.47423375,  21.15739892,
             41.86921007]),
     array([ 50.65941761,  66.34739114, -12.59044554,  21.2736107 ,
             41.98542185]),
     array([ 50.25882936,  66.63182181, -12.18985728,  20.87302245,
             41.5848336 ]),
     array([ 50.37498694,  66.74797939, -12.30601487,  20.98918003,
             41.70099118]),
     array([ 50.17661312,  66.54960558, -11.99153739,  20.67470256,
             41.38651371]),
     array([ 50.06050947,  66.43350192, -12.10764105,  20.79080622,
             41.50261736]),
     array([ 49.71759028,  65.97453273, -12.56661024,  21.1337254 ,
             41.96158655]),
     array([ 49.60154028,  66.09058273, -12.45056024,  21.2497754 ,
             41.84553655]),
     array([ 49.7551293 ,  65.93699372, -12.72014587,  21.09618639,
             42.11512218]),
     array([ 49.87112591,  65.8209971 , -12.60414925,  20.98018977,
             41.99912557]),
     array([ 50.34885322,  65.2273263 , -12.12642194,  20.38651897,
             41.52139826]),
     array([ 50.46479671,  65.3432698 , -12.01047845,  20.50246247,
             41.40545477]),
     array([ 51.10774271,  66.10210643, -11.36753245,  21.2612991 ,
             40.76250877]),
     array([ 51.22363334,  65.98621579, -11.25164182,  21.14540847,
             40.64661813]),
     array([ 49.94208704,  67.2677621 , -12.41735008,  22.31111673,
             41.81232639]),
     array([ 50.05792508,  67.15192405, -12.53318812,  22.42695477,
             41.92816443]),
     array([ 49.90678662,  67.18727682, -12.38204965,  22.391602  ,
             41.77702597]),
     array([ 50.02257232,  67.30306252, -12.49783536,  22.2758163 ,
             41.89281167]),
     array([ 49.57517425,  66.73993082, -12.05043728,  22.838948  ,
             41.32967997]),
     array([ 49.45944062,  66.85566445, -11.93470365,  22.72321438,
             41.4454136 ]),
     array([ 50.58693117,  65.8438557 , -13.06219421,  23.85070493,
             40.43360485]),
     array([ 50.47124937,  65.72817389, -12.9465124 ,  23.73502312,
             40.31792304]),
     array([ 50.152758  ,  65.52531276, -12.62802104,  23.53216199,
             39.99943168]),
     array([ 50.26838823,  65.40968253, -12.74365126,  23.41653176,
             40.11506191]),
     array([ 50.68337044,  64.99470032, -13.27421238,  23.00154955,
             40.64562302]),
     array([ 50.79894934,  64.87912142, -13.15863347,  22.88597065,
             40.53004411]),
     array([ 50.43077952,  65.24729124, -13.41127547,  23.25414047,
             40.89821394]),
     array([ 50.54630735,  65.13176341, -13.5268033 ,  23.13861264,
             40.78268611]),
     array([ 50.13332735,  65.54474341, -12.9983463 ,  23.55159264,
             41.19566611]),
     array([ 50.01785035,  65.66022041, -13.1138233 ,  23.66706964,
             41.31114311]),
     array([ 50.75636218,  64.92170858, -12.37531146,  22.8131314 ,
             40.45720486]),
     array([ 50.87178859,  64.80628217, -12.25988505,  22.92855781,
             40.57263127]),
     array([ 49.99013567,  65.68793509, -13.02616191,  22.04690489,
             39.80635441]),
     array([ 50.10551173,  65.57255903, -13.14153797,  22.16228095,
             39.69097835]),
     array([ 49.2796173 ,  66.51377941, -12.31564355,  21.33638652,
             40.63219873]),
     array([ 49.16429135,  66.39845345, -12.20031759,  21.22106057,
             40.51687278]),
     array([ 50.08676729,  67.32092939, -13.12279353,  22.25881258,
             41.43934872]),
     array([ 50.20204337,  67.43620547, -13.23806961,  22.1435365 ,
             41.55462479]),
     array([ 49.34255589,  66.57671799, -12.26335569,  23.00302398,
             40.57991088]),
     array([ 49.22732945,  66.46149155, -12.37858213,  23.11825042,
             40.69513732]),
     array([ 49.69322637,  66.92738848, -11.79750817,  22.53717647,
             40.22924039]),
     array([ 49.80840341,  67.04256551, -11.9126852 ,  22.6523535 ,
             40.11406336]),
     array([ 49.58231317,  66.93160313, -11.80172282,  22.42626326,
             40.34015359]),
     array([ 49.69744102,  66.81647527, -11.68659497,  22.54139112,
             40.22502574]),
     array([ 49.39957268,  67.22942252, -11.98446331,  22.24352277,
             40.63797299]),
     array([ 49.28449377,  67.11434362, -12.09954222,  22.12844386,
             40.52289409]),
     array([ 49.16019718,  66.99004703, -12.22383881,  21.88911709,
             40.3985975 ]),
     array([ 49.045167  ,  66.87501685, -12.33886899,  22.00414728,
             40.28356732]),
     array([ 50.00270576,  67.71757393, -11.38133023,  21.1615902 ,
             41.1261244 ]),
     array([ 49.88772408,  67.83255561, -11.49631191,  21.04660851,
             41.24110608]),
     array([ 50.55041292,  67.05493336, -10.71868967,  21.70929735,
             40.46348383]),
     array([ 50.66534632,  67.16986677, -10.83362307,  21.82423076,
             40.57841724]),
     array([ 51.01046178,  67.62986757, -11.29362388,  22.16934622,
             41.03841804]),
     array([ 51.12534713,  67.51498223, -11.17873853,  22.28423156,
             40.9235327 ]),
     array([ 49.89410732,  68.74622204, -12.29514083,  21.05299175,
             42.039935  ]),
     array([ 50.00894483,  68.63138453, -12.40997834,  21.16782926,
             42.15477251]),
     array([ 50.42539741,  68.21493195, -12.71164103,  21.58428184,
             42.4564352 ]),
     array([ 50.31060752,  68.32972184, -12.82643092,  21.46949196,
             42.57122509]),
     array([ 51.41462284,  67.22570652, -11.60767312,  22.57350727,
             41.35246729]),
     array([ 51.52936532,  67.11096404, -11.7224156 ,  22.68824975,
             41.46720977]),
     array([ 50.81323051,  67.71240356, -11.0062808 ,  22.08681023,
             40.75107496]),
     array([ 50.92792579,  67.82709884, -11.12097608,  21.97211495,
             40.86577024]),
     array([ 51.11334893,  68.12717027, -11.30639921,  21.78669181,
             41.05119338]),
     array([ 51.22799722,  68.01252198, -11.42104751,  21.67204352,
             41.16584167]),
     array([ 50.96879305,  68.27172615, -11.27644486,  21.93124768,
             40.90663751]),
     array([ 51.08339457,  68.15712463, -11.16184334,  21.81664617,
             41.02123902]),
     array([ 50.1340136 ,  68.99195065, -12.11122431,  22.76602714,
             40.07185805]),
     array([ 50.24856855,  69.1065056 , -11.99666936,  22.65147219,
             40.186413  ]),
     array([ 51.09572629,  69.95366334, -11.14951163,  21.80431445,
             41.14807932]),
     array([ 51.21023487,  70.06817193, -11.03500304,  21.68980587,
             41.03357074]),
     array([ 50.23863718,  69.21103666, -11.8921383 ,  22.66140356,
             42.00516843]),
     array([ 50.35309961,  69.09657423, -12.00660073,  22.54694113,
             41.890706  ]),
     array([ 51.19906398,  68.13619339, -12.96698158,  21.58656029,
             40.93032516]),
     array([ 51.31348045,  68.25060986, -12.85256511,  21.70097676,
             41.04474163]),
     array([ 51.18054661,  68.0033053 , -12.98549895,  21.4536722 ,
             40.91180778]),
     array([ 51.06617589,  68.11767601, -13.09986967,  21.56804291,
             40.79743707]),
     array([ 50.91059294,  68.27325897, -13.25545262,  21.72362587,
             40.75617927]),
     array([ 51.02491809,  68.15893381, -13.14112747,  21.60930071,
             40.64185411]),
     array([ 50.77059237,  68.29897974, -13.2811734 ,  21.86362643,
             40.78190004]),
     array([ 50.88487216,  68.41325953, -13.39545319,  21.74934664,
             40.89617983]),
     array([ 50.00073122,  67.64335321, -12.51131224,  22.51925296,
             40.12627351]),
     array([ 50.11496584,  67.52911859, -12.62554687,  22.63348759,
             40.01203889]),
     array([ 49.75984387,  67.77005091, -12.2704249 ,  22.27836561,
             40.36716086]),
     array([ 49.87403352,  67.88424056, -12.38461455,  22.39255526,
             40.25297121]),
     array([ 49.35516747,  67.25122964, -11.75160363,  21.75954434,
             40.77183726]),
     array([ 49.2410226 ,  67.36537451, -11.8657485 ,  21.87368921,
             40.88598213]),
     array([ 49.41028858,  67.08200825, -11.69648252,  21.59032295,
             40.71671615]),
     array([ 49.52438886,  67.19610853, -11.58238223,  21.70442323,
             40.60261587]),
     array([ 49.25147933,  66.92319899, -11.85529177,  21.54556958,
             40.76146952]),
     array([ 49.36553521,  67.03725488, -11.74123589,  21.4315137 ,
             40.8755254 ]),
     array([ 49.10885341,  66.66656141, -12.11192936,  21.6881955 ,
             40.6188436 ]),
     array([ 48.99484174,  66.78057307, -11.99791769,  21.80220717,
             40.50483193]),
     array([ 50.24148939,  65.53392542, -13.24456534,  20.55555951,
             41.75147959]),
     array([ 50.12752175,  65.64789307, -13.1305977 ,  20.66952716,
             41.63751194]),
     array([ 49.29145477,  66.59788384, -12.18060692,  21.50559413,
             40.80144497]),
     array([ 49.17753097,  66.48396004, -12.29453072,  21.61951793,
             40.68752117]),
     array([ 49.2025713 ,  66.62288052, -12.26949039,  21.48059746,
             40.82644164]),
     array([ 49.31645144,  66.50900038, -12.15561025,  21.5944776 ,
             40.7125615 ]),
     array([ 49.78691396,  65.92470119, -11.68514773,  22.17877679,
             40.24209898]),
     array([ 49.90075063,  66.03853786, -11.57131106,  22.06494012,
             40.12826231]),
     array([ 49.55428919,  65.69207642, -12.03156587,  22.52519493,
             40.47472375]),
     array([ 49.44049582,  65.57828305, -11.9177725 ,  22.41140156,
             40.58851712]),
     array([ 50.09975096,  66.23753819, -12.69077789,  23.18440695,
             39.81551173]),
     array([ 50.21350121,  66.35128844, -12.57702764,  23.0706567 ,
             39.92926198]),
     array([ 50.52933172,  66.78082625, -12.14748983,  22.64111889,
             40.35879979]),
     array([ 50.64303903,  66.66711894, -12.26119714,  22.75482619,
             40.24509248]),
     array([ 50.33570155,  67.08812096, -11.95385966,  22.33382418,
             40.55242996]),
     array([ 50.22203701,  66.97445642, -11.84019512,  22.44748872,
             40.6660945 ]),
     array([ 50.4521157 ,  67.20453511, -12.07027381,  22.10378807,
             40.43601581]),
     array([ 50.56573766,  67.31815706, -12.18389577,  22.21741003,
             40.32239385]),
     array([ 50.09657965,  66.84899905, -11.71473776,  21.74825202,
             40.79155186]),
     array([ 49.98300011,  66.73541952, -11.60115822,  21.63467248,
             40.9051314 ]),
     array([ 51.01584393,  67.76826334, -12.52046474,  22.55397901,
             39.87228758]),
     array([ 50.90230663,  67.65472604, -12.63400204,  22.6675163 ,
             39.98582487]),
     array([ 50.61204432,  67.36446372, -12.92426436,  22.95777862,
             40.27608719]),
     array([ 50.72553953,  67.47795894, -12.81076914,  22.8442834 ,
             40.16259197]),
     array([ 50.26338288,  67.01580229, -13.15947247,  23.19298673,
             40.51129531]),
     array([ 50.3768362 ,  67.12925561, -13.27292579,  23.30644005,
             40.62474862]),
     array([ 49.15309358,  66.01892457, -12.16259475,  22.19610901,
             39.51441759]),
     array([ 49.26650516,  65.90551299, -12.04918317,  22.08269743,
             39.40100601]),
     array([ 48.86280421,  66.42258395, -12.56625413,  22.48639838,
             39.91807697]),
     array([ 48.7494342 ,  66.30921394, -12.45288412,  22.59976839,
             39.80470696]),
     array([ 49.78345575,  67.22990688, -13.48690567,  21.56574685,
             40.7253999 ]),
     array([ 49.67012714,  67.34323549, -13.37357706,  21.67907545,
             40.8387285 ]),
     array([ 49.39225219,  67.50782308, -13.20898947,  21.95695041,
             41.11660346]),
     array([ 49.50553955,  67.62111044, -13.09570211,  21.84366304,
             41.0033161 ]),
     array([ 49.77429823,  67.88986912, -12.71369714,  21.46165808,
             40.73455742]),
     array([ 49.88754451,  68.00311541, -12.82694343,  21.57490437,
             40.62131113]),
     array([ 49.970107  ,  68.0856779 , -12.79630054,  21.54426148,
             40.53874864]),
     array([ 49.85690163,  67.97247252, -12.90950591,  21.65746685,
             40.65195402]),
     array([ 49.38091849,  67.38332477, -13.38548905,  22.13344999,
             41.24110177]),
     array([ 49.26775387,  67.49648939, -13.49865367,  22.24661461,
             41.12793715]),
     array([ 50.145692  ,  66.61855126, -12.62071554,  21.36867648,
             41.89275126]),
     array([ 50.03256798,  66.73167528, -12.73383956,  21.4818005 ,
             42.00587528]),
     array([ 50.72354418,  66.04069909, -12.04286336,  20.7908243 ,
             41.31489909]),
     array([ 50.83662776,  65.9276155 , -11.92977978,  20.67774072,
             41.2018155 ]),
     array([ 50.22917622,  66.42202374, -12.53723132,  21.17214896,
             41.80926704]),
     array([ 50.34221953,  66.53506704, -12.42418802,  21.28519226,
             41.69622374]),
     array([ 50.79734059,  66.99018811, -11.85606377,  21.85331651,
             41.24110267]),
     array([ 50.91034377,  67.10319129, -11.96906695,  21.74031333,
             41.12809949]),
     array([ 50.95596884,  67.26177957, -12.12765522,  21.69468826,
             41.08247442]),
     array([ 51.06893205,  67.14881636, -12.01469201,  21.58172505,
             40.96951121]),
     array([ 50.47157556,  67.85909624, -12.7249719 ,  22.17908154,
             41.5668677 ]),
     array([ 50.35865217,  67.74617285, -12.6120485 ,  22.29200493,
             41.6797911 ]),
     array([ 50.62003028,  67.89466722, -12.76054288,  22.03062683,
             41.41841299]),
     array([ 50.50714655,  68.00755096, -12.87342661,  22.14351056,
             41.53129672]),
     array([ 50.98337887,  67.64416285, -12.5100385 ,  21.78012245,
             41.05506439]),
     array([ 50.87053465,  67.53131863, -12.39719429,  21.66727823,
             41.16790861]),
     array([ 50.77032413,  67.54391296, -12.29698376,  21.67987256,
             41.15531428]),
     array([ 50.88312899,  67.4311081 , -12.40978862,  21.56706771,
             41.26811913]),
     array([ 50.58293868,  67.84406405, -11.99683267,  21.98002365,
             40.96792883]),
     array([ 50.47017304,  67.73129841, -12.10959831,  21.86725801,
             40.85516318]),
     array([ 50.02166345,  67.28278882, -12.5581079 ,  21.30602184,
             40.29392702]),
     array([ 49.90893687,  67.17006224, -12.67083448,  21.41874842,
             40.4066536 ]),
     array([ 49.39250267,  66.65362804, -13.29995635,  22.04787029,
             40.9230878 ]),
     array([ 49.27981501,  66.54094038, -13.18726868,  21.93518263,
             41.03577546]),
     array([ 49.25376378,  66.51488916, -13.27386635,  21.90913141,
             40.9491778 ]),
     array([ 49.36641267,  66.62753805, -13.16121746,  22.0217803 ,
             41.06182669]),
     array([ 50.4864759 ,  67.74760127, -11.92854398,  23.14184352,
             42.18188991]),
     array([ 50.59908616,  67.86021153, -12.04115424,  23.25445378,
             42.29450017]),
     array([ 48.8992369 ,  66.27293405, -10.34130498,  21.6671763 ,
             40.59465091]),
     array([ 49.01180868,  66.16036227, -10.45387676,  21.55460452,
             40.70722269]),
     array([ 50.33291412,  64.83925682, -11.88751565,  20.12096563,
             42.14086157]),
     array([ 50.44544756,  64.72672338, -11.77498221,  20.23349907,
             42.02832813]),
     array([ 51.17046331,  64.11420287, -11.1624617 ,  20.84601958,
             41.41580762]),
     array([ 51.05796807,  64.00170763, -11.04996645,  20.95851482,
             41.30331238]),
     array([ 51.04824177,  63.87952414, -11.04024015,  21.08069831,
             41.1811289 ]),
     array([ 50.93578459,  63.99198133, -10.92778297,  20.96824113,
             41.29358608]),
     array([ 51.35106455,  63.4642821 , -11.4554822 ,  21.49594035,
             40.87830612]),
     array([ 51.46348382,  63.57670136, -11.34306293,  21.38352109,
             40.76588685]),
     array([ 50.67180602,  62.78502357, -12.24712221,  22.28758037,
             41.55756464]),
     array([ 50.55942454,  62.67264209, -12.13474072,  22.17519888,
             41.66994613]),
     array([ 50.74650611,  62.85972366, -12.43416614,  22.4746243 ,
             41.48286456]),
     array([ 50.85884996,  62.97206751, -12.32182229,  22.36228045,
             41.37052071]),
     array([ 51.48911978,  63.60233733, -11.80385882,  21.84431697,
             40.85255723]),
     array([ 51.37681343,  63.49003098, -11.69155247,  21.73201063,
             40.74025089]),
     array([ 51.5193981 ,  63.63261565, -11.72186816,  21.76232632,
             40.77056658]),
     array([ 51.40712913,  63.52034667, -11.83413714,  21.8745953 ,
             40.88283556]),
     array([ 51.02612012,  63.02710592, -12.32737789,  22.25560431,
             41.26384457]),
     array([ 50.91388837,  63.13933767, -12.21514615,  22.36783605,
             41.37607631]),
     array([ 51.36988635,  62.79553434, -12.67114412,  22.02403272,
             40.92007834]),
     array([ 51.2576917 ,  62.68333969, -12.55894948,  21.91183808,
             41.03227298]),
     array([ 51.15335231,  62.69115798, -12.45461008,  21.80749869,
             41.13661238]),
     array([ 51.26550999,  62.5790003 , -12.56676776,  21.91965637,
             41.0244547 ]),
     array([ 51.20297911,  62.64153118, -12.50423689,  21.74500464,
             41.08698557]),
     array([ 51.09085826,  62.75365202, -12.39211604,  21.85712549,
             41.19910642]),
     array([ 50.97181005,  62.98478439, -12.16098368,  22.08825785,
             41.31815464]),
     array([ 50.8597259 ,  62.87270024, -12.27306782,  21.97617371,
             41.43023878]),
     array([ 51.06871753,  63.08169187, -12.0640762 ,  22.18516533,
             41.33329473]),
     array([ 50.95666995,  62.96964429, -12.17612377,  22.07311776,
             41.22124716]),
     array([ 50.49127539,  62.50424973, -12.64151834,  21.71973433,
             40.86786373]),
     array([ 50.60328652,  62.61626086, -12.5295072 ,  21.60772319,
             40.75585259]),
     array([ 50.09950068,  62.11247502, -13.14526787,  22.22348386,
             41.37161326]),
     array([ 49.98752586,  62.0005002 , -13.03329305,  22.11150904,
             41.25963844]),
     array([ 49.33530604,  61.46021902, -12.49301187,  21.45928922,
             40.71935726]),
     array([ 49.44724468,  61.34828038, -12.38107323,  21.57122786,
             40.60741862]),
     array([ 49.58983968,  61.09378281, -12.12657566,  21.71382285,
             40.46482363]),
     array([ 49.70174226,  61.20568539, -12.23847824,  21.82572544,
             40.35292104]),
     array([ 49.86197333,  61.36591646, -12.39870931,  21.98595651,
             40.30455662]),
     array([ 49.75010668,  61.25404981, -12.28684266,  21.87408986,
             40.19268997]),
     array([ 50.36936486,  61.87330799, -12.90610084,  22.38151719,
             40.7001173 ]),
     array([ 50.25753401,  61.76147714, -12.79426999,  22.49334804,
             40.81194815]),
     array([ 49.96089166,  61.46483479, -12.60942281,  22.67819522,
             41.1085905 ]),
     array([ 50.07268683,  61.57662996, -12.49762764,  22.78999039,
             40.99679534]),
     array([ 49.48244711,  61.09814985, -13.08786736,  22.19975067,
             41.58703505]),
     array([ 49.59420672,  60.98639024, -12.97610775,  22.31151028,
             41.47527545]),
     array([ 50.37873591,  60.09013688, -12.19157856,  23.09603947,
             40.69074626]),
     array([ 50.49046008,  60.20186105, -12.07985439,  23.20776364,
             40.57902209]),
     array([ 49.51341713,  59.2248181 , -13.05689734,  22.34240954,
             41.44437618]),
     array([ 49.62510598,  59.33650696, -12.94520849,  22.23072069,
             41.55606504]),
     array([ 50.21241377,  59.81216108, -12.46955436,  21.6434129 ,
             42.03171916]),
     array([ 50.10076011,  59.92381475, -12.3579007 ,  21.75506656,
             42.14337283]),
     array([ 50.65548792,  59.25746834, -13.0242471 ,  21.20033875,
             41.47702642]),
     array([ 50.76710651,  59.36908694, -12.91262851,  21.08872016,
             41.58864501]),
     array([ 50.59220865,  59.30577272, -12.97594273,  21.15203438,
             41.52533079]),
     array([ 50.70379229,  59.19418907, -13.08752637,  21.26361802,
             41.41374715]),
     array([ 50.43648692,  59.46149444, -12.820221  ,  21.10786147,
             41.68105252]),
     array([ 50.54803573,  59.34994563, -12.93176982,  20.99631265,
             41.56950371]),
     array([ 50.21673974,  59.68124162, -12.48895972,  21.43912275,
             41.9007997 ]),
     array([ 50.10522564,  59.79275572, -12.60047382,  21.32760865,
             42.0123138 ]),
     array([ 50.89625853,  59.11320233, -11.80944093,  22.11864154,
             41.22128091]),
     array([ 50.78477903,  59.00172283, -11.92092043,  22.00716204,
             41.33276041]),
     array([ 50.50756931,  58.72451311, -12.30957517,  21.72995232,
             41.72141515]),
     array([ 50.39612429,  58.61306809, -12.19813015,  21.6185073 ,
             41.60997013]),
     array([ 50.39165504,  58.7200095 , -12.19366091,  21.61403805,
             41.71691154]),
     array([ 50.5030657 ,  58.60859885, -12.30507156,  21.72544871,
             41.60550088]),
     array([ 50.71868079,  58.39298375, -12.63206306,  21.9410638 ,
             41.38988579]),
     array([ 50.8300572 ,  58.28160735, -12.52068666,  22.05244021,
             41.27850938]),
     array([ 50.40784218,  58.70382236, -12.94290167,  21.74156746,
             41.58938213]),
     array([ 50.51918446,  58.59248009, -12.8315594 ,  21.63022519,
             41.7007244 ]),
     array([ 49.85854759,  59.1418087 , -13.38088801,  22.1795538 ,
             41.04008754]),
     array([ 49.96985585,  59.25311695, -13.49219626,  22.29086205,
             41.15139579]),
     array([ 49.52169098,  58.80495209, -13.04403139,  21.73142284,
             40.59195658]),
     array([ 49.41041663,  58.69367774, -12.93275705,  21.84269719,
             40.70323092]),
     array([ 49.43714822,  58.83164988, -13.07072919,  21.81596559,
             40.67649933]),
     array([ 49.54838877,  58.72040933, -12.95948864,  21.70472504,
             40.56525878]),
     array([ 50.21967948,  58.04911863, -12.28819794,  21.03343434,
             40.00517494]),
     array([ 50.10847261,  58.16032549, -12.3994048 ,  21.1446412 ,
             39.89396807]),
     array([ 49.80682902,  58.46196909, -12.70104839,  21.55745809,
             39.59232448]),
     array([ 49.69565573,  58.57314238, -12.81222169,  21.4462848 ,
             39.48115119]),
     array([ 50.43178464,  57.83701346, -12.07609277,  22.07127388,
             40.10614028]),
     array([ 50.32064481,  57.94815329, -12.1872326 ,  22.18241371,
             40.21728011]),
     array([ 49.65946341,  58.60933469, -12.848414  ,  22.84359512,
             40.87846151]),
     array([ 49.54835694,  58.72044117, -12.95952048,  22.95470159,
             40.98956799]),
     array([ 50.22731779,  58.15255355, -12.39163286,  22.27574074,
             40.31060713]),
     array([ 50.11624456,  58.04148032, -12.28055963,  22.38681397,
             40.42168036]),
     array([ 50.33027583,  58.25551159, -12.60563099,  22.1727827 ,
             40.09660899]),
     array([ 50.44131593,  58.36655168, -12.4945909 ,  22.0617426 ,
             40.20764909]),
     array([ 50.76429794,  58.80054076, -12.06060182,  21.62775352,
             40.64163817]),
     array([ 50.875305  ,  58.6895337 , -12.17160889,  21.73876059,
             40.5306311 ]),
     array([ 50.33754827,  59.22729043, -11.7448263 ,  21.311978  ,
             41.06838783]),
     array([ 50.44852242,  59.11631628, -11.63385216,  21.20100386,
             40.95741369]),
     array([ 49.46662982,  60.2091502 , -12.61574475,  22.18289645,
             41.93930628]),
     array([ 49.3556885 ,  60.09820888, -12.72668608,  22.29383778,
             42.05024761]),
     array([ 50.40537619,  61.14789657, -11.787907  ,  21.24415008,
             41.00055991]),
     array([ 50.29446758,  61.03698796, -11.67699838,  21.3550587 ,
             41.11146853]),
     array([ 50.17183465,  61.02523104, -11.55436546,  21.47769163,
             41.12322544]),
     array([ 50.28271066,  60.91435503, -11.66524147,  21.36681561,
             41.23410145]),
     array([ 50.60268453,  60.59438116, -12.09605884,  21.04684175,
             41.66491883]),
     array([ 50.71352804,  60.48353765, -11.98521533,  20.93599824,
             41.55407532]),
     array([ 50.2926019 ,  60.90446379, -12.40614147,  21.35692438,
             41.97500146]),
     array([ 50.40341301,  60.79365268, -12.29533036,  21.24611326,
             41.86419035]),
     array([ 50.59965358,  60.70819093, -12.09908979,  21.04987269,
             41.77872859]),
     array([ 50.48887477,  60.59741211, -12.20986861,  21.16065151,
             41.66794978]),
     array([ 49.56533471,  59.67387206, -13.24415529,  22.19493819,
             40.74440972]),
     array([ 49.45458809,  59.56312543, -13.13340866,  22.08419157,
             40.6336631 ]),
     array([ 49.41111728,  59.63036916, -13.08993786,  22.04072076,
             40.70090683]),
     array([ 49.52183181,  59.51965463, -13.20065239,  22.1514353 ,
             40.59019229]),
     array([ 49.45455766,  59.58692879, -13.13337823,  22.19484368,
             40.65746645]),
     array([ 49.5652402 ,  59.47624625, -13.24406077,  22.08416114,
             40.54678391]),
     array([ 49.61509075,  59.42639569, -13.29391133,  22.14496123,
             40.49693336]),
     array([ 49.5044401 ,  59.53704634, -13.18326068,  22.03431058,
             40.60758401]),
     array([ 49.4503307 ,  59.48053688, -13.23977014,  22.09082004,
             40.55107455]),
     array([ 49.56094956,  59.59115574, -13.12915128,  21.98020118,
             40.66169341]),
     array([ 50.78674702,  60.70636604, -11.90335381,  20.86499089,
             41.7769037 ]),
     array([ 50.67615985,  60.81695321, -12.01394099,  20.75440372,
             41.88749087]),
     array([ 51.37178167,  60.12133139, -11.42887475,  21.33946995,
             41.19186906]),
     array([ 51.26122609,  60.23188697, -11.31831917,  21.45002553,
             41.30242464]),
     array([ 51.50111394,  59.99199912, -11.44768293,  21.21013769,
             41.06253679]),
     array([ 51.39058985,  60.10252321, -11.55820702,  21.32066177,
             41.17306088]),
     array([ 50.54241981,  60.95069325, -12.40637705,  22.05833912,
             41.91073822]),
     array([ 50.6529125 ,  60.84020056, -12.29588436,  22.16883181,
             42.02123091]),
     array([ 50.2135277 ,  61.27958536, -12.62480778,  21.729447  ,
             41.6923075 ]),
     array([ 50.32398909,  61.16912397, -12.73526917,  21.83990839,
             41.58184611]),
     array([ 51.04311966,  60.56042358, -13.45439975,  22.44860878,
             40.86271553]),
     array([ 50.93268948,  60.4499934 , -13.34396956,  22.55903897,
             40.97314571]),
     array([ 50.15668609,  59.78438909, -12.67836525,  23.22464328,
             41.63875002]),
     array([ 50.26708517,  59.67399001, -12.56796617,  23.33504236,
             41.7491491 ]),
     array([ 49.5187715 ,  60.42230368, -13.20591178,  22.58672869,
             41.1112035 ]),
     array([ 49.62913957,  60.31193561, -13.31627985,  22.69709676,
             41.00083543]),
     array([ 49.62698638,  60.31408879, -13.31412666,  22.58460642,
             41.00298861]),
     array([ 49.51664923,  60.42442595, -13.20378951,  22.69494357,
             41.11332576]),
     array([ 49.8411474 ,  59.98962145, -13.63859401,  22.26013907,
             40.78882759]),
     array([ 49.95145373,  60.09992777, -13.52828768,  22.3704454 ,
             40.67852126]),
     array([ 50.69117245,  60.83964649, -12.78856897,  22.99988852,
             39.93880255]),
     array([ 50.58089685,  60.72937089, -12.89884457,  23.11016412,
             40.04907815]),
     array([ 50.29351685,  60.55223585, -13.07597961,  23.28729916,
             40.33645815]),
     array([ 50.40376181,  60.44199089, -13.18622457,  23.39754412,
             40.22621319]),
     array([ 49.80669595,  60.92884233, -12.69937313,  22.91069268,
             40.71306463]),
     array([ 49.91691037,  61.03905675, -12.58915871,  22.80047826,
             40.82327905]),
     array([ 50.14193336,  61.26407974, -12.36413571,  22.68563924,
             40.93811808]),
     array([ 50.0317494 ,  61.15389578, -12.47431968,  22.57545527,
             41.04830204]),
     array([ 49.69245825,  60.70445102, -12.81361083,  22.12601051,
             41.4977468 ]),
     array([ 49.58230464,  60.81460463, -12.92376444,  22.23616412,
             41.38759319]),
     array([ 49.91471984,  60.37206609, -12.4812259 ,  21.90374892,
             41.72000839]),
     array([ 50.02484318,  60.48218943, -12.59134924,  21.79362558,
             41.83013173]),
     array([ 49.62718829,  60.08453454, -12.19369435,  22.08118731,
             41.54257   ]),
     array([ 49.73728145,  60.1946277 , -12.30378751,  22.19128047,
             41.43247684]),
     array([ 50.33902707,  60.79637332, -12.90553313,  22.79302609,
             40.94079429]),
     array([ 50.228964  ,  60.68631025, -12.79547006,  22.68296302,
             40.83073122]),
     array([ 49.68113511,  60.02844829, -12.24764117,  22.13513413,
             40.17286926]),
     array([ 49.57110204,  60.13848136, -12.1376081 ,  22.02510106,
             40.28290233]),
     array([ 50.1143955 ,  59.48518474, -12.79090472,  22.67839769,
             39.6296057 ]),
     array([ 50.22439866,  59.5951879 , -12.68090156,  22.56839453,
             39.73960886]),
     array([ 50.79785058,  60.16863981, -11.99747631,  21.88496928,
             40.31306078]),
     array([ 50.90782391,  60.27861315, -12.10744965,  21.99494261,
             40.42303411]),
     array([ 50.93016963,  60.41090246, -12.23973896,  22.12723193,
             40.44537983]),
     array([ 51.04011323,  60.30095886, -12.12979536,  22.01728833,
             40.55532343]),
     array([ 50.46335429,  60.98763175, -12.70655429,  22.70396122,
             39.97856449]),
     array([ 50.35344034,  60.87771779, -12.81646825,  22.59404726,
             39.86865054]),
     array([ 50.22569382,  60.74997127, -12.94421477,  22.57618514,
             39.74090402]),
     array([ 50.33557822,  60.85985567, -12.83433037,  22.46630074,
             39.85078841]),
     array([ 50.85847721,  61.27289974, -12.31143138,  21.94340175,
             40.37368741]),
     array([ 50.74862229,  61.38275466, -12.4212863 ,  22.05325667,
             40.26383249]),
     array([ 50.95037295,  61.29082954, -12.32936118,  21.85150601,
             40.35575761]),
     array([ 50.84054741,  61.181004  , -12.21953564,  21.96133154,
             40.46558315]),
     array([ 50.53730989,  60.76797025, -11.80650189,  22.37436529,
             40.8786169 ]),
     array([ 50.42751366,  60.87776648, -11.91629812,  22.26456906,
             40.76882067]),
     array([ 50.01502624,  61.29025391, -12.21901853,  21.85208164,
             40.46610026]),
     array([ 50.12479325,  61.18048689, -12.32878555,  21.96184865,
             40.35633324]),
     array([ 50.39995089,  60.90532925, -12.71368107,  22.34674417,
             40.0811756 ]),
     array([ 50.50968877,  60.79559137, -12.60394319,  22.23700629,
             39.97143772]),
     array([ 50.39996542,  60.7956059 , -12.71366654,  22.23702082,
             39.97145224]),
     array([ 50.50967425,  60.90531473, -12.60395771,  22.34672965,
             40.08116108]),
     array([ 50.53901364,  60.93465412, -12.57461832,  22.48574891,
             40.22018033]),
     array([ 50.64869351,  61.04433399, -12.46493845,  22.37606904,
             40.11050047]),
     array([ 50.14319697,  60.53883745, -12.86078401,  22.88156558,
             40.50634602]),
     array([ 50.25284795,  60.64848843, -12.970435  ,  22.77191459,
             40.61599701]),
     array([ 50.2631821 ,  60.54920039, -12.87114695,  22.76158045,
             40.62633115]),
     array([ 50.15355991,  60.65882258, -12.98076914,  22.87120264,
             40.51670896]),
     array([ 50.81708561,  59.8857034 , -12.20764996,  22.09808346,
             41.18023467]),
     array([ 50.92667908,  59.99529687, -12.31724343,  22.20767693,
             41.28982814]),
     array([ 50.59224347,  59.66086126, -11.87324299,  21.76367649,
             40.95539253]),
     array([ 50.48267864,  59.55129642, -11.98280782,  21.87324132,
             40.84582769]),
     array([ 50.10980197,  59.17841975, -12.46522077,  22.24611799,
             40.47295102]),
     array([ 50.00026569,  59.06888347, -12.35568449,  22.35565427,
             40.36341474]),
     array([ 50.66327503,  59.84140063, -13.12820165,  21.58313712,
             41.02642409]),
     array([ 50.77278284,  59.73189282, -13.01869384,  21.69264493,
             41.1359319 ]),
     array([ 50.88792355,  59.72623153, -13.01303255,  21.69830622,
             41.14159318]),
     array([ 50.77844413,  59.61675211, -12.90355313,  21.80778563,
             41.2510726 ]),
     array([ 50.53672768,  59.26558456, -12.66183668,  22.15895319,
             41.49278905]),
     array([ 50.42727658,  59.37503566, -12.55238558,  22.04950208,
             41.60224015]),
     array([ 50.39313929,  59.51859582, -12.51824829,  21.90594192,
             41.74580031]),
     array([ 50.28371642,  59.40917295, -12.40882542,  22.01536479,
             41.63637744]),
     array([ 49.92525384,  59.05071037, -12.05036284,  22.37382737,
             41.27791487]),
     array([ 50.03464856,  59.16010509, -12.15975756,  22.26443265,
             41.38730958]),
     array([ 50.16667523,  59.4014984 , -12.29178423,  22.02303934,
             41.62870289]),
     array([ 50.27604187,  59.29213176, -12.40115087,  22.13240598,
             41.51933625]),
     array([ 50.56616538,  59.11134689, -12.58193574,  22.31319085,
             41.33855138]),
     array([ 50.45682674,  59.00200825, -12.69127439,  22.4225295 ,
             41.22921274]),
     array([ 50.27114348,  58.92563571, -12.87695765,  22.49890203,
             41.04352948]),
     array([ 50.38045421,  58.81632499, -12.76764692,  22.60821276,
             41.15284021]),
     array([ 49.97767886,  59.10981745, -13.17042227,  22.20543741,
             40.75006486]),
     array([ 50.08696175,  59.21910033, -13.06113938,  22.3147203 ,
             40.85934775]),
     array([ 50.61479544,  59.85618915, -12.53330569,  22.95180911,
             41.38718143]),
     array([ 50.72405056,  59.74693402, -12.42405057,  22.84255399,
             41.49643656]),
     array([ 50.2915769 ,  60.07018024, -12.85652422,  23.27502764,
             41.0639629 ]),
     array([ 50.40080434,  60.17940768, -12.74729679,  23.1658002 ,
             41.17319034]),
     array([ 50.49824752,  60.27685086, -12.64985361,  23.17755685,
             41.16143369]),
     array([ 50.38904769,  60.16765103, -12.75905343,  23.06835703,
             41.27063352]),
     array([ 50.06258418,  59.84118752, -13.08551695,  22.74189351,
             41.48792474]),
     array([ 50.17175647,  59.9503598 , -12.97634466,  22.8510658 ,
             41.59709703]),
     array([ 50.06035266,  59.838956  , -13.08774847,  22.63051716,
             41.48569322]),
     array([ 49.95120783,  59.72981117, -13.1968933 ,  22.73966199,
             41.3765484 ]),
     array([ 50.39206973,  60.17067306, -12.86514884,  22.29880009,
             41.81741029]),
     array([ 50.28295228,  60.06155562, -12.7560314 ,  22.40791754,
             41.70829285]),
     array([ 49.69911638,  59.47771972, -12.1721955 ,  23.10084358,
             41.12445694]),
     array([ 49.59002624,  59.36862958, -12.06310536,  22.99175344,
             41.01536681]),
     array([ 49.95333617,  59.73193951, -12.42641529,  23.35506337,
             41.37867674]),
     array([ 49.84427327,  59.62287661, -12.31735239,  23.24600047,
             41.26961384]),
     array([ 49.8261498 ,  59.60475314, -12.29922892,  23.227877  ,
             41.25149037]),
     array([ 49.93518554,  59.71378888, -12.40826466,  23.33691274,
             41.36052611]),
     array([ 49.85868789,  59.63729123, -12.33176701,  23.26041509,
             41.28402846]),
     array([ 49.74967924,  59.52828258, -12.22275836,  23.15140644,
             41.17501981]),
     array([ 49.98331054,  59.65293224, -12.45638966,  23.38503774,
             41.29966947]),
     array([ 49.8743289 ,  59.76191387, -12.34740802,  23.2760561 ,
             41.4086511 ]),
     array([ 50.11581124,  59.62938623, -12.47993567,  23.40858375,
             41.27612346]),
     array([ 50.00685655,  59.52043153, -12.58889036,  23.51753844,
             41.16716876]),
     array([ 50.19801632,  59.71159131, -12.50665841,  23.32637867,
             41.24940071]),
     array([ 50.0890885 ,  59.60266348, -12.39773059,  23.43530649,
             41.35832854]),
     array([ 50.89099861,  60.4045736 , -13.1996407 ,  22.7422974 ,
             40.55641842]),
     array([ 50.78209759,  60.29567257, -13.09073968,  22.63339638,
             40.66531945]),
     array([ 49.99794052,  59.62038981, -12.30658261,  21.84923931,
             41.34060221]),
     array([ 50.10681482,  59.51151551, -12.41545691,  21.95811361,
             41.44947651]),
     array([ 50.07987188,  59.4296108 , -12.49736161,  22.04001831,
             41.42253357]),
     array([ 50.18871952,  59.53845845, -12.38851397,  21.93117067,
             41.53138122]),
     array([ 49.86542299,  59.21516192, -12.7118105 ,  22.36328826,
             41.09926362]),
     array([ 49.75660193,  59.10634086, -12.82063156,  22.25446719,
             41.20808469]),
     array([ 50.20108968,  59.65962315, -12.26734926,  22.69895494,
             40.65480239]),
     array([ 50.30988423,  59.5508286 , -12.37614381,  22.80774949,
             40.76359694]),
     array([ 50.24815771,  59.72132323, -12.20564919,  22.63725487,
             40.59310232]),
     array([ 50.1393896 ,  59.61255512, -12.31441729,  22.74602297,
             40.70187042]),
     array([ 50.08969398,  59.56285949, -12.36411292,  22.68697687,
             40.75156605]),
     array([ 50.19843571,  59.67160123, -12.25537119,  22.7957186 ,
             40.64282432]),
     array([ 49.8494057 ,  59.32257122, -12.49568577,  22.55540402,
             40.99185433]),
     array([ 49.95812113,  59.43128665, -12.6044012 ,  22.44668859,
             40.8831389 ]),
     array([ 50.40838079,  59.77285711, -13.05466086,  21.99642893,
             40.54156844]),
     array([ 50.29969159,  59.8815463 , -12.94597166,  22.10511813,
             40.43287924]),
     array([ 50.25779595,  60.03210498, -12.90407602,  22.2556768 ,
             40.3909836 ]),
     array([ 50.14913292,  59.92344195, -12.79541299,  22.14701377,
             40.28232057]),
     array([ 50.21820605,  59.99251508, -12.75584918,  22.2160869 ,
             40.3513937 ]),
     array([ 50.10956911,  59.88387814, -12.86448612,  22.10744997,
             40.24275676]),
     array([ 50.48106572,  60.25537475, -12.49298951,  22.37033566,
             40.50564246]),
     array([ 50.37245481,  60.14676384, -12.60160042,  22.47894657,
             40.61425337]),
     array([ 50.37444926,  60.14875829, -12.70819092,  22.58553707,
             40.61225892]),
     array([ 50.26586431,  60.04017334, -12.59960597,  22.47695212,
             40.72084386]),
     array([ 49.85771488,  59.63202391, -12.19145654,  22.06880269,
             41.02043424]),
     array([ 49.96627394,  59.74058297, -12.30001559,  22.17736174,
             41.12899329]),
     array([ 50.22820022,  59.89397603, -12.56194188,  22.3307548 ,
             41.28238635]),
     array([ 50.119667  ,  60.00250925, -12.45340865,  22.43928803,
             41.39091958]),
     array([ 50.65474322,  59.46743303, -13.09699234,  21.90421181,
             40.74733589]),
     array([ 50.76325068,  59.35892556, -12.98848487,  21.79570434,
             40.85584336]),
     array([ 50.59974083,  59.41395364, -13.04351296,  21.85073242,
             40.6923335 ]),
     array([ 50.7082226 ,  59.52243542, -13.15199473,  21.9592142 ,
             40.80081528]),
     array([ 50.12482305,  59.04749201, -12.67705132,  21.37581464,
             40.21741572]),
     array([ 50.23327919,  58.93903586, -12.56859517,  21.48427079,
             40.32587187]),
     array([ 50.56258413,  58.71816151, -12.34772082,  21.70514514,
             40.54674622]),
     array([ 50.45415355,  58.60973092, -12.23929023,  21.81357573,
             40.65517681]),
     array([ 50.60492721,  58.86890968, -12.49846899,  21.66280206,
             40.50440314]),
     array([ 50.7133323 ,  58.76050459, -12.3900639 ,  21.55439697,
             40.39599805]),
     array([ 50.09924504,  59.37459185, -13.00415116,  22.16848424,
             41.11846498]),
     array([ 49.99086538,  59.48297151, -13.11253083,  22.2768639 ,
             41.01008532]),
     array([ 50.56999617,  58.90384072, -12.53340003,  21.6977331 ,
             41.58921612]),
     array([ 50.46164188,  59.01219501, -12.64175432,  21.8060874 ,
             41.48086182]),
     array([ 50.10561931,  59.47654658, -12.99777689,  22.16210997,
             41.01651025]),
     array([ 49.99729031,  59.36821758, -13.10610589,  22.27043897,
             41.12483925]),
     array([ 50.52933934,  60.00857038, -12.57405686,  21.63008617,
             40.48448646]),
     array([ 50.6376431 ,  59.90026662, -12.4657531 ,  21.73838993,
             40.59279022]),
     array([ 50.42228891,  60.00734222, -12.68110729,  21.52303574,
             40.37743602]),
     array([ 50.5305675 ,  60.11562081, -12.5728287 ,  21.63131433,
             40.48571461]),
     array([ 50.50590882,  60.09096213, -12.59748738,  21.71490913,
             40.46105593]),
     array([ 50.6141623 ,  60.19921561, -12.4892339 ,  21.60665565,
             40.56930941]),
     array([ 50.18547128,  59.87875302, -12.80969649,  22.03534667,
             40.24884683]),
     array([ 50.29369971,  59.77052459, -12.91792492,  21.92711824,
             40.14061839]),
     array([ 49.87467017,  60.18955414, -12.49889537,  22.34614778,
             40.55964794]),
     array([ 49.76646672,  60.29775759, -12.39069192,  22.45435123,
             40.66785139]),
     array([ 50.20439341,  59.8598309 , -12.82861861,  21.90824601,
             40.12174617]),
     array([ 50.31257194,  59.75165237, -12.93679714,  22.01642454,
             40.2299247 ]),
     array([ 50.24311506,  59.71295558, -12.97549394,  21.94696766,
             40.26862149]),
     array([ 50.35126873,  59.82110925, -12.86734026,  22.05512133,
             40.16046782]),
     array([ 50.07300093,  59.65097033, -13.03747918,  21.77685353,
             40.33060674]),
     array([ 50.18112981,  59.54284145, -13.14560806,  21.88498241,
             40.43873562]),
     array([ 50.20429014,  59.62778526, -13.1687684 ,  21.90814275,
             40.35379181]),
     array([ 50.096186  ,  59.51968111, -13.06066425,  21.8000386 ,
             40.46189595]),
     array([ 49.50982235,  59.04139694, -12.4743006 ,  21.21367495,
             40.94018013]),
     array([ 49.61790182,  58.93331747, -12.58238008,  21.32175443,
             41.0482596 ]),
     array([ 49.95489906,  58.48826537, -12.91937731,  21.76680652,
             41.4933117 ]),
     array([ 50.06295392,  58.59632023, -13.02743218,  21.65875166,
             41.38525683]),
     array([ 50.33814665,  58.87151295, -13.3026249 ,  21.49158925,
             41.11006411]),
     array([ 50.23011633,  58.76348264, -13.19459459,  21.38355894,
             41.21809442]),
     array([ 50.44578558,  58.97915189, -13.41026384,  21.49122237,
             41.110431  ]),
     array([ 50.33777976,  58.87114607, -13.30225801,  21.59922819,
             41.00242517]),
     array([ 49.89660133,  58.42996764, -12.75309819,  22.04040662,
             40.45326535]),
     array([ 49.78861994,  58.32198625, -12.86107959,  22.14838801,
             40.56124674]),
     array([ 50.07633641,  58.71765975, -12.46540608,  21.75271451,
             40.16557324]),
     array([ 50.18429344,  58.60970272, -12.57336311,  21.86067154,
             40.27353027]),
     array([ 50.28901152,  58.50498464, -12.67808119,  21.96538962,
             40.37824835]),
     array([ 50.39694424,  58.39705192, -12.78601391,  22.07332234,
             40.48618107]),
     array([ 50.44094821,  58.46095641, -12.72210942,  22.11732632,
             40.53018504]),
     array([ 50.33303974,  58.35304794, -12.83001789,  22.00941785,
             40.42227658]),
     array([ 50.68096517,  58.80885765, -12.48209246,  22.46522755,
             40.770202  ]),
     array([ 50.78884945,  58.70097337, -12.37420818,  22.35734327,
             40.87808628]),
     array([ 50.3458364 ,  59.25184656, -12.92508138,  22.80035631,
             40.43507323]),
     array([ 50.23797625,  59.14398641, -12.81722123,  22.90821646,
             40.32721309]),
     array([ 50.6109487 ,  59.40912278, -13.19019368,  22.64308009,
             40.70018553]),
     array([ 50.50311262,  59.51695886, -13.0823576 ,  22.53524401,
             40.59234946]),
     array([ 50.0622222 ,  59.95784929, -12.53365511,  21.98654152,
             40.15145903]),
     array([ 49.95441013,  60.06566135, -12.64146717,  22.09435358,
             40.04364696]),
     array([ 50.37692253,  59.53536085, -12.21895478,  21.56405308,
             40.46615936]),
     array([ 50.48471063,  59.64314896, -12.11116667,  21.67184119,
             40.57394746]),
     array([ 50.19063076,  59.34906909, -12.40524654,  21.37776132,
             40.3876318 ]),
     array([ 50.29839497,  59.45683329, -12.29748233,  21.48552553,
             40.27986759]),
     array([ 50.18444494,  59.23514289, -12.51917273,  21.3715755 ,
             40.50155799]),
     array([ 50.07670457,  59.34288326, -12.41143236,  21.26383513,
             40.39381762]),
     array([ 50.53915065,  58.98815377, -12.76616185,  21.72628121,
             40.8562637 ]),
     array([ 50.43143406,  58.88043719, -12.87387844,  21.61856462,
             40.74854711]),
     array([ 50.75735315,  59.20635627, -12.54795935,  21.94448371,
             41.0744662 ]),
     array([ 50.86504601,  59.31404914, -12.44026649,  22.05217657,
             41.18215906]),
     array([ 50.5830159 ,  59.03201902, -12.8299658 ,  21.66247726,
             40.90012895]),
     array([ 50.4753467 ,  58.92434983, -12.72229661,  21.77014646,
             40.79245976]),
     array([ 50.20121026,  58.65021339, -12.55580574,  22.0442829 ,
             40.51832331]),
     array([ 50.30885584,  58.75785897, -12.44816016,  21.93663732,
             40.62596889]),
     array([ 50.40519319,  58.96181834, -12.24420079,  21.73267795,
             40.72230624]),
     array([ 50.51281521,  58.85419631, -12.35182282,  21.84029997,
             40.82992826]),
     array([ 50.34483461,  59.02217691, -12.18384222,  21.67231938,
             40.66194767]),
     array([ 50.45243314,  58.91457838, -12.29144075,  21.7799179 ,
             40.76954619]),
     array([ 50.48618609,  58.77325035, -12.3251937 ,  21.92124593,
             40.91087422]),
     array([ 50.59376117,  58.88082543, -12.43276878,  21.81367085,
             40.80329914]),
     array([ 50.7142291 ,  58.89374167, -12.44568502,  21.80075461,
             40.7903829 ]),
     array([ 50.60667741,  59.00129336, -12.55323671,  21.69320292,
             40.68283121]),
     array([ 50.45659375,  59.25890538, -12.70332037,  21.4355909 ,
             40.42521919]),
     array([ 50.3490654 ,  59.15137702, -12.81084873,  21.54311926,
             40.53274755]),
     array([ 50.39647197,  59.09127851, -12.76344215,  21.49571269,
             40.48534098]),
     array([ 50.28896689,  59.1987836 , -12.87094723,  21.60321777,
             40.59284606]),
     array([ 50.09758307,  59.28268556, -13.06233105,  21.79460159,
             40.67674802]),
     array([ 50.20506493,  59.39016741, -12.95484919,  21.68711973,
             40.78422988]),
     array([ 50.55369471,  59.7387972 , -12.7136781 ,  21.33848994,
             41.13285966]),
     array([ 50.44623603,  59.63133851, -12.60621941,  21.44594863,
             41.02540097]),
     array([ 50.24473508,  59.32240199, -12.29728289,  21.75488515,
             40.71646445]),
     array([ 50.1372995 ,  59.42983756, -12.40471846,  21.64744958,
             40.82390003]),
     array([ 50.14559152,  59.52895806, -12.39642645,  21.6557416 ,
             40.81560801]),
     array([ 50.03817901,  59.42154555, -12.50383896,  21.54832908,
             40.92302053]),
     array([ 50.27076449,  59.54674153, -12.37864298,  21.67352506,
             40.79782455]),
     array([ 50.16337499,  59.65413103, -12.27125347,  21.78091457,
             40.69043504]),
     array([ 50.23617765,  59.47396181, -12.45142269,  21.7081119 ,
             40.87060426]),
     array([ 50.34354421,  59.58132837, -12.34405614,  21.60074535,
             40.7632377 ]),
     array([ 50.19810466,  59.43588882, -12.59683934,  21.74618489,
             41.01602091]),
     array([ 50.090761  ,  59.32854517, -12.48949568,  21.85352855,
             40.90867725]),
     array([ 50.28190534,  59.5196895 , -12.57331921,  21.76970503,
             40.99250077]),
     array([ 50.17458453,  59.41236869, -12.68064002,  21.66238422,
             41.09982158]),
     array([ 50.43879056,  59.78387274, -12.41643398,  22.03388827,
             40.72831753]),
     array([ 50.54608857,  59.67657472, -12.30913597,  21.92659025,
             40.83561555]),
     array([ 50.16745124,  60.05521205, -12.58049802,  22.30522758,
             40.5642535 ]),
     array([ 50.27472652,  59.94793677, -12.6877733 ,  22.1979523 ,
             40.45697822]),
     array([ 50.13961339,  59.97579732, -12.65991276,  22.22581285,
             40.48483876]),
     array([ 50.24686598,  60.0830499 , -12.55266017,  22.33306543,
             40.59209135]),
     array([ 50.16002604,  60.10343991, -12.53227016,  22.24622549,
             40.61248136]),
     array([ 50.26725599,  59.99620996, -12.63950011,  22.35345544,
             40.50525141]),
     array([ 50.09704467,  60.05921392, -12.57649615,  22.18324412,
             40.67546273]),
     array([ 50.20425203,  60.16642129, -12.46928879,  22.29045149,
             40.56825537]),
     array([ 49.93233557,  59.89450482, -12.63402042,  22.01853502,
             40.732987  ]),
     array([ 50.0395204 ,  60.00168966, -12.74120525,  22.12571986,
             40.84017183]),
     array([ 49.97856835,  60.04789996, -12.6802532 ,  22.06476781,
             40.77921978]),
     array([ 50.08573071,  59.94073761, -12.78741556,  22.17193016,
             40.88638214]),
     array([ 50.14297461,  59.99063363, -12.84465946,  22.12203414,
             40.83648611]),
     array([ 50.03583468,  59.88349371, -12.73751953,  22.22917406,
             40.94362603]),
     array([ 50.01924067,  59.8668997 , -12.82804306,  22.24576807,
             40.8531025 ]),
     array([ 50.12635822,  59.97401724, -12.72092552,  22.13865053,
             40.96022005]),
     array([ 50.34383421,  60.08439802, -12.61054474,  22.02826975,
             41.17769605]),
     array([ 50.236739  ,  60.19149324, -12.50344952,  21.92117453,
             41.07060083]),
     array([ 50.26436823,  60.05679106, -12.53107876,  21.94880377,
             41.20530301]),
     array([ 50.37144118,  60.163864  , -12.6381517 ,  22.05587671,
             41.09823007]),
     array([ 50.35487629,  60.04024841, -12.62158682,  22.03931183,
             41.11479495]),
     array([ 50.24782558,  60.14729912, -12.5145361 ,  21.93226111,
             41.22184566]),
     array([ 50.41504139,  59.87305478, -12.68175191,  22.20650546,
             41.05462986]),
     array([ 50.52206992,  59.98008331, -12.78878045,  22.09947692,
             40.94760132]),
     array([ 50.20947341,  59.6674868 , -12.47618393,  22.41207344,
             41.26019784]),
     array([ 50.31647982,  59.77449321, -12.58319034,  22.30506703,
             41.15319142]),
     array([ 50.62085396,  59.97188301, -12.78058014,  22.00069289,
             40.84881729]),
     array([ 50.51386962,  60.07886735, -12.88756448,  22.10767722,
             40.95580162]),
     array([ 50.77837515,  59.92132412, -12.73002126,  21.950134  ,
             40.7982584 ]),
     array([ 50.67141284,  59.81436182, -12.62305895,  21.84317169,
             40.69129609]),
     array([ 50.42336359,  59.56631257, -12.3750097 ,  21.59512244,
             40.33630651]),
     array([ 50.31642326,  59.45937224, -12.26806937,  21.48818211,
             40.44324684]),
     array([ 50.27804548,  59.52791285, -12.33660999,  21.44980433,
             40.48162462]),
     array([ 50.38496388,  59.42099445, -12.22969159,  21.55672273,
             40.37470622]),
     array([ 49.97856341,  59.7204984 , -12.52919553,  21.15032226,
             40.67421017]),
     array([ 50.08545993,  59.82739492, -12.63609206,  21.25721878,
             40.78110669]),
     array([ 50.24963817,  59.99157316, -12.80027029,  21.31452233,
             40.94528493]),
     array([ 50.14276348,  59.88469847, -12.6933956 ,  21.42139702,
             40.83841024]),
     array([ 49.91678728,  59.76557518, -12.57427231,  21.54052031,
             40.61243404]),
     array([ 50.02364019,  59.65872227, -12.4674194 ,  21.64737322,
             40.71928695]),
     array([ 50.24087113,  59.33466015, -12.25018846,  21.97143533,
             40.93651789]),
     array([ 50.34770231,  59.44149133, -12.14335728,  21.86460416,
             41.04334906]),
     array([ 50.11124765,  59.20503667, -12.48662143,  22.10105881,
             40.70008492]),
     array([ 50.00443817,  59.09822719, -12.37981194,  22.2078683 ,
             40.80689441]),
     array([ 50.35107659,  59.33807776, -12.61966252,  21.96801772,
             40.46025598]),
     array([ 50.24428874,  59.44486561, -12.72645036,  21.86122987,
             40.56704383]),
     array([ 50.23671181,  59.45244255, -12.7340273 ,  21.74688668,
             40.68138703]),
     array([ 50.12994555,  59.55920881, -12.84079356,  21.85365294,
             40.57462077])]



**QAOA**


```python
from qiskit_optimization.runtime import QAOAProgram

# in this first release, the optimizer must be specified as dictionary
optimizer = {'name': 'SPSA',
             'maxiter': 500}

intermediate_info = {
    'nfev': [],
    'parameters': [],
    'energy': [],
    'stddev': []
}

p=5

initial_point = [0., 1.]*(p)

runtime_qaoa = QAOAProgram(optimizer=optimizer,
                            reps=p,
                            initial_point=initial_point,
                            provider=provider,
                            backend=simulator,
                            shots=8192,
                            measurement_error_mitigation=measurement_error_mitigation,
                            callback=callback)
```


```python
runtime_result_qaoa = runtime_qaoa.compute_minimum_eigenvalue(qubitOp)
```


```python
print('Eigenvalue:', runtime_result_qaoa.eigenvalue)
```

    Eigenvalue: (-2.2928466796875+0j)



```python
# print results
x = max_cut.sample_most_likely(runtime_result_qaoa.eigenstate)
print('energy:', runtime_result_qaoa.eigenvalue.real)
print('time:', runtime_result_qaoa.optimizer_time)
print('max-cut objective:', runtime_result_qaoa.eigenvalue.real + offset)
print('solution:', x)
print('solution objective:', qp.objective.evaluate(x))

# plot results
colors = ['r' if x[i] == 0 else 'c' for i in range(n)]
draw_graph(G, colors, pos)
```


```python

```

40b877d489e026b6714491de2d950d44323c72a1
ipynb
Jupyter Notebook
vqe-qaoa/vqe-qaoa-lena.ipynb
senhalil/ROQ
e3fadd5bf3270eed1220176f6a2c611c83b855fa
Apache-2.0
vqe-qaoa/vqe-qaoa-lena.ipynb
senhalil/ROQ
e3fadd5bf3270eed1220176f6a2c611c83b855fa
Apache-2.0
vqe-qaoa/vqe-qaoa-lena.ipynb
senhalil/ROQ
e3fadd5bf3270eed1220176f6a2c611c83b855fa
Apache-2.0
Qwen/Qwen-72B
1. YES
2. YES