From be4dfe77ac57d6ee9036af71abb877d1214757f1 Mon Sep 17 00:00:00 2001 From: Konstantinos Katrioplas Date: Wed, 30 May 2018 12:23:39 +0200 Subject: [PATCH] handle convex hull functionality for up to 3 points to a mutable graph and to an output iterator --- .../doc/Convex_hull_3/CGAL/convex_hull_3.h | 18 +- Convex_hull_3/include/CGAL/convex_hull_3.h | 121 +- .../Convex_hull_3/data/coplanar_points.xyz | 289 ++ .../test/Convex_hull_3/data/cube_meshed.off | 4614 +++++++++++++++++ .../Convex_hull_3/test_extreme_points.cpp | 180 +- Installation/CHANGES.md | 5 +- 6 files changed, 5181 insertions(+), 46 deletions(-) create mode 100644 Convex_hull_3/test/Convex_hull_3/data/coplanar_points.xyz create mode 100644 Convex_hull_3/test/Convex_hull_3/data/cube_meshed.off diff --git a/Convex_hull_3/doc/Convex_hull_3/CGAL/convex_hull_3.h b/Convex_hull_3/doc/Convex_hull_3/CGAL/convex_hull_3.h index 52233446f3b..87025461ae1 100644 --- a/Convex_hull_3/doc/Convex_hull_3/CGAL/convex_hull_3.h +++ b/Convex_hull_3/doc/Convex_hull_3/CGAL/convex_hull_3.h @@ -7,9 +7,7 @@ namespace CGAL { [`first`, `last`). The polyhedron `pm` is cleared, then the convex hull is stored in `pm`. Note that the convex hull will be triangulated, that is `pm` will contain only triangular facets. - -\pre There are at least four points in the range -[`first`, `last`) not all of which are collinear. +if the convex hull is a point or a segment, endpoints will be added in pm as isolated vertices. \tparam InputIterator must be an input iterator with a value type equivalent to `Traits::Point_3`. \tparam PolygonMesh must be a model of `MutableFaceGraph`. @@ -69,24 +67,20 @@ const Traits& ch_traits = Default_traits); /*! \ingroup PkgConvexHull3Functions -\brief computes the convex hull of the set of points in the range. -The result is put in an output iterator as a list of points. +\brief copies in `out` the points on the convex hull of the points in `range`. -\tparam InputRange a range of `Traits::Point_3`, model of `Range`. +\tparam InputRange a range of `Traits::Point_3`, model of `ConstRange`. + Its iterator type is `ForwardIterator`. \tparam OutputIterator must be an output iterator with a value type equivalent to `Traits::Point_3`. \tparam Traits must be model of the concept `ConvexHullTraits_3`. -For the purposes of checking the postcondition that the convex hull -is valid, `Traits` must also be a model of the concept -`IsStronglyConvexTraits_3`. Furthermore, `Traits` must define a type `Polygon_mesh` that is a model of -`MutableFaceGraph`. -If the kernel `R` of the points determined by the value type of `InputIterator` +If the kernel `R` of the points from `InputRange` is a kernel with exact predicates but inexact constructions (in practice we check `R::Has_filtered_predicates_tag` is `Tag_true` and `R::FT` is a floating point type), then the default traits class of `convex_hull_3()` is `Convex_hull_traits_3`, and `R` otherwise. @param range the range of input points. -@param out an output iterator where the list of points will be put. +@param out an output iterator where the extreme points will be put. @param traits an instance of `Traits`. */ template diff --git a/Convex_hull_3/include/CGAL/convex_hull_3.h b/Convex_hull_3/include/CGAL/convex_hull_3.h index 66b4a484c4e..d5acd1a39a6 100644 --- a/Convex_hull_3/include/CGAL/convex_hull_3.h +++ b/Convex_hull_3/include/CGAL/convex_hull_3.h @@ -93,6 +93,15 @@ void make_tetrahedron(const Point& p0, const Point& p1, const Point& p2, const P *(w.out)++ = p3; } +template +void make_triangle(const Point_3& p1, const Point_3& p2, const Point_3& p3, + internal::Convex_hull_3::Output_iterator_wrapper& w) +{ + ++w.out++ = p1; + ++w.out++ = p2; + ++w.out++ = p3; +} + template void copy_face_graph(const TDS& tds, internal::Convex_hull_3::Output_iterator_wrapper& wrapper) { @@ -104,6 +113,43 @@ void copy_face_graph(const TDS& tds, internal::Convex_hull_3::Output_iterator_wr } } +template +void add_isolated_points(const Point_3& point, + internal::Convex_hull_3::Output_iterator_wrapper& w) +{ + ++w.out++ = point; +} + +template +void add_isolated_points(const Point_3& point, Polyhedron_3& P) +{ + typedef typename boost::graph_traits::vertex_descriptor vertex_descriptor; + typedef typename boost::property_map::type Vpmap; + Vpmap vpm = get(CGAL::vertex_point, P); + vertex_descriptor v = add_vertex(P); + put(vpm, v, point); +} + +template +void add_isolated_points(const Point_3& p1, const Point_3& p2, + internal::Convex_hull_3::Output_iterator_wrapper& w) +{ + ++w.out++ = p1; + ++w.out++ = p2; +} + +template +void add_isolated_points(const Point_3& p1, const Point_3& p2, Polyhedron_3& P) +{ + typedef typename boost::graph_traits::vertex_descriptor vertex_descriptor; + typedef typename boost::property_map::type Vpmap; + Vpmap vpm = get(CGAL::vertex_point, P); + vertex_descriptor v1 = add_vertex(P); + vertex_descriptor v2 = add_vertex(P); + put(vpm, v1, p1); + put(vpm, v2, p2); +} + template void copy_ch2_to_face_graph(const std::list& CH_2, internal::Convex_hull_3::Output_iterator_wrapper& w) @@ -689,9 +735,6 @@ void non_coplanar_quickhull_3(std::list& points, // CGAL_ch_postcondition(is_strongly_convex_3(P, traits)); } - - - template void ch_quickhull_polyhedron_3(std::list& points, @@ -907,8 +950,7 @@ convex_hull_3(InputIterator first, InputIterator beyond, template -void convex_hull_3(InputIterator first, InputIterator beyond, - Object& ch_object) +void convex_hull_3(InputIterator first, InputIterator beyond, Object& ch_object) { typedef typename std::iterator_traits::value_type Point_3; typedef typename internal::Convex_hull_3::Default_traits_for_Chull_3::type Traits; @@ -924,42 +966,69 @@ void convex_hull_3(InputIterator first, InputIterator beyond, typedef typename Traits::Point_3 Point_3; typedef std::list Point_3_list; typedef typename Point_3_list::iterator P3_iterator; + typedef std::pair P3_iterator_pair; + + if(first == beyond) + return; Point_3_list points(first, beyond); - CGAL_ch_precondition(points.size() > 3); + clear(polyhedron); - // at least 4 points typename Traits::Collinear_3 collinear = traits.collinear_3_object(); typename Traits::Equal_3 equal = traits.equal_3_object(); - P3_iterator point1_it = points.begin(); P3_iterator point2_it = points.begin(); point2_it++; - // find three that are not collinear while (point2_it != points.end() && equal(*point1_it,*point2_it)) ++point2_it; - CGAL_ch_precondition_msg(point2_it != points.end(), - "All points are equal; cannot construct polyhedron."); + // if there is only one point or all points are equal + if(point2_it == points.end()) + { + add_isolated_points(*point1_it, polyhedron); + return; + } P3_iterator point3_it = point2_it; ++point3_it; - CGAL_ch_precondition_msg(point3_it != points.end(), - "Only two points with different coordinates; cannot construct polyhedron."); + // if there are only two or only two points have different coordinates then return those. + if(point3_it == points.end()) + { + add_isolated_points(*point1_it, *point2_it, polyhedron); + return; + } - while (point3_it != points.end() && collinear(*point1_it,*point2_it,*point3_it)) - ++point3_it; + // if there are 3 points not equal, then the third is not at points.end() + if(points.size() == 3) + { + if(collinear(*point1_it,*point2_it,*point3_it)) + { + typedef typename Traits::Less_distance_to_point_3 Less_dist; + Less_dist less_dist = traits.less_distance_to_point_3_object(); + P3_iterator_pair endpoints = + min_max_element(points.begin(), points.end(), + boost::bind(less_dist, *points.begin(), _1, _2), + boost::bind(less_dist, *points.begin(), _1, _2)); - CGAL_ch_precondition_msg(point3_it != points.end(), - "All points are collinear; cannot construct polyhedron."); - - clear(polyhedron); - // result will be a polyhedron - internal::Convex_hull_3::ch_quickhull_polyhedron_3(points, point1_it, point2_it, point3_it, - polyhedron, traits); + add_isolated_points(*endpoints.first, *endpoints.second, polyhedron); + } + else + { + make_triangle(*point1_it, *point2_it, *point3_it, polyhedron); + } + return; + } + else + { + while (point3_it != points.end() && collinear(*point1_it,*point2_it,*point3_it)) + ++point3_it; + // result will be a polyhedron + internal::Convex_hull_3::ch_quickhull_polyhedron_3(points, point1_it, point2_it, point3_it, + polyhedron, traits); + } } @@ -975,9 +1044,9 @@ void convex_hull_3(InputIterator first, InputIterator beyond, template OutputIterator -extreme_points_3(InputRange range, - OutputIterator out, - const Traits& traits) +extreme_points_3(const InputRange& range, + OutputIterator out, + const Traits& traits) { internal::Convex_hull_3::Output_iterator_wrapper wrapper(out); convex_hull_3(range.begin(), range.end(), wrapper, traits); @@ -986,7 +1055,7 @@ extreme_points_3(InputRange range, template OutputIterator -extreme_points_3(InputRange range, OutputIterator out) +extreme_points_3(const InputRange& range, OutputIterator out) { typedef typename InputRange::const_iterator Iterator_type; typedef typename std::iterator_traits::value_type Point_3; diff --git a/Convex_hull_3/test/Convex_hull_3/data/coplanar_points.xyz b/Convex_hull_3/test/Convex_hull_3/data/coplanar_points.xyz new file mode 100644 index 00000000000..ee301ae93e7 --- /dev/null +++ b/Convex_hull_3/test/Convex_hull_3/data/coplanar_points.xyz @@ -0,0 +1,289 @@ +0.041666666666666671 0.75 1 0 0 1 +0 0.75 1 0 0 1 +0 0.6875 1 0 0 1 +0.041666666666666671 0.5 1 0 0 1 +0 0.5 1 0 0 1 +0 0.4375 1 0 0 1 +0 0.5625 1 0 0 1 +0 0.625 1 0 0 1 +0.0625 0.6875 1 0 0 1 +0 0.8125 1 0 0 1 +0.071428571428571425 0.8214285714285714 1 0 0 1 +0 0.875 1 0 0 1 +0.0625 0.89583333333333337 1 0 0 1 +0 0.9375 1 0 0 1 +0.083333333333333329 0.625 1 0 0 1 +0.0625 0.5625 1 0 0 1 +0.0625 0.4375 1 0 0 1 +0 0.375 1 0 0 1 +0.0625 0.375 1 0 0 1 +0 0.3125 1 0 0 1 +0.083333333333333329 0.3125 1 0 0 1 +0.125 0.875 1 0 0 1 +0 0.25 1 0 0 1 +0.041666666666666671 0.25 1 0 0 1 +0 0.1875 1 0 0 1 +0.75 0.041666666666666671 1 0 0 1 +0.75 0.10416666666666667 1 0 0 1 +0.6875 0.083333333333333329 1 0 0 1 +0.7589285714285714 0.17857142857142858 1 0 0 1 +0.6875 0.14583333333333334 1 0 0 1 +0.63749999999999996 0.1125 1 0 0 1 +0.625 0.0625 1 0 0 1 +0.5625 0.0625 1 0 0 1 +0.58333333333333337 0.125 1 0 0 1 +0.5089285714285714 0.11607142857142858 1 0 0 1 +0.5 0.041666666666666671 1 0 0 1 +0.4375 0.0625 1 0 0 1 +0.4375 0.125 1 0 0 1 +0.38750000000000001 0.13750000000000001 1 0 0 1 +0.375 0.083333333333333329 1 0 0 1 +0.29166666666666669 0.1875 1 0 0 1 +0.25892857142857145 0.11607142857142858 1 0 0 1 +0.33333333333333331 0.125 1 0 0 1 +0.3125 0.0625 1 0 0 1 +0.25 0.041666666666666671 1 0 0 1 +0.17857142857142858 0.071428571428571425 1 0 0 1 +0.14583333333333334 0.1875 1 0 0 1 +0.1875 0.14583333333333334 1 0 0 1 +0.1875 0.1875 1 0 0 1 +0.22916666666666666 0.1875 1 0 0 1 +0.125 0.125 1 0 0 1 +0.10416666666666667 0.0625 1 0 0 1 +0.071428571428571425 0.17857142857142858 1 0 0 1 +0.0625 0.10416666666666667 1 0 0 1 +0.050000000000000003 0.050000000000000003 1 0 0 1 +0.10416666666666667 0.25 1 0 0 1 +0 0.125 1 0 0 1 +0 0.0625 1 0 0 1 +0 0 1 0 0 1 +0.0625 0 1 0 0 1 +0.125 0 1 0 0 1 +0.1875 0 1 0 0 1 +0.25 0 1 0 0 1 +0.3125 0 1 0 0 1 +0.375 0 1 0 0 1 +0.4375 0 1 0 0 1 +0.5 0 1 0 0 1 +0.5625 0 1 0 0 1 +0.625 0 1 0 0 1 +0.6875 0 1 0 0 1 +0.75 0 1 0 0 1 +0.9375 0.10416666666666667 1 0 0 1 +0.89583333333333337 0.0625 1 0 0 1 +0.94999999999999996 0.050000000000000003 1 0 0 1 +0.8125 0.1875 1 0 0 1 +0.8125 0.14583333333333334 1 0 0 1 +0.85416666666666663 0.1875 1 0 0 1 +0.8125 0.22916666666666666 1 0 0 1 +0.875 0.125 1 0 0 1 +0.8214285714285714 0.071428571428571425 1 0 0 1 +0.8839285714285714 0.25892857142857145 1 0 0 1 +0.9285714285714286 0.17857142857142858 1 0 0 1 +0.8125 0 1 0 0 1 +0.875 0 1 0 0 1 +0.9375 0 1 0 0 1 +1 0 1 0 0 1 +1 0.0625 1 0 0 1 +1 0.1875 1 0 0 1 +1 0.25 1 0 0 1 +0.95833333333333337 0.25 1 0 0 1 +1 0.125 1 0 0 1 +1 0.3125 1 0 0 1 +1 0.375 1 0 0 1 +0.9375 0.3125 1 0 0 1 +0.91666666666666663 0.375 1 0 0 1 +1 0.5625 1 0 0 1 +1 0.625 1 0 0 1 +0.9375 0.5625 1 0 0 1 +0.9375 0.625 1 0 0 1 +1 0.6875 1 0 0 1 +0.94999999999999996 0.94999999999999996 1 0 0 1 +1 1 1 0 0 1 +0.9375 1 1 0 0 1 +1 0.9375 1 0 0 1 +1 0.875 1 0 0 1 +0.9375 0.89583333333333337 1 0 0 1 +0.8125 1 1 0 0 1 +0.75 1 1 0 0 1 +0.75 0.95833333333333337 1 0 0 1 +0.8214285714285714 0.9285714285714286 1 0 0 1 +0.875 1 1 0 0 1 +0.89583333333333337 0.9375 1 0 0 1 +0.6875 1 1 0 0 1 +0.95833333333333337 0.75 1 0 0 1 +1 0.8125 1 0 0 1 +0.9285714285714286 0.8214285714285714 1 0 0 1 +1 0.75 1 0 0 1 +0.875 0.875 1 0 0 1 +0.95833333333333337 0.5 1 0 0 1 +0.8125 0.8125 1 0 0 1 +0.85416666666666663 0.8125 1 0 0 1 +0.8125 0.85416666666666663 1 0 0 1 +0.89583333333333337 0.75 1 0 0 1 +0.91666666666666663 0.6875 1 0 0 1 +0.9375 0.4375 1 0 0 1 +1 0.4375 1 0 0 1 +1 0.5 1 0 0 1 +0.875 0.33333333333333331 1 0 0 1 +0.86250000000000004 0.38750000000000001 1 0 0 1 +0.8125 0.29166666666666669 1 0 0 1 +0.75 0.25 1 0 0 1 +0.35416666666666669 0.1875 1 0 0 1 +0.6875 0.20833333333333334 1 0 0 1 +0.5625 0.1875 1 0 0 1 +0.625 0.16666666666666666 1 0 0 1 +0.49107142857142855 0.19642857142857142 1 0 0 1 +0.41666666666666669 0.1875 1 0 0 1 +0.54166666666666663 0.25 1 0 0 1 +0.6160714285714286 0.24107142857142858 1 0 0 1 +0.6875 0.27083333333333331 1 0 0 1 +0.7410714285714286 0.32142857142857145 1 0 0 1 +0.8125 0.35416666666666669 1 0 0 1 +0.6875 0.3125 1 0 0 1 +0.88749999999999996 0.63749999999999996 1 0 0 1 +0.875 0.58333333333333337 1 0 0 1 +0.8214285714285714 0.7589285714285714 1 0 0 1 +0.85416666666666663 0.6875 1 0 0 1 +0.8839285714285714 0.5089285714285714 1 0 0 1 +0.875 0.4375 1 0 0 1 +0.58333333333333337 0.3125 1 0 0 1 +0.64583333333333337 0.3125 1 0 0 1 +0.8125 0.41666666666666669 1 0 0 1 +0.6875 0.35416666666666669 1 0 0 1 +0.75 0.39583333333333331 1 0 0 1 +0.625 0.375 1 0 0 1 +0.8125 0.5625 1 0 0 1 +0.83333333333333337 0.625 1 0 0 1 +0.8035714285714286 0.49107142857142855 1 0 0 1 +0.75 0.45833333333333331 1 0 0 1 +0.75 0.5 1 0 0 1 +0.6785714285714286 0.42857142857142855 1 0 0 1 +0.70833333333333337 0.8125 1 0 0 1 +0.7410714285714286 0.8839285714285714 1 0 0 1 +0.66666666666666663 0.875 1 0 0 1 +0.75 0.54166666666666663 1 0 0 1 +0.70833333333333337 0.5 1 0 0 1 +0.72916666666666663 0.6875 1 0 0 1 +0.7589285714285714 0.6160714285714286 1 0 0 1 +0.79166666666666663 0.6875 1 0 0 1 +0.6875 0.9375 1 0 0 1 +0.75 0.75 1 0 0 1 +0.11607142857142858 0.7410714285714286 1 0 0 1 +0.3125 0.91666666666666663 1 0 0 1 +0.36249999999999999 0.88749999999999996 1 0 0 1 +0.375 0.9375 1 0 0 1 +0.6875 0.64583333333333337 1 0 0 1 +0.6875 0.6875 1 0 0 1 +0.64583333333333337 0.8125 1 0 0 1 +0.61250000000000004 0.86250000000000004 1 0 0 1 +0.6785714285714286 0.7410714285714286 1 0 0 1 +0.6785714285714286 0.5714285714285714 1 0 0 1 +0.125 0.66666666666666663 1 0 0 1 +0.13750000000000001 0.61250000000000004 1 0 0 1 +0.1875 0.70833333333333337 1 0 0 1 +0.1875 0.77083333333333337 1 0 0 1 +0.3125 0.85416666666666663 1 0 0 1 +0.375 0.83333333333333337 1 0 0 1 +0.58333333333333337 0.8125 1 0 0 1 +0.5625 0.875 1 0 0 1 +0.49107142857142855 0.8839285714285714 1 0 0 1 +0.5089285714285714 0.8035714285714286 1 0 0 1 +0.64583333333333337 0.6875 1 0 0 1 +0.64583333333333337 0.5 1 0 0 1 +0.60416666666666663 0.4375 1 0 0 1 +0.14583333333333334 0.3125 1 0 0 1 +0.17857142857142858 0.24107142857142858 1 0 0 1 +0.20833333333333334 0.3125 1 0 0 1 +0.19642857142857142 0.5089285714285714 1 0 0 1 +0.11607142857142858 0.49107142857142855 1 0 0 1 +0.1875 0.4375 1 0 0 1 +0.16666666666666666 0.375 1 0 0 1 +0.32142857142857145 0.5714285714285714 1 0 0 1 +0.35416666666666669 0.5 1 0 0 1 +0.39583333333333331 0.5625 1 0 0 1 +0.1875 0.64583333333333337 1 0 0 1 +0.1125 0.36249999999999999 1 0 0 1 +0.125 0.41666666666666669 1 0 0 1 +0.25 0.45833333333333331 1 0 0 1 +0.29166666666666669 0.5 1 0 0 1 +0.25 0.5 1 0 0 1 +0.125 0.5625 1 0 0 1 +0.41666666666666669 0.6875 1 0 0 1 +0.375 0.625 1 0 0 1 +0.4375 0.625 1 0 0 1 +0.5089285714285714 0.30357142857142855 1 0 0 1 +0.5 0.375 1 0 0 1 +0.42857142857142855 0.32142857142857145 1 0 0 1 +0.54166666666666663 0.4375 1 0 0 1 +0.5625 0.375 1 0 0 1 +0.39583333333333331 0.4375 1 0 0 1 +0.4375 0.39583333333333331 1 0 0 1 +0.4375 0.4375 1 0 0 1 +0.5714285714285714 0.5089285714285714 1 0 0 1 +0.5 0.25 1 0 0 1 +0.32142857142857145 0.25892857142857145 1 0 0 1 +0.25 0.54166666666666663 1 0 0 1 +0.35416666666666669 0.6875 1 0 0 1 +0.3125 0.72916666666666663 1 0 0 1 +0.3125 0.6875 1 0 0 1 +0.45833333333333331 0.25 1 0 0 1 +0.1875 0.58333333333333337 1 0 0 1 +0.25 0.25 1 0 0 1 +0.27083333333333331 0.3125 1 0 0 1 +0.3125 0.3125 1 0 0 1 +0.35416666666666669 0.3125 1 0 0 1 +0.25 0.60416666666666663 1 0 0 1 +0.39583333333333331 0.25 1 0 0 1 +0.77083333333333337 0.8125 1 0 0 1 +0.625 1 1 0 0 1 +0.5 0.95833333333333337 1 0 0 1 +0.5 1 1 0 0 1 +0.4375 1 1 0 0 1 +0.5625 0.9375 1 0 0 1 +0.5625 1 1 0 0 1 +0.25 0.95833333333333337 1 0 0 1 +0.25 1 1 0 0 1 +0.1875 1 1 0 0 1 +0.3125 1 1 0 0 1 +0.375 1 1 0 0 1 +0.4375 0.9375 1 0 0 1 +0.625 0.91666666666666663 1 0 0 1 +0.17857142857142858 0.9285714285714286 1 0 0 1 +0.125 1 1 0 0 1 +0.10416666666666667 0.9375 1 0 0 1 +0.0625 1 1 0 0 1 +0.050000000000000003 0.94999999999999996 1 0 0 1 +0 1 1 0 0 1 +0.14583333333333334 0.8125 1 0 0 1 +0.1875 0.85416666666666663 1 0 0 1 +0.25 0.89583333333333337 1 0 0 1 +0.41666666666666669 0.875 1 0 0 1 +0.4375 0.8125 1 0 0 1 +0.24107142857142858 0.38392857142857145 1 0 0 1 +0.32142857142857145 0.42857142857142855 1 0 0 1 +0.45833333333333331 0.5625 1 0 0 1 +0.5 0.5 1 0 0 1 +0.52083333333333337 0.5625 1 0 0 1 +0.47916666666666669 0.4375 1 0 0 1 +0.42857142857142855 0.49107142857142855 1 0 0 1 +0.5 0.625 1 0 0 1 +0.5625 0.60416666666666663 1 0 0 1 +0.5625 0.5625 1 0 0 1 +0.3125 0.35416666666666669 1 0 0 1 +0.375 0.375 1 0 0 1 +0.49107142857142855 0.6964285714285714 1 0 0 1 +0.5714285714285714 0.6785714285714286 1 0 0 1 +0.60416666666666663 0.5625 1 0 0 1 +0.625 0.625 1 0 0 1 +0.60416666666666663 0.75 1 0 0 1 +0.54166666666666663 0.75 1 0 0 1 +0.5 0.75 1 0 0 1 +0.3125 0.64583333333333337 1 0 0 1 +0.25892857142857145 0.6785714285714286 1 0 0 1 +0.45833333333333331 0.75 1 0 0 1 +0.25 0.75 1 0 0 1 +0.24107142857142858 0.8214285714285714 1 0 0 1 +0.1875 0.8125 1 0 0 1 +0.3125 0.79166666666666663 1 0 0 1 +0.38392857142857145 0.7589285714285714 1 0 0 1 diff --git a/Convex_hull_3/test/Convex_hull_3/data/cube_meshed.off b/Convex_hull_3/test/Convex_hull_3/data/cube_meshed.off new file mode 100644 index 00000000000..4252b106121 --- /dev/null +++ b/Convex_hull_3/test/Convex_hull_3/data/cube_meshed.off @@ -0,0 +1,4614 @@ +OFF +1538 3072 0 + +0 0 0 +1 0 0 +0 1 0 +1 1 0 +0 0 1 +1 0 1 +0 1 1 +1 1 1 +0.5 0.5 0 +0.5 0.5 1 +0.5 1 0.5 +0.5 0 0.5 +1 0.5 0.5 +0 0.5 0.5 +1 0.5 0 +0.5 0 0 +0 0.5 0 +0.5 1 0 +0.5 0 1 +1 0.5 1 +0.5 1 1 +0 0.5 1 +1 1 0.5 +0 1 0.5 +0 0 0.5 +1 0 0.5 +0.25 0.25 0 +0.75 0.75 0 +0.75 0.25 0 +0.25 0.75 0 +0.75 0.75 1 +0.25 0.25 1 +0.75 0.25 1 +0.25 0.75 1 +0.25 1 0.25 +0.75 1 0.75 +0.75 1 0.25 +0.25 1 0.75 +0.25 0 0.25 +0.75 0 0.75 +0.25 0 0.75 +0.75 0 0.25 +1 0.75 0.25 +1 0.25 0.75 +1 0.25 0.25 +1 0.75 0.75 +0 0.25 0.75 +0 0.75 0.25 +0 0.25 0.25 +0 0.75 0.75 +1 0.75 0 +1 0.25 0 +0.75 0.5 0 +1 0.5 0.25 +0.75 0 0 +0.25 0 0 +0.5 0.25 0 +0.5 0 0.25 +0 0.25 0 +0 0.75 0 +0.25 0.5 0 +0 0.5 0.25 +0.25 1 0 +0.75 1 0 +0.5 0.75 0 +0.5 1 0.25 +0.25 0 1 +0.75 0 1 +0.5 0.25 1 +0.5 0 0.75 +1 0.25 1 +1 0.75 1 +0.75 0.5 1 +1 0.5 0.75 +0.75 1 1 +0.25 1 1 +0.5 0.75 1 +0.5 1 0.75 +0 0.75 1 +0 0.25 1 +0.25 0.5 1 +0 0.5 0.75 +1 1 0.75 +1 1 0.25 +0.75 1 0.5 +1 0.75 0.5 +0 1 0.25 +0 1 0.75 +0.25 1 0.5 +0 0.75 0.5 +0 0 0.75 +0 0 0.25 +0.25 0 0.5 +0 0.25 0.5 +1 0 0.25 +1 0 0.75 +0.75 0 0.5 +1 0.25 0.5 +0.125 0.125 0 +0.375 0.375 0 +0.36249999999999999 0.1125 0 +0.13750000000000001 0.38750000000000001 0 +0.625 0.625 0 +0.875 0.875 0 +0.86250000000000004 0.61250000000000004 0 +0.63749999999999996 0.88749999999999996 0 +0.625 0.375 0 +0.875 0.125 0 +0.61250000000000004 0.13750000000000001 0 +0.88749999999999996 0.36249999999999999 0 +0.375 0.625 0 +0.125 0.875 0 +0.38750000000000001 0.86250000000000004 0 +0.1125 0.63749999999999996 0 +0.875 0.875 1 +0.625 0.625 1 +0.88749999999999996 0.63749999999999996 1 +0.61250000000000004 0.86250000000000004 1 +0.375 0.375 1 +0.125 0.125 1 +0.38750000000000001 0.13750000000000001 1 +0.1125 0.36249999999999999 1 +0.625 0.375 1 +0.875 0.125 1 +0.86250000000000004 0.38750000000000001 1 +0.63749999999999996 0.1125 1 +0.375 0.625 1 +0.125 0.875 1 +0.13750000000000001 0.61250000000000004 1 +0.36249999999999999 0.88749999999999996 1 +0.125 1 0.125 +0.375 1 0.375 +0.36249999999999999 1 0.1125 +0.13750000000000001 1 0.38750000000000001 +0.625 1 0.625 +0.875 1 0.875 +0.86250000000000004 1 0.61250000000000004 +0.63749999999999996 1 0.88749999999999996 +0.625 1 0.375 +0.875 1 0.125 +0.61250000000000004 1 0.13750000000000001 +0.88749999999999996 1 0.36249999999999999 +0.375 1 0.625 +0.125 1 0.875 +0.38750000000000001 1 0.86250000000000004 +0.1125 1 0.63749999999999996 +0.125 0 0.125 +0.375 0 0.375 +0.1125 0 0.36249999999999999 +0.38750000000000001 0 0.13750000000000001 +0.625 0 0.625 +0.875 0 0.875 +0.61250000000000004 0 0.86250000000000004 +0.88749999999999996 0 0.63749999999999996 +0.375 0 0.625 +0.125 0 0.875 +0.13750000000000001 0 0.61250000000000004 +0.36249999999999999 0 0.88749999999999996 +0.625 0 0.375 +0.875 0 0.125 +0.86250000000000004 0 0.38750000000000001 +0.63749999999999996 0 0.1125 +1 0.875 0.125 +1 0.625 0.375 +1 0.63749999999999996 0.1125 +1 0.86250000000000004 0.38750000000000001 +1 0.375 0.625 +1 0.125 0.875 +1 0.13750000000000001 0.61250000000000004 +1 0.36249999999999999 0.88749999999999996 +1 0.375 0.375 +1 0.125 0.125 +1 0.38750000000000001 0.13750000000000001 +1 0.1125 0.36249999999999999 +1 0.625 0.625 +1 0.875 0.875 +1 0.61250000000000004 0.86250000000000004 +1 0.88749999999999996 0.63749999999999996 +0 0.125 0.875 +0 0.375 0.625 +0 0.1125 0.63749999999999996 +0 0.38750000000000001 0.86250000000000004 +0 0.625 0.375 +0 0.875 0.125 +0 0.61250000000000004 0.13750000000000001 +0 0.88749999999999996 0.36249999999999999 +0 0.375 0.375 +0 0.125 0.125 +0 0.13750000000000001 0.38750000000000001 +0 0.36249999999999999 0.1125 +0 0.625 0.625 +0 0.875 0.875 +0 0.86250000000000004 0.61250000000000004 +0 0.63749999999999996 0.88749999999999996 +1 0.875 0 +1 0.625 0 +0.8839285714285714 0.7410714285714286 0 +1 0.75 0.10416666666666667 +1 0.375 0 +1 0.125 0 +0.89583333333333337 0.25 0 +1 0.25892857142857145 0.11607142857142858 +0.8839285714285714 0.49107142857142855 0 +0.625 0.5 0 +0.75 0.60416666666666663 0 +0.7589285714285714 0.38392857142857145 0 +1 0.5089285714285714 0.11607142857142858 +1 0.5 0.35416666666666669 +1 0.39583333333333331 0.25 +1 0.6160714285714286 0.24107142857142858 +0.875 0 0 +0.625 0 0 +0.7410714285714286 0.11607142857142858 0 +0.75 0 0.10416666666666667 +0.375 0 0 +0.125 0 0 +0.25 0.10416666666666667 0 +0.25892857142857145 0 0.11607142857142858 +0.49107142857142855 0.11607142857142858 0 +0.5 0.35416666666666669 0 +0.60416666666666663 0.25 0 +0.38392857142857145 0.24107142857142858 0 +0.5089285714285714 0 0.11607142857142858 +0.5 0 0.375 +0.39583333333333331 0 0.25 +0.6160714285714286 0 0.24107142857142858 +0 0.125 0 +0 0.375 0 +0.11607142857142858 0.25892857142857145 0 +0 0.25 0.10416666666666667 +0 0.625 0 +0 0.875 0 +0.10416666666666667 0.75 0 +0 0.7410714285714286 0.11607142857142858 +0.11607142857142858 0.5089285714285714 0 +0.375 0.5 0 +0.25 0.39583333333333331 0 +0.24107142857142858 0.6160714285714286 0 +0 0.49107142857142855 0.11607142857142858 +0 0.5 0.375 +0 0.60416666666666663 0.25 +0 0.38392857142857145 0.24107142857142858 +0.125 1 0 +0.375 1 0 +0.25892857142857145 0.8839285714285714 0 +0.25 1 0.10416666666666667 +0.625 1 0 +0.875 1 0 +0.75 0.89583333333333337 0 +0.7410714285714286 1 0.11607142857142858 +0.5089285714285714 0.8839285714285714 0 +0.5 0.64583333333333337 0 +0.39583333333333331 0.75 0 +0.6160714285714286 0.7589285714285714 0 +0.49107142857142855 1 0.11607142857142858 +0.5 1 0.35416666666666669 +0.60416666666666663 1 0.25 +0.38392857142857145 1 0.24107142857142858 +0.125 0 1 +0.375 0 1 +0.25892857142857145 0.11607142857142858 1 +0.25 0 0.89583333333333337 +0.625 0 1 +0.875 0 1 +0.75 0.10416666666666667 1 +0.7410714285714286 0 0.8839285714285714 +0.5089285714285714 0.11607142857142858 1 +0.5 0.375 1 +0.39583333333333331 0.25 1 +0.6160714285714286 0.24107142857142858 1 +0.49107142857142855 0 0.8839285714285714 +0.5 0 0.625 +0.60416666666666663 0 0.75 +0.38392857142857145 0 0.7589285714285714 +1 0.125 1 +1 0.375 1 +0.8839285714285714 0.25892857142857145 1 +1 0.25 0.89583333333333337 +1 0.625 1 +1 0.875 1 +0.89583333333333337 0.75 1 +1 0.7410714285714286 0.8839285714285714 +0.8839285714285714 0.5089285714285714 1 +0.64583333333333337 0.5 1 +0.75 0.39583333333333331 1 +0.7589285714285714 0.6160714285714286 1 +1 0.49107142857142855 0.8839285714285714 +1 0.5 0.64583333333333337 +1 0.60416666666666663 0.75 +1 0.38392857142857145 0.7589285714285714 +0.875 1 1 +0.625 1 1 +0.7410714285714286 0.8839285714285714 1 +0.75 1 0.89583333333333337 +0.375 1 1 +0.125 1 1 +0.25 0.89583333333333337 1 +0.25892857142857145 1 0.8839285714285714 +0.49107142857142855 0.8839285714285714 1 +0.5 0.625 1 +0.60416666666666663 0.75 1 +0.38392857142857145 0.7589285714285714 1 +0.5089285714285714 1 0.8839285714285714 +0.5 1 0.64583333333333337 +0.39583333333333331 1 0.75 +0.6160714285714286 1 0.7589285714285714 +0 0.875 1 +0 0.625 1 +0.11607142857142858 0.7410714285714286 1 +0 0.75 0.89583333333333337 +0 0.375 1 +0 0.125 1 +0.10416666666666667 0.25 1 +0 0.25892857142857145 0.8839285714285714 +0.11607142857142858 0.49107142857142855 1 +0.35416666666666669 0.5 1 +0.25 0.60416666666666663 1 +0.24107142857142858 0.38392857142857145 1 +0 0.5089285714285714 0.8839285714285714 +0 0.5 0.625 +0 0.39583333333333331 0.75 +0 0.6160714285714286 0.7589285714285714 +1 1 0.875 +1 1 0.625 +0.8839285714285714 1 0.7410714285714286 +1 0.89583333333333337 0.75 +1 1 0.375 +1 1 0.125 +0.89583333333333337 1 0.25 +1 0.8839285714285714 0.25892857142857145 +0.8839285714285714 1 0.49107142857142855 +0.625 1 0.5 +0.75 1 0.60416666666666663 +0.7589285714285714 1 0.38392857142857145 +1 0.8839285714285714 0.5089285714285714 +1 0.625 0.5 +1 0.75 0.39583333333333331 +1 0.7589285714285714 0.6160714285714286 +0 1 0.125 +0 1 0.375 +0.11607142857142858 1 0.25892857142857145 +0 0.89583333333333337 0.25 +0 1 0.625 +0 1 0.875 +0.10416666666666667 1 0.75 +0 0.8839285714285714 0.7410714285714286 +0.11607142857142858 1 0.5089285714285714 +0.375 1 0.5 +0.25 1 0.39583333333333331 +0.24107142857142858 1 0.6160714285714286 +0 0.8839285714285714 0.49107142857142855 +0 0.64583333333333337 0.5 +0 0.75 0.60416666666666663 +0 0.7589285714285714 0.38392857142857145 +0 0 0.875 +0 0 0.625 +0.11607142857142858 0 0.7410714285714286 +0 0.10416666666666667 0.75 +0 0 0.375 +0 0 0.125 +0.10416666666666667 0 0.25 +0 0.11607142857142858 0.25892857142857145 +0.11607142857142858 0 0.49107142857142855 +0.35416666666666669 0 0.5 +0.25 0 0.60416666666666663 +0.24107142857142858 0 0.38392857142857145 +0 0.11607142857142858 0.5089285714285714 +0 0.35416666666666669 0.5 +0 0.25 0.39583333333333331 +0 0.24107142857142858 0.6160714285714286 +1 0 0.125 +1 0 0.375 +0.8839285714285714 0 0.25892857142857145 +1 0.10416666666666667 0.25 +1 0 0.625 +1 0 0.875 +0.89583333333333337 0 0.75 +1 0.11607142857142858 0.7410714285714286 +0.8839285714285714 0 0.5089285714285714 +0.64583333333333337 0 0.5 +0.75 0 0.39583333333333331 +0.7589285714285714 0 0.6160714285714286 +1 0.11607142857142858 0.49107142857142855 +1 0.375 0.5 +1 0.25 0.60416666666666663 +1 0.24107142857142858 0.38392857142857145 +0.050000000000000003 0.050000000000000003 0 +0.1875 0.1875 0 +0.17857142857142858 0.071428571428571425 0 +0.071428571428571425 0.17857142857142858 0 +0.3125 0.3125 0 +0.4375 0.4375 0 +0.42857142857142855 0.32142857142857145 0 +0.32142857142857145 0.42857142857142855 0 +0.3125 0.20833333333333334 0 +0.4375 0.0625 0 +0.3125 0.083333333333333329 0 +0.4375 0.1875 0 +0.1875 0.29166666666666669 0 +0.0625 0.4375 0 +0.1875 0.41666666666666669 0 +0.0625 0.3125 0 +0.5625 0.5625 0 +0.6875 0.6875 0 +0.6785714285714286 0.5714285714285714 0 +0.5714285714285714 0.6785714285714286 0 +0.8125 0.8125 0 +0.94999999999999996 0.94999999999999996 0 +0.9285714285714286 0.8214285714285714 0 +0.8214285714285714 0.9285714285714286 0 +0.8125 0.70833333333333337 0 +0.9375 0.5625 0 +0.8125 0.58333333333333337 0 +0.9375 0.6875 0 +0.6875 0.79166666666666663 0 +0.5625 0.9375 0 +0.6875 0.91666666666666663 0 +0.5625 0.8125 0 +0.5625 0.45833333333333331 0 +0.6875 0.3125 0 +0.5714285714285714 0.32142857142857145 0 +0.6875 0.41666666666666669 0 +0.8125 0.1875 0 +0.94999999999999996 0.050000000000000003 0 +0.8214285714285714 0.071428571428571425 0 +0.9285714285714286 0.17857142857142858 0 +0.70833333333333337 0.1875 0 +0.5625 0.0625 0 +0.58333333333333337 0.1875 0 +0.6875 0.0625 0 +0.79166666666666663 0.3125 0 +0.9375 0.4375 0 +0.91666666666666663 0.3125 0 +0.8125 0.4375 0 +0.4375 0.54166666666666663 0 +0.3125 0.6875 0 +0.42857142857142855 0.6785714285714286 0 +0.3125 0.58333333333333337 0 +0.1875 0.8125 0 +0.050000000000000003 0.94999999999999996 0 +0.17857142857142858 0.9285714285714286 0 +0.071428571428571425 0.8214285714285714 0 +0.29166666666666669 0.8125 0 +0.4375 0.9375 0 +0.41666666666666669 0.8125 0 +0.3125 0.9375 0 +0.20833333333333334 0.6875 0 +0.0625 0.5625 0 +0.083333333333333329 0.6875 0 +0.1875 0.5625 0 +0.94999999999999996 0.94999999999999996 1 +0.8125 0.8125 1 +0.9285714285714286 0.8214285714285714 1 +0.8214285714285714 0.9285714285714286 1 +0.6875 0.6875 1 +0.5625 0.5625 1 +0.6785714285714286 0.5714285714285714 1 +0.5714285714285714 0.6785714285714286 1 +0.79166666666666663 0.6875 1 +0.9375 0.5625 1 +0.91666666666666663 0.6875 1 +0.8125 0.5625 1 +0.70833333333333337 0.8125 1 +0.5625 0.9375 1 +0.58333333333333337 0.8125 1 +0.6875 0.9375 1 +0.4375 0.4375 1 +0.3125 0.3125 1 +0.42857142857142855 0.32142857142857145 1 +0.32142857142857145 0.42857142857142855 1 +0.1875 0.1875 1 +0.050000000000000003 0.050000000000000003 1 +0.17857142857142858 0.071428571428571425 1 +0.071428571428571425 0.17857142857142858 1 +0.29166666666666669 0.1875 1 +0.4375 0.0625 1 +0.41666666666666669 0.1875 1 +0.3125 0.0625 1 +0.20833333333333334 0.3125 1 +0.0625 0.4375 1 +0.083333333333333329 0.3125 1 +0.1875 0.4375 1 +0.54166666666666663 0.4375 1 +0.6875 0.3125 1 +0.6785714285714286 0.42857142857142855 1 +0.58333333333333337 0.3125 1 +0.8125 0.1875 1 +0.94999999999999996 0.050000000000000003 1 +0.9285714285714286 0.17857142857142858 1 +0.8214285714285714 0.071428571428571425 1 +0.8125 0.29166666666666669 1 +0.9375 0.4375 1 +0.8125 0.41666666666666669 1 +0.9375 0.3125 1 +0.6875 0.20833333333333334 1 +0.5625 0.0625 1 +0.6875 0.083333333333333329 1 +0.5625 0.1875 1 +0.45833333333333331 0.5625 1 +0.3125 0.6875 1 +0.32142857142857145 0.5714285714285714 1 +0.41666666666666669 0.6875 1 +0.1875 0.8125 1 +0.050000000000000003 0.94999999999999996 1 +0.071428571428571425 0.8214285714285714 1 +0.17857142857142858 0.9285714285714286 1 +0.1875 0.70833333333333337 1 +0.0625 0.5625 1 +0.1875 0.58333333333333337 1 +0.0625 0.6875 1 +0.3125 0.79166666666666663 1 +0.4375 0.9375 1 +0.3125 0.91666666666666663 1 +0.4375 0.8125 1 +0.050000000000000003 1 0.050000000000000003 +0.1875 1 0.1875 +0.17857142857142858 1 0.071428571428571425 +0.071428571428571425 1 0.17857142857142858 +0.3125 1 0.3125 +0.4375 1 0.4375 +0.42857142857142855 1 0.32142857142857145 +0.32142857142857145 1 0.42857142857142855 +0.3125 1 0.20833333333333334 +0.4375 1 0.0625 +0.3125 1 0.083333333333333329 +0.4375 1 0.1875 +0.1875 1 0.29166666666666669 +0.0625 1 0.4375 +0.1875 1 0.41666666666666669 +0.0625 1 0.3125 +0.5625 1 0.5625 +0.6875 1 0.6875 +0.6785714285714286 1 0.5714285714285714 +0.5714285714285714 1 0.6785714285714286 +0.8125 1 0.8125 +0.94999999999999996 1 0.94999999999999996 +0.9285714285714286 1 0.8214285714285714 +0.8214285714285714 1 0.9285714285714286 +0.8125 1 0.70833333333333337 +0.9375 1 0.5625 +0.8125 1 0.58333333333333337 +0.9375 1 0.6875 +0.6875 1 0.79166666666666663 +0.5625 1 0.9375 +0.6875 1 0.91666666666666663 +0.5625 1 0.8125 +0.5625 1 0.45833333333333331 +0.6875 1 0.3125 +0.5714285714285714 1 0.32142857142857145 +0.6875 1 0.41666666666666669 +0.8125 1 0.1875 +0.94999999999999996 1 0.050000000000000003 +0.8214285714285714 1 0.071428571428571425 +0.9285714285714286 1 0.17857142857142858 +0.70833333333333337 1 0.1875 +0.5625 1 0.0625 +0.58333333333333337 1 0.1875 +0.6875 1 0.0625 +0.79166666666666663 1 0.3125 +0.9375 1 0.4375 +0.91666666666666663 1 0.3125 +0.8125 1 0.4375 +0.4375 1 0.54166666666666663 +0.3125 1 0.6875 +0.42857142857142855 1 0.6785714285714286 +0.3125 1 0.58333333333333337 +0.1875 1 0.8125 +0.050000000000000003 1 0.94999999999999996 +0.17857142857142858 1 0.9285714285714286 +0.071428571428571425 1 0.8214285714285714 +0.29166666666666669 1 0.8125 +0.4375 1 0.9375 +0.41666666666666669 1 0.8125 +0.3125 1 0.9375 +0.20833333333333334 1 0.6875 +0.0625 1 0.5625 +0.083333333333333329 1 0.6875 +0.1875 1 0.5625 +0.050000000000000003 0 0.050000000000000003 +0.1875 0 0.1875 +0.071428571428571425 0 0.17857142857142858 +0.17857142857142858 0 0.071428571428571425 +0.3125 0 0.3125 +0.4375 0 0.4375 +0.32142857142857145 0 0.42857142857142855 +0.42857142857142855 0 0.32142857142857145 +0.20833333333333334 0 0.3125 +0.0625 0 0.4375 +0.083333333333333329 0 0.3125 +0.1875 0 0.4375 +0.29166666666666669 0 0.1875 +0.4375 0 0.0625 +0.41666666666666669 0 0.1875 +0.3125 0 0.0625 +0.5625 0 0.5625 +0.6875 0 0.6875 +0.5714285714285714 0 0.6785714285714286 +0.6785714285714286 0 0.5714285714285714 +0.8125 0 0.8125 +0.94999999999999996 0 0.94999999999999996 +0.8214285714285714 0 0.9285714285714286 +0.9285714285714286 0 0.8214285714285714 +0.70833333333333337 0 0.8125 +0.5625 0 0.9375 +0.58333333333333337 0 0.8125 +0.6875 0 0.9375 +0.79166666666666663 0 0.6875 +0.9375 0 0.5625 +0.91666666666666663 0 0.6875 +0.8125 0 0.5625 +0.45833333333333331 0 0.5625 +0.3125 0 0.6875 +0.32142857142857145 0 0.5714285714285714 +0.41666666666666669 0 0.6875 +0.1875 0 0.8125 +0.050000000000000003 0 0.94999999999999996 +0.071428571428571425 0 0.8214285714285714 +0.17857142857142858 0 0.9285714285714286 +0.1875 0 0.70833333333333337 +0.0625 0 0.5625 +0.1875 0 0.58333333333333337 +0.0625 0 0.6875 +0.3125 0 0.79166666666666663 +0.4375 0 0.9375 +0.3125 0 0.91666666666666663 +0.4375 0 0.8125 +0.54166666666666663 0 0.4375 +0.6875 0 0.3125 +0.6785714285714286 0 0.42857142857142855 +0.58333333333333337 0 0.3125 +0.8125 0 0.1875 +0.94999999999999996 0 0.050000000000000003 +0.9285714285714286 0 0.17857142857142858 +0.8214285714285714 0 0.071428571428571425 +0.8125 0 0.29166666666666669 +0.9375 0 0.4375 +0.8125 0 0.41666666666666669 +0.9375 0 0.3125 +0.6875 0 0.20833333333333334 +0.5625 0 0.0625 +0.6875 0 0.083333333333333329 +0.5625 0 0.1875 +1 0.94999999999999996 0.050000000000000003 +1 0.8125 0.1875 +1 0.8214285714285714 0.071428571428571425 +1 0.9285714285714286 0.17857142857142858 +1 0.6875 0.3125 +1 0.5625 0.4375 +1 0.5714285714285714 0.32142857142857145 +1 0.6785714285714286 0.42857142857142855 +1 0.6875 0.20833333333333334 +1 0.5625 0.0625 +1 0.6875 0.083333333333333329 +1 0.5625 0.1875 +1 0.8125 0.29166666666666669 +1 0.9375 0.4375 +1 0.8125 0.41666666666666669 +1 0.9375 0.3125 +1 0.4375 0.5625 +1 0.3125 0.6875 +1 0.32142857142857145 0.5714285714285714 +1 0.42857142857142855 0.6785714285714286 +1 0.1875 0.8125 +1 0.050000000000000003 0.94999999999999996 +1 0.071428571428571425 0.8214285714285714 +1 0.17857142857142858 0.9285714285714286 +1 0.1875 0.70833333333333337 +1 0.0625 0.5625 +1 0.1875 0.58333333333333337 +1 0.0625 0.6875 +1 0.3125 0.79166666666666663 +1 0.4375 0.9375 +1 0.3125 0.91666666666666663 +1 0.4375 0.8125 +1 0.4375 0.45833333333333331 +1 0.3125 0.3125 +1 0.42857142857142855 0.32142857142857145 +1 0.3125 0.41666666666666669 +1 0.1875 0.1875 +1 0.050000000000000003 0.050000000000000003 +1 0.17857142857142858 0.071428571428571425 +1 0.071428571428571425 0.17857142857142858 +1 0.29166666666666669 0.1875 +1 0.4375 0.0625 +1 0.41666666666666669 0.1875 +1 0.3125 0.0625 +1 0.20833333333333334 0.3125 +1 0.0625 0.4375 +1 0.083333333333333329 0.3125 +1 0.1875 0.4375 +1 0.5625 0.54166666666666663 +1 0.6875 0.6875 +1 0.5714285714285714 0.6785714285714286 +1 0.6875 0.58333333333333337 +1 0.8125 0.8125 +1 0.94999999999999996 0.94999999999999996 +1 0.8214285714285714 0.9285714285714286 +1 0.9285714285714286 0.8214285714285714 +1 0.70833333333333337 0.8125 +1 0.5625 0.9375 +1 0.58333333333333337 0.8125 +1 0.6875 0.9375 +1 0.79166666666666663 0.6875 +1 0.9375 0.5625 +1 0.91666666666666663 0.6875 +1 0.8125 0.5625 +0 0.050000000000000003 0.94999999999999996 +0 0.1875 0.8125 +0 0.071428571428571425 0.8214285714285714 +0 0.17857142857142858 0.9285714285714286 +0 0.3125 0.6875 +0 0.4375 0.5625 +0 0.32142857142857145 0.5714285714285714 +0 0.42857142857142855 0.6785714285714286 +0 0.20833333333333334 0.6875 +0 0.0625 0.5625 +0 0.083333333333333329 0.6875 +0 0.1875 0.5625 +0 0.29166666666666669 0.8125 +0 0.4375 0.9375 +0 0.41666666666666669 0.8125 +0 0.3125 0.9375 +0 0.5625 0.4375 +0 0.6875 0.3125 +0 0.5714285714285714 0.32142857142857145 +0 0.6785714285714286 0.42857142857142855 +0 0.8125 0.1875 +0 0.94999999999999996 0.050000000000000003 +0 0.8214285714285714 0.071428571428571425 +0 0.9285714285714286 0.17857142857142858 +0 0.70833333333333337 0.1875 +0 0.5625 0.0625 +0 0.58333333333333337 0.1875 +0 0.6875 0.0625 +0 0.79166666666666663 0.3125 +0 0.9375 0.4375 +0 0.91666666666666663 0.3125 +0 0.8125 0.4375 +0 0.45833333333333331 0.4375 +0 0.3125 0.3125 +0 0.32142857142857145 0.42857142857142855 +0 0.41666666666666669 0.3125 +0 0.1875 0.1875 +0 0.050000000000000003 0.050000000000000003 +0 0.071428571428571425 0.17857142857142858 +0 0.17857142857142858 0.071428571428571425 +0 0.1875 0.29166666666666669 +0 0.0625 0.4375 +0 0.1875 0.41666666666666669 +0 0.0625 0.3125 +0 0.3125 0.20833333333333334 +0 0.4375 0.0625 +0 0.3125 0.083333333333333329 +0 0.4375 0.1875 +0 0.54166666666666663 0.5625 +0 0.6875 0.6875 +0 0.6785714285714286 0.5714285714285714 +0 0.58333333333333337 0.6875 +0 0.8125 0.8125 +0 0.94999999999999996 0.94999999999999996 +0 0.9285714285714286 0.8214285714285714 +0 0.8214285714285714 0.9285714285714286 +0 0.8125 0.70833333333333337 +0 0.9375 0.5625 +0 0.8125 0.58333333333333337 +0 0.9375 0.6875 +0 0.6875 0.79166666666666663 +0 0.5625 0.9375 +0 0.6875 0.91666666666666663 +0 0.5625 0.8125 +1 0.9375 0 +1 0.8125 0 +0.9375 0.89583333333333337 0 +1 0.89583333333333337 0.0625 +1 0.6875 0 +1 0.5625 0 +0.91666666666666663 0.625 0 +1 0.625 0.0625 +0.95833333333333337 0.75 0 +0.8125 0.77083333333333337 0 +0.85416666666666663 0.8125 0 +0.875 0.66666666666666663 0 +1 0.75 0.041666666666666671 +1 0.7589285714285714 0.17857142857142858 +1 0.6875 0.14583333333333334 +1 0.8125 0.14583333333333334 +1 0.4375 0 +1 0.3125 0 +0.9375 0.375 0 +1 0.375 0.083333333333333329 +1 0.1875 0 +1 0.0625 0 +0.9375 0.10416666666666667 0 +1 0.10416666666666667 0.0625 +0.95833333333333337 0.25 0 +0.8214285714285714 0.24107142857142858 0 +0.85416666666666663 0.3125 0 +0.85416666666666663 0.1875 0 +1 0.25 0.041666666666666671 +1 0.22916666666666666 0.1875 +1 0.1875 0.14583333333333334 +1 0.33333333333333331 0.125 +0.95833333333333337 0.5 0 +0.8035714285714286 0.5089285714285714 0 +0.875 0.5625 0 +0.875 0.41666666666666669 0 +0.6964285714285714 0.49107142857142855 0 +0.5625 0.52083333333333337 0 +0.60416666666666663 0.5625 0 +0.625 0.4375 0 +0.75 0.54166666666666663 0 +0.7410714285714286 0.6785714285714286 0 +0.8125 0.64583333333333337 0 +0.6875 0.64583333333333337 0 +0.75 0.45833333333333331 0 +0.72916666666666663 0.3125 0 +0.6875 0.35416666666666669 0 +0.83333333333333337 0.375 0 +1 0.5 0.041666666666666671 +1 0.49107142857142855 0.19642857142857142 +1 0.4375 0.125 +1 0.58333333333333337 0.125 +1 0.5 0.29166666666666669 +1 0.5089285714285714 0.42857142857142855 +1 0.4375 0.39583333333333331 +1 0.5625 0.39583333333333331 +1 0.45833333333333331 0.25 +1 0.32142857142857145 0.25892857142857145 +1 0.35416666666666669 0.1875 +1 0.35416666666666669 0.3125 +1 0.54166666666666663 0.25 +1 0.6875 0.27083333333333331 +1 0.64583333333333337 0.3125 +1 0.625 0.16666666666666666 +0.9375 0 0 +0.8125 0 0 +0.89583333333333337 0.0625 0 +0.89583333333333337 0 0.0625 +0.6875 0 0 +0.5625 0 0 +0.625 0.083333333333333329 0 +0.625 0 0.0625 +0.75 0.041666666666666671 0 +0.77083333333333337 0.1875 0 +0.8125 0.14583333333333334 0 +0.66666666666666663 0.125 0 +0.75 0 0.041666666666666671 +0.7589285714285714 0 0.17857142857142858 +0.6875 0 0.14583333333333334 +0.8125 0 0.14583333333333334 +0.4375 0 0 +0.3125 0 0 +0.375 0.0625 0 +0.375 0 0.083333333333333329 +0.1875 0 0 +0.0625 0 0 +0.10416666666666667 0.0625 0 +0.10416666666666667 0 0.0625 +0.25 0.041666666666666671 0 +0.24107142857142858 0.17857142857142858 0 +0.3125 0.14583333333333334 0 +0.1875 0.14583333333333334 0 +0.25 0 0.041666666666666671 +0.22916666666666666 0 0.1875 +0.1875 0 0.14583333333333334 +0.33333333333333331 0 0.125 +0.5 0.041666666666666671 0 +0.5089285714285714 0.19642857142857142 0 +0.5625 0.125 0 +0.41666666666666669 0.125 0 +0.5 0.29166666666666669 0 +0.49107142857142855 0.42857142857142855 0 +0.5625 0.39583333333333331 0 +0.4375 0.39583333333333331 0 +0.54166666666666663 0.25 0 +0.6785714285714286 0.25892857142857145 0 +0.64583333333333337 0.1875 0 +0.64583333333333337 0.3125 0 +0.45833333333333331 0.25 0 +0.3125 0.27083333333333331 0 +0.35416666666666669 0.3125 0 +0.375 0.16666666666666666 0 +0.5 0 0.041666666666666671 +0.49107142857142855 0 0.19642857142857142 +0.4375 0 0.125 +0.58333333333333337 0 0.125 +0.5089285714285714 0 0.30357142857142855 +0.47916666666666669 0 0.4375 +0.4375 0 0.39583333333333331 +0.5625 0 0.375 +0.45833333333333331 0 0.25 +0.32142857142857145 0 0.25892857142857145 +0.35416666666666669 0 0.1875 +0.35416666666666669 0 0.3125 +0.54166666666666663 0 0.25 +0.6875 0 0.27083333333333331 +0.64583333333333337 0 0.3125 +0.625 0 0.16666666666666666 +0 0.0625 0 +0 0.1875 0 +0.0625 0.10416666666666667 0 +0 0.10416666666666667 0.0625 +0 0.3125 0 +0 0.4375 0 +0.083333333333333329 0.375 0 +0 0.375 0.0625 +0.041666666666666671 0.25 0 +0.1875 0.22916666666666666 0 +0.14583333333333334 0.1875 0 +0.125 0.33333333333333331 0 +0 0.25 0.041666666666666671 +0 0.24107142857142858 0.17857142857142858 +0 0.3125 0.14583333333333334 +0 0.1875 0.14583333333333334 +0 0.5625 0 +0 0.6875 0 +0.0625 0.625 0 +0 0.625 0.083333333333333329 +0 0.8125 0 +0 0.9375 0 +0.0625 0.89583333333333337 0 +0 0.89583333333333337 0.0625 +0.041666666666666671 0.75 0 +0.17857142857142858 0.7589285714285714 0 +0.14583333333333334 0.6875 0 +0.14583333333333334 0.8125 0 +0 0.75 0.041666666666666671 +0 0.77083333333333337 0.1875 +0 0.8125 0.14583333333333334 +0 0.66666666666666663 0.125 +0.041666666666666671 0.5 0 +0.19642857142857142 0.49107142857142855 0 +0.125 0.4375 0 +0.125 0.58333333333333337 0 +0.30357142857142855 0.5089285714285714 0 +0.4375 0.47916666666666669 0 +0.39583333333333331 0.4375 0 +0.375 0.5625 0 +0.25 0.45833333333333331 0 +0.25892857142857145 0.32142857142857145 0 +0.1875 0.35416666666666669 0 +0.3125 0.35416666666666669 0 +0.25 0.54166666666666663 0 +0.27083333333333331 0.6875 0 +0.3125 0.64583333333333337 0 +0.16666666666666666 0.625 0 +0 0.5 0.041666666666666671 +0 0.5089285714285714 0.19642857142857142 +0 0.5625 0.125 +0 0.41666666666666669 0.125 +0 0.49107142857142855 0.30357142857142855 +0 0.52083333333333337 0.4375 +0 0.5625 0.39583333333333331 +0 0.4375 0.375 +0 0.54166666666666663 0.25 +0 0.6785714285714286 0.25892857142857145 +0 0.64583333333333337 0.1875 +0 0.64583333333333337 0.3125 +0 0.45833333333333331 0.25 +0 0.3125 0.27083333333333331 +0 0.35416666666666669 0.3125 +0 0.375 0.16666666666666666 +0.0625 1 0 +0.1875 1 0 +0.10416666666666667 0.9375 0 +0.10416666666666667 1 0.0625 +0.3125 1 0 +0.4375 1 0 +0.375 0.91666666666666663 0 +0.375 1 0.0625 +0.25 0.95833333333333337 0 +0.22916666666666666 0.8125 0 +0.1875 0.85416666666666663 0 +0.33333333333333331 0.875 0 +0.25 1 0.041666666666666671 +0.24107142857142858 1 0.17857142857142858 +0.3125 1 0.14583333333333334 +0.1875 1 0.14583333333333334 +0.5625 1 0 +0.6875 1 0 +0.625 0.9375 0 +0.625 1 0.083333333333333329 +0.8125 1 0 +0.9375 1 0 +0.89583333333333337 0.9375 0 +0.89583333333333337 1 0.0625 +0.75 0.95833333333333337 0 +0.7589285714285714 0.8214285714285714 0 +0.6875 0.85416666666666663 0 +0.8125 0.85416666666666663 0 +0.75 1 0.041666666666666671 +0.77083333333333337 1 0.1875 +0.8125 1 0.14583333333333334 +0.66666666666666663 1 0.125 +0.5 0.95833333333333337 0 +0.49107142857142855 0.8035714285714286 0 +0.4375 0.875 0 +0.58333333333333337 0.875 0 +0.5 0.70833333333333337 0 +0.5089285714285714 0.5714285714285714 0 +0.4375 0.60416666666666663 0 +0.5625 0.60416666666666663 0 +0.45833333333333331 0.75 0 +0.32142857142857145 0.7410714285714286 0 +0.35416666666666669 0.8125 0 +0.35416666666666669 0.6875 0 +0.54166666666666663 0.75 0 +0.6875 0.72916666666666663 0 +0.64583333333333337 0.6875 0 +0.625 0.83333333333333337 0 +0.5 1 0.041666666666666671 +0.5089285714285714 1 0.19642857142857142 +0.5625 1 0.125 +0.41666666666666669 1 0.125 +0.5 1 0.29166666666666669 +0.49107142857142855 1 0.42857142857142855 +0.5625 1 0.39583333333333331 +0.4375 1 0.39583333333333331 +0.54166666666666663 1 0.25 +0.6785714285714286 1 0.25892857142857145 +0.64583333333333337 1 0.1875 +0.64583333333333337 1 0.3125 +0.45833333333333331 1 0.25 +0.3125 1 0.27083333333333331 +0.35416666666666669 1 0.3125 +0.375 1 0.16666666666666666 +0.0625 0 1 +0.1875 0 1 +0.10416666666666667 0.0625 1 +0.10416666666666667 0 0.9375 +0.3125 0 1 +0.4375 0 1 +0.375 0.083333333333333329 1 +0.375 0 0.9375 +0.25 0.041666666666666671 1 +0.22916666666666666 0.1875 1 +0.1875 0.14583333333333334 1 +0.33333333333333331 0.125 1 +0.25 0 0.95833333333333337 +0.24107142857142858 0 0.8214285714285714 +0.3125 0 0.85416666666666663 +0.1875 0 0.85416666666666663 +0.5625 0 1 +0.6875 0 1 +0.625 0.0625 1 +0.625 0 0.91666666666666663 +0.8125 0 1 +0.9375 0 1 +0.89583333333333337 0.0625 1 +0.89583333333333337 0 0.9375 +0.75 0.041666666666666671 1 +0.7589285714285714 0.17857142857142858 1 +0.6875 0.14583333333333334 1 +0.8125 0.14583333333333334 1 +0.75 0 0.95833333333333337 +0.77083333333333337 0 0.8125 +0.8125 0 0.85416666666666663 +0.66666666666666663 0 0.875 +0.5 0.041666666666666671 1 +0.49107142857142855 0.19642857142857142 1 +0.4375 0.125 1 +0.58333333333333337 0.125 1 +0.5089285714285714 0.30357142857142855 1 +0.47916666666666669 0.4375 1 +0.4375 0.39583333333333331 1 +0.5625 0.375 1 +0.45833333333333331 0.25 1 +0.32142857142857145 0.25892857142857145 1 +0.35416666666666669 0.1875 1 +0.35416666666666669 0.3125 1 +0.54166666666666663 0.25 1 +0.6875 0.27083333333333331 1 +0.64583333333333337 0.3125 1 +0.625 0.16666666666666666 1 +0.5 0 0.95833333333333337 +0.5089285714285714 0 0.8035714285714286 +0.5625 0 0.875 +0.41666666666666669 0 0.875 +0.49107142857142855 0 0.6964285714285714 +0.52083333333333337 0 0.5625 +0.5625 0 0.60416666666666663 +0.4375 0 0.625 +0.54166666666666663 0 0.75 +0.6785714285714286 0 0.7410714285714286 +0.64583333333333337 0 0.8125 +0.64583333333333337 0 0.6875 +0.45833333333333331 0 0.75 +0.3125 0 0.72916666666666663 +0.35416666666666669 0 0.6875 +0.375 0 0.83333333333333337 +1 0.0625 1 +1 0.1875 1 +0.9375 0.10416666666666667 1 +1 0.10416666666666667 0.9375 +1 0.3125 1 +1 0.4375 1 +0.91666666666666663 0.375 1 +1 0.375 0.9375 +0.95833333333333337 0.25 1 +0.8125 0.22916666666666666 1 +0.85416666666666663 0.1875 1 +0.875 0.33333333333333331 1 +1 0.25 0.95833333333333337 +1 0.24107142857142858 0.8214285714285714 +1 0.3125 0.85416666666666663 +1 0.1875 0.85416666666666663 +1 0.5625 1 +1 0.6875 1 +0.9375 0.625 1 +1 0.625 0.91666666666666663 +1 0.8125 1 +1 0.9375 1 +0.9375 0.89583333333333337 1 +1 0.89583333333333337 0.9375 +0.95833333333333337 0.75 1 +0.8214285714285714 0.7589285714285714 1 +0.85416666666666663 0.6875 1 +0.85416666666666663 0.8125 1 +1 0.75 0.95833333333333337 +1 0.77083333333333337 0.8125 +1 0.8125 0.85416666666666663 +1 0.66666666666666663 0.875 +0.95833333333333337 0.5 1 +0.8035714285714286 0.49107142857142855 1 +0.875 0.4375 1 +0.875 0.58333333333333337 1 +0.70833333333333337 0.5 1 +0.5714285714285714 0.5089285714285714 1 +0.60416666666666663 0.4375 1 +0.60416666666666663 0.5625 1 +0.75 0.45833333333333331 1 +0.7410714285714286 0.32142857142857145 1 +0.8125 0.35416666666666669 1 +0.6875 0.35416666666666669 1 +0.75 0.54166666666666663 1 +0.72916666666666663 0.6875 1 +0.6875 0.64583333333333337 1 +0.83333333333333337 0.625 1 +1 0.5 0.95833333333333337 +1 0.5089285714285714 0.8035714285714286 +1 0.5625 0.875 +1 0.41666666666666669 0.875 +1 0.5 0.70833333333333337 +1 0.49107142857142855 0.5714285714285714 +1 0.5625 0.60416666666666663 +1 0.4375 0.60416666666666663 +1 0.54166666666666663 0.75 +1 0.6785714285714286 0.7410714285714286 +1 0.64583333333333337 0.8125 +1 0.64583333333333337 0.6875 +1 0.45833333333333331 0.75 +1 0.3125 0.72916666666666663 +1 0.35416666666666669 0.6875 +1 0.375 0.83333333333333337 +0.9375 1 1 +0.8125 1 1 +0.89583333333333337 0.9375 1 +0.89583333333333337 1 0.9375 +0.6875 1 1 +0.5625 1 1 +0.625 0.91666666666666663 1 +0.625 1 0.9375 +0.75 0.95833333333333337 1 +0.77083333333333337 0.8125 1 +0.8125 0.85416666666666663 1 +0.66666666666666663 0.875 1 +0.75 1 0.95833333333333337 +0.7589285714285714 1 0.8214285714285714 +0.6875 1 0.85416666666666663 +0.8125 1 0.85416666666666663 +0.4375 1 1 +0.3125 1 1 +0.375 0.9375 1 +0.375 1 0.91666666666666663 +0.1875 1 1 +0.0625 1 1 +0.10416666666666667 0.9375 1 +0.10416666666666667 1 0.9375 +0.25 0.95833333333333337 1 +0.24107142857142858 0.8214285714285714 1 +0.3125 0.85416666666666663 1 +0.1875 0.85416666666666663 1 +0.25 1 0.95833333333333337 +0.22916666666666666 1 0.8125 +0.1875 1 0.85416666666666663 +0.33333333333333331 1 0.875 +0.5 0.95833333333333337 1 +0.5089285714285714 0.8035714285714286 1 +0.5625 0.875 1 +0.41666666666666669 0.875 1 +0.49107142857142855 0.6964285714285714 1 +0.52083333333333337 0.5625 1 +0.5625 0.60416666666666663 1 +0.4375 0.625 1 +0.54166666666666663 0.75 1 +0.6785714285714286 0.7410714285714286 1 +0.64583333333333337 0.8125 1 +0.64583333333333337 0.6875 1 +0.45833333333333331 0.75 1 +0.3125 0.72916666666666663 1 +0.35416666666666669 0.6875 1 +0.375 0.83333333333333337 1 +0.5 1 0.95833333333333337 +0.49107142857142855 1 0.8035714285714286 +0.4375 1 0.875 +0.58333333333333337 1 0.875 +0.5 1 0.70833333333333337 +0.5089285714285714 1 0.5714285714285714 +0.4375 1 0.60416666666666663 +0.5625 1 0.60416666666666663 +0.45833333333333331 1 0.75 +0.32142857142857145 1 0.7410714285714286 +0.35416666666666669 1 0.8125 +0.35416666666666669 1 0.6875 +0.54166666666666663 1 0.75 +0.6875 1 0.72916666666666663 +0.64583333333333337 1 0.6875 +0.625 1 0.83333333333333337 +0 0.9375 1 +0 0.8125 1 +0.0625 0.89583333333333337 1 +0 0.89583333333333337 0.9375 +0 0.6875 1 +0 0.5625 1 +0.083333333333333329 0.625 1 +0 0.625 0.9375 +0.041666666666666671 0.75 1 +0.1875 0.77083333333333337 1 +0.14583333333333334 0.8125 1 +0.125 0.66666666666666663 1 +0 0.75 0.95833333333333337 +0 0.7589285714285714 0.8214285714285714 +0 0.6875 0.85416666666666663 +0 0.8125 0.85416666666666663 +0 0.4375 1 +0 0.3125 1 +0.0625 0.375 1 +0 0.375 0.91666666666666663 +0 0.1875 1 +0 0.0625 1 +0.0625 0.10416666666666667 1 +0 0.10416666666666667 0.9375 +0.041666666666666671 0.25 1 +0.17857142857142858 0.24107142857142858 1 +0.14583333333333334 0.3125 1 +0.14583333333333334 0.1875 1 +0 0.25 0.95833333333333337 +0 0.22916666666666666 0.8125 +0 0.1875 0.85416666666666663 +0 0.33333333333333331 0.875 +0.041666666666666671 0.5 1 +0.19642857142857142 0.5089285714285714 1 +0.125 0.5625 1 +0.125 0.41666666666666669 1 +0.29166666666666669 0.5 1 +0.42857142857142855 0.49107142857142855 1 +0.39583333333333331 0.5625 1 +0.39583333333333331 0.4375 1 +0.25 0.54166666666666663 1 +0.25892857142857145 0.6785714285714286 1 +0.1875 0.64583333333333337 1 +0.3125 0.64583333333333337 1 +0.25 0.45833333333333331 1 +0.27083333333333331 0.3125 1 +0.3125 0.35416666666666669 1 +0.16666666666666666 0.375 1 +0 0.5 0.95833333333333337 +0 0.49107142857142855 0.8035714285714286 +0 0.4375 0.875 +0 0.58333333333333337 0.875 +0 0.5089285714285714 0.6964285714285714 +0 0.47916666666666669 0.5625 +0 0.4375 0.60416666666666663 +0 0.5625 0.625 +0 0.45833333333333331 0.75 +0 0.32142857142857145 0.7410714285714286 +0 0.35416666666666669 0.8125 +0 0.35416666666666669 0.6875 +0 0.54166666666666663 0.75 +0 0.6875 0.72916666666666663 +0 0.64583333333333337 0.6875 +0 0.625 0.83333333333333337 +1 1 0.9375 +1 1 0.8125 +0.9375 1 0.89583333333333337 +1 0.9375 0.89583333333333337 +1 1 0.6875 +1 1 0.5625 +0.91666666666666663 1 0.625 +1 0.9375 0.625 +0.95833333333333337 1 0.75 +0.8125 1 0.77083333333333337 +0.85416666666666663 1 0.8125 +0.875 1 0.66666666666666663 +1 0.95833333333333337 0.75 +1 0.8214285714285714 0.7589285714285714 +1 0.85416666666666663 0.6875 +1 0.85416666666666663 0.8125 +1 1 0.4375 +1 1 0.3125 +0.9375 1 0.375 +1 0.91666666666666663 0.375 +1 1 0.1875 +1 1 0.0625 +0.9375 1 0.10416666666666667 +1 0.9375 0.10416666666666667 +0.95833333333333337 1 0.25 +0.8214285714285714 1 0.24107142857142858 +0.85416666666666663 1 0.3125 +0.85416666666666663 1 0.1875 +1 0.95833333333333337 0.25 +1 0.8125 0.22916666666666666 +1 0.85416666666666663 0.1875 +1 0.875 0.33333333333333331 +0.95833333333333337 1 0.5 +0.8035714285714286 1 0.5089285714285714 +0.875 1 0.5625 +0.875 1 0.41666666666666669 +0.6964285714285714 1 0.49107142857142855 +0.5625 1 0.52083333333333337 +0.60416666666666663 1 0.5625 +0.625 1 0.4375 +0.75 1 0.54166666666666663 +0.7410714285714286 1 0.6785714285714286 +0.8125 1 0.64583333333333337 +0.6875 1 0.64583333333333337 +0.75 1 0.45833333333333331 +0.72916666666666663 1 0.3125 +0.6875 1 0.35416666666666669 +0.83333333333333337 1 0.375 +1 0.95833333333333337 0.5 +1 0.8035714285714286 0.49107142857142855 +1 0.875 0.4375 +1 0.875 0.58333333333333337 +1 0.6964285714285714 0.5089285714285714 +1 0.5625 0.47916666666666669 +1 0.60416666666666663 0.4375 +1 0.625 0.5625 +1 0.75 0.45833333333333331 +1 0.7410714285714286 0.32142857142857145 +1 0.8125 0.35416666666666669 +1 0.6875 0.35416666666666669 +1 0.75 0.54166666666666663 +1 0.72916666666666663 0.6875 +1 0.6875 0.64583333333333337 +1 0.83333333333333337 0.625 +0 1 0.0625 +0 1 0.1875 +0.0625 1 0.10416666666666667 +0 0.9375 0.10416666666666667 +0 1 0.3125 +0 1 0.4375 +0.083333333333333329 1 0.375 +0 0.9375 0.375 +0.041666666666666671 1 0.25 +0.1875 1 0.22916666666666666 +0.14583333333333334 1 0.1875 +0.125 1 0.33333333333333331 +0 0.95833333333333337 0.25 +0 0.8214285714285714 0.24107142857142858 +0 0.85416666666666663 0.3125 +0 0.85416666666666663 0.1875 +0 1 0.5625 +0 1 0.6875 +0.0625 1 0.625 +0 0.91666666666666663 0.625 +0 1 0.8125 +0 1 0.9375 +0.0625 1 0.89583333333333337 +0 0.9375 0.89583333333333337 +0.041666666666666671 1 0.75 +0.17857142857142858 1 0.7589285714285714 +0.14583333333333334 1 0.6875 +0.14583333333333334 1 0.8125 +0 0.95833333333333337 0.75 +0 0.8125 0.77083333333333337 +0 0.85416666666666663 0.8125 +0 0.875 0.66666666666666663 +0.041666666666666671 1 0.5 +0.19642857142857142 1 0.49107142857142855 +0.125 1 0.4375 +0.125 1 0.58333333333333337 +0.30357142857142855 1 0.5089285714285714 +0.4375 1 0.47916666666666669 +0.39583333333333331 1 0.4375 +0.375 1 0.5625 +0.25 1 0.45833333333333331 +0.25892857142857145 1 0.32142857142857145 +0.1875 1 0.35416666666666669 +0.3125 1 0.35416666666666669 +0.25 1 0.54166666666666663 +0.27083333333333331 1 0.6875 +0.3125 1 0.64583333333333337 +0.16666666666666666 1 0.625 +0 0.95833333333333337 0.5 +0 0.8035714285714286 0.5089285714285714 +0 0.875 0.5625 +0 0.875 0.41666666666666669 +0 0.70833333333333337 0.5 +0 0.5714285714285714 0.49107142857142855 +0 0.60416666666666663 0.5625 +0 0.60416666666666663 0.4375 +0 0.75 0.54166666666666663 +0 0.7410714285714286 0.6785714285714286 +0 0.8125 0.64583333333333337 +0 0.6875 0.64583333333333337 +0 0.75 0.45833333333333331 +0 0.72916666666666663 0.3125 +0 0.6875 0.35416666666666669 +0 0.83333333333333337 0.375 +0 0 0.9375 +0 0 0.8125 +0.0625 0 0.89583333333333337 +0 0.0625 0.89583333333333337 +0 0 0.6875 +0 0 0.5625 +0.083333333333333329 0 0.625 +0 0.0625 0.625 +0.041666666666666671 0 0.75 +0.1875 0 0.77083333333333337 +0.14583333333333334 0 0.8125 +0.125 0 0.66666666666666663 +0 0.041666666666666671 0.75 +0 0.17857142857142858 0.7589285714285714 +0 0.14583333333333334 0.6875 +0 0.14583333333333334 0.8125 +0 0 0.4375 +0 0 0.3125 +0.0625 0 0.375 +0 0.083333333333333329 0.375 +0 0 0.1875 +0 0 0.0625 +0.0625 0 0.10416666666666667 +0 0.0625 0.10416666666666667 +0.041666666666666671 0 0.25 +0.17857142857142858 0 0.24107142857142858 +0.14583333333333334 0 0.3125 +0.14583333333333334 0 0.1875 +0 0.041666666666666671 0.25 +0 0.1875 0.22916666666666666 +0 0.14583333333333334 0.1875 +0 0.125 0.33333333333333331 +0.041666666666666671 0 0.5 +0.19642857142857142 0 0.5089285714285714 +0.125 0 0.5625 +0.125 0 0.41666666666666669 +0.29166666666666669 0 0.5 +0.42857142857142855 0 0.49107142857142855 +0.39583333333333331 0 0.5625 +0.39583333333333331 0 0.4375 +0.25 0 0.54166666666666663 +0.25892857142857145 0 0.6785714285714286 +0.1875 0 0.64583333333333337 +0.3125 0 0.64583333333333337 +0.25 0 0.45833333333333331 +0.27083333333333331 0 0.3125 +0.3125 0 0.35416666666666669 +0.16666666666666666 0 0.375 +0 0.041666666666666671 0.5 +0 0.19642857142857142 0.49107142857142855 +0 0.125 0.4375 +0 0.125 0.58333333333333337 +0 0.29166666666666669 0.5 +0 0.42857142857142855 0.5089285714285714 +0 0.39583333333333331 0.4375 +0 0.39583333333333331 0.5625 +0 0.25 0.45833333333333331 +0 0.25892857142857145 0.32142857142857145 +0 0.1875 0.35416666666666669 +0 0.3125 0.35416666666666669 +0 0.25 0.54166666666666663 +0 0.27083333333333331 0.6875 +0 0.3125 0.64583333333333337 +0 0.16666666666666666 0.625 +1 0 0.0625 +1 0 0.1875 +0.9375 0 0.10416666666666667 +1 0.0625 0.10416666666666667 +1 0 0.3125 +1 0 0.4375 +0.91666666666666663 0 0.375 +1 0.0625 0.375 +0.95833333333333337 0 0.25 +0.8125 0 0.22916666666666666 +0.85416666666666663 0 0.1875 +0.875 0 0.33333333333333331 +1 0.041666666666666671 0.25 +1 0.17857142857142858 0.24107142857142858 +1 0.14583333333333334 0.3125 +1 0.14583333333333334 0.1875 +1 0 0.5625 +1 0 0.6875 +0.9375 0 0.625 +1 0.083333333333333329 0.625 +1 0 0.8125 +1 0 0.9375 +0.9375 0 0.89583333333333337 +1 0.0625 0.89583333333333337 +0.95833333333333337 0 0.75 +0.8214285714285714 0 0.7589285714285714 +0.85416666666666663 0 0.6875 +0.85416666666666663 0 0.8125 +1 0.041666666666666671 0.75 +1 0.1875 0.77083333333333337 +1 0.14583333333333334 0.8125 +1 0.125 0.66666666666666663 +0.95833333333333337 0 0.5 +0.8035714285714286 0 0.49107142857142855 +0.875 0 0.4375 +0.875 0 0.58333333333333337 +0.70833333333333337 0 0.5 +0.5714285714285714 0 0.5089285714285714 +0.60416666666666663 0 0.4375 +0.60416666666666663 0 0.5625 +0.75 0 0.45833333333333331 +0.7410714285714286 0 0.32142857142857145 +0.8125 0 0.35416666666666669 +0.6875 0 0.35416666666666669 +0.75 0 0.54166666666666663 +0.72916666666666663 0 0.6875 +0.6875 0 0.64583333333333337 +0.83333333333333337 0 0.625 +1 0.041666666666666671 0.5 +1 0.19642857142857142 0.5089285714285714 +1 0.125 0.5625 +1 0.125 0.41666666666666669 +1 0.30357142857142855 0.49107142857142855 +1 0.4375 0.52083333333333337 +1 0.39583333333333331 0.5625 +1 0.375 0.4375 +1 0.25 0.54166666666666663 +1 0.25892857142857145 0.6785714285714286 +1 0.1875 0.64583333333333337 +1 0.3125 0.64583333333333337 +1 0.25 0.45833333333333331 +1 0.27083333333333331 0.3125 +1 0.3125 0.35416666666666669 +1 0.16666666666666666 0.375 +3 428 867 874 +3 444 995 1002 +3 492 1123 1130 +3 508 1251 1258 +3 556 1011 1018 +3 572 1203 1210 +3 620 1443 1450 +3 636 1507 1514 +3 684 819 826 +3 700 1139 1146 +3 748 1459 1466 +3 764 1395 1402 +3 412 803 810 +3 400 931 938 +3 476 1059 1066 +3 464 1187 1194 +3 540 1315 1322 +3 528 1379 1386 +3 604 1075 1082 +3 592 883 890 +3 668 1523 1530 +3 656 1331 1338 +3 732 947 954 +3 720 1267 1274 +3 432 787 794 +3 652 774 782 +3 396 851 858 +3 640 838 846 +3 448 915 922 +3 752 902 910 +3 416 979 986 +3 524 966 974 +3 496 1043 1050 +3 624 1030 1038 +3 460 1107 1114 +3 672 1094 1102 +3 512 1171 1178 +3 544 1158 1166 +3 480 1235 1242 +3 768 1222 1230 +3 560 1299 1306 +3 704 1286 1294 +3 576 1363 1370 +3 736 1350 1358 +3 588 1427 1434 +3 716 1414 1422 +3 608 1491 1498 +3 688 1478 1486 +3 392 870 878 +3 389 899 906 +3 408 771 778 +3 405 998 1006 +3 424 835 842 +3 421 806 814 +3 440 963 970 +3 437 934 942 +3 456 1126 1134 +3 453 1155 1162 +3 472 1027 1034 +3 469 1254 1262 +3 488 1091 1098 +3 485 1062 1070 +3 504 1219 1226 +3 501 1190 1198 +3 520 1014 1022 +3 517 1347 1354 +3 536 1283 1290 +3 533 1206 1214 +3 552 982 990 +3 549 1318 1326 +3 568 1174 1182 +3 565 1382 1390 +3 584 1446 1454 +3 581 854 862 +3 600 1046 1054 +3 597 1510 1518 +3 616 1411 1418 +3 613 1078 1086 +3 632 1475 1482 +3 629 886 894 +3 648 822 830 +3 645 1302 1310 +3 664 1494 1502 +3 661 1142 1150 +3 680 790 798 +3 677 1526 1534 +3 696 1110 1118 +3 693 1334 1342 +3 712 1462 1470 +3 709 1238 1246 +3 728 918 926 +3 725 1398 1406 +3 744 1430 1438 +3 741 950 958 +3 760 1366 1374 +3 757 1270 1278 +3 413 196 778 +3 644 197 782 +3 425 200 794 +3 685 201 798 +3 404 204 810 +3 804 776 411 +3 676 208 826 +3 820 789 683 +3 429 212 842 +3 633 213 846 +3 388 216 858 +3 593 217 862 +3 420 220 874 +3 868 840 427 +3 585 224 890 +3 884 853 591 +3 401 228 906 +3 745 229 910 +3 441 232 922 +3 733 233 926 +3 393 236 938 +3 932 904 399 +3 724 240 954 +3 948 917 731 +3 445 244 970 +3 516 245 974 +3 409 248 986 +3 557 249 990 +3 436 252 1002 +3 996 968 443 +3 548 256 1018 +3 1012 981 555 +3 477 260 1034 +3 617 261 1038 +3 489 264 1050 +3 605 265 1054 +3 468 268 1066 +3 1060 1032 475 +3 596 272 1082 +3 1076 1045 603 +3 493 276 1098 +3 665 277 1102 +3 452 280 1114 +3 701 281 1118 +3 484 284 1130 +3 1124 1096 491 +3 692 288 1146 +3 1140 1109 699 +3 465 292 1162 +3 537 293 1166 +3 505 296 1178 +3 573 297 1182 +3 457 300 1194 +3 1188 1160 463 +3 564 304 1210 +3 1204 1173 571 +3 509 308 1226 +3 761 309 1230 +3 473 312 1242 +3 721 313 1246 +3 500 316 1258 +3 1252 1224 507 +3 713 320 1274 +3 1268 1237 719 +3 541 324 1290 +3 697 325 1294 +3 553 328 1306 +3 657 329 1310 +3 532 332 1322 +3 1316 1288 539 +3 649 336 1338 +3 1332 1301 655 +3 529 340 1354 +3 729 341 1358 +3 569 344 1370 +3 765 345 1374 +3 521 348 1386 +3 1380 1352 527 +3 756 352 1402 +3 1396 1365 763 +3 621 356 1418 +3 708 357 1422 +3 580 360 1434 +3 749 361 1438 +3 612 364 1450 +3 1444 1416 619 +3 740 368 1466 +3 1460 1429 747 +3 637 372 1482 +3 681 373 1486 +3 601 376 1498 +3 669 377 1502 +3 628 380 1514 +3 1508 1480 635 +3 660 384 1530 +3 1524 1493 667 +3 860 100 396 +3 389 98 900 +3 872 106 420 +3 940 101 400 +3 395 218 866 +3 880 99 392 +3 399 903 930 +3 908 98 389 +3 812 104 412 +3 1000 110 436 +3 408 103 772 +3 988 105 416 +3 411 775 802 +3 780 103 408 +3 415 250 994 +3 1008 102 405 +3 876 108 428 +3 808 102 404 +3 424 107 836 +3 796 109 432 +3 427 839 866 +3 844 107 424 +3 431 202 802 +3 816 106 421 +3 1004 112 444 +3 936 99 393 +3 440 111 964 +3 924 113 448 +3 443 967 994 +3 972 111 440 +3 447 234 930 +3 944 110 437 +3 1116 116 460 +3 453 114 1156 +3 1128 122 484 +3 1196 117 464 +3 459 282 1122 +3 1136 115 456 +3 463 1159 1186 +3 1164 114 453 +3 1068 120 476 +3 1256 126 500 +3 472 119 1028 +3 1244 121 480 +3 475 1031 1058 +3 1036 119 472 +3 479 314 1250 +3 1264 118 469 +3 1132 124 492 +3 1064 118 468 +3 488 123 1092 +3 1052 125 496 +3 491 1095 1122 +3 1100 123 488 +3 495 266 1058 +3 1072 122 485 +3 1260 128 508 +3 1192 115 457 +3 504 127 1220 +3 1180 129 512 +3 507 1223 1250 +3 1228 127 504 +3 511 298 1186 +3 1200 126 501 +3 976 132 524 +3 517 130 1348 +3 1016 138 548 +3 1388 133 528 +3 523 254 1010 +3 1024 131 520 +3 527 1351 1378 +3 1356 130 517 +3 1324 136 540 +3 1208 142 564 +3 536 135 1284 +3 1168 137 544 +3 539 1287 1314 +3 1292 135 536 +3 543 302 1202 +3 1216 134 533 +3 1020 140 556 +3 1320 134 532 +3 552 139 985 +3 1308 141 560 +3 555 978 1010 +3 992 139 552 +3 559 330 1314 +3 1328 138 549 +3 1212 144 572 +3 1384 131 521 +3 568 143 1177 +3 1372 145 576 +3 571 1170 1202 +3 1184 143 568 +3 575 346 1378 +3 1392 142 565 +3 1436 148 588 +3 581 146 857 +3 1448 154 612 +3 892 149 592 +3 587 362 1442 +3 1456 147 584 +3 591 850 882 +3 864 146 581 +3 1084 152 604 +3 1512 158 628 +3 600 151 1049 +3 1500 153 608 +3 603 1042 1074 +3 1056 151 600 +3 607 378 1506 +3 1520 150 597 +3 1452 156 620 +3 1080 150 596 +3 616 155 1412 +3 1040 157 624 +3 619 1415 1442 +3 1420 155 616 +3 623 270 1074 +3 1088 154 613 +3 1516 160 636 +3 888 147 585 +3 632 159 1476 +3 848 161 640 +3 635 1479 1506 +3 1484 159 632 +3 639 222 882 +3 896 158 629 +3 784 164 652 +3 645 162 1305 +3 824 170 676 +3 1340 165 656 +3 651 206 818 +3 832 163 648 +3 655 1298 1330 +3 1312 162 645 +3 1532 168 668 +3 1144 174 692 +3 664 167 1497 +3 1104 169 672 +3 667 1490 1522 +3 1504 167 664 +3 671 286 1138 +3 1152 166 661 +3 828 172 684 +3 1528 166 660 +3 680 171 793 +3 1488 173 688 +3 683 786 818 +3 800 171 680 +3 687 382 1522 +3 1536 170 677 +3 1148 176 700 +3 1336 163 649 +3 696 175 1113 +3 1296 177 704 +3 699 1106 1138 +3 1120 175 696 +3 703 334 1330 +3 1344 174 693 +3 1424 180 716 +3 709 178 1241 +3 1464 186 740 +3 1276 181 720 +3 715 366 1458 +3 1472 179 712 +3 719 1234 1266 +3 1248 178 709 +3 956 184 732 +3 1400 190 756 +3 728 183 921 +3 1360 185 736 +3 731 914 946 +3 928 183 728 +3 735 350 1394 +3 1408 182 725 +3 1468 188 748 +3 952 182 724 +3 744 187 1433 +3 912 189 752 +3 747 1426 1458 +3 1440 187 744 +3 751 238 946 +3 960 186 741 +3 1404 192 764 +3 1272 179 713 +3 760 191 1369 +3 1232 193 768 +3 763 1362 1394 +3 1376 191 760 +3 767 318 1266 +3 1280 190 757 +3 772 770 194 +3 773 162 644 +3 781 196 413 +3 821 206 651 +3 410 27 779 +3 196 779 780 +3 644 162 785 +3 197 783 784 +3 805 202 431 +3 801 201 685 +3 792 107 425 +3 793 791 199 +3 425 107 797 +3 200 795 796 +3 682 44 799 +3 201 799 800 +3 433 205 814 +3 202 803 804 +3 418 8 807 +3 203 807 808 +3 404 102 813 +3 204 811 812 +3 430 28 815 +3 205 815 816 +3 653 209 830 +3 206 819 820 +3 648 163 825 +3 207 823 824 +3 676 170 829 +3 208 827 828 +3 650 42 831 +3 209 831 832 +3 836 834 210 +3 837 159 633 +3 845 212 429 +3 885 222 639 +3 426 28 843 +3 212 843 844 +3 633 159 849 +3 213 847 848 +3 869 218 395 +3 865 217 593 +3 856 98 388 +3 857 855 215 +3 388 98 861 +3 216 859 860 +3 590 38 863 +3 217 863 864 +3 397 221 878 +3 218 867 868 +3 392 99 873 +3 219 871 872 +3 420 106 877 +3 220 875 876 +3 394 26 879 +3 221 879 880 +3 641 225 894 +3 222 883 884 +3 626 11 887 +3 223 887 888 +3 585 147 893 +3 224 891 892 +3 638 41 895 +3 225 895 896 +3 900 898 226 +3 901 187 745 +3 909 228 401 +3 949 238 751 +3 398 26 907 +3 228 907 908 +3 745 187 913 +3 229 911 912 +3 933 234 447 +3 929 233 733 +3 920 111 441 +3 921 919 231 +3 441 111 925 +3 232 923 924 +3 730 47 927 +3 233 927 928 +3 449 237 942 +3 234 931 932 +3 434 8 935 +3 235 935 936 +3 393 99 941 +3 236 939 940 +3 446 29 943 +3 237 943 944 +3 753 241 958 +3 238 947 948 +3 738 13 951 +3 239 951 952 +3 724 182 957 +3 240 955 956 +3 750 48 959 +3 241 959 960 +3 964 962 242 +3 965 130 516 +3 973 244 445 +3 1013 254 523 +3 442 29 971 +3 244 971 972 +3 516 130 977 +3 245 975 976 +3 997 250 415 +3 993 249 557 +3 984 103 409 +3 985 983 247 +3 409 103 989 +3 248 987 988 +3 554 36 991 +3 249 991 992 +3 417 253 1006 +3 250 995 996 +3 405 102 1001 +3 251 999 1000 +3 436 110 1005 +3 252 1003 1004 +3 414 27 1007 +3 253 1007 1008 +3 525 257 1022 +3 254 1011 1012 +3 520 131 1017 +3 255 1015 1016 +3 548 138 1021 +3 256 1019 1020 +3 522 34 1023 +3 257 1023 1024 +3 1028 1026 258 +3 1029 155 617 +3 1037 260 477 +3 1077 270 623 +3 474 31 1035 +3 260 1035 1036 +3 617 155 1041 +3 261 1039 1040 +3 1061 266 495 +3 1057 265 605 +3 1048 123 489 +3 1049 1047 263 +3 489 123 1053 +3 264 1051 1052 +3 602 39 1055 +3 265 1055 1056 +3 497 269 1070 +3 266 1059 1060 +3 482 9 1063 +3 267 1063 1064 +3 468 118 1069 +3 268 1067 1068 +3 494 32 1071 +3 269 1071 1072 +3 625 273 1086 +3 270 1075 1076 +3 610 11 1079 +3 271 1079 1080 +3 596 150 1085 +3 272 1083 1084 +3 622 40 1087 +3 273 1087 1088 +3 1092 1090 274 +3 1093 167 665 +3 1101 276 493 +3 1141 286 671 +3 490 32 1099 +3 276 1099 1100 +3 665 167 1105 +3 277 1103 1104 +3 1125 282 459 +3 1121 281 701 +3 1112 114 452 +3 1113 1111 279 +3 452 114 1117 +3 280 1115 1116 +3 698 45 1119 +3 281 1119 1120 +3 461 285 1134 +3 282 1123 1124 +3 456 115 1129 +3 283 1127 1128 +3 484 122 1133 +3 284 1131 1132 +3 458 30 1135 +3 285 1135 1136 +3 673 289 1150 +3 286 1139 1140 +3 661 166 1145 +3 287 1143 1144 +3 692 174 1149 +3 288 1147 1148 +3 670 43 1151 +3 289 1151 1152 +3 1156 1154 290 +3 1157 135 537 +3 1165 292 465 +3 1205 302 543 +3 462 30 1163 +3 292 1163 1164 +3 537 135 1169 +3 293 1167 1168 +3 1189 298 511 +3 1185 297 573 +3 1176 127 505 +3 1177 1175 295 +3 505 127 1181 +3 296 1179 1180 +3 570 37 1183 +3 297 1183 1184 +3 513 301 1198 +3 298 1187 1188 +3 498 9 1191 +3 299 1191 1192 +3 457 115 1197 +3 300 1195 1196 +3 510 33 1199 +3 301 1199 1200 +3 545 305 1214 +3 302 1203 1204 +3 533 134 1209 +3 303 1207 1208 +3 564 142 1213 +3 304 1211 1212 +3 542 35 1215 +3 305 1215 1216 +3 1220 1218 306 +3 1221 191 761 +3 1229 308 509 +3 1269 318 767 +3 506 33 1227 +3 308 1227 1228 +3 761 191 1233 +3 309 1231 1232 +3 1253 314 479 +3 1249 313 721 +3 1240 119 473 +3 1241 1239 311 +3 473 119 1245 +3 312 1243 1244 +3 718 46 1247 +3 313 1247 1248 +3 481 317 1262 +3 314 1251 1252 +3 469 118 1257 +3 315 1255 1256 +3 500 126 1261 +3 316 1259 1260 +3 478 31 1263 +3 317 1263 1264 +3 769 321 1278 +3 318 1267 1268 +3 754 13 1271 +3 319 1271 1272 +3 713 179 1277 +3 320 1275 1276 +3 766 49 1279 +3 321 1279 1280 +3 1284 1282 322 +3 1285 175 697 +3 1293 324 541 +3 1333 334 703 +3 538 35 1291 +3 324 1291 1292 +3 697 175 1297 +3 325 1295 1296 +3 1317 330 559 +3 1313 329 657 +3 1304 139 553 +3 1305 1303 327 +3 553 139 1309 +3 328 1307 1308 +3 654 42 1311 +3 329 1311 1312 +3 561 333 1326 +3 330 1315 1316 +3 546 10 1319 +3 331 1319 1320 +3 532 134 1325 +3 332 1323 1324 +3 558 36 1327 +3 333 1327 1328 +3 705 337 1342 +3 334 1331 1332 +3 690 12 1335 +3 335 1335 1336 +3 649 163 1341 +3 336 1339 1340 +3 702 45 1343 +3 337 1343 1344 +3 1348 1346 338 +3 1349 183 729 +3 1357 340 529 +3 1397 350 735 +3 526 34 1355 +3 340 1355 1356 +3 729 183 1361 +3 341 1359 1360 +3 1381 346 575 +3 1377 345 765 +3 1368 143 569 +3 1369 1367 343 +3 569 143 1373 +3 344 1371 1372 +3 762 49 1375 +3 345 1375 1376 +3 577 349 1390 +3 346 1379 1380 +3 562 10 1383 +3 347 1383 1384 +3 521 131 1389 +3 348 1387 1388 +3 574 37 1391 +3 349 1391 1392 +3 737 353 1406 +3 350 1395 1396 +3 725 182 1401 +3 351 1399 1400 +3 756 190 1405 +3 352 1403 1404 +3 734 47 1407 +3 353 1407 1408 +3 1412 1410 354 +3 1413 178 708 +3 1421 356 621 +3 1461 366 715 +3 618 40 1419 +3 356 1419 1420 +3 708 178 1425 +3 357 1423 1424 +3 1445 362 587 +3 1441 361 749 +3 1432 146 580 +3 1433 1431 359 +3 580 146 1437 +3 360 1435 1436 +3 746 48 1439 +3 361 1439 1440 +3 589 365 1454 +3 362 1443 1444 +3 584 147 1449 +3 363 1447 1448 +3 612 154 1453 +3 364 1451 1452 +3 586 38 1455 +3 365 1455 1456 +3 717 369 1470 +3 366 1459 1460 +3 712 179 1465 +3 367 1463 1464 +3 740 186 1469 +3 368 1467 1468 +3 714 46 1471 +3 369 1471 1472 +3 1476 1474 370 +3 1477 171 681 +3 1485 372 637 +3 1525 382 687 +3 634 41 1483 +3 372 1483 1484 +3 681 171 1489 +3 373 1487 1488 +3 1509 378 607 +3 1505 377 669 +3 1496 151 601 +3 1497 1495 375 +3 601 151 1501 +3 376 1499 1500 +3 666 43 1503 +3 377 1503 1504 +3 609 381 1518 +3 378 1507 1508 +3 597 150 1513 +3 379 1511 1512 +3 628 158 1517 +3 380 1515 1516 +3 606 39 1519 +3 381 1519 1520 +3 689 385 1534 +3 382 1523 1524 +3 674 12 1527 +3 383 1527 1528 +3 660 166 1533 +3 384 1531 1532 +3 686 44 1535 +3 385 1535 1536 +3 861 216 388 +3 900 856 386 +3 879 221 394 +3 900 226 389 +3 858 55 854 +3 387 859 861 +3 899 58 906 +3 98 856 900 +3 873 219 392 +3 907 228 398 +3 807 203 418 +3 941 236 393 +3 874 867 56 +3 391 871 873 +3 60 931 942 +3 99 880 941 +3 852 851 396 +3 390 939 941 +3 866 15 850 +3 397 218 869 +3 851 55 858 +3 395 214 852 +3 428 108 868 +3 100 860 881 +3 904 101 909 +3 26 859 907 +3 903 16 930 +3 401 227 904 +3 60 934 938 +3 904 227 399 +3 906 58 902 +3 932 931 400 +3 813 204 404 +3 935 235 434 +3 779 196 410 +3 1001 251 405 +3 52 803 814 +3 403 811 813 +3 1002 995 64 +3 102 808 1001 +3 772 194 408 +3 1007 253 414 +3 984 983 407 +3 989 248 409 +3 771 50 778 +3 407 770 772 +3 986 63 982 +3 103 780 989 +3 776 104 781 +3 406 987 989 +3 775 14 802 +3 413 195 776 +3 52 806 810 +3 776 195 411 +3 778 50 774 +3 804 803 412 +3 980 979 416 +3 27 811 1007 +3 994 17 978 +3 417 250 997 +3 979 63 986 +3 415 246 980 +3 444 112 996 +3 105 988 1009 +3 421 205 816 +3 402 999 1001 +3 430 205 817 +3 809 806 421 +3 56 867 878 +3 816 815 419 +3 810 803 52 +3 877 220 420 +3 425 199 792 +3 815 205 430 +3 836 792 423 +3 797 200 425 +3 835 54 842 +3 792 791 423 +3 794 51 790 +3 836 210 424 +3 840 108 845 +3 844 843 422 +3 839 15 866 +3 429 211 840 +3 56 870 874 +3 840 211 427 +3 842 54 838 +3 868 867 428 +3 788 787 432 +3 843 212 426 +3 802 14 786 +3 433 202 805 +3 787 51 794 +3 431 198 788 +3 412 104 804 +3 109 796 817 +3 437 237 944 +3 8 871 935 +3 446 237 945 +3 937 934 437 +3 64 995 1006 +3 944 943 435 +3 938 931 60 +3 1005 252 436 +3 441 231 920 +3 943 237 446 +3 964 920 439 +3 925 232 441 +3 963 62 970 +3 920 919 439 +3 922 59 918 +3 964 242 440 +3 968 112 973 +3 972 971 438 +3 967 17 994 +3 445 243 968 +3 64 998 1002 +3 968 243 443 +3 970 62 966 +3 996 995 444 +3 916 915 448 +3 971 244 442 +3 930 16 914 +3 449 234 933 +3 915 59 922 +3 447 230 916 +3 400 101 932 +3 113 924 945 +3 1117 280 452 +3 1156 1112 450 +3 1135 285 458 +3 1156 290 453 +3 1114 71 1110 +3 451 1115 1117 +3 1155 74 1162 +3 114 1112 1156 +3 1129 283 456 +3 1163 292 462 +3 1063 267 482 +3 1197 300 457 +3 1130 1123 72 +3 455 1127 1129 +3 76 1187 1198 +3 115 1136 1197 +3 1108 1107 460 +3 454 1195 1197 +3 1122 19 1106 +3 461 282 1125 +3 1107 71 1114 +3 459 278 1108 +3 492 124 1124 +3 116 1116 1137 +3 1160 117 1165 +3 30 1115 1163 +3 1159 20 1186 +3 465 291 1160 +3 76 1190 1194 +3 1160 291 463 +3 1162 74 1158 +3 1188 1187 464 +3 1069 268 468 +3 1191 299 498 +3 1035 260 474 +3 1257 315 469 +3 68 1059 1070 +3 467 1067 1069 +3 1258 1251 80 +3 118 1064 1257 +3 1028 258 472 +3 1263 317 478 +3 1240 1239 471 +3 1245 312 473 +3 1027 66 1034 +3 471 1026 1028 +3 1242 79 1238 +3 119 1036 1245 +3 1032 120 1037 +3 470 1243 1245 +3 1031 18 1058 +3 477 259 1032 +3 68 1062 1066 +3 1032 259 475 +3 1034 66 1030 +3 1060 1059 476 +3 1236 1235 480 +3 31 1067 1263 +3 1250 21 1234 +3 481 314 1253 +3 1235 79 1242 +3 479 310 1236 +3 508 128 1252 +3 121 1244 1265 +3 485 269 1072 +3 466 1255 1257 +3 494 269 1073 +3 1065 1062 485 +3 72 1123 1134 +3 1072 1071 483 +3 1066 1059 68 +3 1133 284 484 +3 489 263 1048 +3 1071 269 494 +3 1092 1048 487 +3 1053 264 489 +3 1091 70 1098 +3 1048 1047 487 +3 1050 67 1046 +3 1092 274 488 +3 1096 124 1101 +3 1100 1099 486 +3 1095 19 1122 +3 493 275 1096 +3 72 1126 1130 +3 1096 275 491 +3 1098 70 1094 +3 1124 1123 492 +3 1044 1043 496 +3 1099 276 490 +3 1058 18 1042 +3 497 266 1061 +3 1043 67 1050 +3 495 262 1044 +3 476 120 1060 +3 125 1052 1073 +3 501 301 1200 +3 9 1127 1191 +3 510 301 1201 +3 1193 1190 501 +3 80 1251 1262 +3 1200 1199 499 +3 1194 1187 76 +3 1261 316 500 +3 505 295 1176 +3 1199 301 510 +3 1220 1176 503 +3 1181 296 505 +3 1219 78 1226 +3 1176 1175 503 +3 1178 75 1174 +3 1220 306 504 +3 1224 128 1229 +3 1228 1227 502 +3 1223 21 1250 +3 509 307 1224 +3 80 1254 1258 +3 1224 307 507 +3 1226 78 1222 +3 1252 1251 508 +3 1172 1171 512 +3 1227 308 506 +3 1186 20 1170 +3 513 298 1189 +3 1171 75 1178 +3 511 294 1172 +3 464 117 1188 +3 129 1180 1201 +3 977 245 516 +3 1348 965 514 +3 1023 257 522 +3 1348 338 517 +3 974 62 963 +3 515 975 977 +3 1347 86 1354 +3 130 965 1348 +3 1017 255 520 +3 1355 340 526 +3 1319 331 546 +3 1389 348 521 +3 1018 1011 65 +3 519 1015 1017 +3 88 1379 1390 +3 131 1024 1389 +3 969 966 524 +3 518 1387 1389 +3 1010 17 967 +3 525 254 1013 +3 966 62 974 +3 523 243 969 +3 556 140 1012 +3 132 976 1025 +3 1352 133 1357 +3 34 975 1355 +3 1351 23 1378 +3 529 339 1352 +3 88 1382 1386 +3 1352 339 527 +3 1354 86 1350 +3 1380 1379 528 +3 533 305 1216 +3 1383 347 562 +3 542 305 1217 +3 1209 303 533 +3 84 1315 1326 +3 1216 1215 531 +3 1210 1203 77 +3 1325 332 532 +3 537 290 1157 +3 1215 305 542 +3 1284 1157 535 +3 1169 293 537 +3 1283 82 1290 +3 1157 1154 535 +3 1166 74 1155 +3 1284 322 536 +3 1288 136 1293 +3 1292 1291 534 +3 1287 22 1314 +3 541 323 1288 +3 84 1318 1322 +3 1288 323 539 +3 1290 82 1286 +3 1316 1315 540 +3 1161 1158 544 +3 1291 324 538 +3 1202 20 1159 +3 545 302 1205 +3 1158 74 1166 +3 543 291 1161 +3 572 144 1204 +3 137 1168 1217 +3 1021 256 548 +3 1320 1319 530 +3 991 249 554 +3 1321 1318 549 +3 65 1011 1022 +3 547 1019 1021 +3 1322 1315 84 +3 138 1016 1321 +3 985 247 552 +3 1327 333 558 +3 1304 1303 551 +3 1309 328 553 +3 982 63 990 +3 551 983 985 +3 1306 83 1302 +3 139 992 1309 +3 981 140 993 +3 550 1307 1309 +3 978 17 1010 +3 557 246 981 +3 65 1014 1018 +3 981 246 555 +3 990 63 979 +3 1012 1011 556 +3 1300 1299 560 +3 36 1019 1327 +3 1314 22 1298 +3 561 330 1317 +3 1299 83 1306 +3 559 326 1300 +3 540 136 1316 +3 141 1308 1329 +3 1213 304 564 +3 10 1015 1383 +3 1183 297 570 +3 1385 1382 565 +3 77 1203 1214 +3 563 1211 1213 +3 1386 1379 88 +3 142 1208 1385 +3 1177 295 568 +3 1391 349 574 +3 1368 1367 567 +3 1373 344 569 +3 1174 75 1182 +3 567 1175 1177 +3 1370 87 1366 +3 143 1184 1373 +3 1173 144 1185 +3 566 1371 1373 +3 1170 20 1202 +3 573 294 1173 +3 77 1206 1210 +3 1173 294 571 +3 1182 75 1171 +3 1204 1203 572 +3 1364 1363 576 +3 37 1211 1391 +3 1378 23 1362 +3 577 346 1381 +3 1363 87 1370 +3 575 342 1364 +3 528 133 1380 +3 145 1372 1393 +3 581 217 864 +3 1432 1431 578 +3 590 865 892 +3 857 215 581 +3 1434 91 1430 +3 864 863 579 +3 854 55 862 +3 1437 360 580 +3 585 223 888 +3 863 217 590 +3 626 889 1512 +3 893 224 585 +3 1450 1443 92 +3 888 887 583 +3 57 883 894 +3 1449 363 584 +3 1428 1427 588 +3 1456 1455 582 +3 1442 24 1426 +3 589 362 1445 +3 1427 91 1434 +3 587 358 1428 +3 620 156 1444 +3 148 1436 1457 +3 853 149 865 +3 1455 365 586 +3 850 15 882 +3 593 214 853 +3 57 886 890 +3 853 214 591 +3 862 55 851 +3 884 883 592 +3 1085 272 596 +3 887 223 626 +3 1055 265 602 +3 1513 379 597 +3 69 1075 1086 +3 595 1083 1085 +3 1514 1507 96 +3 150 1080 1513 +3 1049 263 600 +3 1519 381 606 +3 1496 1495 599 +3 1501 376 601 +3 1046 67 1054 +3 599 1047 1049 +3 1498 95 1494 +3 151 1056 1501 +3 1045 152 1057 +3 598 1499 1501 +3 1042 18 1074 +3 605 262 1045 +3 69 1078 1082 +3 1045 262 603 +3 1054 67 1043 +3 1076 1075 604 +3 1492 1491 608 +3 39 1083 1519 +3 1506 25 1490 +3 609 378 1509 +3 1491 95 1498 +3 607 374 1492 +3 636 160 1508 +3 153 1500 1521 +3 613 273 1088 +3 594 1511 1513 +3 622 273 1089 +3 1081 1078 613 +3 92 1443 1454 +3 1088 1087 611 +3 1082 1075 69 +3 1453 364 612 +3 617 258 1029 +3 1087 273 622 +3 1412 1029 615 +3 1041 261 617 +3 1411 90 1418 +3 1029 1026 615 +3 1038 66 1027 +3 1412 354 616 +3 1416 156 1421 +3 1420 1419 614 +3 1415 24 1442 +3 621 355 1416 +3 92 1446 1450 +3 1416 355 619 +3 1418 90 1414 +3 1444 1443 620 +3 1033 1030 624 +3 1419 356 618 +3 1074 18 1031 +3 625 270 1077 +3 1030 66 1038 +3 623 259 1033 +3 604 152 1076 +3 157 1040 1089 +3 629 225 896 +3 1079 271 610 +3 638 225 897 +3 889 886 629 +3 96 1507 1518 +3 896 895 627 +3 890 883 57 +3 1517 380 628 +3 633 210 837 +3 895 225 638 +3 1476 837 631 +3 849 213 633 +3 1475 94 1482 +3 837 834 631 +3 846 54 835 +3 1476 370 632 +3 1480 160 1485 +3 1484 1483 630 +3 1479 25 1506 +3 637 371 1480 +3 96 1510 1514 +3 1480 371 635 +3 1482 94 1478 +3 1508 1507 636 +3 841 838 640 +3 1483 372 634 +3 882 15 839 +3 641 222 885 +3 838 54 846 +3 639 211 841 +3 592 149 884 +3 161 848 897 +3 785 197 644 +3 1305 773 642 +3 831 209 650 +3 1305 327 645 +3 782 50 771 +3 643 783 785 +3 1302 83 1310 +3 162 773 1305 +3 825 207 648 +3 1311 329 654 +3 1527 383 674 +3 1341 336 649 +3 826 819 53 +3 647 823 825 +3 85 1331 1342 +3 163 832 1341 +3 777 774 652 +3 646 1339 1341 +3 818 14 775 +3 653 206 821 +3 774 50 782 +3 651 195 777 +3 684 172 820 +3 164 784 833 +3 1301 165 1313 +3 42 783 1311 +3 1298 22 1330 +3 657 326 1301 +3 85 1334 1338 +3 1301 326 655 +3 1310 83 1299 +3 1332 1331 656 +3 661 289 1152 +3 1335 335 690 +3 670 289 1153 +3 1145 287 661 +3 97 1523 1534 +3 1152 1151 659 +3 1146 1139 73 +3 1533 384 660 +3 665 274 1093 +3 1151 289 670 +3 1497 1093 663 +3 1105 277 665 +3 1494 95 1502 +3 1093 1090 663 +3 1102 70 1091 +3 1497 375 664 +3 1493 168 1505 +3 1504 1503 662 +3 1490 25 1522 +3 669 374 1493 +3 97 1526 1530 +3 1493 374 667 +3 1502 95 1491 +3 1524 1523 668 +3 1097 1094 672 +3 1503 377 666 +3 1138 19 1095 +3 673 286 1141 +3 1094 70 1102 +3 671 275 1097 +3 700 176 1140 +3 169 1104 1153 +3 829 208 676 +3 1528 1527 658 +3 799 201 682 +3 1529 1526 677 +3 53 819 830 +3 675 827 829 +3 1530 1523 97 +3 170 824 1529 +3 793 199 680 +3 1535 385 686 +3 1477 1474 679 +3 1489 373 681 +3 790 51 798 +3 679 791 793 +3 1486 94 1475 +3 171 800 1489 +3 789 172 801 +3 678 1487 1489 +3 786 14 818 +3 685 198 789 +3 53 822 826 +3 789 198 683 +3 798 51 787 +3 820 819 684 +3 1481 1478 688 +3 44 827 1535 +3 1522 25 1479 +3 689 382 1525 +3 1478 94 1486 +3 687 371 1481 +3 668 168 1524 +3 173 1488 1537 +3 1149 288 692 +3 12 823 1335 +3 1119 281 698 +3 1337 1334 693 +3 73 1139 1150 +3 691 1147 1149 +3 1338 1331 85 +3 174 1144 1337 +3 1113 279 696 +3 1343 337 702 +3 1285 1282 695 +3 1297 325 697 +3 1110 71 1118 +3 695 1111 1113 +3 1294 82 1283 +3 175 1120 1297 +3 1109 176 1121 +3 694 1295 1297 +3 1106 19 1138 +3 701 278 1109 +3 73 1142 1146 +3 1109 278 699 +3 1118 71 1107 +3 1140 1139 700 +3 1289 1286 704 +3 45 1147 1343 +3 1330 22 1287 +3 705 334 1333 +3 1286 82 1294 +3 703 323 1289 +3 656 165 1332 +3 177 1296 1345 +3 709 313 1248 +3 1413 1410 706 +3 718 1249 1276 +3 1241 311 709 +3 1422 90 1411 +3 1248 1247 707 +3 1238 79 1246 +3 1425 357 708 +3 713 319 1272 +3 1247 313 718 +3 754 1273 1400 +3 1277 320 713 +3 1466 1459 93 +3 1272 1271 711 +3 81 1267 1278 +3 1465 367 712 +3 1417 1414 716 +3 1472 1471 710 +3 1458 24 1415 +3 717 366 1461 +3 1414 90 1422 +3 715 355 1417 +3 748 188 1460 +3 180 1424 1473 +3 1237 181 1249 +3 1471 369 714 +3 1234 21 1266 +3 721 310 1237 +3 81 1270 1274 +3 1237 310 719 +3 1246 79 1235 +3 1268 1267 720 +3 957 240 724 +3 1271 319 754 +3 927 233 730 +3 1401 351 725 +3 61 947 958 +3 723 955 957 +3 1402 1395 89 +3 182 952 1401 +3 921 231 728 +3 1407 353 734 +3 1349 1346 727 +3 1361 341 729 +3 918 59 926 +3 727 919 921 +3 1358 86 1347 +3 183 928 1361 +3 917 184 929 +3 726 1359 1361 +3 914 16 946 +3 733 230 917 +3 61 950 954 +3 917 230 731 +3 926 59 915 +3 948 947 732 +3 1353 1350 736 +3 47 955 1407 +3 1394 23 1351 +3 737 350 1397 +3 1350 86 1358 +3 735 339 1353 +3 764 192 1396 +3 185 1360 1409 +3 741 241 960 +3 722 1399 1401 +3 750 241 961 +3 953 950 741 +3 93 1459 1470 +3 960 959 739 +3 954 947 61 +3 1469 368 740 +3 745 226 901 +3 959 241 750 +3 1433 901 743 +3 913 229 745 +3 1430 91 1438 +3 901 898 743 +3 910 58 899 +3 1433 359 744 +3 1429 188 1441 +3 1440 1439 742 +3 1426 24 1458 +3 749 358 1429 +3 93 1462 1466 +3 1429 358 747 +3 1438 91 1427 +3 1460 1459 748 +3 905 902 752 +3 1439 361 746 +3 946 16 903 +3 753 238 949 +3 902 58 910 +3 751 227 905 +3 732 184 948 +3 189 912 961 +3 757 321 1280 +3 951 239 738 +3 766 321 1281 +3 1273 1270 757 +3 89 1395 1406 +3 1280 1279 755 +3 1274 1267 81 +3 1405 352 756 +3 761 306 1221 +3 1279 321 766 +3 1369 1221 759 +3 1233 309 761 +3 1366 87 1374 +3 1221 1218 759 +3 1230 78 1219 +3 1369 343 760 +3 1365 192 1377 +3 1376 1375 758 +3 1362 23 1394 +3 765 342 1365 +3 89 1398 1402 +3 1365 342 763 +3 1374 87 1363 +3 1396 1395 764 +3 1225 1222 768 +3 1375 345 762 +3 1266 21 1223 +3 769 318 1269 +3 1222 78 1230 +3 767 307 1225 +3 720 181 1268 +3 193 1232 1281 +3 407 3 770 +3 642 1303 1305 +3 408 194 771 +3 194 770 773 +3 408 196 780 +3 778 196 408 +3 645 329 1312 +3 770 3 642 +3 411 202 804 +3 652 164 777 +3 411 195 775 +3 195 774 777 +3 804 104 776 +3 802 202 411 +3 652 197 784 +3 782 197 652 +3 812 811 410 +3 774 195 413 +3 410 781 812 +3 413 776 781 +3 409 247 984 +3 989 780 406 +3 410 196 781 +3 778 774 413 +3 785 783 197 +3 771 194 644 +3 654 1313 1340 +3 643 785 1312 +3 821 164 833 +3 783 42 650 +3 644 194 773 +3 782 771 644 +3 198 787 788 +3 683 198 786 +3 432 109 788 +3 683 206 820 +3 432 200 796 +3 794 200 432 +3 820 172 789 +3 818 206 683 +3 199 791 792 +3 680 199 790 +3 423 834 836 +3 679 1 791 +3 836 107 792 +3 791 1 423 +3 680 201 800 +3 798 201 680 +3 797 795 200 +3 790 199 425 +3 843 28 795 +3 422 797 844 +3 805 109 817 +3 795 28 430 +3 422 795 797 +3 794 790 425 +3 828 827 682 +3 787 198 685 +3 682 801 828 +3 685 789 801 +3 681 370 1477 +3 1489 800 678 +3 682 201 801 +3 798 787 685 +3 817 205 433 +3 786 198 431 +3 814 806 52 +3 431 788 805 +3 412 204 812 +3 810 204 412 +3 788 109 805 +3 802 786 431 +3 872 871 418 +3 421 106 809 +3 418 809 872 +3 203 806 809 +3 405 253 1008 +3 1001 808 402 +3 418 203 809 +3 814 205 421 +3 813 811 204 +3 806 203 404 +3 414 253 1009 +3 403 813 1008 +3 812 781 104 +3 811 27 410 +3 404 203 808 +3 810 806 404 +3 817 796 430 +3 803 202 433 +3 419 875 877 +3 433 805 817 +3 877 106 816 +3 877 816 419 +3 796 795 430 +3 814 803 433 +3 833 209 653 +3 775 195 651 +3 830 822 53 +3 651 777 821 +3 684 208 828 +3 826 208 684 +3 777 164 821 +3 818 775 651 +3 825 823 207 +3 648 207 822 +3 690 335 1337 +3 647 825 1336 +3 677 385 1536 +3 823 12 674 +3 648 209 832 +3 830 209 648 +3 829 827 208 +3 822 207 676 +3 686 385 1537 +3 675 829 1536 +3 828 801 172 +3 827 44 682 +3 676 207 824 +3 826 822 676 +3 833 784 650 +3 819 206 653 +3 650 209 833 +3 653 821 833 +3 649 335 1336 +3 1341 832 646 +3 784 783 650 +3 830 819 653 +3 423 1 834 +3 631 1474 1476 +3 424 210 835 +3 210 834 837 +3 424 212 844 +3 842 212 424 +3 1476 159 837 +3 834 1 631 +3 427 218 868 +3 640 161 841 +3 427 211 839 +3 211 838 841 +3 868 108 840 +3 866 218 427 +3 640 213 848 +3 846 213 640 +3 876 875 426 +3 838 211 429 +3 426 845 876 +3 429 840 845 +3 844 797 107 +3 843 795 422 +3 426 212 845 +3 842 838 429 +3 849 847 213 +3 835 210 633 +3 1483 41 847 +3 630 849 1484 +3 885 161 897 +3 847 41 638 +3 630 847 849 +3 846 835 633 +3 214 851 852 +3 591 214 850 +3 396 100 852 +3 591 222 884 +3 396 216 860 +3 858 216 396 +3 884 149 853 +3 882 222 591 +3 215 855 856 +3 581 215 854 +3 386 898 900 +3 578 0 855 +3 389 228 908 +3 855 0 386 +3 578 855 857 +3 862 217 581 +3 861 859 216 +3 854 215 388 +3 398 909 940 +3 387 861 908 +3 869 100 881 +3 859 26 394 +3 388 215 856 +3 858 854 388 +3 892 891 590 +3 851 214 593 +3 579 1435 1437 +3 593 853 865 +3 1437 146 864 +3 1437 864 579 +3 590 217 865 +3 862 851 593 +3 881 221 397 +3 850 214 395 +3 878 870 56 +3 395 852 869 +3 428 220 876 +3 874 220 428 +3 852 100 869 +3 866 850 395 +3 873 871 219 +3 392 219 870 +3 434 937 1000 +3 391 873 936 +3 872 809 106 +3 871 8 418 +3 392 221 880 +3 878 221 392 +3 877 875 220 +3 870 219 420 +3 875 815 28 +3 419 815 875 +3 876 845 108 +3 875 28 426 +3 420 219 872 +3 874 870 420 +3 881 860 394 +3 867 218 397 +3 394 221 881 +3 397 869 881 +3 393 235 936 +3 941 880 390 +3 860 859 394 +3 878 867 397 +3 897 225 641 +3 839 211 639 +3 894 886 57 +3 639 841 885 +3 592 224 892 +3 890 224 592 +3 841 161 885 +3 882 839 639 +3 1512 1511 626 +3 629 158 889 +3 583 1447 1449 +3 223 886 889 +3 1449 147 888 +3 1449 888 583 +3 626 223 889 +3 894 225 629 +3 893 891 224 +3 886 223 585 +3 1455 38 891 +3 582 893 1456 +3 892 865 149 +3 891 38 590 +3 582 891 893 +3 890 886 585 +3 897 848 638 +3 883 222 641 +3 627 1515 1517 +3 641 885 897 +3 1517 158 896 +3 1517 896 627 +3 848 847 638 +3 894 883 641 +3 386 0 898 +3 743 1431 1433 +3 389 226 899 +3 226 898 901 +3 856 855 386 +3 906 228 389 +3 1433 187 901 +3 898 0 743 +3 399 234 932 +3 752 189 905 +3 399 227 903 +3 227 902 905 +3 932 101 904 +3 930 234 399 +3 752 229 912 +3 910 229 752 +3 940 939 398 +3 902 227 401 +3 908 907 387 +3 401 904 909 +3 861 98 908 +3 907 859 387 +3 398 228 909 +3 906 902 401 +3 913 911 229 +3 899 226 745 +3 1439 48 911 +3 742 913 1440 +3 949 189 961 +3 911 48 750 +3 742 911 913 +3 910 899 745 +3 230 915 916 +3 731 230 914 +3 448 113 916 +3 731 238 948 +3 448 232 924 +3 922 232 448 +3 948 184 917 +3 946 238 731 +3 231 919 920 +3 728 231 918 +3 439 962 964 +3 727 2 919 +3 964 111 920 +3 919 2 439 +3 728 233 928 +3 926 233 728 +3 925 923 232 +3 918 231 441 +3 971 29 923 +3 438 925 972 +3 933 113 945 +3 923 29 446 +3 438 923 925 +3 922 918 441 +3 956 955 730 +3 915 230 733 +3 730 929 956 +3 733 917 929 +3 729 338 1349 +3 1361 928 726 +3 730 233 929 +3 926 915 733 +3 945 237 449 +3 914 230 447 +3 942 934 60 +3 447 916 933 +3 400 236 940 +3 938 236 400 +3 916 113 933 +3 930 914 447 +3 1000 999 434 +3 437 110 937 +3 936 935 391 +3 235 934 937 +3 873 99 936 +3 935 871 391 +3 434 235 937 +3 942 237 437 +3 941 939 236 +3 934 235 393 +3 879 26 939 +3 390 879 939 +3 940 909 101 +3 939 26 398 +3 880 879 390 +3 938 934 393 +3 945 924 446 +3 931 234 449 +3 435 1003 1005 +3 449 933 945 +3 1005 110 944 +3 1005 944 435 +3 924 923 446 +3 942 931 449 +3 961 241 753 +3 903 227 751 +3 958 950 61 +3 751 905 949 +3 732 240 956 +3 954 240 732 +3 905 189 949 +3 946 903 751 +3 1464 1463 738 +3 741 186 953 +3 738 953 1464 +3 239 950 953 +3 725 353 1408 +3 1401 952 722 +3 738 239 953 +3 958 241 741 +3 957 955 240 +3 950 239 724 +3 734 353 1409 +3 723 957 1408 +3 956 929 184 +3 955 47 730 +3 724 239 952 +3 954 950 724 +3 961 912 750 +3 947 238 753 +3 739 1467 1469 +3 753 949 961 +3 1469 186 960 +3 1469 960 739 +3 912 911 750 +3 958 947 753 +3 439 2 962 +3 514 1346 1348 +3 440 242 963 +3 242 962 965 +3 440 244 972 +3 970 244 440 +3 517 340 1356 +3 962 2 514 +3 443 250 996 +3 524 132 969 +3 443 243 967 +3 243 966 969 +3 996 112 968 +3 994 250 443 +3 524 245 976 +3 974 245 524 +3 1004 1003 442 +3 966 243 445 +3 442 973 1004 +3 445 968 973 +3 972 925 111 +3 971 923 438 +3 442 244 973 +3 970 966 445 +3 977 975 245 +3 963 242 516 +3 526 1357 1388 +3 515 977 1356 +3 1013 132 1025 +3 975 34 522 +3 516 242 965 +3 974 963 516 +3 246 979 980 +3 555 246 978 +3 416 105 980 +3 555 254 1012 +3 416 248 988 +3 986 248 416 +3 1012 140 981 +3 1010 254 555 +3 247 983 984 +3 552 247 982 +3 407 772 984 +3 551 3 983 +3 772 103 984 +3 983 3 407 +3 552 249 992 +3 990 249 552 +3 989 987 248 +3 982 247 409 +3 779 27 987 +3 406 779 987 +3 997 105 1009 +3 987 27 414 +3 780 779 406 +3 986 982 409 +3 1020 1019 554 +3 979 246 557 +3 554 993 1020 +3 557 981 993 +3 553 327 1304 +3 1309 992 550 +3 554 249 993 +3 990 979 557 +3 1009 253 417 +3 978 246 415 +3 1006 998 64 +3 415 980 997 +3 444 252 1004 +3 1002 252 444 +3 980 105 997 +3 994 978 415 +3 1001 999 251 +3 405 251 998 +3 807 8 999 +3 402 807 999 +3 1000 937 110 +3 999 8 434 +3 808 807 402 +3 1006 253 405 +3 1005 1003 252 +3 998 251 436 +3 1003 943 29 +3 435 943 1003 +3 1004 973 112 +3 1003 29 442 +3 436 251 1000 +3 1002 998 436 +3 1009 988 414 +3 995 250 417 +3 1008 1007 403 +3 417 997 1009 +3 813 102 1008 +3 1007 811 403 +3 988 987 414 +3 1006 995 417 +3 1025 257 525 +3 967 243 523 +3 1022 1014 65 +3 523 969 1013 +3 556 256 1020 +3 1018 256 556 +3 969 132 1013 +3 1010 967 523 +3 1017 1015 255 +3 520 255 1014 +3 562 347 1385 +3 519 1017 1384 +3 549 333 1328 +3 1015 10 546 +3 520 257 1024 +3 1022 257 520 +3 1021 1019 256 +3 1014 255 548 +3 558 333 1329 +3 547 1021 1328 +3 1020 993 140 +3 1019 36 554 +3 548 255 1016 +3 1018 1014 548 +3 1025 976 522 +3 1011 254 525 +3 522 257 1025 +3 525 1013 1025 +3 521 347 1384 +3 1389 1024 518 +3 976 975 522 +3 1022 1011 525 +3 471 4 1026 +3 615 1410 1412 +3 472 258 1027 +3 258 1026 1029 +3 472 260 1036 +3 1034 260 472 +3 1412 155 1029 +3 1026 4 615 +3 475 266 1060 +3 624 157 1033 +3 475 259 1031 +3 259 1030 1033 +3 1060 120 1032 +3 1058 266 475 +3 624 261 1040 +3 1038 261 624 +3 1068 1067 474 +3 1030 259 477 +3 474 1037 1068 +3 477 1032 1037 +3 473 311 1240 +3 1245 1036 470 +3 474 260 1037 +3 1034 1030 477 +3 1041 1039 261 +3 1027 258 617 +3 1419 40 1039 +3 614 1041 1420 +3 1077 157 1089 +3 1039 40 622 +3 614 1039 1041 +3 1038 1027 617 +3 262 1043 1044 +3 603 262 1042 +3 496 125 1044 +3 603 270 1076 +3 496 264 1052 +3 1050 264 496 +3 1076 152 1045 +3 1074 270 603 +3 263 1047 1048 +3 600 263 1046 +3 487 1090 1092 +3 599 5 1047 +3 1092 123 1048 +3 1047 5 487 +3 600 265 1056 +3 1054 265 600 +3 1053 1051 264 +3 1046 263 489 +3 1099 32 1051 +3 486 1053 1100 +3 1061 125 1073 +3 1051 32 494 +3 486 1051 1053 +3 1050 1046 489 +3 1084 1083 602 +3 1043 262 605 +3 602 1057 1084 +3 605 1045 1057 +3 601 375 1496 +3 1501 1056 598 +3 602 265 1057 +3 1054 1043 605 +3 1073 269 497 +3 1042 262 495 +3 1070 1062 68 +3 495 1044 1061 +3 476 268 1068 +3 1066 268 476 +3 1044 125 1061 +3 1058 1042 495 +3 1128 1127 482 +3 485 122 1065 +3 482 1065 1128 +3 267 1062 1065 +3 469 317 1264 +3 1257 1064 466 +3 482 267 1065 +3 1070 269 485 +3 1069 1067 268 +3 1062 267 468 +3 478 317 1265 +3 467 1069 1264 +3 1068 1037 120 +3 1067 31 474 +3 468 267 1064 +3 1066 1062 468 +3 1073 1052 494 +3 1059 266 497 +3 483 1131 1133 +3 497 1061 1073 +3 1133 122 1072 +3 1133 1072 483 +3 1052 1051 494 +3 1070 1059 497 +3 1089 273 625 +3 1031 259 623 +3 1086 1078 69 +3 623 1033 1077 +3 604 272 1084 +3 1082 272 604 +3 1033 157 1077 +3 1074 1031 623 +3 1448 1447 610 +3 613 154 1081 +3 610 1081 1448 +3 271 1078 1081 +3 597 381 1520 +3 1513 1080 594 +3 610 271 1081 +3 1086 273 613 +3 1085 1083 272 +3 1078 271 596 +3 606 381 1521 +3 595 1085 1520 +3 1084 1057 152 +3 1083 39 602 +3 596 271 1080 +3 1082 1078 596 +3 1089 1040 622 +3 1075 270 625 +3 611 1451 1453 +3 625 1077 1089 +3 1453 154 1088 +3 1453 1088 611 +3 1040 1039 622 +3 1086 1075 625 +3 487 5 1090 +3 663 1495 1497 +3 488 274 1091 +3 274 1090 1093 +3 488 276 1100 +3 1098 276 488 +3 1497 167 1093 +3 1090 5 663 +3 491 282 1124 +3 672 169 1097 +3 491 275 1095 +3 275 1094 1097 +3 1124 124 1096 +3 1122 282 491 +3 672 277 1104 +3 1102 277 672 +3 1132 1131 490 +3 1094 275 493 +3 490 1101 1132 +3 493 1096 1101 +3 1100 1053 123 +3 1099 1051 486 +3 490 276 1101 +3 1098 1094 493 +3 1105 1103 277 +3 1091 274 665 +3 1503 43 1103 +3 662 1105 1504 +3 1141 169 1153 +3 1103 43 670 +3 662 1103 1105 +3 1102 1091 665 +3 278 1107 1108 +3 699 278 1106 +3 460 116 1108 +3 699 286 1140 +3 460 280 1116 +3 1114 280 460 +3 1140 176 1109 +3 1138 286 699 +3 279 1111 1112 +3 696 279 1110 +3 450 1154 1156 +3 695 7 1111 +3 453 292 1164 +3 1111 7 450 +3 696 281 1120 +3 1118 281 696 +3 1117 1115 280 +3 1110 279 452 +3 462 1165 1196 +3 451 1117 1164 +3 1125 116 1137 +3 1115 30 458 +3 452 279 1112 +3 1114 1110 452 +3 1148 1147 698 +3 1107 278 701 +3 698 1121 1148 +3 701 1109 1121 +3 697 322 1285 +3 1297 1120 694 +3 698 281 1121 +3 1118 1107 701 +3 1137 285 461 +3 1106 278 459 +3 1134 1126 72 +3 459 1108 1125 +3 492 284 1132 +3 1130 284 492 +3 1108 116 1125 +3 1122 1106 459 +3 1129 1127 283 +3 456 283 1126 +3 498 1193 1256 +3 455 1129 1192 +3 1128 1065 122 +3 1127 9 482 +3 456 285 1136 +3 1134 285 456 +3 1133 1131 284 +3 1126 283 484 +3 1131 1071 32 +3 483 1071 1131 +3 1132 1101 124 +3 1131 32 490 +3 484 283 1128 +3 1130 1126 484 +3 1137 1116 458 +3 1123 282 461 +3 458 285 1137 +3 461 1125 1137 +3 457 299 1192 +3 1197 1136 454 +3 1116 1115 458 +3 1134 1123 461 +3 1153 289 673 +3 1095 275 671 +3 1150 1142 73 +3 671 1097 1141 +3 700 288 1148 +3 1146 288 700 +3 1097 169 1141 +3 1138 1095 671 +3 1145 1143 287 +3 661 287 1142 +3 1527 12 1143 +3 658 1145 1528 +3 693 337 1344 +3 1143 12 690 +3 658 1143 1145 +3 1150 289 661 +3 1149 1147 288 +3 1142 287 692 +3 702 337 1345 +3 691 1149 1344 +3 1148 1121 176 +3 1147 45 698 +3 692 287 1144 +3 1146 1142 692 +3 1153 1104 670 +3 1139 286 673 +3 659 1531 1533 +3 673 1141 1153 +3 1533 166 1152 +3 1533 1152 659 +3 1104 1103 670 +3 1150 1139 673 +3 450 7 1154 +3 535 1282 1284 +3 453 290 1155 +3 290 1154 1157 +3 1112 1111 450 +3 1162 292 453 +3 1284 135 1157 +3 1154 7 535 +3 463 298 1188 +3 544 137 1161 +3 463 291 1159 +3 291 1158 1161 +3 1188 117 1160 +3 1186 298 463 +3 544 293 1168 +3 1166 293 544 +3 1196 1195 462 +3 1158 291 465 +3 1164 1163 451 +3 465 1160 1165 +3 1117 114 1164 +3 1163 1115 451 +3 462 292 1165 +3 1162 1158 465 +3 1169 1167 293 +3 1155 290 537 +3 1291 35 1167 +3 534 1169 1292 +3 1205 137 1217 +3 1167 35 542 +3 534 1167 1169 +3 1166 1155 537 +3 294 1171 1172 +3 571 294 1170 +3 512 129 1172 +3 571 302 1204 +3 512 296 1180 +3 1178 296 512 +3 1204 144 1173 +3 1202 302 571 +3 295 1175 1176 +3 568 295 1174 +3 503 1218 1220 +3 567 6 1175 +3 1220 127 1176 +3 1175 6 503 +3 568 297 1184 +3 1182 297 568 +3 1181 1179 296 +3 1174 295 505 +3 1227 33 1179 +3 502 1181 1228 +3 1189 129 1201 +3 1179 33 510 +3 502 1179 1181 +3 1178 1174 505 +3 1212 1211 570 +3 1171 294 573 +3 570 1185 1212 +3 573 1173 1185 +3 569 343 1368 +3 1373 1184 566 +3 570 297 1185 +3 1182 1171 573 +3 1201 301 513 +3 1170 294 511 +3 1198 1190 76 +3 511 1172 1189 +3 464 300 1196 +3 1194 300 464 +3 1172 129 1189 +3 1186 1170 511 +3 1256 1255 498 +3 501 126 1193 +3 1192 1191 455 +3 299 1190 1193 +3 1129 115 1192 +3 1191 1127 455 +3 498 299 1193 +3 1198 301 501 +3 1197 1195 300 +3 1190 299 457 +3 1135 30 1195 +3 454 1135 1195 +3 1196 1165 117 +3 1195 30 462 +3 1136 1135 454 +3 1194 1190 457 +3 1201 1180 510 +3 1187 298 513 +3 499 1259 1261 +3 513 1189 1201 +3 1261 126 1200 +3 1261 1200 499 +3 1180 1179 510 +3 1198 1187 513 +3 1217 305 545 +3 1159 291 543 +3 1214 1206 77 +3 543 1161 1205 +3 572 304 1212 +3 1210 304 572 +3 1161 137 1205 +3 1202 1159 543 +3 1209 1207 303 +3 533 303 1206 +3 1319 10 1207 +3 530 1209 1320 +3 565 349 1392 +3 1207 10 562 +3 530 1207 1209 +3 1214 305 533 +3 1213 1211 304 +3 1206 303 564 +3 574 349 1393 +3 563 1213 1392 +3 1212 1185 144 +3 1211 37 570 +3 564 303 1208 +3 1210 1206 564 +3 1217 1168 542 +3 1203 302 545 +3 531 1323 1325 +3 545 1205 1217 +3 1325 134 1216 +3 1325 1216 531 +3 1168 1167 542 +3 1214 1203 545 +3 503 6 1218 +3 759 1367 1369 +3 504 306 1219 +3 306 1218 1221 +3 504 308 1228 +3 1226 308 504 +3 1369 191 1221 +3 1218 6 759 +3 507 314 1252 +3 768 193 1225 +3 507 307 1223 +3 307 1222 1225 +3 1252 128 1224 +3 1250 314 507 +3 768 309 1232 +3 1230 309 768 +3 1260 1259 506 +3 1222 307 509 +3 506 1229 1260 +3 509 1224 1229 +3 1228 1181 127 +3 1227 1179 502 +3 506 308 1229 +3 1226 1222 509 +3 1233 1231 309 +3 1219 306 761 +3 1375 49 1231 +3 758 1233 1376 +3 1269 193 1281 +3 1231 49 766 +3 758 1231 1233 +3 1230 1219 761 +3 310 1235 1236 +3 719 310 1234 +3 480 121 1236 +3 719 318 1268 +3 480 312 1244 +3 1242 312 480 +3 1268 181 1237 +3 1266 318 719 +3 311 1239 1240 +3 709 311 1238 +3 471 1028 1240 +3 706 4 1239 +3 1028 119 1240 +3 1239 4 471 +3 706 1239 1241 +3 1246 313 709 +3 1245 1243 312 +3 1238 311 473 +3 1035 31 1243 +3 470 1035 1243 +3 1253 121 1265 +3 1243 31 478 +3 1036 1035 470 +3 1242 1238 473 +3 1276 1275 718 +3 1235 310 721 +3 707 1423 1425 +3 721 1237 1249 +3 1425 178 1248 +3 1425 1248 707 +3 718 313 1249 +3 1246 1235 721 +3 1265 317 481 +3 1234 310 479 +3 1262 1254 80 +3 479 1236 1253 +3 508 316 1260 +3 1258 316 508 +3 1236 121 1253 +3 1250 1234 479 +3 1257 1255 315 +3 469 315 1254 +3 1063 9 1255 +3 466 1063 1255 +3 1256 1193 126 +3 1255 9 498 +3 1064 1063 466 +3 1262 317 469 +3 1261 1259 316 +3 1254 315 500 +3 1259 1199 33 +3 499 1199 1259 +3 1260 1229 128 +3 1259 33 506 +3 500 315 1256 +3 1258 1254 500 +3 1265 1244 478 +3 1251 314 481 +3 1264 1263 467 +3 481 1253 1265 +3 1069 118 1264 +3 1263 1067 467 +3 1244 1243 478 +3 1262 1251 481 +3 1281 321 769 +3 1223 307 767 +3 1278 1270 81 +3 767 1225 1269 +3 720 320 1276 +3 1274 320 720 +3 1225 193 1269 +3 1266 1223 767 +3 1400 1399 754 +3 757 190 1273 +3 711 1463 1465 +3 319 1270 1273 +3 1465 179 1272 +3 1465 1272 711 +3 754 319 1273 +3 1278 321 757 +3 1277 1275 320 +3 1270 319 713 +3 1471 46 1275 +3 710 1277 1472 +3 1276 1249 181 +3 1275 46 718 +3 710 1275 1277 +3 1274 1270 713 +3 1281 1232 766 +3 1267 318 769 +3 755 1403 1405 +3 769 1269 1281 +3 1405 190 1280 +3 1405 1280 755 +3 1232 1231 766 +3 1278 1267 769 +3 535 7 1282 +3 695 1113 1285 +3 536 322 1283 +3 322 1282 1285 +3 536 324 1292 +3 1290 324 536 +3 1113 175 1285 +3 1282 7 695 +3 539 330 1316 +3 704 177 1289 +3 539 323 1287 +3 323 1286 1289 +3 1316 136 1288 +3 1314 330 539 +3 704 325 1296 +3 1294 325 704 +3 1324 1323 538 +3 1286 323 541 +3 538 1293 1324 +3 541 1288 1293 +3 1292 1169 135 +3 1291 1167 534 +3 538 324 1293 +3 1290 1286 541 +3 1297 1295 325 +3 1283 322 697 +3 1119 45 1295 +3 694 1119 1295 +3 1333 177 1345 +3 1295 45 702 +3 1120 1119 694 +3 1294 1283 697 +3 326 1299 1300 +3 655 326 1298 +3 560 141 1300 +3 655 334 1332 +3 560 328 1308 +3 1306 328 560 +3 1332 165 1301 +3 1330 334 655 +3 327 1303 1304 +3 645 327 1302 +3 551 985 1304 +3 642 3 1303 +3 985 139 1304 +3 1303 3 551 +3 773 770 642 +3 1310 329 645 +3 1309 1307 328 +3 1302 327 553 +3 991 36 1307 +3 550 991 1307 +3 1317 141 1329 +3 1307 36 558 +3 992 991 550 +3 1306 1302 553 +3 1340 1339 654 +3 1299 326 657 +3 1312 1311 643 +3 657 1301 1313 +3 785 162 1312 +3 1311 783 643 +3 654 329 1313 +3 1310 1299 657 +3 1329 333 561 +3 1298 326 559 +3 1326 1318 84 +3 559 1300 1317 +3 540 332 1324 +3 1322 332 540 +3 1300 141 1317 +3 1314 1298 559 +3 1321 1016 546 +3 549 138 1321 +3 546 331 1321 +3 331 1318 1321 +3 1320 1209 134 +3 1319 1207 530 +3 1016 1015 546 +3 1326 333 549 +3 1325 1323 332 +3 1318 331 532 +3 1323 1215 35 +3 531 1215 1323 +3 1324 1293 136 +3 1323 35 538 +3 532 331 1320 +3 1322 1318 532 +3 1329 1308 558 +3 1315 330 561 +3 1328 1327 547 +3 561 1317 1329 +3 1021 138 1328 +3 1327 1019 547 +3 1308 1307 558 +3 1326 1315 561 +3 1345 337 705 +3 1287 323 703 +3 1342 1334 85 +3 703 1289 1333 +3 656 336 1340 +3 1338 336 656 +3 1289 177 1333 +3 1330 1287 703 +3 1337 1144 690 +3 693 174 1337 +3 1336 1335 647 +3 335 1334 1337 +3 825 163 1336 +3 1335 823 647 +3 1144 1143 690 +3 1342 337 693 +3 1341 1339 336 +3 1334 335 649 +3 831 42 1339 +3 646 831 1339 +3 1340 1313 165 +3 1339 42 654 +3 832 831 646 +3 1338 1334 649 +3 1345 1296 702 +3 1331 334 705 +3 1344 1343 691 +3 705 1333 1345 +3 1149 174 1344 +3 1343 1147 691 +3 1296 1295 702 +3 1342 1331 705 +3 514 2 1346 +3 727 921 1349 +3 517 338 1347 +3 338 1346 1349 +3 965 962 514 +3 1354 340 517 +3 921 183 1349 +3 1346 2 727 +3 527 346 1380 +3 736 185 1353 +3 527 339 1351 +3 339 1350 1353 +3 1380 133 1352 +3 1378 346 527 +3 736 341 1360 +3 1358 341 736 +3 1388 1387 526 +3 1350 339 529 +3 1356 1355 515 +3 529 1352 1357 +3 977 130 1356 +3 1355 975 515 +3 526 340 1357 +3 1354 1350 529 +3 1361 1359 341 +3 1347 338 729 +3 927 47 1359 +3 726 927 1359 +3 1397 185 1409 +3 1359 47 734 +3 928 927 726 +3 1358 1347 729 +3 342 1363 1364 +3 763 342 1362 +3 576 145 1364 +3 763 350 1396 +3 576 344 1372 +3 1370 344 576 +3 1396 192 1365 +3 1394 350 763 +3 343 1367 1368 +3 760 343 1366 +3 567 1177 1368 +3 759 6 1367 +3 1177 143 1368 +3 1367 6 567 +3 760 345 1376 +3 1374 345 760 +3 1373 1371 344 +3 1366 343 569 +3 1183 37 1371 +3 566 1183 1371 +3 1381 145 1393 +3 1371 37 574 +3 1184 1183 566 +3 1370 1366 569 +3 1404 1403 762 +3 1363 342 765 +3 762 1377 1404 +3 765 1365 1377 +3 1376 1233 191 +3 1375 1231 758 +3 762 345 1377 +3 1374 1363 765 +3 1393 349 577 +3 1362 342 575 +3 1390 1382 88 +3 575 1364 1381 +3 528 348 1388 +3 1386 348 528 +3 1364 145 1381 +3 1378 1362 575 +3 1385 1208 562 +3 565 142 1385 +3 1384 1383 519 +3 347 1382 1385 +3 1017 131 1384 +3 1383 1015 519 +3 1208 1207 562 +3 1390 349 565 +3 1389 1387 348 +3 1382 347 521 +3 1023 34 1387 +3 518 1023 1387 +3 1388 1357 133 +3 1387 34 526 +3 1024 1023 518 +3 1386 1382 521 +3 1393 1372 574 +3 1379 346 577 +3 1392 1391 563 +3 577 1381 1393 +3 1213 142 1392 +3 1391 1211 563 +3 1372 1371 574 +3 1390 1379 577 +3 1409 353 737 +3 1351 339 735 +3 1406 1398 89 +3 735 1353 1397 +3 764 352 1404 +3 1402 352 764 +3 1353 185 1397 +3 1394 1351 735 +3 1401 1399 351 +3 725 351 1398 +3 951 13 1399 +3 722 951 1399 +3 1400 1273 190 +3 1399 13 754 +3 952 951 722 +3 1406 353 725 +3 1405 1403 352 +3 1398 351 756 +3 1403 1279 49 +3 755 1279 1403 +3 1404 1377 192 +3 1403 49 762 +3 756 351 1400 +3 1402 1398 756 +3 1409 1360 734 +3 1395 350 737 +3 1408 1407 723 +3 737 1397 1409 +3 957 182 1408 +3 1407 955 723 +3 1360 1359 734 +3 1406 1395 737 +3 615 4 1410 +3 706 1241 1413 +3 616 354 1411 +3 354 1410 1413 +3 616 356 1420 +3 1418 356 616 +3 1413 1241 178 +3 1410 4 706 +3 619 362 1444 +3 716 180 1417 +3 619 355 1415 +3 355 1414 1417 +3 1444 156 1416 +3 1442 362 619 +3 716 357 1424 +3 1422 357 716 +3 1452 1451 618 +3 1414 355 621 +3 618 1421 1452 +3 621 1416 1421 +3 1420 1041 155 +3 1419 1039 614 +3 618 356 1421 +3 1418 1414 621 +3 1425 1423 357 +3 1411 354 708 +3 1423 1247 46 +3 707 1247 1423 +3 1461 180 1473 +3 1423 46 714 +3 708 354 1413 +3 1422 1411 708 +3 358 1427 1428 +3 747 358 1426 +3 588 148 1428 +3 747 366 1460 +3 588 360 1436 +3 1434 360 588 +3 1460 188 1429 +3 1458 366 747 +3 359 1431 1432 +3 744 359 1430 +3 578 857 1432 +3 743 0 1431 +3 1432 857 146 +3 1431 0 578 +3 744 361 1440 +3 1438 361 744 +3 1437 1435 360 +3 1430 359 580 +3 1435 863 38 +3 579 863 1435 +3 1445 148 1457 +3 1435 38 586 +3 580 359 1432 +3 1434 1430 580 +3 1468 1467 746 +3 1427 358 749 +3 746 1441 1468 +3 749 1429 1441 +3 1440 913 187 +3 1439 911 742 +3 746 361 1441 +3 1438 1427 749 +3 1457 365 589 +3 1426 358 587 +3 1454 1446 92 +3 587 1428 1445 +3 620 364 1452 +3 1450 364 620 +3 1428 148 1445 +3 1442 1426 587 +3 1449 1447 363 +3 584 363 1446 +3 1447 887 11 +3 583 887 1447 +3 1448 1081 154 +3 1447 11 610 +3 584 365 1456 +3 1454 365 584 +3 1453 1451 364 +3 1446 363 612 +3 1451 1087 40 +3 611 1087 1451 +3 1452 1421 156 +3 1451 40 618 +3 612 363 1448 +3 1450 1446 612 +3 1457 1436 586 +3 1443 362 589 +3 586 365 1457 +3 589 1445 1457 +3 1456 893 147 +3 1455 891 582 +3 1436 1435 586 +3 1454 1443 589 +3 1473 369 717 +3 1415 355 715 +3 1470 1462 93 +3 715 1417 1461 +3 748 368 1468 +3 1466 368 748 +3 1417 180 1461 +3 1458 1415 715 +3 1465 1463 367 +3 712 367 1462 +3 1463 1271 13 +3 711 1271 1463 +3 1464 953 186 +3 1463 13 738 +3 712 369 1472 +3 1470 369 712 +3 1469 1467 368 +3 1462 367 740 +3 1467 959 48 +3 739 959 1467 +3 1468 1441 188 +3 1467 48 746 +3 740 367 1464 +3 1466 1462 740 +3 1473 1424 714 +3 1459 366 717 +3 714 369 1473 +3 717 1461 1473 +3 1472 1277 179 +3 1471 1275 710 +3 1424 1423 714 +3 1470 1459 717 +3 631 1 1474 +3 679 793 1477 +3 632 370 1475 +3 370 1474 1477 +3 632 372 1484 +3 1482 372 632 +3 793 171 1477 +3 1474 1 679 +3 635 378 1508 +3 688 173 1481 +3 635 371 1479 +3 371 1478 1481 +3 1508 160 1480 +3 1506 378 635 +3 688 373 1488 +3 1486 373 688 +3 1516 1515 634 +3 1478 371 637 +3 634 1485 1516 +3 637 1480 1485 +3 1484 849 159 +3 1483 847 630 +3 634 372 1485 +3 1482 1478 637 +3 1489 1487 373 +3 1475 370 681 +3 799 44 1487 +3 678 799 1487 +3 1525 173 1537 +3 1487 44 686 +3 800 799 678 +3 1486 1475 681 +3 374 1491 1492 +3 667 374 1490 +3 608 153 1492 +3 667 382 1524 +3 608 376 1500 +3 1498 376 608 +3 1524 168 1493 +3 1522 382 667 +3 375 1495 1496 +3 664 375 1494 +3 599 1049 1496 +3 663 5 1495 +3 1049 151 1496 +3 1495 5 599 +3 664 377 1504 +3 1502 377 664 +3 1501 1499 376 +3 1494 375 601 +3 1055 39 1499 +3 598 1055 1499 +3 1509 153 1521 +3 1499 39 606 +3 1056 1055 598 +3 1498 1494 601 +3 1532 1531 666 +3 1491 374 669 +3 666 1505 1532 +3 669 1493 1505 +3 1504 1105 167 +3 1503 1103 662 +3 666 377 1505 +3 1502 1491 669 +3 1521 381 609 +3 1490 374 607 +3 1518 1510 96 +3 607 1492 1509 +3 636 380 1516 +3 1514 380 636 +3 1492 153 1509 +3 1506 1490 607 +3 1513 1511 379 +3 597 379 1510 +3 1079 11 1511 +3 594 1079 1511 +3 1512 889 158 +3 1511 11 626 +3 1080 1079 594 +3 1518 381 597 +3 1517 1515 380 +3 1510 379 628 +3 1515 895 41 +3 627 895 1515 +3 1516 1485 160 +3 1515 41 634 +3 628 379 1512 +3 1514 1510 628 +3 1521 1500 606 +3 1507 378 609 +3 1520 1519 595 +3 609 1509 1521 +3 1085 150 1520 +3 1519 1083 595 +3 1500 1499 606 +3 1518 1507 609 +3 1537 385 689 +3 1479 371 687 +3 1534 1526 97 +3 687 1481 1525 +3 668 384 1532 +3 1530 384 668 +3 1481 173 1525 +3 1522 1479 687 +3 1529 824 674 +3 677 170 1529 +3 674 383 1529 +3 383 1526 1529 +3 1528 1145 166 +3 1527 1143 658 +3 824 823 674 +3 1534 385 677 +3 1533 1531 384 +3 1526 383 660 +3 1531 1151 43 +3 659 1151 1531 +3 1532 1505 168 +3 1531 43 666 +3 660 383 1528 +3 1530 1526 660 +3 1537 1488 686 +3 1523 382 689 +3 1536 1535 675 +3 689 1525 1537 +3 829 170 1536 +3 1535 827 675 +3 1488 1487 686 +3 1534 1523 689 + diff --git a/Convex_hull_3/test/Convex_hull_3/test_extreme_points.cpp b/Convex_hull_3/test/Convex_hull_3/test_extreme_points.cpp index ecc67c9815f..52ea5aa6fe7 100644 --- a/Convex_hull_3/test/Convex_hull_3/test_extreme_points.cpp +++ b/Convex_hull_3/test/Convex_hull_3/test_extreme_points.cpp @@ -1,10 +1,15 @@ +#include +#include #include #include #include #include #include +#include #include #include +#include +#include typedef CGAL::Exact_rational NT; typedef CGAL::Cartesian K; @@ -12,6 +17,7 @@ typedef CGAL::Convex_hull_traits_3 Traits; typedef Traits::Polygon_mesh Polyhedron_3; typedef K::Point_3 Point_3; + void test_function_overload() { std::vector points; @@ -23,28 +29,188 @@ void test_function_overload() points.push_back(Point_3(2,5,3)); points.push_back(Point_3(1,3,2)); - Polyhedron_3 polyhedron; - CGAL::convex_hull_3(points.begin(), points.end(), polyhedron); - std::vector extreme_points; CGAL::extreme_points_3(points, std::back_inserter(extreme_points)); + CGAL_assertion(extreme_points.size() == 5); + Polyhedron_3 polyhedron; + CGAL::convex_hull_3(points.begin(), points.end(), polyhedron); typedef Polyhedron_3::Point_iterator Point_iterator; - int i = 0; for (Point_iterator p_it = polyhedron.points_begin(); p_it != polyhedron.points_end(); ++p_it) { Point_3 p = *p_it; - CGAL_assertion(p == extreme_points[i]); - i++; + CGAL_assertion(std::find(extreme_points.begin(), extreme_points.end(), p) != extreme_points.end()); } } +void test_triangulated_cube(const char* fname) +{ + typedef CGAL::Exact_predicates_inexact_constructions_kernel K; + typedef K::Point_3 Point_3; + typedef CGAL::Surface_mesh SurfaceMesh; + std::ifstream input(fname); + SurfaceMesh mesh; + if (!input || !(input >> mesh) || mesh.is_empty()) { + std::cerr << fname << " is not a valid off file.\n"; + exit(1); + } + + std::vector mesh_points; + typedef typename boost::property_map::type Pmap; + Pmap vpmap = get_property_map(boost::vertex_point, mesh); + + typedef typename boost::graph_traits::vertex_descriptor vertex_descriptor; + BOOST_FOREACH(vertex_descriptor v, vertices(mesh)) + { + Point_3 p = get(vpmap, v); + mesh_points.push_back(p); + } + + std::vector extreme_points; + CGAL::extreme_points_3(mesh_points, std::back_inserter(extreme_points)) ; + CGAL_assertion(extreme_points.size() == 8); +} + +void test_coplanar_points(const char* fname) +{ + typedef CGAL::Exact_predicates_inexact_constructions_kernel K; + typedef K::Point_3 Point_3; + + std::ifstream input(fname); + std::vector points; + if(input) + { + Point_3 p; + int i = 0; + while(input >> p) + { + if(i % 2 == 0) // avoid normals in .xyz file + { + points.push_back(p); + } + ++i; + } + } + else + std::cerr << "error loading file\n"; + + CGAL_assertion(points.size() == 289); + std::vector convex_hull; + CGAL::extreme_points_3(points, std::back_inserter(convex_hull)); + CGAL_assertion(convex_hull.size() == 4); +} + +void test_3_points() +{ + std::vector points; + points.push_back(Point_3(0,0,0)); + points.push_back(Point_3(10,0,0)); + points.push_back(Point_3(0,10,0)); + + Polyhedron_3 polyhedron; + CGAL::convex_hull_3(points.begin(), points.end(), polyhedron); + std::vector convex_polyhedron(polyhedron.points_begin(), polyhedron.points_end()); + CGAL_assertion(convex_polyhedron.size() == 3); + + std::vector extreme_points; + CGAL::extreme_points_3(points, std::back_inserter(extreme_points)); + CGAL_assertion(convex_polyhedron.size() == 3); + + typedef Polyhedron_3::Point_iterator Point_iterator; + for (Point_iterator p_it = polyhedron.points_begin(); p_it != polyhedron.points_end(); ++p_it) + { + Point_3 p = *p_it; + CGAL_assertion(std::find(extreme_points.begin(), extreme_points.end(), p) != extreme_points.end()); + } +} + +void test_3_collinear() +{ + std::vector points; + points.push_back(Point_3(0,0,0)); + points.push_back(Point_3(1,0,0)); + points.push_back(Point_3(2,0,0)); + + Polyhedron_3 polyhedron; + CGAL::convex_hull_3(points.begin(), points.end(), polyhedron); + std::vector convex_polyhedron(polyhedron.points_begin(), polyhedron.points_end()); + CGAL_assertion(convex_polyhedron.size() == 2); + + std::vector extreme_points; + CGAL::extreme_points_3(points, std::back_inserter(extreme_points)); + CGAL_assertion(convex_polyhedron.size() == 2); + + typedef Polyhedron_3::Point_iterator Point_iterator; + for (Point_iterator p_it = polyhedron.points_begin(); p_it != polyhedron.points_end(); ++p_it) + { + Point_3 p = *p_it; + CGAL_assertion(std::find(extreme_points.begin(), extreme_points.end(), p) != extreme_points.end()); + } +} + +void test_up_to_3_extreme_points() +{ + std::vector points; + std::vector extreme_points; + CGAL::extreme_points_3(points, std::back_inserter(extreme_points)); + CGAL_assertion(extreme_points.empty()); + + Point_3 p1(0, 0, 0); + points.push_back(p1); + extreme_points.clear(); + CGAL::extreme_points_3(points, std::back_inserter(extreme_points)); + CGAL_assertion(extreme_points.size() == 1); + + Point_3 p2(1, 0, 0); + points.push_back(p2); + extreme_points.clear(); + CGAL::extreme_points_3(points, std::back_inserter(extreme_points)); + CGAL_assertion(extreme_points.size() == 2); + + Point_3 p3(1, 1, 0); + points.push_back(p3); + extreme_points.clear(); + CGAL::extreme_points_3(points, std::back_inserter(extreme_points)); + CGAL_assertion(extreme_points.size() == 3); +} + +void test_equal_points() +{ + std::vector points; + std::vector extreme_points; + + // test two equal + Point_3 p1(0, 0, 0); + points.push_back(p1); + points.push_back(p1); + CGAL::extreme_points_3(points, std::back_inserter(extreme_points)); + CGAL_assertion(extreme_points.size() == 1); + + // test many equal + extreme_points.clear(); + for(int i = 0; i < 10; ++i) + points.push_back(p1); + CGAL::extreme_points_3(points, std::back_inserter(extreme_points)); + CGAL_assertion(extreme_points.size() == 1); + + // test with only 2 different + extreme_points.clear(); + Point_3 p3(0.1, 0, 0); + points.push_back(p3); + CGAL::extreme_points_3(points, std::back_inserter(extreme_points)); + CGAL_assertion(extreme_points.size() == 2); +} int main() { - test_function_overload(); + test_3_points(); + test_up_to_3_extreme_points(); + test_3_collinear(); + test_triangulated_cube("data/cube_meshed.off"); + test_coplanar_points("data/coplanar_points.xyz"); + test_equal_points(); return 0; } diff --git a/Installation/CHANGES.md b/Installation/CHANGES.md index 82f399e9dba..271a5df448a 100644 --- a/Installation/CHANGES.md +++ b/Installation/CHANGES.md @@ -44,6 +44,10 @@ Release date: September 2018 to reflect the real needs of the code (some types and operators were used in the code but did not appear in the concepts). +### Convex hull 3 +- Added the function `extreme_points_3()` computing the + points on the convex hull without underlying connectivity. + ### Polygon Mesh Processing - Added a function to apply a transformation to a mesh: - `CGAL::Polygon_mesh_processing::transform()` @@ -83,7 +87,6 @@ Release date: September 2018 - Improve the function `CGAL::Euler::collapse_edge` so that the target vertex of the collapsed edge is always kept after the collapse. - Release 4.12 ------------