From 58b63d1ac699d6aae19c7c05b2bf0ab4b84c8061 Mon Sep 17 00:00:00 2001 From: Tarang Jain <40517122+tarang-jain@users.noreply.github.com> Date: Fri, 2 Sep 2022 21:50:29 -0400 Subject: [PATCH] approximate_predict function for HDBSCAN (#4872) PR for HDBSCAN approximate_predict - [x] Building cluster_map - [x] Modifying PredictionData class - [x] Obtaining nearest neighbor in MR space - [x] Computing probability - [x] Tests Closes #4877 Closes #4448 Authors: - Tarang Jain (https://github.com/tarang-jain) - Corey J. Nolet (https://github.com/cjnolet) Approvers: - Corey J. Nolet (https://github.com/cjnolet) URL: https://github.com/rapidsai/cuml/pull/4872 --- cpp/include/cuml/cluster/hdbscan.hpp | 51 +- cpp/src/hdbscan/detail/kernels/predict.cuh | 102 + cpp/src/hdbscan/detail/predict.cuh | 252 ++ cpp/src/hdbscan/detail/reachability.cuh | 100 +- cpp/src/hdbscan/detail/soft_clustering.cuh | 179 +- cpp/src/hdbscan/hdbscan.cu | 61 +- cpp/src/hdbscan/prediction_data.cu | 93 +- cpp/src/hdbscan/runner.h | 18 +- cpp/test/sg/hdbscan_inputs.hpp | 3376 ++++++++++++++++++++ cpp/test/sg/hdbscan_test.cu | 190 +- python/cuml/cluster/CMakeLists.txt | 1 + python/cuml/cluster/__init__.py | 3 +- python/cuml/cluster/hdbscan.pyx | 68 +- python/cuml/cluster/prediction.pyx | 268 ++ python/cuml/tests/test_hdbscan.py | 400 ++- 15 files changed, 4912 insertions(+), 250 deletions(-) create mode 100644 cpp/src/hdbscan/detail/kernels/predict.cuh create mode 100644 cpp/src/hdbscan/detail/predict.cuh create mode 100644 python/cuml/cluster/prediction.pyx diff --git a/cpp/include/cuml/cluster/hdbscan.hpp b/cpp/include/cuml/cluster/hdbscan.hpp index 9fc5bfb248..0e72ae030a 100644 --- a/cpp/include/cuml/cluster/hdbscan.hpp +++ b/cpp/include/cuml/cluster/hdbscan.hpp @@ -308,7 +308,8 @@ template class CondensedHierarchy; /** * Container object for computing and storing intermediate information needed later for computing - * membership vectors and approximate_predict. + * membership vectors and approximate predict. Users are only expected to create an instance of this + * object, the hdbscan method will do the rest. * @tparam value_idx * @tparam value_t */ @@ -322,6 +323,8 @@ class PredictionData { n_selected_clusters(0), selected_clusters(0, handle.get_stream()), deaths(0, handle.get_stream()), + core_dists(m, handle.get_stream()), + index_into_children(0, handle.get_stream()), n_exemplars(0), n_rows(m), n_cols(n) @@ -339,21 +342,26 @@ class PredictionData { value_idx* get_exemplar_label_offsets() { return exemplar_label_offsets.data(); } value_idx* get_selected_clusters() { return selected_clusters.data(); } value_t* get_deaths() { return deaths.data(); } + value_t* get_core_dists() { return core_dists.data(); } + value_idx* get_index_into_children() { return index_into_children.data(); } /** - * Resize buffers to the required sizes for storing data - * @param handle raft handle for ordering cuda operations - * @param n_exemplars_ number of exemplar points - * @param n_selected_clusters_ number of clusters selected + * Resizes the buffers in the PredictionData object. + * + * @param[in] handle raft handle for resource reuse + * @param[in] n_exemplars_ number of exemplar points + * @param[in] n_selected_clusters_ number of selected clusters in the final clustering + * @param[in] n_edges_ number of edges in the condensed hierarchy */ void allocate(const raft::handle_t& handle, value_idx n_exemplars_, - value_idx n_selected_clusters_); + value_idx n_selected_clusters_, + value_idx n_edges_); /** * Resize buffers for cluster deaths to n_clusters * @param handle raft handle for ordering cuda operations - * @param n_clusters_ + * @param n_clusters_ number of clusters */ void set_n_clusters(const raft::handle_t& handle, value_idx n_clusters_) { @@ -368,6 +376,8 @@ class PredictionData { value_idx n_selected_clusters; rmm::device_uvector selected_clusters; rmm::device_uvector deaths; + rmm::device_uvector core_dists; + rmm::device_uvector index_into_children; }; template class PredictionData; @@ -412,7 +422,7 @@ void hdbscan(const raft::handle_t& handle, HDBSCAN::Common::hdbscan_output& out); /** - * Executes HDBSCAN clustering on an mxn-dimensional input array, X and builds the PredictionData + * Executes HDBSCAN clustering on an mxn-dimensional input array, X, then builds the PredictionData * object which computes and stores information needed later for prediction algorithms. * * @param[in] handle raft handle for resource reuse @@ -456,10 +466,23 @@ void _extract_clusters(const raft::handle_t& handle, int max_cluster_size, float cluster_selection_epsilon); -void _all_points_membership_vectors(const raft::handle_t& handle, - HDBSCAN::Common::CondensedHierarchy& condensed_tree, - HDBSCAN::Common::PredictionData& prediction_data, - float* membership_vec, - const float* X, - raft::distance::DistanceType metric); +void compute_all_points_membership_vectors( + const raft::handle_t& handle, + HDBSCAN::Common::CondensedHierarchy& condensed_tree, + HDBSCAN::Common::PredictionData& prediction_data, + const float* X, + raft::distance::DistanceType metric, + float* membership_vec); + +void out_of_sample_predict(const raft::handle_t& handle, + HDBSCAN::Common::CondensedHierarchy& condensed_tree, + HDBSCAN::Common::PredictionData& prediction_data, + const float* X, + int* labels, + const float* points_to_predict, + size_t n_prediction_points, + raft::distance::DistanceType metric, + int min_samples, + int* out_labels, + float* out_probabilities); } // END namespace ML diff --git a/cpp/src/hdbscan/detail/kernels/predict.cuh b/cpp/src/hdbscan/detail/kernels/predict.cuh new file mode 100644 index 0000000000..181e32ff6b --- /dev/null +++ b/cpp/src/hdbscan/detail/kernels/predict.cuh @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2022, NVIDIA CORPORATION. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +namespace ML { +namespace HDBSCAN { +namespace detail { +namespace Predict { + +template +__global__ void min_mutual_reachability_kernel(value_t* input_core_dists, + value_t* prediction_core_dists, + value_t* pairwise_dists, + value_idx* neighbor_indices, + size_t n_prediction_points, + value_idx neighborhood, + value_t* min_mr_dists, + value_idx* min_mr_indices) +{ + value_idx idx = blockDim.x * blockIdx.x + threadIdx.x; + if (idx < value_idx(n_prediction_points)) { + value_t min_mr_dist = std::numeric_limits::max(); + value_idx min_mr_ind = -1; + for (int i = 0; i < neighborhood; i++) { + value_t mr_dist = prediction_core_dists[idx]; + if (input_core_dists[neighbor_indices[idx * neighborhood + i]] > mr_dist) { + mr_dist = input_core_dists[neighbor_indices[idx * neighborhood + i]]; + } + if (pairwise_dists[idx * neighborhood + i] > mr_dist) { + mr_dist = pairwise_dists[idx * neighborhood + i]; + } + if (min_mr_dist > mr_dist) { + min_mr_dist = mr_dist; + min_mr_ind = neighbor_indices[idx * neighborhood + i]; + } + } + min_mr_dists[idx] = min_mr_dist; + min_mr_indices[idx] = min_mr_ind; + } + return; +} + +template +__global__ void cluster_probability_kernel(value_idx* min_mr_indices, + value_t* prediction_lambdas, + value_idx* index_into_children, + value_idx* labels, + value_t* deaths, + value_idx* selected_clusters, + value_idx* parents, + value_t* lambdas, + value_idx n_leaves, + size_t n_prediction_points, + value_idx* predicted_labels, + value_t* cluster_probabilities) +{ + value_idx idx = blockDim.x * blockIdx.x + threadIdx.x; + if (idx < value_idx(n_prediction_points)) { + value_idx cluster_label = labels[min_mr_indices[idx]]; + + if (cluster_label >= 0 && selected_clusters[cluster_label] > n_leaves && + lambdas[index_into_children[selected_clusters[cluster_label]]] < prediction_lambdas[idx]) { + predicted_labels[idx] = cluster_label; + } else if (cluster_label >= 0 && selected_clusters[cluster_label] == n_leaves) { + predicted_labels[idx] = cluster_label; + } else { + predicted_labels[idx] = -1; + } + if (predicted_labels[idx] >= 0) { + value_t max_lambda = deaths[selected_clusters[cluster_label] - n_leaves]; + if (max_lambda > 0) { + cluster_probabilities[idx] = + (max_lambda < prediction_lambdas[idx] ? max_lambda : prediction_lambdas[idx]) / + max_lambda; + } else { + cluster_probabilities[idx] = 1.0; + } + } else { + cluster_probabilities[idx] = 0.0; + } + } + return; +} + +}; // namespace Predict +}; // namespace detail +}; // namespace HDBSCAN +}; // namespace ML \ No newline at end of file diff --git a/cpp/src/hdbscan/detail/predict.cuh b/cpp/src/hdbscan/detail/predict.cuh new file mode 100644 index 0000000000..c4ec1020ba --- /dev/null +++ b/cpp/src/hdbscan/detail/predict.cuh @@ -0,0 +1,252 @@ +/* + * Copyright (c) 2022, NVIDIA CORPORATION. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include "kernels/predict.cuh" +#include "reachability.cuh" + +#include +#include + +#include +#include + +#include + +namespace ML { +namespace HDBSCAN { +namespace detail { +namespace Predict { + +/** +Find the nearest mutual reachability neighbor of a point, and compute +the associated lambda value for the point, given the mutual reachability +distance to a nearest neighbor. + * + * @tparam value_idx + * @tparam value_t + * @tparam tpb + * @param[in] handle raft handle for resource reuse + * @param[in] input_core_dists an array of core distances for all points (size m) + * @param[in] prediction_core_dists an array of core distances for all prediction points (size +n_prediction_points) + * @param[in] knn_dists knn distance array (size n_prediction_points * neighborhood) + * @param[in] knn_inds knn indices array (size n_prediction_points * neighborhood) + * @param[in] n_prediction_points number of prediction points + * @param[in] neighborhood the neighborhood of prediction points + * @param[out] min_mr_inds indices of points with the minimum mutual reachability distance (size +n_prediction_points) + * @param[out] prediction_lambdas lambda values for prediction points (size n_prediction_points) + */ +template +void _find_neighbor_and_lambda(const raft::handle_t& handle, + value_t* input_core_dists, + value_t* prediction_core_dists, + value_t* knn_dists, + value_idx* knn_inds, + size_t n_prediction_points, + int neighborhood, + value_idx* min_mr_inds, + value_t* prediction_lambdas) +{ + auto stream = handle.get_stream(); + auto exec_policy = handle.get_thrust_policy(); + + // Buffer for storing the minimum mutual reachability distances + rmm::device_uvector min_mr_dists(n_prediction_points, stream); + + int n_blocks = raft::ceildiv((int)n_prediction_points, tpb); + + // get nearest neighbors for each prediction point in mutual reachability space + min_mutual_reachability_kernel<<>>(input_core_dists, + prediction_core_dists, + knn_dists, + knn_inds, + n_prediction_points, + neighborhood, + min_mr_dists.data(), + min_mr_inds); + + // obtain lambda values from minimum mutual reachability distances + thrust::transform(exec_policy, + min_mr_dists.data(), + min_mr_dists.data() + n_prediction_points, + prediction_lambdas, + [] __device__(value_t dist) { + if (dist > 0) return (1 / dist); + return std::numeric_limits::max(); + }); +} + +/** + Return the cluster label (of the original clustering) and membership + probability of a new data point. + * + * @tparam value_idx + * @tparam value_t + * @tparam tpb + * @param[in] handle raft handle for resource reuse + * @param[in] condensed_tree condensed hierarchy + * @param[in] prediction_data PredictionData object + * @param[in] n_prediction_points number of prediction points + * @param[in] min_mr_inds indices of points with the minimum mutual reachability distance (size + n_prediction_points) + * @param[in] prediction_lambdas lambda values for prediction points (size n_prediction_points) + * @param[in] labels monotonic labels of all points + * @param[out] out_labels output cluster labels + * @param[out] out_probabilities output probabilities + */ +template +void _find_cluster_and_probability(const raft::handle_t& handle, + Common::CondensedHierarchy& condensed_tree, + Common::PredictionData& prediction_data, + size_t n_prediction_points, + value_idx* min_mr_inds, + value_t* prediction_lambdas, + value_idx* labels, + value_idx* out_labels, + value_t* out_probabilities) +{ + auto stream = handle.get_stream(); + auto exec_policy = handle.get_thrust_policy(); + + auto parents = condensed_tree.get_parents(); + auto children = condensed_tree.get_children(); + value_t* lambdas = condensed_tree.get_lambdas(); + auto n_edges = condensed_tree.get_n_edges(); + auto n_leaves = condensed_tree.get_n_leaves(); + + value_t* deaths = prediction_data.get_deaths(); + value_idx* selected_clusters = prediction_data.get_selected_clusters(); + value_idx* index_into_children = prediction_data.get_index_into_children(); + + int n_blocks = raft::ceildiv((int)n_prediction_points, tpb); + + cluster_probability_kernel<<>>(min_mr_inds, + prediction_lambdas, + index_into_children, + labels, + deaths, + selected_clusters, + parents, + lambdas, + n_leaves, + n_prediction_points, + out_labels, + out_probabilities); +} +/** + * Predict the cluster label and the probability of the label for new points. + * The returned labels are those of the original clustering, + * and therefore are not (necessarily) the cluster labels that would + * be found by clustering the original data combined with + * the prediction points, hence the 'approximate' label. + * + * @tparam value_idx + * @tparam value_t + * @param[in] handle raft handle for resource reuse + * @param[in] condensed_tree a condensed hierarchy + * @param[in] prediction_data PredictionData object + * @param[in] X input data points (size m * n) + * @param[in] labels converted monotonic labels of the input data points + * @param[in] points_to_predict input prediction points (size n_prediction_points * n) + * @param[in] n_prediction_points number of prediction points + * @param[in] metric distance metric to use + * @param[in] min_samples neighborhood size during training (includes self-loop) + * @param[out] out_labels output cluster labels + * @param[out] out_probabilities output probabilities + */ +template +void approximate_predict(const raft::handle_t& handle, + Common::CondensedHierarchy& condensed_tree, + Common::PredictionData& prediction_data, + const value_t* X, + value_idx* labels, + const value_t* points_to_predict, + size_t n_prediction_points, + raft::distance::DistanceType metric, + int min_samples, + value_idx* out_labels, + value_t* out_probabilities) +{ + RAFT_EXPECTS(metric == raft::distance::DistanceType::L2SqrtExpanded, + "Currently only L2 expanded distance is supported"); + + auto stream = handle.get_stream(); + auto exec_policy = handle.get_thrust_policy(); + + size_t m = prediction_data.n_rows; + size_t n = prediction_data.n_cols; + value_t* input_core_dists = prediction_data.get_core_dists(); + + // this is the neighborhood of prediction points for which MR distances are computed + int neighborhood = (min_samples - 1) * 2; + + rmm::device_uvector inds(neighborhood * n_prediction_points, stream); + rmm::device_uvector dists(neighborhood * n_prediction_points, stream); + rmm::device_uvector prediction_core_dists(n_prediction_points, stream); + + // perform knn + Reachability::compute_knn(handle, + X, + inds.data(), + dists.data(), + m, + n, + points_to_predict, + n_prediction_points, + neighborhood, + metric); + + // Slice core distances (distances to kth nearest neighbor). The index of the neighbor is + // consistent with Scikit-learn Contrib + Reachability::core_distances(dists.data(), + min_samples, + neighborhood, + n_prediction_points, + prediction_core_dists.data(), + stream); + + // Obtain lambdas for each prediction point using the closest point in mutual reachability space + rmm::device_uvector prediction_lambdas(n_prediction_points, stream); + rmm::device_uvector min_mr_inds(n_prediction_points, stream); + _find_neighbor_and_lambda(handle, + input_core_dists, + prediction_core_dists.data(), + dists.data(), + inds.data(), + n_prediction_points, + neighborhood, + min_mr_inds.data(), + prediction_lambdas.data()); + + // Using the nearest neighbor indices, find the assigned cluster label and probability + _find_cluster_and_probability(handle, + condensed_tree, + prediction_data, + n_prediction_points, + min_mr_inds.data(), + prediction_lambdas.data(), + labels, + out_labels, + out_probabilities); +} + +}; // end namespace Predict +}; // end namespace detail +}; // end namespace HDBSCAN +}; // end namespace ML \ No newline at end of file diff --git a/cpp/src/hdbscan/detail/reachability.cuh b/cpp/src/hdbscan/detail/reachability.cuh index c0a0b8e90e..b3e533e35a 100644 --- a/cpp/src/hdbscan/detail/reachability.cuh +++ b/cpp/src/hdbscan/detail/reachability.cuh @@ -52,14 +52,18 @@ namespace Reachability { * @tparam tpb block size for kernel * @param[in] knn_dists knn distance array (size n * k) * @param[in] min_samples this neighbor will be selected for core distances + * @param[in] n_neighbors the number of neighbors of each point in the knn graph * @param[in] n number of samples * @param[out] out output array (size n) * @param[in] stream stream for which to order cuda operations */ template void core_distances( - value_t* knn_dists, int min_samples, size_t n, value_t* out, cudaStream_t stream) + value_t* knn_dists, int min_samples, int n_neighbors, size_t n, value_t* out, cudaStream_t stream) { + ASSERT(n_neighbors >= min_samples, + "the size of the neighborhood should be greater than or equal to min_samples"); + int blocks = raft::ceildiv(n, (size_t)tpb); auto exec_policy = rmm::exec_policy(stream); @@ -67,10 +71,71 @@ void core_distances( auto indices = thrust::make_counting_iterator(0); thrust::transform(exec_policy, indices, indices + n, out, [=] __device__(value_idx row) { - return knn_dists[row * min_samples + (min_samples - 1)]; + return knn_dists[row * n_neighbors + (min_samples - 1)]; }); } +/** + * Wraps the brute force knn API, to be used for both training and prediction + * @tparam value_idx data type for integrals + * @tparam value_t data type for distance + * @param[in] handle raft handle for resource reuse + * @param[in] X input data points (size m * n) + * @param[out] inds nearest neighbor indices (size n_search_items * k) + * @param[out] dists nearest neighbor distances (size n_search_items * k) + * @param[in] m number of rows in X + * @param[in] n number of columns in X + * @param[in] search_items array of items to search of dimensionality D (size n_search_items * n) + * @param[in] n_search_items number of rows in search_items + * @param[in] k number of nearest neighbors + * @param[in] metric distance metric to use + */ +template +void compute_knn(const raft::handle_t& handle, + const value_t* X, + value_idx* inds, + value_t* dists, + size_t m, + size_t n, + const value_t* search_items, + size_t n_search_items, + int k, + raft::distance::DistanceType metric) +{ + auto stream = handle.get_stream(); + auto exec_policy = handle.get_thrust_policy(); + std::vector inputs; + inputs.push_back(const_cast(X)); + + std::vector sizes; + sizes.push_back(m); + + // This is temporary. Once faiss is updated, we should be able to + // pass value_idx through to knn. + rmm::device_uvector int64_indices(k * n_search_items, stream); + + // perform knn + brute_force_knn(handle, + inputs, + sizes, + n, + const_cast(search_items), + n_search_items, + int64_indices.data(), + dists, + k, + true, + true, + metric); + + // convert from current knn's 64-bit to 32-bit. + thrust::transform(exec_policy, + int64_indices.data(), + int64_indices.data() + int64_indices.size(), + inds, + [] __device__(int64_t in) -> value_idx { return in; }); +} + /** * Constructs a mutual reachability graph, which is a k-nearest neighbors * graph projected into mutual reachability space using the following @@ -130,42 +195,15 @@ void mutual_reachability_graph(const raft::handle_t& handle, auto stream = handle.get_stream(); auto exec_policy = handle.get_thrust_policy(); - std::vector inputs; - inputs.push_back(const_cast(X)); - - std::vector sizes; - sizes.push_back(m); - - // This is temporary. Once faiss is updated, we should be able to - // pass value_idx through to knn. rmm::device_uvector coo_rows(min_samples * m, stream); - rmm::device_uvector int64_indices(min_samples * m, stream); rmm::device_uvector inds(min_samples * m, stream); rmm::device_uvector dists(min_samples * m, stream); // perform knn - brute_force_knn(handle, - inputs, - sizes, - n, - const_cast(X), - m, - int64_indices.data(), - dists.data(), - min_samples, - true, - true, - metric); - - // convert from current knn's 64-bit to 32-bit. - thrust::transform(exec_policy, - int64_indices.data(), - int64_indices.data() + int64_indices.size(), - inds.data(), - [] __device__(int64_t in) -> value_idx { return in; }); + compute_knn(handle, X, inds.data(), dists.data(), m, n, X, m, min_samples, metric); // Slice core distances (distances to kth nearest neighbor) - core_distances(dists.data(), min_samples, m, core_dists, stream); + core_distances(dists.data(), min_samples, min_samples, m, core_dists, stream); /** * Compute L2 norm diff --git a/cpp/src/hdbscan/detail/soft_clustering.cuh b/cpp/src/hdbscan/detail/soft_clustering.cuh index db37479739..214d376563 100644 --- a/cpp/src/hdbscan/detail/soft_clustering.cuh +++ b/cpp/src/hdbscan/detail/soft_clustering.cuh @@ -163,6 +163,7 @@ void all_points_outlier_membership_vector( Common::CondensedHierarchy& condensed_tree, value_t* deaths, value_idx* selected_clusters, + value_idx* index_into_children, size_t m, int n_selected_clusters, value_t* merge_heights, @@ -181,19 +182,10 @@ void all_points_outlier_membership_vector( auto counting = thrust::make_counting_iterator(0); - rmm::device_uvector index_into_children(n_edges + 1, stream); - auto index_op = [index_into_children = index_into_children.data()] __device__(auto t) { - index_into_children[thrust::get<0>(t)] = thrust::get<1>(t); - return; - }; - - auto it = thrust::make_zip_iterator(thrust::make_tuple(children, counting)); - thrust::for_each(exec_policy, it, it + n_edges, index_op); - int n_blocks = raft::ceildiv(int(m * n_selected_clusters), tpb); merge_height_kernel<<>>(merge_heights, lambdas, - index_into_children.data(), + index_into_children, parents, m, n_selected_clusters, @@ -206,8 +198,8 @@ void all_points_outlier_membership_vector( counting + n_leaves, [deaths, parents, - index_into_children = index_into_children.data(), - leaf_max_lambdas = leaf_max_lambdas.data(), + index_into_children, + leaf_max_lambdas = leaf_max_lambdas.data(), n_leaves] __device__(auto idx) { leaf_max_lambdas[idx] = deaths[parents[index_into_children[idx]] - n_leaves]; }); @@ -241,6 +233,7 @@ void all_points_prob_in_some_cluster(const raft::handle_t& handle, Common::CondensedHierarchy& condensed_tree, value_t* deaths, value_idx* selected_clusters, + value_idx* index_into_children, size_t m, value_idx n_selected_clusters, value_t* merge_heights, @@ -258,24 +251,11 @@ void all_points_prob_in_some_cluster(const raft::handle_t& handle, raft::matrix::argmax(merge_heights, n_selected_clusters, m, height_argmax.data(), stream); - rmm::device_uvector index_into_children(n_edges + 1, stream); - auto counting = thrust::make_counting_iterator(0); - - auto index_op = [index_into_children = index_into_children.data()] __device__(auto t) { - index_into_children[thrust::get<0>(t)] = thrust::get<1>(t); - return; - }; - thrust::for_each( - exec_policy, - thrust::make_zip_iterator(thrust::make_tuple(children, counting)), - thrust::make_zip_iterator(thrust::make_tuple(children + n_edges, counting + n_edges)), - index_op); - int n_blocks = raft::ceildiv((int)m, tpb); prob_in_some_cluster_kernel<<>>(merge_heights, height_argmax.data(), deaths, - index_into_children.data(), + index_into_children, selected_clusters, lambdas, prob_in_some_cluster, @@ -284,13 +264,26 @@ void all_points_prob_in_some_cluster(const raft::handle_t& handle, m); } +/** + * Predict soft cluster membership vectors for all points in the original dataset the clusterer was + * trained on + * + * @tparam value_idx + * @tparam value_t + * @param[in] handle raft handle for resource reuse + * @param[in] condensed_tree a condensed hierarchy + * @param[in] prediction_data PredictionData object + * @param[in] X all points (size m * n) + * @param[in] metric distance metric to use + * @param[out] membership_vec output membership vectors (size m * n_selected_clusters) + */ template void all_points_membership_vectors(const raft::handle_t& handle, Common::CondensedHierarchy& condensed_tree, Common::PredictionData& prediction_data, - value_t* membership_vec, const value_t* X, - raft::distance::DistanceType metric) + raft::distance::DistanceType metric, + value_t* membership_vec) { auto stream = handle.get_stream(); auto exec_policy = handle.get_thrust_policy(); @@ -302,69 +295,77 @@ void all_points_membership_vectors(const raft::handle_t& handle, auto n_clusters = condensed_tree.get_n_clusters(); auto n_leaves = condensed_tree.get_n_leaves(); - size_t m = prediction_data.n_rows; - size_t n = prediction_data.n_cols; - value_idx n_selected_clusters = prediction_data.get_n_selected_clusters(); - value_t* deaths = prediction_data.get_deaths(); - value_idx* selected_clusters = prediction_data.get_selected_clusters(); - value_idx n_exemplars = prediction_data.get_n_exemplars(); - - rmm::device_uvector dist_membership_vec(m * n_selected_clusters, stream); - - all_points_dist_membership_vector(handle, - X, + size_t m = prediction_data.n_rows; + size_t n = prediction_data.n_cols; + value_idx n_selected_clusters = prediction_data.get_n_selected_clusters(); + value_t* deaths = prediction_data.get_deaths(); + value_idx* selected_clusters = prediction_data.get_selected_clusters(); + value_idx* index_into_children = prediction_data.get_index_into_children(); + value_idx n_exemplars = prediction_data.get_n_exemplars(); + + // Compute membership vectors only if the number of selected clusters is non-zero. This is done to + // avoid CUDA run-time errors in raft primitives for pairwise distances and other kernel + // invocations. + if (n_selected_clusters > 0) { + rmm::device_uvector dist_membership_vec(m * n_selected_clusters, stream); + + all_points_dist_membership_vector(handle, + X, + m, + n, + n_exemplars, + n_selected_clusters, + prediction_data.get_exemplar_idx(), + prediction_data.get_exemplar_label_offsets(), + dist_membership_vec.data(), + metric); + + rmm::device_uvector merge_heights(m * n_selected_clusters, stream); + + all_points_outlier_membership_vector(handle, + condensed_tree, + deaths, + selected_clusters, + index_into_children, + m, + n_selected_clusters, + merge_heights.data(), + membership_vec, + true); + + rmm::device_uvector prob_in_some_cluster(m, stream); + all_points_prob_in_some_cluster(handle, + condensed_tree, + deaths, + selected_clusters, + index_into_children, m, - n, - n_exemplars, n_selected_clusters, - prediction_data.get_exemplar_idx(), - prediction_data.get_exemplar_label_offsets(), - dist_membership_vec.data(), - metric); - - rmm::device_uvector merge_heights(m * n_selected_clusters, stream); - - all_points_outlier_membership_vector(handle, - condensed_tree, - deaths, - selected_clusters, - m, - n_selected_clusters, - merge_heights.data(), - membership_vec, - true); - - rmm::device_uvector prob_in_some_cluster(m, stream); - all_points_prob_in_some_cluster(handle, - condensed_tree, - deaths, - selected_clusters, - m, - n_selected_clusters, - merge_heights.data(), - prob_in_some_cluster.data()); - - thrust::transform(exec_policy, - dist_membership_vec.begin(), - dist_membership_vec.end(), - membership_vec, - membership_vec, - thrust::multiplies()); - - // Normalize to obtain probabilities conditioned on points belonging to some cluster - Utils::normalize(membership_vec, n_selected_clusters, m, stream); - - // Multiply with probabilities of points belonging to some cluster to obtain joint distribution - raft::linalg::matrixVectorOp( - membership_vec, - membership_vec, - prob_in_some_cluster.data(), - n_selected_clusters, - (value_idx)m, - true, - false, - [] __device__(value_t mat_in, value_t vec_in) { return mat_in * vec_in; }, - stream); + merge_heights.data(), + prob_in_some_cluster.data()); + + thrust::transform(exec_policy, + dist_membership_vec.begin(), + dist_membership_vec.end(), + membership_vec, + membership_vec, + thrust::multiplies()); + + // Normalize to obtain probabilities conditioned on points belonging to some cluster + Utils::normalize(membership_vec, n_selected_clusters, m, stream); + + // Multiply with probabilities of points belonging to some cluster to obtain joint distribution + raft::linalg::matrixVectorOp( + membership_vec, + membership_vec, + prob_in_some_cluster.data(), + n_selected_clusters, + (value_idx)m, + true, + false, + [] __device__(value_t mat_in, value_t vec_in) { return mat_in * vec_in; }, + stream); + } } }; // namespace Predict diff --git a/cpp/src/hdbscan/hdbscan.cu b/cpp/src/hdbscan/hdbscan.cu index a886e1cbcd..853e39aa80 100644 --- a/cpp/src/hdbscan/hdbscan.cu +++ b/cpp/src/hdbscan/hdbscan.cu @@ -15,11 +15,15 @@ */ #include "detail/condense.cuh" +#include "detail/predict.cuh" #include #include #include +#include +#include + #include "runner.h" namespace ML { @@ -34,7 +38,9 @@ void hdbscan(const raft::handle_t& handle, { rmm::device_uvector labels(m, handle.get_stream()); rmm::device_uvector label_map(m, handle.get_stream()); - HDBSCAN::_fit_hdbscan(handle, X, m, n, metric, params, labels.data(), label_map.data(), out); + rmm::device_uvector core_dists(m, handle.get_stream()); + HDBSCAN::_fit_hdbscan( + handle, X, m, n, metric, params, labels.data(), label_map.data(), core_dists.data(), out); } void hdbscan(const raft::handle_t& handle, @@ -48,7 +54,17 @@ void hdbscan(const raft::handle_t& handle, { rmm::device_uvector labels(m, handle.get_stream()); rmm::device_uvector label_map(m, handle.get_stream()); - HDBSCAN::_fit_hdbscan(handle, X, m, n, metric, params, labels.data(), label_map.data(), out); + HDBSCAN::_fit_hdbscan(handle, + X, + m, + n, + metric, + params, + labels.data(), + label_map.data(), + prediction_data_.get_core_dists(), + out); + HDBSCAN::Common::build_prediction_data(handle, out.get_condensed_tree(), labels.data(), @@ -102,15 +118,42 @@ void _extract_clusters(const raft::handle_t& handle, cluster_selection_epsilon); } -void _all_points_membership_vectors(const raft::handle_t& handle, - HDBSCAN::Common::CondensedHierarchy& condensed_tree, - HDBSCAN::Common::PredictionData& prediction_data, - float* membership_vec, - const float* X, - raft::distance::DistanceType metric) +void compute_all_points_membership_vectors( + const raft::handle_t& handle, + HDBSCAN::Common::CondensedHierarchy& condensed_tree, + HDBSCAN::Common::PredictionData& prediction_data, + const float* X, + raft::distance::DistanceType metric, + float* membership_vec) { HDBSCAN::detail::Predict::all_points_membership_vectors( - handle, condensed_tree, prediction_data, membership_vec, X, metric); + handle, condensed_tree, prediction_data, X, metric, membership_vec); } +void out_of_sample_predict(const raft::handle_t& handle, + HDBSCAN::Common::CondensedHierarchy& condensed_tree, + HDBSCAN::Common::PredictionData& prediction_data, + const float* X, + int* labels, + const float* points_to_predict, + size_t n_prediction_points, + raft::distance::DistanceType metric, + int min_samples, + int* out_labels, + float* out_probabilities) +{ + // Note that (min_samples+1) is parsed to the approximate_predict function. This was done for the + // core distance computation to consistent with Scikit learn Contrib. + HDBSCAN::detail::Predict::approximate_predict(handle, + condensed_tree, + prediction_data, + X, + labels, + points_to_predict, + n_prediction_points, + metric, + min_samples + 1, + out_labels, + out_probabilities); +} }; // end namespace ML diff --git a/cpp/src/hdbscan/prediction_data.cu b/cpp/src/hdbscan/prediction_data.cu index 53986a075a..ab7d0ce3b3 100644 --- a/cpp/src/hdbscan/prediction_data.cu +++ b/cpp/src/hdbscan/prediction_data.cu @@ -45,15 +45,62 @@ namespace Common { template void PredictionData::allocate(const raft::handle_t& handle, value_idx n_exemplars_, - value_idx n_selected_clusters_) + value_idx n_selected_clusters_, + value_idx n_edges_) { this->n_exemplars = n_exemplars_; this->n_selected_clusters = n_selected_clusters_; exemplar_idx.resize(n_exemplars, handle.get_stream()); exemplar_label_offsets.resize(n_selected_clusters + 1, handle.get_stream()); selected_clusters.resize(n_selected_clusters, handle.get_stream()); + index_into_children.resize(n_edges_ + 1, handle.get_stream()); } +/** + * Builds an index into the children array of the CondensedHierarchy object. This is useful for + * constant time lookups during bottom-up tree traversals in prediction algorithms. It is therefore + * an important feature for speed-up in comparison with Scikit-learn Contrib. This is intended for + * internal use only and users are not expected to invoke this method. + * + * @tparam value_idx + * @param[in] handle raft handle for resource reuse + * @param[in] children children array of condensed hierarchy + * @param[in] n_edges number of edges in children array + * @param[out] index_into_children index into the children array (size n_edges + 1) + */ +template +void build_index_into_children(const raft::handle_t& handle, + value_idx* children, + value_idx n_edges, + value_idx* index_into_children) +{ + auto exec_policy = handle.get_thrust_policy(); + + auto counting = thrust::make_counting_iterator(0); + + auto index_op = [index_into_children] __device__(auto t) { + index_into_children[thrust::get<0>(t)] = thrust::get<1>(t); + return; + }; + thrust::for_each( + exec_policy, + thrust::make_zip_iterator(thrust::make_tuple(children, counting)), + thrust::make_zip_iterator(thrust::make_tuple(children + n_edges, counting + n_edges)), + index_op); +} +/** + * Populates the PredictionData container object. Computes and stores: the indices of exemplar + * points sorted by their cluster labels, cluster label offsets of the exemplars and the set of + * clusters selected from the cluster tree. + * + * @param[in] handle raft handle for resource reuse + * @param[in] condensed_tree a condensed hierarchy + * @param[in] labels unconverted non-monotonic labels. These are intermediate outputs in the hdbscan + * method + * @param[in] label_map map of original labels to new final labels (size n_leaves) + * @param[in] n_selected_clusters number of clusters in the final clustering + * @param[in] prediction_data PreditionData object + */ void build_prediction_data(const raft::handle_t& handle, CondensedHierarchy& condensed_tree, int* labels, @@ -116,10 +163,12 @@ void build_prediction_data(const raft::handle_t& handle, parents, children, n_leaves, + labels, deaths = prediction_data.get_deaths()] __device__(auto idx) { if (children[idx] < n_leaves) { - is_exemplar[children[idx]] = (is_leaf_cluster[parents[idx] - n_leaves] && - lambdas[idx] == deaths[parents[idx] - n_leaves]); + is_exemplar[children[idx]] = + (labels[children[idx]] != -1 && is_leaf_cluster[parents[idx] - n_leaves] && + lambdas[idx] == deaths[parents[idx] - n_leaves]); return; } }; @@ -129,7 +178,7 @@ void build_prediction_data(const raft::handle_t& handle, int n_exemplars = thrust::count_if( exec_policy, is_exemplar.begin(), is_exemplar.end(), [] __device__(auto idx) { return idx; }); - prediction_data.allocate(handle, n_exemplars, n_selected_clusters); + prediction_data.allocate(handle, n_exemplars, n_selected_clusters, n_edges); auto exemplar_idx_end_ptr = thrust::copy_if( exec_policy, @@ -157,21 +206,29 @@ void build_prediction_data(const raft::handle_t& handle, exemplar_labels.begin(), exemplar_labels.end(), converted_exemplar_labels.data(), - [label_map] __device__(auto idx) { return label_map[idx]; }); - - raft::sparse::convert::sorted_coo_to_csr(converted_exemplar_labels.data(), - n_exemplars, - prediction_data.get_exemplar_label_offsets(), - n_selected_clusters + 1, - stream); - - thrust::transform(exec_policy, - prediction_data.get_exemplar_label_offsets(), - prediction_data.get_exemplar_label_offsets() + n_selected_clusters, - prediction_data.get_selected_clusters(), - [exemplar_labels = exemplar_labels.data(), n_leaves] __device__(auto idx) { - return exemplar_labels[idx] + n_leaves; + [label_map] __device__(auto label) { + if (label != -1) return label_map[label]; + return -1; }); + + if (n_exemplars > 0) { + raft::sparse::convert::sorted_coo_to_csr(converted_exemplar_labels.data(), + n_exemplars, + prediction_data.get_exemplar_label_offsets(), + n_selected_clusters + 1, + stream); + + thrust::transform(exec_policy, + prediction_data.get_exemplar_label_offsets(), + prediction_data.get_exemplar_label_offsets() + n_selected_clusters, + prediction_data.get_selected_clusters(), + [exemplar_labels = exemplar_labels.data(), n_leaves] __device__(auto idx) { + return exemplar_labels[idx] + n_leaves; + }); + + // build the index into the children array for constant time lookups + build_index_into_children(handle, children, n_edges, prediction_data.get_index_into_children()); + } } }; // end namespace Common diff --git a/cpp/src/hdbscan/runner.h b/cpp/src/hdbscan/runner.h index 1e441734be..a26dd61a82 100644 --- a/cpp/src/hdbscan/runner.h +++ b/cpp/src/hdbscan/runner.h @@ -117,6 +117,7 @@ struct FixConnectivitiesRedOp { * @param[in] n number of columns * @param[in] metric distance metric to use * @param[in] params hyper parameters + * @param[in] core_dists buffer for storing core distances (size m) * @param[out] out output container object */ template @@ -126,6 +127,7 @@ void build_linkage(const raft::handle_t& handle, size_t n, raft::distance::DistanceType metric, Common::HDBSCANParams& params, + value_t* core_dists, Common::robust_single_linkage_output& out) { auto stream = handle.get_stream(); @@ -134,18 +136,21 @@ void build_linkage(const raft::handle_t& handle, * Mutual reachability graph */ rmm::device_uvector mutual_reachability_indptr(m + 1, stream); - raft::sparse::COO mutual_reachability_coo(stream, params.min_samples * m * 2); - rmm::device_uvector core_dists(m, stream); + // Note that (min_samples+1) is parsed while allocating space for the COO matrix and to the + // mutual_reachability_graph function. This was done to account for self-loops in the knn graph + // and be consistent with Scikit learn Contrib. + raft::sparse::COO mutual_reachability_coo(stream, + (params.min_samples + 1) * m * 2); detail::Reachability::mutual_reachability_graph(handle, X, (size_t)m, (size_t)n, metric, - params.min_samples, + params.min_samples + 1, params.alpha, mutual_reachability_indptr.data(), - core_dists.data(), + core_dists, mutual_reachability_coo); /** @@ -153,7 +158,7 @@ void build_linkage(const raft::handle_t& handle, */ rmm::device_uvector color(m, stream); - FixConnectivitiesRedOp red_op(color.data(), core_dists.data(), m); + FixConnectivitiesRedOp red_op(color.data(), core_dists, m); // during knn graph connection raft::hierarchy::detail::build_sorted_mst(handle, X, @@ -195,6 +200,7 @@ void _fit_hdbscan(const raft::handle_t& handle, Common::HDBSCANParams& params, value_idx* labels, value_idx* label_map, + value_t* core_dists, Common::hdbscan_output& out) { auto stream = handle.get_stream(); @@ -202,7 +208,7 @@ void _fit_hdbscan(const raft::handle_t& handle, int min_cluster_size = params.min_cluster_size; - build_linkage(handle, X, m, n, metric, params, out); + build_linkage(handle, X, m, n, metric, params, core_dists, out); /** * Condense branches of tree according to min cluster size diff --git a/cpp/test/sg/hdbscan_inputs.hpp b/cpp/test/sg/hdbscan_inputs.hpp index e4dbf14be0..74c4248d39 100644 --- a/cpp/test/sg/hdbscan_inputs.hpp +++ b/cpp/test/sg/hdbscan_inputs.hpp @@ -87,6 +87,30 @@ struct SoftClusteringInputs { std::vector expected_probabilities; }; +template +struct ApproximatePredictInputs { + IdxT n_row; + IdxT n_col; + IdxT n_points_to_predict; + int min_samples; + int min_cluster_size; + + std::vector data; + std::vector points_to_predict; + + std::vector condensed_parents; + std::vector condensed_children; + std::vector condensed_lambdas; + std::vector condensed_sizes; + + Common::CLUSTER_SELECTION_METHOD cluster_selection_method; + bool allow_single_cluster; + T cluster_selection_epsilon; + + std::vector expected_labels; + std::vector expected_probabilities; +}; + const std::vector> hdbscan_inputsf2 = { // Test n_clusters == n_points {10, @@ -6142,5 +6166,3357 @@ const std::vector> soft_clustering_inputs = { 0.0501381, 0.053290438, 0.047078118, 0.040903572, 0.0667583, 0.056616243, 0.07065173, 0.0443147, 0.04315245, 0.056318313, 0.049550712, 0.042784892}}}; +const std::vector> approximate_predict_inputs = { + {1000, + 15, + 200, + 5, + 10, + {-6.6041913, 3.047298, 4.655545, 0.83865887, 5.1522017, 0.3939999, + 0.3331755, -1.1581178, -9.929659, -7.6812243, -8.826958, 2.2155986, + -3.1659298, 0.20807476, 8.883152, -3.3655725, -4.4421263, 6.543759, + -3.375205, -4.51362, 0.98012805, -7.751923, 5.0105557, -7.2450852, + 9.294448, 5.3771634, -5.3180985, -7.419219, 5.438088, 4.452026, + 1.8479553, -6.0338445, -8.907131, 8.805243, 10.003104, 5.6695657, + -4.9876866, -8.158999, 3.3457386, -1.8733226, -7.682, 0.24759215, + -9.318731, 8.401295, -3.555015, -4.4170446, -1.9870255, 3.7783911, + -5.762051, -8.429805, -3.3490055, -7.17304, 8.952734, 6.365469, + 2.6988056, 8.0805855, 5.6108527, -6.6712294, 7.8428493, 0.3387423, + 2.1070492, -6.419331, -8.904938, 9.92732, 9.172394, 6.3302364, + -3.1055036, -8.590717, 4.775813, -2.268273, -6.4184856, -0.3573347, + -9.482119, 6.863401, -5.1427565, 2.5543456, -3.5910947, -0.4267789, + 0.7572713, -5.5823216, 9.949384, 5.5132847, 8.1076145, 8.348458, + 1.9715664, 6.813264, -7.682309, -6.097306, -8.253738, -4.2600827, + -2.3817012, -3.894461, 6.1327686, -2.828165, -4.9104753, 1.1062309, + -7.3330817, 5.3864703, -7.576201, 10.387991, 5.0214605, -5.6772346, + -9.51337, 6.7588396, 2.9511678, -7.7766223, 3.0740974, 5.4775443, + 1.4106811, 5.4639354, -0.27586702, 0.24972604, -1.0978495, -9.511789, + -7.621691, -9.220928, 3.5146074, -3.2389846, 0.3064171, 9.214225, + -3.414265, 1.9911942, 3.5397892, -2.9501078, 9.399453, 8.767797, + -4.195589, -1.7146497, -4.354175, -3.7303705, -9.468127, 1.6166995, + 0.3621102, -8.335985, -4.279626, -5.5144205, -2.0442793, 6.532834, + -6.062912, -8.655461, -4.476213, -6.9485946, 8.362085, 6.357876, + 1.4709525, 8.155231, 6.5162497, -7.138609, 6.262826, 0.102894336, + -2.7064266, -3.9988105, 5.909083, -2.377781, -4.74294, 0.13764441, + -6.9854836, 4.1717424, -9.73467, 9.613495, 5.5026045, -6.2842097, + -10.995163, 5.7367043, 4.4109936, -7.640729, -4.1871195, 0.62842536, + -1.0466465, -4.532282, 2.2611666, -8.951952, -4.617881, -2.355307, + -1.5662061, 5.744808, -5.6937137, 0.04490433, 1.967616, -9.7449045, + -2.5019507, 8.096001, 3.8942993, 1.7595124, -7.306286, -7.0109897, + -8.798673, 7.694308, 1.972951, 4.5020027, -9.543178, 8.01537, + 5.991318, -5.8540792, -7.210287, 2.2041163, -3.6701603, 0.41913012, + 0.43260413, -5.7361946, 9.763319, 6.103354, 8.703783, 8.318354, + 1.6460444, 9.875157, -8.798932, -4.6066346, -9.071033, -4.456251, + -8.153979, 4.9592443, 3.8976126, 0.15902549, 5.4066496, 0.08121103, + 0.7939708, -1.6604385, -7.720359, -8.001697, -9.532967, 2.1703176, + -3.6261456, 0.6018867, 8.9938345, 5.479017, 4.370349, -8.90881, + -2.5305526, -7.1432943, 8.797483, 3.1349554, -3.4217916, -9.352138, + -4.1753564, -3.9112256, 5.050787, 2.9310477, 6.8177004, -0.8608325, + -3.4482756, -2.722893, 4.9118657, -7.190457, -8.671057, -3.755069, + -6.2711267, 8.648108, 6.784892, 4.450313, 8.627825, 5.707677, + -7.2843714, 7.566874, 0.123956904, -8.208866, 3.882511, 5.6097383, + 1.1503326, 5.3655376, 0.79534316, -0.032866176, -0.14423996, -9.961533, + -7.7797327, -9.568259, 2.8146017, -3.401666, 0.4750985, 7.6241474, + -3.0593903, 8.082423, 3.354535, 2.3287637, -7.6519837, -8.387133, + -8.566322, 9.068623, 2.0180507, 4.748395, -9.53103, 9.328975, + 7.2922063, -5.95641, -6.176326, -4.9280424, -2.1777153, 4.6793118, + -5.1208076, -9.583013, -5.215721, -6.7620707, 8.578337, 6.402896, + 3.980733, 7.502372, 6.492162, -6.951472, 8.388737, 0.41837123, + -3.5695906, 8.701726, 5.239358, 2.1230352, -7.751644, -6.758883, + -8.568605, 6.7048225, 2.1299078, 4.2021976, -10.38839, 9.648648, + 7.041402, -4.995082, -5.625839, 4.5795603, -3.704867, -0.32394007, + 1.5339218, -6.024277, 9.667898, 5.2046275, 9.105326, 7.7133164, + 2.3471587, 7.1040235, -8.533861, -4.874834, -9.632401, -3.9160802, + -7.908441, 3.0715456, 5.042133, 0.88956624, 5.058157, 0.16772307, + 0.91569895, -1.2866435, -8.7948265, -7.439278, -9.577955, 2.404209, + -3.4939048, 0.5730508, 9.129821, -3.319531, -0.10301979, 4.063939, + -1.6584153, 8.753799, 7.882726, -4.645801, -0.1323107, -4.479451, + -3.846734, -8.674804, 0.6454921, -0.40323806, -7.3481636, -4.0186872, + 2.994777, -4.9355974, 1.8264719, 1.2624903, -6.6472807, 10.321332, + 4.821721, 9.074615, 7.775707, 2.4050736, 8.392983, -9.245799, + -6.027439, -8.361249, -3.513845, -2.6801074, 9.689147, 5.472508, + 1.1138442, -6.4614472, -6.389289, -9.046622, 8.286518, 1.9172614, + 4.249355, -9.70946, 9.409102, 5.88146, -6.7612534, -5.247347, + 5.094545, 7.6293974, -4.87967, -8.291521, -4.991865, -1.1040689, + 6.395935, 7.3338923, -11.181063, -0.045847546, -2.128726, -6.0191855, + -7.1829877, -3.8500516, 8.434917, -1.4297206, 10.418551, 6.0829315, + 2.819026, -6.1627836, -6.4653406, -8.293475, 6.937693, 1.449561, + 4.1590896, -9.707439, 9.080937, 7.136324, -5.084504, -6.3016157, + -2.7217407, -4.9501724, 6.070602, -3.6528919, -4.410214, -0.17823021, + -6.51875, 6.082442, -8.213283, 9.4114065, 5.187853, -5.824392, + -10.704393, 6.058635, 3.5354173, -6.192646, -3.6094382, 0.77813494, + -0.4960521, -4.9251547, 2.7132092, -6.3753676, -5.402118, -2.4490068, + -1.2315263, 5.6464534, -5.7631507, -0.056371227, 1.3752958, -9.047085, + -2.6350596, -5.3330426, 6.5956073, -3.3130417, -3.342689, 0.33955404, + -8.160975, 4.5369, -8.530538, 9.344388, 4.444662, -5.193228, + -9.422486, 6.289476, 5.0921755, 3.3196993, -3.5289283, -0.2934442, + 0.9484976, -7.3288827, 8.1533575, 5.759379, 8.521267, 8.038143, + 1.9454731, 7.7540045, -8.261828, -6.943514, -8.121774, -4.4425726, + 1.9670354, -6.8249884, -8.026754, 9.301449, 8.4870825, 6.288525, + -3.4376528, -6.976936, 4.3059134, -0.6643575, -7.517175, 0.17535661, + -8.437576, 7.2534637, -5.069008, -3.9012227, -0.2620066, 4.9176264, + -2.9958425, 10.027427, 9.624045, -5.567969, -0.46590063, -3.0767615, + -4.846028, -9.174853, 1.6435078, -0.16618606, -9.002738, -4.975077, + -2.8667848, 1.7363213, 4.0991964, -2.5258641, 9.248608, 9.047988, + -5.693675, 0.0037772516, -4.5349064, -3.9938538, -9.143254, 2.3926642, + 1.2261714, -8.996827, -3.8973618, -5.5837207, -2.331108, 5.3350635, + -6.3448434, -7.7639937, -4.5786624, -6.8803196, 7.6580687, 6.1537514, + 2.4382505, 7.3941555, 7.1036377, -6.1442103, 7.2949185, 0.2889209, + -1.7334696, 8.286352, 5.0688205, 1.2357788, -7.3162656, -5.5402875, + -8.971806, 7.475726, 2.6313477, 4.508429, -9.483017, 9.653669, + 8.3312435, -5.793551, -6.222731, 4.6132526, 5.9116755, -8.824667, + -2.0805092, -7.4759617, 6.786457, 2.4575458, -3.5497286, -8.386408, + -4.6061974, -3.5168798, 4.868839, 2.7742658, 8.687114, -0.013885555, + -3.2930691, 0.26906267, 3.6637099, -2.1926463, 9.404198, 8.325509, + -6.3163705, -0.8453042, -2.3073251, -3.7972465, -9.130233, 2.064124, + -0.1195946, -8.153388, -4.770488, 5.3647437, 8.754217, -2.4106593, + -8.346487, -5.763693, -2.276131, 5.0921474, 7.7174997, -9.7048435, + 0.22228764, -2.6318195, -4.409874, -7.9550424, -2.8741581, 7.840001, + 5.0947356, 5.429874, -9.812888, -4.2619257, -8.087908, 8.001339, + 3.0177667, -2.7421856, -9.419765, -2.6492429, -4.1717587, 4.741101, + 2.743903, 7.6225433, 0.381313, 4.0469112, 5.2156196, -7.4159937, + -2.8641448, -8.19136, 6.6477365, 2.6988661, -4.3152432, -8.901968, + -3.5470922, -2.5869286, 5.059407, 2.251304, 8.569148, -0.765362, + -2.553056, -5.0130887, 4.742057, -3.90204, -5.3189387, 0.9485549, + -7.409879, 5.102205, -8.705802, 10.091475, 5.814383, -7.3554554, + -9.979342, 5.34089, 4.768357, -0.7485468, -5.175415, 6.3486204, + -3.1219993, -4.6762595, 1.2888644, -6.5178156, 5.8297715, -9.374522, + 10.629847, 5.3781567, -4.814461, -11.461468, 6.4460106, 5.480171, + 6.831538, 8.236086, -2.4162357, -6.621108, -5.680868, 0.29442224, + 6.377431, 6.540744, -10.304505, -1.3647615, -0.5268666, -4.44151, + -8.313548, -3.4072156, 8.925119, 4.687855, 7.71594, -4.401417, + -7.7435193, -6.1070724, -1.3846647, 6.259015, 8.385041, -9.512905, + -1.0728005, -2.5372021, -5.5191984, -8.253586, -5.3255544, 9.802876, + 3.9939768, 6.0524645, -7.8714094, -2.7126296, -7.209169, 7.2356877, + 2.629668, -2.566546, -8.29111, -3.8988457, -2.5496798, 2.936725, + 4.1876006, 6.5500836, -0.99466646, 4.7416415, 5.496659, -8.304664, + -2.765846, -6.812615, 7.348469, 1.4452133, -2.2409484, -8.469595, + -4.192831, -4.373715, 4.8692636, 2.6691291, 8.846158, -0.7978366, + -4.605248, 1.2223709, 3.5939949, -3.0447555, 11.054072, 8.7564, + -4.444807, 0.3384347, -3.7093132, -4.1057897, -8.998789, 2.3816452, + 0.017237613, -7.9125266, -5.345933, -6.772394, -2.8415458, 0.12006761, + -2.55625, -4.9569845, 3.1021261, -7.3192515, -4.5409083, -2.5607505, + -0.5273524, 6.485698, -4.9925747, 0.032850716, 0.920058, -9.360417, + 1.3626592, -6.768956, -9.075602, 9.5362015, 8.011105, 6.199791, + -3.516889, -6.7469044, 3.3474243, -0.9698291, -8.821939, -1.7708311, + -8.720887, 8.182516, -3.9994414, -5.5655613, -1.633937, 6.48551, + -5.1894245, -8.7144, -5.274194, -6.929163, 8.758403, 5.891101, + 1.5023059, 6.833816, 7.0916185, -5.264798, 7.2305326, 1.2577746, + -4.106659, 0.094991215, 4.661225, -2.1144485, 8.829437, 9.947514, + -5.2466745, 0.7931179, -4.7052836, -4.3895082, -9.605378, 2.930508, + -0.3123664, -9.000139, -4.072303, -4.003389, -1.1616999, 4.3899875, + -2.035924, 9.748104, 8.800784, -5.7588625, 0.29111838, -3.8833985, + -4.391245, -7.9865365, 1.5285267, 1.2961063, -8.948176, -5.71197, + 4.4741416, -3.0377352, -0.11647939, -2.1837972e-05, -6.5728817, 9.695845, + 5.6708007, 9.6671715, 8.449491, 2.636698, 8.666284, -9.202659, + -6.217332, -8.353392, -3.5294595, -2.3272796, 9.561563, 3.7740133, + 1.04885, -6.514268, -6.67222, -8.662983, 7.5660367, 1.5462829, + 4.324029, -9.38316, 8.898151, 7.954895, -5.4215345, -7.197413, + 2.0961356, -7.878846, -8.074521, 8.564786, 9.801723, 6.1855946, + -4.9879074, -7.9315515, 5.222017, -0.8518596, -7.599498, 0.6562786, + -9.164762, 8.333082, -5.588538, -3.5440683, -0.5231263, 3.665892, + -1.6147137, 10.405448, 8.815226, -6.937167, -0.20391269, -4.183826, + -4.478031, -8.892283, 2.8046355, 0.7467902, -8.658428, -5.68761, + -2.7461247, -4.6542172, 7.903271, -2.9446023, -3.6216543, 0.8809103, + -7.5200768, 5.8712325, -8.626881, 10.160291, 6.407123, -5.7739096, + -9.058603, 5.633876, 3.8469055, 7.028618, 8.562295, -3.613276, + -7.707871, -6.4942007, -1.8473703, 6.7223425, 7.5253367, -9.006142, + 0.13059531, -2.6228805, -4.8181324, -6.59743, -2.6189253, 8.74365, + 6.2895265, 9.399066, -4.077298, -6.7908845, -5.1946006, -1.9205595, + 6.919768, 7.6106286, -9.835867, 0.4013528, -2.069671, -6.135895, + -7.071083, -3.4044542, 8.802136, -4.602445, -2.2868743, 5.1336083, + -6.04972, -8.588211, -4.5931864, -5.953241, 10.075162, 5.160576, + 1.3218237, 7.2575912, 5.0105505, -6.236251, 8.375435, 1.8327441, + -1.5218296, -4.9718084, 6.3242707, -1.0184163, -4.1699986, 0.5834959, + -8.725222, 7.0167747, -9.450634, 9.035332, 5.212949, -5.0341983, + -9.3482895, 6.1987424, 4.3529515, -7.3496304, 3.210813, 5.1807637, + 0.8126032, 5.6510706, -0.69063073, -0.2633498, -2.8945854, -8.636354, + -8.122011, -9.261415, 2.7266417, -4.460084, -0.7099316, 7.447609, + -6.223276, -3.3375864, -0.11186252, -1.8217812, -4.3880253, 1.2949482, + -7.783603, -4.490462, -2.0606906, -0.6948074, 5.839032, -5.410896, + 0.18852852, 2.1216168, -9.143247, 2.9236112, -6.2569003, -8.700651, + 8.565221, 8.548126, 6.752273, -3.2680845, -9.128569, 4.797548, + -0.7951003, -6.5795193, -1.0359513, -10.268307, 8.0821295, -4.472451, + 4.2302337, 5.1866417, -7.803733, -2.3174598, -6.717919, 6.568632, + 2.2257285, -2.8507524, -8.415178, -2.7076874, -3.201958, 5.8858, + 3.1291618, 8.487772, -0.78216195, 2.5387375, -7.1927094, -8.677946, + 7.471042, 9.92616, 5.0749016, -2.8553307, -8.277642, 3.5364935, + -1.6363639, -7.7608624, 0.8965101, -11.053696, 9.080284, -4.587784, + -7.3328085, 5.039416, 5.043607, 0.28917202, 5.8478637, 0.27441445, + 0.5048246, -1.6188425, -8.81807, -8.532185, -9.913063, 2.0225337, + -3.6533992, -0.59011126, 7.67236, 6.8135934, 8.113954, -4.477491, + -9.500047, -5.6973433, -1.5079542, 5.7415495, 7.314771, -9.506487, + 0.6844271, -3.300923, -6.4778433, -7.8159285, -2.8471754, 9.200658, + -7.8914022, 4.9856186, 6.6034303, 1.8931761, 6.939605, -0.769734, + -0.118914194, -2.2814384, -9.182385, -7.719249, -9.477782, 3.2946892, + -2.8502502, -0.8965499, 7.733449, 2.019114, -5.7543383, -7.983907, + 9.620951, 8.990881, 5.4120574, -4.337236, -7.909189, 4.0667114, + -2.71705, -7.5649147, 0.01420066, -9.506511, 9.0903, -4.5291543, + -2.6467242, -4.4752617, 6.6260858, -2.1867945, -3.7042851, 1.1997058, + -7.4351587, 6.5632153, -8.573365, 8.980399, 5.162594, -5.9665174, + -9.252407, 6.180759, 3.2907078, -6.1920424, -3.7303412, 1.385776, + -0.8483552, -3.9733107, 1.0786366, -7.8821554, -4.2430034, -2.6074026, + -1.669743, 7.391693, -4.9450483, 0.7061716, 1.8987172, -9.219538, + -5.8968096, -4.1738825, 0.7590989, -1.3815836, -3.387182, 2.2010822, + -8.451245, -3.273762, -3.3067758, -1.3362367, 5.2865562, -5.044418, + -1.2102832, 4.0447154, -8.331752, -5.007557, -1.5802612, 4.6986103, + -5.289203, -8.561202, -4.2709618, -6.6485515, 7.674484, 6.1901064, + 2.7824886, 7.5194063, 5.92236, -5.4720984, 7.6036234, 0.945973, + -6.832204, 4.4715323, 5.492118, 0.6609872, 5.0978894, -0.24738201, + -0.6192307, -2.6308036, -9.912141, -7.476407, -9.828612, 2.0150447, + -4.28316, -0.14732587, 7.9036283, -7.020154, 5.444887, 4.7633314, + 0.890556, 5.780306, 1.0112236, 0.09077269, -2.3818946, -9.049624, + -7.282824, -9.367125, 2.3375149, -3.0168152, 0.54103905, 7.613425, + -5.4322505, -1.360736, 4.196054, -5.293789, -8.067301, -4.3440394, + -6.515967, 7.900019, 5.486329, 2.8337772, 7.9041967, 4.7610354, + -5.9031844, 7.4709387, 0.65188056, -6.998253, -3.8609188, 0.6755554, + -2.2303321, -3.9414937, 2.1283765, -8.5455885, -4.7593765, -2.962287, + 0.44278103, 6.0931063, -6.9413614, 0.62491417, 0.76517856, -8.313108, + 2.801484, -6.682013, -9.06558, 8.026709, 8.556826, 4.752688, + -3.978621, -8.465464, 3.008049, -1.2446365, -7.3044558, 1.3687768, + -10.370548, 8.997974, -4.1432295, -8.261298, 4.7363267, 5.042858, + -0.12264052, 6.6704116, -0.4278814, 1.5015568, -0.55427516, -10.192324, + -7.1189384, -9.827426, 1.4215178, -4.010099, 0.44976008, 7.827414, + -2.03553, 0.19619605, 4.163274, -3.68158, 9.636696, 7.863422, + -4.4787655, 0.45206985, -3.0309298, -5.017168, -9.149868, 2.5859582, + 0.3631776, -9.576135, -6.101458, 1.8643811, -5.8853703, -9.488215, + 9.767247, 9.420786, 5.93236, -3.921636, -8.121643, 4.5388584, + -1.9506255, -8.0929985, 0.62895024, -9.729104, 8.816781, -3.6347952, + 2.7928703, -4.330242, 0.4543469, 1.4141184, -6.402065, 10.208152, + 5.8743396, 7.265231, 7.52592, 1.5647101, 8.773037, -10.067522, + -4.296036, -8.723736, -3.3891797, -4.8869085, -1.5862483, 5.37258, + -5.6078396, -7.5634336, -5.5277634, -7.0703654, 8.907505, 6.482465, + 3.6150064, 8.267969, 5.8735623, -5.358689, 7.351351, 1.438466, + -5.5339947, -2.9931746, 0.41248065, -2.846398, -4.6008925, 3.144954, + -7.2261305, -4.8566184, -3.0261056, -0.2901663, 6.0862327, -6.1737766, + 0.02791168, 1.5740607, -9.716679, 3.8797028, 4.82684, -9.363322, + -3.450865, -9.67764, 7.643276, 3.9038982, -3.278565, -9.7202215, + -4.230297, -3.8175473, 3.8798141, 3.3532772, 8.311437, -1.3645178, + -1.8129332, -4.727099, 6.6193047, -3.1251788, -5.4156384, 1.0342423, + -5.8569813, 5.4253364, -9.050108, 9.128229, 5.95211, -5.7117467, + -10.000534, 5.666615, 4.201811, -2.965483, 9.047465, 4.0375896, + 1.7039808, -6.1752224, -7.283934, -8.253344, 6.532728, 2.3931632, + 5.1705494, -11.318461, 8.84037, 7.0528035, -5.8953495, -6.1036987, + -1.6432287, -3.675063, 6.6293554, -3.7803771, -4.622883, 0.88476545, + -8.466554, 7.0160046, -8.409323, 10.004685, 6.400764, -6.4667864, + -9.487728, 6.2323236, 4.008286, -6.3161836, -3.5321717, -0.33144033, + -0.5810744, -3.6746502, 2.7397878, -6.9031897, -4.1433754, -2.2017603, + -0.46433043, 5.455691, -6.408046, 0.35598817, 2.9326055, -9.938367, + -7.2791057, 4.337263, 4.5251927, 1.5873216, 6.928788, -0.3905743, + 0.19146807, -1.8419421, -9.834208, -9.763881, -9.087892, 2.1363218, + -4.8400645, 0.6986468, 7.393917, -8.467025, 3.7889616, 5.345175, + 2.9066525, 4.8151107, 1.3040056, 1.8577529, -1.5172974, -9.700324, + -8.326617, -9.419158, 1.7435046, -3.7662477, 1.21923, 7.72357, + -1.9473196, -4.02339, 5.3303733, -2.3646116, -4.5449166, 1.3491421, + -6.6376634, 7.1694803, -7.5615697, 10.680339, 6.455465, -5.821721, + -9.867028, 6.9202003, 4.6496034, -7.749109, 4.531767, 5.187277, + 1.1581954, 5.600595, 0.25167716, -0.42003885, -0.4456361, -10.793382, + -8.32154, -9.437405, 3.0168574, -2.6095595, -1.1293902, 7.7959437, + -7.5359325, 3.948884, 4.5347214, 1.1992495, 5.818175, -0.35101187, + -1.0835941, -0.5610799, -9.358461, -8.107908, -8.771405, 3.7954552, + -5.6742187, 0.4753984, 7.152675, 2.4811144, -2.88918, 0.5142701, + 1.3850923, -6.2455187, 8.165029, 4.900146, 9.260652, 8.0132065, + 2.7846925, 8.719777, -8.906841, -6.6375875, -9.023412, -5.113224, + -8.399863, 3.5913968, 5.2158575, 1.1589565, 4.4308906, -0.008243978, + 1.1309544, -2.2390187, -8.600879, -8.934291, -7.8892894, 2.440326, + -3.6109486, -1.1530097, 8.107834, -4.9431596, -2.319937, 5.7009645, + -5.801145, -8.528718, -5.3833385, -7.904932, 8.599324, 5.2347975, + 4.141636, 5.9861455, 5.513319, -6.2569084, 7.595587, 0.013943018, + -4.142541, 0.620121, 6.360386, -2.2407918, 11.350814, 9.647084, + -5.4052744, 0.18851137, -2.7359867, -3.0224962, -9.664997, 2.3685153, + -0.9469063, -8.393157, -3.3397224, -3.9067862, -0.10742425, 2.8030407, + -2.3275099, 8.300625, 8.723764, -4.5525885, 0.450315, -4.438627, + -4.3970976, -9.873077, 1.8074089, 0.23993115, -9.321578, -4.598021, + -5.0831814, -0.39099583, 5.141868, -4.625487, -8.255296, -3.795106, + -7.945507, 8.853691, 5.647925, 2.0755963, 8.6500845, 5.9238024, + -6.97091, 7.5997877, -0.12347032, -6.314487, 4.9583936, 5.130986, + 1.7345638, 5.136751, 0.45631626, -1.2190984, -2.1630406, -8.806135, + -8.016931, -9.226136, 1.7854582, -2.4193735, 1.0047846, 8.01085, + 6.3658514, 8.074824, -2.4717648, -8.868973, -4.351266, -1.4050578, + 6.702588, 8.387754, -9.468425, 0.49520385, -1.4821761, -5.8962784, + -7.622635, -3.7485554, 8.826997, -0.86598396, -5.1047907, 7.039303, + -2.1232376, -4.770006, 1.5805304, -6.6465664, 7.2535143, -8.837529, + 8.837634, 5.0910525, -5.879489, -9.848808, 6.033822, 2.8007088, + 4.937564, 4.8684483, -7.5395145, -2.9962616, -8.600703, 7.3937197, + 1.8701361, -2.9163053, -7.182109, -4.330954, -3.2636728, 3.3632696, + 3.0688832, 7.124255, -0.99308574, -2.638899, 8.923411, 4.670547, + 1.8702682, -6.2049117, -5.3327436, -9.228572, 6.3646607, 1.9605027, + 5.967248, -10.150883, 10.545579, 7.8232436, -6.1407294, -5.9652123, + 5.3021097, 5.697137, -9.198297, -3.7776916, -7.578472, 7.142189, + 2.5271366, -3.3932774, -6.9203315, -4.711512, -4.889296, 4.824787, + 2.4876537, 7.9655023, -0.14698339, -4.1244345, -2.021293, 4.902458, + -5.1067815, -7.4282646, -3.9189434, -7.2638535, 7.4607773, 5.3818192, + 2.7193286, 6.9704823, 6.209919, -6.655646, 7.1104774, -0.037077304, + -3.5080817, -0.091356404, 4.312471, -2.4351866, 9.492442, 9.374046, + -5.0860243, 0.64213854, -3.4670746, -4.991362, -9.969674, 2.0132246, + 0.56936646, -8.866785, -4.877276, 3.7930262, -4.497649, 0.38297787, + 0.49704826, -5.7800245, 9.413736, 5.985708, 9.551376, 8.38068, + 2.1491826, 7.738736, -8.2321005, -6.453506, -9.336299, -3.7555673, + -5.2762284, -2.4409008, 4.737542, -6.4841266, -8.076311, -4.2627306, + -7.9692197, 8.009572, 6.3980284, 2.2879598, 6.941353, 6.021227, + -6.0280805, 6.845733, 1.1719347, 3.9631398, 5.4886236, -7.7040186, + -2.1827116, -7.6585855, 7.0083194, 3.129221, -2.909753, -9.161689, + -4.336779, -4.9469824, 4.699946, 2.693261, 8.539589, -0.30436292, + -2.8498523, -6.0499063, 7.512279, -3.3455105, -3.5669465, 1.6020763, + -8.081716, 5.2820516, -6.716635, 10.963387, 5.4228325, -5.8455253, + -10.33115, 6.6118755, 3.6351194, 2.3213682, -6.6318, -7.909522, + 9.037989, 8.789794, 6.8610635, -4.059716, -7.677982, 3.350473, + -1.651829, -7.5003176, -0.087481745, -8.976351, 7.998356, -6.1098523, + -2.733466, -4.352908, 6.323479, -2.3540924, -5.033011, 0.88404334, + -6.700715, 4.5982275, -7.023845, 9.539533, 4.0273676, -5.9150205, + -9.866147, 6.2519026, 4.830981, 2.6559327, -7.324616, -8.168721, + 9.937086, 9.799283, 6.366573, -4.599236, -8.639354, 4.559394, + -0.6514058, -7.586549, -0.38899848, -10.730295, 7.4368114, -3.486407, + -8.117989, 3.626084, 5.706674, 1.8172352, 5.8419905, 0.9366346, + 0.07541532, -0.2771901, -10.122262, -8.551051, -10.603388, 2.4161515, + -4.065486, 0.5395699, 8.322053, -3.0090036, -3.4955814, 5.9249964, + -1.9945337, -4.132573, -0.41256574, -6.736785, 5.9615726, -8.827814, + 9.909208, 5.7771387, -5.530372, -9.06478, 6.5949235, 3.174203, + -3.0626688, 1.1968384, 4.072327, -2.169729, 9.938285, 9.626275, + -5.1897626, 0.06541137, -4.394287, -4.29422, -10.080205, 1.6378499, + -0.14403796, -9.631019, -4.780583, 2.4608018, -3.5488522, -0.49014947, + 0.64396673, -6.9995327, 9.776471, 6.7636576, 7.878867, 6.599434, + 1.8705788, 8.448473, -8.077088, -6.392767, -9.235902, -3.2361362, + -4.928245, -0.8914784, 5.023839, -6.237934, -8.573552, -4.530052, + -5.778845, 9.413736, 6.237675, 1.7729601, 6.5710874, 6.084028, + -6.0331726, 7.588944, 0.45072612, -2.315514, 9.593314, 4.64898, + 2.9906435, -7.064887, -4.9759912, -8.400361, 6.7235126, 1.2726755, + 4.499182, -9.744734, 9.897998, 6.980119, -5.804198, -6.9562564, + -4.3378525, -1.4484497, 4.321709, -3.7100258, -9.442933, -3.5404868, + -6.4736757, 7.7720532, 6.075397, 2.6129482, 8.34312, 5.574124, + -6.4519606, 6.2159314, 2.0011787, -1.7032428, -4.3645062, 6.889859, + -2.9379845, -3.1384661, -0.18151554, -7.0837593, 6.089457, -7.939691, + 9.147041, 4.2243247, -5.9159102, -9.692697, 7.3519483, 3.2478933, + -7.473241, -3.070959, 1.0393138, -1.0344299, -3.1107128, 1.5728164, + -5.9869685, -3.5045729, -2.8383517, -0.08366621, 4.929114, -6.5836844, + -0.14132404, 1.478007, -9.810582, -6.901405, 3.2046943, 5.407528, + 1.039397, 5.34749, 0.830437, 0.14775743, -1.0210586, -9.465323, + -7.9485846, -7.761438, 1.719269, -2.810488, 0.6308984, 7.815662, + -2.667733, 9.271442, 5.279388, 1.4109445, -5.8347454, -7.069896, + -8.853285, 6.8004746, 0.32533205, 4.7802835, -9.072519, 9.201268, + 6.6957464, -5.3920603, -7.4572825, 0.59805363, -5.630727, -9.459207, + 9.856493, 9.97475, 5.5375338, -4.700674, -7.8012986, 3.0936337, + -1.1252109, -7.8972144, -1.3432727, -10.873557, 8.345087, -5.2174907, + -6.2138515, -3.6057966, -0.26815072, -0.37344697, -4.244429, 2.2502527, + -6.7143726, -3.9938557, -2.0055676, -0.6776134, 5.274813, -5.753472, + -0.51591957, 1.9242831, -9.094253, -7.456514, -2.6904464, 1.4621465, + -2.2656834, -3.6926217, 1.8849756, -7.025682, -3.9511502, -2.8368485, + -1.4272363, 5.2201405, -6.6478586, -0.29758677, 1.8012666, -9.572023, + 6.0411367, 8.145005, -4.399552, -6.910796, -7.389369, -1.5188481, + 7.1589227, 6.259904, -9.581112, -0.26159045, -1.9099423, -4.895685, + -7.4640527, -4.671746, 8.174696, 6.051852, 8.740961, -3.643459, + -8.109215, -6.5092273, -1.071357, 5.814012, 7.296874, -10.108911, + 0.80167013, -1.7618455, -5.599092, -7.2626696, -1.7728385, 9.480107, + -1.8119643, 8.4845295, 3.6446114, 3.0241032, -7.105503, -7.0556927, + -7.9085917, 7.712884, 2.3414216, 5.6769533, -10.038773, 10.047685, + 6.688762, -5.565203, -5.293573, 4.4238534, 5.210335, -7.560741, + -2.89979, -7.104123, 7.1043224, 3.6326268, -3.8568738, -9.158733, + -2.7131915, -3.807796, 5.7128754, 3.3754377, 7.636, -1.825007, + -2.2417538, -4.0779576, 7.607329, -3.0003328, -4.2284374, 1.756126, + -7.2746177, 5.119315, -7.008882, 9.408904, 5.5560246, -5.2164817, + -10.315503, 5.603721, 4.314763, -7.313927, 5.1783695, 5.6405606, + -0.0637994, 6.332728, -0.029464703, 0.41828826, -1.2522358, -9.733106, + -7.6832514, -9.785729, 3.6201987, -3.792392, -0.09639487, 7.5038815, + 3.234203, 5.8293576, -8.6437235, -2.7220767, -7.9614167, 7.3443804, + 2.5719478, -3.7873058, -9.35629, -4.0944405, -3.3323522, 5.011421, + 3.3484938, 7.3983216, -0.3570103, -2.568238, -0.5652298, 4.6586185, + -3.1916215, 9.028054, 8.925563, -4.470107, 0.6164475, -4.0510554, + -4.3599396, -8.937277, 2.588883, 0.87693846, -9.869485, -4.4130516, + 5.3250628, 7.179221, -8.835256, -1.5040814, -7.866832, 6.3013816, + 2.25202, -2.6482968, -9.315557, -4.2005906, -3.0808558, 4.5942655, + 3.1603856, 7.9107356, -0.21996377, 2.5606067, -6.229099, -8.12502, + 9.204749, 8.939733, 6.7557116, -4.857987, -8.677028, 3.0097206, + -0.44091088, -6.8992834, 0.24465187, -8.561878, 7.57091, -4.580384, + -5.691582, -1.3971928, 4.2977967, -3.7909253, -7.553252, -4.196168, + -6.168398, 7.4481916, 7.928769, 2.254925, 7.3448634, 4.774288, + -5.928198, 7.076739, 0.85800385, -7.157043, 3.7899494, 5.0018516, + 0.8073772, 5.4966364, 0.7139369, -0.08507292, -0.7486053, -10.038788, + -8.435511, -8.7984, 3.3735638, -3.1168935, -0.74964434, 7.825164, + -2.8241596, 0.8149421, 4.4502425, -3.296524, 8.8940935, 9.405465, + -5.450503, 0.24939519, -5.495073, -4.644471, -8.004534, 2.4989269, + 0.17033602, -7.580766, -6.062238, -4.2435584, 0.27865496, 2.501646, + -2.7539287, 10.010319, 9.223915, -5.163252, 0.31426778, -3.5596163, + -5.465124, -9.200085, 3.8964763, -0.8809309, -9.030218, -3.0678484, + -2.2983913, 1.0483304, 2.75732, -3.2627459, 9.605366, 9.4755745, + -6.007699, 0.75596595, -3.4047768, -3.965859, -8.3125515, 2.5078897, + 0.3675871, -7.8800497, -3.656217, 2.2554514, -6.3346195, -8.693943, + 7.517176, 9.424983, 7.7167187, -4.159752, -8.556211, 3.9460046, + -0.9782854, -6.724321, -0.9769695, -8.800263, 8.599704, -4.923903, + -3.686106, 0.9819232, 3.8127258, -2.66767, 10.422246, 9.262399, + -6.1508665, 0.20209369, -4.469839, -3.6975002, -8.774928, 3.221267, + 0.6888531, -8.207254, -4.8954387, 5.383807, 5.6646347, -9.427935, + -4.5952783, -7.5784526, 7.11232, 1.7821006, -4.572479, -9.243154, + -3.9164977, -3.030219, 4.7241654, 3.8767965, 7.019332, 0.061039727, + 5.2285237, 5.1552052, -8.391638, -3.5558589, -7.377455, 6.7287097, + 2.3667665, -2.7675612, -8.175302, -3.7957747, -4.7340255, 6.687091, + 3.9732506, 8.250127, -1.0829442, 0.48004612, -6.936632, -7.930858, + 7.8817573, 7.207298, 6.5677724, -3.7371645, -8.809704, 2.994783, + -1.8757707, -7.4818606, -0.5348825, -8.966385, 6.1881695, -5.4241967, + -5.4247994, -4.418338, 1.0166323, -1.4973878, -4.220349, 2.3012846, + -7.0335546, -4.238467, -2.5224638, 0.22608232, 6.393334, -5.398116, + -0.0341889, 1.2258228, -8.402282, 6.2603784, 7.9857163, -3.7194378, + -8.812128, -4.0846305, -2.116918, 5.408279, 7.06561, -10.533988, + 0.1787471, -1.1703452, -4.8611317, -7.032381, -3.461639, 8.892908, + -7.419972, 4.3958707, 5.4875984, 0.50646764, 4.2985168, 0.31382585, + 1.4939059, -2.167627, -8.379008, -7.6434336, -9.37636, 2.4499242, + -4.682043, 0.8628238, 7.608405, 1.3059819, -7.342236, -7.525493, + 8.315856, 8.505296, 6.964067, -3.6707375, -8.703106, 3.836298, + -1.914977, -6.7886605, 0.6464979, -8.939825, 8.43957, -3.5915687, + 2.3601024, -3.617801, 1.1452205, 0.671262, -5.357131, 10.296615, + 6.667269, 9.003649, 8.307721, 2.9479306, 8.750661, -8.581014, + -6.394323, -8.928466, -4.396786, -1.762679, -5.1490183, 5.847296, + -2.2923465, -4.1038527, 0.9727451, -7.774064, 6.469503, -9.037836, + 9.666348, 6.4577565, -6.4882703, -10.99065, 5.5724454, 4.833156, + -7.0755854, -3.6153402, 0.36412764, -0.67108864, -3.3442469, 4.049752, + -6.8043795, -3.9290495, -2.536694, -1.1258167, 5.940458, -6.2133055, + 0.40261146, 2.7706096, -9.775572, 6.95987, 8.277488, -4.7535224, + -7.432352, -5.017416, -1.7621588, 5.313657, 7.220258, -9.866353, + -0.5702063, -2.6676333, -5.619131, -7.7658467, -3.5397823, 8.799807, + -6.0638175, -3.8162751, -0.9962679, -0.8233546, -4.0246396, 2.592846, + -4.461756, -5.615986, -1.4654754, -1.0798136, 5.9046493, -6.038383, + -0.012276665, 1.4494083, -8.840336, -1.7345922, -4.4044056, 6.1087646, + -2.606622, -4.2943096, 1.509161, -6.63766, 6.0652733, -9.137064, + 9.280674, 5.060043, -6.2463727, -9.701922, 6.8098507, 4.1013637, + 3.1197705, -3.255434, 0.64717627, 1.1733677, -6.492831, 8.540086, + 4.7175856, 9.286526, 7.9101677, 1.861041, 8.140761, -8.443782, + -5.3475046, -9.330125, -4.432139, -8.028736, 4.8407736, 5.4504232, + 1.3517575, 4.7500486, -0.5376609, 1.3261853, -1.485236, -9.228866, + -7.9228034, -10.199576, 3.3818755, -3.3606176, 1.7853596, 7.4404225, + -3.9205072, -1.1700501, 6.3223853, -5.046071, -8.761395, -3.2786324, + -6.798722, 8.748542, 6.1324306, 0.6052422, 8.552526, 6.4171443, + -6.0377226, 7.8079367, 0.90124434, 5.828331, 8.476322, -3.4633813, + -8.433314, -4.526709, -2.6467595, 6.9092946, 6.3289633, -8.540905, + -0.86627376, -0.8452045, -5.614988, -7.8593144, -3.117919, 9.300525, + 1.4230325, -7.01487, -8.795086, 9.648165, 9.457963, 6.383321, + -4.674588, -8.663086, 4.943768, -1.7115909, -6.3998895, -0.26660463, + -9.310628, 8.935663, -3.9340756, 6.8041105, 8.412243, -3.5535102, + -8.561621, -6.445503, -1.3832904, 5.9804077, 7.858094, -9.338858, + 0.085718356, -2.462179, -5.200329, -8.315257, -3.7786214, 8.172603, + -2.2765777, 8.490346, 5.725685, 2.054142, -6.054119, -6.8328466, + -7.3958044, 8.552261, 1.8480253, 4.8415513, -9.136547, 10.356239, + 5.9734063, -5.2729816, -5.6226034, -4.519781, 8.995026, 5.880455, + 3.1360512, -7.1995945, -7.301658, -8.510186, 6.6246533, 2.2335546, + 4.6977077, -8.729457, 9.328089, 6.5062814, -6.3678055, -6.942317, + -5.705383, -4.253298, 0.59788376, -0.23254518, -3.5476296, 2.0490863, + -7.833957, -5.663378, -3.1761703, -1.0263915, 5.0124936, -6.0984044, + 0.3384851, 1.6908922, -9.525993, 2.1022243, -7.420413, -7.958498, + 8.565332, 8.657723, 6.0434046, -4.5466924, -8.338759, 3.9254982, + -0.95311093, -8.1877165, -0.43785557, -8.560197, 8.533888, -3.3718548, + 6.363491, 7.911365, -2.2591245, -8.356364, -5.3390894, -1.757546, + 5.3571672, 8.748758, -10.688054, 0.3690365, -2.8702703, -5.837193, + -7.3073144, -3.8250103, 9.268955, -5.718677, -2.8842857, 0.072342195, + -1.5217837, -5.323056, 1.9623281, -6.5125237, -4.483654, -2.2244272, + -1.0119525, 5.9303594, -6.8099084, 0.34433538, -0.2455038, -9.201819, + -2.2776294, -5.126559, 7.2859063, -3.1472993, -5.42094, -0.5807105, + -6.2989206, 6.4756045, -8.447406, 9.429546, 5.0745964, -6.7787023, + -10.191577, 4.8251677, 3.6219022, -7.819583, 5.376076, 5.4956985, + 1.3416452, 6.0052376, 0.13386025, 0.1342827, -0.6991465, -10.268442, + -7.6158986, -10.454715, 2.8709688, -3.5777876, 1.3449323, 7.0558476, + 5.6882324, 7.0041876, -4.8593683, -7.046389, -5.68021, -1.6354411, + 6.248854, 7.9236717, -9.986629, 1.8557837, -1.5581475, -4.8145943, + -7.039025, -3.2732098, 8.447314, -7.6663084, 4.841292, 5.8776445, + 1.5785995, 5.0404344, -1.5078632, 0.108006015, -1.6622211, -9.710668, + -7.409182, -7.981443, 2.8146787, -3.8645926, -0.0100414455, 8.238399, + 3.4793339, -7.253042, -9.282994, 9.512531, 8.232679, 5.7250185, + -3.4902158, -8.490558, 3.5194814, -0.67602015, -7.264153, 0.09031108, + -9.549615, 8.445451, -4.911013, -3.0187998, 8.886259, 5.6022925, + 1.5209948, -7.4390616, -7.21803, -9.505658, 7.4093924, 3.1595752, + 4.387607, -9.764957, 9.193929, 5.5546193, -5.1350408, -6.417987, + 5.349413, 8.165493, -3.9138405, -7.866619, -4.3123507, -1.9473151, + 6.4022694, 8.208503, -9.6715975, -0.90967584, -1.2980076, -6.371946, + -6.6179276, -3.823704, 10.936851, 6.3446784, 8.107528, -4.640459, + -6.898585, -5.356469, -1.5997015, 6.6618876, 7.3801913, -9.324014, + 0.5915346, -1.1492876, -4.6121483, -6.9841557, -3.3600368, 8.072164, + -4.1198525, 0.7555654, 4.941512, -2.389357, 9.8780575, 9.580077, + -4.893425, 0.43282157, -5.6755767, -4.225428, -9.993709, 3.0053184, + -0.04942825, -8.948761, -5.480621, 5.013179, 7.842478, -3.5478444, + -8.016402, -5.5619717, -2.5675163, 6.6098294, 7.667936, -9.515481, + 0.942055, -1.5107092, -5.222767, -7.493429, -2.766411, 7.754133, + -4.2082543, 0.57620376, 3.469063, -3.2948682, 8.778304, 9.19441, + -4.303763, 0.99954015, -4.4905763, -2.7979724, -9.965554, 2.9497707, + -0.45160705, -9.580071, -4.9484, -5.6266503, -4.394396, 1.0485666, + -2.7401724, -3.550599, 1.3892375, -6.698588, -4.1471157, -3.3405206, + -1.1635257, 6.1839423, -5.9323983, 0.69377786, 3.2317998, -10.165961, + -5.684705, -2.4857993, 4.9103174, -4.0576863, -8.405846, -3.3769405, + -6.420691, 9.373656, 4.2024326, 2.4549546, 8.344207, 5.6732264, + -5.034868, 8.889903, 0.45845333, -7.336739, 3.37069, 6.025308, + 2.1142733, 4.547738, 0.82624567, 0.35414946, -1.1562195, -9.839273, + -7.19604, -9.087151, 2.1583009, -4.528522, -0.8507979, 8.282888, + -3.4223263, 9.483057, 4.8964977, 1.3152539, -7.239334, -7.621559, + -8.882203, 7.9921227, 1.332292, 4.514284, -9.959491, 8.843186, + 6.5739317, -6.4778876, -6.7510552, 5.551059, 9.295274, -4.194333, + -8.634327, -5.217347, -1.5350995, 6.22338, 8.200944, -9.476569, + -0.156049, -1.9489131, -5.909654, -6.990375, -3.4634, 7.602987, + 2.6166887, -5.230665, -9.313794, 8.713105, 9.474653, 6.6204896, + -4.058692, -8.657631, 4.3016458, -0.69215536, -8.200627, 0.85234815, + -8.493091, 8.280416, -4.768682, -6.353651, -4.551934, -0.16042583, + -1.8285453, -3.9708822, 2.1059275, -8.776885, -5.6415973, -3.0975688, + -0.55821973, 3.7802658, -6.3563356, -0.083684735, 2.8201277, -9.340507, + -6.834617, 4.0006237, 6.09603, 0.85212725, 4.7007055, -0.44478396, + 0.3880529, -1.7211156, -9.642818, -7.608396, -9.491241, 2.6819296, + -4.909339, 0.44560245, 8.088887, 5.087524, 6.0714912, -8.883549, + -3.9490192, -6.6395226, 8.700229, 3.5459273, -3.6170897, -9.537077, + -4.5263314, -4.6749463, 4.5169587, 3.875124, 7.645091, -0.34407547, + 3.1453638, -4.650583, 0.7416898, -0.43035465, -7.738161, 9.909119, + 5.8575706, 8.749802, 6.919733, 1.462462, 8.253562, -9.347276, + -6.597663, -8.638823, -2.4942796, -2.8154185, 9.519953, 4.3788958, + 3.1820443, -7.1593723, -6.7228303, -8.185514, 6.330667, 0.78973407, + 3.093492, -8.704501, 9.011896, 8.439592, -6.148191, -6.234315, + 3.673099, -4.040092, -0.31107458, 0.2150231, -6.5641985, 9.842855, + 6.1524286, 8.442407, 7.0891023, 2.1454902, 7.86101, -8.592927, + -5.1526494, -8.516474, -3.3828113, -3.03659, 9.3362665, 4.165478, + 3.3825407, -6.7840524, -7.1358347, -8.709051, 6.3805346, 1.3421704, + 5.0017414, -10.048136, 8.6653595, 7.02451, -4.923225, -5.8602333, + -4.9744606, -1.4571482, 5.091973, -6.424844, -9.455028, -4.347189, + -6.8880315, 9.189641, 6.6925206, 3.0916681, 7.233014, 5.106985, + -5.980149, 8.218799, -0.8851272, -2.5423663, -5.2855573, 5.999234, + -3.766257, -5.011624, 1.8475406, -7.8223495, 6.132461, -8.860995, + 10.562944, 6.362709, -5.4208374, -9.675263, 6.1474867, 3.3028345, + -2.6507325, 8.861909, 5.409023, 2.550961, -6.3101707, -5.9662743, + -8.823625, 7.80089, 1.8051136, 4.388368, -9.67941, 9.466094, + 7.0654626, -6.325972, -4.8988295, 3.9787474, -5.1343126, 0.14310281, + 1.0838717, -6.945494, 10.603511, 5.0578694, 8.761074, 8.285763, + 1.5441002, 7.1448836, -8.530209, -5.3597345, -9.331281, -4.0858974, + 0.850366, -6.1672444, -8.490257, 9.424773, 10.053324, 6.425281, + -3.8040621, -8.663305, 3.186106, -0.36623588, -6.5538006, -0.2631391, + -9.280027, 7.553178, -4.0034704, 5.633687, 4.669405, -8.405149, + -1.7841642, -8.601697, 7.5378513, 1.9043722, -3.7352831, -9.291011, + -4.2926536, -1.5909951, 5.183243, 3.522366, 8.088651, -1.6800812, + -5.001394, -1.8060129, 4.6114826, -5.8048253, -8.161239, -5.174723, + -6.3604364, 8.321998, 6.7402973, 3.3408406, 6.258053, 5.666335, + -6.8674684, 6.5822706, 0.06407154, -6.098208, -2.9131985, 1.2523654, + -2.279653, -3.7399683, 3.1673112, -6.939357, -3.3934207, -1.2641739, + -0.16200364, 5.878035, -5.2749624, 0.38611025, 1.8650235, -9.316981, + -4.837732, -2.7312233, 5.487975, -4.336039, -7.501555, -3.690873, + -5.779878, 8.631322, 6.60208, 2.1915321, 7.6337976, 7.0041156, + -6.6811953, 7.2481694, 0.8550871, 4.183987, 5.372437, -7.442821, + -3.2915533, -8.098771, 7.596767, 2.0619025, -3.2752714, -9.814909, + -2.2303226, -4.43973, 4.3668966, 2.7284126, 9.083137, -1.4830935, + -7.7036104, 3.7200797, 4.9053006, 1.0363547, 6.5483513, 0.5385447, + 1.1089149, -1.1902317, -10.2737465, -7.8712153, -8.692075, 1.847423, + -3.2672932, 1.7972403, 8.894601, 6.261283, 9.052175, -2.6986508, + -7.34303, -5.110045, -1.0263683, 6.080255, 7.1760406, -10.492579, + -0.018181792, -1.9084237, -6.0025578, -7.50697, -3.4744833, 9.209759, + -1.3516569, -5.312567, 7.3274055, -2.13184, -3.7769036, 0.8430275, + -9.24949, 5.5947304, -8.947128, 9.05296, 5.5304656, -6.3189607, + -10.466786, 5.5680685, 3.6362877, -2.7697423, 9.77641, 5.9590893, + 3.05344, -7.221822, -7.6638417, -8.739707, 6.085615, 2.2485178, + 4.05813, -9.9145355, 8.281905, 7.008373, -6.126108, -7.1824427, + 4.1208754, 6.3138857, -8.8672285, -2.624828, -7.5682845, 8.285271, + 3.1459513, -4.2887206, -9.560121, -3.3751166, -3.54137, 4.2735033, + 3.462089, 7.8754764, -0.51898134, 3.9308856, -3.7750916, -0.018514993, + -0.1569453, -5.7293496, 9.688416, 4.8266087, 8.412977, 7.5698156, + 0.9199105, 7.865107, -9.023831, -6.369078, -9.612542, -4.632297, + 2.859743, -6.7002254, -6.428803, 10.593252, 9.185626, 6.093511, + -3.2108176, -6.8543367, 2.5380402, -2.447413, -7.99466, 0.3114545, + -8.964418, 8.935248, -5.664189, -2.0496101, 8.332009, 5.190838, + 2.7841866, -7.454105, -6.205746, -8.549381, 7.898965, 3.3500552, + 3.9896798, -10.115926, 8.775537, 6.0777855, -5.807189, -6.1246943, + -1.7453873, -4.8780723, 5.9857354, -3.1994214, -4.412534, 1.7934477, + -8.535377, 6.0600963, -8.071554, 9.873153, 6.361801, -6.0777283, + -10.0187435, 6.7238593, 4.2066665, 4.268113, 4.8080344, -9.529007, + -2.4946408, -6.7143826, 8.1484995, 2.9629154, -2.935059, -7.5404963, + -3.5478966, -3.0440428, 4.3675747, 1.7977191, 7.2655606, -0.5621128, + -4.4248877, 1.213106, 3.6311016, -2.964644, 10.45088, 8.463441, + -5.4732504, -0.59316665, -2.8497858, -2.9078217, -8.736167, 2.739656, + -0.35266805, -7.607295, -4.239683, 0.911149, -6.259438, -9.980769, + 8.1178, 7.8597293, 6.107698, -4.012949, -8.275245, 2.9548562, + -2.0175138, -7.2341766, -0.48184815, -9.090778, 7.566734, -4.6976566, + 4.0334306, -4.134351, 0.034857232, 0.39927483, -5.689589, 8.895091, + 5.953873, 8.522263, 6.513373, 1.5587797, 7.612109, -8.206418, + -6.913628, -8.447271, -3.5571465, -2.209026, 9.49946, 4.763388, + 1.7162502, -7.4589405, -6.819809, -9.588825, 5.278578, 2.327892, + 4.794206, -11.242363, 8.691385, 7.0822606, -4.312971, -6.348945, + -8.090201, 4.047216, 5.4974623, 1.6941508, 5.340855, -1.4634264, + -0.22087532, -0.8216299, -11.409916, -7.0109725, -9.006556, 3.6495314, + -3.851879, -1.27157, 8.452583, -6.6063185, -3.1731997, 0.92703277, + -0.8826011, -5.131586, 3.0854187, -7.0272474, -4.4156013, -2.5723913, + -2.121965, 5.9895763, -6.7270846, -0.6621804, 0.7826399, -8.2921095, + 2.0135007, -6.3783274, -8.576093, 7.687055, 8.689418, 6.1230927, + -3.532321, -9.583847, 3.5711737, -1.096816, -6.964507, 0.3885385, + -8.904429, 7.6264496, -6.1600018, 3.0631917, -6.1792016, -8.987658, + 9.15775, 9.144175, 6.173463, -4.1356525, -8.1615925, 3.8331258, + -1.8923012, -8.27035, -1.0684416, -10.43242, 7.33431, -4.7127767, + -7.5271974, 4.244059, 5.44081, 1.3070996, 5.6851335, -0.3421151, + 0.49568284, -2.3086596, -9.715552, -6.868588, -9.148251, 2.7135634, + -2.3855941, -0.78117067, 7.3747106, 1.8602474, -6.565698, -8.621007, + 8.852345, 9.589714, 6.652946, -3.3934784, -8.73662, 3.4857519, + -0.36061612, -6.9329824, -1.0574634, -9.066194, 6.8016505, -4.791546, + -5.7584367, -2.1796103, 4.7094307, -5.457627, -9.41753, -3.9835794, + -5.819224, 8.790603, 6.7286997, 3.434269, 8.294754, 7.382539, + -6.61804, 7.3482413, 1.3352708, -4.323992, -0.7485251, 4.9006476, + -5.2371535, -7.2854, -5.69179, -7.258583, 9.620038, 6.927184, + 3.0337868, 7.115194, 5.4561687, -6.68245, 8.934786, 0.34693494, + -6.7689514, -4.044323, 0.07180737, -2.904996, -3.5474708, 3.1294703, + -6.7540574, -4.953487, -2.8138072, -0.88316524, 6.1226754, -5.538686, + -0.22923289, 1.9056883, -8.7508955, -2.6438503, 9.225369, 4.6155806, + 1.1550951, -6.0796514, -6.3537564, -8.284605, 6.6869516, 3.0042562, + 3.1801558, -9.17751, 10.931516, 5.955477, -6.1496263, -6.2937446, + 1.6489857, -7.4887266, -8.014497, 7.503758, 10.120153, 7.1383915, + -4.1192513, -9.868753, 3.4317431, -1.241879, -8.266654, -0.45711467, + -8.241093, 8.651857, -5.4715953, -6.553812, 3.9577007, 4.418358, + -0.49517465, 4.732808, -0.20364787, 1.5740428, -0.97798604, -9.278058, + -8.122255, -9.779633, 3.7121615, -3.5723634, -1.3004067, 7.6798515, + 5.0094295, 6.221851, -9.514052, -1.604081, -9.438889, 6.7239323, + 2.1446404, -2.9748333, -8.57573, -3.8971238, -3.5047317, 3.9075074, + 1.7030867, 8.252813, -0.07010722, 5.047089, 4.3438673, -8.773425, + -2.6230845, -7.309032, 8.307136, 2.1922452, -2.3464022, -9.190149, + -2.850301, -2.9241066, 3.9527025, 2.9660769, 7.7083898, -0.11779228, + -5.8215933, -2.0513673, 2.7862425, -5.837192, -8.517714, -3.8103993, + -6.963649, 8.837324, 4.6365557, 2.6282892, 6.25356, 5.227629, + -6.399615, 8.744565, 1.0466896, -1.6773224, 10.783139, 4.2682705, + 1.6305621, -6.1487145, -6.402786, -7.545633, 7.7322726, 1.7707958, + 4.57491, -8.812218, 9.972534, 7.003945, -5.0065455, -5.544994, + 6.49627, 7.1661944, -4.3503723, -8.218473, -5.1650457, -1.2070343, + 5.7701235, 6.397565, -9.663849, 0.087644, -0.14172882, -5.5322213, + -6.3327155, -4.066965, 7.756945, -2.6466424, 8.964166, 4.6138234, + 2.4825103, -6.843265, -6.3672614, -8.89483, 7.3785677, 0.6235598, + 4.802881, -9.345768, 10.096804, 4.6214743, -4.2913556, -6.4612136, + 3.9682038, 5.347114, -8.83599, -3.6481912, -7.9124813, 8.037474, + 2.862584, -2.9310222, -8.6263, -3.414027, -4.056747, 4.375467, + 2.8855524, 7.938516, -0.33157, -5.299468, -2.2204027, 5.662303, + -5.8766065, -7.867662, -4.1916714, -7.1404524, 9.026838, 5.6531897, + 3.114804, 7.57812, 5.6560144, -5.8985543, 8.233792, 1.5971086, + 5.1944265, 5.671571, -8.121056, -2.5626402, -6.5441175, 7.4272985, + 2.1957467, -4.023068, -8.554107, -5.4888463, -3.625336, 4.4480357, + 1.7960198, 7.0944686, 0.011058775, 2.1608014, -7.0070057, -8.908396, + 9.543954, 8.903522, 5.6433964, -4.0628004, -8.870431, 4.959041, + -1.5934263, -6.9771037, 0.050167263, -10.001404, 8.18224, -4.2755985, + 5.1621923, 5.984071, -9.516025, -1.4925612, -8.131434, 7.076523, + 1.8341045, -1.4932094, -8.559383, -4.376036, -2.891587, 5.1305184, + 2.6197405, 8.33268, -1.1334059, -5.094096, -0.17547357, 3.7314086, + -2.892594, 9.092681, 7.4639273, -4.6941366, 0.325528, -2.8611047, + -4.8550067, -9.871375, 0.31529754, -0.15191633, -8.339646, -4.855308, + -1.6479719, -5.319242, 6.5386705, -1.5265297, -3.5664678, 1.798347, + -7.164413, 6.268638, -7.8074217, 10.829918, 4.0787735, -6.946495, + -8.972947, 6.115406, 3.6669424, 3.2742665, -3.336139, 0.6641795, + 1.0515046, -5.4893293, 9.013979, 6.1290936, 7.647568, 7.2630835, + 0.6930706, 8.245093, -8.262533, -6.0004716, -9.052135, -4.1426806, + -7.254432, 4.00798, 4.9424148, 2.6036742, 6.0771585, -0.65650856, + 0.8543153, -1.3663346, -9.217531, -7.7460327, -8.538667, 2.9701424, + -3.7563424, 0.9009472, 8.314629, -6.6194797, -4.6891484, 0.34468392, + -1.5767236, -3.629655, 3.154274, -6.2331443, -4.550625, -2.8192184, + -2.057007, 5.13941, -5.331128, 1.4155967, 0.98424715, -9.485717, + 6.4867973, 8.142159, -4.375856, -8.444515, -5.4585853, -1.2130208, + 4.6308312, 7.9517965, -10.207106, -0.71727717, -0.99303335, -5.5743766, + -6.7513766, -2.94113, 8.857134, -5.317979, -1.4048023, 5.4052396, + -5.0097756, -7.578903, -2.9009626, -6.6883097, 9.363578, 5.9162455, + 3.49758, 8.172268, 6.7793326, -6.2027497, 7.3833294, -0.18932506, + -4.106047, -1.8479048, 5.261147, -5.491506, -7.594243, -4.3853784, + -5.877226, 8.521441, 5.560786, 3.1436365, 7.2159443, 6.507792, + -8.179182, 7.8548236, 0.46512112, 6.381178, 8.278895, -4.040741, + -7.682524, -4.5759535, -0.00888081, 6.958354, 8.518543, -10.301519, + 0.7062636, -0.7148163, -6.185277, -7.9426055, -2.0311632, 8.175625, + 1.8696405, -6.112564, -9.506553, 9.506024, 9.452237, 6.499074, + -4.359625, -9.209316, 4.0369368, -2.6413324, -7.7813807, 0.56236553, + -9.177901, 9.550248, -4.106824, -3.160993, -0.46009862, 3.8370736, + -3.7296188, 11.412559, 8.091174, -4.9574842, 0.7452831, -3.2569637, + -3.7072506, -9.484321, 3.137049, 0.69295424, -8.8218155, -4.258664, + -3.3286479, -0.03589475, 5.0759387, -3.5094073, 9.618779, 9.421228, + -5.002332, -0.9628687, -3.3728616, -3.7827327, -9.735159, 2.6865277, + 0.31601584, -9.866854, -5.024821, 7.185669, 8.453019, -3.0568688, + -7.387575, -4.5324626, -2.219079, 5.3901467, 7.210178, -11.373771, + 1.0763981, -0.7972793, -5.8611894, -7.862232, -3.2983398, 8.8946085, + -2.4997404, -4.2117186, 6.1179805, -3.2927575, -4.7509055, 1.8010701, + -9.436227, 6.320859, -8.484997, 8.56113, 5.661704, -5.69266, + -9.47681, 4.452949, 5.0936193, 1.4718101, -6.867808, -7.8326106, + 9.243548, 8.635009, 5.9507318, -4.337751, -8.54341, 4.369883, + -2.1571703, -6.433089, 0.483299, -8.548626, 7.8623505, -4.929359, + -5.2266955, 0.38607156, 2.4996762, -2.2148552, 9.047054, 7.7390203, + -5.5342975, -0.4540826, -3.1489441, -4.1655436, -9.02115, 3.0181417, + -0.013720537, -8.442493, -3.9483678, 5.901988, 8.412507, -2.8885925, + -7.2286825, -5.6591425, -2.221577, 4.815012, 7.0306234, -9.036296, + -0.57197016, -1.161633, -6.2229505, -7.528442, -2.7522423, 8.396547, + 6.8798733, 10.322063, -3.5593238, -8.717177, -5.8516965, -1.0200111, + 5.2369323, 7.333194, -9.594722, 1.2895312, -0.7346435, -4.9526343, + -9.116568, -2.6029594, 9.352054, 5.210012, 8.991413, -2.8021963, + -7.496477, -5.4732943, -1.7648114, 6.5576596, 8.320477, -9.693961, + 1.7318175, -2.2803392, -5.5716205, -7.863834, -4.0072956, 8.751036, + 3.004901, -3.925182, 0.9022056, -0.04514931, -7.3671117, 9.707366, + 6.2073674, 7.690172, 8.653606, 1.9842789, 9.201749, -8.2793045, + -7.8459373, -9.201832, -2.7512927, -1.7633613, 8.6521845, 5.626422, + 3.5823984, -7.133614, -7.1919613, -7.8209586, 8.429223, 1.6562982, + 3.8673208, -9.78556, 8.457082, 6.0057964, -6.456116, -6.900959, + 4.3286724, -4.1530027, 0.22359423, 0.4065021, -6.0350533, 10.179146, + 4.2827163, 9.076586, 7.7028766, 2.0373757, 8.7587805, -8.361892, + -6.1528535, -9.245167, -2.814172, 1.4542931, -6.71657, -10.222914, + 9.102644, 10.312841, 5.1360545, -4.317874, -7.816183, 4.5616503, + -1.5107074, -8.043811, -1.474708, -9.239823, 9.615861, -4.6302495, + -7.4324126, 4.390486, 4.154037, 0.9810606, 6.5509086, -0.585615, + 0.23184587, -1.8283142, -9.552528, -8.250358, -9.030697, 2.8663275, + -3.171397, -0.564245, 7.913091, -6.1497135, -4.5897865, -0.174877, + -1.1204481, -4.2094736, 2.2600157, -7.7410693, -4.3183875, -3.3197262, + -0.25546142, 6.4281936, -7.298856, -0.36596882, 0.8007209, -9.526009, + -1.9902167, -4.7573347, 6.464833, -3.7120461, -3.2673295, 1.4676216, + -6.5066066, 5.830128, -9.719415, 11.104781, 5.4021273, -6.549846, + -9.597796, 7.126213, 4.1210113, 4.635898, 2.739748, -7.653324, + -3.2089489, -8.243657, 6.9831567, 2.1533124, -2.9534507, -9.820438, + -4.534758, -3.2561226, 5.0281844, 3.2002287, 7.1933293, -1.2404875, + -7.52308, 4.4847116, 5.1501746, 1.2320029, 5.0086575, -0.64990515, + -0.24434268, -2.423568, -10.10742, -7.9641585, -9.299234, 2.5383005, + -5.3618727, 1.2736243, 8.911865, -5.4337044, -0.9275393, 5.177542, + -4.214206, -8.1707735, -4.035256, -6.7278295, 9.166548, 4.9460273, + 2.7278159, 7.3801794, 6.581235, -6.39999, 7.124066, 0.79199034, + -5.951818, -2.3884735, 5.7873106, -5.4010324, -8.728347, -4.286513, + -6.433126, 8.902299, 6.1098886, 3.4331465, 8.108536, 6.362802, + -6.2303705, 8.311305, 1.006832, 1.0325776, -6.8184295, -8.848388, + 9.32505, 8.937919, 6.5259967, -2.5531168, -7.475707, 3.6509986, + -1.3251555, -7.8089066, 0.72998685, -9.751349, 8.218064, -4.788562, + -4.43647, 1.4069009, 3.0661678, -2.0852513, 8.373691, 9.669811, + -3.6610136, -0.20411494, -4.161883, -3.8758821, -9.492839, 3.4640818, + 0.18811505, -9.194544, -4.8052707, -1.9562751, -5.396671, 7.2244134, + -4.1042705, -4.7859893, 0.6733157, -7.626872, 5.6483974, -7.199235, + 9.142119, 7.1537504, -5.7196975, -9.825119, 6.6425967, 5.9080963, + -2.9319873, 9.074899, 4.530905, 2.7906172, -6.7015324, -6.643788, + -9.126641, 6.9821987, 1.7195095, 4.437568, -9.882999, 9.60104, + 8.101633, -5.1434307, -6.5917172, 5.5131564, 8.238954, -2.888748, + -7.6163554, -4.881376, -0.96246946, 6.7148695, 6.75368, -9.739211, + -0.3789184, -1.6395797, -5.326239, -6.427544, -4.164509, 9.19525, + -3.4204237, -0.55911225, 3.598112, -1.8717264, 9.479167, 7.933319, + -6.222248, 0.0584301, -3.3787603, -5.435525, -8.947462, 3.1225271, + 1.3750818, -8.738569, -4.072309, 6.3996367, 6.4317718, -4.9360414, + -7.2259774, -5.824084, -2.149345, 7.2498875, 7.44395, -9.250494, + 0.0985766, 0.22396015, -5.9810033, -6.3815455, -3.2906528, 7.700037, + -5.3679686, -2.1498203, 5.72123, -4.676052, -8.522402, -3.7256706, + -7.5294423, 9.558535, 7.666502, 3.032926, 5.9701796, 5.68268, + -5.839621, 7.556142, 1.6773838, -9.121028, 4.6026692, 5.6779413, + 1.7488263, 5.142811, 0.092244714, 1.4514242, -0.45954087, -9.512038, + -7.7446475, -8.593779, 1.6776468, -3.9390335, 1.1063131, 8.83397, + -4.378659, -2.0124521, 6.0388727, -5.5405765, -9.140235, -2.6808467, + -8.053059, 8.076836, 5.7234883, 4.4238896, 8.694013, 7.119191, + -6.50006, 9.549504, 1.0446912, -2.3713434, -5.294737, 7.1503954, + -3.4508197, -3.9949348, 0.613053, -7.2616463, 6.147369, -9.042264, + 9.884995, 6.5161295, -6.5703526, -9.06929, 7.357897, 3.5658383, + -2.7428699, -4.092422, 7.093502, -3.4786215, -3.9189878, 0.5840764, + -8.631479, 6.861359, -9.051518, 9.139593, 5.1627493, -5.8351207, + -9.9296465, 6.6928754, 3.1995044, -1.7829196, 8.657274, 4.4509664, + 1.288035, -7.1906323, -6.615999, -8.308435, 6.678007, 2.6310244, + 5.1103983, -9.298905, 10.711954, 6.1072, -6.624476, -7.608605, + -2.9679024, -4.923202, 6.2134686, -1.3777441, -6.3229804, 0.72818786, + -5.97353, 6.129231, -7.981595, 9.807617, 4.977762, -7.5950274, + -9.745739, 5.766304, 3.5769122, 2.6376789, -7.3882236, -8.777024, + 8.414234, 9.041251, 5.878416, -4.2420764, -8.925153, 3.5953023, + -1.5893755, -9.609849, 1.3406186, -8.550091, 7.9229975, -4.811227, + 4.5515013, 5.3228703, -7.814619, -3.571171, -7.500082, 6.85732, + 2.6725612, -3.42738, -8.663778, -4.165301, -3.8533783, 4.7932143, + 3.4117503, 7.3254595, -1.1638387, -4.023022, 1.2129718, 4.677602, + -2.3377054, 9.86466, 8.818226, -3.663859, -0.02484208, -3.7710817, + -4.7575436, -9.914077, 2.525394, 0.20583992, -9.522972, -5.4339695, + 5.9962373, 7.7580905, -2.3413475, -7.534203, -5.1056395, -1.0800859, + 6.7891335, 7.156591, -10.08548, 0.33171728, -0.8420172, -4.769477, + -7.770972, -2.710206, 8.721985, -2.4802833, 0.7338031, 4.4850903, + -3.48118, 9.951911, 9.44162, -6.0733833, 0.9419685, -3.8713555, + -4.580449, -9.526854, 0.78063136, 0.4689161, -8.787125, -4.562927, + -7.160183, 4.7655616, 4.9403553, 0.1145123, 5.2742224, 0.31238, + 1.7184484, -2.2877502, -9.790217, -8.114754, -8.422353, 2.7037492, + -4.348009, 0.56250054, 7.8680825, 6.3795466, 7.2835784, -3.4583366, + -8.23565, -5.635168, -0.7405026, 6.9965515, 6.5166693, -10.601033, + -0.07287533, -1.6705023, -6.0183725, -6.874243, -3.0045238, 9.142453, + 5.2538953, 6.2413235, -8.56029, -2.9853377, -7.548832, 6.4572735, + 2.330436, -2.860829, -8.27947, -3.9695408, -3.3439307, 4.0148683, + 3.243594, 7.6897798, -0.7488675, -2.0841026, -4.095799, 7.2485023, + -3.723259, -2.8436575, 1.3911572, -7.1827154, 6.8066154, -6.853202, + 8.730635, 5.2872114, -7.6905885, -9.754702, 6.5650043, 4.1097336, + 2.1258192, -6.961536, -9.79647, 9.2204075, 11.07073, 4.8798923, + -3.930321, -7.5981774, 3.7708154, -1.2761397, -8.468687, 0.06648892, + -9.841965, 6.653463, -3.988186, 5.394244, 5.1445603, -8.0223875, + -2.1810744, -7.5366745, 5.6139307, 2.4787393, -2.5207174, -8.359596, + -3.4682662, -4.7019134, 4.087805, 3.0390997, 8.031523, 0.29456526, + 2.963585, -3.2174275, -0.62798226, 0.050266743, -6.846023, 9.446967, + 5.0539, 9.251317, 8.615374, 2.377704, 9.570636, -7.939071, + -6.9321704, -8.14109, -3.9170027, -8.3941555, 6.017116, 4.876912, + 1.7149926, 4.293995, -0.31981698, 0.365617, -1.1182091, -11.397335, + -7.725873, -10.176235, 2.9552503, -4.4383106, -0.42742407, 7.95979, + -2.4943075, 9.23047, 5.8314295, 2.141697, -5.058449, -6.484253, + -10.070862, 7.850862, 2.2891111, 5.0642786, -9.117084, 9.301278, + 5.791844, -5.899534, -6.958865, -4.2715955, -1.1626486, 4.398245, + -6.184211, -8.951277, -3.521674, -7.8789907, 8.870283, 6.416188, + 3.4819288, 7.555449, 5.133195, -6.9401474, 7.023783, 0.41028407, + -8.615841, 4.3627706, 5.3826504, 1.8454479, 6.666523, -1.0793616, + 0.41792488, -1.6426144, -9.187993, -7.691203, -9.618198, 2.4195766, + -4.494396, 0.86291695, 8.472773, -1.9832267, 7.8457026, 5.020231, + 1.509333, -6.480208, -7.414391, -10.101746, 6.184243, 2.0559597, + 4.3432574, -10.221332, 9.845212, 5.485789, -5.799474, -7.211212, + -8.344746, 3.9320216, 4.3803377, -0.057675365, 6.1319137, -1.0313221, + 0.32957998, -0.92215586, -9.922078, -8.419787, -9.21305, 3.510762, + -4.531401, 0.06631034, 6.9385834, -7.5932593, 3.61068, 5.270011, + 2.2032762, 5.7308216, -0.10234367, 0.3414195, -1.2175727, -8.966781, + -7.4157043, -9.603722, 2.9555554, -3.3769226, -0.5336227, 8.269091, + -3.1020706, 8.320312, 3.1325057, 1.5258964, -7.80579, -5.730699, + -8.131455, 6.841818, 3.5990052, 4.848687, -9.815692, 7.648613, + 8.252513, -6.7259183, -7.51528, -4.658547, -2.2915761, 5.269436, + -5.494158, -8.309954, -4.52679, -7.012936, 8.6611595, 6.3038597, + 2.6651337, 8.622966, 5.3799257, -6.3135414, 6.7496395, 1.0473019, + 3.1172771, -4.813991, 1.3556207, 0.72166735, -6.645131, 10.503951, + 4.633084, 8.002068, 7.129193, 1.9104896, 8.739627, -7.712377, + -4.279946, -10.670057, -3.0672784, -4.8731794, -1.9275502, 3.7261534, + -5.405707, -8.410501, -3.7577012, -7.271516, 8.289416, 5.127806, + 1.0641701, 6.653264, 4.9742136, -6.0329003, 7.4884863, 0.41007885, + -2.9251204, -5.8010187, 6.6409197, -1.600671, -2.514476, 0.92193073, + -6.3998384, 6.2064056, -8.159769, 9.498235, 5.581449, -5.6494513, + -10.294479, 6.2549825, 4.096246, 2.9022977, -3.3622625, -0.65462875, + 1.0636849, -5.9859815, 10.586823, 4.9630833, 7.895132, 7.2697473, + 1.0224016, 9.373145, -7.1461024, -5.856191, -8.240548, -3.3996224, + -5.574361, -1.8048911, 5.086229, -5.792983, -9.176964, -4.4049516, + -5.637843, 7.6407804, 7.347027, 2.4862704, 7.453972, 5.312744, + -6.8084874, 7.499143, 0.05485836, -7.507731, 4.6676455, 5.88813, + 1.7795922, 5.299076, -0.22673032, 2.0990326, -0.7842573, -10.136894, + -7.7721796, -9.606016, 2.6334743, -4.573527, -0.116932444, 9.419418, + 2.0955498, -6.9949045, -9.035552, 9.465029, 8.950255, 6.106283, + -2.388769, -9.043136, 2.3883705, -0.6484374, -8.034286, -0.31922805, + -9.859039, 8.004548, -3.7054236, -5.679229, -2.6450648, 5.3884463, + -5.865199, -9.559734, -3.52503, -5.799003, 9.683966, 6.293313, + 3.1062276, 8.38812, 5.6244507, -5.4911246, 8.043958, 1.426443, + 6.2410283, 8.175542, -3.6503782, -8.205972, -6.8156476, -1.8605603, + 5.6795797, 7.5408583, -9.224456, 0.8719458, -1.1219131, -5.651312, + -7.9680614, -3.7706685, 7.8029447, -4.255021, -1.9406642, 4.7843895, + -5.9398675, -8.499529, -4.2599845, -6.6309, 8.503445, 6.068868, + 2.1243894, 8.088346, 6.127004, -6.3907094, 7.3279796, -0.14549434, + 3.6546001, -3.8558402, 1.3862147, 0.59532267, -5.6342225, 9.364573, + 5.076811, 9.20475, 8.183292, 2.2078805, 8.49438, -8.256675, + -4.4084826, -8.266475, -2.9874146, -6.1960344, -4.287005, 0.8338423, + -2.132704, -3.6984656, 2.523083, -7.4255886, -4.7441173, -3.2934399, + -0.5042282, 6.5638056, -6.4526396, 0.60555947, 0.38737246, -9.480225, + -5.3951473, -2.5467622, 4.54797, -5.265985, -9.357446, -4.7291393, + -6.311283, 10.4156885, 6.49672, 2.025992, 7.1722317, 6.095554, + -6.5131965, 8.48332, 0.9390763, 7.0746355, 7.987247, -3.3654993, + -8.404388, -4.548624, -2.2879407, 6.9427595, 7.7890368, -10.542874, + 1.6033076, -1.48971, -5.100119, -8.671678, -1.7652856, 8.001004, + -8.065735, 4.905678, 6.071599, 0.05744425, 6.212392, 1.3182079, + 0.6310592, -1.0298207, -8.765714, -8.035009, -9.24382, 1.8082685, + -3.615836, 0.52009225, 8.512644, -4.518369, -1.2493688, 6.4335203, + -5.4160776, -8.162092, -4.8912425, -5.2808495, 8.358372, 5.946656, + 2.4253502, 6.9777846, 5.5628357, -6.635192, 6.895123, 0.2371223, + 1.7444432, -7.017487, -8.7640295, 8.81006, 10.094424, 6.298438, + -4.419867, -6.7232494, 3.7191763, -0.65876234, -7.984994, 0.15771914, + -9.094453, 6.8636537, -3.4137077, -5.430304, -2.688095, 4.324083, + -6.004561, -8.046302, -4.471837, -6.9205875, 9.483015, 7.0689125, + 2.4705877, 6.9876075, 5.4683404, -5.7836556, 7.707885, 0.5162984, + 4.631848, 6.2609177, -9.457449, -3.0545638, -7.5816016, 5.9784746, + 1.8824438, -3.8579614, -9.286013, -3.646031, -3.6087253, 4.2034235, + 3.0507233, 8.950407, 0.59177804, 2.8084397, -2.8953943, 1.2609816, + 0.69984347, -7.5586557, 8.994999, 5.0827813, 8.329985, 7.408144, + 1.5005755, 8.166905, -8.675029, -5.934517, -8.843196, -4.130845, + 2.7958903, -3.5591156, 0.23459685, 0.64684266, -5.0296817, 10.215722, + 5.598379, 7.1770306, 7.643841, 3.8501189, 8.276022, -7.4578977, + -5.070983, -8.94218, -4.0826683, 3.2895505, -3.9825332, 1.2035798, + -1.0520489, -6.314538, 9.317619, 5.185111, 9.998338, 7.2754164, + 2.498257, 8.686862, -7.3470864, -6.547375, -9.608533, -2.7261446, + -2.9564986, 0.9374454, 4.130894, -1.20312, 9.129167, 8.619045, + -4.67169, -0.5274864, -3.6355722, -4.886296, -9.542431, 3.514875, + -0.23033069, -9.529621, -3.6075957, -7.8802133, -2.8417516, -0.5016414, + -1.5477563, -4.4758883, 2.6490452, -8.32881, -3.8335862, -1.2557464, + -1.8328221, 5.8363137, -6.469912, 0.5828098, 1.8616948, -9.520033, + -3.4735663, 8.357809, 5.0004034, 2.33282, -6.519094, -4.1831975, + -8.4387045, 8.118419, 2.6901014, 4.6174254, -9.808999, 9.929476, + 6.1078753, -5.9189906, -6.703255, -8.465186, 3.6399543, 6.42953, + 1.4944904, 5.494776, -0.29901367, 0.6591608, -1.2530144, -9.287099, + -7.76178, -8.763257, 2.7443812, -4.3974376, -0.2572822, 6.7660165, + -4.4973545, -4.693532, 1.5200527, -0.6632985, -3.9789717, 3.4680922, + -6.949649, -3.8846955, -2.7099476, -0.022102097, 6.471048, -6.4444985, + -0.6387843, 1.7062049, -9.631019, -5.6311774, -5.807418, 0.9696413, + -1.8189526, -5.45686, 2.5948997, -6.248562, -4.253321, -2.005751, + 0.24999447, 6.6239595, -4.858549, 0.804178, 1.9010949, -10.192368, + 3.0323603, -5.787009, -9.380333, 9.682704, 9.547942, 6.0087137, + -4.4844794, -8.549934, 5.119529, -1.1964722, -7.0117445, -0.65009135, + -9.858127, 8.943797, -5.7691035, -2.9273744, -5.2185516, 5.9065175, + -2.50218, -4.735642, 0.7282615, -6.5555525, 5.507514, -8.694169, + 9.993771, 4.085798, -7.6951203, -9.647276, 6.6536384, 5.582101, + -2.2151668, -4.472705, 6.2136164, -3.512708, -5.6101165, 0.3673171, + -6.8503137, 5.551902, -8.675452, 10.06424, 5.809378, -6.781359, + -9.191616, 7.0983734, 3.346252, -3.9725425, 0.15292063, 4.0716047, + -2.097689, 10.076262, 9.087341, -6.0203805, 0.11729888, -4.625255, + -5.3461456, -10.146971, 2.4197533, 1.0063066, -8.943199, -4.279104, + -2.938764, 0.30194497, 3.8727565, -1.5632783, 9.813448, 10.264909, + -4.7856245, -0.64888644, -4.390774, -4.2311144, -9.700811, 1.4160637, + 0.8945724, -9.351834, -4.3303356, 1.189515, -6.225586, -7.3907957, + 9.271504, 9.5062475, 6.1739364, -5.007342, -7.0976567, 3.2570603, + -0.84381187, -8.653359, -0.92208356, -8.307669, 7.9432964, -3.8071074, + 3.5291488, -3.806314, -0.11322134, 0.80405843, -7.4224873, 10.985653, + 4.6384983, 8.067602, 7.5883656, 2.8596525, 8.447641, -9.095445, + -5.202306, -8.583754, -3.116489, -1.36932, 8.748897, 4.4973726, + 1.5659931, -7.5899568, -7.334604, -9.695086, 7.347381, 1.4833189, + 4.325102, -10.677437, 9.629813, 7.232323, -7.148833, -6.101661, + 6.3127575, 8.09352, -4.425308, -7.999072, -5.3282375, -1.760329, + 8.068942, 6.627575, -9.03536, 0.8144679, -1.6614834, -6.1634903, + -8.140471, -3.6102736, 7.6081753, 4.856614, 6.176458, -9.116487, + -2.1549568, -7.1895833, 8.558496, 2.1735144, -4.1503673, -8.981973, + -2.7754538, -4.7762175, 3.1442606, 2.8137262, 7.4344425, -0.55029196, + 5.8722563, 7.8684945, -3.8700378, -8.783729, -5.8238807, -1.5261787, + 7.220296, 8.756182, -8.926126, -0.32781926, -2.1388466, -5.669374, + -6.3535013, -3.3634934, 7.928939, -3.1542604, 0.99667925, 4.2081666, + -3.0201821, 9.190852, 9.266916, -4.7896395, -0.15805003, -3.9689915, + -5.3652678, -8.795113, 2.3180652, 0.7548897, -8.970313, -5.643949, + -7.102018, -3.6075044, 1.0403842, -1.0406586, -3.0032725, 2.2331407, + -6.7420034, -4.9212976, -2.943733, -0.39172387, 6.2978907, -6.2123013, + 0.2345693, 0.7857798, -9.320912, 1.9108819, -6.3946733, -9.055417, + 8.385259, 8.903205, 5.832816, -3.6560915, -6.4022045, 3.1834302, + -1.4885879, -7.603421, 0.1805974, -9.127744, 9.085275, -6.522875, + -6.0481706, -2.1495454, 5.8829074, -5.299556, -8.831239, -3.6415718, + -7.358308, 8.660698, 6.0366664, 3.2134666, 6.325152, 5.478303, + -7.415371, 7.669462, 1.6348441, 5.476556, 6.6932545, -3.787181, + -8.023717, -5.713185, -1.301943, 7.360959, 7.0024467, -9.741648, + 0.7237554, -1.2638799, -5.9879403, -7.5352287, -2.8644187, 8.068348, + -7.289822, 4.21858, 5.396922, 0.47948205, 5.8357415, -0.5533364, + 0.22742282, -1.2827674, -9.419463, -7.8253856, -9.896855, 2.5185237, + -3.7113519, -0.79114586, 7.8275566, -1.672665, 7.9480553, 4.2486334, + 2.237218, -5.7837605, -6.9261346, -9.226968, 8.640333, 1.0086905, + 2.6222873, -9.2803, 9.046759, 5.93399, -5.257368, -6.19284, + 4.500629, 5.0450125, -7.634408, -2.6469333, -8.231533, 6.93254, + 3.2507942, -2.261971, -7.659001, -3.250431, -3.673171, 2.3230639, + 2.9591615, 7.7429748, -0.45771402, -7.1281557, 3.8174603, 5.1063075, + 1.7062858, 4.9700685, -0.5226341, 0.86882424, -2.049593, -9.760972, + -7.4531517, -7.933552, 3.1519914, -3.3820326, 0.54297495, 7.4000964, + -3.347712, 10.389594, 4.664563, 1.4833618, -6.729841, -6.9587393, + -8.993007, 7.7534394, 2.5525556, 3.7901008, -9.991383, 9.205661, + 5.037508, -6.8138514, -5.4066887, -4.788273, -0.1477942, 2.8109221, + -1.9131105, 9.418327, 7.689106, -4.701331, -0.43104488, -5.021098, + -3.128614, -9.1871605, 1.9858847, -0.22601688, -10.02972, -5.340255, + 1.8628519, -6.6519814, -8.725267, 7.7658696, 10.3590975, 6.196875, + -3.597623, -7.3804727, 2.9698467, -0.8655198, -7.746584, 0.49627775, + -10.801289, 8.117042, -5.2463746, -2.4441104, -4.1461034, 6.5468016, + -2.3084872, -3.4369152, 1.5946407, -6.8521585, 6.0522437, -9.1955385, + 10.255699, 6.6207185, -5.786212, -8.547476, 5.2413282, 3.3292325, + 6.6265454, 8.124675, -2.0068057, -7.5162034, -5.540166, -2.0573957, + 5.839325, 6.6365733, -8.901188, 0.227525, -1.256107, -4.4978704, + -9.253617, -2.352485, 8.896972, -2.7079148, -0.705306, 4.424503, + -2.7355208, 9.8318815, 8.910507, -5.53691, 0.04332635, -2.8279998, + -3.700553, -9.617646, 1.2526063, -1.1238667, -8.049155, -5.0956283, + -7.897529, 4.4653664, 5.0836844, 1.8828139, 4.3485017, -1.1700726, + 0.58126634, -1.7932607, -9.930552, -9.079811, -9.357734, 2.6912796, + -3.255445, 0.21964812, 8.058507, -6.7842145, 3.3461685, 5.5911736, + 0.055740938, 4.8324904, -0.9729481, 1.0020163, -1.4949667, -9.50107, + -8.616884, -9.581202, 2.1937826, -3.4444618, -0.52234995, 9.082186, + -6.093874, -3.515726, 1.1728579, -1.5930156, -4.603983, 1.4774525, + -7.78791, -2.092741, -1.8014874, -1.8243524, 4.7777987, -5.669218, + 0.66777414, 2.23251, -9.249461, -4.408183, -1.0354197, 4.5245466, + -6.015329, -7.5393267, -3.7522502, -6.717569, 8.925289, 6.141545, + 3.0352845, 7.193965, 6.261605, -7.325981, 7.369731, 0.31293702, + -1.7452555, -4.635, 6.257026, -2.241893, -4.8063927, 0.71378076, + -6.202056, 7.1213393, -7.4083085, 9.540251, 6.3063874, -6.6899533, + -10.524389, 4.6639094, 5.3081546, -3.1185315, 0.33983597, 4.4997706, + -2.931123, 8.970066, 8.840453, -3.532897, 0.10258977, -5.3710675, + -4.6673365, -9.194455, 3.4830666, 0.77366954, -9.615627, -2.7342217, + 5.962454, 8.570003, -4.5479455, -6.141127, -4.842063, -2.636647, + 5.863975, 7.785868, -9.037517, -0.67562026, -1.1526618, -6.920982, + -7.665228, -2.4692638, 8.472133, 4.9249225, -5.2353277, 0.87961656, + 0.853844, -5.906171, 8.931532, 5.468381, 9.287966, 10.075584, + 2.523625, 7.8438387, -8.526782, -6.3977327, -10.352405, -3.7244565, + 3.8984163, -3.997321, 0.044247855, 1.0388248, -5.763386, 11.058892, + 6.081722, 9.601867, 7.542371, 1.2398919, 8.481116, -8.155131, + -6.835302, -9.218161, -3.213871, -2.8808954, 8.578088, 4.2510448, + 1.5269986, -6.0473156, -5.8857565, -9.23785, 6.740874, 2.352291, + 3.7748954, -9.145258, 9.540243, 5.587832, -4.6699643, -5.106386, + -5.5897627, -1.9833931, 0.7698198, -1.7173742, -4.1933193, 0.99870473, + -7.696422, -4.443605, -3.039625, -0.7719519, 5.1278253, -5.2218027, + 0.2848337, 1.8417811, -9.300518, -7.8451834, 5.291405, 4.22925, + 0.15272519, 5.6078577, 0.6805531, -0.6473826, -1.1637968, -9.084918, + -9.283584, -8.812466, 3.3418324, -3.9311302, 1.0480562, 8.946848, + 3.7086074, 5.1574345, -8.943366, -3.1713588, -7.0221004, 7.7566223, + 2.452577, -3.7642128, -9.673588, -2.7862241, -3.0818539, 4.097455, + 3.254869, 7.6950984, -0.75667816, 2.2200198, -4.727463, 1.3662891, + 1.0152828, -6.0301876, 7.837398, 4.66408, 9.410934, 8.097289, + 1.8549559, 8.832874, -7.0850916, -6.2350726, -9.046895, -3.3585756, + 1.7658163, -6.6924353, -8.110454, 9.123173, 8.407803, 5.7954288, + -4.332873, -8.100613, 3.9827511, -0.9042061, -8.8024435, 0.6482969, + -9.135431, 9.1555805, -4.5134616, -2.9040527, 8.118073, 5.250599, + 2.4283104, -6.9490504, -5.587464, -9.587387, 6.2556553, 1.5379646, + 4.1295414, -9.417973, 9.229332, 6.895292, -6.6292953, -5.352865, + -5.700316, -4.5505843, 1.5586274, -1.0035452, -3.4540107, 1.7765737, + -6.611955, -4.9214606, -2.0495899, -0.75831276, 6.090795, -6.8294406, + -0.34186012, 2.2663512, -9.734836, -4.9197946, -1.8051782, 5.028836, + -5.500068, -8.541652, -3.5938246, -6.349285, 8.887191, 4.038615, + 2.8779316, 6.270264, 6.5258656, -5.2364507, 7.2028127, 0.60359836, + 3.9221323, 5.155128, -7.808452, -2.7550967, -5.857817, 7.397453, + 2.507747, -3.3077114, -9.175299, -3.8208392, -2.706882, 4.671903, + 2.1957276, 7.0966954, -0.8708428, 3.7151513, 5.304978, -7.5123887, + -2.7150173, -7.6738534, 8.408116, 1.4640142, -4.281959, -9.859925, + -3.5194998, -3.3797884, 5.672039, 2.921582, 7.4613447, -0.5544451, + -1.3017571, -4.4974093, 5.9400964, -2.1943376, -3.916828, 0.13566507, + -6.9145174, 6.7420254, -7.681664, 9.691224, 5.1942396, -5.1665945, + -10.73667, 6.6162343, 3.1781282, -6.8166046, -4.899577, 0.43695474, + -2.414404, -3.643378, 2.2947657, -8.230409, -4.3735533, -3.1992726, + -0.6551781, 6.6418347, -7.319145, 0.36520702, 1.7361984, -8.601053, + -1.8920498, 9.008705, 5.67584, 2.0273275, -7.4825263, -5.813923, + -8.461091, 6.5974507, 1.8890631, 3.548519, -10.55627, 10.046521, + 7.9854445, -6.732215, -5.9694223, -3.3646872, 9.513385, 4.471651, + 1.7107952, -6.381955, -6.569125, -9.091004, 8.135054, 1.2655559, + 4.5926065, -9.17314, 9.181515, 6.877146, -6.6289973, -5.716682, + -6.912025, 5.1192813, 6.625189, 1.3964128, 5.611081, -1.1903088, + 0.08266861, -1.5843371, -8.756393, -8.269873, -8.813978, 2.727073, + -3.836898, 0.34563962, 7.87752, -6.383673, -4.2313166, 0.6316461, + -1.8918971, -4.966848, 2.6729558, -6.769452, -4.720128, -2.0460143, + -1.3207047, 5.880735, -5.4322834, 0.26116, 2.16661, -9.432492, + -3.21341, 8.164354, 5.4505563, 2.5273335, -6.4427433, -6.4402676, + -8.846901, 6.695445, 2.0753634, 3.6874382, -8.905726, 9.295257, + 6.071005, -5.978188, -6.0744486, 5.5430613, 5.14254, -7.094235, + -1.4362193, -7.774397, 6.857795, 2.954029, -3.6253068, -9.538422, + -2.8834865, -2.6448205, 4.7009816, 1.8671441, 6.8835864, -0.480641, + -4.0967956, 0.6951548, 3.7789447, -2.2057772, 10.473923, 7.425042, + -4.8866067, -1.2700436, -2.2731817, -4.6308775, -8.7397995, 2.166565, + -0.5085787, -9.615862, -3.3170953, 6.237825, 8.312589, -3.760769, + -7.138726, -5.129133, -1.8827187, 7.294874, 6.2638316, -9.925473, + 0.89178824, -2.157931, -5.341155, -7.222355, -3.8500633, 8.80746, + 6.1725125, 7.5903597, -3.7670822, -6.8600307, -5.376602, -1.3631464, + 5.347243, 6.998141, -10.029878, -0.36545438, -1.6366142, -5.8582716, + -7.5466957, -3.1626444, 8.189166, 4.2351007, 4.018255, -9.445872, + -1.5653439, -6.533619, 7.3081207, 3.6300147, -3.4940917, -8.89922, + -3.740796, -3.5837786, 4.4414864, 3.5515282, 7.84935, -0.056964263, + 6.65296, 8.2865095, -4.065057, -7.4995875, -5.934349, -1.3144441, + 5.715887, 8.276013, -10.960123, 1.0775447, -1.6245389, -5.9004707, + -7.4857907, -2.734353, 9.814917, 4.9720235, 5.591757, -9.366627, + -3.4876125, -8.0651045, 7.0645003, 3.2015045, -4.196097, -8.979024, + -3.113247, -3.7062478, 4.9144144, 2.65347, 7.924003, -0.71563226, + 2.0733283, -6.8612876, -8.738112, 9.214281, 9.936553, 6.170908, + -3.4745042, -6.899706, 3.9515772, -0.97879314, -8.622473, -1.9379729, + -9.040366, 8.120031, -5.184748, 6.394567, 8.885188, -3.794483, + -8.082814, -5.06751, -2.7025862, 6.194499, 7.120673, -10.505208, + 0.95488733, -2.395348, -5.652955, -7.3974824, -2.3002806, 8.850804, + -7.0340147, 3.9374788, 4.6569567, 1.9385202, 4.5166936, -0.33519393, + 0.6847074, -1.8508536, -8.943409, -8.240385, -8.385383, 2.6401858, + -3.2429912, 0.6936306, 7.7120514, -3.3216896, -4.472621, 7.1848173, + -3.740773, -5.4540725, 1.9595282, -7.6097474, 6.839103, -8.616785, + 9.624371, 5.7517843, -6.6444855, -9.796809, 6.042186, 3.2128015, + -6.9656773, 4.0476184, 4.755916, 0.4707234, 5.670586, -0.8519433, + 1.7487208, -2.3645294, -9.3000555, -6.7453732, -8.952053, 2.8511798, + -4.390819, -0.7958246, 8.690365, -1.2940229, 9.152823, 4.183886, + 1.6344496, -7.1038704, -6.5831933, -8.4723425, 6.9219327, 2.0052521, + 5.661041, -8.37903, 9.703624, 6.675455, -5.6691957, -5.934038, + -1.7933983, 10.722113, 5.60887, 2.367906, -6.4632993, -6.2827187, + -8.307077, 7.520357, 2.095241, 4.117636, -10.116085, 9.201724, + 5.4637833, -5.8220553, -7.0555143, -3.2251525, 8.834123, 3.47187, + 2.252626, -6.42659, -7.21834, -7.736537, 6.465487, 0.9972378, + 4.3185678, -8.855341, 10.576946, 6.327634, -4.9981413, -6.3904567, + 6.3680034, 7.298339, -3.6009893, -6.5272064, -4.497922, -0.8217098, + 6.9172764, 7.7042265, -9.049829, -0.1046941, -2.6003401, -5.5095415, + -8.175, -3.986211, 8.353999, -6.005459, -3.224021, 0.44196293, + -1.5849929, -4.0691867, 1.6524578, -5.7474456, -5.2824697, -2.5434446, + 0.53792405, 5.708279, -6.1395516, 0.034476973, 1.7220172, -8.109998, + -2.0481424, -4.6632338, 6.2183847, -2.5251815, -4.975683, 1.0678875, + -7.6933937, 5.415578, -8.955229, 9.474954, 5.4107146, -5.8608675, + -12.471414, 5.743873, 3.8630478, -7.135694, -3.3420107, 1.571681, + -2.146881, -4.8176694, 2.949421, -7.0200763, -3.7710736, -2.4343507, + -0.60511315, 4.7749887, -5.2734017, 1.1034018, 1.6877179, -9.101425, + 4.285096, -4.4612913, 0.4965076, 0.9933323, -7.051389, 10.061099, + 7.1299276, 8.778074, 8.250062, 2.0171626, 7.9379754, -9.504683, + -6.574384, -10.069825, -2.3005219, -3.6007566, -4.250442, 7.30863, + -2.9216805, -3.1601012, 1.4558052, -6.7837243, 6.804406, -8.275628, + 7.992771, 5.095498, -5.187669, -10.454871, 6.1527977, 3.4057615, + -3.1708248, 1.182362, 3.0291345, -2.4810352, 8.611953, 9.689305, + -5.4002657, -0.7909602, -3.4226687, -4.714036, -9.483436, 0.6372943, + 0.71616644, -8.395789, -4.42325, -6.350394, -3.7190423, -0.07159383, + -1.0642569, -4.507105, 2.2269413, -6.827724, -4.1526113, -2.9782333, + -0.95532715, 5.641665, -6.265532, 0.103531525, 2.9673443, -8.678349, + -9.341869, 4.6156588, 6.2792363, 1.3072072, 4.6975694, -0.48327714, + 1.6935958, -0.81220585, -9.043599, -7.592683, -9.834212, 2.5878084, + -3.7674263, 0.55611587, 9.207573, -5.7032447, -4.055137, 6.16684, + -6.124226, -8.749096, -5.2233953, -6.095223, 8.694353, 5.583952, + 2.3935144, 8.603938, 6.0223627, -6.3958125, 7.192213, -0.53936195, + 4.6792603, 5.758088, -7.6996436, -3.9893427, -7.273452, 7.0743713, + 2.5826092, -2.6400745, -9.564764, -4.489205, -4.8511343, 4.207712, + 3.682452, 7.659844, -1.493789, 4.6625385, 4.255174, -6.621875, + -2.4667757, -7.535613, 7.692683, 2.9625502, -3.480427, -9.170702, + -3.360738, -3.226336, 4.0252004, 3.7444744, 7.949601, -0.04482794, + -7.3591776, -3.7998226, 0.53075004, -1.2397605, -4.00465, 2.0808163, + -6.167218, -5.27774, -3.252711, -0.9508786, 4.553287, -6.1296225, + 1.4477179, 1.8629119, -8.909501, -5.184022, 0.01386279, 5.4913025, + -6.6893497, -8.943161, -4.2422194, -6.5979958, 7.673629, 6.0679145, + 2.1657276, 6.656581, 6.2551584, -5.726885, 8.439909, 1.1889153, + -8.781021, 3.700332, 6.3897414, 0.92094684, 4.4989285, 0.029262021, + 0.12188202, -2.034289, -10.258727, -5.9043097, -9.5475025, 1.3803111, + -2.6672835, 0.5991635, 7.614803, 7.508607, 7.6058636, -3.5324607, + -7.4830356, -6.236982, -0.5930056, 6.8062787, 8.30548, -10.336412, + 0.2843341, -1.6242309, -5.3731217, -8.620923, -3.1701112, 7.859669, + 2.6248236, -4.037354, 0.27806696, -1.0954541, -5.1329675, 8.76073, + 5.8566713, 8.729288, 8.77688, 2.2422388, 8.273038, -8.855611, + -5.5218472, -10.406863, -3.04127, -3.5146406, -3.6433032, 6.2217417, + -3.2904103, -5.617081, 2.0725808, -8.084152, 6.084854, -7.870153, + 10.032941, 5.403137, -7.2168527, -10.456365, 6.4406886, 3.5861251, + 4.4335804, 6.443785, -9.664589, -1.4755827, -7.5875196, 7.194868, + 2.3273208, -3.6874237, -7.995151, -4.528318, -3.2545435, 4.3231964, + 2.217656, 9.554438, -0.262366, 3.82256, -3.097919, 1.2542965, + 2.4756153, -6.5521755, 9.468392, 5.2111497, 8.791363, 8.969559, + 1.0164894, 7.8347497, -7.2661233, -5.3663173, -9.349647, -2.895312, + 4.6178713, 4.4970236, -8.128921, -2.388134, -7.204982, 7.9246726, + 2.8887987, -3.66906, -8.778419, -3.716566, -3.420944, 5.290876, + 3.2017176, 9.198396, 0.9888268, 2.6644826, -3.8068829, 0.713936, + 1.0739329, -5.5369854, 9.7269945, 4.8997397, 10.314972, 8.03258, + 1.8548614, 9.112232, -8.055534, -5.800883, -7.3509254, -3.6859784, + 2.9091022, -4.7711563, 0.88710666, 1.4358181, -7.514095, 10.325413, + 7.250847, 8.822184, 7.4477673, 3.935031, 7.514207, -8.216076, + -5.954607, -8.153851, -3.2415762, 4.6094704, 7.2710752, -7.711655, + -2.0168839, -7.3777366, 7.378608, 0.78870493, -3.8573258, -9.065235, + -5.092778, -4.3065248, 3.205538, 2.7243228, 8.317391, 0.21904066, + -4.0985804, -1.4040945, 3.9742804, -4.8898373, -7.814665, -4.1179075, + -5.6568966, 8.745657, 5.170631, 2.9236934, 7.60064, 5.6511335, + -5.867108, 6.683814, 1.4802417, 2.9769866, -5.788512, -9.670476, + 9.512413, 9.275466, 5.7822595, -3.790114, -7.3849096, 4.0352426, + -1.8118818, -7.039514, -0.54277307, -9.160551, 7.974063, -4.977607, + -3.3953643, -0.29484314, 4.5300975, -2.496303, 10.334259, 9.281761, + -6.2357407, -1.2451144, -3.4674573, -4.702326, -8.956524, 2.2712495, + -0.063207306, -9.037878, -5.0328436, -7.214025, -4.346608, 0.23249117, + -1.5835001, -3.2782664, 2.6274416, -7.9881434, -3.9845536, -2.324008, + -0.08049599, 6.809898, -6.71709, -0.28291148, 0.9679869, -9.234806, + 1.8905965, -7.0994406, -8.475301, 10.135242, 9.410562, 6.8652296, + -4.88088, -7.936125, 2.9165027, -2.2307975, -8.076796, 0.7378677, + -8.647219, 8.356511, -5.8972907, -4.6332083, -3.6120832, -0.46920362, + -1.7564415, -3.460449, 3.698968, -8.320312, -5.473054, -1.3630875, + -0.60587037, 5.095714, -5.632284, -1.5603347, 1.8506542, -8.8415165, + -2.9038048, 8.438732, 4.81046, 2.1446462, -7.2344875, -7.2098365, + -8.675893, 6.309864, 1.0370756, 3.6585405, -9.737723, 9.615832, + 7.681602, -5.152856, -6.4754577, -7.199391, -3.8732023, 0.6892925, + -0.4086386, -5.0915914, 0.123399384, -7.081428, -2.8967493, -1.8055007, + -0.7318387, 5.359374, -5.4415383, -0.39679357, 2.1817417, -8.717163, + -2.6300368, 9.632848, 5.0965047, 0.8696952, -5.846049, -5.914046, + -9.276221, 7.6005855, 2.3681214, 4.343923, -9.973524, 8.928061, + 6.6309648, -4.9323072, -5.9829807, 6.131422, 8.210675, -3.9408135, + -8.139571, -4.4752107, -1.0662954, 6.9391575, 8.072885, -9.492797, + 0.86481816, -2.7573216, -5.414936, -7.7305956, -2.0733178, 9.507546, + 5.0972176, 8.0317955, -3.591854, -8.179699, -4.8631997, -2.7618487, + 5.9859548, 6.8751426, -11.006369, 1.2612578, -2.603221, -5.9696817, + -6.967107, -2.7954648, 8.082472, -6.4784293, -3.1640706, 2.1498394, + -1.9112898, -5.1421485, 2.4497309, -6.705029, -4.3187137, -1.6554806, + -1.8156244, 6.1885624, -6.430627, 1.4882534, 3.243052, -9.607652, + -1.7085698, 9.251234, 4.3491774, 2.416117, -5.290142, -6.7528033, + -8.664574, 7.0019703, 1.4274092, 4.7426867, -10.187569, 9.448294, + 6.3144927, -5.417932, -6.129937, -2.7391443, 0.59240377, 3.6653671, + -3.328341, 9.074866, 8.93781, -5.556528, -1.2742648, -3.1844244, + -3.6237466, -10.15354, 2.2867045, -0.5779863, -9.1535225, -4.6684074, + 7.1759663, 7.3641973, -3.6259208, -7.2714105, -4.8927345, -1.1482089, + 7.236807, 7.1285334, -10.11766, -0.02785874, -1.0509187, -5.302217, + -7.398794, -2.6910326, 7.422457, -7.2027617, 2.5210826, 6.0674076, + 1.9882846, 5.167844, 0.3779964, -0.14692286, -1.7783586, -8.442635, + -8.032382, -10.680228, 2.683896, -3.7678924, 1.0102718, 8.161365, + -7.766121, 4.5838485, 4.660446, 1.8665016, 6.2498345, -0.8162987, + 0.11104556, -1.8215317, -7.6489472, -8.143102, -8.197079, 1.8415658, + -4.405636, -0.30920935, 7.559347, -2.6080153, -3.3012905, 5.6862464, + -1.7896237, -4.459233, 1.0632817, -6.598305, 5.602765, -7.904013, + 7.8424582, 4.9409027, -6.67253, -10.767012, 6.15876, 4.4071717, + 5.656594, 6.8484516, -3.1476777, -7.571905, -6.2254357, -1.9712182, + 5.758922, 6.707439, -10.087535, 0.02836294, -2.1073356, -6.0885587, + -7.7628417, -3.1303124, 8.636786, 3.7710018, -3.909192, 0.42333752, + 2.0595105, -6.317303, 9.594121, 4.67741, 8.63621, 8.3232155, + 0.86923796, 8.578076, -8.159596, -6.0514417, -8.369443, -3.2592864, + -6.0579114, -1.7926767, 5.1349235, -5.7831187, -8.770867, -4.1543965, + -7.169088, 7.598512, 6.31293, 3.4194317, 8.037912, 5.5066266, + -7.1444583, 7.6522484, 1.8842989, -1.6498294, 8.167538, 5.8106794, + 2.266483, -7.3731356, -6.919148, -8.447499, 7.3767266, 2.3994293, + 3.51698, -9.469757, 8.408597, 6.5709944, -6.385953, -6.8783717, + 2.3145907, -5.864707, -9.284212, 9.974858, 9.248446, 5.5465083, + -3.209382, -8.2473135, 4.216321, -1.4011812, -7.601114, 0.24903035, + -9.108602, 6.789536, -5.609271, 5.2646365, 3.7558274, -8.914788, + -4.099078, -8.348103, 5.0651083, 2.3700697, -4.181399, -8.686899, + -4.917938, -3.4382954, 4.301682, 3.8025165, 8.732204, -0.0059595746, + 1.4045326, -5.1021776, -7.7670307, 10.321968, 8.4566145, 6.2178245, + -4.81318, -8.533545, 3.0419717, -0.32924134, -7.836596, 0.6514037, + -8.889345, 9.798955, -5.860011, -5.6919904, -1.6185277, 5.637761, + -5.835713, -7.6979113, -3.9375474, -8.415309, 8.803723, 5.878187, + 3.044101, 8.090162, 6.210055, -5.1029224, 7.726085, 1.2242173, + 4.0775433, -2.1252205, 1.0108831, 1.5983747, -6.2114277, 9.292624, + 5.1695995, 8.2117, 7.415637, 1.0126104, 8.384375, -9.409417, + -5.946701, -9.120886, -3.3905387, -5.199861, -3.8421059, -0.1340202, + -2.292319, -4.3078012, 2.8822129, -7.299407, -3.0992985, -3.6885862, + -0.88706255, 4.8268437, -5.751982, 0.90550995, 1.5537581, -10.893942, + -6.5163236, -3.4397552, 0.28369677, -1.5917131, -3.6631076, 2.4715986, + -6.9888134, -3.8286197, -3.7476637, -0.34884825, 6.1322474, -6.7182026, + 0.11383244, 1.8207762, -9.165139, -1.9188373, -3.685447, 6.557671, + -3.8604941, -3.7915502, 1.3823928, -8.540816, 6.041277, -9.622087, + 9.272483, 4.812929, -5.459201, -9.807776, 5.4093146, 4.753193, + -6.1211348, -3.786471, 2.3802521, -1.1162397, -4.8782554, 2.170233, + -8.453495, -4.2135267, -3.2559023, -0.23782712, 5.318841, -6.0882607, + -0.16020171, 3.0654874, -9.295861, -3.9246643, -1.1393148, 2.998033, + -4.318775, -7.904071, -2.800485, -5.909349, 9.698792, 6.777466, + 3.6121604, 8.825098, 6.22503, -7.36916, 7.6359572, 1.0598067, + 2.1506774, -7.4168296, -8.384336, 10.437943, 8.602309, 5.914923, + -3.6162124, -8.084291, 2.9970481, -0.4116496, -5.935207, 0.040830225, + -9.945077, 7.1021357, -4.643817, -3.132097, 0.13191287, 5.418489, + -2.207806, 10.307531, 8.839859, -4.223659, -0.27383408, -3.9054093, + -3.1586568, -9.992204, 2.33356, 0.36018413, -8.606421, -4.74262, + -5.839156, -0.80932015, 5.2826877, -4.759288, -9.660967, -3.730625, + -6.7809463, 9.190304, 6.802815, 2.7141244, 7.008631, 6.619229, + -6.310707, 7.2402306, 0.14273828, -2.9942667, -3.9975731, 7.1852574, + -2.638108, -3.8044379, 0.73901707, -6.340163, 6.0500917, -8.468482, + 9.551824, 5.9240108, -6.3205256, -9.206056, 5.516724, 3.3679056, + 2.4033506, -7.193963, -8.720811, 8.990322, 9.643482, 5.211146, + -3.4929276, -9.939631, 3.2437413, -1.5387418, -7.1159067, -0.0806202, + -10.2961235, 7.496913, -4.685324, -2.3999703, -4.8728423, 6.567425, + -3.6588533, -3.6608834, -0.4019788, -6.8036804, 5.8153644, -9.328634, + 9.879407, 4.3550296, -5.9978867, -10.8855715, 6.632119, 3.4900968, + -2.5225089, 8.312515, 4.6269197, 1.7711086, -6.653724, -7.4591713, + -8.474785, 8.3964405, 1.9461682, 4.44265, -9.105209, 9.117343, + 6.8057175, -5.744403, -6.2951274, 6.4343185, 6.691375, -3.2405212, + -8.819071, -4.013054, -1.7410048, 6.2308826, 6.6758165, -10.301936, + 1.8068116, -0.99352115, -6.6422853, -6.5497437, -2.412427, 8.6613455, + -5.04912, -3.345249, 0.8325753, -1.1029865, -3.899759, 0.8876871, + -7.405341, -3.5654964, -2.7069912, -1.8622332, 5.6668363, -4.8136506, + 1.157513, 1.8048886, -8.404977, -3.5688822, 0.5040818, 2.8069234, + -3.25464, 9.228806, 9.394433, -5.2433686, -0.7811582, -4.5316305, + -3.4573638, -9.090912, 2.6197965, -0.5756312, -11.038101, -4.793244, + 2.7478004, -4.177278, 0.562788, 0.14081088, -6.0579643, 8.764944, + 6.246654, 10.426458, 7.2940173, 2.3319452, 7.9287653, -7.501482, + -6.9660234, -8.759044, -4.1044855, 1.735229, -6.7054596, -8.643964, + 7.487597, 9.633358, 5.482142, -4.7150574, -9.227698, 2.4289358, + -2.1457634, -8.05555, 1.2708195, -9.680346, 8.310833, -4.5440636, + 5.9576106, 8.866353, -2.5633192, -8.925977, -5.211982, -2.0016477, + 6.1865196, 7.4311066, -10.009861, 0.37626797, -1.1807008, -5.35164, + -8.055478, -3.6881363, 7.8504004, -4.330071, -1.6665548, 5.076396, + -5.6002817, -8.60715, -3.7790267, -6.518534, 8.571923, 7.2190742, + 0.591348, 7.786133, 6.5758586, -5.465725, 7.80577, 0.9323889, + 3.5424657, 4.899465, -7.455043, -2.7389019, -7.063229, 8.697942, + 1.9802995, -3.4515595, -8.919532, -5.1485686, -3.7136114, 5.208867, + 3.1295621, 8.177613, -0.8185578, 3.328705, -3.0607684, 0.7639568, + 0.9525489, -6.515406, 9.335051, 3.2833583, 8.9374, 7.5546136, + 3.0728686, 8.451026, -9.062425, -6.1152587, -9.827739, -3.1620083, + -5.362314, -1.2921567, 5.327361, -5.3302774, -8.888587, -4.5527844, + -6.7238536, 10.301866, 6.373277, 2.2402432, 6.846539, 5.729205, + -4.7444935, 7.5717, 1.4216542, -6.7166, -3.3134437, 0.22413717, + -1.3928875, -4.157645, 0.8932867, -7.219809, -4.6399164, -3.017949, + 0.1319421, 4.8239646, -5.4372807, 0.089414716, 1.6524593, -8.517732, + -6.5884647, -5.1078653, -0.15199757, -0.26707748, -4.3672123, 2.066689, + -7.4200096, -2.8242114, -1.5345919, 0.6745458, 5.5921874, -5.7995872, + -0.776961, 2.8821454, -9.888437, -3.646765, 1.6834354, 4.0576406, + -2.23706, 8.907418, 9.601109, -4.7717886, -0.09458417, -4.3336644, + -4.749811, -9.064614, 2.631544, -0.035433494, -8.769338, -4.453611, + -2.9219694, -5.3573117, 6.046344, -2.8424332, -5.5893497, 0.8695591, + -5.9960327, 6.1499248, -8.713867, 9.305026, 6.0738535, -6.6037693, + -8.59708, 7.6625805, 4.3168726, 4.0873175, -4.829057, 0.7545677, + 1.3727825, -7.1706047, 8.339684, 4.980497, 8.3269, 8.423941, + 1.5278224, 7.838041, -8.658294, -5.2973003, -9.086324, -3.618869, + -5.160398, -2.0772526, 6.4065695, -6.2402186, -8.388518, -4.0314784, + -7.524799, 9.074732, 5.883579, 0.92340237, 7.8911066, 5.291583, + -7.0020413, 8.332711, 0.5438318, -5.475752, -4.096353, 0.7418821, + -1.7603456, -5.4498396, 2.426098, -8.548701, -4.205151, -3.6305838, + 0.5124929, 6.341473, -5.9324965, 1.1692834, 1.2558702, -8.690557, + -7.601538, 5.0042977, 5.4939704, 1.2349383, 5.4100456, -0.7921951, + 0.8094976, -1.4773229, -9.843012, -7.0676484, -10.246568, 2.432461, + -2.9934773, 0.3922799, 8.117828, 6.4602036, 7.895043, -2.6972594, + -7.537776, -6.4763684, -3.0186179, 5.8566647, 6.7770367, -9.200746, + 0.2087364, -0.858198, -6.485227, -6.9270077, -2.743004, 7.4454303, + -6.774294, 3.8858647, 5.1442966, 1.6952565, 6.166942, 0.53319055, + 0.4099421, -2.3269954, -10.190873, -7.651328, -9.131859, 1.9591327, + -3.6816816, 0.6132709, 7.345471, -5.7091637, -2.1768086, 4.938067, + -6.2148037, -8.8039665, -4.996662, -6.863648, 7.842789, 5.5681744, + 1.7519963, 7.321761, 5.466928, -5.6338496, 8.135275, 0.73794854, + -1.8118109, 8.668656, 3.5502715, 1.6734891, -5.8290954, -6.2849545, + -9.082384, 7.0790424, 1.7971557, 5.6151752, -9.320955, 9.699226, + 7.3700514, -5.5860653, -6.5448303, -5.1421866, -2.6081507, 6.1404862, + -6.3517337, -7.5181293, -3.375357, -6.1467624, 8.108316, 6.402123, + 1.7739153, 8.066847, 6.021652, -6.555123, 6.994559, -0.94740945, + 5.0095654, 5.402654, -7.9377584, -3.4647434, -8.928226, 6.8889656, + 1.9295157, -3.4371915, -9.174624, -3.2616417, -3.6980388, 4.697456, + 2.8614936, 7.8807235, -0.5725919, -1.7451428, 9.886546, 3.1885056, + 1.7332884, -7.1396356, -7.865368, -9.382799, 6.5461197, 3.2488894, + 4.8164263, -8.698221, 9.903367, 5.8585167, -6.120382, -6.0209384, + 3.7328608, -4.2443223, 0.20974995, 0.92421633, -6.198192, 9.460172, + 5.8078604, 9.380667, 8.171391, 2.2755094, 7.3299284, -8.19499, + -5.7446876, -8.585196, -3.978039, -5.9903994, -2.6521115, 0.36149597, + -0.85726905, -5.0807085, 1.5675524, -6.8794384, -3.1182258, -2.4238338, + -1.0977409, 5.7030234, -6.8818097, 0.7078495, 2.4659245, -9.387455, + 3.2457778, 5.3635454, -6.9716244, -2.267232, -6.149327, 7.8797464, + 3.185198, -2.0001845, -8.464748, -3.9114127, -2.7734733, 5.609812, + 2.4151742, 7.2391567, -0.45850226, -3.524892, 0.092688836, 3.14134, + -3.9132354, 8.842938, 9.384612, -4.9688344, -0.40589646, -3.8411129, + -3.5751715, -8.986373, 2.1063707, 0.70323086, -9.642321, -4.5845146, + 7.316262, 7.7554197, -3.9711056, -9.01467, -5.2043657, -1.3536236, + 5.299715, 7.5319033, -10.209692, 2.0981665, -2.0503328, -5.862479, + -8.215036, -2.353183, 8.597251, -2.6859953, 8.140838, 5.7825665, + 0.9720707, -7.1876583, -6.7885914, -7.8294363, 6.3184195, 2.836515, + 4.168615, -10.275366, 9.721669, 6.7881947, -6.1733694, -6.314639, + -3.6673272, -0.6037277, 4.1874137, -3.6572542, 9.551572, 10.210841, + -5.1610703, -0.87506807, -4.0713253, -4.88557, -8.846105, 2.0876946, + 1.2504147, -8.156332, -4.534227, -4.900599, -2.9370446, 4.4679914, + -5.528951, -7.681797, -3.880365, -7.592825, 8.495731, 7.574872, + 2.7459314, 7.2000837, 6.4176593, -5.734224, 7.5318623, 1.1386472, + 2.3209145, -8.046987, -8.311764, 8.59397, 10.659053, 5.6257167, + -5.0901527, -8.376442, 2.301819, -0.6711805, -9.004793, -0.07654149, + -10.766698, 7.9621997, -3.6740355, -3.5080066, -0.42414105, 3.5235705, + -3.9768686, 8.789557, 9.31468, -4.7542315, -1.4405607, -4.078482, + -3.9088032, -9.3763, 1.7476346, -0.23493233, -9.348959, -4.872782, + -3.0600958, -4.09791, 5.9243546, -3.6587477, -4.62405, 0.44386676, + -7.336635, 5.0352526, -7.8378158, 10.527119, 4.0817556, -5.340766, + -10.456927, 6.9091115, 4.0892344, 4.4428782, 5.712187, -8.937002, + -1.7855833, -7.7947097, 7.694921, 3.4848828, -2.6598818, -9.715076, + -3.4689264, -2.90083, 5.216428, 1.971843, 7.2843304, 0.14048927, + -3.9430256, -2.2418306, 3.6924183, -5.142498, -8.28642, -4.1808953, + -7.2251368, 8.569753, 5.804526, 2.4564304, 8.018354, 6.2023935, + -5.841633, 7.688872, 0.5474327, 3.5435777, -3.61137, -0.48830578, + 0.66919976, -5.6738424, 9.41808, 5.9643283, 10.026537, 8.623571, + 2.0232105, 8.079792, -10.017634, -6.198212, -9.323663, -3.2201371, + -4.562237, -1.2995663, 5.7339225, -5.1295, -8.375976, -3.7413561, + -7.1578903, 7.603829, 6.6685057, 3.5344918, 6.6464496, 6.6487865, + -5.092063, 7.8496075, 0.21424331, -6.4582458, -1.6799798, 0.70425564, + -1.8873534, -4.4738674, 3.0409698, -7.1308336, -5.163902, -2.0293028, + -1.3463012, 7.0148277, -5.2504907, -0.028436558, 2.7450027, -9.023493, + -9.096898, 4.287031, 5.4058795, 2.339101, 5.503788, 0.6067295, + 0.8633425, -1.7538533, -10.47789, -7.6496696, -10.415888, 3.6348531, + -3.8263237, 1.008038, 7.8151793, -2.8795345, 9.5702715, 3.7618763, + 2.1786602, -7.8292346, -6.5536084, -8.8632765, 6.1929307, 2.8376179, + 3.6472375, -10.155487, 9.538595, 7.452899, -6.464293, -6.320325, + -3.1437447, -1.014591, 4.254574, -3.2684894, 10.203594, 8.237166, + -5.213888, 0.19838731, -3.9443955, -3.7691193, -10.325156, 3.3476267, + 0.42118174, -8.018622, -3.8151026, -6.09225, 5.00313, 5.933043, + 2.0435503, 4.720169, -0.9797433, -0.3201526, -0.5150253, -9.874652, + -8.718121, -9.673114, 2.5611844, -3.524991, 0.34707955, 7.5716033, + -3.4816077, -4.774554, 6.7462773, -3.0538998, -5.461725, 1.9698462, + -7.109039, 7.0457463, -8.691012, 9.121731, 5.6333222, -6.1767373, + -10.71399, 7.3380775, 3.7015576, -2.0892475, 10.085812, 5.493012, + 1.8237597, -5.8361187, -6.7760425, -9.074288, 6.894141, 1.8105714, + 3.8897278, -9.469019, 9.510599, 6.6509852, -5.447361, -5.5300484, + 4.822562, 4.984373, -9.03302, -3.843234, -8.008172, 8.021219, + 2.4483304, -2.9426632, -7.563584, -3.5957246, -3.8874934, 4.9192, + 2.3701422, 7.391159, -1.6196264, 3.8092427, 5.937913, -7.813994, + -2.8143158, -8.287718, 8.374735, 1.9406755, -4.895462, -8.407961, + -4.5536957, -2.8043075, 4.3253274, 3.1737487, 8.725306, -1.4019027, + -3.5726547, 0.78179294, 4.529287, -3.3881974, 8.74288, 8.607299, + -5.042302, -0.20213881, -4.647557, -4.1144676, -7.678463, 1.8379859, + -0.24987781, -8.578662, -4.818242, -5.117454, -4.5148954, 0.10624589, + -1.2180274, -5.016922, 1.9600813, -6.9879055, -4.3901095, -2.738134, + -1.2491328, 4.64339, -5.7814093, 1.5131419, 1.8611726, -8.913307, + -1.8971161, -3.1923783, 6.899726, -2.4385386, -3.980598, 1.1318543, + -6.5293493, 6.320701, -8.727861, 9.180547, 5.2706137, -5.8057957, + -10.110816, 6.529266, 4.444552, 4.638854, 4.6691217, -9.343299, + -3.127269, -8.025028, 6.8854837, 2.7924738, -3.326706, -8.930542, + -3.6522446, -4.1904025, 4.6658187, 2.8565712, 6.692122, 0.14128414, + -6.2409735, 3.5684962, 4.6838393, 0.72853315, 5.510342, -0.8682135, + 0.7495298, -0.85639167, -9.117575, -9.080062, -8.674799, 3.3843653, + -3.1317675, 0.4324034, 8.305462, 6.3279643, 6.7106705, -4.1836724, + -8.615738, -6.851803, -1.4598849, 5.80182, 9.052325, -9.979097, + 1.1205733, -2.7501493, -5.9289064, -7.534864, -3.8834043, 8.562654, + 3.9074936, -3.8890572, 0.45945162, 0.84255755, -5.513143, 8.778603, + 4.9385967, 9.497171, 7.865494, 2.9229267, 7.9674263, -8.268495, + -6.726032, -9.090301, -4.528376, -6.1461563, -4.3230863, -1.2120434, + -1.455095, -3.1794934, 2.8854086, -6.5343447, -3.2918155, -2.6107028, + -0.74047935, 5.271163, -6.2277756, 0.7157286, 2.6910105, -9.168604, + -1.3577203, 8.839961, 5.0434685, 2.1910448, -4.7244105, -6.096407, + -8.92787, 6.6546445, 0.8977878, 4.303876, -10.117756, 8.402619, + 6.196252, -6.5103016, -5.1825013, -3.1043668, -4.961531, 5.5930915, + -1.4011675, -4.397015, 0.8133563, -6.7698617, 6.7175813, -7.8468657, + 10.489274, 5.0033035, -6.2341933, -9.351235, 5.9400563, 4.133572, + 6.718978, 6.5899878, -4.2197423, -8.820812, -5.765137, -1.1392213, + 6.190694, 6.80178, -8.950834, -1.398454, -0.7859696, -5.9388456, + -7.657369, -3.6168509, 9.938216, 2.8604543, -4.176269, -0.032480065, + 0.29806682, -5.1237435, 9.9813, 5.5188937, 9.73569, 6.8377767, + 1.026506, 6.912907, -8.71974, -5.9671535, -9.023453, -3.388854, + -3.7868538, 0.2358615, 4.5804114, -4.1765995, 9.464467, 9.608519, + -5.427396, -0.0027902753, -4.4213595, -4.813891, -9.548155, 1.6938022, + 0.53211325, -9.484891, -5.059108, -7.4199195, 4.41144, 5.1841702, + 0.9226823, 5.6940627, -0.77240235, -0.39194813, -0.5792008, -8.9826, + -7.796047, -8.205816, 2.5407724, -2.786988, 0.2943157, 7.434004, + 3.6179874, -5.4734077, -8.223705, 8.409029, 9.27832, 6.055695, + -3.6761286, -7.0308566, 4.3002524, -1.9511133, -6.595688, 0.1227307, + -8.831284, 9.212987, -5.6025066, 3.2084193, -4.1871395, -0.041901555, + 0.33877632, -6.681616, 9.920659, 5.347335, 7.8451376, 9.134266, + 2.1819751, 7.4526243, -8.539444, -6.0027223, -7.90224, -4.269072, + 4.483309, 5.1612105, -6.308667, -2.1959343, -7.3934155, 7.0988226, + 2.1501093, -3.4736, -8.523852, -5.096658, -4.5949063, 4.146306, + 2.896147, 7.5767636, 0.47898337, 3.6931636, -4.097703, -0.13887994, + 2.0608702, -6.143664, 9.83687, 4.927203, 7.9364796, 7.497932, + 1.8711846, 7.6925306, -8.237041, -7.262296, -9.879487, -3.0237556, + -0.70784575, 9.055739, 4.649629, 1.9562821, -6.7409678, -6.981162, + -9.239891, 6.9407215, 1.999373, 3.7810543, -10.087302, 9.472698, + 6.470369, -4.700423, -8.219179, 4.5559483, 6.059409, -6.87717, + -3.8107352, -7.7552876, 6.435746, 3.58038, -3.793456, -9.739074, + -3.3336227, -2.2753158, 5.056642, 2.894508, 8.030654, 0.43468696, + -3.8354254, 1.7778754, 3.7521513, -3.2931926, 8.9018345, 9.979589, + -6.120826, -0.58886594, -2.969658, -4.1323996, -9.127915, 3.6837893, + 0.22602403, -9.466155, -4.6245246, 5.287118, 7.9300413, -3.2707233, + -8.926663, -6.0852256, -1.5615692, 5.7396297, 6.6436973, -10.105862, + 0.669653, -1.8916824, -4.8029456, -8.301123, -4.124042, 10.206635, + 3.113396, -4.4953685, 0.80065525, 0.70220363, -6.6659775, 9.988934, + 5.5232577, 9.15163, 7.209619, 0.97462773, 8.51253, -8.453342, + -5.6418386, -9.15139, -3.3498406, -5.684921, -4.624882, 0.5551096, + -2.0088968, -3.9966486, 1.6103154, -7.4957933, -4.854178, -2.2169678, + -0.27768454, 5.5392847, -5.979758, -0.72932523, 1.6385177, -9.106135, + -6.1801667, -4.683267, 0.082921855, -1.9471834, -4.6009297, 1.859672, + -7.593911, -3.5737734, -3.446167, -0.7242213, 6.556091, -6.3657618, + -0.21785446, 1.6869241, -8.245184, -6.6729517, -4.1615, -0.043868612, + -2.2683814, -4.494702, 2.3640566, -6.793602, -4.547303, -2.9618616, + -1.5272892, 5.681512, -6.6004243, 0.6858782, 0.5981848, -9.322733, + 2.2426426, -6.643728, -9.535674, 9.99336, 10.577679, 4.990086, + -4.6245446, -8.242425, 3.009484, -0.8427742, -8.069026, 1.4190774, + -8.478846, 8.33521, -4.1055098, -5.6288404, -2.481804, 5.0313454, + -5.1209555, -8.3456545, -4.7248325, -7.1298366, 7.800823, 6.0051317, + 3.42059, 7.4262276, 6.6750317, -5.249818, 7.439567, 0.65624356, + -2.6386292, 8.64838, 5.374185, 1.4801291, -7.86555, -7.96975, + -8.414121, 6.4272223, 3.2506561, 2.704101, -8.40079, 9.545909, + 6.581154, -6.134661, -6.0841055, -2.9381497, 8.742895, 4.8399844, + 2.2072895, -6.4186463, -5.472966, -8.962191, 6.7647147, 1.0567768, + 3.6498005, -9.611499, 10.654387, 6.286525, -5.596566, -6.3749967, + 3.6286473, -3.6094818, -0.43751407, 1.6931443, -6.155699, 9.530568, + 5.4962287, 8.427548, 8.049008, 2.2909114, 7.214658, -8.607283, + -6.2588058, -8.916135, -2.6580756, 5.869712, 7.975988, -2.810921, + -7.619258, -5.904651, -1.178541, 7.5555797, 7.856306, -9.477689, + 0.7228592, -0.6438121, -4.804905, -7.2059603, -2.499647, 8.101038, + -5.0421815, -0.71923274, 4.894131, -4.8744483, -7.869636, -4.403551, + -5.8541327, 6.5578904, 5.3064823, 2.0271325, 6.855411, 6.3088255, + -6.0655723, 8.126973, 1.2041019, 1.7637342, -6.1024127, -7.8775587, + 8.786929, 9.074222, 6.518047, -4.8575797, -7.890351, 4.0709805, + -0.72078896, -8.914962, -0.6294105, -9.927013, 8.256329, -4.4878793, + -3.6292624, 0.1524684, 3.4201217, -3.348982, 10.15516, 7.9692307, + -3.832203, -0.29512584, -4.52319, -3.7853587, -8.2226095, 2.9736295, + 0.4048769, -8.20962, -5.628619, -3.6613832, 1.0474597, 3.8048406, + -3.759753, 9.320481, 8.648925, -4.620084, 0.48635, -4.721823, + -4.797253, -8.732612, 1.5900956, -0.70393026, -9.795508, -4.1806436, + -4.9610667, -4.77584, 0.8428181, -1.6868169, -4.249581, 4.088098, + -8.262202, -3.9794893, -2.345378, -0.11854989, 5.7721076, -5.790889, + 0.010534771, 2.0366802, -9.311226, 5.4463773, 6.8840923, -2.697818, + -7.366038, -4.8911147, -1.0456618, 6.477173, 8.237088, -10.288491, + 0.2896148, -1.1288388, -6.4826903, -5.4350805, -3.2277005, 8.957586, + 1.8678188, -6.245517, -8.300136, 9.114548, 9.243449, 6.4731297, + -5.680297, -7.569109, 3.772985, -1.3526826, -6.126432, -0.5689156, + -9.594383, 9.580495, -5.406843, 3.2065918, -3.5969102, 0.46051404, + 1.4928018, -5.656455, 8.656257, 6.1107974, 7.959543, 8.308046, + 2.3918166, 7.0995626, -8.165065, -6.40829, -9.62659, -2.5477967, + -6.4775915, -4.0051312, -0.8221657, -1.7452071, -4.110426, 2.3489573, + -7.9294953, -3.2711115, -3.2790856, -0.19998027, 6.0025554, -6.4588833, + 1.5274063, 1.0127456, -8.427584, -4.330744, 1.2549684, 4.4625726, + -1.940318, 10.28473, 8.958999, -5.625681, -0.09122906, -4.5933666, + -4.1877203, -8.469793, 2.0735888, 0.15857702, -9.036117, -3.8651614, + 6.7392883, 8.136579, -5.133114, -8.517659, -5.3220057, -1.3629817, + 6.2043715, 7.4728537, -9.852801, 0.2994854, -2.0991256, -4.870436, + -7.904233, -4.179151, 8.318495, -6.6182947, 4.4177327, 5.8932533, + 0.7230467, 5.976448, 0.33398363, 0.6575944, -0.5279744, -9.868767, + -7.9731116, -9.304593, 2.0074806, -3.554028, -1.0318375, 8.884197, + 5.9185805, 8.425355, -3.5211453, -7.461584, -5.9727254, -2.0327446, + 7.0221434, 7.1590343, -9.661433, 0.00046925258, -1.0226712, -5.9833107, + -7.6976137, -2.6975017, 9.679272, 2.6270514, -6.374335, -9.2761965, + 9.171331, 10.149477, 5.7503066, -2.439167, -8.414499, 3.7073455, + -1.66769, -7.4029455, -1.316017, -9.694459, 7.421923, -4.7296634, + -5.3128343, -3.4220006, 1.0474683, -1.302421, -3.1880958, 2.523892, + -7.8128843, -3.174748, -2.1842308, -1.1887311, 5.367874, -5.7989216, + 0.60891813, 1.986396, -8.853076, -6.4675922, 2.9712186, 4.8504643, + 0.3796064, 5.707802, -0.90323293, 0.75780135, -1.5796851, -9.827166, + -7.5701184, -9.559451, 1.9661639, -1.7519193, -0.1696032, 6.5990033, + -6.1756425, -3.9535809, 0.6950165, -0.9963139, -3.7237663, 2.625981, + -7.147416, -4.2952437, -2.7786543, -1.0150361, 6.4971585, -5.591035, + -1.7735833, 2.307422, -8.934676, 6.3175564, 7.790874, -3.05725, + -7.958814, -5.279218, -0.6553139, 6.9137754, 7.764824, -10.665383, + 0.58230084, -2.266729, -6.4548345, -7.652887, -3.8807032, 9.411627, + -1.4181685, -2.9158294, 6.3103147, -3.768593, -4.666192, 0.8637251, + -6.786864, 5.6299634, -7.420348, 8.957566, 4.227452, -5.250989, + -11.481792, 6.166338, 6.319524, 4.574907, 5.5770893, -8.312141, + -2.5483756, -8.96058, 7.051, 1.4268552, -2.487243, -8.771428, + -3.9156923, -2.8685753, 4.887751, 1.9611052, 7.694621, -0.79031837, + 4.513652, 8.222154, -3.7251465, -8.034304, -5.287466, -2.461339, + 7.7107844, 7.1426744, -9.963049, -0.46083128, -1.6350175, -4.5869718, + -6.877551, -2.6495903, 9.240673, -6.462002, -3.6981559, 0.4555167, + -0.50782007, -5.5411887, 2.3375695, -8.482708, -3.6253085, -2.7388842, + -0.5848733, 5.098801, -5.110899, 1.013896, 2.2567723, -9.1616535, + -5.043788, -1.1575576, 4.0947385, -5.8893275, -8.545155, -3.2490788, + -6.8081217, 8.908991, 5.7497025, 3.0088646, 8.603279, 6.7703104, + -6.325618, 8.324023, 1.1911067, 5.9048767, 8.617628, -3.669518, + -7.9292655, -6.315361, -0.9080064, 5.9039288, 7.1445923, -8.824829, + 0.5710804, -2.7915578, -6.796501, -7.64771, -4.096615, 9.312177, + -2.186735, -4.4936004, 6.7048364, -2.2210233, -3.6680636, 0.43797407, + -7.612816, 5.3158007, -8.019816, 10.751913, 5.224338, -6.194688, + -8.86281, 6.663119, 4.442512, -5.277305, -1.6095123, 5.6652446, + -5.8243685, -8.90918, -3.0437622, -6.086359, 9.147424, 6.713501, + 2.989778, 8.841655, 6.1041775, -5.8645153, 6.835541, 0.20937236, + 5.1260233, 5.162831, -7.4211435, -3.3823187, -7.2227683, 8.265752, + 1.5018557, -3.622374, -7.929288, -2.9702823, -3.6163805, 4.0778537, + 3.4203045, 8.57274, -1.3709658, -7.7956443, 3.768751, 4.642162, + 2.0364745, 6.275999, 0.54041946, 0.82145584, -1.3842595, -9.839539, + -8.509381, -9.117319, 1.906667, -4.408625, 0.9784531, 9.481784, + -6.419728, -3.6856394, 0.55525374, -2.91461, -4.336277, 1.6410733, + -7.087475, -2.0674257, -2.415526, -1.0980711, 6.34878, -5.668643, + 0.5787549, 2.2730868, -7.631411, 5.782113, 7.793034, -3.2860532, + -8.504571, -5.9797106, -1.1003709, 7.0175314, 6.7794957, -10.7942095, + 2.5138288, -1.103467, -5.744746, -6.994371, -3.3348162, 9.465204, + 5.9604745, 8.733884, -2.686698, -8.209682, -5.3875837, -1.3294263, + 6.79384, 7.224679, -9.72781, 0.04456152, -1.571112, -4.649286, + -7.1504345, -2.7568176, 9.364344, -2.4045875, -4.893637, 6.9074845, + -3.6092815, -3.6661725, 0.11472879, -7.916554, 5.407157, -7.977337, + 9.305996, 4.5012984, -6.449662, -9.911987, 5.4825478, 3.33097, + 5.411543, 4.8542705, -9.326701, -2.4830413, -7.238049, 7.542187, + 1.0561182, -3.9888587, -8.749615, -3.4393008, -2.9592185, 4.693101, + 2.9826982, 7.803661, -0.075767934, -0.9949193, 8.798841, 4.793284, + 2.1477382, -5.7754097, -6.9468164, -8.643013, 7.7490506, 2.1529267, + 3.848948, -9.452447, 10.149739, 5.930292, -5.660139, -6.8535852, + 3.431631, -6.876298, -8.200342, 10.574867, 8.880292, 5.0934186, + -5.2237315, -7.5476594, 2.3664553, -1.4575734, -7.253116, 0.033161078, + -9.014419, 8.3420105, -3.9291942, -2.2554843, -5.3423467, 7.832416, + -3.4623804, -4.8499155, 0.1691061, -5.9225793, 6.430973, -9.164601, + 10.512101, 5.5853844, -5.845609, -10.130692, 5.7846375, 4.3735833, + -1.5416863, 9.468383, 4.5228963, 2.0758693, -6.035071, -7.4519644, + -8.580256, 7.048186, 2.0424216, 5.056368, -9.454541, 9.430702, + 5.6969533, -5.23084, -5.9116616, -8.945927, 3.8676827, 6.476771, + 2.6410658, 6.7011676, -0.25917503, -0.792824, -3.089307, -9.921444, + -7.980823, -8.4609785, 3.3356721, -3.5536969, -0.45147753, 7.4787836, + -2.9243064, -4.0912757, 6.2642255, -3.4626095, -4.831538, 1.3431888, + -7.621842, 5.961581, -8.498467, 8.395595, 4.415107, -5.790292, + -10.4054785, 7.048936, 4.813912, -2.778917, 9.093748, 5.10337, + 3.0833814, -7.746098, -5.3869863, -10.204789, 7.217273, 2.4341223, + 4.3581457, -10.0241995, 9.252511, 6.303752, -6.165773, -5.7687793, + 4.351514, 6.815173, -9.606232, -3.8131764, -7.741267, 8.839895, + 2.3243253, -3.5103111, -9.738171, -3.118203, -2.8291101, 5.1444764, + 2.310695, 7.24956, -1.4608871, 3.7551436, -4.147409, 2.4504495, + 0.23815703, -6.9479265, 8.995917, 5.6728506, 8.460836, 8.325179, + 1.2729877, 7.4703703, -9.4889, -7.6368446, -9.458102, -3.7040796, + -5.7086415, -3.5125117, 0.84559464, -1.3262581, -4.170473, 1.7748331, + -6.720943, -3.862426, -2.3283498, -1.2468247, 4.1961794, -5.2385173, + -0.05049745, 1.2443483, -8.585557, 5.514104, 4.937252, -7.7224016, + -3.2009268, -7.1383014, 6.2409377, 2.6305573, -4.7713213, -8.91583, + -3.4721057, -3.8610115, 3.8568172, 3.3434324, 7.671831, -0.89840096, + -1.0084368, 9.45803, 3.222279, 2.1036878, -7.342878, -6.2834063, + -9.393092, 7.2432075, 2.3757913, 4.7674804, -10.428517, 9.164046, + 6.316391, -6.2105484, -5.1276827, 4.421855, -3.4565558, 1.2602847, + -0.17221718, -5.4317155, 10.953742, 4.5780416, 9.32996, 7.897324, + 0.8768959, 8.782503, -7.646628, -6.5011315, -8.279313, -4.6601276, + -2.6410017, -0.5928889, 3.6426384, -3.3224137, 9.240485, 9.296175, + -4.6633444, -0.2979113, -4.596583, -3.1229854, -7.574113, 2.2915874, + -0.4761658, -7.9376073, -5.4398007, -5.598192, -2.2760797, 5.1938677, + -5.986389, -8.487096, -4.3523455, -6.886979, 8.092477, 5.715118, + 1.9118882, 7.695259, 6.473213, -6.8080316, 8.915628, 0.5666238, + 3.1501644, -2.9981954, -1.1325172, 2.008343, -5.517249, 9.069858, + 5.88303, 8.792182, 8.757541, 2.6458778, 7.457435, -7.819066, + -6.2242823, -9.037472, -4.0031137, 5.579616, 8.497304, -3.5416036, + -8.586126, -5.3845096, -2.0524364, 6.4661465, 6.6132574, -9.841716, + 0.74027497, -1.6889163, -5.8314657, -7.460399, -2.7596688, 8.083166, + 4.3527427, 6.0271482, -9.206521, -3.311398, -7.413142, 7.8210654, + 3.250618, -2.2832994, -8.776046, -2.9448254, -3.735947, 5.2235875, + 2.8963916, 8.05623, -0.259246, 5.018957, 5.391271, -9.211078, + -1.2620368, -7.3491178, 7.154786, 3.4566057, -2.0927687, -8.830578, + -3.5371754, -4.1879354, 4.4890885, 2.6118057, 7.873634, -0.32276917, + -4.1249967, 0.81904906, 3.5953918, -2.3744998, 9.769271, 8.280519, + -5.049646, 0.13065003, -4.287837, -4.0828934, -8.6981325, 2.1698716, + 0.2108001, -8.002028, -4.0958333, -2.0755565, -0.5306399, 5.0815988, + -1.876862, 10.766264, 8.137187, -5.572536, 0.98933023, -5.2963614, + -5.4277115, -9.604076, 2.3256824, 1.168138, -9.100111, -4.852838, + 4.225499, 5.593318, -7.479273, -4.2638917, -7.837129, 6.3291936, + 1.3093927, -2.70517, -8.347596, -3.4657502, -2.8516154, 4.2563205, + 2.4483032, 9.274266, -0.7283012, 1.545727, -3.2868643, -0.16896878, + 1.0575109, -7.177785, 9.206026, 5.52626, 8.977994, 7.1161714, + 2.7958372, 8.019658, -9.402279, -6.156659, -9.071391, -3.3809807, + 1.330739, -5.4025116, -7.370866, 9.087397, 10.029112, 6.2906475, + -4.8434324, -8.334834, 3.7770102, -1.5151335, -7.7122927, -0.16044149, + -9.368845, 8.222989, -5.566824, 4.3269367, 5.381381, -8.832622, + -2.3699853, -7.959317, 8.377144, 3.4916098, -4.0061197, -8.68004, + -4.235813, -3.7249868, 5.9938226, 2.5358493, 7.996413, -0.17677659, + -2.2257104, 8.131667, 5.282382, 3.458679, -6.1569014, -7.9436684, + -9.177292, 8.210361, 1.5269316, 4.472125, -9.046066, 8.749346, + 6.607185, -8.022105, -7.080572, 3.153788, -3.3519833, 0.3264804, + 2.2937775, -7.525966, 9.457928, 4.3647757, 7.035379, 8.104771, + 2.055648, 8.238099, -8.304486, -3.911533, -9.276176, -3.1363063, + -4.920706, -3.8736558, 4.225077, -5.9477005, -8.256241, -4.002434, + -6.894731, 9.038625, 5.444038, 3.0952396, 7.7615314, 6.33773, + -6.396027, 9.132701, 1.1320819, 3.3097246, 5.6325603, -8.424307, + -3.128758, -8.842619, 7.5920424, 3.3562922, -3.1874518, -9.322064, + -3.749167, -4.4526134, 5.332696, 2.8084404, 6.506545, -0.76617354, + -8.392743, 3.0715528, 5.952484, -0.06451188, 5.5924335, 0.49651757, + -0.5612018, -2.0961676, -8.642392, -7.469147, -9.803516, 3.5697825, + -2.8683054, 0.35975072, 7.5212173, -1.4749266, 8.215104, 4.5043173, + 1.4713941, -8.186203, -6.937986, -8.923551, 8.382937, 2.4638684, + 3.4445207, -8.290445, 10.252921, 7.056321, -5.9117565, -7.035108, + -2.533477, 9.178236, 5.7252293, 1.2743219, -6.1906013, -7.029902, + -8.872952, 7.7958965, 1.2363948, 4.429138, -9.471793, 9.742913, + 6.8512707, -4.0345078, -6.809919, -7.823049, 5.065392, 5.290247, + 0.63523513, 5.9107647, 0.014284824, -1.3104668, -1.1493326, -9.217338, + -7.828087, -8.747226, 2.2575328, -3.4773304, -0.9254577, 8.436293, + -2.2592869, 8.529249, 5.269599, 2.1882794, -6.3106236, -6.439369, + -9.418624, 6.931396, 2.5454059, 4.588711, -9.6029415, 9.480327, + 7.543218, -6.167318, -5.9805326, 6.1149793, 6.8459077, -2.110969, + -8.474929, -5.554602, -1.2771024, 6.1582346, 7.0115905, -9.565679, + 1.2832972, -1.1145235, -4.522884, -8.335326, -3.0255427, 8.9668665, + -3.6718702, 9.315019, 4.78526, 2.1632748, -7.773351, -7.6368494, + -8.101121, 7.2958345, 2.4993508, 4.1812744, -9.567481, 10.054996, + 6.2876215, -5.685933, -6.6870933, -5.7954, -1.6725105, 4.310963, + -6.253503, -7.3369474, -3.4563577, -6.778474, 8.723291, 5.9888663, + 3.0669887, 6.9559736, 6.7690597, -6.44576, 7.557287, 0.802044, + -6.661697, -3.9807005, 1.4231863, -2.262114, -5.1534, 1.8285384, + -6.483258, -5.2206492, -4.655272, -1.1944115, 6.089738, -5.1663413, + -0.039524186, 1.5602927, -8.263261, 4.313824, 4.984086, -7.3731494, + -3.3767862, -7.16793, 6.8706536, 2.1437478, -2.6608648, -8.994859, + -4.06371, -2.7033703, 5.710302, 3.2024324, 7.285916, -0.9131274, + 4.086566, 4.4806833, -8.50511, -3.1105642, -5.318451, 7.735624, + 2.179424, -4.1213174, -10.045034, -4.498007, -3.4158742, 5.5912538, + 3.536332, 7.904621, -0.7819189, -6.189343, 4.868824, 4.6346517, + 1.0282526, 4.9735303, 0.955695, -0.5392574, -1.3690464, -9.567587, + -7.2633843, -9.444222, 1.497462, -3.8886628, -0.5090997, 8.207035, + 3.4083495, -6.095262, -8.868845, 8.259253, 10.173641, 5.4926534, + -2.7677965, -8.245627, 4.798068, -0.7216982, -7.6551323, -0.46003926, + -9.550865, 8.48623, -4.770391, 1.9849887, -6.0645876, -8.503481, + 8.312074, 9.535605, 5.473759, -4.350741, -7.9140277, 3.8927314, + -2.0294127, -6.8214455, 0.3039426, -9.805539, 7.110099, -4.9258337, + 3.173442, -2.8613362, -0.12305979, 1.8550614, -6.1555634, 9.279399, + 7.253287, 8.051031, 7.648967, 1.0952977, 9.104208, -7.0477176, + -4.911397, -8.23869, -3.6317277, 6.833405, 8.811196, -3.8811748, + -8.244341, -5.9863076, -1.0069988, 6.5192394, 7.1605563, -8.954353, + 0.498405, -2.2388403, -6.03448, -7.1252975, -2.5184836, 9.24437, + 3.5908628, -4.464687, 1.5376401, 2.3281648, -6.0278716, 10.504975, + 5.104253, 8.231999, 7.9251943, 2.2624583, 8.161694, -7.853712, + -5.86587, -9.794269, -3.1302383, 5.3768597, 7.6174517, -3.266603, + -8.043941, -6.6116776, -1.7887288, 5.6111846, 7.401607, -9.637772, + -0.9461962, -1.1204709, -6.3363743, -6.5112653, -3.2818398, 7.9857187, + 2.6888497, -2.728406, 0.20310779, 0.5383021, -6.632832, 9.894585, + 5.3922334, 8.340812, 9.062293, 1.3586807, 8.462381, -7.7735357, + -7.222277, -8.759272, -4.231969, -1.7831964, -4.8443604, 5.2202754, + -2.9694865, -6.038544, 1.1015611, -7.867026, 6.158292, -7.5891347, + 9.073615, 6.1877747, -6.329059, -8.662321, 6.053622, 3.548802, + 1.2545781, -6.4568815, -7.9937572, 8.099265, 9.441938, 6.8244877, + -3.8989751, -6.038676, 2.5166411, -0.45584014, -7.6801963, 0.44388232, + -9.003315, 7.6731987, -4.664103, 2.9124088, -3.823679, 0.5715246, + 1.60012, -5.9340825, 9.258082, 5.3639193, 9.147089, 8.787346, + 2.0464196, 8.109093, -8.925157, -7.0919867, -8.6290655, -3.0888085, + -3.1115754, 0.23376566, 4.0220566, -3.022098, 9.498671, 9.223041, + -5.553088, 1.122992, -5.023442, -3.800358, -9.333099, 3.521869, + 0.2921857, -9.222359, -4.600466, -3.0540109, 9.151378, 3.9550178, + 2.2589467, -8.071436, -6.159701, -8.507509, 7.5027437, 2.7101839, + 5.327284, -8.878251, 8.109585, 5.753149, -6.190591, -6.345237, + 5.7074914, 8.182782, -3.5225537, -7.4809294, -6.1544867, -1.2058327, + 6.200589, 7.4123263, -10.368027, -0.19459817, -0.8300905, -6.293927, + -8.287121, -3.2838035, 8.317871, -7.1759152, 3.7935057, 5.837164, + 2.2044828, 5.9661665, -0.27485988, 0.55343676, -2.516669, -9.585263, + -8.444478, -8.885387, 4.5291348, -3.3630052, -1.2223843, 7.8984685, + -3.2449925, -4.3616467, 6.191565, -1.5569112, -4.3569446, 0.2923821, + -7.984527, 6.8068733, -8.908816, 9.768419, 6.1139574, -6.3646674, + -9.921708, 6.297631, 4.615474, -2.8209207, 0.951452, 4.5492587, + -1.9455223, 9.370822, 7.940664, -5.014959, -0.74886584, -4.4947352, + -5.172884, -9.596402, 1.77365, -1.6107184, -8.480269, -2.8728454, + -3.8775504, 0.5036239, 3.911658, -2.5521069, 9.911842, 8.438393, + -5.0094323, -2.3856826, -3.8093004, -4.51376, -9.950676, 2.4122903, + 0.87446874, -9.3036375, -5.088441, -6.300146, 3.2892234, 5.3445845, + 1.2739036, 3.4519038, -0.31120998, 0.76854587, -1.201163, -8.859153, + -8.113416, -8.8726635, 2.245678, -4.7002077, -0.73699605, 7.127852, + -6.376377, -3.0489485, 0.17501748, -1.391076, -4.1348014, 2.8309596, + -8.782946, -4.581797, -2.5248644, -0.038545046, 5.3591876, -7.3201113, + 0.7184868, 1.4035378, -9.903758, -6.182672, -4.4415336, 0.2717909, + -1.9183177, -3.4222121, 2.251976, -5.879289, -4.1995697, -3.1686478, + -1.9382004, 4.4413214, -7.1154194, 0.47167742, 2.2043989, -10.177825, + 3.933674, -2.786138, -0.03869759, 0.73994607, -7.0283275, 9.2492695, + 5.4770436, 9.251734, 8.659676, 1.4343324, 7.060357, -8.245021, + -5.8748665, -8.920862, -3.7220647, -2.535542, 9.786597, 4.719838, + 2.0783808, -7.1341558, -6.9199715, -8.622867, 6.1264052, 1.0785705, + 4.6817365, -9.468704, 9.269409, 6.6617565, -5.5099106, -6.7413325, + 0.5295963, -5.988908, -9.278706, 7.5647693, 9.414186, 6.72317, + -3.9931645, -8.367051, 3.573107, -1.4563581, -8.502869, -0.5967383, + -8.947333, 8.411583, -4.7067585, -6.4694366, -4.0592566, -0.02747621, + -1.4848416, -5.25945, 1.8932502, -7.4095354, -4.336433, -2.8418114, + -0.92183524, 6.0391283, -5.3943624, -0.1701469, 1.0060508, -9.800423, + -2.4518857, 10.634547, 3.3327932, 2.4535518, -8.008529, -7.210462, + -8.076062, 7.368519, 1.2678789, 3.660739, -9.112592, 8.88694, + 6.800374, -5.7213173, -6.819621, 5.7821717, 9.293605, -3.4206612, + -8.529012, -5.1829605, -1.7259437, 6.664143, 7.1846123, -9.808966, + -0.4231693, -0.9587371, -6.367133, -8.378828, -2.9905443, 9.9801855, + -2.6846278, -6.0076795, 6.8362236, -1.8461293, -4.7950225, 1.1619636, + -8.279217, 6.363989, -8.784355, 9.204046, 4.912641, -6.3012147, + -9.621855, 5.390714, 3.8591661, 1.610099, -6.3241105, -7.8378124, + 8.559829, 7.6394277, 5.8793926, -3.268293, -7.6702166, 3.984391, + -1.3929454, -8.454556, 0.26424423, -9.896227, 9.715276, -4.4250455, + -4.9943314, -1.4973893, 4.400318, -4.9877715, -7.3144164, -4.32594, + -7.5659194, 8.547333, 4.6053386, 2.9039073, 7.745804, 7.246387, + -6.404395, 8.137119, 0.18394317, -3.4157526, 8.779237, 5.8081937, + 1.7914557, -7.931827, -7.0521297, -9.029234, 5.4357023, 1.9842938, + 3.9997973, -9.1009655, 10.692467, 7.4374485, -5.94144, -7.1380687, + -7.3939314, -3.3897498, 0.20379254, -2.1521482, -4.490426, 3.1170623, + -7.5848575, -3.9061894, -3.1844325, -0.34805503, 6.183375, -4.712498, + 0.161794, 2.3163497, -9.002344, 3.7374039, 5.5830865, -8.078554, + -3.0400338, -7.2071133, 6.7649727, 0.985677, -3.6787703, -8.68457, + -3.9734416, -4.307356, 3.3211694, 2.3912873, 8.372614, 0.3236367, + -6.8252783, 3.2713268, 5.3724976, 1.7412783, 5.8525457, -0.5645517, + 2.494533, -2.343139, -10.249849, -7.6786547, -7.889654, 2.1428719, + -3.8989604, 0.9255194, 8.138826, 2.387978, -5.8688974, -8.088347, + 8.177597, 9.886751, 6.122665, -3.8567128, -7.99532, 3.5794904, + -0.36275488, -7.617838, -0.88014406, -9.587701, 8.311494, -3.96395, + -5.7719502, -5.0465727, -0.24244906, -2.1085618, -3.510202, 3.4344873, + -7.2832375, -4.2752824, -2.6237266, -0.065285504, 5.054372, -5.839666, + 0.9673271, 2.1990573, -8.938285, 3.0680313, -6.7406898, -8.042734, + 10.122257, 10.230826, 5.4034476, -4.085298, -8.288173, 4.0271387, + -0.71650267, -8.146461, -0.048974838, -10.726179, 9.195769, -5.1830626, + 3.993193, 4.9056664, -8.669283, -5.351445, -8.173521, 6.6489983, + 2.8389108, -3.945908, -8.879413, -2.70076, -2.8002875, 5.2237134, + 2.4012387, 8.124377, -0.71942997, 5.797979, 8.451765, -3.1569724, + -7.939113, -4.9629064, -3.0490649, 6.432976, 7.8170915, -10.443962, + -0.37049094, -2.9582937, -4.4449167, -8.1068, -3.0789664, 9.280936, + -3.3179684, 0.70453, 4.369247, -2.8519983, 8.067081, 8.606615, + -3.9701643, 0.07591838, -4.2081995, -3.520472, -10.053343, 2.0335429, + 0.15001135, -9.279389, -4.356537, -6.538746, -3.427287, 0.261455, + -0.5399124, -3.9166677, 2.1619463, -6.896721, -5.2567205, -3.4615004, + -1.7143478, 5.8035793, -4.7937636, 1.8465989, 2.2949271, -8.720401, + 6.1536927, 7.476487, -3.3591337, -6.50047, -4.727347, -1.0835514, + 7.080992, 6.954867, -10.2167425, -0.3085035, -1.7394806, -5.853248, + -6.7569003, -3.5804229, 8.2962885, 1.8387364, -6.510319, -8.95315, + 7.572491, 9.040798, 5.9540133, -3.4641619, -8.535297, 4.8597326, + -2.5350986, -6.641418, -0.25348508, -8.71052, 8.2422695, -4.0267115, + -3.6491017, -5.4981084, 6.589515, -3.6566806, -4.428404, 0.10165893, + -7.729163, 6.6411552, -8.335751, 9.730973, 6.06017, -5.6892605, + -8.876964, 5.987327, 3.8364024, -2.6069791, -3.1785936, 7.8584776, + -3.472479, -3.9913135, 1.3784194, -7.5997505, 4.997061, -8.517596, + 9.616747, 5.13986, -5.7160645, -10.415069, 5.5028305, 4.213505, + 5.241862, 5.0386086, -9.830211, -1.3995483, -8.380678, 6.5207424, + 3.2385666, -3.651182, -8.773206, -3.4424005, -2.7378254, 4.358701, + 3.815116, 6.249195, -0.023850432, -7.123532, -3.5836127, -0.15333816, + -0.97224075, -4.8184977, 1.9449011, -7.4166856, -3.4740353, -2.029845, + -1.7506025, 5.741973, -6.50323, -0.59626466, 1.6963794, -9.28693, + -3.0399003, -3.4655375, 6.2951245, -2.7745023, -4.4256015, 0.39209762, + -6.492819, 6.13206, -8.842573, 8.824526, 4.819379, -7.1746526, + -9.881001, 5.471563, 3.9512546, -3.4712744, 0.09602489, 2.0221164, + -3.7386568, 9.978097, 10.662385, -4.3324795, 0.17151284, -3.9973664, + -3.1253262, -7.7584934, 1.7804968, -1.3464102, -10.439157, -3.501754, + -3.3052764, -1.3656846, 6.4531245, -4.843668, -8.979692, -4.472211, + -6.363669, 8.9002075, 5.7582684, 1.6110799, 9.730644, 5.9746366, + -6.496616, 7.930514, 0.61693484, -1.6678715, -4.961596, 6.583269, + -2.9299457, -5.271394, 0.04676263, -6.5040593, 6.323234, -7.773953, + 9.964999, 5.5449886, -7.233894, -10.0788145, 6.2900596, 5.504322, + 2.2627058, -3.2035701, 0.56909966, 1.4473436, -7.6278443, 9.609736, + 4.671221, 8.511852, 8.270602, 2.021765, 7.841407, -8.225759, + -7.1524177, -8.290267, -3.637092, 1.6055322, -6.4472523, -9.019311, + 9.107693, 10.369032, 6.5918713, -3.5516987, -8.3477745, 2.6458209, + -1.3428779, -6.7146096, -1.1654793, -10.050792, 8.274796, -5.5136585, + 3.502721, -3.412777, 0.6050357, 0.5792995, -6.6626415, 8.552426, + 6.751999, 8.799394, 7.73915, 1.3078451, 10.492445, -8.98148, + -6.380536, -8.804368, -3.0732443, -3.7702827, -0.1114695, 3.2487042, + -2.923425, 8.830721, 9.257804, -4.94533, -0.4899621, -4.241793, + -4.4647846, -8.695369, 2.0873861, 0.63087165, -8.560356, -4.026999, + -4.88389, -0.88496184, 5.2674894, -6.462822, -7.444053, -4.8682423, + -5.8984337, 8.530783, 6.9856153, 3.462413, 7.730312, 6.429416, + -5.972759, 6.4415026, 0.869676, 2.5730634, -7.184892, -6.9593353, + 9.1630535, 10.205414, 6.061747, -3.534373, -7.4589295, 4.537397, + -0.45679232, -6.9486976, -0.3170225, -9.712452, 8.419233, -4.171211, + 3.602609, -3.9889023, -0.31950787, 0.84786475, -6.086578, 8.932712, + 5.3376584, 8.132355, 8.680018, 1.7518805, 9.454413, -7.1600266, + -6.137075, -9.801369, -4.9535217, -3.5577536, 1.2482433, 3.2518733, + -4.406122, 8.449739, 6.9737124, -3.4858916, 0.09514316, -4.6296844, + -3.9863534, -9.129727, 2.62594, 0.90025246, -9.173369, -5.0429583, + -2.7686276, 9.554475, 2.645899, 2.7773056, -8.097426, -7.133818, + -9.622097, 6.417246, 2.834879, 3.8340607, -9.3457575, 9.365353, + 6.9827814, -5.6994424, -7.2615952, -1.2844939, 8.143581, 4.154845, + 1.4702846, -6.25318, -7.0865746, -7.964908, 6.8520794, 2.217596, + 3.5767086, -8.086706, 8.566878, 6.8657274, -5.309574, -6.073841, + -2.8616307, 7.9288216, 4.687873, 1.229557, -6.5481124, -7.5237064, + -7.7533736, 6.7752457, 1.7968571, 4.7309136, -10.449915, 9.557419, + 7.563853, -6.878456, -6.2342567, -5.263654, -2.8599713, 4.97467, + -5.637753, -8.250962, -4.6414886, -6.7172327, 8.360587, 5.930358, + 2.7243288, 7.4575777, 6.606263, -6.353049, 7.6062603, 0.66027963, + 4.7961426, 7.690967, -5.031048, -8.409075, -6.5058017, -1.1889321, + 6.360673, 7.4266853, -9.934143, -0.7610624, -1.292315, -4.2122865, + -7.3162436, -3.5458438, 7.858547, 1.0267531, -3.5704198, 0.605455, + -0.24926455, -6.9878607, 11.320345, 5.288729, 9.30165, 7.4410853, + 0.49478754, 8.318304, -8.416073, -6.3602576, -9.175703, -3.3084056, + -2.558006, -2.5128856, 7.081894, -1.2064323, -3.404506, 1.0231831, + -6.9705305, 6.0183334, -9.7254505, 9.750372, 6.2923675, -6.4454346, + -9.601191, 6.905342, 3.5003705, 1.3220756, -6.8694468, -8.510462, + 8.946285, 9.440392, 5.6988664, -3.087522, -8.869879, 4.025953, + -0.36962637, -7.2225995, -0.23822875, -9.682037, 8.91167, -5.8204827, + -3.1857746, -0.49799952, 4.1263027, -2.2091746, 9.28549, 9.634734, + -5.6361666, -1.2196128, -3.592513, -3.082383, -9.959493, 3.0468225, + 0.08397685, -9.905409, -5.2191243, 3.3589704, 4.9422135, -8.647585, + -2.9111512, -8.7201805, 8.068234, 2.3944905, -3.3557525, -8.448384, + -4.332007, -3.1768844, 4.335171, 2.1235394, 8.145668, 0.4884702, + -2.766989, -3.407097, 6.3119, -2.3753085, -5.6938148, 1.6799136, + -6.4449677, 6.1121435, -8.667847, 10.017738, 7.047049, -7.259952, + -9.342138, 5.6710963, 4.123204, -7.65744, -3.7658496, 0.49597245, + -1.9330617, -3.7139452, 2.893357, -8.335415, -4.6910143, -3.2111628, + -1.5365325, 6.2841516, -6.142203, 0.09952838, 0.44558772, -8.626199, + -2.2063112, -4.7025876, 7.4232407, -3.732645, -3.9558215, 1.6248528, + -6.6800776, 7.671229, -8.87925, 10.407852, 5.370632, -5.162302, + -9.89494, 6.0377154, 5.0513973, -3.8755324, 0.14477552, 5.1488533, + -2.0800295, 10.238906, 9.822927, -4.3019834, -0.5366874, -4.121455, + -4.996131, -9.409603, 2.67016, 0.14778876, -8.052388, -5.226062, + -5.1261826, -1.564502, 5.880732, -6.9979844, -9.24797, -4.61149, + -6.778011, 8.49243, 6.0772257, 2.9537423, 6.7969065, 6.7273407, + -5.9651823, 7.6272974, 1.9074805, -3.2817101, 9.140212, 5.61428, + 2.6159914, -7.9789777, -7.5728493, -8.179788, 6.635782, 1.865057, + 4.546488, -10.266151, 9.47196, 5.715035, -6.1741753, -6.139653, + 2.5644977, -5.1359153, -0.06633971, 1.0695713, -7.246635, 9.40267, + 6.8328443, 9.506119, 9.047026, 2.231789, 9.254742, -8.736925, + -6.531381, -11.012853, -2.6630917, -6.715858, 4.912201, 4.7518167, + 1.2862767, 5.046358, -0.6975746, 1.1234286, -2.2874522, -10.117289, + -8.614989, -10.41459, 2.8306983, -2.8998282, 0.042000093, 7.0973063, + 6.795853, 8.318878, -3.9872746, -7.766106, -5.830612, -1.3537117, + 7.4383707, 7.892561, -9.496402, -0.13007338, -1.1268231, -6.7386575, + -7.7793403, -2.8390987, 9.376489, -5.794828, -1.9871588, 4.850578, + -5.2274127, -8.847356, -4.621685, -5.770475, 8.79315, 5.769672, + 2.4924915, 8.58096, 5.9088264, -6.7510924, 7.3716826, 0.4024563, + 4.1401916, -4.4518223, -0.7311, 1.2007502, -6.875097, 9.616596, + 3.8200884, 9.764698, 8.367152, 0.90766597, 7.402341, -7.0595636, + -6.5965085, -9.679383, -5.07963, 2.1140778, -2.4438727, 0.28639102, + 1.4225165, -6.888175, 9.6073, 4.5906653, 9.106426, 7.647365, + 1.9784329, 8.926066, -9.092928, -6.559487, -8.775328, -2.0246384, + 4.370075, -3.2735786, 0.7746056, 1.0499882, -7.2703233, 9.053161, + 6.091903, 8.054125, 6.1243086, 1.7990254, 8.338254, -8.135256, + -5.5703797, -8.64913, -3.3122544, 1.5814309, -3.2441728, 0.49527693, + 1.234045, -6.8009343, 9.122573, 5.214939, 9.505115, 7.631415, + 3.4158618, 8.739088, -9.123128, -6.1703253, -9.551627, -5.029461, + -3.6056268, -0.06385605, 4.541122, -2.083822, 9.380771, 9.410325, + -6.477093, -0.3498018, -3.2790587, -4.5995955, -9.778344, 3.7856688, + 1.3269345, -8.643123, -3.6298332, 5.0939574, 8.024177, -4.063234, + -7.3582706, -6.061025, -1.99869, 4.945594, 7.333573, -9.973591, + -0.6169232, -1.5161208, -4.8388944, -7.75359, -3.0599797, 9.049512, + -3.7467897, -0.94188064, 5.185062, -5.656282, -9.530416, -3.9875932, + -7.5562263, 8.038759, 5.3288856, 2.3458004, 7.409633, 6.2649717, + -6.6889534, 8.599679, 0.6411012, -5.8547287, -0.900497, 3.3242447, + -5.7056537, -10.555997, -4.7868724, -7.1192384, 9.563363, 6.4400473, + 2.084876, 8.175386, 6.085924, -6.242302, 7.00931, 0.09383524, + -7.296083, 5.600139, 4.531546, 2.5468814, 4.743694, 0.043028474, + -0.43702954, -1.4388938, -9.221301, -7.9504547, -8.871702, 2.7975183, + -4.078571, -0.2253555, 8.718969, -4.5975637, -0.88325626, 5.3083653, + -4.941938, -8.033586, -3.2116258, -8.140287, 9.061007, 6.8510227, + 1.7309686, 6.809244, 5.477894, -6.778752, 7.513978, 0.9566668, + 2.4231822, -6.413486, -8.834956, 8.448657, 10.046736, 7.326732, + -4.2462177, -8.475075, 4.028506, -1.4475707, -7.656813, 0.4212954, + -10.648779, 9.10922, -4.773524, -5.9260097, -4.40998, 1.0940176, + -0.206463, -3.4259899, 1.7263361, -6.9571304, -5.062306, -2.27209, + -0.56317794, 4.3946476, -6.819773, 0.08649154, 1.6376896, -9.917625, + -1.7141255, -3.6948562, 7.1352415, -1.4230419, -3.9902031, 0.7443875, + -6.941467, 6.914368, -9.05455, 9.281417, 5.2286234, -7.498894, + -9.792903, 4.9889383, 4.1742883, 3.169869, -4.007922, 1.0237681, + 0.14897981, -6.8397155, 9.439343, 6.2227945, 9.141158, 8.0703745, + 2.012682, 8.717649, -8.088993, -6.8013234, -9.063199, -4.2449756, + -2.0739307, 7.9151287, 4.1308827, 1.7999066, -6.9317307, -6.445639, + -8.713937, 6.388782, 2.2884388, 4.5888615, -9.196457, 10.154743, + 7.2325983, -5.431792, -6.4126167, 6.479112, 7.6534333, -3.869274, + -8.308792, -4.9035606, -2.1021864, 6.955321, 7.360109, -9.8924885, + -0.24475123, -2.6006591, -6.011201, -7.8336973, -4.9060135, 8.720045, + -2.5705476, -5.5619273, 6.2129574, -2.4316103, -3.4068828, 0.9317122, + -6.2587776, 5.0932174, -8.819271, 9.535736, 5.3647037, -5.9668202, + -9.40592, 5.997864, 4.234467, -1.4793783, 8.86776, 4.171528, + 2.701103, -7.303558, -5.601903, -8.36378, 6.981985, 3.5324159, + 3.737451, -9.068843, 9.607702, 7.560072, -4.66016, -6.341098, + 2.9568415, -3.2362366, -0.9384816, 1.3958215, -6.865675, 9.606834, + 5.32923, 9.714269, 7.284442, 2.397324, 8.24183, -8.340963, + -6.2090406, -9.687426, -3.5032628, 2.8036015, -6.880088, -8.208478, + 10.9479685, 9.239601, 6.443262, -4.4243646, -7.919682, 4.0068507, + -1.0605605, -8.273022, 0.047991443, -8.288692, 8.500453, -4.1510096, + -3.4480505, -0.11311919, 4.0034833, -2.4063876, 10.071398, 9.482707, + -5.2302895, 0.33373588, -3.3803742, -4.037463, -9.847592, 2.0643024, + 0.717055, -9.938538, -5.8922954, -2.2345147, -3.8515575, 7.3411093, + -3.4291277, -4.7498984, -0.07172154, -6.89517, 6.510579, -9.453935, + 9.4191, 4.5018177, -6.654846, -9.503846, 5.795791, 3.9265687, + -5.809618, -1.6301879, 4.6517982, -4.6458945, -7.3376956, -3.729404, + -7.8612924, 9.647591, 7.265412, 2.6812284, 8.35526, 5.6872687, + -7.574971, 7.3189807, 1.9973555, -2.5757453, -3.3516164, 8.258137, + -2.712888, -4.706647, 0.029863171, -6.8535376, 7.2919736, -8.682125, + 8.072441, 5.91393, -5.3359065, -10.99965, 6.4327674, 4.4530053, + -4.2835584, 0.34015283, 3.9020565, -2.7601326, 8.875822, 8.207843, + -6.4304605, -0.146856, -4.2841344, -4.7763467, -8.336477, 1.58968, + 1.0453644, -7.8337345, -5.7927012, 4.768312, 5.0623603, -7.316252, + -2.9631186, -7.7430553, 5.710993, 2.329158, -2.7965007, -9.476239, + -4.3058577, -2.9414358, 3.5584636, 3.49161, 7.371754, -0.82769924, + 1.1476908, -6.9567814, -8.35341, 9.884954, 8.537631, 5.9120927, + -4.013634, -9.02361, 4.098605, -1.7037433, -7.6960087, -0.41282636, + -9.864766, 8.181477, -4.975327, -8.650614, 4.092699, 5.5283933, + 1.6364843, 5.423928, 0.2556087, -0.11161814, -0.35864583, -8.796778, + -8.783621, -10.123988, 1.995363, -3.2383015, -0.7278956, 7.9196124, + -3.6498811, -1.277383, 5.7591558, -4.5999904, -7.1765075, -5.444967, + -7.6364923, 8.031346, 5.8335967, 2.4576766, 7.1163273, 6.226958, + -6.243892, 7.345196, -0.7360393, -6.513143, -3.5044694, 0.16269608, + -0.7511915, -5.117603, 2.3255236, -5.8528724, -4.857339, -3.1471846, + -0.5188648, 5.8292265, -5.761083, 0.6271198, 2.2925963, -8.294202, + -6.8854427, 5.6113553, 4.5485725, 1.9802318, 5.3589916, -0.2148592, + -0.6209149, -1.6485323, -10.189703, -8.166869, -10.140147, 2.4139724, + -3.9971576, 0.23914227, 7.0210047, -6.8623176, 3.7225342, 4.8428764, + 2.5523992, 5.3141136, 0.01593558, 0.40774956, -2.0243561, -8.355147, + -8.211562, -10.160516, 2.41269, -5.1140747, -0.2844874, 7.4736395, + -5.604532, -3.9681902, 0.9644651, -2.1113997, -5.263048, 2.8095806, + -6.946636, -4.788543, -3.2815273, -0.090795964, 4.8709307, -4.856653, + -0.34574574, 2.2951658, -9.301024, -1.2673829, -3.7335098, 6.5521564, + -2.9258928, -3.0653977, 1.2184509, -7.41098, 5.045727, -8.233275, + 10.318265, 5.0027394, -5.8218446, -10.144059, 6.180406, 2.3956714, + -5.3405147, -2.5213585, 5.813379, -5.0401125, -7.8826118, -5.4133205, + -6.8878894, 8.397876, 5.966007, 2.2368557, 7.186939, 6.668193, + -7.607595, 9.095286, 1.1255336, 3.5481706, -4.8472347, 0.023846913, + 1.2046734, -5.716476, 8.916231, 3.4626772, 9.156235, 7.0423226, + 0.54586244, 6.4548564, -7.660363, -5.9903107, -9.253414, -2.5210764, + 3.0703356, -3.0082998, 0.31103656, 0.33804205, -6.8341904, 8.706574, + 5.3119693, 9.653585, 7.33298, 2.0899327, 7.9778023, -8.412366, + -7.1373715, -9.249831, -3.628987, 3.8015141, 4.607977, -7.626828, + -3.6256306, -7.3261123, 6.8308187, 3.597894, -3.921337, -7.92848, + -3.6509526, -3.3197973, 3.2129076, 1.20911, 7.5898585, -0.38286725, + -7.032023, 4.293975, 4.464116, 1.5463665, 4.9189787, 1.1320794, + 1.5360457, -1.0263114, -8.538913, -7.7968173, -8.83561, 3.7626123, + -3.5410314, -0.0072171967, 6.958094, -1.7994857, 0.027938241, 4.0009027, + -3.659896, 8.868945, 10.580285, -5.329778, 1.288467, -4.8527875, + -5.0406184, -9.501122, 2.1466618, 0.69974154, -8.654885, -4.7184916, + 3.454109, -3.0952907, -0.15225683, 0.95801127, -7.258426, 9.882739, + 5.865866, 9.137042, 7.8976803, 2.2483406, 9.560522, -8.429716, + -5.983291, -9.855742, -4.1011763, -2.1395311, -4.839554, 5.6861243, + -2.9827437, -3.9619374, 0.008490088, -6.6151366, 5.449135, -8.847075, + 10.109217, 4.98049, -5.999384, -10.109841, 6.399786, 2.4706295, + 5.5232964, 9.032656, -5.3622355, -7.897086, -4.620704, -1.5231267, + 6.0767875, 7.305207, -10.108142, 0.23654069, -2.1301467, -4.7817717, + -6.606407, -3.3410697, 7.8876514, -3.0643032, -0.27358758, 4.1953382, + -1.7059952, 9.290492, 9.339559, -5.1341157, -1.6747315, -3.9680207, + -4.0919356, -9.621006, 1.3830408, -0.56284404, -8.435493, -3.0463033, + -5.336251, -2.6979253, 1.1803293, -1.3013769, -4.7412033, 1.6557468, + -6.8443627, -3.8642282, -1.6916441, -0.42328525, 4.651363, -5.270161, + -0.41395366, 1.5795115, -8.895851, -3.054036, 0.6136606, 5.124844, + -2.9114904, 9.776761, 9.8038645, -3.3243542, 0.046305962, -4.7133646, + -3.70964, -7.956252, 1.9655026, 0.64233756, -8.110315, -3.7151248, + -9.045556, 4.5174246, 5.2663026, 1.6146221, 5.260774, -0.42538747, + 1.8605877, -2.4798274, -8.977852, -8.244392, -9.606462, 2.5062363, + -4.2752843, 0.57127076, 9.12478, 2.0953252, -6.799844, -9.402889, + 9.229826, 8.936289, 6.6267295, -4.656859, -6.8432293, 3.0572276, + -1.0434384, -7.004934, -0.4959101, -8.715502, 7.3259797, -3.807918, + 4.2081013, -3.6776476, 0.9971473, 1.7909048, -6.066342, 8.977124, + 6.1856556, 8.790507, 8.376648, 0.45038816, 8.750372, -8.67716, + -4.923026, -8.659293, -3.3254929, 3.763426, -4.657741, 1.1352983, + 1.275648, -6.816874, 9.292622, 6.621482, 9.303462, 7.9026957, + 1.7916212, 8.491111, -8.588385, -7.5536675, -7.66593, -3.384666, + -2.525217, -4.7542768, 6.4432487, -2.0817072, -3.48921, 0.7337501, + -6.412576, 6.2943025, -8.463833, 10.372319, 5.495472, -4.5852184, + -10.896445, 5.948609, 4.0485835, -7.8423376, 4.6608386, 5.4064636, + 1.9468511, 6.323372, 0.09081407, 0.6588695, -1.299302, -9.149226, + -7.803552, -9.371842, 3.5658472, -2.6515992, -0.8838732, 8.158344, + 4.2039385, -3.9312928, 0.31762668, 0.16197652, -5.7285233, 9.520709, + 5.208637, 7.4567065, 8.907636, 1.0986236, 8.02359, -7.9793086, + -6.9179335, -10.140911, -4.980157, -3.106116, 1.6560948, 5.6230216, + -2.8500783, 8.869486, 7.943957, -3.3930764, -0.36280727, -3.187908, + -4.8220687, -8.185475, 1.7012044, -0.7806229, -9.11638, -4.7993135, + -2.000701, -5.5278935, 6.202436, -2.5142913, -5.068937, 1.9776708, + -6.32476, 4.9439454, -9.161647, 8.137694, 4.8970814, -5.4892144, + -10.179284, 6.631787, 3.071513, -7.5926504, -4.295027, -0.056319993, + -1.7956929, -4.293118, 1.9065945, -8.595633, -3.63357, -3.4236832, + -0.7111275, 7.155377, -6.6500936, -1.4865125, 1.6480885, -8.30032, + 3.54092, 5.851194, -7.5769525, -2.952939, -6.730501, 7.129283, + 3.0606718, -4.9350386, -7.0356884, -2.733533, -3.6955714, 3.2116613, + 2.9527693, 6.733507, -0.24430402, -8.197584, 3.3778021, 5.794003, + 1.4507008, 5.6984425, -0.3831038, 0.2591114, -1.7088314, -9.548452, + -7.257438, -9.136164, 3.0782871, -3.3631892, 0.7905235, 8.353035, + 4.2834597, 4.889479, -8.005233, -3.907081, -7.2872753, 7.741209, + 1.850212, -3.9562695, -8.884951, -3.5829282, -3.603332, 4.8956175, + 3.9852352, 7.388853, -1.7563275, -7.092982, -4.675233, 0.97068995, + -2.1652555, -3.7089984, 2.5608718, -8.418187, -4.6314025, -1.8368865, + -1.5654162, 5.378436, -5.6830816, 0.8330621, 1.6722142, -9.489249, + 3.4892967, -2.7155862, 0.45351714, 1.652148, -4.4535027, 9.810362, + 5.537186, 9.2956915, 7.6408505, 3.629577, 8.563535, -8.421204, + -6.665325, -8.3274, -2.8863623, -5.427958, -1.5622638, 4.734869, + -5.0960703, -7.609197, -4.708496, -6.866977, 8.916884, 5.8573074, + 2.9930995, 7.817991, 6.8317246, -6.692792, 7.1912374, 0.57154065, + 5.262226, 8.73893, -5.6140485, -7.2151227, -4.7872787, -1.7605251, + 7.2513323, 7.1704435, -9.817255, 0.4526162, 0.5788225, -4.61674, + -7.111901, -3.8866596, 8.958707, -2.813345, 8.797866, 4.7953725, + 1.6380457, -6.000598, -7.506335, -8.969138, 7.0157113, 3.0351849, + 4.29904, -8.866019, 8.358305, 6.835788, -5.130476, -6.305902, + 5.891887, 5.7640324, -3.3589296, -8.249672, -4.663495, -1.1847094, + 7.1471624, 6.4560943, -9.134088, 1.6890455, -1.1168691, -5.0045996, + -7.4839745, -3.6149647, 9.391028, 6.866224, 7.225486, -4.0732226, + -7.246834, -4.7220097, -2.3477433, 7.1236258, 7.946098, -10.517525, + 1.3339994, -2.6715803, -5.9951844, -7.2673907, -3.845193, 9.042868, + -7.8833556, 4.288839, 4.6174636, 0.90564966, 4.4335847, -0.070133045, + 1.1936426, -2.2171803, -9.927487, -7.490389, -8.522953, 1.6829754, + -3.8310297, 0.3696054, 8.07989, -2.54215, -4.3672547, 6.033971, + -2.9055083, -5.440991, 1.2955346, -5.946076, 7.998486, -8.445169, + 10.289481, 4.1984572, -4.9737725, -9.346198, 5.970475, 5.0031734, + 2.710227, -4.1143517, 0.042586546, 0.37313628, -6.5459414, 9.931254, + 4.7649717, 9.089449, 6.7052155, 1.565063, 8.206842, -7.0577483, + -6.2727046, -10.636325, -4.892616, 5.968736, 5.9554305, -8.22714, + -3.519929, -7.2828197, 6.755628, 3.3526254, -4.061783, -8.8080435, + -4.1690445, -4.1875997, 5.1110473, 3.1259706, 8.590562, -1.801614, + -3.7403152, 8.186006, 3.2124164, 1.7845849, -6.3773475, -5.8284597, + -8.786462, 8.463553, 1.0562292, 2.9690838, -9.627193, 9.667043, + 6.6259665, -7.200427, -6.4258847, -3.7747812, 1.9886752, 4.322331, + -2.4699342, 9.687282, 9.539712, -6.6325326, -0.2226969, -4.008959, + -3.4061434, -9.22889, 1.0387287, 0.35464287, -9.533102, -5.2788205, + 1.6931682, -6.5703983, -8.732127, 7.870187, 8.654362, 5.7754145, + -5.333079, -8.013312, 3.5103102, -2.367976, -7.276286, 0.4046491, + -9.153305, 7.9595604, -4.410391, 2.9368727, -4.6161427, -1.1444361, + 0.7727951, -6.2078094, 9.354939, 5.4012413, 8.820107, 8.612536, + 1.8246872, 8.035627, -8.426938, -5.6748, -8.107036, -3.933094, + 1.4842756, -7.063414, -9.23983, 9.558845, 9.94292, 6.4838047, + -3.079279, -8.871186, 4.8517175, -0.1306831, -7.0443, 1.1507975, + -10.471866, 7.8192945, -5.3391128, -7.5223713, 4.326046, 4.7041316, + 1.3972481, 4.549593, -0.7855242, 0.9067149, -2.1601439, -9.114869, + -8.8007965, -8.136038, 2.1862192, -3.869447, 0.40284312, 7.7555847, + 2.1353018, -6.36406, -8.706733, 8.408601, 9.888937, 6.32598, + -3.8953953, -8.729314, 4.597116, -0.7316582, -7.94628, 0.6048156, + -9.660529, 7.6390057, -5.3561926, 3.696573, -2.6343684, -0.5735544, + 0.9100202, -7.4346104, 9.231125, 5.328625, 9.228608, 7.9284415, + 2.3943846, 8.929893, -6.7216997, -6.30105, -9.75417, -3.3211348, + 3.7934284, 5.690039, -6.7971964, -2.2836373, -8.287619, 8.057003, + 2.2442868, -2.4199, -8.16416, -5.840553, -4.199189, 5.2531934, + 2.8573096, 7.0276256, -0.9992142, -2.1083896, 9.9938345, 5.2871222, + 2.014911, -7.332483, -6.391353, -8.562888, 7.950158, 2.4669206, + 4.8961387, -9.962975, 10.320373, 6.7871723, -4.300535, -6.845932, + -3.035015, 0.10054695, 4.084149, -2.980412, 9.972161, 10.252038, + -4.4053, 0.5903257, -3.3363104, -3.917311, -10.059761, 3.3819668, + 1.316668, -9.134141, -4.686559, 4.2775326, 5.587619, -9.168268, + -1.9287819, -8.126611, 8.052261, 2.3024378, -3.2406402, -9.075308, + -4.4915504, -4.7176657, 3.8533967, 2.5244133, 7.8925705, 0.15156402, + -4.010436, -2.279318, 5.4815326, -4.474762, -8.810509, -3.8325553, + -7.4966345, 10.305992, 6.8178735, 2.5332506, 6.8882284, 5.9936438, + -6.5065875, 9.218241, -0.07102947, 6.3312626, 8.844105, -3.2383707, + -7.7585335, -4.9934807, -1.1410967, 6.887816, 5.7978597, -10.948377, + 0.91832644, -2.7054753, -5.276767, -7.8491273, -3.945029, 9.102949, + 3.028013, -3.6841736, 1.1514215, -0.120368235, -7.6788, 8.980712, + 4.3589106, 8.492597, 8.248297, 1.3344754, 7.438706, -8.181614, + -5.4765625, -10.281936, -2.9192307, -7.356921, 5.09706, 4.750169, + 0.62652415, 4.5891986, 0.003952122, -0.842956, -1.1256717, -9.568052, + -7.0479236, -9.841759, 2.5858855, -2.9273381, 1.1396087, 7.675223, + -4.698212, -2.619177, 5.060047, -4.8374267, -8.530889, -4.8673906, + -5.9532046, 7.2786665, 5.932951, 2.6389132, 7.4403477, 6.1997886, + -5.841291, 7.8263946, 0.5292041, -3.676703, -0.49005485, 3.7664673, + -4.1798797, 10.774166, 8.592756, -3.8540742, -0.028370729, -3.587029, + -4.64535, -9.116711, 2.6466293, 0.5187672, -8.428083, -4.6849036, + 2.7026267, -3.270856, 1.8606595, 0.2286674, -6.5407424, 9.553818, + 6.0531406, 8.398296, 5.913426, 2.9094322, 8.969839, -9.450213, + -6.505641, -7.9977264, -2.479936, 4.4787364, 5.7094836, -8.507645, + -3.5215454, -9.261673, 7.5637755, 2.5877256, -3.814762, -9.862254, + -3.339536, -3.6824777, 4.981936, 4.0559835, 6.245253, -1.0454221, + -3.3528783, 0.14424507, 4.6767197, -2.494267, 9.214947, 9.411009, + -4.0438204, -0.45377094, -3.700574, -4.3525124, -8.963372, 1.7330912, + 0.13081527, -8.194949, -5.0829754, -5.847004, -4.8036866, 1.6868889, + -1.2194694, -3.0331173, 1.7239348, -5.9374795, -3.6144981, -2.285635, + -0.7147832, 5.529549, -5.166152, 0.38294068, 0.4713426, -9.853023, + -2.80314, -3.739256, 6.471953, -4.418778, -5.361087, 0.67936295, + -7.9956455, 5.754543, -8.48631, 10.761317, 5.2415776, -5.274907, + -8.889425, 7.3132453, 4.336475, -1.819207, -4.5843754, 7.384534, + -2.5867555, -4.9045286, 0.65757024, -8.163522, 5.968242, -7.730517, + 10.217442, 6.426302, -6.237706, -8.947288, 6.1739154, 5.1672564, + 3.992474, 6.385997, -8.419676, -3.3017192, -7.21863, 7.8873005, + 2.9152884, -4.102827, -9.067645, -3.7832046, -3.5252154, 5.1169453, + 1.3407185, 7.978284, -0.75868845, -8.102144, 4.08247, 4.174539, + 1.2865875, 6.292456, -0.029244112, 1.5335814, -0.5153809, -8.947203, + -7.7898912, -9.355666, 3.2628682, -3.9870498, -1.1463507, 8.495732, + -4.9349427, -1.7382121, 0.9198348, -1.4893372, -3.8012633, 2.8584168, + -7.4345903, -2.900459, -2.5117135, -0.53018016, 6.1696663, -5.711414, + 0.8719471, 1.4162141, -9.461803, -5.172819, -1.3379382, 4.793741, + -4.221129, -9.363175, -3.3273566, -7.310969, 7.3367653, 6.3289204, + 2.4898496, 6.6524854, 4.8964777, -6.2744513, 8.5342655, 1.1963123, + -4.561236, 1.1688818, 4.4174256, -2.1723742, 10.33894, 8.671297, + -5.21523, -1.3814139, -1.7841377, -4.4079, -8.5351515, 1.3245739, + 0.7510524, -7.670111, -4.4692674, 6.453337, 7.3419437, -4.1685176, + -7.4567695, -3.7720783, -0.75552493, 7.2461615, 7.0802107, -10.2811, + -0.33161741, -1.9935715, -6.9947915, -8.110136, -3.6399438, 8.735443, + 6.8431005, 7.799528, -4.5123687, -8.377505, -6.048178, -1.4277271, + 7.107523, 6.971019, -11.437731, 0.082519814, -1.7611157, -5.715288, + -8.041916, -3.0954893, 8.904493, -7.5737486, 3.3187006, 5.695824, + 1.0419805, 5.114346, -0.14710021, 0.48287198, -0.8227286, -9.077854, + -7.951658, -8.836848, 3.0087242, -4.0115004, 0.08411111, 8.047573, + -2.1157877, -3.9992015, 6.437919, -2.6568744, -3.21423, -0.6328733, + -6.891984, 7.5388503, -8.3115635, 10.89314, 5.004447, -6.0481195, + -9.866091, 4.7569146, 3.3194225, -3.0405905, 9.119562, 4.879108, + 3.2864892, -6.2143307, -7.283942, -9.467218, 7.667866, 1.098137, + 5.443473, -8.762702, 9.069774, 5.449659, -4.805507, -6.4436784, + 3.8877387, -2.6641645, 0.72104204, -0.11310558, -6.9456596, 10.317614, + 5.3842707, 8.84568, 8.427724, 2.4454255, 8.632645, -8.376218, + -6.2992105, -8.4949255, -3.1058948, 0.59912384, -6.237596, -10.444258, + 8.301745, 10.453057, 5.7606997, -4.7294407, -8.185114, 5.132195, + -2.4791276, -8.295153, 0.9517404, -8.011838, 8.114006, -5.691737, + 4.5666203, 5.496548, -7.7020545, -1.7187724, -8.162109, 7.8228955, + 3.001744, -2.6306505, -8.37975, -5.140102, -3.6051292, 3.7831283, + 2.6093254, 8.430258, -0.3420959, -1.6427262, 7.8981867, 4.2203164, + 1.9768403, -6.8467407, -7.1951556, -8.402333, 6.5761886, 1.9226346, + 4.2456584, -9.228203, 9.896327, 5.8616033, -6.827098, -5.4691267, + 4.8847914, 4.9063582, -8.759736, -2.7456627, -8.032234, 7.730428, + 3.7743092, -3.9100482, -9.894421, -5.1815715, -3.6016612, 4.127908, + 2.8966517, 7.8370733, -1.6779532, -1.4414047, -5.035737, 6.214293, + -3.1846218, -4.1440144, 1.1732963, -9.312775, 6.759084, -7.5035295, + 9.002608, 4.7642865, -6.3408637, -10.41876, 6.465977, 2.7745793, + -6.3903165, -4.929907, -0.15017323, -2.0638697, -4.03033, 2.285599, + -7.715339, -4.0333323, -3.0554392, -1.0687588, 6.8749356, -5.0682015, + -0.6250181, 2.429104, -8.503015, 5.607639, 5.404223, -6.699931, + -4.0375285, -7.1969423, 8.078638, 3.0899034, -3.5250885, -8.932142, + -3.469452, -2.9253054, 5.013855, 3.4791899, 7.031046, -0.7151412, + 2.901402, -4.4316077, 0.16208515, 0.22935644, -6.269433, 8.996756, + 4.45683, 9.668581, 7.5481763, 1.0703038, 8.319703, -8.18229, + -7.3028693, -8.863301, -4.2264037, 3.7514596, -2.0897253, 1.9309268, + 0.45350486, -5.1661916, 9.65991, 5.8520236, 7.605389, 7.777277, + 1.3890231, 9.017126, -7.4803934, -7.532483, -9.110879, -2.7080903, + 2.921823, -6.2629356, -7.75661, 9.3432865, 9.2441, 7.7586513, + -3.2853987, -7.6449366, 2.7912474, -2.0987654, -7.3543344, 0.0054030404, + -9.742115, 8.285096, -3.7123616, -7.207385, 4.7205715, 5.1331143, + 0.41564643, 4.941891, 0.682556, 0.115416594, -1.3487873, -10.244573, + -7.606563, -9.691795, 3.4609072, -3.17139, -0.17558034, 8.062665, + 3.8549154, -3.64575, 1.208214, 0.08202293, -5.9753456, 8.572496, + 4.7227993, 8.348328, 7.237105, 1.5744025, 8.28758, -7.6441417, + -6.305154, -10.205392, -2.6953459, -3.680438, -4.737711, 8.076828, + -3.9463887, -5.768685, -0.19550517, -6.552664, 6.831283, -8.8678, + 10.215987, 6.418074, -4.774544, -10.061993, 4.6981983, 3.5625317, + 4.636084, 5.650058, -9.210613, -2.324559, -7.6227593, 6.061073, + 1.815714, -3.7349296, -8.779834, -2.4578583, -3.3296137, 4.0035834, + 2.905591, 7.497793, -0.32837072, 4.343629, 5.426969, -8.711357, + -3.1507385, -8.164997, 7.589452, 3.3833866, -2.562268, -9.608429, + -2.8779113, -3.7190444, 5.0126367, 2.1167986, 7.843641, -0.33609527, + 5.8978233, 6.9067116, -3.7806575, -7.9640718, -4.7071404, -1.2412709, + 7.4889135, 8.052854, -10.180504, -1.0416443, -0.68187726, -4.606274, + -8.559041, -2.1912286, 9.125676, -2.564449, -0.4077612, 3.729151, + -1.4930987, 9.25552, 7.2783594, -5.106432, 0.03942779, -5.814413, + -3.369435, -9.76186, 2.4212809, -0.10460661, -9.872271, -5.1764264, + 3.3377721, -2.704967, 0.66857433, 0.6728477, -6.6530495, 9.272796, + 6.6483746, 8.661669, 7.882691, 1.62038, 9.206773, -6.858264, + -5.7649136, -9.037513, -3.4676454, -3.6506896, 0.6573961, 4.724859, + -3.052057, 10.370214, 9.905973, -4.6114883, 0.052524507, -3.7590492, + -3.4722543, -8.405755, 3.1257493, 0.08250925, -8.581948, -3.4865882, + -5.772144, -3.1400251, 5.6200085, -5.0186934, -8.133438, -3.292921, + -7.2410965, 7.592173, 6.1133866, 2.424825, 6.839605, 6.017547, + -6.6967225, 6.565976, 0.47802114, -6.48091, 3.6072001, 3.9498942, + 1.6581919, 5.6619124, -0.82999116, -0.61616766, -0.37300193, -8.50174, + -9.583391, -9.692172, 3.8931427, -4.046124, -0.17201474, 7.9533978, + -8.619978, 4.5182357, 4.657494, 1.9777148, 5.5770326, 0.30064544, + 1.4421412, -1.6659772, -9.893758, -7.23198, -9.014757, 2.597077, + -2.73886, 0.022842806, 8.174271, -2.1537125, 9.391093, 5.390634, + 1.7177027, -7.467074, -7.611476, -10.214777, 8.762868, 1.2500544, + 4.006574, -9.78208, 9.613381, 7.2198687, -5.1508865, -6.771655, + 4.904454, 5.1922736, -8.712234, -3.687767, -7.2860403, 6.8081403, + 0.95645076, -3.6419196, -8.042028, -4.051204, -2.2797441, 4.892401, + 2.98828, 7.654376, -0.60350186, 4.346703, 6.0450864, -7.903797, + -3.493229, -7.810131, 7.4589167, 2.2748578, -2.9725246, -8.531999, + -2.4975607, -4.5675287, 4.506418, 2.1151977, 8.16713, -1.6877218, + -1.7230362, -3.299179, 6.5165877, -2.410716, -4.7903905, 2.5705807, + -5.792972, 6.052256, -8.238377, 10.689247, 5.341898, -6.4853234, + -9.277765, 6.364136, 4.265243, 7.2072506, 7.8140974, -4.0175314, + -7.677814, -4.5424404, -1.576965, 5.691887, 6.136081, -10.715865, + 0.8200201, -1.8762171, -5.9831085, -8.103869, -3.1881645, 8.690576, + 5.15829, 6.6037273, -8.244169, -3.5921094, -7.7693434, 6.479102, + 2.9159613, -4.327943, -8.938923, -4.48339, -3.4075563, 4.3356843, + 2.874883, 7.7599, -1.2463628, 3.1838675, -3.9989047, 0.18408673, + -0.1492555, -6.1179323, 9.363459, 6.024409, 8.855445, 7.7826543, + 1.3481644, 8.487992, -7.7133837, -6.88068, -9.034223, -3.3302634, + 2.471361, -6.93737, -8.826766, 8.28474, 9.288136, 5.6002464, + -4.687557, -7.8654947, 3.8335783, -0.64893854, -7.8610234, 0.18917519, + -8.926671, 8.497749, -5.402358, -7.2587376, 4.354445, 5.6607094, + 0.8760706, 4.1080756, -0.4393458, 0.7394499, -0.738405, -10.311899, + -7.123229, -9.824927, 2.981923, -4.069806, 0.29893327, 8.775643, + 3.3072035, -4.102232, 2.1789277, 0.9062795, -7.2858787, 9.297767, + 5.8662076, 9.961333, 7.48393, 0.8503, 9.009271, -9.196569, + -6.3856516, -9.275788, -3.542137, -5.1419396, -3.1650748, 0.62857354, + -0.70218223, -4.898184, 2.5156069, -5.9436083, -4.309739, -3.2661068, + -1.3350625, 4.940776, -6.5558577, 0.025333099, 0.8643945, -9.060059, + -3.7638009, 1.3006603, 2.930648, -1.6828228, 9.258093, 8.444938, + -5.1375, -0.56084764, -3.6738598, -4.7568827, -10.60041, 2.036893, + -0.8960011, -8.827401, -5.258062, -2.915564, 9.426291, 5.808812, + 2.2494397, -7.7167454, -6.5688877, -8.000686, 6.896675, 1.9284883, + 4.1717334, -10.137739, 9.851994, 6.564189, -5.459545, -6.984745, + 3.7925048, 4.6633215, -8.126076, -2.4366872, -7.7790375, 7.80821, + 1.6440209, -3.6311939, -7.575319, -3.732528, -3.4079149, 6.206286, + 1.7716099, 8.301756, 0.6090889, 4.666259, -2.889, -0.14395317, + 1.1249006, -6.0106854, 10.225452, 4.929633, 9.554454, 7.5130134, + 1.0228959, 8.944381, -7.326619, -4.2688065, -9.935262, -3.0041497, + 5.554488, 5.440729, -8.29724, -2.2636664, -8.1900215, 7.299905, + 2.5538466, -4.0512805, -7.1064873, -4.765459, -4.4050064, 5.512082, + 3.2504358, 7.0260797, -0.13059919, -4.271671, -0.109247826, 4.463972, + -2.07052, 10.289975, 8.72589, -4.547148, -0.38130563, -4.4063926, + -3.460941, -9.646949, 2.38603, 0.16248609, -9.719953, -3.7508056, + 5.3057723, 9.361436, -3.9695253, -7.33968, -4.902846, -1.5555608, + 6.785052, 7.386685, -10.853305, -0.01764484, -2.0805655, -5.8810654, + -8.515495, -2.459193, 9.9795885, -8.114333, 4.52152, 4.6586986, + 2.4480875, 6.1383495, 0.4417636, 0.37089536, -0.3891831, -9.644221, + -7.8640547, -9.252434, 3.2194843, -3.2670448, -0.16117387, 7.778234, + -2.2840092, 8.546623, 5.3343086, 1.8506979, -7.408649, -6.504553, + -9.467256, 7.34325, 2.0159168, 4.9215784, -9.2560215, 9.380678, + 7.221289, -4.7800727, -5.9730334, 7.4766254, 9.066331, -3.3312054, + -8.385968, -6.358288, -1.7290114, 6.8875446, 8.493264, -9.568745, + 1.033052, -1.8234951, -5.1219053, -7.026343, -4.6334124, 8.568787, + -2.4737391, -4.7308645, 6.7816086, -3.2560906, -4.59976, 0.6174511, + -7.62071, 6.904139, -8.186233, 9.913178, 6.0108953, -6.2107353, + -10.4315, 5.8873916, 4.138395, -4.958099, -3.912568, 1.2031528, + -0.42206648, -4.695156, 1.8973438, -6.3485107, -2.977597, -2.2787466, + -1.4944704, 7.094462, -6.378204, 0.05009232, 2.0879278, -7.9830794, + -5.429115, -1.8087174, 3.443089, -6.1949654, -8.899338, -3.3597188, + -7.345244, 8.720281, 6.3209877, 3.5766168, 8.313016, 6.0331893, + -6.601438, 7.386497, 0.6181006, -8.187921, 4.349035, 5.5312696, + 1.3723242, 5.739623, 0.17953525, -0.7856711, -1.0033705, -9.961328, + -8.609259, -10.144532, 3.0316873, -3.8686829, -1.0059643, 8.485956, + -6.345006, -4.187118, 1.2820076, -0.6978311, -4.7164316, 2.5219946, + -7.8902826, -5.12284, -3.1114652, -0.27492487, 6.3707066, -5.6473646, + 0.7922558, 2.2096162, -9.520029, 2.888621, -7.4256835, -8.498906, + 8.386103, 9.700013, 6.1441994, -5.0240536, -7.752068, 3.280116, + -0.58014745, -7.558307, 0.1803329, -9.982528, 7.7738757, -5.1454473, + 3.0543482, -6.867554, -9.470557, 9.221004, 9.373329, 6.4169154, + -3.7736204, -7.692189, 4.6977744, -0.7992779, -8.293994, 0.85733217, + -8.163799, 10.392848, -5.610846, -3.872193, -0.740111, 4.4266324, + -1.9697429, 10.566829, 9.462566, -5.50089, -1.2429972, -3.253267, + -5.5605836, -9.500684, 2.034272, 0.0049618683, -8.945363, -4.3303676, + -0.9777084, -3.3959746, 5.956042, -2.7618248, -4.8576555, 1.2843829, + -6.8247375, 6.6121335, -8.276644, 11.792523, 4.725349, -7.223109, + -10.164721, 5.211637, 3.0924232, -1.6278131, -4.388016, 7.4943976, + -2.8757637, -4.9888926, 0.7044064, -8.254395, 5.2539263, -7.828276, + 10.34869, 5.6989985, -7.2304406, -10.14044, 5.451729, 4.96072, + 2.7891183, -4.167649, 0.77685016, 1.6579223, -6.588133, 10.0272665, + 5.5890923, 8.702979, 7.748578, 2.4806275, 8.665389, -6.637072, + -6.6769, -8.732783, -3.8638341, -5.5774817, -0.70153505, 5.6642966, + -5.059678, -7.5952415, -5.6190104, -6.363878, 7.676501, 6.1573286, + 2.44988, 7.8924274, 6.2331724, -5.327017, 7.429852, 1.2832249, + 2.3701262, -7.01407, -8.379835, 8.656347, 8.826421, 5.3598933, + -5.1340046, -8.319505, 3.7952979, -1.2645867, -7.8504124, -0.75848407, + -8.886457, 7.2644157, -4.281181, -1.9889052, -4.8167295, 6.5223017, + -3.122967, -3.8163774, 1.6377031, -6.9833784, 5.8064218, -8.537923, + 9.751458, 4.8831944, -5.620436, -9.567528, 7.3875375, 5.0158916, + 6.041892, 8.259725, -3.9294024, -8.395762, -5.0143604, -1.5589857, + 6.383793, 7.9771776, -9.940671, 0.2254698, -2.0715346, -5.2563257, + -7.357813, -2.617154, 8.452804, -1.8445097, 7.9748573, 2.852134, + 2.6271937, -7.8364425, -7.0374455, -9.657407, 6.0621367, 2.401324, + 4.69286, -9.991867, 7.5844674, 6.266482, -5.478955, -7.398739, + -1.4619666, 9.4723425, 4.60097, 2.1691477, -7.6674695, -5.168083, + -8.747873, 7.4000993, 2.5303369, 4.498158, -9.431591, 8.844865, + 6.978881, -4.4358006, -5.4217067, -4.659544, -1.0139742, 5.884157, + -5.5130477, -8.011086, -4.4731374, -7.421725, 8.405308, 6.109013, + 1.5049684, 8.031445, 4.136314, -4.368227, 8.902495, 0.60413873, + -6.6470423, -3.9147856, 0.91597337, -2.371798, -5.782744, 1.8516821, + -8.064622, -4.512805, -2.7762094, -1.1958742, 6.7202463, -5.777803, + 0.4950208, 2.2838364, -9.868175, -5.5723953, -1.5259774, 5.5945134, + -5.324155, -7.3378105, -3.8832247, -6.1360493, 8.6874485, 6.6353726, + 2.1103282, 7.108333, 6.317996, -6.029129, 8.206509, 1.5571198, + -7.598114, 4.902557, 6.3447857, 1.7360098, 5.3611236, 0.84004647, + -1.0797285, -2.4447439, -9.014474, -7.8322954, -8.9475565, 2.7732935, + -3.3132184, -0.39866814, 8.55067, -1.7455846, -3.4977765, 6.9930267, + -3.3628457, -4.299323, 1.0192782, -7.8389244, 5.7748685, -8.653024, + 10.861672, 3.988377, -5.1816134, -10.545315, 5.348773, 4.963106, + -5.9096785, -4.296035, 0.3811736, -1.3324562, -4.8769484, 2.755635, + -7.569372, -4.3171268, -3.3688078, -2.6722338, 5.5698, -4.3176937, + 0.8339118, 1.8348091, -9.255015, -4.466525, -0.52820647, 3.2409153, + -2.3106816, 8.45154, 9.04042, -4.5315514, 0.23663145, -4.252325, + -4.1695433, -9.18726, 2.034318, -0.09400384, -7.405626, -3.860553, + -5.8544736, -2.8740828, 0.08909136, -1.1935165, -3.8256376, 2.5674596, + -7.1569543, -3.6372294, -2.3351889, -1.744964, 6.3119283, -5.385421, + -0.24961151, 1.8748479, -8.592662, 4.3957467, 5.2138186, -8.1475, + -3.4857674, -8.435744, 6.475832, 3.8979206, -3.0107994, -8.515689, + -4.5206137, -3.059994, 4.510524, 2.9010677, 7.060621, -0.4435133, + -2.6261828, 9.212092, 4.465795, 3.0983117, -6.535945, -6.365695, + -8.3743105, 8.144955, 2.1490154, 3.2536693, -9.308529, 8.942247, + 6.278821, -5.342763, -5.4967027, -2.1468363, 8.506266, 4.7706156, + 1.4444016, -7.3076897, -7.8647723, -9.4845915, 6.3773437, 1.3391889, + 4.8990006, -10.25289, 11.240865, 6.9941754, -5.6238327, -6.964351, + -3.1995134, 1.4404083, 4.1315045, -2.6265864, 9.448324, 10.496363, + -5.2225723, -0.0756852, -2.9580288, -4.2002826, -8.46632, 1.5533906, + -0.0901243, -7.931321, -4.9005084, -3.0503044, 9.031444, 4.9884777, + 2.9889703, -6.2081375, -5.372882, -9.375471, 7.9341474, 2.1506395, + 5.6943135, -10.154119, 8.810391, 6.229278, -7.239945, -6.731529, + -5.2011466, -4.1407795, 1.3471396, -0.2961784, -3.4765995, 1.9349236, + -6.9275117, -4.174044, -3.3053544, -0.6515488, 4.8781915, -5.175149, + -0.04054334, 1.9891031, -8.87269, 7.0332804, 8.923938, -4.145877, + -7.6633925, -4.991702, -1.8397741, 6.697425, 7.328891, -10.8885, + 0.53635895, -2.4218795, -4.9004016, -8.07254, -3.3605964, 9.8187895, + 3.318915, -2.993025, 0.22196385, 0.769064, -6.5877304, 9.017363, + 5.7091365, 7.7418985, 8.793204, 1.492204, 8.942817, -9.119149, + -5.6121545, -8.625093, -3.224452, 3.142712, -3.990048, -0.84421885, + 0.2762281, -5.969255, 10.592828, 5.4343886, 9.019446, 8.563282, + 1.3903738, 8.694255, -8.748493, -5.4749656, -8.989472, -3.2844772, + 5.6892896, 4.872395, -8.034137, -3.0292802, -6.8492866, 7.9774423, + 2.613809, -3.6197107, -8.05618, -3.3275204, -3.975442, 3.6626644, + 2.5491765, 8.805044, 0.24683951, -3.5072315, -4.1418424, 7.300777, + -3.5022743, -4.5521297, 1.0602251, -6.6962633, 4.6245656, -9.129215, + 9.504933, 5.9370937, -4.276785, -10.049162, 5.324344, 4.4187346, + -5.763483, -1.563504, 5.040037, -5.492637, -7.8934984, -3.035087, + -6.599529, 9.052507, 6.3926315, 3.380347, 7.1051702, 6.826215, + -5.491249, 8.608956, 0.32474133, 1.799648, -7.5502434, -8.472886, + 8.935008, 9.662809, 5.794427, -3.0531497, -8.660299, 4.8830886, + -2.4202957, -7.254896, 0.23633967, -9.86912, 8.483484, -3.9287374, + -2.9646475, 8.673299, 4.225203, 1.3683761, -6.845662, -7.461775, + -8.649008, 7.2883563, 1.8550366, 3.526157, -9.99205, 9.9269705, + 6.999495, -6.4375067, -6.293968, -3.4943204, -0.78130114, 3.9403396, + -5.153033, -8.46001, -3.6264539, -7.2970595, 8.0062275, 5.689158, + 2.2677252, 7.9999385, 5.2466006, -6.7044287, 6.598871, 1.4918274, + 5.0877, 6.494176, -7.1873164, -0.825037, -8.3140135, 9.239023, + 2.218018, -3.7967653, -8.499883, -4.1877966, -3.2170026, 3.6680696, + 2.5840225, 8.644162, -0.5956444, -2.8312402, -4.661592, 5.9375234, + -2.3783178, -4.6442533, -0.05945016, -6.8723516, 5.0403285, -9.095171, + 8.262917, 4.448125, -5.900716, -11.264733, 5.2724266, 4.1354885, + 2.8470101, -6.1373134, -10.35913, 10.40716, 9.519337, 5.6243978, + -3.797735, -7.923225, 3.2178664, -1.0584085, -7.984466, -0.3795152, + -9.792625, 7.183538, -4.722315, -2.2580402, -5.2211423, 6.4951835, + -2.965495, -4.496866, 0.8761533, -7.128544, 5.741333, -7.618087, + 8.919103, 4.9402165, -4.079712, -10.616152, 5.3616004, 4.6512804, + -4.371715, -0.9452253, 4.659573, -4.868753, -8.989224, -2.64179, + -7.260644, 9.312214, 6.753061, 2.8893366, 6.9598317, 5.9674635, + -7.7761106, 8.008274, 1.0315756, -7.575469, 3.9002707, 4.6316395, + 1.0613387, 5.9011254, 0.2593292, -0.039219975, -2.0414073, -9.031789, + -8.347815, -9.329479, 2.8148365, -3.494437, 0.77220315, 7.2672553, + -2.0189807, 8.61134, 4.7252855, 3.7652287, -6.946869, -6.0756183, + -9.330551, 7.299031, 3.2618606, 3.7225747, -8.319596, 9.893623, + 6.255126, -5.3105326, -5.6827126, 5.5157228, 7.350775, -3.1852071, + -8.994102, -5.850257, 0.67063665, 5.6826863, 8.018074, -10.271123, + 0.5712777, -1.193731, -4.7675743, -7.7428703, -1.8554773, 8.445659, + -1.393967, 8.656435, 3.9471555, 1.8851188, -6.8406196, -6.1141753, + -10.023053, 8.394208, 1.9116948, 3.862635, -10.296783, 8.239798, + 7.2250724, -5.701895, -7.2664733, -1.6775517, -5.201638, 6.0385184, + -3.1878204, -5.9582653, 1.0890994, -7.3725066, 6.723062, -9.277874, + 9.304353, 4.390328, -6.7286897, -10.716945, 7.00641, 3.6483636, + -6.63675, -3.5559812, 0.31344596, -0.8439323, -3.74466, 1.5822508, + -6.4499354, -4.5322814, -2.1071227, -0.6214992, 6.9902477, -6.1629505, + 0.04016701, 1.8346976, -9.283217, 4.7991495, 5.471423, -8.706965, + -2.7737815, -7.343405, 7.4493012, 2.732541, -2.4421341, -8.543219, + -4.2346525, -2.8778088, 3.6357846, 1.99416, 7.9793477, -0.19422384, + -7.403685, -3.5551767, 0.89556885, -1.4046333, -3.3883698, 2.0032039, + -6.8148985, -4.870872, -2.6892498, -1.0006483, 5.8612347, -6.265193, + 0.19265795, 2.4265244, -9.376727, -3.9761724, -1.2989889, 5.677702, + -5.218225, -9.51261, -4.9362373, -6.4571614, 8.586296, 6.470298, + 3.8415716, 7.937437, 6.954662, -6.202322, 7.286129, 0.74633855, + 5.529283, 7.995379, -4.6934767, -8.504535, -4.00343, -1.1362116, + 5.837701, 7.5073624, -9.463826, 0.91103613, -1.7407892, -4.874295, + -9.029605, -3.9871123, 8.972904, 2.7123868, -5.985961, -9.690327, + 8.171903, 7.3252854, 5.6013803, -3.2380323, -7.6846952, 3.5296013, + -1.2125603, -8.041455, 0.04686942, -8.776114, 7.0552874, -4.614647, + -7.9032226, 4.996435, 5.3002543, 0.7005281, 6.227842, 0.011475163, + 0.45670477, -1.3246437, -10.241085, -8.211529, -9.368909, 2.5919437, + -2.8221805, 0.3235979, 8.749763, -6.029564, -3.3548684, 1.0231326, + -0.5288603, -3.6796045, 2.4830716, -6.4610176, -4.175672, -3.2900753, + -0.9927472, 5.1820874, -6.4791493, 0.1835257, 1.2935975, -9.286565, + -6.4765377, -3.4880037, 0.60500973, -1.7716715, -4.0184655, 2.7372847, + -8.6450815, -3.345755, -2.9081414, -0.5807574, 6.541592, -6.966696, + -0.21191993, 1.6463073, -9.619619, 4.448166, -3.3990061, 0.12143043, + 0.41258815, -6.376388, 9.820646, 5.4848104, 8.637968, 7.937406, + 1.5352983, 8.197241, -9.690205, -5.3987346, -8.886295, -4.0348125, + -7.4481773, 4.204582, 4.821544, 0.56294876, 6.2107124, -0.10252308, + 1.5331832, -1.8177173, -9.795974, -7.2712555, -10.507499, 1.8787838, + -2.9446409, -0.6489399, 6.8779936, -1.7737396, 9.788155, 5.4708, + 2.420281, -7.6797304, -5.7367077, -9.64077, 7.535368, 1.4943072, + 4.1165547, -9.358176, 9.623147, 6.944197, -4.62362, -6.0460267, + -6.5041537, -4.505428, 2.0147886, -1.4842197, -4.089174, 2.6230977, + -7.179601, -2.9705713, -3.1086178, -0.7423751, 5.1837897, -6.93054, + -0.14354959, 1.8223656, -9.371503, 1.7448856, -7.3990088, -8.103912, + 9.270087, 9.387852, 6.439107, -3.6814947, -7.147886, 4.5911503, + -0.8159959, -6.967173, 0.263382, -9.635049, 8.716003, -5.800547, + -2.810444, -5.7753897, 6.74005, -2.23146, -4.5393744, 1.8594223, + -7.674257, 5.3056464, -8.556048, 9.679924, 5.9838734, -6.5681605, + -8.931891, 7.6860704, 4.109746, 1.4493451, -7.1162224, -9.725718, + 8.626729, 9.995359, 6.528887, -3.222829, -7.681058, 2.9120917, + -1.4285026, -8.105374, 0.8349406, -10.1499815, 8.811996, -4.1993327, + 3.1261284, -3.306654, 1.0760952, 0.92013645, -6.842751, 8.149914, + 5.022422, 8.35793, 7.971487, 1.7163968, 8.919038, -8.659238, + -6.1202717, -8.266663, -3.2541158, -4.1904993, 1.1357827, 3.9571025, + -3.0927138, 8.781415, 10.086251, -3.9394133, 0.77429086, -3.6377277, + -4.100309, -10.113418, 2.0192132, -0.42512167, -10.248283, -3.6871402, + -1.6683478, 8.728633, 3.2131917, 1.2675092, -8.189181, -7.126169, + -8.825435, 8.497029, 2.2511494, 4.008081, -9.007727, 7.8504024, + 6.813783, -5.213612, -7.398511, -2.9731507, 1.7537284, 3.5783243, + -1.4675912, 9.051097, 8.652566, -4.757014, 0.44610742, -3.3442087, + -4.9764237, -8.958083, 1.7113985, -0.9886651, -9.620541, -4.952701, + 2.7505887, -5.415354, -9.2625885, 9.731504, 7.7938666, 5.3320146, + -4.5788693, -8.993314, 2.5761487, -0.90785086, -7.7090826, 0.16912198, + -8.828898, 8.37234, -4.363966, -1.3314515, -3.8149195, 5.8212833, + -3.3365865, -3.7110338, -1.0449071, -7.2861347, 5.042358, -8.842575, + 9.528564, 5.194124, -6.412269, -10.657558, 7.9135666, 5.4443703, + 5.641363, 8.416695, -4.6061773, -7.361384, -4.194317, -1.0612187, + 6.806824, 7.8236537, -8.664162, 1.0618718, -1.3440112, -4.92512, + -8.222847, -2.704291, 8.1543045, -6.660939, -3.7290404, 0.18942481, + -1.4073925, -2.705612, 2.0641398, -7.460961, -4.6103864, -2.1518288, + -1.0054573, 5.248958, -5.0816116, 1.2784109, 1.4279948, -10.37757, + -2.7630188, 0.016434759, 4.204674, -2.7288861, 8.911991, 9.196969, + -5.1603303, 0.023894375, -4.506302, -5.1968226, -9.291158, 3.3918695, + 0.11112251, -9.20254, -3.8992107, -5.0291705, 1.8456392, 3.657536, + -3.3808377, 9.256997, 10.307117, -3.418722, 0.032756194, -3.2837749, + -4.2729473, -9.988718, 3.2250073, -0.38190877, -7.8955536, -3.5180917, + 4.986541, 6.271868, -8.536107, -1.683413, -7.047003, 6.766861, + 4.0128617, -3.1531434, -9.31342, -2.6233144, -2.0418892, 4.569006, + 2.3985941, 7.6235924, -0.05538929, 6.0154357, 8.125788, -3.4109778, + -7.6907077, -5.095131, -2.2492085, 6.498456, 7.294242, -9.698787, + 0.26558772, -2.5430288, -6.480304, -9.15268, -2.6754224, 9.437554, + -5.5917234, -1.7598187, 5.1655426, -4.3431716, -8.190864, -6.100267, + -6.591725, 7.578942, 5.486228, 2.0995564, 6.9648747, 5.110837, + -6.1261616, 6.8636184, 1.0365121, -5.3663697, -2.5018656, 4.6703067, + -6.286849, -8.160234, -5.2242036, -6.352961, 9.033608, 4.9995646, + 3.752948, 7.7887383, 6.5982304, -6.7996645, 8.286845, 1.5753202, + -8.443196, 3.9899874, 4.9556775, -0.017643621, 4.732681, -0.6636576, + 1.4581941, -1.3151641, -9.028099, -8.891216, -8.535466, 3.6389797, + -5.111722, -0.32230788, 8.498365, -3.1372306, -4.873306, 7.250089, + -1.9549423, -3.7090962, -0.40201265, -6.4233136, 4.7569766, -7.880305, + 9.480289, 5.936669, -6.9584002, -9.06974, 5.2837462, 3.6692286, + -7.430226, 4.7528315, 5.490018, 0.50132537, 5.874811, 0.1740496, + -0.2948099, -1.9982044, -9.00967, -8.006327, -8.259013, 3.0789988, + -4.053522, 0.16426991, 8.195698, -5.734968, -3.5758421, -0.097321026, + -1.8115845, -3.4544446, 2.002715, -7.4926767, -4.8256927, -2.3762438, + 0.5651671, 4.9562464, -5.9895706, 1.2732432, 1.7925425, -8.754332, + -1.7962216, 0.47109967, 4.3137145, -3.583062, 8.145015, 8.675609, + -3.9576173, 0.17896295, -3.5634172, -3.7861938, -9.676206, 3.1628625, + -0.38938487, -7.9860625, -4.1174593, -4.964161, -1.8685355, 5.8341045, + -6.34102, -10.058669, -4.354374, -6.4476023, 8.7005415, 7.0249505, + 2.974236, 7.034518, 4.4456472, -6.434717, 8.570751, 0.5124114, + -3.6418507, 0.5554921, 3.367971, -3.017075, 9.514487, 9.281623, + -4.0681076, 1.0239902, -4.581693, -4.225302, -8.790287, 3.25273, + 0.5565237, -8.766786, -3.960491, -5.093242, -1.1662203, 5.345085, + -6.254107, -8.687721, -3.742164, -6.418398, 8.777365, 6.8158035, + 2.4148731, 7.5542808, 3.7105362, -6.583354, 8.385912, 0.5135687, + 2.9250274, -6.9842806, -9.27032, 9.032411, 9.915786, 6.2652893, + -5.011622, -8.608535, 3.6328795, -1.2499161, -6.178456, -1.0666534, + -8.958317, 9.228787, -3.2343855, 4.8704925, 4.7510295, -9.871552, + -4.0604935, -8.570907, 6.639867, 2.3541386, -4.091954, -8.4915495, + -3.942945, -3.4889514, 5.390299, 1.9249872, 8.037348, -0.56548274, + -4.9617343, -2.6649349, 3.9692755, -5.9428506, -7.8949842, -3.0987332, + -6.133977, 9.334152, 6.105837, 1.4486175, 7.1105576, 5.8923063, + -6.6165357, 7.8894663, 1.0958387, -5.631502, -4.384589, 1.4698544, + -1.5361322, -3.9733317, 2.4192832, -7.304139, -3.5895412, -2.117321, + -2.1025727, 6.6165576, -7.1702685, 1.0074711, 2.636985, -9.834668, + -2.3808458, 9.00357, 5.045383, 2.056876, -7.5607753, -6.0425096, + -8.949299, 7.3044095, 1.3690127, 3.851154, -10.207672, 9.277135, + 7.8470488, -6.7135487, -7.492994, 3.1985943, -6.935993, -9.047269, + 9.782481, 9.520245, 7.055303, -3.705615, -8.85654, 2.7514706, + -2.2830088, -7.095799, 0.735556, -8.017676, 8.776582, -4.010413, + -3.1072533, 0.76138145, 3.9190168, -3.6024258, 9.649632, 9.634952, + -4.4562793, 0.18947506, -4.1722145, -3.6073887, -9.216167, 1.8658406, + -0.0728769, -10.192603, -4.55464, 3.920998, -2.5004525, 0.7556708, + 0.19498403, -6.4827724, 9.607175, 6.9504147, 7.811515, 8.738351, + 2.0839396, 9.023966, -8.301546, -6.6700454, -8.569843, -3.0352917, + -3.1060672, 0.123924114, 4.6874747, -2.663372, 9.361349, 8.9156065, + -4.8481407, 0.64249396, -3.3601758, -4.0558143, -8.84251, 3.0814745, + -0.051395938, -9.751219, -3.51628, -3.5107403, 9.103959, 4.1631427, + 2.5616202, -7.336464, -7.192438, -10.161006, 7.0069084, 0.3255847, + 3.0527196, -9.05602, 9.948257, 6.946673, -6.430101, -6.3968987, + -6.0076656, -4.8721514, 1.0888506, -2.223866, -3.7888072, 2.6749995, + -7.697863, -3.7496884, -2.4904535, -1.2557896, 4.997531, -7.3803625, + 0.5294438, 0.75292945, -9.004251, -6.045037, -4.0840354, 0.9659302, + -0.031182272, -4.268261, 1.5548874, -6.4351664, -4.241374, -4.1936316, + -0.28540513, 5.3287897, -6.0698977, 0.517075, 1.9816412, -8.574375, + -2.6364996, 0.044094425, 4.0758266, -4.158439, 8.512978, 9.675815, + -4.699956, 1.1723328, -3.0423644, -4.464688, -8.931193, 1.9696642, + 1.4919473, -8.166115, -4.308291, 4.240168, 4.3839035, -9.306737, + -2.5585122, -8.50433, 8.040913, 2.4161782, -3.3221233, -8.923694, + -3.23936, -2.9481215, 4.8266616, 3.1465018, 7.5957923, -0.1761594, + 1.635158, -7.5802045, -8.545995, 9.684341, 8.721182, 5.1186357, + -3.9720159, -8.107762, 4.0684843, -0.53223395, -7.600826, 1.2023906, + -9.155265, 7.9439096, -5.9524975, 6.4409337, 8.288787, -2.120614, + -7.4738345, -4.636201, -1.4115783, 7.534934, 8.893526, -9.489198, + -0.47991526, -2.0359435, -5.36049, -7.283144, -2.758799, 9.180332, + -2.4428005, -4.289643, 6.550183, -3.4626865, -3.4779873, 0.89256114, + -5.74742, 4.906095, -8.898732, 9.760586, 6.241062, -5.746058, + -9.672227, 5.520144, 3.327288, 3.4568498, 4.6385217, -8.447328, + -4.0117807, -7.100771, 7.8721576, 2.6949818, -4.1668334, -7.762736, + -2.3543062, -3.3933797, 4.949498, 2.8923664, 8.115513, -0.6393926, + -3.0676663, -0.12716746, 5.342863, -2.4860654, 9.001626, 8.836862, + -5.3240137, 0.9058949, -4.8705597, -4.770749, -9.655423, 2.180305, + -0.13619632, -10.014284, -4.7069464, -1.9712611, -5.049141, 5.675679, + -1.8318181, -4.0372977, 0.69356495, -7.9774384, 5.4686694, -7.5971737, + 9.834102, 5.0594845, -5.668904, -10.459637, 7.3598185, 5.0841074, + -5.7341266, -3.6247492, 0.8194306, -1.3306394, -3.7847195, 0.46636584, + -7.417748, -3.9881816, -3.478473, -0.60817397, 5.5603895, -4.7776914, + 1.3858026, 1.5222275, -9.1765785, -2.2348847, -5.357557, 6.534572, + -2.900494, -4.2688546, 1.3175057, -7.908893, 7.225223, -8.337407, + 10.246494, 5.005191, -5.125219, -10.069494, 6.5035152, 3.4839725, + 1.8757601, -5.8883753, -7.72355, 9.475095, 9.613179, 6.433695, + -4.2970076, -8.1376, 4.853009, -1.8567407, -6.42889, -0.3218815, + -8.384427, 7.2016377, -4.4142675, 6.178387, 8.037596, -4.1346507, + -6.579993, -3.451481, -1.6528535, 6.607423, 7.282804, -10.042738, + -0.3675033, -2.4112575, -6.3527617, -7.3190246, -3.6114688, 7.053389, + -6.409217, 4.2970686, 5.0458927, 0.38610092, 5.732731, 0.25703382, + -0.31148946, -1.5473726, -9.726479, -7.662987, -10.154891, 3.6045713, + -3.0718038, -0.08280907, 7.9998364, -7.032314, 3.3468149, 5.3258433, + 1.9090985, 3.968849, -0.2675408, 0.060409773, -1.9405497, -9.221969, + -7.0576916, -9.464711, 2.8720486, -3.6328642, 0.17267628, 7.3887897, + -1.6439323, 9.778203, 5.0662756, 1.2085507, -7.1011133, -6.030941, + -8.739126, 8.947054, 2.2976227, 4.295886, -9.804691, 9.491675, + 6.542124, -5.2575417, -5.693809, 1.5259458, -6.2299876, -8.674668, + 7.5997577, 9.771124, 6.735506, -4.6034284, -7.752424, 3.0851119, + -1.1285808, -8.444385, -1.3516363, -9.580201, 8.099798, -5.102776, + 1.8797437, -7.358552, -7.704615, 8.898274, 9.467731, 7.0322733, + -4.630093, -7.629714, 3.2717342, -1.2894686, -7.50864, -1.146617, + -9.857415, 9.132159, -4.2040668, 6.268142, 7.631262, -3.1463265, + -7.6342397, -5.4017415, -0.36699927, 6.8239098, 6.731365, -9.921062, + 0.1618169, -1.5955563, -3.7906873, -7.3430963, -4.672828, 8.478235, + -5.23752, -4.488055, 1.5677861, -1.0111947, -5.1549315, 2.4944124, + -8.680141, -3.7192514, -2.053101, -1.2932495, 5.790003, -4.638614, + -0.069333926, 1.107056, -8.033828, -3.5469856, -0.033332966, 3.7997997, + -2.9539623, 9.276957, 9.894467, -5.0552077, 0.6615617, -2.9059353, + -3.7047288, -8.888133, 2.4200692, 0.65933156, -8.907872, -3.737872, + -3.466973, 0.23550095, 4.07296, -0.8387796, 9.653786, 9.700654, + -4.6577377, -0.23900166, -3.0766413, -4.5070047, -8.523723, 1.9573418, + -0.6184003, -8.714647, -5.2003384, 3.8263936, -4.4396343, 0.8862987, + 1.7082888, -5.6999054, 9.567615, 5.340746, 8.386485, 8.926271, + 1.4683529, 7.7115383, -7.764392, -6.6376386, -9.760499, -4.5039163, + 6.0392504, 7.5356097, -2.028758, -8.333136, -4.7378454, -1.7328049, + 5.59965, 7.2865815, -9.406592, 0.85930276, -0.55819434, -3.4961715, + -7.427333, -3.7118611, 9.175206, 1.5961306, -6.8860364, -9.654901, + 8.295825, 9.80504, 5.252788, -5.026235, -8.487576, 4.1970296, + -1.3347954, -7.884442, -0.06541064, -10.5342245, 8.532702, -4.555996, + -2.0998847, 1.2904444, 4.867598, -2.9420898, 9.596392, 8.326153, + -4.615114, 0.13709225, -3.9660642, -3.5841537, -10.107703, 3.3356907, + 0.68481576, -9.019869, -4.5311813, -3.2301183, -4.34194, 6.004943, + -3.1209073, -4.0283203, 1.2189362, -6.245637, 5.986362, -8.294472, + 9.431323, 5.5722885, -5.718046, -9.958375, 5.046603, 4.3691764, + -7.9938965, 3.2712924, 4.6154914, 1.3642961, 5.647025, -0.02010454, + 0.24344344, -0.796033, -9.447138, -7.3498936, -10.613059, -0.01747195, + -3.5142288, -0.82592213, 8.002613, -2.5667036, 9.796393, 4.8797865, + 2.292897, -6.48079, -6.566714, -8.388422, 8.25393, 2.1598651, + 4.6577544, -9.651125, 10.40628, 6.1753783, -4.4925594, -6.391611, + 4.622693, 6.773807, -8.462213, -2.005495, -7.987173, 7.0438952, + 1.5356572, -3.901669, -8.359946, -3.7750614, -2.8362765, 4.7190013, + 2.5044317, 9.248063, -0.621434, -3.395665, 1.3872076, 4.4660835, + -1.6363684, 7.9000883, 9.571806, -5.3251586, 1.1744347, -2.8999548, + -4.2802052, -8.18732, 3.439467, 0.10566513, -7.2400713, -4.4490094, + 2.821767, -6.5533547, -8.538616, 9.729733, 9.469679, 6.8007593, + -4.115962, -7.128169, 3.9092104, -1.0611137, -8.448278, 0.1044073, + -9.894598, 7.73961, -5.3951635, -3.7486873, -0.26094398, 4.926385, + -1.8088623, 8.816765, 9.141296, -5.06475, -0.07788902, -3.9374273, + -3.640387, -9.785314, 1.5988438, 0.9192143, -9.294276, -5.3111954, + 2.8849535, -1.6119763, 1.3534416, 0.06302584, -6.139903, 8.966088, + 4.7925205, 7.851928, 8.199099, 1.4810334, 9.114963, -7.5345025, + -5.1186028, -9.692125, -3.1606374, -5.741134, -1.0133828, 4.8290396, + -5.542567, -8.0015135, -2.9410028, -5.848071, 7.9133186, 4.802608, + 4.319805, 9.017506, 6.205359, -7.1579404, 8.525438, 0.71125627, + 2.641945, -3.7733855, 0.49750715, 2.976927, -6.431813, 8.600568, + 5.6937637, 7.337731, 7.832177, 1.9692173, 8.993705, -7.5486145, + -6.4328413, -9.200884, -4.029678, 4.8682394, 4.7664247, -7.73443, + -2.2667832, -6.999542, 7.268269, 1.4750957, -2.6975288, -8.918093, + -4.7531996, -2.549906, 6.061709, 2.7222757, 9.25564, -0.49178118, + -4.4506955, -1.8604838, 5.6561646, -5.8403077, -8.7562, -5.123713, + -6.606588, 8.82163, 6.9878917, 3.221873, 7.229855, 5.248716, + -5.9656034, 8.628707, 1.3154743, -3.6242933, 9.3226185, 4.6261325, + 2.3599126, -6.7228875, -5.9252114, -8.75067, 7.022939, 2.1079085, + 4.54176, -9.554108, 9.426611, 6.157459, -6.2172484, -7.3453245, + 2.0632749, -5.9967003, -8.779625, 8.708251, 9.691277, 6.7812653, + -4.3755665, -8.089311, 2.943752, -2.9455929, -7.4189134, 0.32977197, + -9.128783, 6.821715, -5.069995, 2.687267, -7.317653, -7.337332, + 7.7029505, 8.894274, 6.4270954, -3.4987047, -8.116891, 3.6444871, + -0.9095651, -7.720984, 0.8787651, -8.724686, 8.797385, -5.50071, + -1.6207514, -4.9068327, 7.748731, -3.887284, -3.5474274, 1.3265176, + -8.382739, 7.9414954, -8.553609, 9.1235, 4.459934, -6.179699, + -9.978743, 6.3810806, 3.9286895, -6.0116353, -2.4744582, 5.2717237, + -5.9310913, -6.095964, -3.8439672, -6.8304057, 8.233125, 5.826294, + 2.6891737, 7.5075994, 5.753752, -6.4598055, 8.792179, 1.7559983, + 2.4534812, -6.2604866, -9.194306, 8.479189, 9.235175, 5.5402975, + -3.318336, -8.305003, 1.6497688, -1.4593256, -8.286216, -1.2383549, + -10.178429, 8.262994, -3.8943517, -5.131992, -1.6247146, 4.1514335, + -4.3075924, -8.468995, -4.0062213, -7.179477, 7.6651387, 5.739587, + 2.821518, 7.900612, 6.1866956, -6.025892, 7.6152616, 1.1342188, + 5.474643, 5.824748, -8.447901, -1.7820772, -7.901604, 7.983712, + 2.2643185, -3.0803235, -8.808327, -3.8194501, -3.760504, 5.533521, + 2.2381012, 7.2260923, 0.928994, -2.5117195, 8.203431, 5.692258, + 2.5873232, -7.034302, -6.8612895, -8.69246, 5.8943086, 1.8492761, + 3.6840625, -10.289444, 9.2014265, 7.907233, -5.304628, -6.763326, + 1.9949925, -5.8438973, -7.6821365, 8.336287, 8.726796, 6.0696845, + -3.6923957, -8.413754, 4.631202, -0.90010333, -7.5316224, -1.1015985, + -10.2333, 8.383115, -6.3172174, 6.0867786, 7.9240646, -4.0073323, + -8.463959, -5.8282223, -1.9983485, 6.817653, 6.464775, -8.92771, + 0.74137855, -1.6374288, -5.5576205, -7.9927897, -3.0586374, 9.619859, + 6.617722, 8.128207, -3.776938, -7.4223785, -6.1082993, -2.0491183, + 6.4035096, 7.3358502, -11.138888, 0.53354853, -1.1108701, -5.6119432, + -5.940566, -3.7257512, 8.605433, -1.4806908, -4.753651, 7.4627585, + -2.5209446, -5.237564, 1.8511611, -6.095644, 6.66154, -9.042099, + 9.523529, 5.5466943, -6.518284, -8.704915, 6.410257, 2.2448032}, + {-9.156419, 5.3382993, 4.218931, 1.0388873, 5.1188726, 0.28789923, + -0.66403043, -1.1256588, -8.074601, -8.796393, -9.238622, 2.2648208, + -3.4147594, 0.18481727, 7.7022886, -4.0184965, -0.57511175, 5.7962236, + -5.364314, -9.026188, -4.786282, -6.4098144, 8.886832, 7.1435266, + 3.1233902, 6.3770556, 6.809805, -6.9672413, 7.5824, 0.961985, + -2.2192073, -5.491305, 5.8291707, -3.0785909, -4.807968, 0.7230418, + -7.1418605, 6.4147243, -8.558336, 10.07829, 5.4900274, -7.408513, + -10.547092, 6.2083673, 3.2903605, -7.185884, 3.884016, 5.101746, + 1.2541873, 4.7178125, 0.39448896, 0.09540709, -1.6091995, -10.187662, + -9.635805, -9.505136, 4.417039, -3.1636574, 0.15793155, 7.9673057, + -8.475596, 4.3068485, 5.409865, 2.178005, 4.5031695, -2.2377465, + 0.58335125, -0.18882181, -8.624355, -7.69541, -9.715562, 3.293194, + -4.394363, 0.5048643, 8.505158, 5.2808757, 3.5331442, -8.044594, + -3.2885385, -8.964062, 7.6199102, 3.4275236, -3.4782534, -8.061821, + -2.6517587, -2.5758934, 5.740099, 3.2706387, 7.7970586, -1.6770775, + 5.7117615, 7.7926583, -4.063252, -9.342857, -4.81335, -0.5654317, + 6.816361, 6.4182315, -10.002002, 0.21038114, -1.2326238, -5.0900054, + -8.116614, -3.1902997, 9.17829, -3.6660333, 0.5928117, 4.020767, + -1.8741283, 8.06987, 9.349458, -6.2369394, 0.47676873, -4.048555, + -4.0094633, -9.86698, 3.0869122, 0.78278774, -8.561944, -4.5177326, + -3.8657286, 0.3102671, 4.9884367, -3.6284225, 8.457659, 8.840426, + -4.2374887, -1.1185721, -5.964943, -4.6190014, -8.876042, 3.0314698, + -0.27063248, -9.258424, -3.6193402, -4.8447604, 0.10384789, 4.193676, + -2.4129548, 9.078777, 9.273055, -6.7061834, -0.51580375, -3.6649778, + -4.990796, -9.220972, 2.5040975, -0.18620397, -8.8511, -5.1009836, + -7.2450385, -3.4463844, 0.7517474, -2.0190156, -4.535124, 1.4956084, + -7.2539983, -3.4885075, -3.3627713, -0.52576774, 5.332339, -6.5615354, + 0.20976752, 1.1236217, -9.458547, -3.7924962, -0.8168977, 3.413253, + -1.6333858, 9.243847, 9.078577, -5.1742406, 1.2778658, -2.8442626, + -2.7500439, -9.373592, 2.3982239, -1.0080693, -7.9365706, -5.2445164, + -7.1730146, 4.0061684, 5.4796715, 1.20506, 6.2075787, -0.16006368, + -0.7864661, -0.5658346, -10.12563, -8.299808, -9.788379, 3.690315, + -5.2078524, 2.367838, 8.89057, -2.3272796, 9.561563, 3.7740133, + 1.04885, -6.514268, -6.67222, -8.662983, 7.5660367, 1.5462829, + 4.324029, -9.38316, 8.898151, 7.954895, -5.4215345, -7.197413, + -8.635383, 4.3802285, 5.2513223, 1.346883, 5.590111, -0.28032964, + 1.497561, -2.5698125, -10.071566, -7.9144497, -10.521648, 2.6051102, + -2.5498512, 0.18603437, 8.31282, -2.596791, -4.017034, 5.696748, + -2.659443, -5.330917, 1.1804227, -7.206465, 4.9133472, -7.69367, + 9.223525, 4.8777184, -5.885288, -9.085511, 5.598153, 4.1803226, + 3.475634, -4.233442, 1.09579, 0.8117338, -6.8319325, 9.767249, + 4.8737288, 8.809706, 7.890164, 2.7181265, 8.7697735, -8.247669, + -5.5079064, -8.122309, -3.1029263, 6.780397, 7.2863965, -2.5764318, + -7.441407, -4.71989, -1.9183284, 6.958463, 6.450258, -9.237784, + 0.3352336, -1.2645041, -6.38076, -8.229241, -2.8296368, 8.19435, + -1.5617663, -5.6124477, 4.7870054, -2.2109096, -5.3381248, 0.6965859, + -8.000595, 4.782553, -8.129963, 10.269147, 5.041338, -7.839416, + -10.271929, 6.5834913, 3.1019087, 6.0970397, 7.6056643, -3.503413, + -8.329759, -6.2327275, -1.0219464, 6.8009663, 6.651591, -9.234209, + -0.22715835, -1.4745643, -4.983603, -7.6262217, -2.929378, 8.496694, + -2.3214858, -0.22392803, 3.6714964, -2.5843356, 8.594137, 8.97197, + -4.742137, -0.28803217, -4.047805, -4.6737227, -10.322391, 2.4164019, + 1.2820336, -8.957543, -4.269386, 1.8467497, -6.8059382, -8.543474, + 8.642587, 10.19167, 5.541722, -4.0385346, -8.354369, 4.697545, + -1.0593618, -6.836944, -1.1363541, -9.125295, 8.80915, -4.7668014, + -3.396074, 0.5606265, 4.9510264, -2.2146635, 9.637748, 8.090525, + -5.6363864, -0.14092614, -3.9170732, -5.0943327, -7.574087, 3.2527626, + 0.4750633, -8.919999, -4.575617, 6.060985, 8.151341, -3.5798054, + -9.352471, -5.6021566, -2.0538287, 6.4829435, 9.304293, -9.603721, + -0.0045247287, -1.0065188, -5.219962, -7.3086267, -2.8229012, 10.297774, + -2.6328206, -4.1610146, 7.7436833, -2.5886633, -5.218428, 1.1651435, + -6.3438735, 5.6170917, -8.602799, 9.74802, 4.895467, -5.57189, + -9.974221, 6.6029015, 3.5159023, -6.237272, 3.404211, 5.5633903, + 0.89982665, 5.3451796, 1.7269523, -0.59742266, -1.2715619, -9.164232, + -7.082121, -9.302828, 2.9438436, -3.9870343, 0.3598027, 7.9110947, + -6.4613414, -4.281061, 1.2294351, -1.8541402, -5.16134, 1.1474174, + -6.785916, -5.0534077, -1.4444072, -2.3359509, 6.891039, -5.8588123, + 0.21698959, 1.466848, -8.791596, 3.1130009, -3.8158994, 0.37530485, + 1.4435463, -6.2665486, 9.904541, 5.446155, 8.845023, 6.4978065, + 2.599429, 8.680027, -7.531543, -8.107721, -7.633592, -3.5911062, + -3.21341, 8.164354, 5.4505563, 2.5273335, -6.4427433, -6.4402676, + -8.846901, 6.695445, 2.0753634, 3.6874382, -8.905726, 9.295257, + 6.071005, -5.978188, -6.0744486, -4.536719, -0.7512692, 4.7049856, + -5.2564535, -8.110622, -3.8745694, -6.7224054, 9.113831, 6.499982, + 1.8017114, 8.0376215, 6.6945453, -6.802899, 7.8777366, 1.2651751, + -7.2666044, 5.5279393, 5.0820684, 1.7293745, 4.5140524, -0.7935935, + 0.78534096, -0.4102984, -9.242688, -8.061312, -9.371912, 1.8529228, + -3.2897196, 0.78904694, 7.834866, 2.1245527, -5.8172064, -8.619009, + 9.082922, 9.058112, 6.128085, -3.6922634, -9.243675, 2.7409308, + -0.67666525, -7.4396296, -0.22525014, -9.299326, 8.429715, -5.2022324, + -5.605632, -4.2721667, 0.30621618, -2.0462341, -4.4864225, 2.5011683, + -6.6802306, -4.802623, -2.064039, 0.070346184, 5.9929237, -4.692767, + -0.25696367, 0.9770331, -10.316096, 1.7219449, -6.8609085, -8.498862, + 9.21183, 9.773622, 7.57509, -4.0315876, -8.605366, 2.719137, + -1.7086011, -7.582424, 1.1597288, -9.674558, 8.34306, -4.8358965, + 5.7109065, 5.1997824, -7.667096, -1.7657642, -6.9838014, 6.959934, + 2.7485735, -3.3989763, -9.361424, -3.553302, -4.3216615, 5.423499, + 2.4259174, 7.8850665, -0.3574, -5.45464, -0.7187321, 4.735962, + -6.6191874, -9.241969, -3.3399029, -6.884703, 8.210152, 6.2744203, + 3.019323, 8.211391, 7.087391, -6.520437, 6.9229465, 0.49741924, + -5.714762, -3.920736, 1.5310895, -1.3069419, -4.778316, 3.3032448, + -6.8328857, -4.883179, -2.8060002, -1.491533, 4.7355595, -5.3582, + 1.6212804, 0.86929405, -8.676913, -4.308896, -2.2715824, 5.6644607, + -6.803109, -7.8355837, -5.052791, -6.2640395, 8.603944, 5.49465, + 2.3831496, 7.9096346, 6.1475677, -5.85951, 9.234689, -0.3081243, + -2.0981023, -4.5837364, 6.980254, -2.781227, -5.062458, 1.6915218, + -7.292486, 6.0248265, -9.162274, 9.427442, 4.8255334, -6.1467485, + -8.691361, 5.348898, 3.007654, 7.8475046, 8.224898, -4.604263, + -8.1943035, -4.7263284, 0.0040657134, 5.250107, 5.8986645, -8.551282, + 0.48767596, -2.259585, -5.1836033, -9.447716, -3.2453337, 9.087669, + -3.267849, 0.47469243, 2.5689826, -2.189663, 9.586419, 9.604734, + -2.2159877, -1.513909, -2.7751462, -4.5044036, -9.061131, 2.1594281, + -0.24338497, -9.369308, -4.1964145, -2.6438503, 9.225369, 4.6155806, + 1.1550951, -6.0796514, -6.3537564, -8.284605, 6.6869516, 3.0042562, + 3.1801558, -9.17751, 10.931516, 5.955477, -6.1496263, -6.2937446, + 1.756042, -7.4857306, -8.088248, 9.432852, 9.243217, 7.4605927, + -4.656784, -9.114426, 3.2003248, -1.2288604, -7.388898, -0.26532704, + -9.065791, 7.3103304, -3.813765, 4.8670163, 5.2565265, -8.0483055, + -1.5007681, -7.7754626, 6.579898, 3.240919, -3.4663062, -10.2497015, + -3.1871583, -3.8710632, 4.5287504, 2.9835358, 7.8776045, -0.059085224, + 2.551705, -5.6099687, -8.051724, 9.019452, 8.859785, 6.6567035, + -3.6322849, -7.4199224, 4.1292806, -0.46226323, -7.9339, 0.82571405, + -9.17391, 9.639091, -5.306832, -7.1873994, -3.4160562, 0.32690084, + -1.6234742, -3.677745, 2.5480423, -7.462799, -3.345576, -3.4295075, + -0.4474454, 6.11869, -6.223207, 0.5129819, 0.9725119, -8.424172, + 0.9882244, -6.288785, -8.553587, 9.167816, 8.418917, 5.411207, + -3.1705177, -8.074246, 4.161711, -1.1771272, -7.538406, 0.5603369, + -9.673461, 8.253693, -5.147993, 2.1266177, -6.425567, -7.613618, + 8.278863, 10.001666, 6.0181546, -3.9423492, -7.574184, 2.898755, + -0.9292633, -7.442719, 0.24825409, -9.109812, 9.905118, -5.270818, + -4.7761197, -1.3929124, 5.788752, -5.6559525, -8.8889675, -4.9645762, + -7.3533616, 10.658319, 7.0336833, 1.7223231, 6.5034914, 6.410748, + -5.8855133, 8.235398, 0.6083758, -8.490231, 3.8334427, 4.9530635, + 1.0031434, 6.3164945, 0.26629567, -0.323364, -1.2766262, -9.142862, + -7.044067, -8.265038, 2.0176423, -4.280481, -0.7088907, 7.9875154, + -5.7842636, -1.4846907, 5.656278, -5.1035957, -7.288257, -4.208888, + -6.307455, 7.8297625, 5.891438, 3.1549516, 8.023583, 5.867665, + -6.3187184, 6.788668, 0.5369244, -7.1704245, -2.5398476, 0.5198131, + -1.8509074, -4.0256314, 2.1584282, -7.3648014, -3.7271903, -2.1425078, + -1.2499511, 5.3004465, -6.1990604, -1.3266561, 0.7876576, -8.11418, + 7.1678786, 8.414981, -3.087591, -7.740283, -4.453975, -1.1710103, + 5.7575336, 8.196971, -9.372425, -0.095184766, -1.987425, -5.3502407, + -7.2784634, -3.109592, 9.07611, 3.9478323, -4.111408, -0.6882469, + 0.634525, -5.252379, 9.986848, 5.2585998, 8.545499, 7.6714025, + 3.4117231, 8.70484, -7.929121, -5.359144, -8.928302, -3.674723, + -2.6288311, -0.12737024, 4.581883, -2.863696, 9.39071, 9.313172, + -4.787786, -0.13639021, -3.8321345, -3.1985075, -8.572446, 2.7996948, + -0.2652972, -9.592894, -3.7583604, -2.486999, -3.8108954, 7.8939605, + -1.784663, -4.7235045, 0.07018946, -7.0828953, 4.806032, -8.28277, + 9.634417, 5.11867, -7.1419787, -9.530038, 5.936338, 3.318205, + 5.2066703, 5.087264, -8.416352, -1.702131, -7.0548315, 7.074097, + 1.8421279, -4.8883104, -9.232241, -3.9281447, -4.1873593, 4.5002437, + 2.8049457, 7.586856, -1.0107033, -3.5576825, -0.26096594, 3.4048247, + -3.1948535, 9.640177, 9.117816, -6.531116, -1.53952, -4.4072394, + -3.9828095, -11.185514, 1.8414756, -0.31479302, -7.9985886, -4.696586, + 3.1184084, -6.135421, -8.81595, 9.08041, 10.157197, 5.596092, + -3.6496532, -8.321895, 3.704782, -0.3020338, -7.425466, -0.063956216, + -10.264129, 8.708786, -4.3725615, -4.597963, 0.9012179, 3.7690432, + -3.5184565, 9.120633, 10.12895, -5.3390884, 0.19588766, -4.4941034, + -3.7726448, -8.782406, 3.485313, -0.06931429, -8.502367, -4.358423, + 5.140103, 4.2939897, -9.256684, -3.5781474, -7.0174036, 8.459497, + 2.392848, -3.5002148, -8.679796, -2.9670389, -4.1454806, 4.7589817, + 3.4337878, 8.09502, -0.42299438, 4.0261736, -4.4937124, 0.8303022, + 0.19681469, -6.739549, 10.731515, 5.369179, 8.942182, 8.505594, + 2.304977, 8.542778, -7.974677, -4.397952, -9.135787, -3.352624, + 4.4656205, -3.627241, -0.05463218, 0.5954855, -6.527154, 9.688609, + 5.8686414, 8.388389, 7.879499, 3.457589, 9.646765, -7.9247236, + -6.0537405, -9.011433, -3.0639307, -2.2531514, 0.94571865, 4.3978257, + -2.4692948, 9.7113, 7.899575, -5.1595726, 0.5365807, -4.0166616, + -5.286823, -9.298944, 3.3841605, 0.92640465, -9.013827, -3.7610562, + -1.8709692, -4.1962123, 7.3255053, -3.1204004, -4.9687567, 0.122555226, + -8.557965, 7.4832845, -9.281233, 9.582861, 5.2511263, -5.8105016, + -9.318542, 6.91156, 3.7289927, -5.216679, -4.273006, -0.19759475, + -1.4491504, -4.1364098, 3.002992, -8.394848, -3.0864217, -2.7833686, + -1.177417, 4.995046, -7.164924, 0.86090815, 1.899614, -9.973965, + -5.4910603, -4.200808, -0.93155855, -2.06676, -5.4849715, 1.9909985, + -7.19723, -2.9836009, -2.443914, -1.0319707, 6.284103, -7.554319, + 0.44961897, 2.387897, -10.106002, -2.532675, -4.0673523, 6.313767, + -1.6560588, -4.661055, 1.011201, -6.528702, 5.0510836, -9.741553, + 8.66978, 6.3287044, -6.4119873, -8.098818, 5.914255, 4.2663326, + -2.3434393, -4.3752136, 6.400666, -1.7397915, -4.037627, 1.3683361, + -6.717499, 6.865371, -8.382272, 8.829956, 5.724677, -6.481636, + -10.259589, 6.719683, 5.003945, -6.1387596, -0.5676328, 6.0780406, + -6.3286204, -7.9776063, -4.557053, -6.591133, 8.79991, 5.998322, + 2.1194391, 6.945833, 5.432107, -6.8508744, 7.8041553, 0.28581285, + -2.7538466, -4.251039, 6.1003494, -1.4555624, -4.285735, 0.59819657, + -7.0522394, 5.100951, -9.1891165, 10.578029, 4.9850693, -6.758524, + -9.513901, 7.1392217, 4.640414, 6.104336, 8.788033, -3.9600418, + -7.828938, -5.400681, -0.8639426, 4.7874727, 6.7899213, -9.713058, + 1.0550014, -1.9961116, -6.871431, -7.168895, -3.6924503, 8.025428, + 5.177085, 5.76472, -9.111557, -3.2811704, -6.961646, 7.0277257, + 2.1834085, -4.0506253, -8.432314, -2.3365862, -4.2436066, 4.609077, + 3.739704, 7.6885056, -0.23904124, 2.641114, -6.992464, -8.613562, + 10.76977, 9.2453985, 6.9724383, -4.399948, -8.07105, 4.924221, + -1.6358271, -6.290521, 0.39896455, -9.705956, 8.629093, -4.1436124, + 3.9859037, -2.9919102, 1.2322817, 1.3813168, -7.1030145, 10.535094, + 4.700215, 9.001823, 7.368554, 1.9131027, 8.667619, -8.005199, + -5.7849984, -7.9658566, -3.1759193, -3.0510354, -0.5127189, 5.2521396, + -2.5857778, 10.577942, 8.735823, -3.6917107, 0.48757896, -3.5953057, + -4.139373, -9.436231, 3.031659, 0.15183237, -10.347374, -5.209101, + -2.3849895, -4.3158636, 7.2142596, -3.4271588, -3.336428, 0.66413516, + -7.1964726, 5.5208917, -10.2059555, 10.35657, 5.960686, -6.2226157, + -9.842664, 6.670386, 3.0433648, -6.880737, 4.2118607, 5.6850376, + 0.4752439, 4.3317122, 0.44843468, 0.7181433, -2.0806158, -10.100382, + -7.054367, -10.204004, 3.8780792, -4.343315, 0.61828816, 7.9212966, + 7.2431927, 7.348926, -2.5672731, -7.4490566, -6.420811, -1.2004898, + 4.890277, 7.6524673, -9.241296, -0.19970311, -1.5652965, -4.189934, + -7.9567156, -3.988932, 9.895358, 3.836468, 5.725222, -8.650108, + -2.1406744, -6.8514485, 9.074763, 2.8717058, -3.1539822, -8.592764, + -4.02757, -3.259395, 4.3853426, 2.8690722, 8.666574, -1.2602813, + -2.315514, 9.593314, 4.64898, 2.9906435, -7.064887, -4.9759912, + -8.400361, 6.7235126, 1.2726755, 4.499182, -9.744734, 9.897998, + 6.980119, -5.804198, -6.9562564, -1.8065041, -3.5014937, 7.4278836, + -3.0143435, -3.3378015, 0.95798886, -7.4174757, 5.6145577, -8.7207155, + 9.466015, 5.5641866, -5.913285, -9.887425, 6.615085, 4.970599, + 1.7791991, -7.025716, -9.087802, 8.53154, 10.144952, 7.1623, + -4.307247, -8.629207, 4.0146513, -1.5835062, -7.116183, 0.045584317, + -10.37325, 9.269662, -3.567286, -2.0496101, 8.332009, 5.190838, + 2.7841866, -7.454105, -6.205746, -8.549381, 7.898965, 3.3500552, + 3.9896798, -10.115926, 8.775537, 6.0777855, -5.807189, -6.1246943, + -5.531282, -3.6782076, 0.2044271, -0.91815233, -2.5859323, 2.3643644, + -7.0363684, -4.4786596, -3.2676542, -0.29736525, 5.1042604, -5.956428, + -0.049671445, 2.1835773, -8.837428, -1.0084368, 9.45803, 3.222279, + 2.1036878, -7.342878, -6.2834063, -9.393092, 7.2432075, 2.3757913, + 4.7674804, -10.428517, 9.164046, 6.316391, -6.2105484, -5.1276827, + -5.8179398, -1.2191972, 6.1875753, -6.209818, -9.1026535, -3.4926078, + -6.5855274, 8.979986, 6.4008203, 2.9415622, 6.5006814, 6.806564, + -5.449886, 7.6906066, 0.75641096, 2.0933912, -5.8074102, -8.459061, + 9.297438, 9.711478, 6.481343, -3.4578187, -7.116151, 3.8222253, + -0.7006475, -7.6220503, 0.91162026, -9.785705, 9.447066, -4.852511, + -5.160675, -1.0412569, 6.7657337, -5.974227, -9.427133, -3.992298, + -6.2704806, 8.432346, 7.17969, 1.7310511, 7.9142547, 5.649339, + -5.0650344, 9.245941, 0.25018522, 5.280551, 4.9559727, -7.544381, + -3.005718, -7.480533, 7.444294, 2.3719463, -2.8144736, -8.173391, + -5.004326, -2.5832953, 3.428379, 3.4739318, 8.5329485, -1.319378, + -5.567855, -3.0428956, -0.9562445, -1.600981, -4.4354258, 1.2517997, + -7.7545943, -4.93451, -1.4461738, -0.22362544, 6.593608, -5.5013537, + -0.5056475, 1.4811271, -8.72843, 5.3780584, 6.3473873, -8.601755, + -4.315984, -8.108094, 8.169965, 2.449955, -4.081551, -9.082175, + -3.1919196, -3.11362, 4.424871, 2.4943724, 7.470024, -1.2013886, + 2.13535, -3.457446, 0.38761395, 1.3209486, -6.146171, 10.346591, + 5.5903134, 8.489395, 7.9821553, 2.338308, 8.471686, -8.2017355, + -6.571737, -9.5594845, -4.475217, 4.6982017, 5.7347655, -9.282387, + -1.8430327, -7.7516303, 7.2752633, 2.9617126, -3.2187881, -8.061637, + -3.5793667, -3.9250398, 4.845176, 1.9505411, 7.8202467, -0.5789625, + 4.0954485, 4.4409847, -8.577281, -3.8839896, -7.1505795, 7.3197765, + 1.4456764, -3.598486, -9.2553425, -3.5569315, -2.5580182, 3.2795029, + 2.8316677, 7.632162, -0.08576344, 2.9827724, -4.820665, -9.070577, + 8.635103, 10.043553, 6.645271, -2.6150296, -7.637808, 3.433156, + -0.78349173, -6.7831426, 0.47787574, -8.957138, 8.933081, -4.005893, + 4.729381, 4.8990283, -8.742445, -3.3879035, -6.929414, 7.2769866, + 3.796796, -3.4245021, -9.224718, -4.8399534, -4.7585316, 3.4832284, + 2.938138, 8.100363, -1.662535, -7.2816644, 4.95603, 5.162535, + 1.0016507, 5.525574, -0.7086881, 1.9173337, -2.5745423, -9.362299, + -6.4256473, -9.366656, 2.595181, -3.963092, 0.045139644, 9.112324, + 2.5344908, -3.9459422, -0.7666484, 1.2136618, -5.8498735, 9.053462, + 6.6044474, 7.931943, 6.8714848, 2.115116, 9.170453, -7.0514007, + -6.4015617, -8.340378, -3.5203493, -3.400066, 0.003962429, 4.3990927, + -3.4990125, 9.912593, 9.534971, -5.17982, -0.64203995, -4.6031103, + -3.928818, -8.401975, 1.7451713, 0.37445116, -10.431344, -4.836303, + -2.2592869, 8.529249, 5.269599, 2.1882794, -6.3106236, -6.439369, + -9.418624, 6.931396, 2.5454059, 4.588711, -9.6029415, 9.480327, + 7.543218, -6.167318, -5.9805326, -5.284679, -3.4570992, 0.45621938, + -1.1651216, -4.9632597, 3.9490843, -7.119668, -4.0805306, -2.1647265, + -0.54189384, 5.860238, -6.5598564, 0.6147166, 3.1657085, -8.129198, + -1.5292208, -5.102776, 5.5794826, -1.8139999, -4.607186, 0.6783385, + -6.2517796, 6.4333005, -8.189866, 11.253241, 4.9944324, -5.3761983, + -9.849648, 6.497243, 5.2070746, -6.865968, 6.1966577, 5.490392, + 0.86926943, 5.4014416, -1.3624412, -0.031642605, -1.7356774, -9.8584795, + -7.735523, -9.94711, 3.5129297, -3.7127354, 0.1649036, 7.921803, + 2.586164, -7.688675, -9.207964, 8.804448, 9.260537, 6.6024175, + -3.783334, -8.981298, 3.950799, -0.76954013, -7.167382, 0.6600847, + -8.728484, 8.507834, -4.8735166, -6.754699, -3.8545423, 0.38615456, + -0.5436522, -3.9973226, 2.4733799, -7.4984365, -4.498431, -2.9755538, + -0.6024838, 5.40883, -5.803682, 1.7374693, 2.4580786, -9.299209, + -2.7360563, -4.701047, 7.5371637, -3.3171084, -4.9407444, 0.5160012, + -7.8488455, 6.129809, -7.371712, 9.963894, 5.268248, -6.2299542, + -10.983791, 6.9274054, 4.0826607, 7.522614, 7.924413, -2.9319065, + -6.859928, -5.9610357, -1.7975583, 7.2219076, 8.394122, -9.466941, + -0.400924, -0.26083717, -5.9295235, -7.8372893, -3.00806, 9.946106, + -3.8821065, -1.7192924, 4.481874, -6.355256, -8.592786, -3.559816, + -6.8648586, 9.651761, 5.1465845, 2.659613, 6.5525365, 6.327984, + -5.6477776, 7.556647, -1.0361049, 5.9643893, 8.397226, -3.8513625, + -8.029575, -4.928987, -1.2233036, 6.5816045, 7.543099, -10.935858, + 0.7446981, -1.2230518, -6.269522, -7.773549, -3.2752116, 8.764047, + -3.3841984, -0.39229932, 3.6481724, -3.3134916, 9.010129, 8.87156, + -5.348142, 0.52830386, -4.755838, -4.1488113, -8.40969, 1.8320493, + -0.44896275, -9.131792, -3.601263, -4.2370377, -4.59228, 7.815326, + -1.702052, -4.7012773, 0.43237323, -6.8533735, 5.34507, -8.297732, + 10.273995, 6.3037486, -6.095794, -10.032129, 5.6946406, 3.5583305, + -7.5630274, -4.7434363, -0.9323339, -1.5496844, -3.6731377, 3.2887077, + -7.1582565, -3.0170763, -3.6388342, -2.070968, 5.6646357, -5.7376785, + 0.26180243, 0.40108192, -9.133376, 5.807761, 7.675481, -4.178928, + -8.7062435, -5.7605815, -1.3308456, 6.776816, 6.8244157, -10.150056, + -0.43374276, -1.6737874, -6.151744, -7.2015033, -4.497803, 8.606453, + -5.288564, -1.0503861, 5.542927, -4.945538, -9.416571, -3.35661, + -6.592699, 8.335459, 6.2627797, 1.4247105, 7.7152686, 5.3528814, + -7.215468, 6.7855287, 1.5657268, -3.6171882, 0.38460144, 5.535729, + -5.552274, -8.086247, -3.5836122, -7.0000415, 9.850601, 6.3234572, + 3.0164952, 7.8953586, 6.368552, -5.6813407, 7.4191027, 0.3960336, + 2.6575727, -4.459753, -1.1060127, 0.48693237, -7.2290735, 10.541103, + 6.2095284, 8.308273, 9.473252, 2.6452353, 8.210103, -9.979734, + -4.476683, -10.068155, -4.6451726, -4.2022843, 0.4300488, 4.240806, + -3.5966403, 9.669565, 9.1402645, -6.2998195, -0.6572994, -4.271958, + -2.9818087, -8.872674, 1.2564496, 0.39380586, -10.053537, -3.669187, + -1.6427262, 7.8981867, 4.2203164, 1.9768403, -6.8467407, -7.1951556, + -8.402333, 6.5761886, 1.9226346, 4.2456584, -9.228203, 9.896327, + 5.8616033, -6.827098, -5.4691267, 5.357181, 8.253368, -4.2883973, + -7.410103, -6.0843773, -1.750001, 6.1537323, 7.897683, -9.2180395, + -0.6570561, -1.6133261, -6.0545497, -8.483646, -3.3996086, 8.642256, + -4.677273, 1.2200086, 4.604564, -2.4007382, 10.500346, 8.584704, + -3.7411997, 0.5975042, -4.1480227, -3.508256, -10.036667, 1.6141268, + -0.37243235, -9.34071, -5.1666613, 2.9874296, -7.6557484, -9.090214, + 9.241759, 10.408507, 6.121922, -4.2963643, -6.729748, 2.6710508, + -2.7361143, -7.251225, -0.44789976, -10.027093, 8.682258, -4.65374, + -5.398845, -1.19063, 4.840031, -5.4558244, -8.44263, -5.5487423, + -6.7852607, 8.111144, 5.8172216, 3.6786175, 6.549657, 6.642685, + -6.463873, 7.655348, 1.3401052, -7.4223614, 3.8569646, 3.508529, + 1.1315485, 6.4152675, 0.5242627, 1.1304349, -0.5838881, -9.429557, + -7.7040505, -9.803773, 2.5069573, -3.2818406, 1.014133, 8.053717, + 6.359578, 8.05051, -1.7548069, -7.5541015, -6.144135, -1.5246692, + 5.116923, 7.1581917, -10.444097, 0.85571927, -2.036458, -5.63958, + -8.047584, -2.0305007, 8.633324, -6.09929, -4.4390955, 1.580935, + -1.2801274, -3.349909, 2.2843208, -5.767599, -2.9283683, -2.847038, + -0.19850065, 6.1552825, -5.0484824, -0.39075765, 2.3285275, -8.330094, + 4.39891, 5.8360925, -8.85154, -2.2207773, -8.6248045, 7.3505344, + 3.8232129, -4.0822716, -9.203255, -3.420618, -3.3706262, 4.8375645, + 3.0935805, 8.18856, 0.2210884, 6.795792, 7.2120986, -3.5799494, + -8.446759, -5.262528, -2.0845866, 6.0746245, 6.517541, -9.405162, + 0.8158618, -1.8160143, -5.5310774, -8.616707, -3.4574702, 8.8230505, + -3.0405905, 9.119562, 4.879108, 3.2864892, -6.2143307, -7.283942, + -9.467218, 7.667866, 1.098137, 5.443473, -8.762702, 9.069774, + 5.449659, -4.805507, -6.4436784, -6.788195, -3.8819761, -0.107160725, + -1.6302885, -3.471012, 1.8332336, -6.6251383, -4.9479017, -2.3019001, + 0.13049772, 3.9733682, -6.564351, 0.6886393, 1.7061596, -8.81119, + -4.530558, -3.8737023, 0.5048791, -1.3779871, -4.036758, 2.1360056, + -7.611686, -4.5399084, -2.6956904, -1.2589977, 5.2045274, -5.932023, + 0.10620472, 2.9010866, -10.926671, -7.621211, 3.9929328, 6.0025797, + 1.8888124, 4.8783293, 0.16084853, -0.22550313, -2.4149125, -9.93032, + -7.238496, -8.704228, 3.087368, -3.2053134, 0.5327386, 7.7022924, + -4.8319592, -2.4669728, 4.441017, -5.1833854, -8.494458, -4.182013, + -7.306521, 8.4326725, 5.5154443, 3.291214, 8.153887, 4.78111, + -6.919256, 6.8036094, 0.3318281, 3.966245, -2.0579517, 1.3703514, + 1.328942, -5.886583, 9.989083, 6.0339065, 8.986813, 7.9694877, + 1.9141843, 7.9097095, -8.426622, -7.2654123, -9.164292, -4.185407, + -2.6507325, 8.861909, 5.409023, 2.550961, -6.3101707, -5.9662743, + -8.823625, 7.80089, 1.8051136, 4.388368, -9.67941, 9.466094, + 7.0654626, -6.325972, -4.8988295, 4.4538074, 7.660582, -8.30998, + -3.356939, -7.981069, 8.065981, 2.5452518, -4.388834, -8.085373, + -4.2480545, -2.1850252, 5.3481574, 2.438024, 8.640966, -0.5082026, + 7.9833584, 7.1434493, -2.6150064, -7.1011605, -5.244851, -0.22680989, + 6.620769, 7.487023, -9.898142, 1.0714443, -0.8842515, -5.9958177, + -8.526166, -3.389783, 8.298167, -1.1469772, -3.1687543, 8.017802, + -2.019077, -3.6644661, 1.2686906, -6.636663, 5.6581097, -9.081726, + 9.735376, 5.325766, -6.342946, -9.402086, 6.977942, 4.199032, + 4.2925735, 4.6514134, -8.669552, -3.0463095, -7.1368566, 8.179285, + 3.4429412, -3.775557, -8.875288, -4.9587603, -4.0604424, 5.2675195, + 3.8820574, 6.880211, -0.9704265, -5.8059387, -5.083739, 0.8754808, + -1.8249363, -3.775998, 1.7027764, -8.47354, -5.2963867, -2.6391037, + -0.69679457, 5.0704975, -5.5595098, -0.8783753, 1.8020356, -9.918703, + -5.7752275, -2.5524192, 5.586584, -6.2281923, -7.9939833, -3.881157, + -7.983639, 8.1196575, 6.9982843, 1.9812592, 7.104129, 6.396884, + -5.7202253, 7.6751027, 0.3685877, 6.4730477, 6.9648294, -3.0462086, + -8.661728, -5.054687, -1.0199026, 5.8725553, 7.6220303, -9.678648, + -0.16224325, -2.3577683, -6.9316816, -7.357938, -4.3430586, 8.924935, + 3.079536, -3.0909173, 1.2339897, 0.074880116, -5.884731, 9.882513, + 5.294362, 9.752974, 7.791508, 2.0459032, 8.316335, -8.219245, + -6.8477354, -10.10349, -2.37724, -2.4518857, 10.634547, 3.3327932, + 2.4535518, -8.008529, -7.210462, -8.076062, 7.368519, 1.2678789, + 3.660739, -9.112592, 8.88694, 6.800374, -5.7213173, -6.819621, + -7.238465, -4.1502047, 1.6634437, -1.5428135, -5.2276173, 2.0650377, + -7.401029, -6.0449276, -2.7107697, -1.0402545, 6.1908636, -4.712255, + 1.0732843, 1.6600693, -9.84556, 4.373307, 5.9132752, -8.752781, + -2.0094981, -7.423869, 7.186957, 2.7793643, -4.4816527, -9.5175705, + -4.6161013, -3.3962734, 5.804884, 4.3130593, 8.19089, -0.20511037, + -5.072562, -2.8070931, 4.465721, -6.1268067, -8.315314, -4.15643, + -7.2807903, 8.717728, 5.7797318, 2.4779165, 8.600628, 7.011764, + -7.1783056, 8.431993, 1.3548224, -2.5225089, 8.312515, 4.6269197, + 1.7711086, -6.653724, -7.4591713, -8.474785, 8.3964405, 1.9461682, + 4.44265, -9.105209, 9.117343, 6.8057175, -5.744403, -6.2951274, + 2.5132585, -7.097538, -8.568232, 8.448943, 8.884578, 5.1832843, + -4.553988, -8.992737, 3.0015492, -0.45940086, -8.223815, 1.7462057, + -8.9669075, 8.315793, -5.425251, -5.343185, -1.6062268, 4.805319, + -5.4703293, -6.990597, -4.377889, -7.0264125, 8.140674, 6.683342, + 2.5412183, 6.974651, 6.9983544, -5.2748766, 7.4308834, -0.51973313, + -2.778917, 9.093748, 5.10337, 3.0833814, -7.746098, -5.3869863, + -10.204789, 7.217273, 2.4341223, 4.3581457, -10.0241995, 9.252511, + 6.303752, -6.165773, -5.7687793, -7.451848, 4.22647, 5.415589, + 1.5903296, 5.8709946, 0.26483506, 0.5173631, -1.5873165, -9.597508, + -7.978607, -8.577777, 3.143698, -5.7711525, 0.63054436, 8.287644, + 3.1296065, -3.1472166, 0.85798645, -0.16926892, -5.2693324, 10.357757, + 5.0647626, 9.067041, 8.242368, 2.1404712, 8.052271, -8.700286, + -6.098231, -8.274544, -3.1128733, -3.6805692, 0.80296373, 4.1702604, + -3.1379797, 9.592593, 9.749173, -6.399313, 0.75632197, -4.217812, + -4.0053473, -8.424189, 1.2311151, -0.44302824, -9.172409, -4.975698, + 4.4079, 4.8351345, -6.999447, -2.9538054, -7.5963755, 7.6481085, + 2.4964843, -2.1955037, -9.164687, -3.6441283, -4.0160627, 3.6681077, + 2.322911, 7.718329, -0.85621303, -3.4735663, 8.357809, 5.0004034, + 2.33282, -6.519094, -4.1831975, -8.4387045, 8.118419, 2.6901014, + 4.6174254, -9.808999, 9.929476, 6.1078753, -5.9189906, -6.703255, + 2.4779332, -3.6398525, 1.375762, 1.5770272, -7.4022613, 8.698953, + 6.161196, 8.102238, 7.7393036, 2.343036, 7.7596436, -8.156387, + -7.0141606, -9.516412, -3.269546, 2.700253, -4.6976414, -0.8839833, + 1.2897996, -7.0752673, 7.8846693, 5.7746615, 10.535078, 7.8922973, + 2.544943, 8.494765, -8.299373, -5.4369893, -9.298646, -3.3062189, + -6.7873597, -4.256143, 0.08045289, -1.9658931, -4.141452, 1.6553928, + -7.020803, -4.1922736, -2.8400269, -1.5138949, 5.2997794, -5.4777503, + 0.6353308, 1.1640027, -9.001459, -6.085931, -1.4323632, 5.511463, + -5.4675703, -7.6733546, -4.438825, -6.38035, 7.880188, 6.145921, + 2.5460272, 7.5869274, 5.8147726, -6.3606296, 8.429413, 0.48110986, + 2.1483753, -7.400373, -7.6465893, 9.591865, 9.157966, 6.186767, + -3.7618566, -9.475772, 3.5116363, -1.674339, -8.260369, -0.293232, + -8.053849, 8.634998, -5.2242255, -7.4994817, 4.8424644, 4.60871, + 0.7648624, 5.2067356, -1.0661978, -0.118823916, -1.7825342, -8.879545, + -7.6583786, -9.235904, 3.3238368, -3.8090405, 0.44473922, 8.079074, + -7.9232473, 4.2652655, 5.6365457, 0.21484558, 3.812017, -0.50946385, + -0.3998421, -1.8048778, -9.595064, -8.159446, -8.354689, 2.9569294, + -3.5025482, 0.6069588, 7.3541465, 4.109814, -4.6125274, 1.5721611, + 1.2275189, -6.796419, 9.352654, 5.893485, 8.843183, 8.273676, + 1.3135281, 8.556037, -9.21975, -6.158201, -9.728189, -4.0082645, + 6.0112767, 7.7777243, -4.162535, -7.9227033, -6.5253296, -1.8016518, + 6.1608825, 7.035286, -10.030005, 0.17171112, -1.3161709, -4.945682, + -8.0575285, -4.089937, 8.128763, 6.7465863, 8.212232, -3.3156285, + -7.7685013, -5.050599, -3.2285364, 6.15267, 7.383537, -10.666667, + 0.48537236, -1.7949098, -4.329011, -6.501579, -3.5737605, 8.752607, + -2.9227085, 1.4066819, 3.6375928, -2.888092, 8.288003, 8.974216, + -4.2667546, -0.38157666, -3.534098, -4.4365425, -9.035421, 1.3879027, + 0.11322708, -11.06422, -4.557898, 4.275303, 5.784581, -8.700789, + -2.313518, -7.2518616, 6.6072617, 3.22615, -3.7572138, -8.163193, + -3.5232525, -2.209605, 4.4356976, 2.5066276, 7.730661, -0.76792735, + -3.5695906, 8.701726, 5.239358, 2.1230352, -7.751644, -6.758883, + -8.568605, 6.7048225, 2.1299078, 4.2021976, -10.38839, 9.648648, + 7.041402, -4.995082, -5.625839, -4.8748918, -1.4866246, 5.394029, + -4.558989, -9.210139, -3.7288196, -5.940819, 7.348942, 6.3861637, + 2.3151493, 7.372146, 6.316815, -6.6096587, 7.3781843, 0.81075156, + -2.211564, -4.3568363, 7.7663007, -2.6964061, -2.5601315, 1.2497784, + -8.414049, 6.5712786, -8.242176, 10.640566, 5.9161224, -6.1226053, + -10.746567, 6.1629124, 3.5417826, -3.0503044, 9.031444, 4.9884777, + 2.9889703, -6.2081375, -5.372882, -9.375471, 7.9341474, 2.1506395, + 5.6943135, -10.154119, 8.810391, 6.229278, -7.239945, -6.731529, + -2.9038048, 8.438732, 4.81046, 2.1446462, -7.2344875, -7.2098365, + -8.675893, 6.309864, 1.0370756, 3.6585405, -9.737723, 9.615832, + 7.681602, -5.152856, -6.4754577, 3.1207442, -3.856653, 0.43202844, + 0.8313042, -5.6281953, 10.939058, 5.1124125, 7.8311167, 7.8347497, + 3.763796, 7.8749127, -7.082768, -4.905952, -9.482966, -3.0951052, + 3.6651754, -6.804962, -8.545563, 9.152279, 10.416858, 6.10124, + -3.7124095, -7.6210303, 3.8152869, -1.5094537, -7.4233723, 0.65508044, + -10.03079, 8.279487, -5.314485, 1.6060838, -6.452426, -9.383829, + 9.263488, 8.120832, 6.8883557, -3.5769064, -7.8673368, 4.3725443, + -0.031118015, -6.8491764, -1.3850738, -10.207933, 7.749035, -4.8061366, + -8.868855, 3.885024, 4.6642523, 0.79095066, 5.301643, -0.4545515, + -0.9308533, -0.92564243, -10.2425375, -7.674699, -7.9195585, 2.084639, + -5.4840817, -0.028789133, 8.922001, 4.390323, -4.031168, 0.25885418, + 0.5270289, -7.013241, 8.937199, 4.6458983, 8.813837, 7.357566, + 2.1216497, 7.3483577, -7.9985337, -5.4968724, -10.491069, -3.2315538, + -2.8616307, 7.9288216, 4.687873, 1.229557, -6.5481124, -7.5237064, + -7.7533736, 6.7752457, 1.7968571, 4.7309136, -10.449915, 9.557419, + 7.563853, -6.878456, -6.2342567, 2.9910157, -3.2255893, -1.5926194, + 1.7383416, -7.5207105, 9.137984, 4.7188873, 7.883702, 8.7091255, + 1.6306087, 8.6800375, -8.262995, -5.746414, -9.041678, -4.391488, + -7.3057694, 4.8251824, 5.743705, 2.0577834, 5.9151564, 0.121925674, + 1.2037617, -1.4677445, -10.10893, -7.9563184, -9.892848, 2.2555835, + -3.8140435, -0.38328013, 7.935756, -7.592389, 4.647879, 4.389132, + 2.0055692, 5.9201107, 0.37864193, 0.7615896, -1.4354479, -9.020615, + -7.4279017, -9.619245, 2.326687, -3.641581, 1.2557279, 7.2839546, + 6.382505, 8.923782, -2.8826938, -8.717515, -5.005848, -0.52759093, + 6.631061, 7.978298, -8.452368, 0.93154275, -1.4772639, -4.826282, + -7.5012712, -3.2309644, 8.612205, -4.3908873, -1.389698, 5.4614887, + -5.389195, -8.455458, -4.667196, -6.2863946, 8.888634, 6.5068207, + 2.2998507, 5.9218717, 6.8414483, -6.603785, 7.2472367, 1.2722801, + -1.196635, -4.719546, 6.106399, -2.137, -4.8052406, 2.1321285, + -6.7069674, 5.7024016, -6.9988713, 9.313738, 5.964362, -5.8161817, + -8.978339, 7.4022865, 4.1595497, -2.6859953, 8.140838, 5.7825665, + 0.9720707, -7.1876583, -6.7885914, -7.8294363, 6.3184195, 2.836515, + 4.168615, -10.275366, 9.721669, 6.7881947, -6.1733694, -6.314639, + -2.679783, 0.19461435, 4.3071327, -3.126654, 8.16122, 9.437986, + -6.3029327, -0.103073716, -4.940254, -2.912097, -8.624307, 2.2653143, + 0.93817514, -9.562846, -4.046635, -2.2257104, 8.131667, 5.282382, + 3.458679, -6.1569014, -7.9436684, -9.177292, 8.210361, 1.5269316, + 4.472125, -9.046066, 8.749346, 6.607185, -8.022105, -7.080572, + 2.8967333, -6.9516196, -7.7124248, 10.58694, 9.058654, 5.8560953, + -2.8903556, -6.9408574, 3.3186586, -1.4910809, -7.7564845, -1.0375772, + -9.955286, 7.4835095, -5.361859, 4.4344616, 5.3354306, -9.836401, + -3.214793, -7.617627, 7.373968, 1.7465899, -2.496044, -9.3351555, + -3.1017334, -3.1972976, 4.1397643, 3.9938672, 6.908709, 0.087706424, + -1.9262826, -4.0878453, 6.6982594, -3.1218529, -4.960623, 0.91422236, + -7.932013, 3.9989944, -8.203395, 10.370493, 3.7908428, -6.7324977, + -9.45615, 7.7494755, 4.1517024, 4.1157107, -3.0018613, 0.8277571, + 0.16958666, -6.524397, 10.240861, 5.601858, 10.413509, 8.171869, + 2.092434, 8.221103, -8.136671, -6.187072, -8.599778, -2.8237019, + -3.1300414, -0.11901236, 4.659268, -1.5727713, 10.185069, 8.738224, + -4.711362, -0.960229, -3.5817606, -3.9877677, -10.571133, 1.3780379, + -0.14461677, -9.181026, -5.2737045, 7.3387733, 8.671906, -3.5064857, + -7.140044, -6.1640635, -1.1792953, 7.6268096, 7.06198, -10.454301, + -0.24151617, -2.4145231, -6.1071773, -7.862048, -4.2315936, 8.869127, + -8.933645, 4.4142013, 5.2165446, 0.6535819, 5.8808155, 0.532211, + -0.67063534, -1.983087, -10.030017, -8.500104, -8.790784, 2.59253, + -3.8980408, -1.2312899, 8.596122, 4.5616593, 5.6215196, -9.08583, + -2.5338428, -8.014306, 7.2519517, 2.8483615, -3.377544, -9.034303, + -3.8570805, -3.5581877, 4.333116, 2.569992, 8.863308, -0.16305788, + -1.1921831, -5.372202, 6.4391885, -3.366709, -5.6878853, 0.7960452, + -7.266739, 7.1033545, -8.067419, 9.020808, 6.74276, -5.170963, + -9.482089, 6.1506896, 3.4655395, 1.1493545, -6.4998446, -9.175704, + 9.566161, 8.8558035, 5.8556185, -5.230403, -8.363173, 1.987945, + -2.3056822, -7.026945, 0.45359832, -9.014409, 7.509525, -4.857798, + 4.4751496, -4.6364827, -0.08367322, 0.4313205, -5.6764636, 9.185227, + 6.3760757, 8.318536, 8.091843, 1.3732567, 9.939089, -9.061469, + -5.863468, -8.651811, -3.203734, -5.1804323, -4.0894804, 0.89871854, + -1.1432245, -2.0202007, 3.0207603, -7.299665, -4.8259854, -3.7972755, + -0.7361758, 5.1740737, -7.002102, -0.16791224, 1.0912077, -7.8899927}, + {1000, 1000, 1001, 1001, 1002, 1002, 1003, 1003, 1004, 1004, 1005, 1005, 1006, 1006, 1007, 1007, + 1008, 1008, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, + 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, + 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, + 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, + 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, + 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, + 1009, 1009, 1009, 1009, 1009, 1009, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, + 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, + 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1012, 1012, + 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, + 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, + 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, + 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, + 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, + 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, + 1012, 1012, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, + 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, + 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, + 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, + 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, + 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, + 1013, 1013, 1013, 1013, 1013, 1013, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, + 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, + 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, + 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, + 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, + 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, + 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1015, 1015, 1015, 1015, 1015, 1015, + 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, + 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, + 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, + 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, + 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, + 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1016, 1016, + 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, + 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, + 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, + 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, + 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, + 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, + 1016, 1016, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, + 1017, 1017, 1017, 1017, 1017, 1017, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, + 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, + 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, + 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, + 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, + 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, + 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018, 1018}, + {1001, 1010, 1002, 1012, 1003, 1016, 1004, 1005, 1006, 1008, 1014, 1015, 1007, 1013, 1011, 1017, + 1009, 1018, 8, 23, 33, 34, 38, 48, 52, 53, 57, 82, 100, 101, 110, 120, + 139, 144, 145, 146, 148, 182, 184, 218, 245, 255, 256, 260, 276, 280, 291, 293, + 332, 341, 342, 349, 359, 363, 369, 392, 412, 432, 443, 463, 471, 481, 497, 500, + 503, 512, 518, 530, 538, 552, 553, 559, 596, 602, 603, 634, 639, 640, 662, 671, + 677, 681, 690, 695, 706, 722, 726, 741, 745, 747, 755, 773, 782, 789, 792, 800, + 823, 825, 840, 845, 857, 873, 878, 917, 919, 924, 925, 934, 936, 944, 946, 950, + 956, 969, 970, 974, 979, 981, 12, 18, 20, 25, 27, 36, 55, 89, 107, 123, + 128, 134, 168, 169, 179, 188, 195, 197, 200, 211, 215, 221, 231, 237, 239, 265, + 278, 287, 302, 305, 308, 334, 345, 355, 358, 373, 379, 386, 387, 390, 403, 404, + 405, 436, 438, 442, 451, 468, 490, 493, 499, 511, 515, 526, 536, 546, 547, 583, + 586, 589, 594, 608, 613, 614, 616, 618, 635, 645, 648, 653, 682, 683, 684, 697, + 716, 719, 765, 772, 781, 805, 809, 829, 841, 848, 865, 866, 876, 877, 879, 888, + 896, 898, 911, 918, 942, 947, 964, 977, 987, 995, 3, 9, 16, 19, 35, 51, + 61, 75, 78, 85, 99, 102, 109, 112, 122, 124, 142, 164, 186, 198, 204, 206, + 228, 229, 236, 241, 251, 252, 273, 274, 282, 284, 303, 309, 311, 314, 317, 319, + 322, 325, 327, 352, 367, 381, 415, 419, 430, 450, 455, 461, 464, 475, 478, 484, + 489, 491, 501, 506, 508, 545, 550, 572, 575, 597, 610, 619, 652, 672, 678, 685, + 696, 701, 708, 709, 711, 724, 730, 736, 763, 784, 788, 799, 826, 852, 861, 867, + 869, 886, 889, 894, 903, 928, 929, 935, 937, 940, 983, 986, 991, 993, 2, 4, + 32, 50, 56, 65, 67, 71, 80, 83, 115, 117, 129, 141, 147, 151, 155, 166, + 171, 178, 190, 202, 214, 219, 224, 225, 227, 232, 243, 254, 259, 267, 275, 289, + 298, 316, 326, 338, 343, 351, 360, 378, 398, 431, 434, 452, 454, 462, 466, 473, + 502, 532, 544, 551, 556, 563, 584, 606, 624, 625, 632, 646, 651, 657, 659, 665, + 675, 679, 689, 712, 721, 728, 749, 774, 776, 778, 807, 816, 836, 855, 856, 862, + 887, 892, 905, 913, 915, 920, 938, 943, 952, 960, 965, 966, 973, 980, 988, 989, + 992, 996, 11, 29, 49, 64, 73, 74, 79, 86, 91, 126, 130, 131, 152, 158, + 160, 170, 173, 185, 191, 205, 223, 230, 249, 269, 321, 333, 336, 337, 350, 366, + 374, 380, 385, 389, 407, 409, 413, 418, 433, 435, 437, 441, 457, 458, 460, 470, + 479, 480, 485, 495, 509, 519, 525, 541, 542, 543, 554, 558, 564, 566, 571, 578, + 592, 620, 642, 643, 647, 654, 658, 663, 669, 693, 713, 731, 734, 746, 757, 761, + 793, 798, 812, 839, 851, 854, 868, 872, 874, 880, 900, 902, 907, 908, 912, 923, + 933, 941, 948, 949, 958, 968, 15, 37, 40, 41, 46, 47, 66, 87, 106, 108, + 113, 135, 138, 140, 149, 150, 193, 203, 207, 212, 217, 234, 235, 240, 242, 244, + 271, 290, 296, 299, 328, 347, 356, 376, 382, 383, 391, 395, 397, 416, 417, 424, + 426, 429, 453, 476, 492, 496, 505, 516, 517, 521, 534, 537, 569, 576, 582, 590, + 593, 600, 601, 604, 607, 611, 621, 622, 655, 660, 668, 691, 727, 739, 758, 760, + 771, 780, 783, 791, 796, 808, 810, 813, 820, 821, 830, 831, 834, 842, 844, 875, + 884, 890, 901, 926, 939, 951, 955, 978, 985, 994, 26, 39, 44, 45, 59, 60, + 69, 104, 132, 133, 153, 159, 165, 167, 172, 176, 180, 181, 183, 189, 209, 238, + 250, 253, 257, 261, 262, 263, 279, 281, 292, 295, 318, 323, 346, 348, 353, 362, + 370, 393, 394, 396, 399, 406, 421, 439, 440, 444, 448, 469, 474, 487, 498, 523, + 528, 539, 549, 555, 560, 562, 567, 570, 573, 579, 580, 599, 617, 627, 629, 636, + 649, 661, 664, 686, 700, 707, 717, 744, 764, 766, 767, 785, 801, 802, 822, 833, + 846, 849, 864, 881, 897, 904, 922, 927, 953, 961, 967, 972, 997, 998, 5, 13, + 21, 24, 31, 54, 84, 97, 111, 121, 156, 162, 194, 196, 201, 213, 220, 247, + 264, 266, 300, 310, 313, 320, 329, 330, 331, 344, 371, 372, 377, 410, 422, 425, + 427, 428, 449, 456, 472, 477, 483, 494, 507, 524, 529, 533, 535, 540, 548, 557, + 591, 595, 598, 605, 609, 626, 628, 630, 633, 644, 674, 676, 680, 687, 698, 702, + 703, 704, 705, 715, 720, 737, 738, 742, 750, 751, 754, 762, 770, 775, 779, 786, + 790, 806, 814, 815, 818, 824, 835, 838, 843, 860, 882, 883, 909, 916, 945, 971, + 982, 984, 1, 6, 10, 28, 30, 42, 43, 58, 62, 72, 88, 90, 94, 105, + 114, 116, 119, 125, 136, 157, 161, 174, 199, 210, 216, 246, 258, 270, 277, 285, + 286, 288, 297, 312, 339, 340, 361, 368, 384, 401, 408, 411, 423, 447, 459, 465, + 467, 482, 504, 514, 520, 527, 568, 574, 581, 585, 588, 631, 638, 650, 666, 667, + 670, 673, 688, 692, 694, 714, 718, 723, 725, 735, 743, 752, 756, 769, 794, 795, + 804, 811, 819, 832, 850, 858, 859, 863, 871, 885, 891, 893, 899, 914, 921, 931, + 954, 957, 959, 975, 990, 999, 0, 7, 14, 17, 22, 63, 68, 70, 76, 77, + 81, 92, 93, 95, 96, 98, 103, 118, 127, 137, 143, 154, 163, 175, 177, 187, + 192, 208, 222, 226, 233, 248, 268, 272, 283, 294, 301, 304, 306, 307, 315, 324, + 335, 354, 357, 364, 365, 375, 388, 400, 402, 414, 420, 445, 446, 486, 488, 510, + 513, 522, 531, 561, 565, 577, 587, 612, 615, 623, 637, 641, 656, 699, 710, 729, + 732, 733, 740, 748, 753, 759, 768, 777, 787, 797, 803, 817, 827, 828, 837, 847, + 853, 870, 895, 906, 910, 930, 932, 962, 963, 976}, + {0.0375429, 0.0375429, 0.0380193, 0.0380193, 0.0390152, 0.0390152, 0.0397533, 0.0397533, + 0.0413317, 0.0413317, 0.0414699, 0.0414699, 0.0471734, 0.0471734, 0.0497421, 0.0497421, + 0.0541098, 0.0541098, 0.347202, 0.325568, 0.428782, 0.396247, 0.351154, 0.376728, + 0.428782, 0.346019, 0.37844, 0.319143, 0.266898, 0.38697, 0.428782, 0.428782, + 0.406587, 0.324322, 0.300772, 0.334573, 0.404499, 0.374328, 0.379171, 0.344723, + 0.286148, 0.315663, 0.418412, 0.335559, 0.350764, 0.341872, 0.398113, 0.355783, + 0.336494, 0.38494, 0.369691, 0.41585, 0.309856, 0.348328, 0.317848, 0.298328, + 0.347966, 0.401303, 0.390654, 0.403246, 0.340475, 0.428782, 0.427396, 0.369112, + 0.397054, 0.33233, 0.402182, 0.425795, 0.32879, 0.355395, 0.360418, 0.418468, + 0.334416, 0.428782, 0.290134, 0.408489, 0.297885, 0.345323, 0.385738, 0.255841, + 0.428782, 0.287308, 0.37873, 0.403246, 0.338533, 0.406269, 0.345726, 0.337707, + 0.332302, 0.323417, 0.300644, 0.330364, 0.375397, 0.351353, 0.428782, 0.306779, + 0.292796, 0.384838, 0.351345, 0.36857, 0.379273, 0.356486, 0.364724, 0.349878, + 0.351715, 0.428782, 0.295487, 0.318492, 0.409458, 0.428782, 0.40158, 0.336903, + 0.396822, 0.428782, 0.357975, 0.364505, 0.279662, 0.396395, 0.382695, 0.321661, + 0.426458, 0.404946, 0.374837, 0.369184, 0.371807, 0.341826, 0.342808, 0.396877, + 0.350699, 0.340324, 0.349302, 0.366682, 0.376295, 0.387658, 0.328765, 0.377055, + 0.422431, 0.366682, 0.377383, 0.325377, 0.346524, 0.361752, 0.332547, 0.342417, + 0.426458, 0.344312, 0.341058, 0.331798, 0.261318, 0.317866, 0.352108, 0.305209, + 0.324999, 0.354711, 0.390277, 0.368758, 0.406089, 0.409815, 0.376139, 0.3574, + 0.341148, 0.426458, 0.394844, 0.420412, 0.379616, 0.426458, 0.407329, 0.320178, + 0.370283, 0.361069, 0.420412, 0.305671, 0.316232, 0.328956, 0.371197, 0.381023, + 0.409169, 0.373685, 0.334751, 0.279633, 0.323443, 0.40549, 0.426458, 0.408024, + 0.318459, 0.426458, 0.3289, 0.341933, 0.308234, 0.345802, 0.356128, 0.387126, + 0.426458, 0.345731, 0.38951, 0.294699, 0.415182, 0.338835, 0.368434, 0.356644, + 0.426458, 0.426458, 0.284949, 0.357255, 0.39217, 0.349094, 0.340693, 0.426458, + 0.344029, 0.339529, 0.383809, 0.326242, 0.379493, 0.328765, 0.397869, 0.409169, + 0.408024, 0.395661, 0.440375, 0.356357, 0.292202, 0.374151, 0.438459, 0.339068, + 0.335221, 0.440375, 0.413088, 0.40484, 0.317889, 0.351513, 0.40076, 0.411686, + 0.383247, 0.322453, 0.294628, 0.316353, 0.293595, 0.364222, 0.371582, 0.358023, + 0.375827, 0.307742, 0.302896, 0.440375, 0.390099, 0.357134, 0.389842, 0.440375, + 0.347122, 0.264571, 0.378523, 0.437817, 0.36704, 0.373819, 0.365059, 0.440375, + 0.357322, 0.354177, 0.403952, 0.361461, 0.440375, 0.323683, 0.317318, 0.352699, + 0.374323, 0.37942, 0.360222, 0.28739, 0.349268, 0.349823, 0.360978, 0.340664, + 0.407534, 0.336606, 0.382582, 0.431253, 0.352723, 0.440375, 0.352699, 0.393439, + 0.386917, 0.43427, 0.354885, 0.433652, 0.385784, 0.288925, 0.364788, 0.440375, + 0.359681, 0.440375, 0.345734, 0.291863, 0.35123, 0.304997, 0.307342, 0.342574, + 0.440375, 0.306176, 0.408543, 0.327421, 0.372033, 0.378947, 0.376762, 0.292624, + 0.411569, 0.396591, 0.371355, 0.344181, 0.354013, 0.355921, 0.385067, 0.322048, + 0.344834, 0.363519, 0.294679, 0.389972, 0.323571, 0.432023, 0.398717, 0.386695, + 0.378169, 0.309986, 0.373675, 0.355723, 0.326626, 0.378668, 0.332012, 0.377039, + 0.398717, 0.333376, 0.304154, 0.375449, 0.348674, 0.275605, 0.342682, 0.391556, + 0.38071, 0.354591, 0.343493, 0.342063, 0.276153, 0.330391, 0.346938, 0.382593, + 0.392816, 0.312487, 0.398717, 0.357612, 0.398717, 0.307151, 0.367719, 0.323803, + 0.31991, 0.345842, 0.354989, 0.342943, 0.339149, 0.325028, 0.378619, 0.384254, + 0.344932, 0.392816, 0.329257, 0.38311, 0.285198, 0.318453, 0.352693, 0.336511, + 0.290389, 0.328826, 0.314366, 0.393904, 0.333508, 0.392816, 0.310907, 0.370373, + 0.355723, 0.398717, 0.326586, 0.333648, 0.322233, 0.393904, 0.334792, 0.365416, + 0.358759, 0.344006, 0.389582, 0.359211, 0.347089, 0.389412, 0.357481, 0.398717, + 0.346699, 0.398717, 0.264741, 0.324031, 0.398717, 0.398717, 0.291013, 0.390924, + 0.377039, 0.362317, 0.324104, 0.398717, 0.356456, 0.318131, 0.315321, 0.321209, + 0.373675, 0.362091, 0.373959, 0.369449, 0.370717, 0.393904, 0.350879, 0.355071, + 0.322256, 0.357578, 0.377627, 0.437056, 0.396237, 0.437056, 0.357231, 0.297519, + 0.387163, 0.389742, 0.413912, 0.374848, 0.437056, 0.365316, 0.385118, 0.363842, + 0.30858, 0.381848, 0.354178, 0.32647, 0.299198, 0.356914, 0.35764, 0.405549, + 0.370576, 0.425376, 0.435356, 0.318489, 0.324561, 0.295974, 0.437056, 0.33609, + 0.383368, 0.374117, 0.421105, 0.437056, 0.381648, 0.352693, 0.437056, 0.3816, + 0.42807, 0.268712, 0.322676, 0.318311, 0.307936, 0.437056, 0.32249, 0.383368, + 0.405734, 0.286389, 0.358198, 0.367973, 0.325378, 0.355702, 0.367595, 0.402301, + 0.432464, 0.415106, 0.333175, 0.359405, 0.404003, 0.382687, 0.355702, 0.304018, + 0.405626, 0.308436, 0.353578, 0.339379, 0.437056, 0.383474, 0.349861, 0.343831, + 0.40856, 0.385483, 0.35943, 0.409976, 0.356437, 0.367652, 0.369748, 0.370851, + 0.336399, 0.326666, 0.372324, 0.374514, 0.317054, 0.38925, 0.377407, 0.349446, + 0.415202, 0.394036, 0.420521, 0.437056, 0.437056, 0.418209, 0.365553, 0.355742, + 0.371394, 0.339511, 0.370851, 0.377222, 0.369155, 0.31072, 0.357234, 0.412796, + 0.404113, 0.368018, 0.330735, 0.368529, 0.357834, 0.316281, 0.339976, 0.33387, + 0.387011, 0.354577, 0.412796, 0.357851, 0.329632, 0.32557, 0.32105, 0.297655, + 0.338539, 0.403709, 0.35033, 0.352608, 0.387619, 0.412796, 0.333941, 0.347183, + 0.302139, 0.412796, 0.412796, 0.349322, 0.368314, 0.317589, 0.335028, 0.407513, + 0.366446, 0.345646, 0.315165, 0.339043, 0.412796, 0.351713, 0.343854, 0.333485, + 0.356134, 0.306976, 0.272188, 0.348631, 0.407443, 0.296134, 0.397448, 0.374771, + 0.341447, 0.404113, 0.342794, 0.318948, 0.369215, 0.349097, 0.362327, 0.332076, + 0.365352, 0.397448, 0.379185, 0.332915, 0.387096, 0.389822, 0.386159, 0.314303, + 0.343459, 0.332881, 0.303915, 0.385996, 0.365352, 0.317887, 0.272545, 0.379603, + 0.35881, 0.309039, 0.400524, 0.343979, 0.378314, 0.366157, 0.33871, 0.346352, + 0.38195, 0.412796, 0.365452, 0.380615, 0.412796, 0.325906, 0.33658, 0.373197, + 0.355123, 0.28581, 0.412796, 0.323398, 0.360532, 0.412796, 0.346158, 0.368018, + 0.341127, 0.350992, 0.371989, 0.360188, 0.2846, 0.281752, 0.368951, 0.402206, + 0.360805, 0.382115, 0.310639, 0.408033, 0.373666, 0.383764, 0.345774, 0.400732, + 0.337596, 0.342832, 0.289939, 0.413355, 0.405649, 0.388607, 0.416164, 0.334705, + 0.371603, 0.33876, 0.362847, 0.38623, 0.279974, 0.352752, 0.410311, 0.294296, + 0.399918, 0.408639, 0.396146, 0.324048, 0.348186, 0.338272, 0.41409, 0.316317, + 0.313733, 0.416164, 0.416164, 0.375717, 0.413813, 0.365888, 0.33876, 0.376376, + 0.348664, 0.396968, 0.402257, 0.31561, 0.402755, 0.354078, 0.348473, 0.314243, + 0.299501, 0.329667, 0.393979, 0.31858, 0.410602, 0.416164, 0.395934, 0.348009, + 0.357258, 0.322405, 0.416164, 0.416164, 0.356017, 0.416164, 0.397194, 0.416164, + 0.398238, 0.360476, 0.416164, 0.330393, 0.39975, 0.38578, 0.373815, 0.388937, + 0.27297, 0.310564, 0.357319, 0.370602, 0.369006, 0.376197, 0.308045, 0.391022, + 0.397957, 0.329943, 0.416164, 0.40016, 0.309671, 0.318892, 0.352948, 0.384973, + 0.350486, 0.33329, 0.344882, 0.32893, 0.39847, 0.359525, 0.381334, 0.330826, + 0.388952, 0.345762, 0.382296, 0.384897, 0.327487, 0.357503, 0.41131, 0.357213, + 0.336008, 0.41131, 0.332213, 0.41131, 0.372074, 0.373669, 0.38779, 0.377984, + 0.341305, 0.38597, 0.378367, 0.295706, 0.325844, 0.361406, 0.393785, 0.281161, + 0.360846, 0.345873, 0.301227, 0.395005, 0.32572, 0.319046, 0.299442, 0.346982, + 0.332835, 0.287887, 0.398911, 0.379486, 0.39481, 0.328616, 0.385451, 0.41131, + 0.394098, 0.41131, 0.360114, 0.37111, 0.37073, 0.41131, 0.41131, 0.369772, + 0.305098, 0.299995, 0.363871, 0.366529, 0.296144, 0.310859, 0.370239, 0.382593, + 0.408931, 0.396215, 0.37987, 0.348995, 0.342832, 0.279033, 0.276496, 0.294879, + 0.348439, 0.351434, 0.334269, 0.41131, 0.40301, 0.286074, 0.41131, 0.378367, + 0.374573, 0.3428, 0.332332, 0.306617, 0.319906, 0.402376, 0.357863, 0.331733, + 0.288342, 0.394641, 0.386564, 0.305584, 0.35056, 0.400894, 0.41131, 0.348664, + 0.2988, 0.363537, 0.392771, 0.401536, 0.40914, 0.394446, 0.360894, 0.378944, + 0.321657, 0.322946, 0.294815, 0.392328, 0.317201, 0.401201, 0.333189, 0.306846, + 0.304346, 0.401201, 0.322282, 0.401201, 0.375782, 0.358522, 0.332021, 0.337589, + 0.297093, 0.335744, 0.362192, 0.372074, 0.343927, 0.355899, 0.401201, 0.355325, + 0.368465, 0.331907, 0.395639, 0.307174, 0.289142, 0.331007, 0.290558, 0.385427, + 0.392812, 0.305037, 0.292575, 0.332144, 0.322076, 0.376934, 0.34968, 0.316089, + 0.391249, 0.359983, 0.32511, 0.335832, 0.326312, 0.338961, 0.338976, 0.401201, + 0.378278, 0.323445, 0.359129, 0.365345, 0.39926, 0.361868, 0.277803, 0.386472, + 0.372749, 0.373043, 0.357964, 0.321007, 0.362192, 0.356641, 0.362332, 0.380414, + 0.39926, 0.363824, 0.319796, 0.32285, 0.359021, 0.350387, 0.401201, 0.37782, + 0.292778, 0.336474, 0.392328, 0.375175, 0.309125, 0.294989, 0.328428, 0.393755, + 0.303502, 0.346936, 0.295521, 0.327794, 0.401201, 0.28413, 0.335848, 0.401201, + 0.313135, 0.336854, 0.36424, 0.330237, 0.327794, 0.35067, 0.277368, 0.331118, + 0.401201, 0.341167, 0.395639, 0.401201, 0.33302, 0.319563, 0.426276, 0.43267, + 0.328824, 0.432373, 0.43267, 0.37624, 0.418726, 0.365699, 0.398746, 0.402629, + 0.329643, 0.322596, 0.310646, 0.408047, 0.316483, 0.345628, 0.344303, 0.361839, + 0.376772, 0.424949, 0.43267, 0.361347, 0.360863, 0.394184, 0.393479, 0.355723, + 0.43267, 0.357677, 0.31106, 0.419884, 0.334338, 0.423162, 0.428204, 0.33749, + 0.356366, 0.376344, 0.308526, 0.367073, 0.353705, 0.43267, 0.353419, 0.350477, + 0.367082, 0.43267, 0.429616, 0.367528, 0.384171, 0.315237, 0.393478, 0.429616, + 0.339083, 0.341972, 0.295198, 0.348376, 0.343069, 0.424912, 0.378695, 0.358624, + 0.330081, 0.382441, 0.399883, 0.387575, 0.309083, 0.361839, 0.305909, 0.330106, + 0.411098, 0.36821, 0.332184, 0.345764, 0.343843, 0.360475, 0.35464, 0.382659, + 0.381828, 0.34253, 0.34615, 0.354163, 0.43267, 0.43267, 0.407435, 0.429616, + 0.387055, 0.369557, 0.43267, 0.43267, 0.298356, 0.40836, 0.403647, 0.411782, + 0.41953, 0.356693, 0.429616, 0.424148, 0.383597, 0.33335, 0.42703, 0.401783, + 0.416439, 0.28716}, + {900, 100, 800, 100, 700, 100, 500, 200, 300, 200, 100, 100, 200, 100, 100, 100, 100, 100, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, + Common::CLUSTER_SELECTION_METHOD::EOM, + false, + 0.0, + {9, 2, 8, 9, 9, 5, 6, 0, 0, 0, 4, 0, 9, 1, 9, 8, 7, 6, 8, 6, 0, 3, 0, 6, 8, 9, 4, 7, 1, + 2, 9, 3, 4, 3, 5, 2, 4, 2, 8, 6, 0, 1, 3, 5, 3, 4, 3, 3, 2, 9, 2, 4, 6, 7, 0, 8, 5, 0, + 3, 0, 5, 7, 7, 0, 8, 4, 4, 8, 8, 2, 8, 6, 5, 3, 7, 0, 8, 9, 6, 5, 1, 8, 3, 1, 4, 1, 2, + 3, 2, 5, 4, 5, 7, 5, 5, 3, 5, 9, 7, 0, 1, 4, 8, 9, 3, 4, 8, 6, 2, 6, 0, 8, 4, 6, 2, 2, + 7, 0, 1, 6, 0, 3, 2, 9, 6, 4, 5, 6, 1, 4, 4, 9, 2, 7, 1, 5, 6, 8, 5, 4, 2, 6, 7, 1, 4, + 5, 2, 1, 3, 2, 1, 9, 7, 0, 5, 1, 7, 7, 4, 2, 3, 9, 9, 7, 6, 6, 0, 5, 1, 2, 8, 1, 1, 7, + 3, 3, 9, 7, 1, 7, 9, 9, 6, 2, 8, 1, 0, 1, 3, 5, 8, 7, 0, 6, 9, 5, 8, 3, 7, 4}, + {0.78846246, 0.7849741, 0.937459, 0.7879698, 0.7145324, 0.69530874, 0.891888, + 0.88132507, 0.7182645, 0.8545426, 0.9300125, 0.67259413, 0.6634503, 0.8718482, + 0.8682387, 0.88102984, 1.0, 0.8767183, 0.7021334, 1.0, 0.91331875, + 0.9947582, 0.8429277, 0.76598513, 0.9316941, 0.8204941, 0.7420175, 0.7653661, + 0.96096206, 0.9490603, 0.85148084, 1.0, 0.88101643, 0.9286598, 0.8888738, + 0.8281054, 0.8064258, 0.74586207, 0.96311015, 0.6262373, 0.6119416, 0.81256336, + 0.8981358, 0.88311315, 0.9368603, 0.96779734, 1.0, 0.8786544, 0.7550972, + 0.84879047, 0.92892593, 0.76864564, 0.9608688, 0.8873914, 0.9613044, 0.83862036, + 0.8335599, 0.69317526, 0.9724107, 0.9421649, 0.95863754, 0.9092269, 0.8734039, + 0.87950224, 0.9222009, 0.787177, 0.69281447, 0.8093117, 0.97554255, 0.81599283, + 0.89801544, 0.8387986, 0.9083558, 0.83843285, 0.8811393, 0.8639771, 0.9148821, + 0.85135794, 0.7230753, 0.860122, 0.93063366, 0.9793279, 0.9580142, 0.8849203, + 0.94008243, 0.7849559, 0.87001556, 0.9347257, 0.7067981, 0.8687189, 0.7648523, + 0.8955655, 0.980858, 1.0, 0.862825, 0.775708, 0.8236452, 0.8161936, + 0.8614508, 0.94244635, 1.0, 0.73252815, 0.8437488, 0.8448594, 0.9435349, + 0.97876644, 0.884773, 0.72953635, 0.7480388, 1.0, 0.9182666, 0.7623391, + 0.6656271, 0.9488006, 0.7630241, 0.7011484, 0.649366, 0.7918839, 0.8639346, + 0.93697715, 0.7992577, 0.76674926, 0.9192806, 0.8226126, 0.8549355, 0.7315127, + 0.9998518, 0.9806381, 0.79453516, 0.8199058, 0.7388057, 0.9623143, 0.90600365, + 0.8394823, 0.990545, 0.7378503, 0.7435042, 0.8281979, 0.90617263, 0.7777961, + 0.9055647, 0.87161446, 0.8944556, 0.77123886, 0.75549823, 0.78260374, 0.877213, + 1.0, 0.9303909, 0.867675, 0.87624264, 0.8818508, 0.923018, 0.8841391, + 0.91878325, 0.7453629, 0.8917042, 0.7431318, 1.0, 0.9916206, 0.8906759, + 0.9782674, 0.85721254, 0.97126245, 1.0, 0.8641099, 0.8171247, 0.9731305, + 1.0, 0.8699122, 0.8259164, 0.7988863, 1.0, 0.7220662, 0.96562165, + 0.79851115, 0.6863839, 0.8905847, 0.83507586, 0.80355006, 0.9839154, 0.95146024, + 0.89326334, 0.85242677, 0.84625447, 0.86827004, 0.75781137, 0.65571195, 0.8325561, + 0.9011331, 0.77075315, 0.9326203, 0.8810431, 0.90232337, 0.8286241, 1.0, + 0.83256954, 0.83346933, 0.83974075, 0.6880056}}}; }; // namespace HDBSCAN }; // namespace ML \ No newline at end of file diff --git a/cpp/test/sg/hdbscan_test.cu b/cpp/test/sg/hdbscan_test.cu index a23e019d9a..b546818112 100644 --- a/cpp/test/sg/hdbscan_test.cu +++ b/cpp/test/sg/hdbscan_test.cu @@ -24,6 +24,8 @@ #include #include #include +#include +#include #include #include @@ -37,6 +39,9 @@ #include #include +#include +#include + #include "../prims/test_utils.h" namespace ML { @@ -334,6 +339,23 @@ INSTANTIATE_TEST_CASE_P(ClusterSelectionTest, ClusterSelectionTestF_Int, ::testing::ValuesIn(cluster_selection_inputs)); +// This test was constructed in the following manner: The same condensed tree and set of selected +// clusters need to be passed to the reference implementation and then compare the results from +// cuML and the reference implementation for an approximate match of probabilities. To fetch the +// condensed hierarchy in the same format as required by the reference implementation, a simple +// python script can be written: +// 1. Print the parents, children, lambdas and sizes array of the condensed hierarchy. +// 2. Convert them into a list ``condensed_tree`` of tuples where each tuples is of the form. +// ``(parents[i], children[i], lambdas[i], sizes[i])`` +// 3. Convert the list into a numpy array with the following command: +// ``condensed_tree_array = np.array(condened_tree, dtype=[('parent', np.intp), ('child', +// np.intp), ('lambda_val', float), ('child_size', +// np.intp)])`` +// 4. Store it in a pickle file. +// The reference source code is modified in the following way: Edit the raw tree in the init +// function of the PredictionData object in prediction.py by loading it from the pickle file. Also +// edit the selected clusters array. Do the same in the all_points_membership_vectors function and +// the approximate_predict functions. template class SoftClusteringTest : public ::testing::TestWithParam> { protected: @@ -413,13 +435,12 @@ class SoftClusteringTest : public ::testing::TestWithParam +class ApproximatePredictTest : public ::testing::TestWithParam> { + public: + void transformLabels(const raft::handle_t& handle, IdxT* labels, IdxT* label_map, IdxT m) + { + thrust::transform( + handle.get_thrust_policy(), labels, labels + m, labels, [label_map] __device__(IdxT label) { + if (label != -1) return label_map[label]; + return -1; + }); + } + + protected: + void basicTest() + { + raft::handle_t handle; + + params = ::testing::TestWithParam>::GetParam(); + + rmm::device_uvector condensed_parents(params.condensed_parents.size(), + handle.get_stream()); + rmm::device_uvector condensed_children(params.condensed_children.size(), + handle.get_stream()); + rmm::device_uvector condensed_lambdas(params.condensed_lambdas.size(), handle.get_stream()); + rmm::device_uvector condensed_sizes(params.condensed_sizes.size(), handle.get_stream()); + + raft::copy(condensed_parents.data(), + params.condensed_parents.data(), + condensed_parents.size(), + handle.get_stream()); + + raft::copy(condensed_children.data(), + params.condensed_children.data(), + condensed_children.size(), + handle.get_stream()); + + raft::copy(condensed_lambdas.data(), + params.condensed_lambdas.data(), + condensed_lambdas.size(), + handle.get_stream()); + + raft::copy(condensed_sizes.data(), + params.condensed_sizes.data(), + condensed_sizes.size(), + handle.get_stream()); + + rmm::device_uvector data(params.n_row * params.n_col, handle.get_stream()); + raft::copy(data.data(), params.data.data(), data.size(), handle.get_stream()); + + rmm::device_uvector points_to_predict(params.n_points_to_predict * params.n_col, + handle.get_stream()); + raft::copy(points_to_predict.data(), + params.points_to_predict.data(), + points_to_predict.size(), + handle.get_stream()); + + ML::HDBSCAN::Common::CondensedHierarchy condensed_tree(handle, + params.n_row, + params.condensed_parents.size(), + condensed_parents.data(), + condensed_children.data(), + condensed_lambdas.data(), + condensed_sizes.data()); + + rmm::device_uvector label_map(params.n_row, handle.get_stream()); + + // intermediate outputs + rmm::device_uvector stabilities(params.n_row, handle.get_stream()); + rmm::device_uvector probabilities(params.n_row, handle.get_stream()); + rmm::device_uvector labels(params.n_row, handle.get_stream()); + + int n_selected_clusters = + ML::HDBSCAN::detail::Extract::extract_clusters(handle, + condensed_tree, + params.n_row, + labels.data(), + stabilities.data(), + probabilities.data(), + label_map.data(), + params.cluster_selection_method, + params.allow_single_cluster, + 0, + params.cluster_selection_epsilon); + + ML::HDBSCAN::Common::PredictionData pred_data(handle, params.n_row, params.n_col); + + auto stream = handle.get_stream(); + rmm::device_uvector mutual_reachability_indptr(params.n_row + 1, stream); + raft::sparse::COO mutual_reachability_coo(stream, + (params.min_samples + 1) * params.n_row * 2); + + ML::HDBSCAN::detail::Reachability::mutual_reachability_graph( + handle, + data.data(), + (size_t)params.n_row, + (size_t)params.n_col, + raft::distance::DistanceType::L2SqrtExpanded, + params.min_samples + 1, + (float)1.0, + mutual_reachability_indptr.data(), + pred_data.get_core_dists(), + mutual_reachability_coo); + + ML::HDBSCAN::Common::build_prediction_data( + handle, condensed_tree, labels.data(), label_map.data(), n_selected_clusters, pred_data); + + // outputs + rmm::device_uvector out_labels(params.n_points_to_predict, handle.get_stream()); + rmm::device_uvector out_probabilities(params.n_points_to_predict, handle.get_stream()); + + transformLabels(handle, labels.data(), label_map.data(), params.n_row); + + ML::out_of_sample_predict(handle, + condensed_tree, + pred_data, + const_cast(data.data()), + labels.data(), + const_cast(points_to_predict.data()), + (size_t)params.n_points_to_predict, + raft::distance::DistanceType::L2SqrtExpanded, + params.min_samples, + out_labels.data(), + out_probabilities.data()); + + handle.sync_stream(handle.get_stream()); + cudaDeviceSynchronize(); + + ASSERT_TRUE(raft::devArrMatch(out_labels.data(), + params.expected_labels.data(), + params.n_points_to_predict, + raft::Compare(), + handle.get_stream())); + + ASSERT_TRUE(raft::devArrMatch(out_probabilities.data(), + params.expected_probabilities.data(), + params.n_points_to_predict, + raft::CompareApprox(1e-2), + handle.get_stream())); + } + + void SetUp() override { basicTest(); } + + void TearDown() override {} + + protected: + ApproximatePredictInputs params; + // T score; +}; + +typedef ApproximatePredictTest ApproximatePredictTestF_Int; +TEST_P(ApproximatePredictTestF_Int, Result) { EXPECT_TRUE(true); } + +INSTANTIATE_TEST_CASE_P(ApproximatePredictTest, + ApproximatePredictTestF_Int, + ::testing::ValuesIn(approximate_predict_inputs)); } // namespace HDBSCAN } // end namespace ML diff --git a/python/cuml/cluster/CMakeLists.txt b/python/cuml/cluster/CMakeLists.txt index 3c39f06d34..0443780145 100644 --- a/python/cuml/cluster/CMakeLists.txt +++ b/python/cuml/cluster/CMakeLists.txt @@ -19,6 +19,7 @@ set(cython_sources dbscan.pyx hdbscan.pyx kmeans.pyx + prediction.pyx ) if(NOT SINGLEGPU) diff --git a/python/cuml/cluster/__init__.py b/python/cuml/cluster/__init__.py index bd3c38174f..0139eb525f 100644 --- a/python/cuml/cluster/__init__.py +++ b/python/cuml/cluster/__init__.py @@ -19,4 +19,5 @@ from cuml.cluster.agglomerative import AgglomerativeClustering from cuml.cluster.hdbscan import HDBSCAN from cuml.cluster.hdbscan import condense_hierarchy -from cuml.cluster.hdbscan import all_points_membership_vectors +from cuml.cluster.prediction import all_points_membership_vectors +from cuml.cluster.prediction import approximate_predict diff --git a/python/cuml/cluster/hdbscan.pyx b/python/cuml/cluster/hdbscan.pyx index e132d6d7e6..9e4db43841 100644 --- a/python/cuml/cluster/hdbscan.pyx +++ b/python/cuml/cluster/hdbscan.pyx @@ -70,6 +70,7 @@ cdef extern from "cuml/cluster/hdbscan.hpp" namespace "ML::HDBSCAN::Common": int get_n_leaves() int get_n_clusters() float *get_stabilities() + int *get_labels() CondensedHierarchy[int, float] &get_condensed_tree() cdef cppclass HDBSCANParams: @@ -88,6 +89,9 @@ cdef extern from "cuml/cluster/hdbscan.hpp" namespace "ML::HDBSCAN::Common": int m, int n) + size_t n_rows + size_t n_cols + cdef extern from "cuml/cluster/hdbscan.hpp" namespace "ML": void hdbscan(const handle_t & handle, @@ -105,6 +109,14 @@ cdef extern from "cuml/cluster/hdbscan.hpp" namespace "ML": hdbscan_output & output, PredictionData & prediction_data_) + void hdbscan(const handle_t & handle, + const float* X, + size_t m, size_t n, + DistanceType metric, + HDBSCANParams& params, + hdbscan_output & output, + PredictionData & prediction_data_) + void build_condensed_hierarchy( const handle_t &handle, const int *children, @@ -122,14 +134,6 @@ cdef extern from "cuml/cluster/hdbscan.hpp" namespace "ML": bool allow_single_cluster, int max_cluster_size, float cluster_selection_epsilon) - void _all_points_membership_vectors( - const handle_t &handle, - CondensedHierarchy[int, float] &condensed_tree, - PredictionData[int, float] &prediction_data_, - float* membership_vec, - float* X, - DistanceType metric) - _metrics_mapping = { 'l1': DistanceType.L1, 'cityblock': DistanceType.L1, @@ -397,7 +401,6 @@ class HDBSCAN(Base, ClusterMixin, CMajorInputTagMixin): persist the clustering object for later re-use you probably want to set this to True. - Attributes ---------- labels_ : ndarray, shape (n_samples, ) @@ -604,6 +607,7 @@ class HDBSCAN(Base, ClusterMixin, CMajorInputTagMixin): if self.prediction_data: self.X_m = X_m self.n_rows = n_rows + self.n_cols = n_cols cdef uintptr_t input_ptr = X_m.ptr @@ -671,11 +675,11 @@ class HDBSCAN(Base, ClusterMixin, CMajorInputTagMixin): else: raise ValueError("'affinity' %s not supported." % self.affinity) - cdef PredictionData[int, float] *pred_data = new PredictionData( + cdef PredictionData[int, float] *prediction_data_ = new PredictionData( handle_[0], n_rows, n_cols) if self.connectivity == 'knn': if self.prediction_data: - self._prediction_data = pred_data + self.prediction_data_ptr = prediction_data_ hdbscan(handle_[0], input_ptr, n_rows, @@ -683,7 +687,8 @@ class HDBSCAN(Base, ClusterMixin, CMajorInputTagMixin): metric, params, deref(linkage_output), - deref(pred_data)) + deref(prediction_data_)) + else: hdbscan(handle_[0], input_ptr, @@ -786,42 +791,3 @@ class HDBSCAN(Base, ClusterMixin, CMajorInputTagMixin): "gen_min_span_tree", "prediction_data" ] - - -def all_points_membership_vectors(clusterer): - if not clusterer.fit_called_: - raise ValueError("The clusterer is not fit on data. " - "Please call clusterer.fit first") - - if not clusterer.prediction_data: - raise ValueError("PredictionData not generated. " - "Please call clusterer.fit again with " - "prediction_data=True") - - cdef uintptr_t input_ptr = clusterer.X_m.ptr - - membership_vec = CumlArray.empty( - (clusterer.n_rows * clusterer.n_clusters_,), - dtype="float32") - - cdef uintptr_t membership_vec_ptr = membership_vec.ptr - - cdef hdbscan_output *hdbscan_output_ = \ - clusterer.hdbscan_output_ - - cdef PredictionData *pred_data_ = \ - clusterer._prediction_data - - cdef handle_t* handle_ = clusterer.handle.getHandle() - _all_points_membership_vectors(handle_[0], - hdbscan_output_.get_condensed_tree(), - deref(pred_data_), - membership_vec_ptr, - input_ptr, - _metrics_mapping[clusterer.metric]) - - clusterer.handle.sync() - return membership_vec.to_output( - output_type="numpy", - output_dtype="float32").reshape((clusterer.n_rows, - clusterer.n_clusters_)) diff --git a/python/cuml/cluster/prediction.pyx b/python/cuml/cluster/prediction.pyx new file mode 100644 index 0000000000..3e92b064a3 --- /dev/null +++ b/python/cuml/cluster/prediction.pyx @@ -0,0 +1,268 @@ +# Copyright (c) 2021-2022, NVIDIA CORPORATION. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +# distutils: language = c++ + +from libc.stdint cimport uintptr_t + +from cython.operator cimport dereference as deref + +import numpy as np +import cupy as cp + +from cuml.common.array import CumlArray +from cuml.common.base import Base +from cuml.common.doc_utils import generate_docstring +from raft.common.handle cimport handle_t + +from raft.common.handle import Handle +from cuml.common import input_to_cuml_array +from cuml.common.array_descriptor import CumlArrayDescriptor +from cuml.common.mixins import ClusterMixin +from cuml.common.mixins import CMajorInputTagMixin +from cuml.common import logger +from cuml.common.import_utils import has_hdbscan_plots + +import cuml +from cuml.metrics.distance_type cimport DistanceType + + +cdef extern from "cuml/cluster/hdbscan.hpp" namespace "ML::HDBSCAN::Common": + + cdef cppclass CondensedHierarchy[value_idx, value_t]: + CondensedHierarchy( + const handle_t &handle, size_t n_leaves) + + value_idx *get_parents() + value_idx *get_children() + value_t *get_lambdas() + value_idx get_n_edges() + + cdef cppclass hdbscan_output[int, float]: + hdbscan_output(const handle_t &handle, + int n_leaves, + int *labels, + float *probabilities, + int *children, + int *sizes, + float *deltas, + int *mst_src, + int *mst_dst, + float *mst_weights) + + int get_n_leaves() + int get_n_clusters() + float *get_stabilities() + int *get_labels() + CondensedHierarchy[int, float] &get_condensed_tree() + + cdef cppclass PredictionData[int, float]: + PredictionData(const handle_t &handle, + int m, + int n) + + size_t n_rows + size_t n_cols + +cdef extern from "cuml/cluster/hdbscan.hpp" namespace "ML": + + void compute_all_points_membership_vectors( + const handle_t &handle, + CondensedHierarchy[int, float] &condensed_tree, + PredictionData[int, float] &prediction_data_, + float* X, + DistanceType metric, + float* membership_vec) + + void out_of_sample_predict(const handle_t &handle, + CondensedHierarchy[int, float] &condensed_tree, + PredictionData[int, float] &prediction_data, + float* X, + int* labels, + float* points_to_predict, + size_t n_prediction_points, + DistanceType metric, + int min_samples, + int* out_labels, + float* out_probabilities) + +_metrics_mapping = { + 'l1': DistanceType.L1, + 'cityblock': DistanceType.L1, + 'manhattan': DistanceType.L1, + 'l2': DistanceType.L2SqrtExpanded, + 'euclidean': DistanceType.L2SqrtExpanded, + 'cosine': DistanceType.CosineExpanded +} + + +def all_points_membership_vectors(clusterer): + + """ + Predict soft cluster membership vectors for all points in the + original dataset the clusterer was trained on. This function is more + efficient by making use of the fact that all points are already in the + condensed tree, and processing in bulk. + + Parameters + ---------- + clusterer : HDBSCAN + A clustering object that has been fit to the data and + had ``prediction_data=True`` set. + + Returns + ------- + membership_vectors : array (n_samples, n_clusters) + The probability that point ``i`` of the original dataset is a member of + cluster ``j`` is in ``membership_vectors[i, j]``. + """ + + if not clusterer.fit_called_: + raise ValueError("The clusterer is not fit on data. " + "Please call clusterer.fit first") + + if not clusterer.prediction_data: + raise ValueError("PredictionData not generated. " + "Please call clusterer.fit again with " + "prediction_data=True") + + if clusterer.n_clusters_ == 0: + return np.zeros(clusterer.n_rows, dtype=np.float32) + + cdef uintptr_t input_ptr = clusterer.X_m.ptr + + membership_vec = CumlArray.empty( + (clusterer.n_rows * clusterer.n_clusters_,), + dtype="float32") + + cdef uintptr_t membership_vec_ptr = membership_vec.ptr + + cdef hdbscan_output *hdbscan_output_ = \ + clusterer.hdbscan_output_ + + cdef PredictionData *prediction_data_ = \ + clusterer.prediction_data_ptr + + cdef handle_t* handle_ = clusterer.handle.getHandle() + compute_all_points_membership_vectors(handle_[0], + hdbscan_output_.get_condensed_tree(), + deref(prediction_data_), + input_ptr, + _metrics_mapping[clusterer.metric], + membership_vec_ptr) + + clusterer.handle.sync() + return membership_vec.to_output( + output_type="numpy", + output_dtype="float32").reshape((clusterer.n_rows, + clusterer.n_clusters_)) + + +def approximate_predict(clusterer, points_to_predict, convert_dtype=True): + """Predict the cluster label of new points. The returned labels + will be those of the original clustering found by ``clusterer``, + and therefore are not (necessarily) the cluster labels that would + be found by clustering the original data combined with + ``points_to_predict``, hence the 'approximate' label. + + If you simply wish to assign new points to an existing clustering + in the 'best' way possible, this is the function to use. If you + want to predict how ``points_to_predict`` would cluster with + the original data under HDBSCAN the most efficient existing approach + is to simply recluster with the new point(s) added to the original dataset. + + Parameters + ---------- + clusterer : HDBSCAN + A clustering object that has been fit to the data and + had ``prediction_data=True`` set. + + points_to_predict : array, or array-like (n_samples, n_features) + The new data points to predict cluster labels for. They should + have the same dimensionality as the original dataset over which + clusterer was fit. + + Returns + ------- + labels : array (n_samples,) + The predicted labels of the ``points_to_predict`` + + probabilities : array (n_samples,) + The soft cluster scores for each of the ``points_to_predict`` + """ + + if not clusterer.fit_called_: + raise ValueError("The clusterer is not fit on data. " + "Please call clusterer.fit first") + + if not clusterer.prediction_data: + raise ValueError("PredictionData not generated. " + "Please call clusterer.fit again with " + "prediction_data=True") + + if clusterer.n_clusters_ == 0: + logger.warn( + 'Clusterer does not have any defined clusters, new data ' + 'will be automatically predicted as outliers.' + ) + + points_to_predict_m, n_prediction_points, n_cols, _ = \ + input_to_cuml_array(points_to_predict, order='C', + check_dtype=[np.float32], + convert_to_dtype=(np.float32 + if convert_dtype + else None)) + + if n_cols != clusterer.n_cols: + raise ValueError('New points dimension does not match fit data!') + + cdef uintptr_t prediction_ptr = points_to_predict_m.ptr + cdef uintptr_t input_ptr = clusterer.X_m.ptr + + prediction_labels = CumlArray.empty( + (n_prediction_points,), + dtype="int32") + + cdef uintptr_t prediction_labels_ptr = prediction_labels.ptr + + prediction_probs = CumlArray.empty( + (n_prediction_points,), + dtype="float32") + + cdef uintptr_t prediction_probs_ptr = prediction_probs.ptr + + cdef hdbscan_output *hdbscan_output_ = \ + clusterer.hdbscan_output_ + + cdef PredictionData *prediction_data_ = \ + clusterer.prediction_data_ptr + + cdef handle_t* handle_ = clusterer.handle.getHandle() + + out_of_sample_predict(handle_[0], + hdbscan_output_.get_condensed_tree(), + deref(prediction_data_), + input_ptr, + hdbscan_output_.get_labels(), + prediction_ptr, + n_prediction_points, + _metrics_mapping[clusterer.metric], + clusterer.min_samples, + prediction_labels_ptr, + prediction_probs_ptr) + + clusterer.handle.sync() + return prediction_labels.to_output(output_type="numpy"),\ + prediction_probs.to_output(output_type="numpy", output_dtype="float32") diff --git a/python/cuml/tests/test_hdbscan.py b/python/cuml/tests/test_hdbscan.py index e6c536ece5..b3476cef52 100644 --- a/python/cuml/tests/test_hdbscan.py +++ b/python/cuml/tests/test_hdbscan.py @@ -16,12 +16,14 @@ import pytest -from cuml.cluster import HDBSCAN, all_points_membership_vectors +from cuml.cluster import HDBSCAN +from cuml.cluster.prediction import all_points_membership_vectors,\ + approximate_predict from cuml.cluster import condense_hierarchy from sklearn.datasets import make_blobs from cuml.metrics import adjusted_rand_score -from cuml.testing.utils import get_pattern +from cuml.testing.utils import get_pattern, array_equal import numpy as np @@ -31,7 +33,7 @@ from hdbscan.plots import CondensedTree from sklearn import datasets - +from sklearn.model_selection import train_test_split import cupy as cp test_datasets = { @@ -131,17 +133,19 @@ def assert_condensed_trees(sk_agg, min_cluster_size): assert lev > 1 -def assert_all_points_membership_vectors(cu_vecs, sk_vecs): - i = 0 - while i < sk_vecs.shape[0]: - total_nz = 0 - for j in range(sk_vecs.shape[1]): - if sk_vecs[i][j] < 1e-3 or cu_vecs[i][j] < 1e-3: - break - total_nz += 1 - if total_nz == sk_vecs.shape[1]: - assert np.allclose(cu_vecs[i], sk_vecs[i], atol=0.1, rtol=0.1) - i += 1 +def assert_membership_vectors(cu_vecs, sk_vecs): + """ + Assert the membership vectors by taking the adjusted rand score + of the argsorted membership vectors. + """ + if sk_vecs.shape == cu_vecs.shape: + cu_labels_sorted = np.argsort(cu_vecs)[::-1] + sk_labels_sorted = np.argsort(sk_vecs)[::-1] + + k = min(sk_vecs.shape[1], 10) + for i in range(k): + assert adjusted_rand_score(cu_labels_sorted[:, i], + sk_labels_sorted[:, i]) >= 0.90 @pytest.mark.parametrize('nrows', [500]) @@ -462,7 +466,7 @@ def test_hdbscan_plots(): assert cuml_agg.minimum_spanning_tree_ is None -@pytest.mark.parametrize('nrows', [1000, 10000]) +@pytest.mark.parametrize('nrows', [1000]) @pytest.mark.parametrize('ncols', [10, 25]) @pytest.mark.parametrize('nclusters', [10, 15]) @pytest.mark.parametrize('allow_single_cluster', [False, True]) @@ -470,14 +474,14 @@ def test_hdbscan_plots(): @pytest.mark.parametrize('cluster_selection_epsilon', [0.0, 0.5]) @pytest.mark.parametrize('max_cluster_size', [0]) @pytest.mark.parametrize('cluster_selection_method', ['eom', 'leaf']) -def test_all_points_membership_vectors(nrows, - ncols, - nclusters, - cluster_selection_epsilon, - cluster_selection_method, - min_cluster_size, - allow_single_cluster, - max_cluster_size): +def test_all_points_membership_vectors_blobs(nrows, + ncols, + nclusters, + cluster_selection_epsilon, + cluster_selection_method, + min_cluster_size, + allow_single_cluster, + max_cluster_size): X, y = make_blobs(n_samples=nrows, n_features=ncols, centers=nclusters, @@ -511,6 +515,354 @@ def test_all_points_membership_vectors(nrows, sk_membership_vectors = hdbscan.all_points_membership_vectors( sk_agg).astype("float32") sk_membership_vectors.sort(axis=1) - assert_all_points_membership_vectors( + assert_membership_vectors( + cu_membership_vectors, + sk_membership_vectors) + + +@pytest.mark.parametrize('nrows', [1000]) +@pytest.mark.parametrize('min_samples', [5, 15]) +@pytest.mark.parametrize('min_cluster_size', [300, 500]) +@pytest.mark.parametrize('cluster_selection_epsilon', [0.0, 0.5]) +@pytest.mark.parametrize('allow_single_cluster', [True, False]) +@pytest.mark.parametrize('max_cluster_size', [0]) +@pytest.mark.parametrize('cluster_selection_method', ['eom', 'leaf']) +@pytest.mark.parametrize('connectivity', ['knn']) +def test_all_points_membership_vectors_circles(nrows, + min_samples, + cluster_selection_epsilon, + cluster_selection_method, + min_cluster_size, + allow_single_cluster, + max_cluster_size, + connectivity): + + X, y = datasets.make_moons(n_samples=nrows, noise=.05, random_state=42) + + cuml_agg = HDBSCAN(verbose=logger.level_info, + min_samples=min_samples, + allow_single_cluster=allow_single_cluster, + max_cluster_size=max_cluster_size, + min_cluster_size=min_cluster_size, + cluster_selection_epsilon=cluster_selection_epsilon, + cluster_selection_method=cluster_selection_method, + prediction_data=True) + cuml_agg.fit(X) + + sk_agg = hdbscan.HDBSCAN( + min_samples=min_samples, + allow_single_cluster=allow_single_cluster, + approx_min_span_tree=False, + gen_min_span_tree=True, + min_cluster_size=min_cluster_size, + cluster_selection_epsilon=cluster_selection_epsilon, + cluster_selection_method=cluster_selection_method, + algorithm="generic", + prediction_data=True) + + sk_agg.fit(X) + + cu_membership_vectors = all_points_membership_vectors(cuml_agg) + sk_membership_vectors = hdbscan.all_points_membership_vectors( + sk_agg).astype("float32") + + assert_membership_vectors( cu_membership_vectors, sk_membership_vectors) + + +@pytest.mark.parametrize('nrows', [1000]) +@pytest.mark.parametrize('min_samples', [5, 15]) +@pytest.mark.parametrize('min_cluster_size', [300, 500]) +@pytest.mark.parametrize('cluster_selection_epsilon', [0.0, 0.5]) +@pytest.mark.parametrize('allow_single_cluster', [True, False]) +@pytest.mark.parametrize('max_cluster_size', [0]) +@pytest.mark.parametrize('cluster_selection_method', ['eom', 'leaf']) +@pytest.mark.parametrize('connectivity', ['knn']) +def test_all_points_membership_vectors_moons(nrows, + min_samples, + cluster_selection_epsilon, + cluster_selection_method, + min_cluster_size, + allow_single_cluster, + max_cluster_size, + connectivity): + X, y = datasets.make_circles(n_samples=nrows, + factor=.5, + noise=.05, + random_state=42) + + cuml_agg = HDBSCAN(verbose=logger.level_info, + min_samples=min_samples, + allow_single_cluster=allow_single_cluster, + max_cluster_size=max_cluster_size, + min_cluster_size=min_cluster_size, + cluster_selection_epsilon=cluster_selection_epsilon, + cluster_selection_method=cluster_selection_method, + prediction_data=True) + cuml_agg.fit(X) + + sk_agg = hdbscan.HDBSCAN( + min_samples=min_samples, + allow_single_cluster=allow_single_cluster, + approx_min_span_tree=False, + gen_min_span_tree=True, + min_cluster_size=min_cluster_size, + cluster_selection_epsilon=cluster_selection_epsilon, + cluster_selection_method=cluster_selection_method, + algorithm="generic", + prediction_data=True) + + sk_agg.fit(X) + + cu_membership_vectors = all_points_membership_vectors(cuml_agg) + sk_membership_vectors = hdbscan.all_points_membership_vectors( + sk_agg).astype("float32") + + assert_membership_vectors( + cu_membership_vectors, + sk_membership_vectors) + + +@pytest.mark.parametrize('nrows', [1000]) +@pytest.mark.parametrize('n_points_to_predict', [200, 500]) +@pytest.mark.parametrize('ncols', [10, 25]) +@pytest.mark.parametrize('nclusters', [15]) +@pytest.mark.parametrize('min_cluster_size', [30, 60]) +@pytest.mark.parametrize('cluster_selection_epsilon', [0.0, 0.5]) +@pytest.mark.parametrize('max_cluster_size', [0]) +@pytest.mark.parametrize('allow_single_cluster', [True, False]) +@pytest.mark.parametrize('cluster_selection_method', ['eom', 'leaf']) +def test_approximate_predict_blobs(nrows, + n_points_to_predict, + ncols, + nclusters, + cluster_selection_epsilon, + cluster_selection_method, + min_cluster_size, + max_cluster_size, + allow_single_cluster): + X, y = make_blobs(n_samples=nrows, + n_features=ncols, + centers=nclusters, + cluster_std=0.7, + shuffle=True, + random_state=42) + + points_to_predict, _ = make_blobs(n_samples=n_points_to_predict, + n_features=ncols, + centers=nclusters, + cluster_std=0.7, + shuffle=True, + random_state=42) + + cuml_agg = HDBSCAN(verbose=logger.level_info, + allow_single_cluster=allow_single_cluster, + max_cluster_size=max_cluster_size, + min_cluster_size=min_cluster_size, + cluster_selection_epsilon=cluster_selection_epsilon, + cluster_selection_method=cluster_selection_method, + prediction_data=True) + cuml_agg.fit(X) + + sk_agg = hdbscan.HDBSCAN( + allow_single_cluster=allow_single_cluster, + approx_min_span_tree=False, + gen_min_span_tree=True, + min_cluster_size=min_cluster_size, + cluster_selection_epsilon=cluster_selection_epsilon, + cluster_selection_method=cluster_selection_method, + algorithm="generic", + prediction_data=True) + + sk_agg.fit(cp.asnumpy(X)) + + cu_labels, cu_probs = approximate_predict(cuml_agg, points_to_predict) + sk_labels, sk_probs = hdbscan.approximate_predict( + sk_agg, points_to_predict) + + assert(adjusted_rand_score(cu_labels, sk_labels) >= 0.95) + assert np.allclose(cu_probs, sk_probs, atol=0.05) + + +@pytest.mark.parametrize('nrows', [1000]) +@pytest.mark.parametrize('n_points_to_predict', [50]) +@pytest.mark.parametrize('min_samples', [15, 30]) +@pytest.mark.parametrize('cluster_selection_epsilon', [0.0, 0.5]) +@pytest.mark.parametrize('min_cluster_size', [5, 15]) +@pytest.mark.parametrize('allow_single_cluster', [True, False]) +@pytest.mark.parametrize('max_cluster_size', [0]) +@pytest.mark.parametrize('cluster_selection_method', ['eom', 'leaf']) +@pytest.mark.parametrize('connectivity', ['knn']) +def test_approximate_predict_moons(nrows, + n_points_to_predict, + min_samples, + cluster_selection_epsilon, + min_cluster_size, + allow_single_cluster, + max_cluster_size, + cluster_selection_method, + connectivity): + + X, y = datasets.make_moons(n_samples=nrows+n_points_to_predict, + noise=.05, random_state=42) + + X_train = X[:nrows] + X_test = X[nrows:] + + cuml_agg = HDBSCAN(verbose=logger.level_info, + allow_single_cluster=allow_single_cluster, + min_samples=min_samples, + max_cluster_size=max_cluster_size, + min_cluster_size=min_cluster_size, + cluster_selection_epsilon=cluster_selection_epsilon, + cluster_selection_method=cluster_selection_method, + prediction_data=True) + + cuml_agg.fit(X_train) + + sk_agg = hdbscan.HDBSCAN( + allow_single_cluster=allow_single_cluster, + approx_min_span_tree=False, + gen_min_span_tree=True, + min_samples=min_samples, + min_cluster_size=min_cluster_size, + cluster_selection_epsilon=cluster_selection_epsilon, + cluster_selection_method=cluster_selection_method, + algorithm="generic", + prediction_data=True) + + sk_agg.fit(cp.asnumpy(X_train)) + + cu_labels, cu_probs = approximate_predict(cuml_agg, X_test) + sk_labels, sk_probs = hdbscan.approximate_predict( + sk_agg, X_test) + + sk_unique = np.unique(sk_labels) + cu_unique = np.unique(cu_labels) + if len(sk_unique) == len(cu_unique): + assert(adjusted_rand_score(cu_labels, sk_labels) >= 0.99) + assert(array_equal(cu_probs, sk_probs, unit_tol=0.05, + total_tol=0.005)) + + +@pytest.mark.parametrize('nrows', [1000]) +@pytest.mark.parametrize('n_points_to_predict', [50]) +@pytest.mark.parametrize('min_samples', [5, 15]) +@pytest.mark.parametrize('cluster_selection_epsilon', [0.0, 0.5]) +@pytest.mark.parametrize('min_cluster_size', [50, 100]) +@pytest.mark.parametrize('allow_single_cluster', [True, False]) +@pytest.mark.parametrize('max_cluster_size', [0]) +@pytest.mark.parametrize('cluster_selection_method', ['eom', 'leaf']) +@pytest.mark.parametrize('connectivity', ['knn']) +def test_approximate_predict_circles(nrows, + n_points_to_predict, + min_samples, + cluster_selection_epsilon, + min_cluster_size, + allow_single_cluster, + max_cluster_size, + cluster_selection_method, + connectivity): + X, y = datasets.make_circles(n_samples=nrows+n_points_to_predict, + factor=.8, + noise=.05, + random_state=42) + + X_train = X[:nrows] + X_test = X[nrows:] + + cuml_agg = HDBSCAN(verbose=logger.level_info, + allow_single_cluster=allow_single_cluster, + min_samples=min_samples, + max_cluster_size=max_cluster_size, + min_cluster_size=min_cluster_size, + cluster_selection_epsilon=cluster_selection_epsilon, + cluster_selection_method=cluster_selection_method, + prediction_data=True) + + cuml_agg.fit(X_train) + + sk_agg = hdbscan.HDBSCAN( + allow_single_cluster=allow_single_cluster, + approx_min_span_tree=False, + gen_min_span_tree=True, + min_samples=min_samples, + min_cluster_size=min_cluster_size, + cluster_selection_epsilon=cluster_selection_epsilon, + cluster_selection_method=cluster_selection_method, + algorithm="generic", + prediction_data=True) + + sk_agg.fit(cp.asnumpy(X_train)) + + cu_labels, cu_probs = approximate_predict(cuml_agg, X_test) + sk_labels, sk_probs = hdbscan.approximate_predict( + sk_agg, X_test) + + sk_unique = np.unique(sk_labels) + cu_unique = np.unique(cu_labels) + if len(sk_unique) == len(cu_unique): + assert(adjusted_rand_score(cu_labels, sk_labels) >= 0.99) + assert(array_equal(cu_probs, sk_probs, unit_tol=0.05, + total_tol=0.005)) + + +@pytest.mark.parametrize('n_points_to_predict', [200]) +@pytest.mark.parametrize('min_samples', [15]) +@pytest.mark.parametrize('cluster_selection_epsilon', [0.5]) +@pytest.mark.parametrize('min_cluster_size', [100]) +@pytest.mark.parametrize('allow_single_cluster', [False]) +@pytest.mark.parametrize('max_cluster_size', [0]) +@pytest.mark.parametrize('cluster_selection_method', ['eom']) +@pytest.mark.parametrize('connectivity', ['knn']) +def test_approximate_predict_digits(n_points_to_predict, + min_samples, + cluster_selection_epsilon, + min_cluster_size, + allow_single_cluster, + max_cluster_size, + cluster_selection_method, + connectivity): + digits = datasets.load_digits() + X, y = digits.data, digits.target + + X_train, X_test, y_train, y_test = train_test_split( + X, + y, + test_size=n_points_to_predict, + train_size=X.shape[0] - n_points_to_predict, + random_state=42, + shuffle=True, + stratify=y) + + cuml_agg = HDBSCAN(verbose=logger.level_info, + allow_single_cluster=allow_single_cluster, + min_samples=min_samples, + max_cluster_size=max_cluster_size, + min_cluster_size=min_cluster_size, + cluster_selection_epsilon=cluster_selection_epsilon, + cluster_selection_method=cluster_selection_method, + prediction_data=True) + + cuml_agg.fit(X_train) + + sk_agg = hdbscan.HDBSCAN( + allow_single_cluster=allow_single_cluster, + approx_min_span_tree=False, + gen_min_span_tree=True, + min_samples=min_samples, + min_cluster_size=min_cluster_size, + cluster_selection_epsilon=cluster_selection_epsilon, + cluster_selection_method=cluster_selection_method, + algorithm="generic", + prediction_data=True) + + sk_agg.fit(X_train) + + cu_labels, cu_probs = approximate_predict(cuml_agg, X_test) + sk_labels, sk_probs = hdbscan.approximate_predict( + sk_agg, X_test) + + assert(adjusted_rand_score(cu_labels, sk_labels) >= 0.98) + assert(array_equal(cu_probs, sk_probs, unit_tol=0.001, total_tol=0.006))