Initial commit: ANN 1.1.1
authorDmitriy Morozov <dmitriy@mrzv.org>
Tue, 14 Jul 2009 09:23:09 -0700
changeset 0 e2bb6f169431
child 1 730bb27b92cf
Initial commit: ANN 1.1.1
Copyright.txt
License.txt
MS_Win32/Ann.sln
MS_Win32/Ann.sln.old
MS_Win32/Makefile
MS_Win32/ann2fig/ann2fig.vcproj
MS_Win32/ann2fig/ann2fig.vcproj.7.10.old
MS_Win32/dll/dll.vcproj
MS_Win32/dll/dll.vcproj.7.10.old
MS_Win32/sample/sample.vcproj
MS_Win32/sample/sample.vcproj.7.10.old
MS_Win32/test/test.vcproj
MS_Win32/test/test.vcproj.7.10.old
Make-config
Makefile
ReadMe.txt
ann2fig/Makefile
ann2fig/ann2fig.cpp
doc/ANNmanual.pdf
include/ANN/ANN.h
include/ANN/ANNperf.h
include/ANN/ANNx.h
sample/Makefile
sample/ann_sample.cpp
sample/data.pts
sample/query.pts
sample/sample.save
src/ANN.cpp
src/Makefile
src/bd_fix_rad_search.cpp
src/bd_pr_search.cpp
src/bd_search.cpp
src/bd_tree.cpp
src/bd_tree.h
src/brute.cpp
src/kd_dump.cpp
src/kd_fix_rad_search.cpp
src/kd_fix_rad_search.h
src/kd_pr_search.cpp
src/kd_pr_search.h
src/kd_search.cpp
src/kd_search.h
src/kd_split.cpp
src/kd_split.h
src/kd_tree.cpp
src/kd_tree.h
src/kd_util.cpp
src/kd_util.h
src/perf.cpp
src/pr_queue.h
src/pr_queue_k.h
test/Makefile
test/ann_test.cpp
test/rand.cpp
test/rand.h
test/test1-data.pts
test/test1-query.pts
test/test1.in
test/test1.save
test/test2-data.pts
test/test2-query.pts
test/test2.in
test/test2.save
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Copyright.txt	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,47 @@
+ANN: Approximate Nearest Neighbors
+Version: 1.1.1
+Release Date: Aug 4, 2006
+----------------------------------------------------------------------------
+Copyright (c) 1997-2005 University of Maryland and Sunil Arya and David
+Mount All Rights Reserved.
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser Public License as published by the
+Free Software Foundation; either version 2.1 of the License, or (at your
+option) any later version.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser Public License for more details.
+
+A copy of the terms and conditions of the license can be found in
+License.txt or online at
+
+    http://www.gnu.org/copyleft/lesser.html
+
+To obtain a copy, write to the Free Software Foundation, Inc.,
+59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+Disclaimer
+----------
+The University of Maryland and the authors make no representations about
+the suitability or fitness of this software for any purpose.  It is
+provided "as is" without express or implied warranty.
+---------------------------------------------------------------------
+
+Authors
+-------
+David Mount
+Dept of Computer Science
+University of Maryland,
+College Park, MD 20742 USA
+mount@cs.umd.edu
+http://www.cs.umd.edu/~mount/
+
+Sunil Arya
+Dept of Computer Science
+Hong University of Science and Technology
+Clearwater Bay, HONG KONG
+arya@cs.ust.hk
+http://www.cs.ust.hk/faculty/arya/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/License.txt	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,450 @@
+----------------------------------------------------------------------
+The ANN Library (all versions) is provided under the terms and
+conditions of the GNU Lesser General Public Library, which is stated
+below.  It can also be found at:
+
+   http://www.gnu.org/copyleft/lesser.html
+
+----------------------------------------------------------------------
+
+GNU LESSER GENERAL PUBLIC LICENSE
+
+Version 2.1, February 1999
+
+Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+as the successor of the GNU Library Public License, version 2, hence the
+version number 2.1.]
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to
+share and change it. By contrast, the GNU General Public Licenses are
+intended to guarantee your freedom to share and change free software--to
+make sure the software is free for all its users.
+
+This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the Free
+Software Foundation and other authors who decide to use it. You can use
+it too, but we suggest you first think carefully about whether this
+license or the ordinary General Public License is the better strategy to
+use in any particular case, based on the explanations below.
+
+When we speak of free software, we are referring to freedom of use, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish); that you receive source code or can get it if
+you want it; that you can change the software and use pieces of it in
+new free programs; and that you are informed that you can do these
+things.
+
+To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for you
+if you distribute copies of the library or if you modify it.
+
+For example, if you distribute copies of the library, whether gratis or
+for a fee, you must give the recipients all the rights that we gave you.
+You must make sure that they, too, receive or can get the source code.
+If you link other code with the library, you must provide complete
+object files to the recipients, so that they can relink them with the
+library after making changes to the library and recompiling it. And you
+must show them these terms so they know their rights.
+
+We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+To protect each distributor, we want to make it very clear that there is
+no warranty for the free library. Also, if the library is modified by
+someone else and passed on, the recipients should know that what they
+have is not the original version, so that the original author's
+reputation will not be affected by problems that might be introduced by
+others.
+
+Finally, software patents pose a constant threat to the existence of any
+free program. We wish to make sure that a company cannot effectively
+restrict the users of a free program by obtaining a restrictive license
+from a patent holder. Therefore, we insist that any patent license
+obtained for a version of the library must be consistent with the full
+freedom of use specified in this license.
+
+Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License. This license, the GNU Lesser General Public
+License, applies to certain designated libraries, and is quite different
+from the ordinary General Public License. We use this license for
+certain libraries in order to permit linking those libraries into
+non-free programs.
+
+When a program is linked with a library, whether statically or using a
+shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the entire
+combination fits its criteria of freedom. The Lesser General Public
+License permits more lax criteria for linking other code with the
+library.
+
+We call this license the "Lesser" General Public License because it does
+Less to protect the user's freedom than the ordinary General Public
+License. It also provides other free software developers Less of an
+advantage over competing non-free programs. These disadvantages are the
+reason we use the ordinary General Public License for many libraries.
+However, the Lesser license provides advantages in certain special
+circumstances.
+
+For example, on rare occasions, there may be a special need to encourage
+the widest possible use of a certain library, so that it becomes a
+de-facto standard. To achieve this, non-free programs must be allowed to
+use the library. A more frequent case is that a free library does the
+same job as widely used non-free libraries. In this case, there is
+little to gain by limiting the free library to free software only, so we
+use the Lesser General Public License.
+
+In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of free
+software. For example, permission to use the GNU C Library in non-free
+programs enables many more people to use the whole GNU operating system,
+as well as its variant, the GNU/Linux operating system.
+
+Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is linked
+with the Library has the freedom and the wherewithal to run that program
+using a modified version of the Library.
+
+The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or other
+authorized party saying it may be distributed under the terms of this
+Lesser General Public License (also called "this License"). Each
+licensee is addressed as "you".
+
+A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+The "Library", below, refers to any such software library or work which
+has been distributed under these terms. A "work based on the Library"
+means either the Library or any derivative work under copyright law:
+that is to say, a work containing the Library or a portion of it, either
+verbatim or with modifications and/or translated straightforwardly into
+another language. (Hereinafter, translation is included without
+limitation in the term "modification".)
+
+"Source code" for a work means the preferred form of the work for making
+modifications to it. For a library, complete source code means all the
+source code for all modules it contains, plus any associated interface
+definition files, plus the scripts used to control compilation and
+installation of the library.
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of running
+a program using the Library is not restricted, and output from such a
+program is covered only if its contents constitute a work based on the
+Library (independent of the use of the Library in a tool for writing
+it). Whether that is true depends on what the Library does and what the
+program that uses the Library does.
+
+1. You may copy and distribute verbatim copies of the Library's complete
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the notices
+that refer to this License and to the absence of any warranty; and
+distribute a copy of this License along with the Library.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Library or any portion of
+it, thus forming a work based on the Library, and copy and distribute
+such modifications or work under the terms of Section 1 above, provided
+that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+    b) You must cause the files modified to carry prominent notices
+       stating that you changed the files and the date of any change.
+    c) You must cause the whole of the work to be licensed at no
+       charge to all third parties under the terms of this License.
+    d) If a facility in the modified Library refers to a function or a
+       table of data to be supplied by an application program that uses
+       the facility, other than as an argument passed when the facility
+       is invoked, then you must make a good faith effort to ensure that,
+       in the event an application does not supply such function or
+       table, the facility still operates, and performs whatever part of
+       its purpose remains meaningful.
+
+      (For example, a function in a library to compute square roots has
+a purpose that is entirely well-defined independent of the application.
+Therefore, Subsection 2d requires that any application-supplied function
+or table used by this function must be optional: if the application does
+not supply it, the square root function must still compute square
+roots.)
+
+      These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library, and
+can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based on
+the Library, the distribution of the whole must be on the terms of this
+License, whose permissions for other licensees extend to the entire
+whole, and thus to each and every part regardless of who wrote it.
+
+      Thus, it is not the intent of this section to claim rights or
+contest your rights to work written entirely by you; rather, the intent
+is to exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+      In addition, mere aggregation of another work not based on the
+Library with the Library (or with a work based on the Library) on a
+volume of a storage or distribution medium does not bring the other work
+under the scope of this License. 
+
+3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so that
+they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in these
+notices.
+
+Once this change is made in a given copy, it is irreversible for that
+copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+This option is useful when you wish to copy part of the code of the
+Library into a program that is not a library.
+
+4. You may copy and distribute the Library (or a portion or derivative
+of it, under Section 2) in object code or executable form under the
+terms of Sections 1 and 2 above provided that you accompany it with the
+complete corresponding machine-readable source code, which must be
+distributed under the terms of Sections 1 and 2 above on a medium
+customarily used for software interchange.
+
+If distribution of object code is made by offering access to copy from a
+designated place, then offering equivalent access to copy the source
+code from the same place satisfies the requirement to distribute the
+source code, even though third parties are not compelled to copy the
+source along with the object code.
+
+5. A program that contains no derivative of any portion of the Library,
+but is designed to work with the Library by being compiled or linked
+with it, is called a "work that uses the Library". Such a work, in
+isolation, is not a derivative work of the Library, and therefore falls
+outside the scope of this License.
+
+However, linking a "work that uses the Library" with the Library creates
+an executable that is a derivative of the Library (because it contains
+portions of the Library), rather than a "work that uses the library".
+The executable is therefore covered by this License. Section 6 states
+terms for distribution of such executables.
+
+When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be linked
+without the Library, or if the work is itself a library. The threshold
+for this to be true is not precisely defined by law.
+
+If such an object file uses only numerical parameters, data structure
+layouts and accessors, and small macros and small inline functions (ten
+lines or less in length), then the use of the object file is
+unrestricted, regardless of whether it is legally a derivative work.
+(Executables containing this object code plus portions of the Library
+will still fall under Section 6.)
+
+Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6, whether
+or not they are linked directly with the Library itself.
+
+6. As an exception to the Sections above, you may also combine or link a
+"work that uses the Library" with the Library to produce a work
+containing portions of the Library, and distribute that work under terms
+of your choice, provided that the terms permit modification of the work
+for the customer's own use and reverse engineering for debugging such
+modifications.
+
+You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work during
+execution displays copyright notices, you must include the copyright
+notice for the Library among them, as well as a reference directing the
+user to the copy of this License. Also, you must do one of these things:
+
+    a) Accompany the work with the complete corresponding
+       machine-readable source code for the Library including whatever
+       changes were used in the work (which must be distributed under
+       Sections 1 and 2 above); and, if the work is an executable linked
+       with the Library, with the complete machine-readable "work that
+       uses the Library", as object code and/or source code, so that the
+       user can modify the Library and then relink to produce a modified
+       executable containing the modified Library. (It is understood that
+       the user who changes the contents of definitions files in the
+       Library will not necessarily be able to recompile the application
+       to use the modified definitions.)
+    b) Use a suitable shared library mechanism for linking with the
+       Library. A suitable mechanism is one that (1) uses at run time a
+       copy of the library already present on the user's computer system,
+       rather than copying library functions into the executable, and (2)
+       will operate properly with a modified version of the library, if
+       the user installs one, as long as the modified version is
+       interface-compatible with the version that the work was made with.
+    c) Accompany the work with a written offer, valid for at least
+       three years, to give the same user the materials specified in
+       Subsection 6a, above, for a charge no more than the cost of
+       performing this distribution.
+    d) If distribution of the work is made by offering access to copy
+       from a designated place, offer equivalent access to copy the above
+       specified materials from the same place.
+    e) Verify that the user has already received a copy of these
+       materials or that you have already sent this user a copy. 
+
+For an executable, the required form of the "work that uses the Library"
+must include any data and utility programs needed for reproducing the
+executable from it. However, as a special exception, the materials to be
+distributed need not include anything that is normally distributed (in
+either source or binary form) with the major components (compiler,
+kernel, and so on) of the operating system on which the executable runs,
+unless that component itself accompanies the executable.
+
+It may happen that this requirement contradicts the license restrictions
+of other proprietary libraries that do not normally accompany the
+operating system. Such a contradiction means you cannot use both them
+and the Library together in an executable that you distribute.
+
+7. You may place library facilities that are a work based on the Library
+side-by-side in a single library together with other library facilities
+not covered by this License, and distribute such a combined library,
+provided that the separate distribution of the work based on the Library
+and of the other library facilities is otherwise permitted, and provided
+that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+       based on the Library, uncombined with any other library
+       facilities. This must be distributed under the terms of the
+       Sections above.
+    b) Give prominent notice with the combined library of the fact
+       that part of it is a work based on the Library, and explaining
+       where to find the accompanying uncombined form of the same work. 
+
+8. You may not copy, modify, sublicense, link with, or distribute the
+Library except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense, link with, or distribute the
+Library is void, and will automatically terminate your rights under this
+License. However, parties who have received copies, or rights, from you
+under this License will not have their licenses terminated so long as
+such parties remain in full compliance.
+
+9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and all
+its terms and conditions for copying, distributing or modifying the
+Library or works based on it.
+
+10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot distribute
+so as to satisfy simultaneously your obligations under this License and
+any other pertinent obligations, then as a consequence you may not
+distribute the Library at all. For example, if a patent license would
+not permit royalty-free redistribution of the Library by all those who
+receive copies directly or indirectly through you, then the only way you
+could satisfy both it and this License would be to refrain entirely from
+distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is implemented
+by public license practices. Many people have made generous
+contributions to the wide range of software distributed through that
+system in reliance on consistent application of that system; it is up to
+the author/donor to decide if he or she is willing to distribute
+software through any other system and a licensee cannot impose that
+choice.
+
+This section is intended to make thoroughly clear what is believed to be
+a consequence of the rest of this License.
+
+12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may
+add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among countries
+not thus excluded. In such case, this License incorporates the
+limitation as if written in the body of this License.
+
+13. The Free Software Foundation may publish revised and/or new versions
+of the Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a license
+version number, you may choose any version ever published by the Free
+Software Foundation.
+
+14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free Software
+Foundation; we sometimes make exceptions for this. Our decision will be
+guided by the two goals of preserving the free status of all derivatives
+of our free software and of promoting the sharing and reuse of software
+generally.
+
+NO WARRANTY
+
+15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
+EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
+ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH
+YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
+NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
+DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
+DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY
+(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
+INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
+THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR
+OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MS_Win32/Ann.sln	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,46 @@
+Microsoft Visual Studio Solution File, Format Version 9.00
+# Visual Studio 2005
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dll", "dll\dll.vcproj", "{A7D00B21-CB9C-4BBB-8DEE-51025104F867}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sample", "sample\sample.vcproj", "{C76F5A10-7A4A-4546-9414-296DB38BE825}"
+	ProjectSection(ProjectDependencies) = postProject
+		{A7D00B21-CB9C-4BBB-8DEE-51025104F867} = {A7D00B21-CB9C-4BBB-8DEE-51025104F867}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "test\test.vcproj", "{6AC673C7-7B3F-4520-A761-647B212A4BEF}"
+	ProjectSection(ProjectDependencies) = postProject
+		{A7D00B21-CB9C-4BBB-8DEE-51025104F867} = {A7D00B21-CB9C-4BBB-8DEE-51025104F867}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ann2fig", "ann2fig\ann2fig.vcproj", "{622DD7D8-0C0A-4303-9176-C9A8AF467E70}"
+	ProjectSection(ProjectDependencies) = postProject
+		{A7D00B21-CB9C-4BBB-8DEE-51025104F867} = {A7D00B21-CB9C-4BBB-8DEE-51025104F867}
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{A7D00B21-CB9C-4BBB-8DEE-51025104F867}.Debug|Win32.ActiveCfg = Debug|Win32
+		{A7D00B21-CB9C-4BBB-8DEE-51025104F867}.Debug|Win32.Build.0 = Debug|Win32
+		{A7D00B21-CB9C-4BBB-8DEE-51025104F867}.Release|Win32.ActiveCfg = Release|Win32
+		{A7D00B21-CB9C-4BBB-8DEE-51025104F867}.Release|Win32.Build.0 = Release|Win32
+		{C76F5A10-7A4A-4546-9414-296DB38BE825}.Debug|Win32.ActiveCfg = Debug|Win32
+		{C76F5A10-7A4A-4546-9414-296DB38BE825}.Debug|Win32.Build.0 = Debug|Win32
+		{C76F5A10-7A4A-4546-9414-296DB38BE825}.Release|Win32.ActiveCfg = Release|Win32
+		{C76F5A10-7A4A-4546-9414-296DB38BE825}.Release|Win32.Build.0 = Release|Win32
+		{6AC673C7-7B3F-4520-A761-647B212A4BEF}.Debug|Win32.ActiveCfg = Debug|Win32
+		{6AC673C7-7B3F-4520-A761-647B212A4BEF}.Debug|Win32.Build.0 = Debug|Win32
+		{6AC673C7-7B3F-4520-A761-647B212A4BEF}.Release|Win32.ActiveCfg = Release|Win32
+		{6AC673C7-7B3F-4520-A761-647B212A4BEF}.Release|Win32.Build.0 = Release|Win32
+		{622DD7D8-0C0A-4303-9176-C9A8AF467E70}.Debug|Win32.ActiveCfg = Debug|Win32
+		{622DD7D8-0C0A-4303-9176-C9A8AF467E70}.Debug|Win32.Build.0 = Debug|Win32
+		{622DD7D8-0C0A-4303-9176-C9A8AF467E70}.Release|Win32.ActiveCfg = Release|Win32
+		{622DD7D8-0C0A-4303-9176-C9A8AF467E70}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MS_Win32/Ann.sln.old	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,48 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dll", "dll\dll.vcproj", "{A7D00B21-CB9C-4BBB-8DEE-51025104F867}"
+	ProjectSection(ProjectDependencies) = postProject
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sample", "sample\sample.vcproj", "{C76F5A10-7A4A-4546-9414-296DB38BE825}"
+	ProjectSection(ProjectDependencies) = postProject
+		{A7D00B21-CB9C-4BBB-8DEE-51025104F867} = {A7D00B21-CB9C-4BBB-8DEE-51025104F867}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "test", "test\test.vcproj", "{6AC673C7-7B3F-4520-A761-647B212A4BEF}"
+	ProjectSection(ProjectDependencies) = postProject
+		{A7D00B21-CB9C-4BBB-8DEE-51025104F867} = {A7D00B21-CB9C-4BBB-8DEE-51025104F867}
+	EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ann2fig", "ann2fig\ann2fig.vcproj", "{622DD7D8-0C0A-4303-9176-C9A8AF467E70}"
+	ProjectSection(ProjectDependencies) = postProject
+		{A7D00B21-CB9C-4BBB-8DEE-51025104F867} = {A7D00B21-CB9C-4BBB-8DEE-51025104F867}
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfiguration) = preSolution
+		Debug = Debug
+		Release = Release
+	EndGlobalSection
+	GlobalSection(ProjectConfiguration) = postSolution
+		{A7D00B21-CB9C-4BBB-8DEE-51025104F867}.Debug.ActiveCfg = Debug|Win32
+		{A7D00B21-CB9C-4BBB-8DEE-51025104F867}.Debug.Build.0 = Debug|Win32
+		{A7D00B21-CB9C-4BBB-8DEE-51025104F867}.Release.ActiveCfg = Release|Win32
+		{A7D00B21-CB9C-4BBB-8DEE-51025104F867}.Release.Build.0 = Release|Win32
+		{C76F5A10-7A4A-4546-9414-296DB38BE825}.Debug.ActiveCfg = Debug|Win32
+		{C76F5A10-7A4A-4546-9414-296DB38BE825}.Debug.Build.0 = Debug|Win32
+		{C76F5A10-7A4A-4546-9414-296DB38BE825}.Release.ActiveCfg = Release|Win32
+		{C76F5A10-7A4A-4546-9414-296DB38BE825}.Release.Build.0 = Release|Win32
+		{6AC673C7-7B3F-4520-A761-647B212A4BEF}.Debug.ActiveCfg = Debug|Win32
+		{6AC673C7-7B3F-4520-A761-647B212A4BEF}.Debug.Build.0 = Debug|Win32
+		{6AC673C7-7B3F-4520-A761-647B212A4BEF}.Release.ActiveCfg = Release|Win32
+		{6AC673C7-7B3F-4520-A761-647B212A4BEF}.Release.Build.0 = Release|Win32
+		{622DD7D8-0C0A-4303-9176-C9A8AF467E70}.Debug.ActiveCfg = Debug|Win32
+		{622DD7D8-0C0A-4303-9176-C9A8AF467E70}.Debug.Build.0 = Debug|Win32
+		{622DD7D8-0C0A-4303-9176-C9A8AF467E70}.Release.ActiveCfg = Release|Win32
+		{622DD7D8-0C0A-4303-9176-C9A8AF467E70}.Release.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ExtensibilityGlobals) = postSolution
+	EndGlobalSection
+	GlobalSection(ExtensibilityAddIns) = postSolution
+	EndGlobalSection
+EndGlobal
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MS_Win32/Makefile	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,53 @@
+#-----------------------------------------------------------------------------
+# Makefile for Windows Versions.
+#
+# ANN: Approximate Nearest Neighbors
+# Version: 1.1.1 08/04/06
+#-----------------------------------------------------------------------------
+# Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+# David Mount.  All Rights Reserved.
+# 
+# This software and related documentation is part of the Approximate
+# Nearest Neighbor Library (ANN).  This software is provided under
+# the provisions of the Lesser GNU Public License (LGPL).  See the
+# file ../ReadMe.txt for further information.
+# 
+# The University of Maryland (U.M.) and the authors make no
+# representations about the suitability or fitness of this software for
+# any purpose.  It is provided "as is" without express or implied
+# warranty.
+#-----------------------------------------------------------------------------
+# Revision 1.0  05/03/05
+#	Initial release
+# Revision 1.1.1  08/04/06
+#	Added copyright/license
+#-----------------------------------------------------------------------------
+
+#-----------------------------------------------------------------------------
+# This is not used for compiling the dll. It is just used for cleaning
+# things up for distribution.  For compilcation, open the Ann.sln
+# solution file in Microsoft Windows Visual Studio.NET.
+#-----------------------------------------------------------------------------
+
+default:
+	@echo "Enter one of the following:"
+	@echo "  make clean                remove object files"
+	@echo "  make realclean            remove library and executable files"
+	@echo " "
+	@echo "See file Makefile for other compilation options."
+
+#-----------------------------------------------------------------------------
+# Remove .o files and core files
+#-----------------------------------------------------------------------------
+clean:
+	-rm -f -r ann2fig/Debug ann2fig/Release
+	-rm -f -r dll/Debug dll/Release
+	-rm -f -r sample/Debug sample/Release
+	-rm -f -r test/Debug test/Release
+	-rm -f Ann.ncb Ann.suo
+
+#-----------------------------------------------------------------------------
+# Remove everthing that can be remade
+#-----------------------------------------------------------------------------
+realclean:  clean
+	-rm -f bin/*
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MS_Win32/ann2fig/ann2fig.vcproj	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,202 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="ann2fig"
+	ProjectGUID="{622DD7D8-0C0A-4303-9176-C9A8AF467E70}"
+	Keyword="Win32Proj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="..\bin\ann2fig.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile="$(OutDir)/ann2fig.pdb"
+				SubSystem="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="..\..\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_DEPRECATE"
+				RuntimeLibrary="0"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="true"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="..\bin\ann2fig.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\ann2fig\ann2fig.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MS_Win32/ann2fig/ann2fig.vcproj.7.10.old	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="ann2fig"
+	ProjectGUID="{622DD7D8-0C0A-4303-9176-C9A8AF467E70}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="Debug"
+			IntermediateDirectory="Debug"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="5"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="..\bin\ann2fig.exe"
+				LinkIncremental="2"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/ann2fig.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="Release"
+			IntermediateDirectory="Release"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				AdditionalIncludeDirectories="..\..\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="4"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="..\bin\ann2fig.exe"
+				LinkIncremental="1"
+				GenerateDebugInformation="TRUE"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
+			<File
+				RelativePath="..\..\ann2fig\ann2fig.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MS_Win32/dll/dll.vcproj	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,589 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="dll"
+	ProjectGUID="{A7D00B21-CB9C-4BBB-8DEE-51025104F867}"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory=".\Debug"
+			IntermediateDirectory=".\Debug"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="_DEBUG"
+				MkTypLibCompatible="true"
+				SuppressStartupBanner="true"
+				TargetEnvironment="1"
+				TypeLibraryName=".\Debug/dll.tlb"
+				HeaderFileName=""
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;DLL_EXPORTS;ANN_PERF;ANN_NO_RANDOM"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="0"
+				PrecompiledHeaderThrough="stdafx.h"
+				PrecompiledHeaderFile=".\Debug/dll.pch"
+				AssemblerListingLocation=".\Debug/"
+				ObjectFile=".\Debug/"
+				ProgramDataBaseFileName=".\Debug/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+				DebugInformationFormat="4"
+				CompileAs="0"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="3081"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="..\bin\ANN.dll"
+				LinkIncremental="0"
+				SuppressStartupBanner="true"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile=".\Debug\ANN.pdb"
+				ImportLibrary=".\Debug\ANN.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory=".\Release"
+			IntermediateDirectory=".\Release"
+			ConfigurationType="2"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="NDEBUG"
+				MkTypLibCompatible="true"
+				SuppressStartupBanner="true"
+				TargetEnvironment="1"
+				TypeLibraryName=".\Release/dll.tlb"
+				HeaderFileName=""
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				AdditionalIncludeDirectories="..\..\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;DLL_EXPORTS;ANN_NO_RANDOM"
+				StringPooling="true"
+				RuntimeLibrary="0"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				PrecompiledHeaderThrough="stdafx.h"
+				PrecompiledHeaderFile=".\Release/dll.pch"
+				AssemblerListingLocation=".\Release/"
+				ObjectFile=".\Release/"
+				ProgramDataBaseFileName=".\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+				CompileAs="0"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="3081"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="..\bin\ANN.dll"
+				LinkIncremental="1"
+				SuppressStartupBanner="true"
+				ProgramDatabaseFile=".\Release\ANN.pdb"
+				ImportLibrary=".\Release\ANN.lib"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+			>
+			<File
+				RelativePath="..\..\src\ANN.cpp"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\bd_fix_rad_search.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bd_pr_search.cpp"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\bd_search.cpp"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\bd_tree.cpp"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\brute.cpp"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\kd_dump.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\kd_fix_rad_search.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\kd_pr_search.cpp"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\kd_search.cpp"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\kd_split.cpp"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\kd_tree.cpp"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\kd_util.cpp"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\perf.cpp"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl"
+			>
+			<File
+				RelativePath="..\..\include\Ann\ANN.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\Ann\ANNperf.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\include\Ann\ANNx.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\bd_tree.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\kd_fix_rad_search.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\kd_pr_search.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\kd_search.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\kd_split.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\kd_tree.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\kd_util.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\pr_queue.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\pr_queue_k.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+			>
+		</Filter>
+		<File
+			RelativePath="ReadMe.txt"
+			>
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MS_Win32/dll/dll.vcproj.7.10.old	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,452 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="dll"
+	SccProjectName=""
+	SccLocalPath="">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory=".\Debug"
+			IntermediateDirectory=".\Debug"
+			ConfigurationType="2"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;DLL_EXPORTS;ANN_PERF;ANN_NO_RANDOM"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="1"
+				UsePrecompiledHeader="0"
+				PrecompiledHeaderThrough="stdafx.h"
+				PrecompiledHeaderFile=".\Debug/dll.pch"
+				AssemblerListingLocation=".\Debug/"
+				ObjectFile=".\Debug/"
+				ProgramDataBaseFileName=".\Debug/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				DebugInformationFormat="4"
+				CompileAs="0"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="..\bin\ANN.dll"
+				LinkIncremental="0"
+				SuppressStartupBanner="TRUE"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile=".\Debug\ANN.pdb"
+				ImportLibrary=".\Debug\ANN.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="_DEBUG"
+				MkTypLibCompatible="TRUE"
+				SuppressStartupBanner="TRUE"
+				TargetEnvironment="1"
+				TypeLibraryName=".\Debug/dll.tlb"
+				HeaderFileName=""/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="3081"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory=".\Release"
+			IntermediateDirectory=".\Release"
+			ConfigurationType="2"
+			UseOfMFC="0"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				AdditionalIncludeDirectories="..\..\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;DLL_EXPORTS;ANN_NO_RANDOM"
+				StringPooling="TRUE"
+				RuntimeLibrary="0"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				PrecompiledHeaderThrough="stdafx.h"
+				PrecompiledHeaderFile=".\Release/dll.pch"
+				AssemblerListingLocation=".\Release/"
+				ObjectFile=".\Release/"
+				ProgramDataBaseFileName=".\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				CompileAs="0"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				OutputFile="..\bin\ANN.dll"
+				LinkIncremental="1"
+				SuppressStartupBanner="TRUE"
+				ProgramDatabaseFile=".\Release\ANN.pdb"
+				ImportLibrary=".\Release\ANN.lib"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"
+				PreprocessorDefinitions="NDEBUG"
+				MkTypLibCompatible="TRUE"
+				SuppressStartupBanner="TRUE"
+				TargetEnvironment="1"
+				TypeLibraryName=".\Release/dll.tlb"
+				HeaderFileName=""/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="3081"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+			<File
+				RelativePath="..\..\src\ANN.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\bd_fix_rad_search.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\bd_pr_search.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\bd_search.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\bd_tree.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\brute.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\kd_dump.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\kd_fix_rad_search.cpp">
+			</File>
+			<File
+				RelativePath="..\..\src\kd_pr_search.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\kd_search.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\kd_split.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\kd_tree.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\kd_util.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\src\perf.cpp">
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_MBCS;_USRDLL;DLL_EXPORTS"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl">
+			<File
+				RelativePath="..\..\include\Ann\ANN.h">
+			</File>
+			<File
+				RelativePath="..\..\include\Ann\ANNperf.h">
+			</File>
+			<File
+				RelativePath="..\..\include\Ann\ANNx.h">
+			</File>
+			<File
+				RelativePath="..\..\src\bd_tree.h">
+			</File>
+			<File
+				RelativePath="..\..\src\kd_fix_rad_search.h">
+			</File>
+			<File
+				RelativePath="..\..\src\kd_pr_search.h">
+			</File>
+			<File
+				RelativePath="..\..\src\kd_search.h">
+			</File>
+			<File
+				RelativePath="..\..\src\kd_split.h">
+			</File>
+			<File
+				RelativePath="..\..\src\kd_tree.h">
+			</File>
+			<File
+				RelativePath="..\..\src\kd_util.h">
+			</File>
+			<File
+				RelativePath="..\..\src\pr_queue.h">
+			</File>
+			<File
+				RelativePath="..\..\src\pr_queue_k.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+		</Filter>
+		<File
+			RelativePath="ReadMe.txt">
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MS_Win32/sample/sample.vcproj	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,271 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="sample"
+	ProjectGUID="{C76F5A10-7A4A-4546-9414-296DB38BE825}"
+	Keyword="MFCProj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory=".\Debug"
+			IntermediateDirectory=".\Debug"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			UseOfMFC="2"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				TypeLibraryName=".\Debug/sample.tlb"
+				HeaderFileName=""
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;ANN_NO_RANDOM;ANN_PERF;_CRT_SECURE_NO_DEPRECATE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				PrecompiledHeaderThrough="stdafx.h"
+				PrecompiledHeaderFile=".\Debug/sample.pch"
+				AssemblerListingLocation=".\Debug/"
+				ObjectFile=".\Debug/"
+				ProgramDataBaseFileName=".\Debug/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+				DebugInformationFormat="4"
+				CompileAs="0"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="3081"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"
+				OutputFile="..\bin\ann_sample.exe"
+				LinkIncremental="2"
+				SuppressStartupBanner="true"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile=".\Debug/sample.pdb"
+				SubSystem="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory=".\Release"
+			IntermediateDirectory=".\Release"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			UseOfMFC="2"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				TypeLibraryName=".\Release/sample.tlb"
+				HeaderFileName=""
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				AdditionalIncludeDirectories="..\..\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;ANN_NO_RANDOM;_CRT_SECURE_NO_DEPRECATE"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				PrecompiledHeaderThrough="stdafx.h"
+				PrecompiledHeaderFile=".\Release/sample.pch"
+				AssemblerListingLocation=".\Release/"
+				ObjectFile=".\Release/"
+				ProgramDataBaseFileName=".\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+				CompileAs="0"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="3081"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"
+				OutputFile="..\bin\ann_sample.exe"
+				LinkIncremental="1"
+				SuppressStartupBanner="true"
+				ProgramDatabaseFile=".\Release/sample.pdb"
+				SubSystem="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+			>
+			<File
+				RelativePath="..\..\sample\ann_sample.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl"
+			>
+		</Filter>
+		<Filter
+			Name="Test Data"
+			>
+			<File
+				RelativePath="data_pts"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="true"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="query_pts"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="true"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="sample.out"
+				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="true"
+					>
+					<Tool
+						Name="VCCustomBuildTool"
+					/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+			>
+		</Filter>
+		<File
+			RelativePath="ReadMe.txt"
+			>
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MS_Win32/sample/sample.vcproj.7.10.old	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="sample"
+	SccProjectName=""
+	SccLocalPath=""
+	Keyword="MFCProj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory=".\Debug"
+			IntermediateDirectory=".\Debug"
+			ConfigurationType="1"
+			UseOfMFC="2"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;ANN_NO_RANDOM;ANN_PERF"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				PrecompiledHeaderThrough="stdafx.h"
+				PrecompiledHeaderFile=".\Debug/sample.pch"
+				AssemblerListingLocation=".\Debug/"
+				ObjectFile=".\Debug/"
+				ProgramDataBaseFileName=".\Debug/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				DebugInformationFormat="4"
+				CompileAs="0"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"
+				OutputFile="..\bin\ann_sample.exe"
+				LinkIncremental="2"
+				SuppressStartupBanner="TRUE"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile=".\Debug/sample.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"
+				TypeLibraryName=".\Debug/sample.tlb"
+				HeaderFileName=""/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="3081"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory=".\Release"
+			IntermediateDirectory=".\Release"
+			ConfigurationType="1"
+			UseOfMFC="2"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				AdditionalIncludeDirectories="..\..\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;ANN_NO_RANDOM"
+				StringPooling="TRUE"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				PrecompiledHeaderThrough="stdafx.h"
+				PrecompiledHeaderFile=".\Release/sample.pch"
+				AssemblerListingLocation=".\Release/"
+				ObjectFile=".\Release/"
+				ProgramDataBaseFileName=".\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				CompileAs="0"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"
+				OutputFile="..\bin\ann_sample.exe"
+				LinkIncremental="1"
+				SuppressStartupBanner="TRUE"
+				ProgramDatabaseFile=".\Release/sample.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"
+				TypeLibraryName=".\Release/sample.tlb"
+				HeaderFileName=""/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="3081"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+			<File
+				RelativePath="..\..\sample\ann_sample.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl">
+		</Filter>
+		<Filter
+			Name="Test Data"
+			Filter="">
+			<File
+				RelativePath="data_pts">
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="query_pts">
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="sample.out">
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="TRUE">
+					<Tool
+						Name="VCCustomBuildTool"/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+		</Filter>
+		<File
+			RelativePath="ReadMe.txt">
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MS_Win32/test/test.vcproj	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="8.00"
+	Name="test"
+	ProjectGUID="{6AC673C7-7B3F-4520-A761-647B212A4BEF}"
+	Keyword="MFCProj"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory=".\Release"
+			IntermediateDirectory=".\Release"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			UseOfMFC="2"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				TypeLibraryName=".\Release/test.tlb"
+				HeaderFileName=""
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				AdditionalIncludeDirectories="..\..\include"
+				PreprocessorDefinitions="NDEBUG;PREP;WIN32;_CONSOLE;ANN_NO_RANDOM"
+				StringPooling="true"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				PrecompiledHeaderThrough="stdafx.h"
+				PrecompiledHeaderFile=".\Release/test.pch"
+				AssemblerListingLocation=".\Release/"
+				ObjectFile=".\Release/"
+				ProgramDataBaseFileName=".\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="3081"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"
+				OutputFile="..\bin\ann_test.exe"
+				LinkIncremental="1"
+				SuppressStartupBanner="true"
+				ProgramDatabaseFile=".\Release/test.pdb"
+				SubSystem="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory=".\Debug"
+			IntermediateDirectory=".\Debug"
+			ConfigurationType="1"
+			InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+			UseOfMFC="2"
+			ATLMinimizesCRunTimeLibraryUsage="false"
+			CharacterSet="2"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+				TypeLibraryName=".\Debug/test.tlb"
+				HeaderFileName=""
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include"
+				PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;ANN_NO_RANDOM;ANN_PERF"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				PrecompiledHeaderThrough="stdafx.h"
+				PrecompiledHeaderFile=".\Debug/test.pch"
+				AssemblerListingLocation=".\Debug/"
+				ObjectFile=".\Debug/"
+				ProgramDataBaseFileName=".\Debug/"
+				WarningLevel="3"
+				SuppressStartupBanner="true"
+				DebugInformationFormat="4"
+				CompileAs="0"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="3081"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"
+				OutputFile="..\bin\ann_test.exe"
+				LinkIncremental="2"
+				SuppressStartupBanner="true"
+				GenerateDebugInformation="true"
+				ProgramDatabaseFile=".\Debug/test.pdb"
+				SubSystem="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCWebDeploymentTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+			>
+			<File
+				RelativePath="..\..\test\ann_test.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\test\rand.cpp"
+				>
+				<FileConfiguration
+					Name="Release|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"
+					/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl"
+			>
+			<File
+				RelativePath="..\..\test\rand.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Test Data"
+			>
+			<File
+				RelativePath="test1.data"
+				>
+			</File>
+			<File
+				RelativePath="test1.in"
+				>
+			</File>
+			<File
+				RelativePath="test1.query"
+				>
+			</File>
+			<File
+				RelativePath="test2.in"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+			>
+		</Filter>
+		<File
+			RelativePath="ReadMe.txt"
+			>
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MS_Win32/test/test.vcproj.7.10.old	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,220 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="test"
+	SccProjectName=""
+	SccLocalPath=""
+	Keyword="MFCProj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory=".\Release"
+			IntermediateDirectory=".\Release"
+			ConfigurationType="1"
+			UseOfMFC="2"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				AdditionalIncludeDirectories="..\..\include"
+				PreprocessorDefinitions="NDEBUG;PREP;WIN32;_CONSOLE;ANN_NO_RANDOM"
+				StringPooling="TRUE"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				PrecompiledHeaderThrough="stdafx.h"
+				PrecompiledHeaderFile=".\Release/test.pch"
+				AssemblerListingLocation=".\Release/"
+				ObjectFile=".\Release/"
+				ProgramDataBaseFileName=".\Release/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"
+				OutputFile="..\bin\ann_test.exe"
+				LinkIncremental="1"
+				SuppressStartupBanner="TRUE"
+				ProgramDatabaseFile=".\Release/test.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"
+				TypeLibraryName=".\Release/test.tlb"
+				HeaderFileName=""/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="NDEBUG"
+				Culture="3081"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory=".\Debug"
+			IntermediateDirectory=".\Debug"
+			ConfigurationType="1"
+			UseOfMFC="2"
+			ATLMinimizesCRunTimeLibraryUsage="FALSE"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\include"
+				PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;ANN_NO_RANDOM;ANN_PERF"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				PrecompiledHeaderThrough="stdafx.h"
+				PrecompiledHeaderFile=".\Debug/test.pch"
+				AssemblerListingLocation=".\Debug/"
+				ObjectFile=".\Debug/"
+				ProgramDataBaseFileName=".\Debug/"
+				WarningLevel="3"
+				SuppressStartupBanner="TRUE"
+				DebugInformationFormat="4"
+				CompileAs="0"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib"
+				OutputFile="..\bin\ann_test.exe"
+				LinkIncremental="2"
+				SuppressStartupBanner="TRUE"
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile=".\Debug/test.pdb"
+				SubSystem="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"
+				TypeLibraryName=".\Debug/test.tlb"
+				HeaderFileName=""/>
+			<Tool
+				Name="VCPostBuildEventTool"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"
+				PreprocessorDefinitions="_DEBUG"
+				Culture="3081"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+			<File
+				RelativePath="..\..\test\ann_test.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+			</File>
+			<File
+				RelativePath="..\..\test\rand.cpp">
+				<FileConfiguration
+					Name="Release|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="2"
+						PreprocessorDefinitions=""
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+				<FileConfiguration
+					Name="Debug|Win32">
+					<Tool
+						Name="VCCLCompilerTool"
+						Optimization="0"
+						AdditionalIncludeDirectories=""
+						PreprocessorDefinitions=""
+						BasicRuntimeChecks="3"
+						UsePrecompiledHeader="0"/>
+				</FileConfiguration>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl">
+			<File
+				RelativePath="..\..\test\rand.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Test Data"
+			Filter="">
+			<File
+				RelativePath="test1.data">
+			</File>
+			<File
+				RelativePath="test1.in">
+			</File>
+			<File
+				RelativePath="test1.query">
+			</File>
+			<File
+				RelativePath="test2.in">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+		</Filter>
+		<File
+			RelativePath="ReadMe.txt">
+		</File>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Make-config	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,194 @@
+#-----------------------------------------------------------------------
+# Makefile variations depending on different configurations
+#
+# ANN: Approximate Nearest Neighbors
+# Version: 1.1 05/03/05
+#
+# (This Make-config structure is based on the one used by Mesa by Brian
+# Paul.  If you succeed in porting ANN to your favorite system, please
+# send email to mount@cs.umd.edu, and I'll try to include it in this
+# list.)
+#
+#----------------------------------------------------------------------
+# The following configuration-dependent variables are passed to each
+# the Makefile in subdirectories:
+#
+# ANNLIB	The name of the ANN library file (usually libANN.a)
+# C++		The C compiler (usually CC or g++)
+# MAKELIB	The command and flags to make a library file (usually
+#			"ar ...")
+# CFLAGS	Flags to C++ compiler
+# RANLIB	For "ranlib" = use ranlib, "true" = don't use ranlib
+#----------------------------------------------------------------------
+# Revision 0.1  09/06/97
+#	Initial release
+# Revision 0.2  06/24/98
+#	Minor changes to fix compilation errors on SGI systems.
+# Revision 1.0  04/01/05
+#	Modifications for alpha with cxx
+#	Removed CFLAGS2 options (just write your own)
+#	Removed -DUSING...  (Compilers are pretty consistent these days)
+#	Added linux-g++ target
+# Revision 1.1  05/03/05
+#	Added macosx-g++ target
+#-----------------------------------------------------------------------------
+
+#-----------------------------------------------------------------------------
+# Compilation options (add these, as desired, to the CFLAGS variable
+# in the desired compilation target below).  For example,
+#
+#	"CFLAGS = -O3 -Wall -DANN_PERF"
+#
+#	-g			Debugging.
+#	-O?			Run-time optimization.
+#	-Wall		Be verbose about warnings.
+#
+#	-DANN_PERF	Enable performance evaluation. (This may slow execution
+#				slightly.)
+#
+#	-DANN_NO_LIMITS_H
+#				Use this if limits.h or float.h does not exist on your
+#				system. (Also see include/ANN/ANN.h for other changes
+#				needed.)
+#
+#	-DANN_NO_RANDOM
+#				Use this option if srandom()/random() are not available
+#				on your system. Pseudo-random number generation is used
+#				in the utility program test/ann_test. The combination
+#				srandom()/random() is considered the best pseudo-random
+#				number generator, but is not available on all systems.
+#				If they are not available on your system (for example,
+#				Visual C++) then srand()/rand() will be used instead by
+#				setting this parameter.
+#
+#	-DWIN32
+#				This is used only for compilation under windows systems
+#				(but instead of using this, use the various .vcproj
+#				files in the MS_WIN32 directory).
+#-----------------------------------------------------------------------------
+
+#					Linux using g++
+linux-g++:
+	$(MAKE) targets \
+	"ANNLIB = libANN.a" \
+	"C++ = g++" \
+	"CFLAGS = -O3" \
+	"MAKELIB = ar ruv" \
+	"RANLIB = true"
+
+#					Mac OS X using g++
+macosx-g++:
+	$(MAKE) targets \
+	"ANNLIB = libANN.a" \
+	"C++ = g++" \
+	"CFLAGS = -O3" \
+	"MAKELIB = libtool -static -o " \
+	"RANLIB = true"
+
+#					SunOS5
+sunos5:
+	$(MAKE) targets \
+	"ANNLIB = libANN.a" \
+	"C++ = CC" \
+	"CFLAGS = -O" \
+	"MAKELIB = ar ruv" \
+	"RANLIB = true"
+
+#					SunOS5 with shared libraries
+sunos5-sl:
+	$(MAKE) targets \
+	"ANNLIB = libANN.a" \
+	"C++ = CC" \
+	"CFLAGS = -Kpic -O" \
+	"MAKELIB = ld -G -o" \
+	"RANLIB = true"
+
+#					SunOS5 with g++
+sunos5-g++:
+	$(MAKE) targets \
+	"ANNLIB = libANN.a" \
+	"C++ = g++" \
+	"CFLAGS = -O3" \
+	"MAKELIB = ar ruv" \
+	"RANLIB = true"
+
+#					SunOS5 with g++ and shared libraries
+sunos5-g++-sl:
+	$(MAKE) targets \
+	"ANNLIB = libANN.so" \
+	"C++ = g++" \
+	"CFLAGS = -fpic -O3" \
+	"MAKELIB = ld -G -o" \
+	"RANLIB = true"
+
+#-----------------------------------------------------------------------
+# Used for the author's testing and debugging only
+#-----------------------------------------------------------------------
+
+#					debugging version for authors
+authors-debug:
+	$(MAKE) targets \
+	"ANNLIB = libANN.a" \
+	"C++ = g++" \
+	"CFLAGS = -g -DANN_PERF -Wall" \
+	"MAKELIB = ar ruv" \
+	"RANLIB = true"
+
+#					performance testing version for authors
+authors-perf:
+	$(MAKE) targets \
+	"ANNLIB = libANN.a" \
+	"C++ = g++" \
+	"CFLAGS = -O3 -DANN_PERF -Wall" \
+	"MAKELIB = ar ruv" \
+	"RANLIB = true"
+
+#-----------------------------------------------------------------------
+# Some older ones that I have not tested with the latest version.
+#-----------------------------------------------------------------------
+
+sgi:
+	$(MAKE) targets \
+	"ANNLIB = libANN.a" \
+	"C++ = CC -ansi" \
+	"CFLAGS = -O2" \
+	"MAKELIB = ar ruv" \
+	"RANLIB = true"
+
+#					DEC Alpha with g++
+alpha-g++:
+	$(MAKE) targets \
+	"ANNLIB = libANN.a" \
+	"C++ = g++" \
+	"CFLAGS = -O3" \
+	"MAKELIB = ar ruv" \
+	"RANLIB = ranlib"
+
+#					SunOS4
+sunos4:
+	$(MAKE) targets \
+	"ANNLIB = libANN.a" \
+	"C++ = CC" \
+	"CFLAGS = -O" \
+	"MAKELIB = ar ruv" \
+	"RANLIB = ranlib"
+
+#					SunOS4 with g++
+sunos4-g++:
+	$(MAKE) targets \
+	"ANNLIB = libANN.a" \
+	"C++ = g++" \
+	"CFLAGS = -O3" \
+	"MAKELIB = ar ruv" \
+	"RANLIB = ranlib"
+
+#					SunOS4 with g++ and shared libraries
+sunos4-g++-sl:
+	$(MAKE) targets \
+	"ANNLIB = libANN.so" \
+	"C++ = g++" \
+	"CC = g++" \
+	"CFLAGS = -fPIC -O3" \
+	"MAKELIB = ld -assert pure-text -o" \
+	"RANLIB = true"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Makefile	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,115 @@
+#-----------------------------------------------------------------------------
+# Top-level Makefile for ANN.
+#
+# ANN: Approximate Nearest Neighbors
+# Version: 1.1 05/03/05
+#-----------------------------------------------------------------------------
+# Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+# David Mount.  All Rights Reserved.
+# 
+# This software and related documentation is part of the Approximate
+# Nearest Neighbor Library (ANN).  This software is provided under
+# the provisions of the Lesser GNU Public License (LGPL).  See the
+# file ../ReadMe.txt for further information.
+# 
+# The University of Maryland (U.M.) and the authors make no
+# representations about the suitability or fitness of this software for
+# any purpose.  It is provided "as is" without express or implied
+# warranty.
+#-----------------------------------------------------------------------------
+# Revision 0.1  09/06/97
+#	alpha release
+# Revision 0.2  06/26/98
+#	Minor changes to fix compilation errors on SGI systems.
+# Revision 1.0  04/01/05
+#	Initial release (finally!)
+#	Added linux-g++ target
+# Revision 1.1  05/03/05
+#	Added macosx-g++ target
+#-----------------------------------------------------------------------------
+
+#-----------------------------------------------------------------------------
+# default: list the options
+# The following legacy targets are also available.
+#	make sunos4		for Sun with SunOS 4.x
+#	make sunos4-g++		for Sun with SunOS 4.x and g++
+#	make alpha-g++		for DEC Alpha and g++
+# The following targets are used for internal development only
+#	make authors-debug	author's debugging
+#	make authors-perf	author's performance evaluations
+#	make distribution	author's generation of distribution file
+#-----------------------------------------------------------------------------
+default:
+	@echo "Enter one of the following:"
+	@echo "  make linux-g++            for Linux and g++"
+	@echo "  make macosx-g++           for Mac OS X and g++"
+	@echo "  make sunos5               for Sun with SunOS 5.x"
+	@echo "  make sunos5-sl            for Sun with SunOS 5.x, make shared libs"
+	@echo "  make sunos5-g++           for Sun with SunOS 5.x and g++"
+	@echo "  make sunos5-g++-sl        for Sun with SunOS 5.x, g++, make shared libs"
+	@echo "  make clean                remove .o files"
+	@echo "  make realclean            remove .o, library and executable files"
+	@echo " "
+	@echo "See file Makefile for other compilation options, such as disabling"
+	@echo "performance measurement code."
+
+#-----------------------------------------------------------------------------
+# main make entry point
+#-----------------------------------------------------------------------------
+alpha-g++ macosx-g++ linux-g++ sgi sunos4 sunos4-g++ sunos5 sunos5-g++ sunos5-g++-sl authors-debug authors-perf:
+	cd src ; $(MAKE) $@
+	cd test ; $(MAKE) $@
+	cd sample ; $(MAKE) $@
+	cd ann2fig ; $(MAKE) $@
+
+#-----------------------------------------------------------------------------
+# Remove .o files and core files
+#-----------------------------------------------------------------------------
+clean:
+	cd src ; $(MAKE) clean
+	cd test ; $(MAKE) clean
+	cd sample ; $(MAKE) clean
+	cd ann2fig ; $(MAKE) clean
+	cd doc ; $(MAKE) clean
+	cd MS_Win32; $(MAKE) clean
+	cd validate ; $(MAKE) clean
+
+#-----------------------------------------------------------------------------
+# Remove everthing that can be remade
+#-----------------------------------------------------------------------------
+realclean: 
+	-rm -f lib/*
+	-rm -f bin/*
+	cd src ; $(MAKE) realclean
+	cd test ; $(MAKE) realclean
+	cd sample ; $(MAKE) realclean
+	cd ann2fig ; $(MAKE) realclean
+	cd doc ; $(MAKE) realclean
+	cd MS_Win32; $(MAKE) realclean
+	cd validate ; $(MAKE) realclean
+
+#-----------------------------------------------------------------------------
+# Make distribution package (for use by authors only)
+#-----------------------------------------------------------------------------
+DISTR = ann_1.1.1
+
+distribution: realclean 
+	cd .. ; mv -f $(DISTR) $(DISTR)-old; mkdir $(DISTR)
+	cp Copyright.txt ../$(DISTR)
+	cp License.txt ../$(DISTR)
+	cp Make-config ../$(DISTR)
+	cp Makefile ../$(DISTR)
+	cp ReadMe.txt ../$(DISTR)
+	cp -r MS_Win32 ../$(DISTR)
+#	cd ..; mv -f $(DISTR)_MS_Win32_bin $(DISTR)_MS_Win32_bin-old
+	cp -r MS_Win32_bin ../$(DISTR)_MS_Win32_bin
+	cp -r bin ../$(DISTR)
+	cp -r include ../$(DISTR)
+	cp -r lib ../$(DISTR)
+	cp -r src ../$(DISTR)
+	cp -r test ../$(DISTR)
+	cp -r sample ../$(DISTR)
+	cp -r ann2fig ../$(DISTR)
+	cd ../$(DISTR); mkdir doc
+	cp doc/*.pdf ../$(DISTR)/doc
+#	cd .. ; tar -cfv $(DISTR).tar $(DISTR) ; gzip $(DISTR).tar
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ReadMe.txt	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,68 @@
+ANN: Approximate Nearest Neighbors
+Version: 1.1.1
+Release date: Aug 4, 2006
+----------------------------------------------------------------------------
+Copyright (c) 1997-2005 University of Maryland and Sunil Arya and David
+Mount. All Rights Reserved.  See Copyright.txt and License.txt for
+complete information on terms and conditions of use and distribution of
+this software.
+----------------------------------------------------------------------------
+
+Authors
+-------
+David Mount
+Dept of Computer Science
+University of Maryland,
+College Park, MD 20742 USA
+mount@cs.umd.edu
+http://www.cs.umd.edu/~mount/
+
+Sunil Arya
+Dept of Computer Science
+Hong University of Science and Technology
+Clearwater Bay, HONG KONG
+arya@cs.ust.hk
+http://www.cs.ust.hk/faculty/arya/
+
+Introduction
+------------
+ANN is a library written in the C++ programming language to support both
+exact and approximate nearest neighbor searching in spaces of various
+dimensions.  It was implemented by David M. Mount of the University of
+Maryland, and Sunil Arya of the Hong Kong University of Science and
+Technology.  ANN (pronounced like the name ``Ann'') stands for
+Approximate Nearest Neighbors.  ANN is also a testbed containing
+programs and procedures for generating data sets, collecting and
+analyzing statistics on the performance of nearest neighbor algorithms
+and data structures, and visualizing the geometric structure of these
+data structures.
+
+The ANN source code and documentation is available from the following
+web page:
+
+    http://www.cs.umd.edu/~mount/ANN
+
+For more information on ANN and its use, see the ``ANN Programming
+Manual,'' which is provided with the software distribution.
+
+----------------------------------------------------------------------------
+History
+  Version 0.1  03/04/98
+    Preliminary release
+  Version 0.2  06/24/98
+    Changes for SGI compiler.
+  Version 1.0  04/01/05
+    Fixed a number of small bugs
+    Added dump/load operations
+    Added annClose to eliminate minor memory leak
+    Improved compatibility with current C++ compilers
+    Added compilation for Microsoft Visual Studio.NET
+    Added compilation for Linux 2.x
+  Version 1.1  05/03/05
+    Added make target for Mac OS X
+    Added fixed-radius range searching and counting
+    Added instructions on compiling/using ANN on Windows platforms
+    Fixed minor output bug in ann2fig
+  Version 1.1.1  08/04/06
+    Added "planted" distribution
+    Updated old source comments for GNU LPL.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ann2fig/Makefile	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,87 @@
+#-----------------------------------------------------------------------------
+# Makefile for ann2fig
+#
+# ANN: Approximate Nearest Neighbors
+# Version: 1.1.1 08/04/06
+#-----------------------------------------------------------------------------
+# Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+# David Mount.  All Rights Reserved.
+# 
+# This software and related documentation is part of the Approximate
+# Nearest Neighbor Library (ANN).  This software is provided under
+# the provisions of the Lesser GNU Public License (LGPL).  See the
+# file ../ReadMe.txt for further information.
+# 
+# The University of Maryland (U.M.) and the authors make no
+# representations about the suitability or fitness of this software for
+# any purpose.  It is provided "as is" without express or implied
+# warranty.
+#-----------------------------------------------------------------------------
+# Revision 0.1  03/04/98
+#	Initial release
+# Revision 1.1.1  08/04/06
+#	Added copyright/license
+#-----------------------------------------------------------------------------
+
+#-----------------------------------------------------------------------------
+# Basic definitions
+#		BASEDIR		where include, src, lib, ... are
+#		INCDIR		include directory
+#		LIBDIR		library directory
+#		BINDIR		bin directory
+#		LDFLAGS		loader flags
+#		ANNLIB		ANN library
+#		OTHERLIB	other libraries
+#-----------------------------------------------------------------------------
+
+BASEDIR	= ..
+INCDIR	= $(BASEDIR)/include
+LIBDIR	= $(BASEDIR)/lib
+BINDIR	= $(BASEDIR)/bin
+LDFLAGS	= -L$(LIBDIR)
+ANNLIBS	= -lANN
+OTHERLIBS = -lm
+
+#-----------------------------------------------------------------------------
+# Some more definitions
+#	ANN2FIG		name of executable
+#-----------------------------------------------------------------------------
+
+ANN2FIG = ann2fig
+SOURCES = ann2fig.cpp
+OBJECTS = $(SOURCES:.cpp=.o)
+
+#-----------------------------------------------------------------------------
+# Make the program
+#-----------------------------------------------------------------------------
+
+default: 
+	@echo "Specify a target configuration"
+
+targets: $(BINDIR)/$(ANN2FIG)
+
+$(BINDIR)/$(ANN2FIG): $(OBJECTS)
+	$(C++) $(OBJECTS) -o $(ANN2FIG) $(LDFLAGS) $(ANNLIBS) $(OTHERLIBS)
+	mv $(ANN2FIG) $(BINDIR)
+
+#-----------------------------------------------------------------------------
+# configuration definitions
+#-----------------------------------------------------------------------------
+
+include ../Make-config
+
+#-----------------------------------------------------------------------------
+# Objects
+#-----------------------------------------------------------------------------
+
+ann2fig.o: ann2fig.cpp
+	$(C++) -c -I$(INCDIR) ann2fig.cpp
+
+#-----------------------------------------------------------------------------
+# Cleaning
+#-----------------------------------------------------------------------------
+
+clean:
+	-rm -f *.o core
+
+realclean: clean
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ann2fig/ann2fig.cpp	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,585 @@
+//----------------------------------------------------------------------
+// File:			ann2fig.cpp
+// Programmer:		David Mount
+// Last modified:	05/03/05
+// Description:		convert ann dump file to fig file
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//	Revision 1.0  04/01/05
+//		Changed dump file suffix from .ann to .dmp.
+//	Revision 1.1  05/03/05
+//		Fixed usage output string.
+//----------------------------------------------------------------------
+//	This program inputs an ann dump file of a search structure
+//	perhaps along with point coordinates, and outputs a fig (Ver 3.1)
+//	file (see fig2dev (1)) displaying the tree.  The fig file may
+//	then be displayed using xfig, or converted to any of a number of
+//	other formats using fig2dev.
+//
+//	If the dimension is 2 then the entire tree is display.  If the
+//	dimension is larger than 2 then the user has the option of
+//	selecting which two dimensions will be displayed, and the slice
+//	value for each of the remaining dimensions.  All leaf cells
+//	intersecting the slice are shown along with the points in these
+//	cells. See the procedure getArgs() below for the command-line
+//	arguments.
+//----------------------------------------------------------------------
+
+#include <cstdio>						// C standard I/O
+#include <fstream>						// file I/O
+#include <string>						// string manipulation
+#include <ANN/ANNx.h>					// all ANN includes
+
+using namespace std;					// make std:: accessible
+
+//----------------------------------------------------------------------
+// Globals and their defaults
+//----------------------------------------------------------------------
+
+const int		STRING_LEN		= 500;	// string lengths
+const int		MAX_DIM			= 1000; // maximum dimension
+const double	DEF_SLICE_VAL	= 0;	// default slice value
+const char		FIG_HEAD[]		= {"#FIG 3.1"}; // fig file header
+const char		DUMP_SUFFIX[]	= {".dmp"};	// suffix for dump file
+const char		FIG_SUFFIX[]	= {".fig"};	// suffix for fig file
+
+char			file_name[STRING_LEN];	// (root) file name (say xxx)
+char			infile_name[STRING_LEN];// input file name (xxx.dmp)
+char			outfile_name[STRING_LEN];// output file name (xxx.fig)
+char			caption[STRING_LEN];	// caption line (= command line)
+ofstream		ofile;					// output file stream
+ifstream		ifile;					// input file stream
+int				dim_x = 0;				// horizontal dimension
+int				dim_y = 1;				// vertical dimension
+double			slice_val[MAX_DIM];		// array of slice values
+double			u_per_in = 1200;		// fig units per inch (version 3.1)
+double			in_size = 5;			// size of figure (in inches)
+double			in_low_x = 1;			// fig upper left corner (in inches)
+double			in_low_y = 1;			// fig upper left corner (in inches)
+double			u_size = 6000;			// size of figure (in units)
+double			u_low_x = 1200;			// fig upper left corner (in units)
+double			u_low_y = 1200;			// fig upper left corner (in units)
+int				pt_size = 10;			// point size (in fig units)
+
+int				dim;					// dimension
+int				n_pts;					// number of points
+ANNpointArray	pts = NULL;				// point array
+
+double			scale;					// scale factor for transformation
+double			offset_x;				// offsets for transformation
+double			offset_y;
+
+										// transformations
+#define TRANS_X(p)		(offset_x + scale*(p[dim_x]))
+#define TRANS_Y(p)		(offset_y - scale*(p[dim_y]))
+
+//----------------------------------------------------------------------
+//	Error handler
+//----------------------------------------------------------------------
+
+void Error(char *msg, ANNerr level)
+{
+	if (level == ANNabort) {
+		cerr << "ann2fig: ERROR------->" << msg << "<-------------ERROR\n";
+		exit(1);
+	}
+	else {
+		cerr << "ann2fig: WARNING----->" << msg << "<-------------WARNING\n";
+	}
+}
+
+//----------------------------------------------------------------------
+// set_slice_val - set all slice values to given value
+//----------------------------------------------------------------------
+
+void set_slice_val(double val)
+{
+	for (int i = 0; i < MAX_DIM; i++) {
+		slice_val[i] = val;
+	}
+}
+
+//----------------------------------------------------------------------
+// getArgs - get input arguments
+//
+//		Syntax:
+//		ann2fig [-upi scale] [-x low_x] [-y low_y] 
+//				[-sz size] [-dx dim_x] [-dy dim_y] [-sl dim value]*
+//				[-ps pointsize]
+//				file
+//		
+//		where:
+//			-upi scale			fig units per inch (default = 1200)
+//			-x low_x			x and y offset of upper left corner (inches)
+//			-y low_y			...(default = 1)
+//			-sz size			maximum side length of figure (in inches)
+//								...(default = 5)
+//			-dx dim_x			horizontal dimension (default = 0)
+//			-dy dim_y			vertical dimension (default = 1)
+//			-sv value			default slice value (default = 0)
+//			-sl dim value		each such pair defines the value along the
+//								...given dimension at which to slice.  This
+//								...may be supplied for all dimensions except
+//								...dim_x and dim_y.
+//			-ps pointsize		size of points in fig units (def = 10)
+//			file				file (input=file.dmp, output=file.fig)
+//
+//----------------------------------------------------------------------
+
+void getArgs(int argc, char **argv)
+{
+	int i;
+	int sl_dim;									// temp slice dimension
+	double sl_val;								// temp slice value
+
+	set_slice_val(DEF_SLICE_VAL);				// set initial slice-values
+
+	if (argc <= 1) {
+		cerr << "Syntax:\n\
+        ann2fig [-upi scale] [-x low_x] [-y low_y]\n\
+                [-sz size] [-dx dim_x] [-dy dim_y] [-sl dim value]*\n\
+                file\n\
+        \n\
+        where:\n\
+            -upi scale          fig units per inch (default = 1200)\n\
+            -x low_x            x and y offset of upper left corner (inches)\n\
+            -y low_y            ...(default = 1)\n\
+            -sz size            maximum side length of figure (in inches)\n\
+                                ...(default = 5)\n\
+            -dx dim_x           horizontal dimension (default = 0)\n\
+            -dy dim_y           vertical dimension (default = 1)\n\
+            -sv value           default slice value (default = 0)\n\
+            -sl dim value       each such pair defines the value along the\n\
+                                ...given dimension at which to slice.  This\n\
+                                ...may be supplied for each dimension except\n\
+                                ...dim_x and dim_y.\n\
+            -ps pointsize       size of points in fig units (def = 10)\n\
+            file                file (input=file.dmp, output=file.fig)\n";
+		exit(0);
+	}
+
+	ANNbool fileSeen = ANNfalse;				// file argument seen?
+
+	for (i = 1; i < argc; i++) {
+		if (!strcmp(argv[i], "-upi")) {			// process -upi option
+			sscanf(argv[++i], "%lf", &u_per_in);
+		}
+		else if (!strcmp(argv[i], "-x")) {		// process -x option
+			sscanf(argv[++i], "%lf", &in_low_x);
+		}
+		else if (!strcmp(argv[i], "-y")) {		// process -y option
+			sscanf(argv[++i], "%lf", &in_low_y);
+		}
+		else if (!strcmp(argv[i], "-sz")) {		// process -sz option
+			sscanf(argv[++i], "%lf", &in_size);
+		}
+		else if (!strcmp(argv[i], "-dx")) {		// process -dx option
+			sscanf(argv[++i], "%d", &dim_x);
+		}
+		else if (!strcmp(argv[i], "-dy")) {		// process -dy option
+			sscanf(argv[++i], "%d", &dim_y);
+		}
+		else if (!strcmp(argv[i], "-sv")) {		// process -sv option
+			sscanf(argv[++i], "%lf", &sl_val);
+			set_slice_val(sl_val);				// set slice values
+		}
+		else if (!strcmp(argv[i], "-sl")) {		// process -sl option
+			sscanf(argv[++i], "%d", &sl_dim);
+			if (sl_dim < 0 || sl_dim >= MAX_DIM) {
+				Error("Slice dimension out of bounds", ANNabort);
+			}
+			sscanf(argv[++i], "%lf", &slice_val[sl_dim]);
+		}
+		if (!strcmp(argv[i], "-ps")) {			// process -ps option
+			sscanf(argv[++i], "%i", &pt_size);
+		}
+		else {									// must be file name
+			fileSeen = ANNtrue;
+			sscanf(argv[i], "%s", file_name);
+			strcpy(infile_name, file_name);		// copy to input file name
+	    	strcat(infile_name, DUMP_SUFFIX);
+	    	strcpy(outfile_name, file_name);	// copy to output file name
+	    	strcat(outfile_name, FIG_SUFFIX);
+		}
+	}
+
+	if (!fileSeen) {							// no file seen
+		Error("File argument is required", ANNabort);
+	}
+
+	ifile.open(infile_name, ios::in);			// open for reading
+	if (!ifile) {
+		Error("Cannot open input file", ANNabort);
+	}
+	ofile.open(outfile_name, ios::out);			// open for writing
+	if (!ofile) {
+		Error("Cannot open output file", ANNabort);
+	}
+
+	u_low_x = u_per_in * in_low_x;				// convert inches to fig units
+	u_low_y = u_per_in * in_low_y;
+	u_size  = u_per_in * in_size;
+
+	strcpy(caption, argv[0]);					// copy command line to caption
+	for (i = 1; i < argc; i++) {
+		strcat(caption, " ");
+		strcat(caption, argv[i]);
+	}
+}
+
+//----------------------------------------------------------------------
+// Graphics utilities for fig output
+//
+//		writeHeader				write header for fig file
+//		writePoint				write a point
+//		writeBox				write a box
+//		writeLine				write a line
+//----------------------------------------------------------------------
+
+void writeHeader()
+{
+	ofile << FIG_HEAD << "\n"					// fig file header
+		 << "Portrait\n"
+		 << "Center\n"
+		 << "Inches\n"
+		 << (int) u_per_in << " 2\n";
+}
+
+void writePoint(ANNpoint p)						// write a single point
+{
+												// filled black point object
+	ofile << "1 3 0 1 -1 7 0 0 0 0.000 1 0.0000 ";
+	int cent_x = (int) TRANS_X(p);				// transform center coords
+	int cent_y = (int) TRANS_Y(p);
+	ofile << cent_x << " " << cent_y << " "		// write center, radius, bounds
+		 << pt_size << " " << pt_size << " "
+		 << cent_x << " " << cent_y << " "
+		 << cent_x + pt_size << " " << cent_y + pt_size << "\n";
+}
+
+void writeBox(const ANNorthRect &r)				// write box
+{
+												// unfilled box object
+	ofile << "2 2 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 5\n";
+
+	int p0_x = (int) TRANS_X(r.lo);				// transform endpoints
+	int p0_y = (int) TRANS_Y(r.lo);
+	int p1_x = (int) TRANS_X(r.hi);
+	int p1_y = (int) TRANS_Y(r.hi);
+	ofile << "\t"
+		 << p0_x << " " << p0_y << " "			// write vertices
+		 << p1_x << " " << p0_y << " "
+		 << p1_x << " " << p1_y << " "
+		 << p0_x << " " << p1_y << " "
+		 << p0_x << " " << p0_y << "\n";
+}
+
+void writeLine(ANNpoint p0, ANNpoint p1)		// write line
+{
+												// unfilled line object
+	ofile << "2 1 0 1 -1 7 0 0 -1 0.000 0 0 -1 0 0 2\n";
+
+	int p0_x = (int) TRANS_X(p0);				// transform endpoints
+	int p0_y = (int) TRANS_Y(p0);
+	int p1_x = (int) TRANS_X(p1);
+	int p1_y = (int) TRANS_Y(p1);
+	ofile << "\t"
+		 << p0_x << " " << p0_y << " "			// write vertices
+		 << p1_x << " " << p1_y << "\n";
+}
+
+void writeCaption(								// write caption text
+	const ANNorthRect	&bnd_box,				// bounding box
+	char				*caption)				// caption
+{
+	if (!strcmp(caption, "\0")) return;			// null string?
+	int px = (int) TRANS_X(bnd_box.lo);			// put .5 in. lower left
+	int py = (int) (TRANS_Y(bnd_box.lo) + 0.50 * u_per_in); 
+	ofile << "4 0 -1 0 0 0 20 0.0000 4 255 2000 ";
+	ofile << px << " " << py << " " << caption << "\\001\n";
+}
+
+//----------------------------------------------------------------------
+// overlap - test whether a box overlap slicing region
+//
+//		The slicing region is a 2-dimensional plane in space
+//		which contains points (x1, x2, ..., xn) satisfying the
+//		n-2 linear equalities:
+//
+//						xi == slice_val[i]		for i != dim_x, dim_y
+//
+//		This procedure returns true of the box defined by
+//		corner points box.lo and box.hi overlap this plane.
+//----------------------------------------------------------------------
+
+ANNbool overlap(const ANNorthRect &box)
+{
+	for (int i = 0; i < dim; i++) {
+		if (i != dim_x && i != dim_y &&
+		   (box.lo[i] > slice_val[i] || box.hi[i] < slice_val[i]))
+			return ANNfalse;
+	}
+	return ANNtrue;
+}
+
+//----------------------------------------------------------------------
+// readTree, recReadTree - inputs tree and outputs figure
+//
+//		readTree procedure initializes things and then calls recReadTree
+//		which does all the work.
+//
+//		recReadTree reads in a node of the tree, makes any recursive
+//		calls as needed to input the children of this node (if internal)
+//		and maintains the bounding box.  Note that the bounding box
+//		is modified within this procedure, but it is the responsibility
+//		of the procedure that it be restored to its original value
+//		on return.
+//
+//		Recall that these are the formats.  The tree is given in
+//		preorder.
+//
+//		Leaf node:
+//				leaf <n_pts> <bkt[0]> <bkt[1]> ... <bkt[n-1]>
+//		Splitting nodes:
+//				split <cut_dim> <cut_val> <lo_bound> <hi_bound>
+//		Shrinking nodes:
+//				shrink <n_bnds>
+//						<cut_dim> <cut_val> <side>
+//						<cut_dim> <cut_val> <side>
+//						... (repeated n_bnds times)
+//
+//		On reading a leaf we determine whether we should output the
+//		cell's points (if dimension = 2 or this cell overlaps the
+//		slicing region).  For splitting nodes we check whether the
+//		current cell overlaps the slicing plane and whether the
+//		cutting dimension coincides with either the x or y drawing
+//		dimensions.  If so, we output the corresponding splitting
+//		segment.
+//----------------------------------------------------------------------
+
+void recReadTree(ANNorthRect &box)
+{
+	char tag[STRING_LEN];						// tag (leaf, split, shrink)
+	int n_pts;									// number of points in leaf
+	int idx;									// point index
+	int cd;										// cut dimension
+	ANNcoord cv;								// cut value
+	ANNcoord lb;								// low bound
+	ANNcoord hb;								// high bound
+	int n_bnds;									// number of bounding sides
+	int sd;										// which side
+
+	ifile >> tag;								// input node tag
+	if (strcmp(tag, "leaf") == 0) {				// leaf node
+
+		ifile >> n_pts;							// input number of points
+												// check for overlap
+		if (dim == 2 || overlap(box)) { 
+			for (int i = 0; i < n_pts; i++) {	// yes, write the points
+				ifile >> idx;
+				writePoint(pts[idx]);
+			}
+		}
+		else {									// input but ignore points
+			for (int i = 0; i < n_pts; i++) {
+				ifile >> idx;
+			}
+		}
+	}
+	else if (strcmp(tag, "split") == 0) {		// splitting node
+
+		ifile >> cd >> cv >> lb >> hb;
+		if (lb != box.lo[cd] || hb != box.hi[cd]) {
+			Error("Bounding box coordinates are fishy", ANNwarn);
+		}
+
+		ANNcoord lv = box.lo[cd];				// save bounds for cutting dim
+		ANNcoord hv = box.hi[cd];
+
+		//--------------------------------------------------------------
+		//	The following code is rather fragile so modify at your
+		//	own risk.  We first decrease the high-end of the bounding
+		//	box down to the cutting plane and then read the left subtree.
+		//	Then we increase the low-end of the bounding box up to the
+		//	cutting plane (thus collapsing the bounding box to a d-1
+		//	dimensional hyperrectangle).  Then we draw the projection of
+		//	its diagonal if it crosses the slicing plane.  This will have
+		//	the effect of drawing its intersection on the slicing plane.
+		//	Then we restore the high-end of the bounding box and read
+		//	the right subtree.  Finally we restore the low-end of the
+		//	bounding box, before returning.
+		//--------------------------------------------------------------
+		box.hi[cd] = cv;						// decrease high bounds
+		recReadTree(box);						// read left subtree
+												// check for overlap
+		box.lo[cd] = cv;						// increase low bounds
+		if (dim == 2 || overlap(box)) {			// check for overlap
+			if (cd == dim_x || cd == dim_y) {	// cut through slice plane
+				writeLine(box.lo, box.hi);		// draw cutting line
+			}
+		}
+		box.hi[cd] = hv;						// restore high bounds
+
+		recReadTree(box);						// read right subtree
+		box.lo[cd] = lv;						// restore low bounds
+	}
+	else if (strcmp(tag, "shrink") == 0) {		// splitting node
+
+		ANNorthRect inner(dim, box);			// copy bounding box
+		ifile >> n_bnds;						// number of bounding sides
+		for (int i = 0; i < n_bnds; i++) {
+			ifile >> cd >> cv >> sd;			// input bounding halfspace
+			ANNorthHalfSpace hs(cd, cv, sd);	// create orthogonal halfspace
+			hs.project(inner.lo);				// intersect by projecting
+			hs.project(inner.hi);
+		}
+		if (dim == 2 || overlap(inner)) {
+			writeBox(inner);					// draw inner rectangle
+		}
+		recReadTree(inner);						// read inner subtree
+		recReadTree(box);						// read outer subtree
+	}
+	else {
+		Error("Illegal node type in dump file", ANNabort);
+	}
+}
+
+void readTree(ANNorthRect &bnd_box)
+{
+	writeHeader();								// output header
+	writeBox(bnd_box);							// draw bounding box
+	writeCaption(bnd_box, caption);				// write caption
+	recReadTree(bnd_box);						// do it
+}
+
+//----------------------------------------------------------------------
+// readANN - read the ANN dump file
+//
+//		This procedure reads in the dump file.  See the format below.
+//		It first reads the header line with version number.  If the
+//		points section is present it reads them (otherwise just leaves
+//		points = NULL), and then it reads the tree section.  It inputs
+//		the bounding box and determines the parameters for transforming
+//		the image to figure units.  It then invokes the procedure
+//		readTree to do all the real work.
+//
+//		Dump File Format: <xxx> = coordinate value (ANNcoord)
+//
+//		#ANN <version number> <comments> [END_OF_LINE]
+//		points <dim> <n_pts>			(point coordinates: this is optional)
+//		0 <xxx> <xxx> ... <xxx>			(point indices and coordinates)
+//		1 <xxx> <xxx> ... <xxx>
+//		  ...
+//		tree <dim> <n_pts> <bkt_size>
+//		<xxx> <xxx> ... <xxx>			(lower end of bounding box)
+//		<xxx> <xxx> ... <xxx>			(upper end of bounding box)
+//				If the tree is null, then a single line "null" is
+//				output.  Otherwise the nodes of the tree are printed
+//				one per line in preorder.  Leaves and splitting nodes 
+//				have the following formats:
+//		Leaf node:
+//				leaf <n_pts> <bkt[0]> <bkt[1]> ... <bkt[n-1]>
+//		Splitting nodes:
+//				split <cut_dim> <cut_val> <lo_bound> <hi_bound>
+//		Shrinking nodes:
+//				shrink <n_bnds>
+//						<cut_dim> <cut_val> <side>
+//						<cut_dim> <cut_val> <side>
+//						... (repeated n_bnds times)
+//
+//		Note: Infinite lo_ and hi_bounds are printed as the special
+//				values "-INF" and "+INF", respectively.  We do not
+//				check for this, because the current version of ANN
+//				starts with a finite bounding box if the tree is
+//				nonempty.
+//----------------------------------------------------------------------
+
+void readANN()
+{
+	int j;
+	char str[STRING_LEN];						// storage for string
+    char version[STRING_LEN];					// storage for version
+	int  bkt_size;								// bucket size
+
+	ifile >> str;								// input header
+	if (strcmp(str, "#ANN") != 0) {				// incorrect header
+		Error("Incorrect header for dump file", ANNabort);
+	}
+    ifile.getline(version, STRING_LEN);			// get version (ignore)
+	ifile >> str;								// get major heading
+	if (strcmp(str, "points") == 0) {			// points section
+		ifile >> dim;							// read dimension
+		ifile >> n_pts;							// number of points
+		pts = annAllocPts(n_pts, dim);			// allocate points
+		for (int i = 0; i < n_pts; i++) {		// input point coordinates
+			int idx;							// point index
+			ifile >> idx;						// input point index
+			if (idx < 0 || idx >= n_pts) {
+				Error("Point index is out of range", ANNabort);
+			}
+			for (j = 0; j < dim; j++) {
+				ifile >> pts[idx][j];			// read point coordinates
+			}
+		}
+		ifile >> str;							// get next major heading
+	}
+	if (strcmp(str, "tree") == 0) {				// tree section
+		ifile >> dim;							// read dimension
+		if (dim_x > dim || dim_y > dim) {
+			Error("Dimensions out of bounds", ANNabort);
+		}
+		ifile >> n_pts;							// number of points
+		ifile >> bkt_size;						// bucket size (ignored)
+												// read bounding box
+		ANNorthRect bnd_box(dim);				// create bounding box
+		for (j = 0; j < dim; j++) {
+			ifile >> bnd_box.lo[j];				// read box low coordinates
+		}
+		for (j = 0; j < dim; j++) {
+			ifile >> bnd_box.hi[j];				// read box high coordinates
+		}
+												// compute scaling factors
+		double box_len_x = bnd_box.hi[dim_x] - bnd_box.lo[dim_x];
+		double box_len_y = bnd_box.hi[dim_y] - bnd_box.lo[dim_y];
+												// longer side determines scale
+		if (box_len_x > box_len_y) scale = u_size/box_len_x;
+		else					   scale = u_size/box_len_y;
+												// compute offsets
+		offset_x = u_low_x - scale*bnd_box.lo[dim_x];
+		offset_y = u_low_y + scale*bnd_box.hi[dim_y];
+		readTree(bnd_box);						// read the tree and process
+	}
+	else if (strcmp(str, "null") == 0) return;	// empty tree
+	else {
+		cerr << "Input string: " << str << "\n";
+		Error("Illegal ann format.  Expecting section heading", ANNabort);
+	}
+}
+
+//----------------------------------------------------------------------
+// Main program
+//
+// Gets the command-line arguments and invokes the main scanning
+// procedure.
+//----------------------------------------------------------------------
+
+main(int argc, char **argv)
+{
+	getArgs(argc, argv);						// get input arguments
+	readANN();									// read the dump file
+}
Binary file doc/ANNmanual.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/include/ANN/ANN.h	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,826 @@
+//----------------------------------------------------------------------
+// File:			ANN.h
+// Programmer:		Sunil Arya and David Mount
+// Last modified:	05/03/05 (Release 1.1)
+// Description:		Basic include file for approximate nearest
+//					neighbor searching.
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//	Revision 1.0  04/01/05
+//		Added copyright and revision information
+//		Added ANNcoordPrec for coordinate precision.
+//		Added methods theDim, nPoints, maxPoints, thePoints to ANNpointSet.
+//		Cleaned up C++ structure for modern compilers
+//	Revision 1.1  05/03/05
+//		Added fixed-radius k-NN searching
+//----------------------------------------------------------------------
+
+//----------------------------------------------------------------------
+// ANN - approximate nearest neighbor searching
+//	ANN is a library for approximate nearest neighbor searching,
+//	based on the use of standard and priority search in kd-trees
+//	and balanced box-decomposition (bbd) trees. Here are some
+//	references to the main algorithmic techniques used here:
+//
+//		kd-trees:
+//			Friedman, Bentley, and Finkel, ``An algorithm for finding
+//				best matches in logarithmic expected time,'' ACM
+//				Transactions on Mathematical Software, 3(3):209-226, 1977.
+//
+//		Priority search in kd-trees:
+//			Arya and Mount, ``Algorithms for fast vector quantization,''
+//				Proc. of DCC '93: Data Compression Conference, eds. J. A.
+//				Storer and M. Cohn, IEEE Press, 1993, 381-390.
+//
+//		Approximate nearest neighbor search and bbd-trees:
+//			Arya, Mount, Netanyahu, Silverman, and Wu, ``An optimal
+//				algorithm for approximate nearest neighbor searching,''
+//				5th Ann. ACM-SIAM Symposium on Discrete Algorithms,
+//				1994, 573-582.
+//----------------------------------------------------------------------
+
+#ifndef ANN_H
+#define ANN_H
+
+#ifdef WIN32
+  //----------------------------------------------------------------------
+  // For Microsoft Visual C++, externally accessible symbols must be
+  // explicitly indicated with DLL_API, which is somewhat like "extern."
+  //
+  // The following ifdef block is the standard way of creating macros
+  // which make exporting from a DLL simpler. All files within this DLL
+  // are compiled with the DLL_EXPORTS preprocessor symbol defined on the
+  // command line. In contrast, projects that use (or import) the DLL
+  // objects do not define the DLL_EXPORTS symbol. This way any other
+  // project whose source files include this file see DLL_API functions as
+  // being imported from a DLL, wheras this DLL sees symbols defined with
+  // this macro as being exported.
+  //----------------------------------------------------------------------
+  #ifdef DLL_EXPORTS
+	 #define DLL_API __declspec(dllexport)
+  #else
+	#define DLL_API __declspec(dllimport)
+  #endif
+  //----------------------------------------------------------------------
+  // DLL_API is ignored for all other systems
+  //----------------------------------------------------------------------
+#else
+  #define DLL_API
+#endif
+
+//----------------------------------------------------------------------
+//  basic includes
+//----------------------------------------------------------------------
+
+#include <cmath>			// math includes
+#include <iostream>			// I/O streams
+
+//----------------------------------------------------------------------
+// Limits
+// There are a number of places where we use the maximum double value as
+// default initializers (and others may be used, depending on the
+// data/distance representation). These can usually be found in limits.h
+// (as LONG_MAX, INT_MAX) or in float.h (as DBL_MAX, FLT_MAX).
+//
+// Not all systems have these files.  If you are using such a system,
+// you should set the preprocessor symbol ANN_NO_LIMITS_H when
+// compiling, and modify the statements below to generate the
+// appropriate value. For practical purposes, this does not need to be
+// the maximum double value. It is sufficient that it be at least as
+// large than the maximum squared distance between between any two
+// points.
+//----------------------------------------------------------------------
+#ifdef ANN_NO_LIMITS_H					// limits.h unavailable
+  #include <cvalues>					// replacement for limits.h
+  const double ANN_DBL_MAX = MAXDOUBLE;	// insert maximum double
+#else
+  #include <climits>
+  #include <cfloat>
+  const double ANN_DBL_MAX = DBL_MAX;
+#endif
+
+#define ANNversion 		"1.1.1"			// ANN version and information
+#define ANNversionCmt	""
+#define ANNcopyright	"David M. Mount and Sunil Arya"
+#define ANNlatestRev	"Aug 4, 2006"
+
+//----------------------------------------------------------------------
+//	ANNbool
+//	This is a simple boolean type. Although ANSI C++ is supposed
+//	to support the type bool, some compilers do not have it.
+//----------------------------------------------------------------------
+
+enum ANNbool {ANNfalse = 0, ANNtrue = 1}; // ANN boolean type (non ANSI C++)
+
+//----------------------------------------------------------------------
+//	ANNcoord, ANNdist
+//		ANNcoord and ANNdist are the types used for representing
+//		point coordinates and distances.  They can be modified by the
+//		user, with some care.  It is assumed that they are both numeric
+//		types, and that ANNdist is generally of an equal or higher type
+//		from ANNcoord.	A variable of type ANNdist should be large
+//		enough to store the sum of squared components of a variable
+//		of type ANNcoord for the number of dimensions needed in the
+//		application.  For example, the following combinations are
+//		legal:
+//
+//		ANNcoord		ANNdist
+//		---------		-------------------------------
+//		short			short, int, long, float, double
+//		int				int, long, float, double
+//		long			long, float, double
+//		float			float, double
+//		double			double
+//
+//		It is the user's responsibility to make sure that overflow does
+//		not occur in distance calculation.
+//----------------------------------------------------------------------
+
+typedef double	ANNcoord;				// coordinate data type
+typedef double	ANNdist;				// distance data type
+
+//----------------------------------------------------------------------
+//	ANNidx
+//		ANNidx is a point index.  When the data structure is built, the
+//		points are given as an array.  Nearest neighbor results are
+//		returned as an integer index into this array.  To make it
+//		clearer when this is happening, we define the integer type
+//		ANNidx.	 Indexing starts from 0.
+//		
+//		For fixed-radius near neighbor searching, it is possible that
+//		there are not k nearest neighbors within the search radius.  To
+//		indicate this, the algorithm returns ANN_NULL_IDX as its result.
+//		It should be distinguishable from any valid array index.
+//----------------------------------------------------------------------
+
+typedef int		ANNidx;					// point index
+const ANNidx	ANN_NULL_IDX = -1;		// a NULL point index
+
+//----------------------------------------------------------------------
+//	Infinite distance:
+//		The code assumes that there is an "infinite distance" which it
+//		uses to initialize distances before performing nearest neighbor
+//		searches.  It should be as larger or larger than any legitimate
+//		nearest neighbor distance.
+//
+//		On most systems, these should be found in the standard include
+//		file <limits.h> or possibly <float.h>.  If you do not have these
+//		file, some suggested values are listed below, assuming 64-bit
+//		long, 32-bit int and 16-bit short.
+//
+//		ANNdist ANN_DIST_INF	Values (see <limits.h> or <float.h>)
+//		------- ------------	------------------------------------
+//		double	DBL_MAX			1.79769313486231570e+308
+//		float	FLT_MAX			3.40282346638528860e+38
+//		long	LONG_MAX		0x7fffffffffffffff
+//		int		INT_MAX			0x7fffffff
+//		short	SHRT_MAX		0x7fff
+//----------------------------------------------------------------------
+
+const ANNdist	ANN_DIST_INF = ANN_DBL_MAX;
+
+//----------------------------------------------------------------------
+//	Significant digits for tree dumps:
+//		When floating point coordinates are used, the routine that dumps
+//		a tree needs to know roughly how many significant digits there
+//		are in a ANNcoord, so it can output points to full precision.
+//		This is defined to be ANNcoordPrec.  On most systems these
+//		values can be found in the standard include files <limits.h> or
+//		<float.h>.  For integer types, the value is essentially ignored.
+//
+//		ANNcoord ANNcoordPrec	Values (see <limits.h> or <float.h>)
+//		-------- ------------	------------------------------------
+//		double	 DBL_DIG		15
+//		float	 FLT_DIG		6
+//		long	 doesn't matter 19
+//		int		 doesn't matter 10
+//		short	 doesn't matter 5
+//----------------------------------------------------------------------
+
+#ifdef DBL_DIG							// number of sig. bits in ANNcoord
+	const int	 ANNcoordPrec	= DBL_DIG;
+#else
+	const int	 ANNcoordPrec	= 15;	// default precision
+#endif
+
+//----------------------------------------------------------------------
+// Self match?
+//	In some applications, the nearest neighbor of a point is not
+//	allowed to be the point itself. This occurs, for example, when
+//	computing all nearest neighbors in a set.  By setting the
+//	parameter ANN_ALLOW_SELF_MATCH to ANNfalse, the nearest neighbor
+//	is the closest point whose distance from the query point is
+//	strictly positive.
+//----------------------------------------------------------------------
+
+const ANNbool	ANN_ALLOW_SELF_MATCH	= ANNtrue;
+
+//----------------------------------------------------------------------
+//	Norms and metrics:
+//		ANN supports any Minkowski norm for defining distance.  In
+//		particular, for any p >= 1, the L_p Minkowski norm defines the
+//		length of a d-vector (v0, v1, ..., v(d-1)) to be
+//
+//				(|v0|^p + |v1|^p + ... + |v(d-1)|^p)^(1/p),
+//
+//		(where ^ denotes exponentiation, and |.| denotes absolute
+//		value).  The distance between two points is defined to be the
+//		norm of the vector joining them.  Some common distance metrics
+//		include
+//
+//				Euclidean metric		p = 2
+//				Manhattan metric		p = 1
+//				Max metric				p = infinity
+//
+//		In the case of the max metric, the norm is computed by taking
+//		the maxima of the absolute values of the components.  ANN is
+//		highly "coordinate-based" and does not support general distances
+//		functions (e.g. those obeying just the triangle inequality).  It
+//		also does not support distance functions based on
+//		inner-products.
+//
+//		For the purpose of computing nearest neighbors, it is not
+//		necessary to compute the final power (1/p).  Thus the only
+//		component that is used by the program is |v(i)|^p.
+//
+//		ANN parameterizes the distance computation through the following
+//		macros.  (Macros are used rather than procedures for
+//		efficiency.) Recall that the distance between two points is
+//		given by the length of the vector joining them, and the length
+//		or norm of a vector v is given by formula:
+//
+//				|v| = ROOT(POW(v0) # POW(v1) # ... # POW(v(d-1)))
+//
+//		where ROOT, POW are unary functions and # is an associative and
+//		commutative binary operator mapping the following types:
+//
+//			**	POW:	ANNcoord				--> ANNdist
+//			**	#:		ANNdist x ANNdist		--> ANNdist
+//			**	ROOT:	ANNdist (>0)			--> double
+//
+//		For early termination in distance calculation (partial distance
+//		calculation) we assume that POW and # together are monotonically
+//		increasing on sequences of arguments, meaning that for all
+//		v0..vk and y:
+//
+//		POW(v0) #...# POW(vk) <= (POW(v0) #...# POW(vk)) # POW(y).
+//
+//	Incremental Distance Calculation:
+//		The program uses an optimized method of computing distances for
+//		kd-trees and bd-trees, called incremental distance calculation.
+//		It is used when distances are to be updated when only a single
+//		coordinate of a point has been changed.  In order to use this,
+//		we assume that there is an incremental update function DIFF(x,y)
+//		for #, such that if:
+//
+//					s = x0 # ... # xi # ... # xk 
+//
+//		then if s' is equal to s but with xi replaced by y, that is, 
+//		
+//					s' = x0 # ... # y # ... # xk
+//
+//		then the length of s' can be computed by:
+//
+//					|s'| = |s| # DIFF(xi,y).
+//
+//		Thus, if # is + then DIFF(xi,y) is (yi-x).  For the L_infinity
+//		norm we make use of the fact that in the program this function
+//		is only invoked when y > xi, and hence DIFF(xi,y)=y.
+//
+//		Finally, for approximate nearest neighbor queries we assume
+//		that POW and ROOT are related such that
+//
+//					v*ROOT(x) = ROOT(POW(v)*x)
+//
+//		Here are the values for the various Minkowski norms:
+//
+//		L_p:	p even:							p odd:
+//				-------------------------		------------------------
+//				POW(v)			= v^p			POW(v)			= |v|^p
+//				ROOT(x)			= x^(1/p)		ROOT(x)			= x^(1/p)
+//				#				= +				#				= +
+//				DIFF(x,y)		= y - x			DIFF(x,y)		= y - x 
+//
+//		L_inf:
+//				POW(v)			= |v|
+//				ROOT(x)			= x
+//				#				= max
+//				DIFF(x,y)		= y
+//
+//		By default the Euclidean norm is assumed.  To change the norm,
+//		uncomment the appropriate set of macros below.
+//----------------------------------------------------------------------
+
+//----------------------------------------------------------------------
+//	Use the following for the Euclidean norm
+//----------------------------------------------------------------------
+#define ANN_POW(v)			((v)*(v))
+#define ANN_ROOT(x)			sqrt(x)
+#define ANN_SUM(x,y)		((x) + (y))
+#define ANN_DIFF(x,y)		((y) - (x))
+
+//----------------------------------------------------------------------
+//	Use the following for the L_1 (Manhattan) norm
+//----------------------------------------------------------------------
+// #define ANN_POW(v)		fabs(v)
+// #define ANN_ROOT(x)		(x)
+// #define ANN_SUM(x,y)		((x) + (y))
+// #define ANN_DIFF(x,y)	((y) - (x))
+
+//----------------------------------------------------------------------
+//	Use the following for a general L_p norm
+//----------------------------------------------------------------------
+// #define ANN_POW(v)		pow(fabs(v),p)
+// #define ANN_ROOT(x)		pow(fabs(x),1/p)
+// #define ANN_SUM(x,y)		((x) + (y))
+// #define ANN_DIFF(x,y)	((y) - (x))
+
+//----------------------------------------------------------------------
+//	Use the following for the L_infinity (Max) norm
+//----------------------------------------------------------------------
+// #define ANN_POW(v)		fabs(v)
+// #define ANN_ROOT(x)		(x)
+// #define ANN_SUM(x,y)		((x) > (y) ? (x) : (y))
+// #define ANN_DIFF(x,y)	(y)
+
+//----------------------------------------------------------------------
+//	Array types
+//		The following array types are of basic interest.  A point is
+//		just a dimensionless array of coordinates, a point array is a
+//		dimensionless array of points.  A distance array is a
+//		dimensionless array of distances and an index array is a
+//		dimensionless array of point indices.  The latter two are used
+//		when returning the results of k-nearest neighbor queries.
+//----------------------------------------------------------------------
+
+typedef ANNcoord* ANNpoint;			// a point
+typedef ANNpoint* ANNpointArray;	// an array of points 
+typedef ANNdist*  ANNdistArray;		// an array of distances 
+typedef ANNidx*   ANNidxArray;		// an array of point indices
+
+//----------------------------------------------------------------------
+//	Basic point and array utilities:
+//		The following procedures are useful supplements to ANN's nearest
+//		neighbor capabilities.
+//
+//		annDist():
+//			Computes the (squared) distance between a pair of points.
+//			Note that this routine is not used internally by ANN for
+//			computing distance calculations.  For reasons of efficiency
+//			this is done using incremental distance calculation.  Thus,
+//			this routine cannot be modified as a method of changing the
+//			metric.
+//
+//		Because points (somewhat like strings in C) are stored as
+//		pointers.  Consequently, creating and destroying copies of
+//		points may require storage allocation.  These procedures do
+//		this.
+//
+//		annAllocPt() and annDeallocPt():
+//				Allocate a deallocate storage for a single point, and
+//				return a pointer to it.  The argument to AllocPt() is
+//				used to initialize all components.
+//
+//		annAllocPts() and annDeallocPts():
+//				Allocate and deallocate an array of points as well a
+//				place to store their coordinates, and initializes the
+//				points to point to their respective coordinates.  It
+//				allocates point storage in a contiguous block large
+//				enough to store all the points.  It performs no
+//				initialization.
+//
+//		annCopyPt():
+//				Creates a copy of a given point, allocating space for
+//				the new point.  It returns a pointer to the newly
+//				allocated copy.
+//----------------------------------------------------------------------
+   
+DLL_API ANNdist annDist(
+	int				dim,		// dimension of space
+	ANNpoint		p,			// points
+	ANNpoint		q);
+
+DLL_API ANNpoint annAllocPt(
+	int				dim,		// dimension
+	ANNcoord		c = 0);		// coordinate value (all equal)
+
+DLL_API ANNpointArray annAllocPts(
+	int				n,			// number of points
+	int				dim);		// dimension
+
+DLL_API void annDeallocPt(
+	ANNpoint		&p);		// deallocate 1 point
+   
+DLL_API void annDeallocPts(
+	ANNpointArray	&pa);		// point array
+
+DLL_API ANNpoint annCopyPt(
+	int				dim,		// dimension
+	ANNpoint		source);	// point to copy
+
+//----------------------------------------------------------------------
+//Overall structure: ANN supports a number of different data structures
+//for approximate and exact nearest neighbor searching.  These are:
+//
+//		ANNbruteForce	A simple brute-force search structure.
+//		ANNkd_tree		A kd-tree tree search structure.  ANNbd_tree
+//		A bd-tree tree search structure (a kd-tree with shrink
+//		capabilities).
+//
+//		At a minimum, each of these data structures support k-nearest
+//		neighbor queries.  The nearest neighbor query, annkSearch,
+//		returns an integer identifier and the distance to the nearest
+//		neighbor(s) and annRangeSearch returns the nearest points that
+//		lie within a given query ball.
+//
+//		Each structure is built by invoking the appropriate constructor
+//		and passing it (at a minimum) the array of points, the total
+//		number of points and the dimension of the space.  Each structure
+//		is also assumed to support a destructor and member functions
+//		that return basic information about the point set.
+//
+//		Note that the array of points is not copied by the data
+//		structure (for reasons of space efficiency), and it is assumed
+//		to be constant throughout the lifetime of the search structure.
+//
+//		The search algorithm, annkSearch, is given the query point (q),
+//		and the desired number of nearest neighbors to report (k), and
+//		the error bound (eps) (whose default value is 0, implying exact
+//		nearest neighbors).  It returns two arrays which are assumed to
+//		contain at least k elements: one (nn_idx) contains the indices
+//		(within the point array) of the nearest neighbors and the other
+//		(dd) contains the squared distances to these nearest neighbors.
+//
+//		The search algorithm, annkFRSearch, is a fixed-radius kNN
+//		search.  In addition to a query point, it is given a (squared)
+//		radius bound.  (This is done for consistency, because the search
+//		returns distances as squared quantities.) It does two things.
+//		First, it computes the k nearest neighbors within the radius
+//		bound, and second, it returns the total number of points lying
+//		within the radius bound. It is permitted to set k = 0, in which
+//		case it effectively answers a range counting query.  If the
+//		error bound epsilon is positive, then the search is approximate
+//		in the sense that it is free to ignore any point that lies
+//		outside a ball of radius r/(1+epsilon), where r is the given
+//		(unsquared) radius bound.
+//
+//		The generic object from which all the search structures are
+//		dervied is given below.  It is a virtual object, and is useless
+//		by itself.
+//----------------------------------------------------------------------
+
+class DLL_API ANNpointSet {
+public:
+	virtual ~ANNpointSet() {}			// virtual distructor
+
+	virtual void annkSearch(			// approx k near neighbor search
+		ANNpoint		q,				// query point
+		int				k,				// number of near neighbors to return
+		ANNidxArray		nn_idx,			// nearest neighbor array (modified)
+		ANNdistArray	dd,				// dist to near neighbors (modified)
+		double			eps=0.0			// error bound
+		) = 0;							// pure virtual (defined elsewhere)
+
+	virtual int annkFRSearch(			// approx fixed-radius kNN search
+		ANNpoint		q,				// query point
+		ANNdist			sqRad,			// squared radius
+		int				k = 0,			// number of near neighbors to return
+		ANNidxArray		nn_idx = NULL,	// nearest neighbor array (modified)
+		ANNdistArray	dd = NULL,		// dist to near neighbors (modified)
+		double			eps=0.0			// error bound
+		) = 0;							// pure virtual (defined elsewhere)
+
+	virtual int theDim() = 0;			// return dimension of space
+	virtual int nPoints() = 0;			// return number of points
+										// return pointer to points
+	virtual ANNpointArray thePoints() = 0;
+};
+
+//----------------------------------------------------------------------
+//	Brute-force nearest neighbor search:
+//		The brute-force search structure is very simple but inefficient.
+//		It has been provided primarily for the sake of comparison with
+//		and validation of the more complex search structures.
+//
+//		Query processing is the same as described above, but the value
+//		of epsilon is ignored, since all distance calculations are
+//		performed exactly.
+//
+//		WARNING: This data structure is very slow, and should not be
+//		used unless the number of points is very small.
+//
+//		Internal information:
+//		---------------------
+//		This data structure bascially consists of the array of points
+//		(each a pointer to an array of coordinates).  The search is
+//		performed by a simple linear scan of all the points.
+//----------------------------------------------------------------------
+
+class DLL_API ANNbruteForce: public ANNpointSet {
+	int				dim;				// dimension
+	int				n_pts;				// number of points
+	ANNpointArray	pts;				// point array
+public:
+	ANNbruteForce(						// constructor from point array
+		ANNpointArray	pa,				// point array
+		int				n,				// number of points
+		int				dd);			// dimension
+
+	~ANNbruteForce();					// destructor
+
+	void annkSearch(					// approx k near neighbor search
+		ANNpoint		q,				// query point
+		int				k,				// number of near neighbors to return
+		ANNidxArray		nn_idx,			// nearest neighbor array (modified)
+		ANNdistArray	dd,				// dist to near neighbors (modified)
+		double			eps=0.0);		// error bound
+
+	int annkFRSearch(					// approx fixed-radius kNN search
+		ANNpoint		q,				// query point
+		ANNdist			sqRad,			// squared radius
+		int				k = 0,			// number of near neighbors to return
+		ANNidxArray		nn_idx = NULL,	// nearest neighbor array (modified)
+		ANNdistArray	dd = NULL,		// dist to near neighbors (modified)
+		double			eps=0.0);		// error bound
+
+	int theDim()						// return dimension of space
+		{ return dim; }
+
+	int nPoints()						// return number of points
+		{ return n_pts; }
+
+	ANNpointArray thePoints()			// return pointer to points
+		{  return pts;  }
+};
+
+//----------------------------------------------------------------------
+// kd- and bd-tree splitting and shrinking rules
+//		kd-trees supports a collection of different splitting rules.
+//		In addition to the standard kd-tree splitting rule proposed
+//		by Friedman, Bentley, and Finkel, we have introduced a
+//		number of other splitting rules, which seem to perform
+//		as well or better (for the distributions we have tested).
+//
+//		The splitting methods given below allow the user to tailor
+//		the data structure to the particular data set.  They are
+//		are described in greater details in the kd_split.cc source
+//		file.  The method ANN_KD_SUGGEST is the method chosen (rather
+//		subjectively) by the implementors as the one giving the
+//		fastest performance, and is the default splitting method.
+//
+//		As with splitting rules, there are a number of different
+//		shrinking rules.  The shrinking rule ANN_BD_NONE does no
+//		shrinking (and hence produces a kd-tree tree).  The rule
+//		ANN_BD_SUGGEST uses the implementors favorite rule.
+//----------------------------------------------------------------------
+
+enum ANNsplitRule {
+		ANN_KD_STD				= 0,	// the optimized kd-splitting rule
+		ANN_KD_MIDPT			= 1,	// midpoint split
+		ANN_KD_FAIR				= 2,	// fair split
+		ANN_KD_SL_MIDPT			= 3,	// sliding midpoint splitting method
+		ANN_KD_SL_FAIR			= 4,	// sliding fair split method
+		ANN_KD_SUGGEST			= 5};	// the authors' suggestion for best
+const int ANN_N_SPLIT_RULES		= 6;	// number of split rules
+
+enum ANNshrinkRule {
+		ANN_BD_NONE				= 0,	// no shrinking at all (just kd-tree)
+		ANN_BD_SIMPLE			= 1,	// simple splitting
+		ANN_BD_CENTROID			= 2,	// centroid splitting
+		ANN_BD_SUGGEST			= 3};	// the authors' suggested choice
+const int ANN_N_SHRINK_RULES	= 4;	// number of shrink rules
+
+//----------------------------------------------------------------------
+//	kd-tree:
+//		The main search data structure supported by ANN is a kd-tree.
+//		The main constructor is given a set of points and a choice of
+//		splitting method to use in building the tree.
+//
+//		Construction:
+//		-------------
+//		The constructor is given the point array, number of points,
+//		dimension, bucket size (default = 1), and the splitting rule
+//		(default = ANN_KD_SUGGEST).  The point array is not copied, and
+//		is assumed to be kept constant throughout the lifetime of the
+//		search structure.  There is also a "load" constructor that
+//		builds a tree from a file description that was created by the
+//		Dump operation.
+//
+//		Search:
+//		-------
+//		There are two search methods:
+//
+//			Standard search (annkSearch()):
+//				Searches nodes in tree-traversal order, always visiting
+//				the closer child first.
+//			Priority search (annkPriSearch()):
+//				Searches nodes in order of increasing distance of the
+//				associated cell from the query point.  For many
+//				distributions the standard search seems to work just
+//				fine, but priority search is safer for worst-case
+//				performance.
+//
+//		Printing:
+//		---------
+//		There are two methods provided for printing the tree.  Print()
+//		is used to produce a "human-readable" display of the tree, with
+//		indenation, which is handy for debugging.  Dump() produces a
+//		format that is suitable reading by another program.  There is a
+//		"load" constructor, which constructs a tree which is assumed to
+//		have been saved by the Dump() procedure.
+//		
+//		Performance and Structure Statistics:
+//		-------------------------------------
+//		The procedure getStats() collects statistics information on the
+//		tree (its size, height, etc.)  See ANNperf.h for information on
+//		the stats structure it returns.
+//
+//		Internal information:
+//		---------------------
+//		The data structure consists of three major chunks of storage.
+//		The first (implicit) storage are the points themselves (pts),
+//		which have been provided by the users as an argument to the
+//		constructor, or are allocated dynamically if the tree is built
+//		using the load constructor).  These should not be changed during
+//		the lifetime of the search structure.  It is the user's
+//		responsibility to delete these after the tree is destroyed.
+//
+//		The second is the tree itself (which is dynamically allocated in
+//		the constructor) and is given as a pointer to its root node
+//		(root).  These nodes are automatically deallocated when the tree
+//		is deleted.  See the file src/kd_tree.h for further information
+//		on the structure of the tree nodes.
+//
+//		Each leaf of the tree does not contain a pointer directly to a
+//		point, but rather contains a pointer to a "bucket", which is an
+//		array consisting of point indices.  The third major chunk of
+//		storage is an array (pidx), which is a large array in which all
+//		these bucket subarrays reside.  (The reason for storing them
+//		separately is the buckets are typically small, but of varying
+//		sizes.  This was done to avoid fragmentation.)  This array is
+//		also deallocated when the tree is deleted.
+//
+//		In addition to this, the tree consists of a number of other
+//		pieces of information which are used in searching and for
+//		subsequent tree operations.  These consist of the following:
+//
+//		dim						Dimension of space
+//		n_pts					Number of points currently in the tree
+//		n_max					Maximum number of points that are allowed
+//								in the tree
+//		bkt_size				Maximum bucket size (no. of points per leaf)
+//		bnd_box_lo				Bounding box low point
+//		bnd_box_hi				Bounding box high point
+//		splitRule				Splitting method used
+//
+//----------------------------------------------------------------------
+
+//----------------------------------------------------------------------
+// Some types and objects used by kd-tree functions
+// See src/kd_tree.h and src/kd_tree.cpp for definitions
+//----------------------------------------------------------------------
+class ANNkdStats;				// stats on kd-tree
+class ANNkd_node;				// generic node in a kd-tree
+typedef ANNkd_node*	ANNkd_ptr;	// pointer to a kd-tree node
+
+class DLL_API ANNkd_tree: public ANNpointSet {
+protected:
+	int				dim;				// dimension of space
+	int				n_pts;				// number of points in tree
+	int				bkt_size;			// bucket size
+	ANNpointArray	pts;				// the points
+	ANNidxArray		pidx;				// point indices (to pts array)
+	ANNkd_ptr		root;				// root of kd-tree
+	ANNpoint		bnd_box_lo;			// bounding box low point
+	ANNpoint		bnd_box_hi;			// bounding box high point
+
+	void SkeletonTree(					// construct skeleton tree
+		int				n,				// number of points
+		int				dd,				// dimension
+		int				bs,				// bucket size
+		ANNpointArray pa = NULL,		// point array (optional)
+		ANNidxArray pi = NULL);			// point indices (optional)
+
+public:
+	ANNkd_tree(							// build skeleton tree
+		int				n = 0,			// number of points
+		int				dd = 0,			// dimension
+		int				bs = 1);		// bucket size
+
+	ANNkd_tree(							// build from point array
+		ANNpointArray	pa,				// point array
+		int				n,				// number of points
+		int				dd,				// dimension
+		int				bs = 1,			// bucket size
+		ANNsplitRule	split = ANN_KD_SUGGEST);	// splitting method
+
+	ANNkd_tree(							// build from dump file
+		std::istream&	in);			// input stream for dump file
+
+	~ANNkd_tree();						// tree destructor
+
+	void annkSearch(					// approx k near neighbor search
+		ANNpoint		q,				// query point
+		int				k,				// number of near neighbors to return
+		ANNidxArray		nn_idx,			// nearest neighbor array (modified)
+		ANNdistArray	dd,				// dist to near neighbors (modified)
+		double			eps=0.0);		// error bound
+
+	void annkPriSearch( 				// priority k near neighbor search
+		ANNpoint		q,				// query point
+		int				k,				// number of near neighbors to return
+		ANNidxArray		nn_idx,			// nearest neighbor array (modified)
+		ANNdistArray	dd,				// dist to near neighbors (modified)
+		double			eps=0.0);		// error bound
+
+	int annkFRSearch(					// approx fixed-radius kNN search
+		ANNpoint		q,				// the query point
+		ANNdist			sqRad,			// squared radius of query ball
+		int				k,				// number of neighbors to return
+		ANNidxArray		nn_idx = NULL,	// nearest neighbor array (modified)
+		ANNdistArray	dd = NULL,		// dist to near neighbors (modified)
+		double			eps=0.0);		// error bound
+
+	int theDim()						// return dimension of space
+		{ return dim; }
+
+	int nPoints()						// return number of points
+		{ return n_pts; }
+
+	ANNpointArray thePoints()			// return pointer to points
+		{  return pts;  }
+
+	virtual void Print(					// print the tree (for debugging)
+		ANNbool			with_pts,		// print points as well?
+		std::ostream&	out);			// output stream
+
+	virtual void Dump(					// dump entire tree
+		ANNbool			with_pts,		// print points as well?
+		std::ostream&	out);			// output stream
+								
+	virtual void getStats(				// compute tree statistics
+		ANNkdStats&		st);			// the statistics (modified)
+};								
+
+//----------------------------------------------------------------------
+//	Box decomposition tree (bd-tree)
+//		The bd-tree is inherited from a kd-tree.  The main difference
+//		in the bd-tree and the kd-tree is a new type of internal node
+//		called a shrinking node (in the kd-tree there is only one type
+//		of internal node, a splitting node).  The shrinking node
+//		makes it possible to generate balanced trees in which the
+//		cells have bounded aspect ratio, by allowing the decomposition
+//		to zoom in on regions of dense point concentration.  Although
+//		this is a nice idea in theory, few point distributions are so
+//		densely clustered that this is really needed.
+//----------------------------------------------------------------------
+
+class DLL_API ANNbd_tree: public ANNkd_tree {
+public:
+	ANNbd_tree(							// build skeleton tree
+		int				n,				// number of points
+		int				dd,				// dimension
+		int				bs = 1)			// bucket size
+		: ANNkd_tree(n, dd, bs) {}		// build base kd-tree
+
+	ANNbd_tree(							// build from point array
+		ANNpointArray	pa,				// point array
+		int				n,				// number of points
+		int				dd,				// dimension
+		int				bs = 1,			// bucket size
+		ANNsplitRule	split  = ANN_KD_SUGGEST,	// splitting rule
+		ANNshrinkRule	shrink = ANN_BD_SUGGEST);	// shrinking rule
+
+	ANNbd_tree(							// build from dump file
+		std::istream&	in);			// input stream for dump file
+};
+
+//----------------------------------------------------------------------
+//	Other functions
+//	annMaxPtsVisit		Sets a limit on the maximum number of points
+//						to visit in the search.
+//  annClose			Can be called when all use of ANN is finished.
+//						It clears up a minor memory leak.
+//----------------------------------------------------------------------
+
+DLL_API void annMaxPtsVisit(	// max. pts to visit in search
+	int				maxPts);	// the limit
+
+DLL_API void annClose();		// called to end use of ANN
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/include/ANN/ANNperf.h	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,223 @@
+//----------------------------------------------------------------------
+//	File:			ANNperf.h
+//	Programmer:		Sunil Arya and David Mount
+//	Last modified:	03/04/98 (Release 0.1)
+//	Description:	Include file for ANN performance stats
+//
+//	Some of the code for statistics gathering has been adapted
+//	from the SmplStat.h package in the g++ library.
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+//      History:
+//      Revision 0.1  03/04/98
+//          Initial release
+//      Revision 1.0  04/01/05
+//          Added ANN_ prefix to avoid name conflicts.
+//----------------------------------------------------------------------
+
+#ifndef ANNperf_H
+#define ANNperf_H
+
+//----------------------------------------------------------------------
+//	basic includes
+//----------------------------------------------------------------------
+
+#include <ANN/ANN.h>					// basic ANN includes
+
+//----------------------------------------------------------------------
+// kd-tree stats object
+//	This object is used for collecting information about a kd-tree
+//	or bd-tree.
+//----------------------------------------------------------------------
+
+class ANNkdStats {			// stats on kd-tree
+public:
+	int		dim;			// dimension of space
+	int		n_pts;			// no. of points
+	int		bkt_size;		// bucket size
+	int		n_lf;			// no. of leaves (including trivial)
+	int		n_tl;			// no. of trivial leaves (no points)
+	int		n_spl;			// no. of splitting nodes
+	int		n_shr;			// no. of shrinking nodes (for bd-trees)
+	int		depth;			// depth of tree
+	float	sum_ar;			// sum of leaf aspect ratios
+	float	avg_ar;			// average leaf aspect ratio
+ //
+							// reset stats
+	void reset(int d=0, int n=0, int bs=0)
+	{
+		dim = d; n_pts = n; bkt_size = bs;
+		n_lf = n_tl = n_spl = n_shr = depth = 0;
+		sum_ar = avg_ar = 0.0;
+	}
+
+	ANNkdStats()			// basic constructor
+	{ reset(); }
+
+	void merge(const ANNkdStats &st);	// merge stats from child 
+};
+
+//----------------------------------------------------------------------
+//  ANNsampStat
+//	A sample stat collects numeric (double) samples and returns some
+//	simple statistics.  Its main functions are:
+//
+//		reset()		Reset to no samples.
+//		+= x		Include sample x.
+//		samples()	Return number of samples.
+//		mean()		Return mean of samples.
+//		stdDev()	Return standard deviation
+//		min()		Return minimum of samples.
+//		max()		Return maximum of samples.
+//----------------------------------------------------------------------
+class DLL_API ANNsampStat {
+	int				n;				// number of samples
+	double			sum;			// sum
+	double			sum2;			// sum of squares
+	double			minVal, maxVal;	// min and max
+public :
+	void reset()				// reset everything
+	{  
+		n = 0;
+		sum = sum2 = 0;
+		minVal = ANN_DBL_MAX;
+		maxVal = -ANN_DBL_MAX; 
+	}
+
+	ANNsampStat() { reset(); }		// constructor
+
+	void operator+=(double x)		// add sample
+	{
+		n++;  sum += x;  sum2 += x*x;
+		if (x < minVal) minVal = x;
+		if (x > maxVal) maxVal = x;
+	}
+
+	int samples() { return n; }		// number of samples
+
+	double mean() { return sum/n; } // mean
+
+									// standard deviation
+	double stdDev() { return sqrt((sum2 - (sum*sum)/n)/(n-1));}
+
+	double min() { return minVal; } // minimum
+	double max() { return maxVal; } // maximum
+};
+
+//----------------------------------------------------------------------
+//		Operation count updates
+//----------------------------------------------------------------------
+
+#ifdef ANN_PERF
+  #define ANN_FLOP(n)	{ann_Nfloat_ops += (n);}
+  #define ANN_LEAF(n)	{ann_Nvisit_lfs += (n);}
+  #define ANN_SPL(n)	{ann_Nvisit_spl += (n);}
+  #define ANN_SHR(n)	{ann_Nvisit_shr += (n);}
+  #define ANN_PTS(n)	{ann_Nvisit_pts += (n);}
+  #define ANN_COORD(n)	{ann_Ncoord_hts += (n);}
+#else
+  #define ANN_FLOP(n)
+  #define ANN_LEAF(n)
+  #define ANN_SPL(n)
+  #define ANN_SHR(n)
+  #define ANN_PTS(n)
+  #define ANN_COORD(n)
+#endif
+
+//----------------------------------------------------------------------
+//	Performance statistics
+//	The following data and routines are used for computing performance
+//	statistics for nearest neighbor searching.  Because these routines
+//	can slow the code down, they can be activated and deactiviated by
+//	defining the ANN_PERF variable, by compiling with the option:
+//	-DANN_PERF
+//----------------------------------------------------------------------
+
+//----------------------------------------------------------------------
+//	Global counters for performance measurement
+//
+//	visit_lfs	The number of leaf nodes visited in the
+//				tree.
+//
+//	visit_spl	The number of splitting nodes visited in the
+//				tree.
+//
+//	visit_shr	The number of shrinking nodes visited in the
+//				tree.
+//
+//	visit_pts	The number of points visited in all the
+//				leaf nodes visited. Equivalently, this
+//				is the number of points for which distance
+//				calculations are performed.
+//
+//	coord_hts	The number of times a coordinate of a 
+//				data point is accessed. This is generally
+//				less than visit_pts*d if partial distance
+//				calculation is used.  This count is low
+//				in the sense that if a coordinate is hit
+//				many times in the same routine we may
+//				count it only once.
+//
+//	float_ops	The number of floating point operations.
+//				This includes all operations in the heap
+//				as well as distance calculations to boxes.
+//
+//	average_err	The average error of each query (the
+//				error of the reported point to the true
+//				nearest neighbor).  For k nearest neighbors
+//				the error is computed k times.
+//
+//	rank_err	The rank error of each query (the difference
+//				in the rank of the reported point and its
+//				true rank).
+//
+//	data_pts	The number of data points.  This is not
+//				a counter, but used in stats computation.
+//----------------------------------------------------------------------
+
+extern int			ann_Ndata_pts;	// number of data points
+extern int			ann_Nvisit_lfs;	// number of leaf nodes visited
+extern int			ann_Nvisit_spl;	// number of splitting nodes visited
+extern int			ann_Nvisit_shr;	// number of shrinking nodes visited
+extern int			ann_Nvisit_pts;	// visited points for one query
+extern int			ann_Ncoord_hts;	// coordinate hits for one query
+extern int			ann_Nfloat_ops;	// floating ops for one query
+extern ANNsampStat	ann_visit_lfs;	// stats on leaf nodes visits
+extern ANNsampStat	ann_visit_spl;	// stats on splitting nodes visits
+extern ANNsampStat	ann_visit_shr;	// stats on shrinking nodes visits
+extern ANNsampStat	ann_visit_nds;	// stats on total nodes visits
+extern ANNsampStat	ann_visit_pts;	// stats on points visited
+extern ANNsampStat	ann_coord_hts;	// stats on coordinate hits
+extern ANNsampStat	ann_float_ops;	// stats on floating ops
+//----------------------------------------------------------------------
+//  The following need to be part of the public interface, because
+//  they are accessed outside the DLL in ann_test.cpp.
+//----------------------------------------------------------------------
+DLL_API extern ANNsampStat ann_average_err;	// average error
+DLL_API extern ANNsampStat ann_rank_err;	// rank error
+
+//----------------------------------------------------------------------
+//	Declaration of externally accessible routines for statistics
+//----------------------------------------------------------------------
+
+DLL_API void annResetStats(int data_size);	// reset stats for a set of queries
+
+DLL_API void annResetCounts();				// reset counts for one queries
+
+DLL_API void annUpdateStats();				// update stats with current counts
+
+DLL_API void annPrintStats(ANNbool validate); // print statistics for a run
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/include/ANN/ANNx.h	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,167 @@
+//----------------------------------------------------------------------
+//	File:			ANNx.h
+//	Programmer: 	Sunil Arya and David Mount
+//	Last modified:	03/04/98 (Release 0.1)
+//	Description:	Internal include file for ANN
+//
+//	These declarations are of use in manipulating some of
+//	the internal data objects appearing in ANN, but are not
+//	needed for applications just using the nearest neighbor
+//	search.
+//
+//	Typical users of ANN should not need to access this file.
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+//	History:
+//	Revision 0.1  03/04/98
+//	    Initial release
+//	Revision 1.0  04/01/05
+//	    Changed LO, HI, IN, OUT to ANN_LO, ANN_HI, etc.
+//----------------------------------------------------------------------
+
+#ifndef ANNx_H
+#define ANNx_H
+
+#include <iomanip>				// I/O manipulators
+#include <ANN/ANN.h>			// ANN includes
+
+//----------------------------------------------------------------------
+//	Global constants and types
+//----------------------------------------------------------------------
+enum	{ANN_LO=0, ANN_HI=1};	// splitting indices
+enum	{ANN_IN=0, ANN_OUT=1};	// shrinking indices
+								// what to do in case of error
+enum ANNerr {ANNwarn = 0, ANNabort = 1};
+
+//----------------------------------------------------------------------
+//	Maximum number of points to visit
+//	We have an option for terminating the search early if the
+//	number of points visited exceeds some threshold.  If the
+//	threshold is 0 (its default)  this means there is no limit
+//	and the algorithm applies its normal termination condition.
+//----------------------------------------------------------------------
+
+extern int		ANNmaxPtsVisited;	// maximum number of pts visited
+extern int		ANNptsVisited;		// number of pts visited in search
+
+//----------------------------------------------------------------------
+//	Global function declarations
+//----------------------------------------------------------------------
+
+void annError(					// ANN error routine
+	char			*msg,		// error message
+	ANNerr			level);		// level of error
+
+void annPrintPt(				// print a point
+	ANNpoint		pt,			// the point
+	int				dim,		// the dimension
+	std::ostream	&out);		// output stream
+
+//----------------------------------------------------------------------
+//	Orthogonal (axis aligned) rectangle
+//	Orthogonal rectangles are represented by two points, one
+//	for the lower left corner (min coordinates) and the other
+//	for the upper right corner (max coordinates).
+//
+//	The constructor initializes from either a pair of coordinates,
+//	pair of points, or another rectangle.  Note that all constructors
+//	allocate new point storage. The destructor deallocates this
+//	storage.
+//
+//	BEWARE: Orthogonal rectangles should be passed ONLY BY REFERENCE.
+//	(C++'s default copy constructor will not allocate new point
+//	storage, then on return the destructor free's storage, and then
+//	you get into big trouble in the calling procedure.)
+//----------------------------------------------------------------------
+
+class ANNorthRect {
+public:
+	ANNpoint		lo;			// rectangle lower bounds
+	ANNpoint		hi;			// rectangle upper bounds
+//
+	ANNorthRect(				// basic constructor
+	int				dd,			// dimension of space
+	ANNcoord		l=0,		// default is empty
+	ANNcoord		h=0)
+	{  lo = annAllocPt(dd, l);  hi = annAllocPt(dd, h); }
+
+	ANNorthRect(				// (almost a) copy constructor
+	int				dd,			// dimension
+	const			ANNorthRect &r) // rectangle to copy
+	{  lo = annCopyPt(dd, r.lo);  hi = annCopyPt(dd, r.hi);  }
+
+	ANNorthRect(				// construct from points
+	int				dd,			// dimension
+	ANNpoint		l,			// low point
+	ANNpoint		h)			// hight point
+	{  lo = annCopyPt(dd, l);  hi = annCopyPt(dd, h);  }
+
+	~ANNorthRect()				// destructor
+    {  annDeallocPt(lo);  annDeallocPt(hi);  }
+
+	ANNbool inside(int dim, ANNpoint p);// is point p inside rectangle?
+};
+
+void annAssignRect(				// assign one rect to another
+	int				dim,		// dimension (both must be same)
+	ANNorthRect		&dest,		// destination (modified)
+	const ANNorthRect &source);	// source
+
+//----------------------------------------------------------------------
+//	Orthogonal (axis aligned) halfspace
+//	An orthogonal halfspace is represented by an integer cutting
+//	dimension cd, coordinate cutting value, cv, and side, sd, which is
+//	either +1 or -1. Our convention is that point q lies in the (closed)
+//	halfspace if (q[cd] - cv)*sd >= 0.
+//----------------------------------------------------------------------
+
+class ANNorthHalfSpace {
+public:
+	int				cd;			// cutting dimension
+	ANNcoord		cv;			// cutting value
+	int				sd;			// which side
+//
+	ANNorthHalfSpace()			// default constructor
+	{  cd = 0; cv = 0;  sd = 0;  }
+
+	ANNorthHalfSpace(			// basic constructor
+	int				cdd,		// dimension of space
+	ANNcoord		cvv,		// cutting value
+	int				sdd)		// side
+	{  cd = cdd;  cv = cvv;  sd = sdd;  }
+
+	ANNbool in(ANNpoint q) const	// is q inside halfspace?
+	{  return  (ANNbool) ((q[cd] - cv)*sd >= 0);  }
+
+	ANNbool out(ANNpoint q) const	// is q outside halfspace?
+	{  return  (ANNbool) ((q[cd] - cv)*sd < 0);  }
+
+	ANNdist dist(ANNpoint q) const	// (squared) distance from q
+	{  return  (ANNdist) ANN_POW(q[cd] - cv);  }
+
+	void setLowerBound(int d, ANNpoint p)// set to lower bound at p[i]
+	{  cd = d;  cv = p[d];  sd = +1;  }
+
+	void setUpperBound(int d, ANNpoint p)// set to upper bound at p[i]
+	{  cd = d;  cv = p[d];  sd = -1;  }
+
+	void project(ANNpoint &q)		// project q (modified) onto halfspace
+	{  if (out(q)) q[cd] = cv;  }
+};
+
+								// array of halfspaces
+typedef ANNorthHalfSpace *ANNorthHSArray;
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample/Makefile	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,90 @@
+#-----------------------------------------------------------------------------
+# Makefile for the sample program
+#
+# ANN: Approximate Nearest Neighbors
+# Version: 1.1.1 08/04/06
+#-----------------------------------------------------------------------------
+# Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+# David Mount.  All Rights Reserved.
+# 
+# This software and related documentation is part of the Approximate
+# Nearest Neighbor Library (ANN).  This software is provided under
+# the provisions of the Lesser GNU Public License (LGPL).  See the
+# file ../ReadMe.txt for further information.
+# 
+# The University of Maryland (U.M.) and the authors make no
+# representations about the suitability or fitness of this software for
+# any purpose.  It is provided "as is" without express or implied
+# warranty.
+#-----------------------------------------------------------------------------
+# Revision 0.1  03/04/98
+#	Initial release
+# Revision 1.1.1  08/04/06
+#	Added copyright/license
+#-----------------------------------------------------------------------------
+# Note: For full performance measurements, it is assumed that the library
+# and this program have both been compiled with the -DPERF flag.  See the
+# Makefile in the ANN base directory for this flag.
+#-----------------------------------------------------------------------------
+
+#-----------------------------------------------------------------------------
+# Basic definitions
+#		BASEDIR		where include, src, lib, ... are
+#		INCDIR		include directory
+#		LIBDIR		library directory
+#		BINDIR		bin directory
+#		LDFLAGS		loader flags
+#		ANNLIBS		libraries
+#-----------------------------------------------------------------------------
+
+BASEDIR	= ..
+INCDIR	= $(BASEDIR)/include
+LIBDIR	= $(BASEDIR)/lib
+BINDIR	= $(BASEDIR)/bin
+LDFLAGS	= -L$(LIBDIR)
+ANNLIBS	= -lANN -lm
+
+#-----------------------------------------------------------------------------
+# Some more definitions
+#		ANNSAMP		name of sample program
+#-----------------------------------------------------------------------------
+
+ANNSAMP = ann_sample
+
+SAMPSOURCES = ann_sample.cpp
+SAMPOBJECTS = $(SAMPSOURCES:.cpp=.o)
+
+#-----------------------------------------------------------------------------
+# Make the program
+#-----------------------------------------------------------------------------
+
+default: 
+	@echo "Specify a target configuration"
+
+targets: $(BINDIR)/$(ANNSAMP)
+
+$(BINDIR)/$(ANNSAMP): $(SAMPOBJECTS) $(LIBDIR)/$(ANNLIB)
+	$(C++) $(SAMPOBJECTS) -o $(ANNSAMP) $(LDFLAGS) $(ANNLIBS)
+	mv $(ANNSAMP) $(BINDIR)
+
+#-----------------------------------------------------------------------------
+# configuration definitions
+#-----------------------------------------------------------------------------
+
+include ../Make-config
+
+#-----------------------------------------------------------------------------
+# Objects
+#-----------------------------------------------------------------------------
+
+ann_sample.o: ann_sample.cpp
+	$(C++) -c -I$(INCDIR) $(CFLAGS) ann_sample.cpp
+
+#-----------------------------------------------------------------------------
+# Cleaning
+#-----------------------------------------------------------------------------
+
+clean:
+	-rm -f *.o *.out core
+
+realclean: clean
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample/ann_sample.cpp	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,198 @@
+//----------------------------------------------------------------------
+//		File:			ann_sample.cpp
+//		Programmer:		Sunil Arya and David Mount
+//		Last modified:	03/04/98 (Release 0.1)
+//		Description:	Sample program for ANN
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+
+#include <cstdlib>						// C standard library
+#include <cstdio>						// C I/O (for sscanf)
+#include <cstring>						// string manipulation
+#include <fstream>						// file I/O
+#include <ANN/ANN.h>					// ANN declarations
+
+using namespace std;					// make std:: accessible
+
+//----------------------------------------------------------------------
+// ann_sample
+//
+// This is a simple sample program for the ANN library.	 After compiling,
+// it can be run as follows.
+// 
+// ann_sample [-d dim] [-max mpts] [-nn k] [-e eps] [-df data] [-qf query]
+//
+// where
+//		dim				is the dimension of the space (default = 2)
+//		mpts			maximum number of data points (default = 1000)
+//		k				number of nearest neighbors per query (default 1)
+//		eps				is the error bound (default = 0.0)
+//		data			file containing data points
+//		query			file containing query points
+//
+// Results are sent to the standard output.
+//----------------------------------------------------------------------
+
+//----------------------------------------------------------------------
+//	Parameters that are set in getArgs()
+//----------------------------------------------------------------------
+void getArgs(int argc, char **argv);			// get command-line arguments
+
+int				k				= 1;			// number of nearest neighbors
+int				dim				= 2;			// dimension
+double			eps				= 0;			// error bound
+int				maxPts			= 1000;			// maximum number of data points
+
+istream*		dataIn			= NULL;			// input for data points
+istream*		queryIn			= NULL;			// input for query points
+
+bool readPt(istream &in, ANNpoint p)			// read point (false on EOF)
+{
+	for (int i = 0; i < dim; i++) {
+		if(!(in >> p[i])) return false;
+	}
+	return true;
+}
+
+void printPt(ostream &out, ANNpoint p)			// print point
+{
+	out << "(" << p[0];
+	for (int i = 1; i < dim; i++) {
+		out << ", " << p[i];
+	}
+	out << ")\n";
+}
+
+int main(int argc, char **argv)
+{
+	int					nPts;					// actual number of data points
+	ANNpointArray		dataPts;				// data points
+	ANNpoint			queryPt;				// query point
+	ANNidxArray			nnIdx;					// near neighbor indices
+	ANNdistArray		dists;					// near neighbor distances
+	ANNkd_tree*			kdTree;					// search structure
+
+	getArgs(argc, argv);						// read command-line arguments
+
+	queryPt = annAllocPt(dim);					// allocate query point
+	dataPts = annAllocPts(maxPts, dim);			// allocate data points
+	nnIdx = new ANNidx[k];						// allocate near neigh indices
+	dists = new ANNdist[k];						// allocate near neighbor dists
+
+	nPts = 0;									// read data points
+
+	cout << "Data Points:\n";
+	while (nPts < maxPts && readPt(*dataIn, dataPts[nPts])) {
+		printPt(cout, dataPts[nPts]);
+		nPts++;
+	}
+
+	kdTree = new ANNkd_tree(					// build search structure
+					dataPts,					// the data points
+					nPts,						// number of points
+					dim);						// dimension of space
+
+	while (readPt(*queryIn, queryPt)) {			// read query points
+		cout << "Query point: ";				// echo query point
+		printPt(cout, queryPt);
+
+		kdTree->annkSearch(						// search
+				queryPt,						// query point
+				k,								// number of near neighbors
+				nnIdx,							// nearest neighbors (returned)
+				dists,							// distance (returned)
+				eps);							// error bound
+
+		cout << "\tNN:\tIndex\tDistance\n";
+		for (int i = 0; i < k; i++) {			// print summary
+			dists[i] = sqrt(dists[i]);			// unsquare distance
+			cout << "\t" << i << "\t" << nnIdx[i] << "\t" << dists[i] << "\n";
+		}
+	}
+    delete [] nnIdx;							// clean things up
+    delete [] dists;
+    delete kdTree;
+	annClose();									// done with ANN
+
+	return EXIT_SUCCESS;
+}
+
+//----------------------------------------------------------------------
+//	getArgs - get command line arguments
+//----------------------------------------------------------------------
+
+void getArgs(int argc, char **argv)
+{
+	static ifstream dataStream;					// data file stream
+	static ifstream queryStream;				// query file stream
+
+	if (argc <= 1) {							// no arguments
+		cerr << "Usage:\n\n"
+		<< "  ann_sample [-d dim] [-max m] [-nn k] [-e eps] [-df data]"
+		   " [-qf query]\n\n"
+		<< "  where:\n"
+		<< "    dim      dimension of the space (default = 2)\n"
+		<< "    m        maximum number of data points (default = 1000)\n"
+		<< "    k        number of nearest neighbors per query (default 1)\n"
+		<< "    eps      the error bound (default = 0.0)\n"
+		<< "    data     name of file containing data points\n"
+		<< "    query    name of file containing query points\n\n"
+		<< " Results are sent to the standard output.\n"
+		<< "\n"
+		<< " To run this demo use:\n"
+		<< "    ann_sample -df data.pts -qf query.pts\n";
+		exit(0);
+	}
+	int i = 1;
+	while (i < argc) {							// read arguments
+		if (!strcmp(argv[i], "-d")) {			// -d option
+			dim = atoi(argv[++i]);				// get dimension to dump
+		}
+		else if (!strcmp(argv[i], "-max")) {	// -max option
+			maxPts = atoi(argv[++i]);			// get max number of points
+		}
+		else if (!strcmp(argv[i], "-nn")) {		// -nn option
+			k = atoi(argv[++i]);				// get number of near neighbors
+		}
+		else if (!strcmp(argv[i], "-e")) {		// -e option
+			sscanf(argv[++i], "%lf", &eps);		// get error bound
+		}
+		else if (!strcmp(argv[i], "-df")) {		// -df option
+			dataStream.open(argv[++i], ios::in);// open data file
+			if (!dataStream) {
+				cerr << "Cannot open data file\n";
+				exit(1);
+			}
+			dataIn = &dataStream;				// make this the data stream
+		}
+		else if (!strcmp(argv[i], "-qf")) {		// -qf option
+			queryStream.open(argv[++i], ios::in);// open query file
+			if (!queryStream) {
+				cerr << "Cannot open query file\n";
+				exit(1);
+			}
+			queryIn = &queryStream;			// make this query stream
+		}
+		else {									// illegal syntax
+			cerr << "Unrecognized option.\n";
+			exit(1);
+		}
+		i++;
+	}
+	if (dataIn == NULL || queryIn == NULL) {
+		cerr << "-df and -qf options must be specified\n";
+		exit(1);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample/data.pts	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,20 @@
+-0.297462	0.176102
+0.565538	-0.361496
+0.909313	-0.182785
+0.920712	0.478408
+0.167682	0.0499836
+0.305223	-0.0805835
+0.114973	0.882453
+0.742916	0.16376
+0.0724605	-0.826775
+0.690960	-0.559284
+0.188485	-0.643934
+0.749427	-0.942415
+-0.970662	-0.223466
+0.916110	0.879597
+0.927417	-0.382593
+-0.711327	0.278713
+-0.519172	0.986146
+0.135338	0.924588
+-0.0837537	0.61687
+0.0520465	0.896306
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample/query.pts	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,10 @@
+0.0902484	-0.207129
+-0.419567	0.485743
+0.826225	-0.30962
+0.694758	0.987088
+-0.410807	-0.465182
+-0.836501	0.490184
+0.588289	0.656408
+0.325807	0.38721
+-0.532226	-0.727036
+-0.52506	-0.853508
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sample/sample.save	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,51 @@
+Data Points:
+(-0.297462, 0.176102)
+(0.565538, -0.361496)
+(0.909313, -0.182785)
+(0.920712, 0.478408)
+(0.167682, 0.0499836)
+(0.305223, -0.0805835)
+(0.114973, 0.882453)
+(0.742916, 0.16376)
+(0.0724605, -0.826775)
+(0.69096, -0.559284)
+(0.188485, -0.643934)
+(0.749427, -0.942415)
+(-0.970662, -0.223466)
+(0.91611, 0.879597)
+(0.927417, -0.382593)
+(-0.711327, 0.278713)
+(-0.519172, 0.986146)
+(0.135338, 0.924588)
+(-0.0837537, 0.61687)
+(0.0520465, 0.896306)
+Query point: (0.0902484, -0.207129)
+	NN:	Index	Distance
+	0	5	0.249455
+Query point: (-0.419567, 0.485743)
+	NN:	Index	Distance
+	0	0	0.332847
+Query point: (0.826225, -0.30962)
+	NN:	Index	Distance
+	0	14	0.124759
+Query point: (0.694758, 0.987088)
+	NN:	Index	Distance
+	0	13	0.246071
+Query point: (-0.410807, -0.465182)
+	NN:	Index	Distance
+	0	8	0.60357
+Query point: (-0.836501, 0.490184)
+	NN:	Index	Distance
+	0	15	0.245741
+Query point: (0.588289, 0.656408)
+	NN:	Index	Distance
+	0	3	0.37708
+Query point: (0.325807, 0.38721)
+	NN:	Index	Distance
+	0	4	0.372458
+Query point: (-0.532226, -0.727036)
+	NN:	Index	Distance
+	0	8	0.612857
+Query point: (-0.52506, -0.853508)
+	NN:	Index	Distance
+	0	8	0.598118
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ANN.cpp	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,198 @@
+//----------------------------------------------------------------------
+// File:			ANN.cpp
+// Programmer:		Sunil Arya and David Mount
+// Description:		Methods for ANN.h and ANNx.h
+// Last modified:	01/04/05 (Version 1.0)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//	Revision 1.0  04/01/05
+//		Added performance counting to annDist()
+//----------------------------------------------------------------------
+
+#include <ANN/ANNx.h>					// all ANN includes
+#include <ANN/ANNperf.h>				// ANN performance 
+
+using namespace std;					// make std:: accessible
+
+//----------------------------------------------------------------------
+//	Point methods
+//----------------------------------------------------------------------
+
+//----------------------------------------------------------------------
+//	Distance utility.
+//		(Note: In the nearest neighbor search, most distances are
+//		computed using partial distance calculations, not this
+//		procedure.)
+//----------------------------------------------------------------------
+
+ANNdist annDist(						// interpoint squared distance
+	int					dim,
+	ANNpoint			p,
+	ANNpoint			q)
+{
+	register int d;
+	register ANNcoord diff;
+	register ANNcoord dist;
+
+	dist = 0;
+	for (d = 0; d < dim; d++) {
+		diff = p[d] - q[d];
+		dist = ANN_SUM(dist, ANN_POW(diff));
+	}
+	ANN_FLOP(3*dim)					// performance counts
+	ANN_PTS(1)
+	ANN_COORD(dim)
+	return dist;
+}
+
+//----------------------------------------------------------------------
+//	annPrintPoint() prints a point to a given output stream.
+//----------------------------------------------------------------------
+
+void annPrintPt(						// print a point
+	ANNpoint			pt,				// the point
+	int					dim,			// the dimension
+	std::ostream		&out)			// output stream
+{
+	for (int j = 0; j < dim; j++) {
+		out << pt[j];
+		if (j < dim-1) out << " ";
+	}
+}
+
+//----------------------------------------------------------------------
+//	Point allocation/deallocation:
+//
+//		Because points (somewhat like strings in C) are stored
+//		as pointers.  Consequently, creating and destroying
+//		copies of points may require storage allocation.  These
+//		procedures do this.
+//
+//		annAllocPt() and annDeallocPt() allocate a deallocate
+//		storage for a single point, and return a pointer to it.
+//
+//		annAllocPts() allocates an array of points as well a place
+//		to store their coordinates, and initializes the points to
+//		point to their respective coordinates.  It allocates point
+//		storage in a contiguous block large enough to store all the
+//		points.  It performs no initialization.
+//
+//		annDeallocPts() should only be used on point arrays allocated
+//		by annAllocPts since it assumes that points are allocated in
+//		a block.
+//
+//		annCopyPt() copies a point taking care to allocate storage
+//		for the new point.
+//
+//		annAssignRect() assigns the coordinates of one rectangle to
+//		another.  The two rectangles must have the same dimension
+//		(and it is not possible to test this here).
+//----------------------------------------------------------------------
+
+ANNpoint annAllocPt(int dim, ANNcoord c)		// allocate 1 point
+{
+	ANNpoint p = new ANNcoord[dim];
+	for (int i = 0; i < dim; i++) p[i] = c;
+	return p;
+}
+   
+ANNpointArray annAllocPts(int n, int dim)		// allocate n pts in dim
+{
+	ANNpointArray pa = new ANNpoint[n];			// allocate points
+	ANNpoint	  p  = new ANNcoord[n*dim];		// allocate space for coords
+	for (int i = 0; i < n; i++) {
+		pa[i] = &(p[i*dim]);
+	}
+	return pa;
+}
+
+void annDeallocPt(ANNpoint &p)					// deallocate 1 point
+{
+	delete [] p;
+	p = NULL;
+}
+   
+void annDeallocPts(ANNpointArray &pa)			// deallocate points
+{
+	delete [] pa[0];							// dealloc coordinate storage
+	delete [] pa;								// dealloc points
+	pa = NULL;
+}
+   
+ANNpoint annCopyPt(int dim, ANNpoint source)	// copy point
+{
+	ANNpoint p = new ANNcoord[dim];
+	for (int i = 0; i < dim; i++) p[i] = source[i];
+	return p;
+}
+   
+												// assign one rect to another
+void annAssignRect(int dim, ANNorthRect &dest, const ANNorthRect &source)
+{
+	for (int i = 0; i < dim; i++) {
+		dest.lo[i] = source.lo[i];
+		dest.hi[i] = source.hi[i];
+	}
+}
+
+												// is point inside rectangle?
+ANNbool ANNorthRect::inside(int dim, ANNpoint p)
+{
+	for (int i = 0; i < dim; i++) {
+		if (p[i] < lo[i] || p[i] > hi[i]) return ANNfalse;
+	}
+	return ANNtrue;
+}
+
+//----------------------------------------------------------------------
+//	Error handler
+//----------------------------------------------------------------------
+
+void annError(char *msg, ANNerr level)
+{
+	if (level == ANNabort) {
+		cerr << "ANN: ERROR------->" << msg << "<-------------ERROR\n";
+		exit(1);
+	}
+	else {
+		cerr << "ANN: WARNING----->" << msg << "<-------------WARNING\n";
+	}
+}
+
+//----------------------------------------------------------------------
+//	Limit on number of points visited
+//		We have an option for terminating the search early if the
+//		number of points visited exceeds some threshold.  If the
+//		threshold is 0 (its default)  this means there is no limit
+//		and the algorithm applies its normal termination condition.
+//		This is for applications where there are real time constraints
+//		on the running time of the algorithm.
+//----------------------------------------------------------------------
+
+int	ANNmaxPtsVisited = 0;	// maximum number of pts visited
+int	ANNptsVisited;			// number of pts visited in search
+
+//----------------------------------------------------------------------
+//	Global function declarations
+//----------------------------------------------------------------------
+
+void annMaxPtsVisit(			// set limit on max. pts to visit in search
+	int					maxPts)			// the limit
+{
+	ANNmaxPtsVisited = maxPts;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Makefile	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,121 @@
+#-----------------------------------------------------------------------------
+# Makefile for ANN library
+#----------------------------------------------------------------------
+# Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+# David Mount.  All Rights Reserved.
+# 
+# This software and related documentation is part of the Approximate
+# Nearest Neighbor Library (ANN).  This software is provided under
+# the provisions of the Lesser GNU Public License (LGPL).  See the
+# file ../ReadMe.txt for further information.
+# 
+# The University of Maryland (U.M.) and the authors make no
+# representations about the suitability or fitness of this software for
+# any purpose.  It is provided "as is" without express or implied
+# warranty.
+#----------------------------------------------------------------------
+# History:
+#	Revision 0.1  03/04/98
+#		Initial release
+#	Revision 1.0  04/01/05
+#		Renamed files from .cc to .cpp for Microsoft Visual C++
+#		Added kd_dump.cpp
+#	Revision 1.1  05/03/05
+#		Added kd_fix_rad_search.cpp and bd_fix_rad_search.cpp
+#----------------------------------------------------------------------
+
+#-----------------------------------------------------------------------------
+# Some basic definitions:
+#		BASEDIR		where include, src, lib, ... are
+#		INCLIB		include directory
+#		LIBLIB		library directory
+#-----------------------------------------------------------------------------
+BASEDIR	= ..
+INCDIR	= $(BASEDIR)/include
+LIBDIR	= $(BASEDIR)/lib
+
+SOURCES = ANN.cpp brute.cpp kd_tree.cpp kd_util.cpp kd_split.cpp \
+	kd_dump.cpp kd_search.cpp kd_pr_search.cpp kd_fix_rad_search.cpp \
+	bd_tree.cpp bd_search.cpp bd_pr_search.cpp bd_fix_rad_search.cpp \
+	perf.cpp
+
+HEADERS = kd_tree.h kd_split.h kd_util.h kd_search.h \
+	kd_pr_search.h kd_fix_rad_search.h perf.h pr_queue.h pr_queue_k.h
+
+OBJECTS = $(SOURCES:.cpp=.o)
+
+#-----------------------------------------------------------------------------
+# Make the library
+#-----------------------------------------------------------------------------
+
+default:
+	@echo "Specify a target configuration"
+
+targets: $(LIBDIR)/$(ANNLIB)
+
+$(LIBDIR)/$(ANNLIB): $(OBJECTS)
+	$(MAKELIB) $(ANNLIB) $(OBJECTS)
+	$(RANLIB) $(ANNLIB)
+	mv $(ANNLIB) $(LIBDIR)
+
+#-----------------------------------------------------------------------------
+# Make object files
+#-----------------------------------------------------------------------------
+
+ANN.o: ANN.cpp
+	$(C++) -c -I$(INCDIR) $(CFLAGS) ANN.cpp
+
+brute.o: brute.cpp
+	$(C++) -c -I$(INCDIR) $(CFLAGS) brute.cpp
+
+kd_tree.o: kd_tree.cpp
+	$(C++) -c -I$(INCDIR) $(CFLAGS) kd_tree.cpp
+
+kd_util.o: kd_util.cpp
+	$(C++) -c -I$(INCDIR) $(CFLAGS) kd_util.cpp
+
+kd_split.o: kd_split.cpp
+	$(C++) -c -I$(INCDIR) $(CFLAGS) kd_split.cpp
+
+kd_search.o: kd_search.cpp
+	$(C++) -c -I$(INCDIR) $(CFLAGS) kd_search.cpp
+
+kd_pr_search.o: kd_pr_search.cpp
+	$(C++) -c -I$(INCDIR) $(CFLAGS) kd_pr_search.cpp
+
+kd_fix_rad_search.o: kd_fix_rad_search.cpp
+	$(C++) -c -I$(INCDIR) $(CFLAGS) kd_fix_rad_search.cpp
+
+kd_dump.o: kd_dump.cpp
+	$(C++) -c -I$(INCDIR) $(CFLAGS) kd_dump.cpp
+
+bd_tree.o: bd_tree.cpp
+	$(C++) -c -I$(INCDIR) $(CFLAGS) bd_tree.cpp
+
+bd_search.o: bd_search.cpp
+	$(C++) -c -I$(INCDIR) $(CFLAGS) bd_search.cpp
+
+bd_pr_search.o: bd_pr_search.cpp
+	$(C++) -c -I$(INCDIR) $(CFLAGS) bd_pr_search.cpp
+
+bd_fix_rad_search.o: bd_fix_rad_search.cpp
+	$(C++) -c -I$(INCDIR) $(CFLAGS) bd_fix_rad_search.cpp
+
+perf.o: perf.cpp
+	$(C++) -c -I$(INCDIR) $(CFLAGS) perf.cpp
+
+#-----------------------------------------------------------------------------
+# Configuration definitions
+#-----------------------------------------------------------------------------
+
+include ../Make-config
+
+#-----------------------------------------------------------------------------
+# Cleaning
+#-----------------------------------------------------------------------------
+
+clean:
+	-rm -f *.o core
+
+realclean: clean
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/bd_fix_rad_search.cpp	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,61 @@
+//----------------------------------------------------------------------
+// File:			bd_fix_rad_search.cpp
+// Programmer:		David Mount
+// Description:		Standard bd-tree search
+// Last modified:	05/03/05 (Version 1.1)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 1.1  05/03/05
+//		Initial release
+//----------------------------------------------------------------------
+
+#include "bd_tree.h"					// bd-tree declarations
+#include "kd_fix_rad_search.h"			// kd-tree FR search declarations
+
+//----------------------------------------------------------------------
+//	Approximate searching for bd-trees.
+//		See the file kd_FR_search.cpp for general information on the
+//		approximate nearest neighbor search algorithm.  Here we
+//		include the extensions for shrinking nodes.
+//----------------------------------------------------------------------
+
+//----------------------------------------------------------------------
+//	bd_shrink::ann_FR_search - search a shrinking node
+//----------------------------------------------------------------------
+
+void ANNbd_shrink::ann_FR_search(ANNdist box_dist)
+{
+												// check dist calc term cond.
+	if (ANNmaxPtsVisited != 0 && ANNptsVisited > ANNmaxPtsVisited) return;
+
+	ANNdist inner_dist = 0;						// distance to inner box
+	for (int i = 0; i < n_bnds; i++) {			// is query point in the box?
+		if (bnds[i].out(ANNkdFRQ)) {			// outside this bounding side?
+												// add to inner distance
+			inner_dist = (ANNdist) ANN_SUM(inner_dist, bnds[i].dist(ANNkdFRQ));
+		}
+	}
+	if (inner_dist <= box_dist) {				// if inner box is closer
+		child[ANN_IN]->ann_FR_search(inner_dist);// search inner child first
+		child[ANN_OUT]->ann_FR_search(box_dist);// ...then outer child
+	}
+	else {										// if outer box is closer
+		child[ANN_OUT]->ann_FR_search(box_dist);// search outer child first
+		child[ANN_IN]->ann_FR_search(inner_dist);// ...then outer child
+	}
+	ANN_FLOP(3*n_bnds)							// increment floating ops
+	ANN_SHR(1)									// one more shrinking node
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/bd_pr_search.cpp	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,62 @@
+//----------------------------------------------------------------------
+// File:			bd_pr_search.cpp
+// Programmer:		David Mount
+// Description:		Priority search for bd-trees
+// Last modified:	01/04/05 (Version 1.0)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+//History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//----------------------------------------------------------------------
+
+#include "bd_tree.h"					// bd-tree declarations
+#include "kd_pr_search.h"				// kd priority search declarations
+
+//----------------------------------------------------------------------
+//	Approximate priority searching for bd-trees.
+//		See the file kd_pr_search.cc for general information on the
+//		approximate nearest neighbor priority search algorithm.  Here
+//		we include the extensions for shrinking nodes.
+//----------------------------------------------------------------------
+
+//----------------------------------------------------------------------
+//	bd_shrink::ann_search - search a shrinking node
+//----------------------------------------------------------------------
+
+void ANNbd_shrink::ann_pri_search(ANNdist box_dist)
+{
+	ANNdist inner_dist = 0;						// distance to inner box
+	for (int i = 0; i < n_bnds; i++) {			// is query point in the box?
+		if (bnds[i].out(ANNprQ)) {				// outside this bounding side?
+												// add to inner distance
+			inner_dist = (ANNdist) ANN_SUM(inner_dist, bnds[i].dist(ANNprQ));
+		}
+	}
+	if (inner_dist <= box_dist) {				// if inner box is closer
+		if (child[ANN_OUT] != KD_TRIVIAL)		// enqueue outer if not trivial
+			ANNprBoxPQ->insert(box_dist,child[ANN_OUT]);
+												// continue with inner child
+		child[ANN_IN]->ann_pri_search(inner_dist);
+	}
+	else {										// if outer box is closer
+		if (child[ANN_IN] != KD_TRIVIAL)		// enqueue inner if not trivial
+			ANNprBoxPQ->insert(inner_dist,child[ANN_IN]);
+												// continue with outer child
+		child[ANN_OUT]->ann_pri_search(box_dist);
+	}
+	ANN_FLOP(3*n_bnds)							// increment floating ops
+	ANN_SHR(1)									// one more shrinking node
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/bd_search.cpp	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,61 @@
+//----------------------------------------------------------------------
+// File:			bd_search.cpp
+// Programmer:		David Mount
+// Description:		Standard bd-tree search
+// Last modified:	01/04/05 (Version 1.0)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//----------------------------------------------------------------------
+
+#include "bd_tree.h"					// bd-tree declarations
+#include "kd_search.h"					// kd-tree search declarations
+
+//----------------------------------------------------------------------
+//	Approximate searching for bd-trees.
+//		See the file kd_search.cpp for general information on the
+//		approximate nearest neighbor search algorithm.  Here we
+//		include the extensions for shrinking nodes.
+//----------------------------------------------------------------------
+
+//----------------------------------------------------------------------
+//	bd_shrink::ann_search - search a shrinking node
+//----------------------------------------------------------------------
+
+void ANNbd_shrink::ann_search(ANNdist box_dist)
+{
+												// check dist calc term cond.
+	if (ANNmaxPtsVisited != 0 && ANNptsVisited > ANNmaxPtsVisited) return;
+
+	ANNdist inner_dist = 0;						// distance to inner box
+	for (int i = 0; i < n_bnds; i++) {			// is query point in the box?
+		if (bnds[i].out(ANNkdQ)) {				// outside this bounding side?
+												// add to inner distance
+			inner_dist = (ANNdist) ANN_SUM(inner_dist, bnds[i].dist(ANNkdQ));
+		}
+	}
+	if (inner_dist <= box_dist) {				// if inner box is closer
+		child[ANN_IN]->ann_search(inner_dist);	// search inner child first
+		child[ANN_OUT]->ann_search(box_dist);	// ...then outer child
+	}
+	else {										// if outer box is closer
+		child[ANN_OUT]->ann_search(box_dist);	// search outer child first
+		child[ANN_IN]->ann_search(inner_dist);	// ...then outer child
+	}
+	ANN_FLOP(3*n_bnds)							// increment floating ops
+	ANN_SHR(1)									// one more shrinking node
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/bd_tree.cpp	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,417 @@
+//----------------------------------------------------------------------
+// File:			bd_tree.cpp
+// Programmer:		David Mount
+// Description:		Basic methods for bd-trees.
+// Last modified:	01/04/05 (Version 1.0)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//	Revision l.0  04/01/05
+//		Fixed centroid shrink threshold condition to depend on the
+//			dimension.
+//		Moved dump routine to kd_dump.cpp.
+//----------------------------------------------------------------------
+
+#include "bd_tree.h"					// bd-tree declarations
+#include "kd_util.h"					// kd-tree utilities
+#include "kd_split.h"					// kd-tree splitting rules
+
+#include <ANN/ANNperf.h>				// performance evaluation
+
+//----------------------------------------------------------------------
+//	Printing a bd-tree 
+//		These routines print a bd-tree.   See the analogous procedure
+//		in kd_tree.cpp for more information.
+//----------------------------------------------------------------------
+
+void ANNbd_shrink::print(				// print shrinking node
+		int level,						// depth of node in tree
+		ostream &out)					// output stream
+{
+	child[ANN_OUT]->print(level+1, out);		// print out-child
+
+	out << "    ";
+	for (int i = 0; i < level; i++)				// print indentation
+		out << "..";
+	out << "Shrink";
+	for (int j = 0; j < n_bnds; j++) {			// print sides, 2 per line
+		if (j % 2 == 0) {
+			out << "\n";						// newline and indentation
+			for (int i = 0; i < level+2; i++) out << "  ";
+		}
+		out << "  ([" << bnds[j].cd << "]"
+			 << (bnds[j].sd > 0 ? ">=" : "< ")
+			 << bnds[j].cv << ")";
+	}
+	out << "\n";
+
+	child[ANN_IN]->print(level+1, out);			// print in-child
+}
+
+//----------------------------------------------------------------------
+//	kd_tree statistics utility (for performance evaluation)
+//		This routine computes various statistics information for
+//		shrinking nodes.  See file kd_tree.cpp for more information.
+//----------------------------------------------------------------------
+
+void ANNbd_shrink::getStats(					// get subtree statistics
+	int					dim,					// dimension of space
+	ANNkdStats			&st,					// stats (modified)
+	ANNorthRect			&bnd_box)				// bounding box
+{
+	ANNkdStats ch_stats;						// stats for children
+	ANNorthRect inner_box(dim);					// inner box of shrink
+
+	annBnds2Box(bnd_box,						// enclosing box
+				dim,							// dimension
+				n_bnds,							// number of bounds
+				bnds,							// bounds array
+				inner_box);						// inner box (modified)
+												// get stats for inner child
+	ch_stats.reset();							// reset
+	child[ANN_IN]->getStats(dim, ch_stats, inner_box);
+	st.merge(ch_stats);							// merge them
+												// get stats for outer child
+	ch_stats.reset();							// reset
+	child[ANN_OUT]->getStats(dim, ch_stats, bnd_box);
+	st.merge(ch_stats);							// merge them
+
+	st.depth++;									// increment depth
+	st.n_shr++;									// increment number of shrinks
+}
+
+//----------------------------------------------------------------------
+// bd-tree constructor
+//		This is the main constructor for bd-trees given a set of points.
+//		It first builds a skeleton kd-tree as a basis, then computes the
+//		bounding box of the data points, and then invokes rbd_tree() to
+//		actually build the tree, passing it the appropriate splitting
+//		and shrinking information.
+//----------------------------------------------------------------------
+
+ANNkd_ptr rbd_tree(						// recursive construction of bd-tree
+	ANNpointArray		pa,				// point array
+	ANNidxArray			pidx,			// point indices to store in subtree
+	int					n,				// number of points
+	int					dim,			// dimension of space
+	int					bsp,			// bucket space
+	ANNorthRect			&bnd_box,		// bounding box for current node
+	ANNkd_splitter		splitter,		// splitting routine
+	ANNshrinkRule		shrink);		// shrinking rule
+
+ANNbd_tree::ANNbd_tree(					// construct from point array
+	ANNpointArray		pa,				// point array (with at least n pts)
+	int					n,				// number of points
+	int					dd,				// dimension
+	int					bs,				// bucket size
+	ANNsplitRule		split,			// splitting rule
+	ANNshrinkRule		shrink)			// shrinking rule
+	: ANNkd_tree(n, dd, bs)				// build skeleton base tree
+{
+	pts = pa;							// where the points are
+	if (n == 0) return;					// no points--no sweat
+
+	ANNorthRect bnd_box(dd);			// bounding box for points
+										// construct bounding rectangle
+	annEnclRect(pa, pidx, n, dd, bnd_box);
+										// copy to tree structure
+	bnd_box_lo = annCopyPt(dd, bnd_box.lo);
+	bnd_box_hi = annCopyPt(dd, bnd_box.hi);
+
+	switch (split) {					// build by rule
+	case ANN_KD_STD:					// standard kd-splitting rule
+		root = rbd_tree(pa, pidx, n, dd, bs, bnd_box, kd_split, shrink);
+		break;
+	case ANN_KD_MIDPT:					// midpoint split
+		root = rbd_tree(pa, pidx, n, dd, bs, bnd_box, midpt_split, shrink);
+		break;
+	case ANN_KD_SUGGEST:				// best (in our opinion)
+	case ANN_KD_SL_MIDPT:				// sliding midpoint split
+		root = rbd_tree(pa, pidx, n, dd, bs, bnd_box, sl_midpt_split, shrink);
+		break;
+	case ANN_KD_FAIR:					// fair split
+		root = rbd_tree(pa, pidx, n, dd, bs, bnd_box, fair_split, shrink);
+		break;
+	case ANN_KD_SL_FAIR:				// sliding fair split
+		root = rbd_tree(pa, pidx, n, dd, bs,
+						bnd_box, sl_fair_split, shrink);
+		break;
+	default:
+		annError("Illegal splitting method", ANNabort);
+	}
+}
+
+//----------------------------------------------------------------------
+//	Shrinking rules
+//----------------------------------------------------------------------
+
+enum ANNdecomp {SPLIT, SHRINK};			// decomposition methods
+
+//----------------------------------------------------------------------
+//	trySimpleShrink - Attempt a simple shrink
+//
+//		We compute the tight bounding box of the points, and compute
+//		the 2*dim ``gaps'' between the sides of the tight box and the
+//		bounding box.  If any of the gaps is large enough relative to
+//		the longest side of the tight bounding box, then we shrink
+//		all sides whose gaps are large enough.  (The reason for
+//		comparing against the tight bounding box, is that after
+//		shrinking the longest box size will decrease, and if we use
+//		the standard bounding box, we may decide to shrink twice in
+//		a row.  Since the tight box is fixed, we cannot shrink twice
+//		consecutively.)
+//----------------------------------------------------------------------
+const float BD_GAP_THRESH = 0.5;		// gap threshold (must be < 1)
+const int   BD_CT_THRESH  = 2;			// min number of shrink sides
+
+ANNdecomp trySimpleShrink(				// try a simple shrink
+	ANNpointArray		pa,				// point array
+	ANNidxArray			pidx,			// point indices to store in subtree
+	int					n,				// number of points
+	int					dim,			// dimension of space
+	const ANNorthRect	&bnd_box,		// current bounding box
+	ANNorthRect			&inner_box)		// inner box if shrinking (returned)
+{
+	int i;
+												// compute tight bounding box
+	annEnclRect(pa, pidx, n, dim, inner_box);
+
+	ANNcoord max_length = 0;					// find longest box side
+	for (i = 0; i < dim; i++) {
+		ANNcoord length = inner_box.hi[i] - inner_box.lo[i];
+		if (length > max_length) {
+			max_length = length;
+		}
+	}
+
+	int shrink_ct = 0;							// number of sides we shrunk
+	for (i = 0; i < dim; i++) {					// select which sides to shrink
+												// gap between boxes
+		ANNcoord gap_hi = bnd_box.hi[i] - inner_box.hi[i];
+												// big enough gap to shrink?
+		if (gap_hi < max_length*BD_GAP_THRESH)
+			inner_box.hi[i] = bnd_box.hi[i];	// no - expand
+		else shrink_ct++;						// yes - shrink this side
+
+												// repeat for high side
+		ANNcoord gap_lo = inner_box.lo[i] - bnd_box.lo[i];
+		if (gap_lo < max_length*BD_GAP_THRESH)
+			inner_box.lo[i] = bnd_box.lo[i];	// no - expand
+		else shrink_ct++;						// yes - shrink this side
+	}
+
+	if (shrink_ct >= BD_CT_THRESH)				// did we shrink enough sides?
+		 return SHRINK;
+	else return SPLIT;
+}
+
+//----------------------------------------------------------------------
+//	tryCentroidShrink - Attempt a centroid shrink
+//
+//	We repeatedly apply the splitting rule, always to the larger subset
+//	of points, until the number of points decreases by the constant
+//	fraction BD_FRACTION.  If this takes more than dim*BD_MAX_SPLIT_FAC
+//	splits for this to happen, then we shrink to the final inner box
+//	Otherwise we split.
+//----------------------------------------------------------------------
+
+const float	BD_MAX_SPLIT_FAC = 0.5;		// maximum number of splits allowed
+const float	BD_FRACTION = 0.5;			// ...to reduce points by this fraction
+										// ...This must be < 1.
+
+ANNdecomp tryCentroidShrink(			// try a centroid shrink
+	ANNpointArray		pa,				// point array
+	ANNidxArray			pidx,			// point indices to store in subtree
+	int					n,				// number of points
+	int					dim,			// dimension of space
+	const ANNorthRect	&bnd_box,		// current bounding box
+	ANNkd_splitter		splitter,		// splitting procedure
+	ANNorthRect			&inner_box)		// inner box if shrinking (returned)
+{
+	int n_sub = n;						// number of points in subset
+	int n_goal = (int) (n*BD_FRACTION); // number of point in goal
+	int n_splits = 0;					// number of splits needed
+										// initialize inner box to bounding box
+	annAssignRect(dim, inner_box, bnd_box);
+
+	while (n_sub > n_goal) {			// keep splitting until goal reached
+		int cd;							// cut dim from splitter (ignored)
+		ANNcoord cv;					// cut value from splitter (ignored)
+		int n_lo;						// number of points on low side
+										// invoke splitting procedure
+		(*splitter)(pa, pidx, inner_box, n_sub, dim, cd, cv, n_lo);
+		n_splits++;						// increment split count
+
+		if (n_lo >= n_sub/2) {			// most points on low side
+			inner_box.hi[cd] = cv;		// collapse high side
+			n_sub = n_lo;				// recurse on lower points
+		}
+		else {							// most points on high side
+			inner_box.lo[cd] = cv;		// collapse low side
+			pidx += n_lo;				// recurse on higher points
+			n_sub -= n_lo;
+		}
+	}
+    if (n_splits > dim*BD_MAX_SPLIT_FAC)// took too many splits
+		return SHRINK;					// shrink to final subset
+	else
+		return SPLIT;
+}
+
+//----------------------------------------------------------------------
+//	selectDecomp - select which decomposition to use
+//----------------------------------------------------------------------
+
+ANNdecomp selectDecomp(			// select decomposition method
+	ANNpointArray		pa,				// point array
+	ANNidxArray			pidx,			// point indices to store in subtree
+	int					n,				// number of points
+	int					dim,			// dimension of space
+	const ANNorthRect	&bnd_box,		// current bounding box
+	ANNkd_splitter		splitter,		// splitting procedure
+	ANNshrinkRule		shrink,			// shrinking rule
+	ANNorthRect			&inner_box)		// inner box if shrinking (returned)
+{
+	ANNdecomp decomp = SPLIT;			// decomposition
+
+	switch (shrink) {					// check shrinking rule
+	case ANN_BD_NONE:					// no shrinking allowed
+		decomp = SPLIT;
+		break;
+	case ANN_BD_SUGGEST:				// author's suggestion
+	case ANN_BD_SIMPLE:					// simple shrink
+		decomp = trySimpleShrink(
+				pa, pidx,				// points and indices
+				n, dim,					// number of points and dimension
+				bnd_box,				// current bounding box
+				inner_box);				// inner box if shrinking (returned)
+		break;
+	case ANN_BD_CENTROID:				// centroid shrink
+		decomp = tryCentroidShrink(
+				pa, pidx,				// points and indices
+				n, dim,					// number of points and dimension
+				bnd_box,				// current bounding box
+				splitter,				// splitting procedure
+				inner_box);				// inner box if shrinking (returned)
+		break;
+	default:
+		annError("Illegal shrinking rule", ANNabort);
+	}
+	return decomp;
+}
+
+//----------------------------------------------------------------------
+//	rbd_tree - recursive procedure to build a bd-tree
+//
+//		This is analogous to rkd_tree, but for bd-trees.  See the
+//		procedure rkd_tree() in kd_split.cpp for more information.
+//
+//		If the number of points falls below the bucket size, then a
+//		leaf node is created for the points.  Otherwise we invoke the
+//		procedure selectDecomp() which determines whether we are to
+//		split or shrink.  If splitting is chosen, then we essentially
+//		do exactly as rkd_tree() would, and invoke the specified
+//		splitting procedure to the points.  Otherwise, the selection
+//		procedure returns a bounding box, from which we extract the
+//		appropriate shrinking bounds, and create a shrinking node.
+//		Finally the points are subdivided, and the procedure is
+//		invoked recursively on the two subsets to form the children.
+//----------------------------------------------------------------------
+
+ANNkd_ptr rbd_tree(				// recursive construction of bd-tree
+	ANNpointArray		pa,				// point array
+	ANNidxArray			pidx,			// point indices to store in subtree
+	int					n,				// number of points
+	int					dim,			// dimension of space
+	int					bsp,			// bucket space
+	ANNorthRect			&bnd_box,		// bounding box for current node
+	ANNkd_splitter		splitter,		// splitting routine
+	ANNshrinkRule		shrink)			// shrinking rule
+{
+	ANNdecomp decomp;					// decomposition method
+
+	ANNorthRect inner_box(dim);			// inner box (if shrinking)
+
+	if (n <= bsp) {						// n small, make a leaf node
+		if (n == 0)						// empty leaf node
+			return KD_TRIVIAL;			// return (canonical) empty leaf
+		else							// construct the node and return
+			return new ANNkd_leaf(n, pidx); 
+	}
+	
+	decomp = selectDecomp(				// select decomposition method
+				pa, pidx,				// points and indices
+				n, dim,					// number of points and dimension
+				bnd_box,				// current bounding box
+				splitter, shrink,		// splitting/shrinking methods
+				inner_box);				// inner box if shrinking (returned)
+	
+	if (decomp == SPLIT) {				// split selected
+		int cd;							// cutting dimension
+		ANNcoord cv;					// cutting value
+		int n_lo;						// number on low side of cut
+										// invoke splitting procedure
+		(*splitter)(pa, pidx, bnd_box, n, dim, cd, cv, n_lo);
+
+		ANNcoord lv = bnd_box.lo[cd];	// save bounds for cutting dimension
+		ANNcoord hv = bnd_box.hi[cd];
+
+		bnd_box.hi[cd] = cv;			// modify bounds for left subtree
+		ANNkd_ptr lo = rbd_tree(		// build left subtree
+				pa, pidx, n_lo,			// ...from pidx[0..n_lo-1]
+				dim, bsp, bnd_box, splitter, shrink);
+		bnd_box.hi[cd] = hv;			// restore bounds
+
+		bnd_box.lo[cd] = cv;			// modify bounds for right subtree
+		ANNkd_ptr hi = rbd_tree(		// build right subtree
+				pa, pidx + n_lo, n-n_lo,// ...from pidx[n_lo..n-1]
+				dim, bsp, bnd_box, splitter, shrink);
+		bnd_box.lo[cd] = lv;			// restore bounds
+										// create the splitting node
+		return new ANNkd_split(cd, cv, lv, hv, lo, hi);
+	}
+	else {								// shrink selected
+		int n_in;						// number of points in box
+		int n_bnds;						// number of bounding sides
+
+		annBoxSplit(					// split points around inner box
+				pa,						// points to split
+				pidx,					// point indices
+				n,						// number of points
+				dim,					// dimension
+				inner_box,				// inner box
+				n_in);					// number of points inside (returned)
+
+		ANNkd_ptr in = rbd_tree(		// build inner subtree pidx[0..n_in-1]
+				pa, pidx, n_in, dim, bsp, inner_box, splitter, shrink);
+		ANNkd_ptr out = rbd_tree(		// build outer subtree pidx[n_in..n]
+				pa, pidx+n_in, n - n_in, dim, bsp, bnd_box, splitter, shrink);
+
+		ANNorthHSArray bnds = NULL;		// bounds (alloc in Box2Bnds and
+										// ...freed in bd_shrink destroyer)
+
+		annBox2Bnds(					// convert inner box to bounds
+				inner_box,				// inner box
+				bnd_box,				// enclosing box
+				dim,					// dimension
+				n_bnds,					// number of bounds (returned)
+				bnds);					// bounds array (modified)
+
+										// return shrinking node
+		return new ANNbd_shrink(n_bnds, bnds, in, out);
+	}
+} 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/bd_tree.h	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,100 @@
+//----------------------------------------------------------------------
+// File:			bd_tree.h
+// Programmer:		David Mount
+// Description:		Declarations for standard bd-tree routines
+// Last modified:	01/04/05 (Version 1.0)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//	Revision 1.0  04/01/05
+//		Changed IN, OUT to ANN_IN, ANN_OUT
+//----------------------------------------------------------------------
+
+#ifndef ANN_bd_tree_H
+#define ANN_bd_tree_H
+
+#include <ANN/ANNx.h>					// all ANN includes
+#include "kd_tree.h"					// kd-tree includes
+
+//----------------------------------------------------------------------
+//	bd-tree shrinking node.
+//		The main addition in the bd-tree is the shrinking node, which
+//		is declared here.
+//
+//		Shrinking nodes are defined by list of orthogonal halfspaces.
+//		These halfspaces define a (possibly unbounded) orthogonal
+//		rectangle.  There are two children, in and out.  Points that
+//		lie within this rectangle are stored in the in-child, and the
+//		other points are stored in the out-child.
+//
+//		We use a list of orthogonal halfspaces rather than an
+//		orthogonal rectangle object because typically the number of
+//		sides of the shrinking box will be much smaller than the
+//		worst case bound of 2*dim.
+//
+//		BEWARE: Note that constructor just copies the pointer to the
+//		bounding array, but the destructor deallocates it.  This is
+//		rather poor practice, but happens to be convenient.  The list
+//		is allocated in the bd-tree building procedure rbd_tree() just
+//		prior to construction, and is used for no other purposes.
+//
+//		WARNING: In the near neighbor searching code it is assumed that
+//		the list of bounding halfspaces is irredundant, meaning that there
+//		are no two distinct halfspaces in the list with the same outward
+//		pointing normals.
+//----------------------------------------------------------------------
+
+class ANNbd_shrink : public ANNkd_node	// splitting node of a kd-tree
+{
+	int					n_bnds;			// number of bounding halfspaces
+	ANNorthHSArray		bnds;			// list of bounding halfspaces
+	ANNkd_ptr			child[2];		// in and out children
+public:
+	ANNbd_shrink(						// constructor
+		int				nb,				// number of bounding halfspaces
+		ANNorthHSArray	bds,			// list of bounding halfspaces
+		ANNkd_ptr ic=NULL, ANNkd_ptr oc=NULL)	// children
+		{
+			n_bnds			= nb;				// cutting dimension
+			bnds			= bds;				// assign bounds
+			child[ANN_IN]	= ic;				// set children
+			child[ANN_OUT]	= oc;
+		}
+
+	~ANNbd_shrink()						// destructor
+		{
+			if (child[ANN_IN]!= NULL && child[ANN_IN]!=  KD_TRIVIAL) 
+				delete child[ANN_IN];
+			if (child[ANN_OUT]!= NULL&& child[ANN_OUT]!= KD_TRIVIAL) 
+				delete child[ANN_OUT];
+			if (bnds != NULL)
+				delete [] bnds;			// delete bounds
+		}
+
+	virtual void getStats(						// get tree statistics
+				int dim,						// dimension of space
+				ANNkdStats &st,					// statistics
+				ANNorthRect &bnd_box);			// bounding box
+	virtual void print(int level, ostream &out);// print node
+	virtual void dump(ostream &out);			// dump node
+
+	virtual void ann_search(ANNdist);			// standard search
+	virtual void ann_pri_search(ANNdist);		// priority search
+	virtual void ann_FR_search(ANNdist); 		// fixed-radius search
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/brute.cpp	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,109 @@
+//----------------------------------------------------------------------
+// File:			brute.cpp
+// Programmer:		Sunil Arya and David Mount
+// Description:		Brute-force nearest neighbors
+// Last modified:	05/03/05 (Version 1.1)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//	Revision 1.1  05/03/05
+//		Added fixed-radius kNN search
+//----------------------------------------------------------------------
+
+#include <ANN/ANNx.h>					// all ANN includes
+#include "pr_queue_k.h"					// k element priority queue
+
+//----------------------------------------------------------------------
+//		Brute-force search simply stores a pointer to the list of
+//		data points and searches linearly for the nearest neighbor.
+//		The k nearest neighbors are stored in a k-element priority
+//		queue (which is implemented in a pretty dumb way as well).
+//
+//		If ANN_ALLOW_SELF_MATCH is ANNfalse then data points at distance
+//		zero are not considered.
+//
+//		Note that the error bound eps is passed in, but it is ignored.
+//		These routines compute exact nearest neighbors (which is needed
+//		for validation purposes in ann_test.cpp).
+//----------------------------------------------------------------------
+
+ANNbruteForce::ANNbruteForce(			// constructor from point array
+	ANNpointArray		pa,				// point array
+	int					n,				// number of points
+	int					dd)				// dimension
+{
+	dim = dd;  n_pts = n;  pts = pa;
+}
+
+ANNbruteForce::~ANNbruteForce() { }		// destructor (empty)
+
+void ANNbruteForce::annkSearch(			// approx k near neighbor search
+	ANNpoint			q,				// query point
+	int					k,				// number of near neighbors to return
+	ANNidxArray			nn_idx,			// nearest neighbor indices (returned)
+	ANNdistArray		dd,				// dist to near neighbors (returned)
+	double				eps)			// error bound (ignored)
+{
+	ANNmin_k mk(k);						// construct a k-limited priority queue
+	int i;
+
+	if (k > n_pts) {					// too many near neighbors?
+		annError("Requesting more near neighbors than data points", ANNabort);
+	}
+										// run every point through queue
+	for (i = 0; i < n_pts; i++) {
+										// compute distance to point
+		ANNdist sqDist = annDist(dim, pts[i], q);
+		if (ANN_ALLOW_SELF_MATCH || sqDist != 0)
+			mk.insert(sqDist, i);
+	}
+	for (i = 0; i < k; i++) {			// extract the k closest points
+		dd[i] = mk.ith_smallest_key(i);
+		nn_idx[i] = mk.ith_smallest_info(i);
+	}
+}
+
+int ANNbruteForce::annkFRSearch(		// approx fixed-radius kNN search
+	ANNpoint			q,				// query point
+	ANNdist				sqRad,			// squared radius
+	int					k,				// number of near neighbors to return
+	ANNidxArray			nn_idx,			// nearest neighbor array (returned)
+	ANNdistArray		dd,				// dist to near neighbors (returned)
+	double				eps)			// error bound
+{
+	ANNmin_k mk(k);						// construct a k-limited priority queue
+	int i;
+	int pts_in_range = 0;				// number of points in query range
+										// run every point through queue
+	for (i = 0; i < n_pts; i++) {
+										// compute distance to point
+		ANNdist sqDist = annDist(dim, pts[i], q);
+		if (sqDist <= sqRad &&			// within radius bound
+			(ANN_ALLOW_SELF_MATCH || sqDist != 0)) { // ...and no self match
+			mk.insert(sqDist, i);
+			pts_in_range++;
+		}
+	}
+	for (i = 0; i < k; i++) {			// extract the k closest points
+		if (dd != NULL)
+			dd[i] = mk.ith_smallest_key(i);
+		if (nn_idx != NULL)
+			nn_idx[i] = mk.ith_smallest_info(i);
+	}
+
+	return pts_in_range;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/kd_dump.cpp	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,444 @@
+//----------------------------------------------------------------------
+// File:			kd_dump.cc
+// Programmer:		David Mount
+// Description:		Dump and Load for kd- and bd-trees
+// Last modified:	01/04/05 (Version 1.0)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//	Revision 1.0  04/01/05
+//		Moved dump out of kd_tree.cc into this file.
+//		Added kd-tree load constructor.
+//----------------------------------------------------------------------
+// This file contains routines for dumping kd-trees and bd-trees and
+// reloading them. (It is an abuse of policy to include both kd- and
+// bd-tree routines in the same file, sorry.  There should be no problem
+// in deleting the bd- versions of the routines if they are not
+// desired.)
+//----------------------------------------------------------------------
+
+#include "kd_tree.h"					// kd-tree declarations
+#include "bd_tree.h"					// bd-tree declarations
+
+using namespace std;					// make std:: available
+
+//----------------------------------------------------------------------
+//		Constants
+//----------------------------------------------------------------------
+
+const int		STRING_LEN		= 500;	// maximum string length
+const double	EPSILON			= 1E-5; // small number for float comparison
+
+enum ANNtreeType {KD_TREE, BD_TREE};	// tree types (used in loading)
+
+//----------------------------------------------------------------------
+//		Procedure declarations
+//----------------------------------------------------------------------
+
+static ANNkd_ptr annReadDump(			// read dump file
+	istream				&in,					// input stream
+	ANNtreeType			tree_type,				// type of tree expected
+	ANNpointArray		&the_pts,				// new points (if applic)
+	ANNidxArray			&the_pidx,				// point indices (returned)
+	int					&the_dim,				// dimension (returned)
+	int					&the_n_pts,				// number of points (returned)
+	int					&the_bkt_size,			// bucket size (returned)
+	ANNpoint			&the_bnd_box_lo,		// low bounding point
+	ANNpoint			&the_bnd_box_hi);		// high bounding point
+
+static ANNkd_ptr annReadTree(			// read tree-part of dump file
+	istream				&in,					// input stream
+	ANNtreeType			tree_type,				// type of tree expected
+	ANNidxArray			the_pidx,				// point indices (modified)
+	int					&next_idx);				// next index (modified)
+
+//----------------------------------------------------------------------
+//	ANN kd- and bd-tree Dump Format
+//		The dump file begins with a header containing the version of
+//		ANN, an optional section containing the points, followed by
+//		a description of the tree.	The tree is printed in preorder.
+//
+//		Format:
+//		#ANN <version number> <comments> [END_OF_LINE]
+//		points <dim> <n_pts>			(point coordinates: this is optional)
+//		0 <xxx> <xxx> ... <xxx>			(point indices and coordinates)
+//		1 <xxx> <xxx> ... <xxx>
+//		  ...
+//		tree <dim> <n_pts> <bkt_size>
+//		<xxx> <xxx> ... <xxx>			(lower end of bounding box)
+//		<xxx> <xxx> ... <xxx>			(upper end of bounding box)
+//				If the tree is null, then a single line "null" is
+//				output.	 Otherwise the nodes of the tree are printed
+//				one per line in preorder.  Leaves and splitting nodes 
+//				have the following formats:
+//		Leaf node:
+//				leaf <n_pts> <bkt[0]> <bkt[1]> ... <bkt[n-1]>
+//		Splitting nodes:
+//				split <cut_dim> <cut_val> <lo_bound> <hi_bound>
+//
+//		For bd-trees:
+//
+//		Shrinking nodes:
+//				shrink <n_bnds>
+//						<cut_dim> <cut_val> <side>
+//						<cut_dim> <cut_val> <side>
+//						... (repeated n_bnds times)
+//----------------------------------------------------------------------
+
+void ANNkd_tree::Dump(					// dump entire tree
+		ANNbool with_pts,				// print points as well?
+		ostream &out)					// output stream
+{
+	out << "#ANN " << ANNversion << "\n";
+	out.precision(ANNcoordPrec);		// use full precision in dumping
+	if (with_pts) {						// print point coordinates
+		out << "points " << dim << " " << n_pts << "\n";
+		for (int i = 0; i < n_pts; i++) {
+			out << i << " ";
+			annPrintPt(pts[i], dim, out);
+			out << "\n";
+		}
+	}
+	out << "tree "						// print tree elements
+		<< dim << " "
+		<< n_pts << " "
+		<< bkt_size << "\n";
+
+	annPrintPt(bnd_box_lo, dim, out);	// print lower bound
+	out << "\n";
+	annPrintPt(bnd_box_hi, dim, out);	// print upper bound
+	out << "\n";
+
+	if (root == NULL)					// empty tree?
+		out << "null\n";
+	else {
+		root->dump(out);				// invoke printing at root
+	}
+	out.precision(0);					// restore default precision
+}
+
+void ANNkd_split::dump(					// dump a splitting node
+		ostream &out)					// output stream
+{
+	out << "split " << cut_dim << " " << cut_val << " ";
+	out << cd_bnds[ANN_LO] << " " << cd_bnds[ANN_HI] << "\n";
+
+	child[ANN_LO]->dump(out);			// print low child
+	child[ANN_HI]->dump(out);			// print high child
+}
+
+void ANNkd_leaf::dump(					// dump a leaf node
+		ostream &out)					// output stream
+{
+	if (this == KD_TRIVIAL) {			// canonical trivial leaf node
+		out << "leaf 0\n";				// leaf no points
+	}
+	else{
+		out << "leaf " << n_pts;
+		for (int j = 0; j < n_pts; j++) {
+			out << " " << bkt[j];
+		}
+		out << "\n";
+	}
+}
+
+void ANNbd_shrink::dump(				// dump a shrinking node
+		ostream &out)					// output stream
+{
+	out << "shrink " << n_bnds << "\n";
+	for (int j = 0; j < n_bnds; j++) {
+		out << bnds[j].cd << " " << bnds[j].cv << " " << bnds[j].sd << "\n";
+	}
+	child[ANN_IN]->dump(out);			// print in-child
+	child[ANN_OUT]->dump(out);			// print out-child
+}
+
+//----------------------------------------------------------------------
+// Load kd-tree from dump file
+//		This rebuilds a kd-tree which was dumped to a file.	 The dump
+//		file contains all the basic tree information according to a
+//		preorder traversal.	 We assume that the dump file also contains
+//		point data.	 (This is to guarantee the consistency of the tree.)
+//		If not, then an error is generated.
+//
+//		Indirectly, this procedure allocates space for points, point
+//		indices, all nodes in the tree, and the bounding box for the
+//		tree.  When the tree is destroyed, all but the points are
+//		deallocated.
+//
+//		This routine calls annReadDump to do all the work.
+//----------------------------------------------------------------------
+
+ANNkd_tree::ANNkd_tree(					// build from dump file
+	istream				&in)					// input stream for dump file
+{
+	int the_dim;								// local dimension
+	int the_n_pts;								// local number of points
+	int the_bkt_size;							// local number of points
+	ANNpoint the_bnd_box_lo;					// low bounding point
+	ANNpoint the_bnd_box_hi;					// high bounding point
+	ANNpointArray the_pts;						// point storage
+	ANNidxArray the_pidx;						// point index storage
+	ANNkd_ptr the_root;							// root of the tree
+
+	the_root = annReadDump(						// read the dump file
+		in,										// input stream
+		KD_TREE,								// expecting a kd-tree
+		the_pts,								// point array (returned)
+		the_pidx,								// point indices (returned)
+		the_dim, the_n_pts, the_bkt_size,		// basic tree info (returned)
+		the_bnd_box_lo, the_bnd_box_hi);		// bounding box info (returned)
+
+												// create a skeletal tree
+	SkeletonTree(the_n_pts, the_dim, the_bkt_size, the_pts, the_pidx);
+
+	bnd_box_lo = the_bnd_box_lo;
+	bnd_box_hi = the_bnd_box_hi;
+
+	root = the_root;							// set the root
+}
+
+ANNbd_tree::ANNbd_tree(					// build bd-tree from dump file
+	istream				&in) : ANNkd_tree()		// input stream for dump file
+{
+	int the_dim;								// local dimension
+	int the_n_pts;								// local number of points
+	int the_bkt_size;							// local number of points
+	ANNpoint the_bnd_box_lo;					// low bounding point
+	ANNpoint the_bnd_box_hi;					// high bounding point
+	ANNpointArray the_pts;						// point storage
+	ANNidxArray the_pidx;						// point index storage
+	ANNkd_ptr the_root;							// root of the tree
+
+	the_root = annReadDump(						// read the dump file
+		in,										// input stream
+		BD_TREE,								// expecting a bd-tree
+		the_pts,								// point array (returned)
+		the_pidx,								// point indices (returned)
+		the_dim, the_n_pts, the_bkt_size,		// basic tree info (returned)
+		the_bnd_box_lo, the_bnd_box_hi);		// bounding box info (returned)
+
+												// create a skeletal tree
+	SkeletonTree(the_n_pts, the_dim, the_bkt_size, the_pts, the_pidx);
+	bnd_box_lo = the_bnd_box_lo;
+	bnd_box_hi = the_bnd_box_hi;
+
+	root = the_root;							// set the root
+}
+
+//----------------------------------------------------------------------
+//	annReadDump - read a dump file
+//
+//		This procedure reads a dump file, constructs a kd-tree
+//		and returns all the essential information needed to actually
+//		construct the tree.	 Because this procedure is used for
+//		constructing both kd-trees and bd-trees, the second argument
+//		is used to indicate which type of tree we are expecting.
+//----------------------------------------------------------------------
+
+static ANNkd_ptr annReadDump(
+	istream				&in,					// input stream
+	ANNtreeType			tree_type,				// type of tree expected
+	ANNpointArray		&the_pts,				// new points (returned)
+	ANNidxArray			&the_pidx,				// point indices (returned)
+	int					&the_dim,				// dimension (returned)
+	int					&the_n_pts,				// number of points (returned)
+	int					&the_bkt_size,			// bucket size (returned)
+	ANNpoint			&the_bnd_box_lo,		// low bounding point (ret'd)
+	ANNpoint			&the_bnd_box_hi)		// high bounding point (ret'd)
+{
+	int j;
+	char str[STRING_LEN];						// storage for string
+	char version[STRING_LEN];					// ANN version number
+	ANNkd_ptr the_root = NULL;
+
+	//------------------------------------------------------------------
+	//	Input file header
+	//------------------------------------------------------------------
+	in >> str;									// input header
+	if (strcmp(str, "#ANN") != 0) {				// incorrect header
+		annError("Incorrect header for dump file", ANNabort);
+	}
+	in.getline(version, STRING_LEN);			// get version (ignore)
+
+	//------------------------------------------------------------------
+	//	Input the points
+	//			An array the_pts is allocated and points are read from
+	//			the dump file.
+	//------------------------------------------------------------------
+	in >> str;									// get major heading
+	if (strcmp(str, "points") == 0) {			// points section
+		in >> the_dim;							// input dimension
+		in >> the_n_pts;						// number of points
+												// allocate point storage
+		the_pts = annAllocPts(the_n_pts, the_dim);
+		for (int i = 0; i < the_n_pts; i++) {	// input point coordinates
+			ANNidx idx;							// point index
+			in >> idx;							// input point index
+			if (idx < 0 || idx >= the_n_pts) {
+				annError("Point index is out of range", ANNabort);
+			}
+			for (j = 0; j < the_dim; j++) {
+				in >> the_pts[idx][j];			// read point coordinates
+			}
+		}
+		in >> str;								// get next major heading
+	}
+	else {										// no points were input
+		annError("Points must be supplied in the dump file", ANNabort);
+	}
+
+	//------------------------------------------------------------------
+	//	Input the tree
+	//			After the basic header information, we invoke annReadTree
+	//			to do all the heavy work.  We create our own array of
+	//			point indices (so we can pass them to annReadTree())
+	//			but we do not deallocate them.	They will be deallocated
+	//			when the tree is destroyed.
+	//------------------------------------------------------------------
+	if (strcmp(str, "tree") == 0) {				// tree section
+		in >> the_dim;							// read dimension
+		in >> the_n_pts;						// number of points
+		in >> the_bkt_size;						// bucket size
+		the_bnd_box_lo = annAllocPt(the_dim);	// allocate bounding box pts
+		the_bnd_box_hi = annAllocPt(the_dim);
+
+		for (j = 0; j < the_dim; j++) {			// read bounding box low
+			in >> the_bnd_box_lo[j];
+		}
+		for (j = 0; j < the_dim; j++) {			// read bounding box low
+			in >> the_bnd_box_hi[j];
+		}
+		the_pidx = new ANNidx[the_n_pts];		// allocate point index array
+		int next_idx = 0;						// number of indices filled
+												// read the tree and indices
+		the_root = annReadTree(in, tree_type, the_pidx, next_idx);
+		if (next_idx != the_n_pts) {			// didn't see all the points?
+			annError("Didn't see as many points as expected", ANNwarn);
+		}
+	}
+	else {
+		annError("Illegal dump format.	Expecting section heading", ANNabort);
+	}
+	return the_root;
+}
+
+//----------------------------------------------------------------------
+// annReadTree - input tree and return pointer
+//
+//		annReadTree reads in a node of the tree, makes any recursive
+//		calls as needed to input the children of this node (if internal).
+//		It returns a pointer to the node that was created.	An array
+//		of point indices is given along with a pointer to the next
+//		available location in the array.  As leaves are read, their
+//		point indices are stored here, and the point buckets point
+//		to the first entry in the array.
+//
+//		Recall that these are the formats.	The tree is given in
+//		preorder.
+//
+//		Leaf node:
+//				leaf <n_pts> <bkt[0]> <bkt[1]> ... <bkt[n-1]>
+//		Splitting nodes:
+//				split <cut_dim> <cut_val> <lo_bound> <hi_bound>
+//
+//		For bd-trees:
+//
+//		Shrinking nodes:
+//				shrink <n_bnds>
+//						<cut_dim> <cut_val> <side>
+//						<cut_dim> <cut_val> <side>
+//						... (repeated n_bnds times)
+//----------------------------------------------------------------------
+
+static ANNkd_ptr annReadTree(
+	istream				&in,					// input stream
+	ANNtreeType			tree_type,				// type of tree expected
+	ANNidxArray			the_pidx,				// point indices (modified)
+	int					&next_idx)				// next index (modified)
+{
+	char tag[STRING_LEN];						// tag (leaf, split, shrink)
+	int n_pts;									// number of points in leaf
+	int cd;										// cut dimension
+	ANNcoord cv;								// cut value
+	ANNcoord lb;								// low bound
+	ANNcoord hb;								// high bound
+	int n_bnds;									// number of bounding sides
+	int sd;										// which side
+
+	in >> tag;									// input node tag
+
+	if (strcmp(tag, "null") == 0) {				// null tree
+		return NULL;
+	}
+	//------------------------------------------------------------------
+	//	Read a leaf
+	//------------------------------------------------------------------
+	if (strcmp(tag, "leaf") == 0) {				// leaf node
+
+		in >> n_pts;							// input number of points
+		int old_idx = next_idx;					// save next_idx
+		if (n_pts == 0) {						// trivial leaf
+			return KD_TRIVIAL;
+		}
+		else {
+			for (int i = 0; i < n_pts; i++) {	// input point indices
+				in >> the_pidx[next_idx++];		// store in array of indices
+			}
+		}
+		return new ANNkd_leaf(n_pts, &the_pidx[old_idx]);
+	}
+	//------------------------------------------------------------------
+	//	Read a splitting node
+	//------------------------------------------------------------------
+	else if (strcmp(tag, "split") == 0) {		// splitting node
+
+		in >> cd >> cv >> lb >> hb;
+
+												// read low and high subtrees
+		ANNkd_ptr lc = annReadTree(in, tree_type, the_pidx, next_idx);
+		ANNkd_ptr hc = annReadTree(in, tree_type, the_pidx, next_idx);
+												// create new node and return
+		return new ANNkd_split(cd, cv, lb, hb, lc, hc);
+	}
+	//------------------------------------------------------------------
+	//	Read a shrinking node (bd-tree only)
+	//------------------------------------------------------------------
+	else if (strcmp(tag, "shrink") == 0) {		// shrinking node
+		if (tree_type != BD_TREE) {
+			annError("Shrinking node not allowed in kd-tree", ANNabort);
+		}
+
+		in >> n_bnds;							// number of bounding sides
+												// allocate bounds array
+		ANNorthHSArray bds = new ANNorthHalfSpace[n_bnds];
+		for (int i = 0; i < n_bnds; i++) {
+			in >> cd >> cv >> sd;				// input bounding halfspace
+												// copy to array
+			bds[i] = ANNorthHalfSpace(cd, cv, sd);
+		}
+												// read inner and outer subtrees
+		ANNkd_ptr ic = annReadTree(in, tree_type, the_pidx, next_idx);
+		ANNkd_ptr oc = annReadTree(in, tree_type, the_pidx, next_idx);
+												// create new node and return
+		return new ANNbd_shrink(n_bnds, bds, ic, oc);
+	}
+	else {
+		annError("Illegal node type in dump file", ANNabort);
+		exit(0);								// to keep the compiler happy
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/kd_fix_rad_search.cpp	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,183 @@
+//----------------------------------------------------------------------
+// File:			kd_fix_rad_search.cpp
+// Programmer:		Sunil Arya and David Mount
+// Description:		Standard kd-tree fixed-radius kNN search
+// Last modified:	05/03/05 (Version 1.1)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 1.1  05/03/05
+//		Initial release
+//----------------------------------------------------------------------
+
+#include "kd_fix_rad_search.h"			// kd fixed-radius search decls
+
+//----------------------------------------------------------------------
+//	Approximate fixed-radius k nearest neighbor search
+//		The squared radius is provided, and this procedure finds the
+//		k nearest neighbors within the radius, and returns the total
+//		number of points lying within the radius.
+//
+//		The method used for searching the kd-tree is a variation of the
+//		nearest neighbor search used in kd_search.cpp, except that the
+//		radius of the search ball is known.  We refer the reader to that
+//		file for the explanation of the recursive search procedure.
+//----------------------------------------------------------------------
+
+//----------------------------------------------------------------------
+//		To keep argument lists short, a number of global variables
+//		are maintained which are common to all the recursive calls.
+//		These are given below.
+//----------------------------------------------------------------------
+
+int				ANNkdFRDim;				// dimension of space
+ANNpoint		ANNkdFRQ;				// query point
+ANNdist			ANNkdFRSqRad;			// squared radius search bound
+double			ANNkdFRMaxErr;			// max tolerable squared error
+ANNpointArray	ANNkdFRPts;				// the points
+ANNmin_k*		ANNkdFRPointMK;			// set of k closest points
+int				ANNkdFRPtsVisited;		// total points visited
+int				ANNkdFRPtsInRange;		// number of points in the range
+
+//----------------------------------------------------------------------
+//	annkFRSearch - fixed radius search for k nearest neighbors
+//----------------------------------------------------------------------
+
+int ANNkd_tree::annkFRSearch(
+	ANNpoint			q,				// the query point
+	ANNdist				sqRad,			// squared radius search bound
+	int					k,				// number of near neighbors to return
+	ANNidxArray			nn_idx,			// nearest neighbor indices (returned)
+	ANNdistArray		dd,				// the approximate nearest neighbor
+	double				eps)			// the error bound
+{
+	ANNkdFRDim = dim;					// copy arguments to static equivs
+	ANNkdFRQ = q;
+	ANNkdFRSqRad = sqRad;
+	ANNkdFRPts = pts;
+	ANNkdFRPtsVisited = 0;				// initialize count of points visited
+	ANNkdFRPtsInRange = 0;				// ...and points in the range
+
+	ANNkdFRMaxErr = ANN_POW(1.0 + eps);
+	ANN_FLOP(2)							// increment floating op count
+
+	ANNkdFRPointMK = new ANNmin_k(k);	// create set for closest k points
+										// search starting at the root
+	root->ann_FR_search(annBoxDistance(q, bnd_box_lo, bnd_box_hi, dim));
+
+	for (int i = 0; i < k; i++) {		// extract the k-th closest points
+		if (dd != NULL)
+			dd[i] = ANNkdFRPointMK->ith_smallest_key(i);
+		if (nn_idx != NULL)
+			nn_idx[i] = ANNkdFRPointMK->ith_smallest_info(i);
+	}
+
+	delete ANNkdFRPointMK;				// deallocate closest point set
+	return ANNkdFRPtsInRange;			// return final point count
+}
+
+//----------------------------------------------------------------------
+//	kd_split::ann_FR_search - search a splitting node
+//		Note: This routine is similar in structure to the standard kNN
+//		search.  It visits the subtree that is closer to the query point
+//		first.  For fixed-radius search, there is no benefit in visiting
+//		one subtree before the other, but we maintain the same basic
+//		code structure for the sake of uniformity.
+//----------------------------------------------------------------------
+
+void ANNkd_split::ann_FR_search(ANNdist box_dist)
+{
+										// check dist calc term condition
+	if (ANNmaxPtsVisited != 0 && ANNkdFRPtsVisited > ANNmaxPtsVisited) return;
+
+										// distance to cutting plane
+	ANNcoord cut_diff = ANNkdFRQ[cut_dim] - cut_val;
+
+	if (cut_diff < 0) {					// left of cutting plane
+		child[ANN_LO]->ann_FR_search(box_dist);// visit closer child first
+
+		ANNcoord box_diff = cd_bnds[ANN_LO] - ANNkdFRQ[cut_dim];
+		if (box_diff < 0)				// within bounds - ignore
+			box_diff = 0;
+										// distance to further box
+		box_dist = (ANNdist) ANN_SUM(box_dist,
+				ANN_DIFF(ANN_POW(box_diff), ANN_POW(cut_diff)));
+
+										// visit further child if in range
+		if (box_dist * ANNkdFRMaxErr <= ANNkdFRSqRad)
+			child[ANN_HI]->ann_FR_search(box_dist);
+
+	}
+	else {								// right of cutting plane
+		child[ANN_HI]->ann_FR_search(box_dist);// visit closer child first
+
+		ANNcoord box_diff = ANNkdFRQ[cut_dim] - cd_bnds[ANN_HI];
+		if (box_diff < 0)				// within bounds - ignore
+			box_diff = 0;
+										// distance to further box
+		box_dist = (ANNdist) ANN_SUM(box_dist,
+				ANN_DIFF(ANN_POW(box_diff), ANN_POW(cut_diff)));
+
+										// visit further child if close enough
+		if (box_dist * ANNkdFRMaxErr <= ANNkdFRSqRad)
+			child[ANN_LO]->ann_FR_search(box_dist);
+
+	}
+	ANN_FLOP(13)						// increment floating ops
+	ANN_SPL(1)							// one more splitting node visited
+}
+
+//----------------------------------------------------------------------
+//	kd_leaf::ann_FR_search - search points in a leaf node
+//		Note: The unreadability of this code is the result of
+//		some fine tuning to replace indexing by pointer operations.
+//----------------------------------------------------------------------
+
+void ANNkd_leaf::ann_FR_search(ANNdist box_dist)
+{
+	register ANNdist dist;				// distance to data point
+	register ANNcoord* pp;				// data coordinate pointer
+	register ANNcoord* qq;				// query coordinate pointer
+	register ANNcoord t;
+	register int d;
+
+	for (int i = 0; i < n_pts; i++) {	// check points in bucket
+
+		pp = ANNkdFRPts[bkt[i]];		// first coord of next data point
+		qq = ANNkdFRQ;					// first coord of query point
+		dist = 0;
+
+		for(d = 0; d < ANNkdFRDim; d++) {
+			ANN_COORD(1)				// one more coordinate hit
+			ANN_FLOP(5)					// increment floating ops
+
+			t = *(qq++) - *(pp++);		// compute length and adv coordinate
+										// exceeds dist to k-th smallest?
+			if( (dist = ANN_SUM(dist, ANN_POW(t))) > ANNkdFRSqRad) {
+				break;
+			}
+		}
+
+		if (d >= ANNkdFRDim &&					// among the k best?
+		   (ANN_ALLOW_SELF_MATCH || dist!=0)) { // and no self-match problem
+												// add it to the list
+			ANNkdFRPointMK->insert(dist, bkt[i]);
+			ANNkdFRPtsInRange++;				// increment point count
+		}
+	}
+	ANN_LEAF(1)							// one more leaf node visited
+	ANN_PTS(n_pts)						// increment points visited
+	ANNkdFRPtsVisited += n_pts;			// increment number of points visited
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/kd_fix_rad_search.h	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,44 @@
+//----------------------------------------------------------------------
+// File:			kd_fix_rad_search.h
+// Programmer:		Sunil Arya and David Mount
+// Description:		Standard kd-tree fixed-radius kNN search
+// Last modified:	05/03/05 (Version 1.1)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 1.1  05/03/05
+//		Initial release
+//----------------------------------------------------------------------
+
+#ifndef ANN_kd_fix_rad_search_H
+#define ANN_kd_fix_rad_search_H
+
+#include "kd_tree.h"					// kd-tree declarations
+#include "kd_util.h"					// kd-tree utilities
+#include "pr_queue_k.h"					// k-element priority queue
+
+#include <ANN/ANNperf.h>				// performance evaluation
+
+//----------------------------------------------------------------------
+//	Global variables
+//		These are active for the life of each call to
+//		annRangeSearch().  They are set to save the number of
+//		variables that need to be passed among the various search
+//		procedures.
+//----------------------------------------------------------------------
+
+extern ANNpoint			ANNkdFRQ;			// query point (static copy)
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/kd_pr_search.cpp	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,219 @@
+//----------------------------------------------------------------------
+// File:			kd_pr_search.cpp
+// Programmer:		Sunil Arya and David Mount
+// Description:		Priority search for kd-trees
+// Last modified:	01/04/05 (Version 1.0)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//----------------------------------------------------------------------
+
+#include "kd_pr_search.h"				// kd priority search declarations
+
+//----------------------------------------------------------------------
+//	Approximate nearest neighbor searching by priority search.
+//		The kd-tree is searched for an approximate nearest neighbor.
+//		The point is returned through one of the arguments, and the
+//		distance returned is the SQUARED distance to this point.
+//
+//		The method used for searching the kd-tree is called priority
+//		search.  (It is described in Arya and Mount, ``Algorithms for
+//		fast vector quantization,'' Proc. of DCC '93: Data Compression
+//		Conference}, eds. J. A. Storer and M. Cohn, IEEE Press, 1993,
+//		381--390.)
+//
+//		The cell of the kd-tree containing the query point is located,
+//		and cells are visited in increasing order of distance from the
+//		query point.  This is done by placing each subtree which has
+//		NOT been visited in a priority queue, according to the closest
+//		distance of the corresponding enclosing rectangle from the
+//		query point.  The search stops when the distance to the nearest
+//		remaining rectangle exceeds the distance to the nearest point
+//		seen by a factor of more than 1/(1+eps). (Implying that any
+//		point found subsequently in the search cannot be closer by more
+//		than this factor.)
+//
+//		The main entry point is annkPriSearch() which sets things up and
+//		then call the recursive routine ann_pri_search().  This is a
+//		recursive routine which performs the processing for one node in
+//		the kd-tree.  There are two versions of this virtual procedure,
+//		one for splitting nodes and one for leaves. When a splitting node
+//		is visited, we determine which child to continue the search on
+//		(the closer one), and insert the other child into the priority
+//		queue.  When a leaf is visited, we compute the distances to the
+//		points in the buckets, and update information on the closest
+//		points.
+//
+//		Some trickery is used to incrementally update the distance from
+//		a kd-tree rectangle to the query point.  This comes about from
+//		the fact that which each successive split, only one component
+//		(along the dimension that is split) of the squared distance to
+//		the child rectangle is different from the squared distance to
+//		the parent rectangle.
+//----------------------------------------------------------------------
+
+//----------------------------------------------------------------------
+//		To keep argument lists short, a number of global variables
+//		are maintained which are common to all the recursive calls.
+//		These are given below.
+//----------------------------------------------------------------------
+
+double			ANNprEps;				// the error bound
+int				ANNprDim;				// dimension of space
+ANNpoint		ANNprQ;					// query point
+double			ANNprMaxErr;			// max tolerable squared error
+ANNpointArray	ANNprPts;				// the points
+ANNpr_queue		*ANNprBoxPQ;			// priority queue for boxes
+ANNmin_k		*ANNprPointMK;			// set of k closest points
+
+//----------------------------------------------------------------------
+//	annkPriSearch - priority search for k nearest neighbors
+//----------------------------------------------------------------------
+
+void ANNkd_tree::annkPriSearch(
+	ANNpoint			q,				// query point
+	int					k,				// number of near neighbors to return
+	ANNidxArray			nn_idx,			// nearest neighbor indices (returned)
+	ANNdistArray		dd,				// dist to near neighbors (returned)
+	double				eps)			// error bound (ignored)
+{
+										// max tolerable squared error
+	ANNprMaxErr = ANN_POW(1.0 + eps);
+	ANN_FLOP(2)							// increment floating ops
+
+	ANNprDim = dim;						// copy arguments to static equivs
+	ANNprQ = q;
+	ANNprPts = pts;
+	ANNptsVisited = 0;					// initialize count of points visited
+
+	ANNprPointMK = new ANNmin_k(k);		// create set for closest k points
+
+										// distance to root box
+	ANNdist box_dist = annBoxDistance(q,
+				bnd_box_lo, bnd_box_hi, dim);
+
+	ANNprBoxPQ = new ANNpr_queue(n_pts);// create priority queue for boxes
+	ANNprBoxPQ->insert(box_dist, root); // insert root in priority queue
+
+	while (ANNprBoxPQ->non_empty() &&
+		(!(ANNmaxPtsVisited != 0 && ANNptsVisited > ANNmaxPtsVisited))) {
+		ANNkd_ptr np;					// next box from prior queue
+
+										// extract closest box from queue
+		ANNprBoxPQ->extr_min(box_dist, (void *&) np);
+
+		ANN_FLOP(2)						// increment floating ops
+		if (box_dist*ANNprMaxErr >= ANNprPointMK->max_key())
+			break;
+
+		np->ann_pri_search(box_dist);	// search this subtree.
+	}
+
+	for (int i = 0; i < k; i++) {		// extract the k-th closest points
+		dd[i] = ANNprPointMK->ith_smallest_key(i);
+		nn_idx[i] = ANNprPointMK->ith_smallest_info(i);
+	}
+
+	delete ANNprPointMK;				// deallocate closest point set
+	delete ANNprBoxPQ;					// deallocate priority queue
+}
+
+//----------------------------------------------------------------------
+//	kd_split::ann_pri_search - search a splitting node
+//----------------------------------------------------------------------
+
+void ANNkd_split::ann_pri_search(ANNdist box_dist)
+{
+	ANNdist new_dist;					// distance to child visited later
+										// distance to cutting plane
+	ANNcoord cut_diff = ANNprQ[cut_dim] - cut_val;
+
+	if (cut_diff < 0) {					// left of cutting plane
+		ANNcoord box_diff = cd_bnds[ANN_LO] - ANNprQ[cut_dim];
+		if (box_diff < 0)				// within bounds - ignore
+			box_diff = 0;
+										// distance to further box
+		new_dist = (ANNdist) ANN_SUM(box_dist,
+				ANN_DIFF(ANN_POW(box_diff), ANN_POW(cut_diff)));
+
+		if (child[ANN_HI] != KD_TRIVIAL)// enqueue if not trivial
+			ANNprBoxPQ->insert(new_dist, child[ANN_HI]);
+										// continue with closer child
+		child[ANN_LO]->ann_pri_search(box_dist);
+	}
+	else {								// right of cutting plane
+		ANNcoord box_diff = ANNprQ[cut_dim] - cd_bnds[ANN_HI];
+		if (box_diff < 0)				// within bounds - ignore
+			box_diff = 0;
+										// distance to further box
+		new_dist = (ANNdist) ANN_SUM(box_dist,
+				ANN_DIFF(ANN_POW(box_diff), ANN_POW(cut_diff)));
+
+		if (child[ANN_LO] != KD_TRIVIAL)// enqueue if not trivial
+			ANNprBoxPQ->insert(new_dist, child[ANN_LO]);
+										// continue with closer child
+		child[ANN_HI]->ann_pri_search(box_dist);
+	}
+	ANN_SPL(1)							// one more splitting node visited
+	ANN_FLOP(8)							// increment floating ops
+}
+
+//----------------------------------------------------------------------
+//	kd_leaf::ann_pri_search - search points in a leaf node
+//
+//		This is virtually identical to the ann_search for standard search.
+//----------------------------------------------------------------------
+
+void ANNkd_leaf::ann_pri_search(ANNdist box_dist)
+{
+	register ANNdist dist;				// distance to data point
+	register ANNcoord* pp;				// data coordinate pointer
+	register ANNcoord* qq;				// query coordinate pointer
+	register ANNdist min_dist;			// distance to k-th closest point
+	register ANNcoord t;
+	register int d;
+
+	min_dist = ANNprPointMK->max_key(); // k-th smallest distance so far
+
+	for (int i = 0; i < n_pts; i++) {	// check points in bucket
+
+		pp = ANNprPts[bkt[i]];			// first coord of next data point
+		qq = ANNprQ;					// first coord of query point
+		dist = 0;
+
+		for(d = 0; d < ANNprDim; d++) {
+			ANN_COORD(1)				// one more coordinate hit
+			ANN_FLOP(4)					// increment floating ops
+
+			t = *(qq++) - *(pp++);		// compute length and adv coordinate
+										// exceeds dist to k-th smallest?
+			if( (dist = ANN_SUM(dist, ANN_POW(t))) > min_dist) {
+				break;
+			}
+		}
+
+		if (d >= ANNprDim &&					// among the k best?
+		   (ANN_ALLOW_SELF_MATCH || dist!=0)) { // and no self-match problem
+												// add it to the list
+			ANNprPointMK->insert(dist, bkt[i]);
+			min_dist = ANNprPointMK->max_key();
+		}
+	}
+	ANN_LEAF(1)							// one more leaf node visited
+	ANN_PTS(n_pts)						// increment points visited
+	ANNptsVisited += n_pts;				// increment number of points visited
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/kd_pr_search.h	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,49 @@
+//----------------------------------------------------------------------
+// File:			kd_pr_search.h
+// Programmer:		Sunil Arya and David Mount
+// Description:		Priority kd-tree search
+// Last modified:	01/04/05 (Version 1.0)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//----------------------------------------------------------------------
+
+#ifndef ANN_kd_pr_search_H
+#define ANN_kd_pr_search_H
+
+#include "kd_tree.h"					// kd-tree declarations
+#include "kd_util.h"					// kd-tree utilities
+#include "pr_queue.h"					// priority queue declarations
+#include "pr_queue_k.h"					// k-element priority queue
+
+#include <ANN/ANNperf.h>				// performance evaluation
+
+//----------------------------------------------------------------------
+//	Global variables
+//		Active for the life of each call to Appx_Near_Neigh() or
+//		Appx_k_Near_Neigh().
+//----------------------------------------------------------------------
+
+extern double			ANNprEps;		// the error bound
+extern int				ANNprDim;		// dimension of space
+extern ANNpoint			ANNprQ;			// query point
+extern double			ANNprMaxErr;	// max tolerable squared error
+extern ANNpointArray	ANNprPts;		// the points
+extern ANNpr_queue		*ANNprBoxPQ;	// priority queue for boxes
+extern ANNmin_k			*ANNprPointMK;	// set of k closest points
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/kd_search.cpp	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,210 @@
+//----------------------------------------------------------------------
+// File:			kd_search.cpp
+// Programmer:		Sunil Arya and David Mount
+// Description:		Standard kd-tree search
+// Last modified:	01/04/05 (Version 1.0)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//	Revision 1.0  04/01/05
+//		Changed names LO, HI to ANN_LO, ANN_HI
+//----------------------------------------------------------------------
+
+#include "kd_search.h"					// kd-search declarations
+
+//----------------------------------------------------------------------
+//	Approximate nearest neighbor searching by kd-tree search
+//		The kd-tree is searched for an approximate nearest neighbor.
+//		The point is returned through one of the arguments, and the
+//		distance returned is the squared distance to this point.
+//
+//		The method used for searching the kd-tree is an approximate
+//		adaptation of the search algorithm described by Friedman,
+//		Bentley, and Finkel, ``An algorithm for finding best matches
+//		in logarithmic expected time,'' ACM Transactions on Mathematical
+//		Software, 3(3):209-226, 1977).
+//
+//		The algorithm operates recursively.  When first encountering a
+//		node of the kd-tree we first visit the child which is closest to
+//		the query point.  On return, we decide whether we want to visit
+//		the other child.  If the box containing the other child exceeds
+//		1/(1+eps) times the current best distance, then we skip it (since
+//		any point found in this child cannot be closer to the query point
+//		by more than this factor.)  Otherwise, we visit it recursively.
+//		The distance between a box and the query point is computed exactly
+//		(not approximated as is often done in kd-tree), using incremental
+//		distance updates, as described by Arya and Mount in ``Algorithms
+//		for fast vector quantization,'' Proc.  of DCC '93: Data Compression
+//		Conference, eds. J. A. Storer and M. Cohn, IEEE Press, 1993,
+//		381-390.
+//
+//		The main entry points is annkSearch() which sets things up and
+//		then call the recursive routine ann_search().  This is a recursive
+//		routine which performs the processing for one node in the kd-tree.
+//		There are two versions of this virtual procedure, one for splitting
+//		nodes and one for leaves.  When a splitting node is visited, we
+//		determine which child to visit first (the closer one), and visit
+//		the other child on return.  When a leaf is visited, we compute
+//		the distances to the points in the buckets, and update information
+//		on the closest points.
+//
+//		Some trickery is used to incrementally update the distance from
+//		a kd-tree rectangle to the query point.  This comes about from
+//		the fact that which each successive split, only one component
+//		(along the dimension that is split) of the squared distance to
+//		the child rectangle is different from the squared distance to
+//		the parent rectangle.
+//----------------------------------------------------------------------
+
+//----------------------------------------------------------------------
+//		To keep argument lists short, a number of global variables
+//		are maintained which are common to all the recursive calls.
+//		These are given below.
+//----------------------------------------------------------------------
+
+int				ANNkdDim;				// dimension of space
+ANNpoint		ANNkdQ;					// query point
+double			ANNkdMaxErr;			// max tolerable squared error
+ANNpointArray	ANNkdPts;				// the points
+ANNmin_k		*ANNkdPointMK;			// set of k closest points
+
+//----------------------------------------------------------------------
+//	annkSearch - search for the k nearest neighbors
+//----------------------------------------------------------------------
+
+void ANNkd_tree::annkSearch(
+	ANNpoint			q,				// the query point
+	int					k,				// number of near neighbors to return
+	ANNidxArray			nn_idx,			// nearest neighbor indices (returned)
+	ANNdistArray		dd,				// the approximate nearest neighbor
+	double				eps)			// the error bound
+{
+
+	ANNkdDim = dim;						// copy arguments to static equivs
+	ANNkdQ = q;
+	ANNkdPts = pts;
+	ANNptsVisited = 0;					// initialize count of points visited
+
+	if (k > n_pts) {					// too many near neighbors?
+		annError("Requesting more near neighbors than data points", ANNabort);
+	}
+
+	ANNkdMaxErr = ANN_POW(1.0 + eps);
+	ANN_FLOP(2)							// increment floating op count
+
+	ANNkdPointMK = new ANNmin_k(k);		// create set for closest k points
+										// search starting at the root
+	root->ann_search(annBoxDistance(q, bnd_box_lo, bnd_box_hi, dim));
+
+	for (int i = 0; i < k; i++) {		// extract the k-th closest points
+		dd[i] = ANNkdPointMK->ith_smallest_key(i);
+		nn_idx[i] = ANNkdPointMK->ith_smallest_info(i);
+	}
+	delete ANNkdPointMK;				// deallocate closest point set
+}
+
+//----------------------------------------------------------------------
+//	kd_split::ann_search - search a splitting node
+//----------------------------------------------------------------------
+
+void ANNkd_split::ann_search(ANNdist box_dist)
+{
+										// check dist calc term condition
+	if (ANNmaxPtsVisited != 0 && ANNptsVisited > ANNmaxPtsVisited) return;
+
+										// distance to cutting plane
+	ANNcoord cut_diff = ANNkdQ[cut_dim] - cut_val;
+
+	if (cut_diff < 0) {					// left of cutting plane
+		child[ANN_LO]->ann_search(box_dist);// visit closer child first
+
+		ANNcoord box_diff = cd_bnds[ANN_LO] - ANNkdQ[cut_dim];
+		if (box_diff < 0)				// within bounds - ignore
+			box_diff = 0;
+										// distance to further box
+		box_dist = (ANNdist) ANN_SUM(box_dist,
+				ANN_DIFF(ANN_POW(box_diff), ANN_POW(cut_diff)));
+
+										// visit further child if close enough
+		if (box_dist * ANNkdMaxErr < ANNkdPointMK->max_key())
+			child[ANN_HI]->ann_search(box_dist);
+
+	}
+	else {								// right of cutting plane
+		child[ANN_HI]->ann_search(box_dist);// visit closer child first
+
+		ANNcoord box_diff = ANNkdQ[cut_dim] - cd_bnds[ANN_HI];
+		if (box_diff < 0)				// within bounds - ignore
+			box_diff = 0;
+										// distance to further box
+		box_dist = (ANNdist) ANN_SUM(box_dist,
+				ANN_DIFF(ANN_POW(box_diff), ANN_POW(cut_diff)));
+
+										// visit further child if close enough
+		if (box_dist * ANNkdMaxErr < ANNkdPointMK->max_key())
+			child[ANN_LO]->ann_search(box_dist);
+
+	}
+	ANN_FLOP(10)						// increment floating ops
+	ANN_SPL(1)							// one more splitting node visited
+}
+
+//----------------------------------------------------------------------
+//	kd_leaf::ann_search - search points in a leaf node
+//		Note: The unreadability of this code is the result of
+//		some fine tuning to replace indexing by pointer operations.
+//----------------------------------------------------------------------
+
+void ANNkd_leaf::ann_search(ANNdist box_dist)
+{
+	register ANNdist dist;				// distance to data point
+	register ANNcoord* pp;				// data coordinate pointer
+	register ANNcoord* qq;				// query coordinate pointer
+	register ANNdist min_dist;			// distance to k-th closest point
+	register ANNcoord t;
+	register int d;
+
+	min_dist = ANNkdPointMK->max_key(); // k-th smallest distance so far
+
+	for (int i = 0; i < n_pts; i++) {	// check points in bucket
+
+		pp = ANNkdPts[bkt[i]];			// first coord of next data point
+		qq = ANNkdQ;					// first coord of query point
+		dist = 0;
+
+		for(d = 0; d < ANNkdDim; d++) {
+			ANN_COORD(1)				// one more coordinate hit
+			ANN_FLOP(4)					// increment floating ops
+
+			t = *(qq++) - *(pp++);		// compute length and adv coordinate
+										// exceeds dist to k-th smallest?
+			if( (dist = ANN_SUM(dist, ANN_POW(t))) > min_dist) {
+				break;
+			}
+		}
+
+		if (d >= ANNkdDim &&					// among the k best?
+		   (ANN_ALLOW_SELF_MATCH || dist!=0)) { // and no self-match problem
+												// add it to the list
+			ANNkdPointMK->insert(dist, bkt[i]);
+			min_dist = ANNkdPointMK->max_key();
+		}
+	}
+	ANN_LEAF(1)							// one more leaf node visited
+	ANN_PTS(n_pts)						// increment points visited
+	ANNptsVisited += n_pts;				// increment number of points visited
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/kd_search.h	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,48 @@
+//----------------------------------------------------------------------
+// File:			kd_search.h
+// Programmer:		Sunil Arya and David Mount
+// Description:		Standard kd-tree search
+// Last modified:	01/04/05 (Version 1.0)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//----------------------------------------------------------------------
+
+#ifndef ANN_kd_search_H
+#define ANN_kd_search_H
+
+#include "kd_tree.h"					// kd-tree declarations
+#include "kd_util.h"					// kd-tree utilities
+#include "pr_queue_k.h"					// k-element priority queue
+
+#include <ANN/ANNperf.h>				// performance evaluation
+
+//----------------------------------------------------------------------
+//	More global variables
+//		These are active for the life of each call to annkSearch(). They
+//		are set to save the number of variables that need to be passed
+//		among the various search procedures.
+//----------------------------------------------------------------------
+
+extern int				ANNkdDim;		// dimension of space (static copy)
+extern ANNpoint			ANNkdQ;			// query point (static copy)
+extern double			ANNkdMaxErr;	// max tolerable squared error
+extern ANNpointArray	ANNkdPts;		// the points (static copy)
+extern ANNmin_k			*ANNkdPointMK;	// set of k closest points
+extern int				ANNptsVisited;	// number of points visited
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/kd_split.cpp	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,428 @@
+//----------------------------------------------------------------------
+// File:			kd_split.cpp
+// Programmer:		Sunil Arya and David Mount
+// Description:		Methods for splitting kd-trees
+// Last modified:	01/04/05 (Version 1.0)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//	Revision 1.0  04/01/05
+//----------------------------------------------------------------------
+
+#include "kd_tree.h"					// kd-tree definitions
+#include "kd_util.h"					// kd-tree utilities
+#include "kd_split.h"					// splitting functions
+
+//----------------------------------------------------------------------
+//	Constants
+//----------------------------------------------------------------------
+
+const double ERR = 0.001;				// a small value
+const double FS_ASPECT_RATIO = 3.0;		// maximum allowed aspect ratio
+										// in fair split. Must be >= 2.
+
+//----------------------------------------------------------------------
+//	kd_split - Bentley's standard splitting routine for kd-trees
+//		Find the dimension of the greatest spread, and split
+//		just before the median point along this dimension.
+//----------------------------------------------------------------------
+
+void kd_split(
+	ANNpointArray		pa,				// point array (permuted on return)
+	ANNidxArray			pidx,			// point indices
+	const ANNorthRect	&bnds,			// bounding rectangle for cell
+	int					n,				// number of points
+	int					dim,			// dimension of space
+	int					&cut_dim,		// cutting dimension (returned)
+	ANNcoord			&cut_val,		// cutting value (returned)
+	int					&n_lo)			// num of points on low side (returned)
+{
+										// find dimension of maximum spread
+	cut_dim = annMaxSpread(pa, pidx, n, dim);
+	n_lo = n/2;							// median rank
+										// split about median
+	annMedianSplit(pa, pidx, n, cut_dim, cut_val, n_lo);
+}
+
+//----------------------------------------------------------------------
+//	midpt_split - midpoint splitting rule for box-decomposition trees
+//
+//		This is the simplest splitting rule that guarantees boxes
+//		of bounded aspect ratio.  It simply cuts the box with the
+//		longest side through its midpoint.  If there are ties, it
+//		selects the dimension with the maximum point spread.
+//
+//		WARNING: This routine (while simple) doesn't seem to work
+//		well in practice in high dimensions, because it tends to
+//		generate a large number of trivial and/or unbalanced splits.
+//		Either kd_split(), sl_midpt_split(), or fair_split() are
+//		recommended, instead.
+//----------------------------------------------------------------------
+
+void midpt_split(
+	ANNpointArray		pa,				// point array
+	ANNidxArray			pidx,			// point indices (permuted on return)
+	const ANNorthRect	&bnds,			// bounding rectangle for cell
+	int					n,				// number of points
+	int					dim,			// dimension of space
+	int					&cut_dim,		// cutting dimension (returned)
+	ANNcoord			&cut_val,		// cutting value (returned)
+	int					&n_lo)			// num of points on low side (returned)
+{
+	int d;
+
+	ANNcoord max_length = bnds.hi[0] - bnds.lo[0];
+	for (d = 1; d < dim; d++) {			// find length of longest box side
+		ANNcoord length = bnds.hi[d] - bnds.lo[d];
+		if (length > max_length) {
+			max_length = length;
+		}
+	}
+	ANNcoord max_spread = -1;			// find long side with most spread
+	for (d = 0; d < dim; d++) {
+										// is it among longest?
+		if (double(bnds.hi[d] - bnds.lo[d]) >= (1-ERR)*max_length) {
+										// compute its spread
+			ANNcoord spr = annSpread(pa, pidx, n, d);
+			if (spr > max_spread) {		// is it max so far?
+				max_spread = spr;
+				cut_dim = d;
+			}
+		}
+	}
+										// split along cut_dim at midpoint
+	cut_val = (bnds.lo[cut_dim] + bnds.hi[cut_dim]) / 2;
+										// permute points accordingly
+	int br1, br2;
+	annPlaneSplit(pa, pidx, n, cut_dim, cut_val, br1, br2);
+	//------------------------------------------------------------------
+	//	On return:		pa[0..br1-1] < cut_val
+	//					pa[br1..br2-1] == cut_val
+	//					pa[br2..n-1] > cut_val
+	//
+	//	We can set n_lo to any value in the range [br1..br2].
+	//	We choose split so that points are most evenly divided.
+	//------------------------------------------------------------------
+	if (br1 > n/2) n_lo = br1;
+	else if (br2 < n/2) n_lo = br2;
+	else n_lo = n/2;
+}
+
+//----------------------------------------------------------------------
+//	sl_midpt_split - sliding midpoint splitting rule
+//
+//		This is a modification of midpt_split, which has the nonsensical
+//		name "sliding midpoint".  The idea is that we try to use the
+//		midpoint rule, by bisecting the longest side.  If there are
+//		ties, the dimension with the maximum spread is selected.  If,
+//		however, the midpoint split produces a trivial split (no points
+//		on one side of the splitting plane) then we slide the splitting
+//		(maintaining its orientation) until it produces a nontrivial
+//		split. For example, if the splitting plane is along the x-axis,
+//		and all the data points have x-coordinate less than the x-bisector,
+//		then the split is taken along the maximum x-coordinate of the
+//		data points.
+//
+//		Intuitively, this rule cannot generate trivial splits, and
+//		hence avoids midpt_split's tendency to produce trees with
+//		a very large number of nodes.
+//
+//----------------------------------------------------------------------
+
+void sl_midpt_split(
+	ANNpointArray		pa,				// point array
+	ANNidxArray			pidx,			// point indices (permuted on return)
+	const ANNorthRect	&bnds,			// bounding rectangle for cell
+	int					n,				// number of points
+	int					dim,			// dimension of space
+	int					&cut_dim,		// cutting dimension (returned)
+	ANNcoord			&cut_val,		// cutting value (returned)
+	int					&n_lo)			// num of points on low side (returned)
+{
+	int d;
+
+	ANNcoord max_length = bnds.hi[0] - bnds.lo[0];
+	for (d = 1; d < dim; d++) {			// find length of longest box side
+		ANNcoord length = bnds.hi[d] - bnds.lo[d];
+		if (length > max_length) {
+			max_length = length;
+		}
+	}
+	ANNcoord max_spread = -1;			// find long side with most spread
+	for (d = 0; d < dim; d++) {
+										// is it among longest?
+		if ((bnds.hi[d] - bnds.lo[d]) >= (1-ERR)*max_length) {
+										// compute its spread
+			ANNcoord spr = annSpread(pa, pidx, n, d);
+			if (spr > max_spread) {		// is it max so far?
+				max_spread = spr;
+				cut_dim = d;
+			}
+		}
+	}
+										// ideal split at midpoint
+	ANNcoord ideal_cut_val = (bnds.lo[cut_dim] + bnds.hi[cut_dim])/2;
+
+	ANNcoord min, max;
+	annMinMax(pa, pidx, n, cut_dim, min, max);	// find min/max coordinates
+
+	if (ideal_cut_val < min)			// slide to min or max as needed
+		cut_val = min;
+	else if (ideal_cut_val > max)
+		cut_val = max;
+	else
+		cut_val = ideal_cut_val;
+
+										// permute points accordingly
+	int br1, br2;
+	annPlaneSplit(pa, pidx, n, cut_dim, cut_val, br1, br2);
+	//------------------------------------------------------------------
+	//	On return:		pa[0..br1-1] < cut_val
+	//					pa[br1..br2-1] == cut_val
+	//					pa[br2..n-1] > cut_val
+	//
+	//	We can set n_lo to any value in the range [br1..br2] to satisfy
+	//	the exit conditions of the procedure.
+	//
+	//	if ideal_cut_val < min (implying br2 >= 1),
+	//			then we select n_lo = 1 (so there is one point on left) and
+	//	if ideal_cut_val > max (implying br1 <= n-1),
+	//			then we select n_lo = n-1 (so there is one point on right).
+	//	Otherwise, we select n_lo as close to n/2 as possible within
+	//			[br1..br2].
+	//------------------------------------------------------------------
+	if (ideal_cut_val < min) n_lo = 1;
+	else if (ideal_cut_val > max) n_lo = n-1;
+	else if (br1 > n/2) n_lo = br1;
+	else if (br2 < n/2) n_lo = br2;
+	else n_lo = n/2;
+}
+
+//----------------------------------------------------------------------
+//	fair_split - fair-split splitting rule
+//
+//		This is a compromise between the kd-tree splitting rule (which
+//		always splits data points at their median) and the midpoint
+//		splitting rule (which always splits a box through its center.
+//		The goal of this procedure is to achieve both nicely balanced
+//		splits, and boxes of bounded aspect ratio.
+//
+//		A constant FS_ASPECT_RATIO is defined. Given a box, those sides
+//		which can be split so that the ratio of the longest to shortest
+//		side does not exceed ASPECT_RATIO are identified.  Among these
+//		sides, we select the one in which the points have the largest
+//		spread. We then split the points in a manner which most evenly
+//		distributes the points on either side of the splitting plane,
+//		subject to maintaining the bound on the ratio of long to short
+//		sides. To determine that the aspect ratio will be preserved,
+//		we determine the longest side (other than this side), and
+//		determine how narrowly we can cut this side, without causing the
+//		aspect ratio bound to be exceeded (small_piece).
+//
+//		This procedure is more robust than either kd_split or midpt_split,
+//		but is more complicated as well.  When point distribution is
+//		extremely skewed, this degenerates to midpt_split (actually
+//		1/3 point split), and when the points are most evenly distributed,
+//		this degenerates to kd-split.
+//----------------------------------------------------------------------
+
+void fair_split(
+	ANNpointArray		pa,				// point array
+	ANNidxArray			pidx,			// point indices (permuted on return)
+	const ANNorthRect	&bnds,			// bounding rectangle for cell
+	int					n,				// number of points
+	int					dim,			// dimension of space
+	int					&cut_dim,		// cutting dimension (returned)
+	ANNcoord			&cut_val,		// cutting value (returned)
+	int					&n_lo)			// num of points on low side (returned)
+{
+	int d;
+	ANNcoord max_length = bnds.hi[0] - bnds.lo[0];
+	cut_dim = 0;
+	for (d = 1; d < dim; d++) {			// find length of longest box side
+		ANNcoord length = bnds.hi[d] - bnds.lo[d];
+		if (length > max_length) {
+			max_length = length;
+			cut_dim = d;
+		}
+	}
+
+	ANNcoord max_spread = 0;			// find legal cut with max spread
+	cut_dim = 0;
+	for (d = 0; d < dim; d++) {
+		ANNcoord length = bnds.hi[d] - bnds.lo[d];
+										// is this side midpoint splitable
+										// without violating aspect ratio?
+		if (((double) max_length)*2.0/((double) length) <= FS_ASPECT_RATIO) {
+										// compute spread along this dim
+			ANNcoord spr = annSpread(pa, pidx, n, d);
+			if (spr > max_spread) {		// best spread so far
+				max_spread = spr;
+				cut_dim = d;			// this is dimension to cut
+			}
+		}
+	}
+
+	max_length = 0;						// find longest side other than cut_dim
+	for (d = 0; d < dim; d++) {
+		ANNcoord length = bnds.hi[d] - bnds.lo[d];
+		if (d != cut_dim && length > max_length)
+			max_length = length;
+	}
+										// consider most extreme splits
+	ANNcoord small_piece = max_length / FS_ASPECT_RATIO;
+	ANNcoord lo_cut = bnds.lo[cut_dim] + small_piece;// lowest legal cut
+	ANNcoord hi_cut = bnds.hi[cut_dim] - small_piece;// highest legal cut
+
+	int br1, br2;
+										// is median below lo_cut ?
+	if (annSplitBalance(pa, pidx, n, cut_dim, lo_cut) >= 0) {
+		cut_val = lo_cut;				// cut at lo_cut
+		annPlaneSplit(pa, pidx, n, cut_dim, cut_val, br1, br2);
+		n_lo = br1;
+	}
+										// is median above hi_cut?
+	else if (annSplitBalance(pa, pidx, n, cut_dim, hi_cut) <= 0) {
+		cut_val = hi_cut;				// cut at hi_cut
+		annPlaneSplit(pa, pidx, n, cut_dim, cut_val, br1, br2);
+		n_lo = br2;
+	}
+	else {								// median cut preserves asp ratio
+		n_lo = n/2;						// split about median
+		annMedianSplit(pa, pidx, n, cut_dim, cut_val, n_lo);
+	}
+}
+
+//----------------------------------------------------------------------
+//	sl_fair_split - sliding fair split splitting rule
+//
+//		Sliding fair split is a splitting rule that combines the
+//		strengths of both fair split with sliding midpoint split.
+//		Fair split tends to produce balanced splits when the points
+//		are roughly uniformly distributed, but it can produce many
+//		trivial splits when points are highly clustered.  Sliding
+//		midpoint never produces trivial splits, and shrinks boxes
+//		nicely if points are highly clustered, but it may produce
+//		rather unbalanced splits when points are unclustered but not
+//		quite uniform.
+//
+//		Sliding fair split is based on the theory that there are two
+//		types of splits that are "good": balanced splits that produce
+//		fat boxes, and unbalanced splits provided the cell with fewer
+//		points is fat.
+//
+//		This splitting rule operates by first computing the longest
+//		side of the current bounding box.  Then it asks which sides
+//		could be split (at the midpoint) and still satisfy the aspect
+//		ratio bound with respect to this side.	Among these, it selects
+//		the side with the largest spread (as fair split would).	 It
+//		then considers the most extreme cuts that would be allowed by
+//		the aspect ratio bound.	 This is done by dividing the longest
+//		side of the box by the aspect ratio bound.	If the median cut
+//		lies between these extreme cuts, then we use the median cut.
+//		If not, then consider the extreme cut that is closer to the
+//		median.	 If all the points lie to one side of this cut, then
+//		we slide the cut until it hits the first point.	 This may
+//		violate the aspect ratio bound, but will never generate empty
+//		cells.	However the sibling of every such skinny cell is fat,
+//		and hence packing arguments still apply.
+//
+//----------------------------------------------------------------------
+
+void sl_fair_split(
+	ANNpointArray		pa,				// point array
+	ANNidxArray			pidx,			// point indices (permuted on return)
+	const ANNorthRect	&bnds,			// bounding rectangle for cell
+	int					n,				// number of points
+	int					dim,			// dimension of space
+	int					&cut_dim,		// cutting dimension (returned)
+	ANNcoord			&cut_val,		// cutting value (returned)
+	int					&n_lo)			// num of points on low side (returned)
+{
+	int d;
+	ANNcoord min, max;					// min/max coordinates
+	int br1, br2;						// split break points
+
+	ANNcoord max_length = bnds.hi[0] - bnds.lo[0];
+	cut_dim = 0;
+	for (d = 1; d < dim; d++) {			// find length of longest box side
+		ANNcoord length = bnds.hi[d] - bnds.lo[d];
+		if (length	> max_length) {
+			max_length = length;
+			cut_dim = d;
+		}
+	}
+
+	ANNcoord max_spread = 0;			// find legal cut with max spread
+	cut_dim = 0;
+	for (d = 0; d < dim; d++) {
+		ANNcoord length = bnds.hi[d] - bnds.lo[d];
+										// is this side midpoint splitable
+										// without violating aspect ratio?
+		if (((double) max_length)*2.0/((double) length) <= FS_ASPECT_RATIO) {
+										// compute spread along this dim
+			ANNcoord spr = annSpread(pa, pidx, n, d);
+			if (spr > max_spread) {		// best spread so far
+				max_spread = spr;
+				cut_dim = d;			// this is dimension to cut
+			}
+		}
+	}
+
+	max_length = 0;						// find longest side other than cut_dim
+	for (d = 0; d < dim; d++) {
+		ANNcoord length = bnds.hi[d] - bnds.lo[d];
+		if (d != cut_dim && length > max_length)
+			max_length = length;
+	}
+										// consider most extreme splits
+	ANNcoord small_piece = max_length / FS_ASPECT_RATIO;
+	ANNcoord lo_cut = bnds.lo[cut_dim] + small_piece;// lowest legal cut
+	ANNcoord hi_cut = bnds.hi[cut_dim] - small_piece;// highest legal cut
+										// find min and max along cut_dim
+	annMinMax(pa, pidx, n, cut_dim, min, max);
+										// is median below lo_cut?
+	if (annSplitBalance(pa, pidx, n, cut_dim, lo_cut) >= 0) {
+		if (max > lo_cut) {				// are any points above lo_cut?
+			cut_val = lo_cut;			// cut at lo_cut
+			annPlaneSplit(pa, pidx, n, cut_dim, cut_val, br1, br2);
+			n_lo = br1;					// balance if there are ties
+		}
+		else {							// all points below lo_cut
+			cut_val = max;				// cut at max value
+			annPlaneSplit(pa, pidx, n, cut_dim, cut_val, br1, br2);
+			n_lo = n-1;
+		}
+	}
+										// is median above hi_cut?
+	else if (annSplitBalance(pa, pidx, n, cut_dim, hi_cut) <= 0) {
+		if (min < hi_cut) {				// are any points below hi_cut?
+			cut_val = hi_cut;			// cut at hi_cut
+			annPlaneSplit(pa, pidx, n, cut_dim, cut_val, br1, br2);
+			n_lo = br2;					// balance if there are ties
+		}
+		else {							// all points above hi_cut
+			cut_val = min;				// cut at min value
+			annPlaneSplit(pa, pidx, n, cut_dim, cut_val, br1, br2);
+			n_lo = 1;
+		}
+	}
+	else {								// median cut is good enough
+		n_lo = n/2;						// split about median
+		annMedianSplit(pa, pidx, n, cut_dim, cut_val, n_lo);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/kd_split.h	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,85 @@
+//----------------------------------------------------------------------
+// File:			kd_split.h
+// Programmer:		Sunil Arya and David Mount
+// Description:		Methods for splitting kd-trees
+// Last modified:	01/04/05 (Version 1.0)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//----------------------------------------------------------------------
+
+#ifndef ANN_KD_SPLIT_H
+#define ANN_KD_SPLIT_H
+
+#include "kd_tree.h"					// kd-tree definitions
+
+//----------------------------------------------------------------------
+//	External entry points
+//		These are all splitting procedures for kd-trees.
+//----------------------------------------------------------------------
+
+void kd_split(							// standard (optimized) kd-splitter
+	ANNpointArray		pa,				// point array (unaltered)
+	ANNidxArray			pidx,			// point indices (permuted on return)
+	const ANNorthRect	&bnds,			// bounding rectangle for cell
+	int					n,				// number of points
+	int					dim,			// dimension of space
+	int					&cut_dim,		// cutting dimension (returned)
+	ANNcoord			&cut_val,		// cutting value (returned)
+	int					&n_lo);			// num of points on low side (returned)
+
+void midpt_split(						// midpoint kd-splitter
+	ANNpointArray		pa,				// point array (unaltered)
+	ANNidxArray			pidx,			// point indices (permuted on return)
+	const ANNorthRect	&bnds,			// bounding rectangle for cell
+	int					n,				// number of points
+	int					dim,			// dimension of space
+	int					&cut_dim,		// cutting dimension (returned)
+	ANNcoord			&cut_val,		// cutting value (returned)
+	int					&n_lo);			// num of points on low side (returned)
+
+void sl_midpt_split(					// sliding midpoint kd-splitter
+	ANNpointArray		pa,				// point array (unaltered)
+	ANNidxArray			pidx,			// point indices (permuted on return)
+	const ANNorthRect	&bnds,			// bounding rectangle for cell
+	int					n,				// number of points
+	int					dim,			// dimension of space
+	int					&cut_dim,		// cutting dimension (returned)
+	ANNcoord			&cut_val,		// cutting value (returned)
+	int					&n_lo);			// num of points on low side (returned)
+
+void fair_split(						// fair-split kd-splitter
+	ANNpointArray		pa,				// point array (unaltered)
+	ANNidxArray			pidx,			// point indices (permuted on return)
+	const ANNorthRect	&bnds,			// bounding rectangle for cell
+	int					n,				// number of points
+	int					dim,			// dimension of space
+	int					&cut_dim,		// cutting dimension (returned)
+	ANNcoord			&cut_val,		// cutting value (returned)
+	int					&n_lo);			// num of points on low side (returned)
+
+void sl_fair_split(						// sliding fair-split kd-splitter
+	ANNpointArray		pa,				// point array (unaltered)
+	ANNidxArray			pidx,			// point indices (permuted on return)
+	const ANNorthRect	&bnds,			// bounding rectangle for cell
+	int					n,				// number of points
+	int					dim,			// dimension of space
+	int					&cut_dim,		// cutting dimension (returned)
+	ANNcoord			&cut_val,		// cutting value (returned)
+	int					&n_lo);			// num of points on low side (returned)
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/kd_tree.cpp	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,405 @@
+//----------------------------------------------------------------------
+// File:			kd_tree.cpp
+// Programmer:		Sunil Arya and David Mount
+// Description:		Basic methods for kd-trees.
+// Last modified:	01/04/05 (Version 1.0)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//	Revision 1.0  04/01/05
+//		Increased aspect ratio bound (ANN_AR_TOOBIG) from 100 to 1000.
+//		Fixed leaf counts to count trivial leaves.
+//		Added optional pa, pi arguments to Skeleton kd_tree constructor
+//			for use in load constructor.
+//		Added annClose() to eliminate KD_TRIVIAL memory leak.
+//----------------------------------------------------------------------
+
+#include "kd_tree.h"					// kd-tree declarations
+#include "kd_split.h"					// kd-tree splitting rules
+#include "kd_util.h"					// kd-tree utilities
+#include <ANN/ANNperf.h>				// performance evaluation
+
+//----------------------------------------------------------------------
+//	Global data
+//
+//	For some splitting rules, especially with small bucket sizes,
+//	it is possible to generate a large number of empty leaf nodes.
+//	To save storage we allocate a single trivial leaf node which
+//	contains no points.  For messy coding reasons it is convenient
+//	to have it reference a trivial point index.
+//
+//	KD_TRIVIAL is allocated when the first kd-tree is created.  It
+//	must *never* deallocated (since it may be shared by more than
+//	one tree).
+//----------------------------------------------------------------------
+static int				IDX_TRIVIAL[] = {0};	// trivial point index
+ANNkd_leaf				*KD_TRIVIAL = NULL;		// trivial leaf node
+
+//----------------------------------------------------------------------
+//	Printing the kd-tree 
+//		These routines print a kd-tree in reverse inorder (high then
+//		root then low).  (This is so that if you look at the output
+//		from the right side it appear from left to right in standard
+//		inorder.)  When outputting leaves we output only the point
+//		indices rather than the point coordinates. There is an option
+//		to print the point coordinates separately.
+//
+//		The tree printing routine calls the printing routines on the
+//		individual nodes of the tree, passing in the level or depth
+//		in the tree.  The level in the tree is used to print indentation
+//		for readability.
+//----------------------------------------------------------------------
+
+void ANNkd_split::print(				// print splitting node
+		int level,						// depth of node in tree
+		ostream &out)					// output stream
+{
+	child[ANN_HI]->print(level+1, out);	// print high child
+	out << "    ";
+	for (int i = 0; i < level; i++)		// print indentation
+		out << "..";
+	out << "Split cd=" << cut_dim << " cv=" << cut_val;
+	out << " lbnd=" << cd_bnds[ANN_LO];
+	out << " hbnd=" << cd_bnds[ANN_HI];
+	out << "\n";
+	child[ANN_LO]->print(level+1, out);	// print low child
+}
+
+void ANNkd_leaf::print(					// print leaf node
+		int level,						// depth of node in tree
+		ostream &out)					// output stream
+{
+
+	out << "    ";
+	for (int i = 0; i < level; i++)		// print indentation
+		out << "..";
+
+	if (this == KD_TRIVIAL) {			// canonical trivial leaf node
+		out << "Leaf (trivial)\n";
+	}
+	else{
+		out << "Leaf n=" << n_pts << " <";
+		for (int j = 0; j < n_pts; j++) {
+			out << bkt[j];
+			if (j < n_pts-1) out << ",";
+		}
+		out << ">\n";
+	}
+}
+
+void ANNkd_tree::Print(					// print entire tree
+		ANNbool with_pts,				// print points as well?
+		ostream &out)					// output stream
+{
+	out << "ANN Version " << ANNversion << "\n";
+	if (with_pts) {						// print point coordinates
+		out << "    Points:\n";
+		for (int i = 0; i < n_pts; i++) {
+			out << "\t" << i << ": ";
+			annPrintPt(pts[i], dim, out);
+			out << "\n";
+		}
+	}
+	if (root == NULL)					// empty tree?
+		out << "    Null tree.\n";
+	else {
+		root->print(0, out);			// invoke printing at root
+	}
+}
+
+//----------------------------------------------------------------------
+//	kd_tree statistics (for performance evaluation)
+//		This routine compute various statistics information for
+//		a kd-tree.  It is used by the implementors for performance
+//		evaluation of the data structure.
+//----------------------------------------------------------------------
+
+#define MAX(a,b)		((a) > (b) ? (a) : (b))
+
+void ANNkdStats::merge(const ANNkdStats &st)	// merge stats from child 
+{
+	n_lf += st.n_lf;			n_tl += st.n_tl;
+	n_spl += st.n_spl;			n_shr += st.n_shr;
+	depth = MAX(depth, st.depth);
+	sum_ar += st.sum_ar;
+}
+
+//----------------------------------------------------------------------
+//	Update statistics for nodes
+//----------------------------------------------------------------------
+
+const double ANN_AR_TOOBIG = 1000;				// too big an aspect ratio
+
+void ANNkd_leaf::getStats(						// get subtree statistics
+	int					dim,					// dimension of space
+	ANNkdStats			&st,					// stats (modified)
+	ANNorthRect			&bnd_box)				// bounding box
+{
+	st.reset();
+	st.n_lf = 1;								// count this leaf
+	if (this == KD_TRIVIAL) st.n_tl = 1;		// count trivial leaf
+	double ar = annAspectRatio(dim, bnd_box);	// aspect ratio of leaf
+												// incr sum (ignore outliers)
+	st.sum_ar += float(ar < ANN_AR_TOOBIG ? ar : ANN_AR_TOOBIG);
+}
+
+void ANNkd_split::getStats(						// get subtree statistics
+	int					dim,					// dimension of space
+	ANNkdStats			&st,					// stats (modified)
+	ANNorthRect			&bnd_box)				// bounding box
+{
+	ANNkdStats ch_stats;						// stats for children
+												// get stats for low child
+	ANNcoord hv = bnd_box.hi[cut_dim];			// save box bounds
+	bnd_box.hi[cut_dim] = cut_val;				// upper bound for low child
+	ch_stats.reset();							// reset
+	child[ANN_LO]->getStats(dim, ch_stats, bnd_box);
+	st.merge(ch_stats);							// merge them
+	bnd_box.hi[cut_dim] = hv;					// restore bound
+												// get stats for high child
+	ANNcoord lv = bnd_box.lo[cut_dim];			// save box bounds
+	bnd_box.lo[cut_dim] = cut_val;				// lower bound for high child
+	ch_stats.reset();							// reset
+	child[ANN_HI]->getStats(dim, ch_stats, bnd_box);
+	st.merge(ch_stats);							// merge them
+	bnd_box.lo[cut_dim] = lv;					// restore bound
+
+	st.depth++;									// increment depth
+	st.n_spl++;									// increment number of splits
+}
+
+//----------------------------------------------------------------------
+//	getStats
+//		Collects a number of statistics related to kd_tree or
+//		bd_tree.
+//----------------------------------------------------------------------
+
+void ANNkd_tree::getStats(						// get tree statistics
+	ANNkdStats			&st)					// stats (modified)
+{
+	st.reset(dim, n_pts, bkt_size);				// reset stats
+												// create bounding box
+	ANNorthRect bnd_box(dim, bnd_box_lo, bnd_box_hi);
+	if (root != NULL) {							// if nonempty tree
+		root->getStats(dim, st, bnd_box);		// get statistics
+		st.avg_ar = st.sum_ar / st.n_lf;		// average leaf asp ratio
+	}
+}
+
+//----------------------------------------------------------------------
+//	kd_tree destructor
+//		The destructor just frees the various elements that were
+//		allocated in the construction process.
+//----------------------------------------------------------------------
+
+ANNkd_tree::~ANNkd_tree()				// tree destructor
+{
+	if (root != NULL) delete root;
+	if (pidx != NULL) delete [] pidx;
+	if (bnd_box_lo != NULL) annDeallocPt(bnd_box_lo);
+	if (bnd_box_hi != NULL) annDeallocPt(bnd_box_hi);
+}
+
+//----------------------------------------------------------------------
+//	This is called with all use of ANN is finished.  It eliminates the
+//	minor memory leak caused by the allocation of KD_TRIVIAL.
+//----------------------------------------------------------------------
+void annClose()				// close use of ANN
+{
+	if (KD_TRIVIAL != NULL) {
+		delete KD_TRIVIAL;
+		KD_TRIVIAL = NULL;
+	}
+}
+
+//----------------------------------------------------------------------
+//	kd_tree constructors
+//		There is a skeleton kd-tree constructor which sets up a
+//		trivial empty tree.	 The last optional argument allows
+//		the routine to be passed a point index array which is
+//		assumed to be of the proper size (n).  Otherwise, one is
+//		allocated and initialized to the identity.	Warning: In
+//		either case the destructor will deallocate this array.
+//
+//		As a kludge, we need to allocate KD_TRIVIAL if one has not
+//		already been allocated.	 (This is because I'm too dumb to
+//		figure out how to cause a pointer to be allocated at load
+//		time.)
+//----------------------------------------------------------------------
+
+void ANNkd_tree::SkeletonTree(			// construct skeleton tree
+		int n,							// number of points
+		int dd,							// dimension
+		int bs,							// bucket size
+		ANNpointArray pa,				// point array
+		ANNidxArray pi)					// point indices
+{
+	dim = dd;							// initialize basic elements
+	n_pts = n;
+	bkt_size = bs;
+	pts = pa;							// initialize points array
+
+	root = NULL;						// no associated tree yet
+
+	if (pi == NULL) {					// point indices provided?
+		pidx = new ANNidx[n];			// no, allocate space for point indices
+		for (int i = 0; i < n; i++) {
+			pidx[i] = i;				// initially identity
+		}
+	}
+	else {
+		pidx = pi;						// yes, use them
+	}
+
+	bnd_box_lo = bnd_box_hi = NULL;		// bounding box is nonexistent
+	if (KD_TRIVIAL == NULL)				// no trivial leaf node yet?
+		KD_TRIVIAL = new ANNkd_leaf(0, IDX_TRIVIAL);	// allocate it
+}
+
+ANNkd_tree::ANNkd_tree(					// basic constructor
+		int n,							// number of points
+		int dd,							// dimension
+		int bs)							// bucket size
+{  SkeletonTree(n, dd, bs);  }			// construct skeleton tree
+
+//----------------------------------------------------------------------
+//	rkd_tree - recursive procedure to build a kd-tree
+//
+//		Builds a kd-tree for points in pa as indexed through the
+//		array pidx[0..n-1] (typically a subarray of the array used in
+//		the top-level call).  This routine permutes the array pidx,
+//		but does not alter pa[].
+//
+//		The construction is based on a standard algorithm for constructing
+//		the kd-tree (see Friedman, Bentley, and Finkel, ``An algorithm for
+//		finding best matches in logarithmic expected time,'' ACM Transactions
+//		on Mathematical Software, 3(3):209-226, 1977).  The procedure
+//		operates by a simple divide-and-conquer strategy, which determines
+//		an appropriate orthogonal cutting plane (see below), and splits
+//		the points.  When the number of points falls below the bucket size,
+//		we simply store the points in a leaf node's bucket.
+//
+//		One of the arguments is a pointer to a splitting routine,
+//		whose prototype is:
+//		
+//				void split(
+//						ANNpointArray pa,  // complete point array
+//						ANNidxArray pidx,  // point array (permuted on return)
+//						ANNorthRect &bnds, // bounds of current cell
+//						int n,			   // number of points
+//						int dim,		   // dimension of space
+//						int &cut_dim,	   // cutting dimension
+//						ANNcoord &cut_val, // cutting value
+//						int &n_lo)		   // no. of points on low side of cut
+//
+//		This procedure selects a cutting dimension and cutting value,
+//		partitions pa about these values, and returns the number of
+//		points on the low side of the cut.
+//----------------------------------------------------------------------
+
+ANNkd_ptr rkd_tree(				// recursive construction of kd-tree
+	ANNpointArray		pa,				// point array
+	ANNidxArray			pidx,			// point indices to store in subtree
+	int					n,				// number of points
+	int					dim,			// dimension of space
+	int					bsp,			// bucket space
+	ANNorthRect			&bnd_box,		// bounding box for current node
+	ANNkd_splitter		splitter)		// splitting routine
+{
+	if (n <= bsp) {						// n small, make a leaf node
+		if (n == 0)						// empty leaf node
+			return KD_TRIVIAL;			// return (canonical) empty leaf
+		else							// construct the node and return
+			return new ANNkd_leaf(n, pidx); 
+	}
+	else {								// n large, make a splitting node
+		int cd;							// cutting dimension
+		ANNcoord cv;					// cutting value
+		int n_lo;						// number on low side of cut
+		ANNkd_node *lo, *hi;			// low and high children
+
+										// invoke splitting procedure
+		(*splitter)(pa, pidx, bnd_box, n, dim, cd, cv, n_lo);
+
+		ANNcoord lv = bnd_box.lo[cd];	// save bounds for cutting dimension
+		ANNcoord hv = bnd_box.hi[cd];
+
+		bnd_box.hi[cd] = cv;			// modify bounds for left subtree
+		lo = rkd_tree(					// build left subtree
+				pa, pidx, n_lo,			// ...from pidx[0..n_lo-1]
+				dim, bsp, bnd_box, splitter);
+		bnd_box.hi[cd] = hv;			// restore bounds
+
+		bnd_box.lo[cd] = cv;			// modify bounds for right subtree
+		hi = rkd_tree(					// build right subtree
+				pa, pidx + n_lo, n-n_lo,// ...from pidx[n_lo..n-1]
+				dim, bsp, bnd_box, splitter);
+		bnd_box.lo[cd] = lv;			// restore bounds
+
+										// create the splitting node
+		ANNkd_split *ptr = new ANNkd_split(cd, cv, lv, hv, lo, hi);
+
+		return ptr;						// return pointer to this node
+	}
+} 
+
+//----------------------------------------------------------------------
+// kd-tree constructor
+//		This is the main constructor for kd-trees given a set of points.
+//		It first builds a skeleton tree, then computes the bounding box
+//		of the data points, and then invokes rkd_tree() to actually
+//		build the tree, passing it the appropriate splitting routine.
+//----------------------------------------------------------------------
+
+ANNkd_tree::ANNkd_tree(					// construct from point array
+	ANNpointArray		pa,				// point array (with at least n pts)
+	int					n,				// number of points
+	int					dd,				// dimension
+	int					bs,				// bucket size
+	ANNsplitRule		split)			// splitting method
+{
+	SkeletonTree(n, dd, bs);			// set up the basic stuff
+	pts = pa;							// where the points are
+	if (n == 0) return;					// no points--no sweat
+
+	ANNorthRect bnd_box(dd);			// bounding box for points
+	annEnclRect(pa, pidx, n, dd, bnd_box);// construct bounding rectangle
+										// copy to tree structure
+	bnd_box_lo = annCopyPt(dd, bnd_box.lo);
+	bnd_box_hi = annCopyPt(dd, bnd_box.hi);
+
+	switch (split) {					// build by rule
+	case ANN_KD_STD:					// standard kd-splitting rule
+		root = rkd_tree(pa, pidx, n, dd, bs, bnd_box, kd_split);
+		break;
+	case ANN_KD_MIDPT:					// midpoint split
+		root = rkd_tree(pa, pidx, n, dd, bs, bnd_box, midpt_split);
+		break;
+	case ANN_KD_FAIR:					// fair split
+		root = rkd_tree(pa, pidx, n, dd, bs, bnd_box, fair_split);
+		break;
+	case ANN_KD_SUGGEST:				// best (in our opinion)
+	case ANN_KD_SL_MIDPT:				// sliding midpoint split
+		root = rkd_tree(pa, pidx, n, dd, bs, bnd_box, sl_midpt_split);
+		break;
+	case ANN_KD_SL_FAIR:				// sliding fair split
+		root = rkd_tree(pa, pidx, n, dd, bs, bnd_box, sl_fair_split);
+		break;
+	default:
+		annError("Illegal splitting method", ANNabort);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/kd_tree.h	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,197 @@
+//----------------------------------------------------------------------
+// File:			kd_tree.h
+// Programmer:		Sunil Arya and David Mount
+// Description:		Declarations for standard kd-tree routines
+// Last modified:	05/03/05 (Version 1.1)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//	Revision 1.1  05/03/05
+//		Added fixed radius kNN search
+//----------------------------------------------------------------------
+
+#ifndef ANN_kd_tree_H
+#define ANN_kd_tree_H
+
+#include <ANN/ANNx.h>					// all ANN includes
+
+using namespace std;					// make std:: available
+
+//----------------------------------------------------------------------
+//	Generic kd-tree node
+//
+//		Nodes in kd-trees are of two types, splitting nodes which contain
+//		splitting information (a splitting hyperplane orthogonal to one
+//		of the coordinate axes) and leaf nodes which contain point
+//		information (an array of points stored in a bucket).  This is
+//		handled by making a generic class kd_node, which is essentially an
+//		empty shell, and then deriving the leaf and splitting nodes from
+//		this.
+//----------------------------------------------------------------------
+
+class ANNkd_node{						// generic kd-tree node (empty shell)
+public:
+	virtual ~ANNkd_node() {}					// virtual distroyer
+
+	virtual void ann_search(ANNdist) = 0;		// tree search
+	virtual void ann_pri_search(ANNdist) = 0;	// priority search
+	virtual void ann_FR_search(ANNdist) = 0;	// fixed-radius search
+
+	virtual void getStats(						// get tree statistics
+				int dim,						// dimension of space
+				ANNkdStats &st,					// statistics
+				ANNorthRect &bnd_box) = 0;		// bounding box
+												// print node
+	virtual void print(int level, ostream &out) = 0;
+	virtual void dump(ostream &out) = 0;		// dump node
+
+	friend class ANNkd_tree;					// allow kd-tree to access us
+};
+
+//----------------------------------------------------------------------
+//	kd-splitting function:
+//		kd_splitter is a pointer to a splitting routine for preprocessing.
+//		Different splitting procedures result in different strategies
+//		for building the tree.
+//----------------------------------------------------------------------
+
+typedef void (*ANNkd_splitter)(			// splitting routine for kd-trees
+	ANNpointArray		pa,				// point array (unaltered)
+	ANNidxArray			pidx,			// point indices (permuted on return)
+	const ANNorthRect	&bnds,			// bounding rectangle for cell
+	int					n,				// number of points
+	int					dim,			// dimension of space
+	int					&cut_dim,		// cutting dimension (returned)
+	ANNcoord			&cut_val,		// cutting value (returned)
+	int					&n_lo);			// num of points on low side (returned)
+
+//----------------------------------------------------------------------
+//	Leaf kd-tree node
+//		Leaf nodes of the kd-tree store the set of points associated
+//		with this bucket, stored as an array of point indices.  These
+//		are indices in the array points, which resides with the
+//		root of the kd-tree.  We also store the number of points
+//		that reside in this bucket.
+//----------------------------------------------------------------------
+
+class ANNkd_leaf: public ANNkd_node		// leaf node for kd-tree
+{
+	int					n_pts;			// no. points in bucket
+	ANNidxArray			bkt;			// bucket of points
+public:
+	ANNkd_leaf(							// constructor
+		int				n,				// number of points
+		ANNidxArray		b)				// bucket
+		{
+			n_pts		= n;			// number of points in bucket
+			bkt			= b;			// the bucket
+		}
+
+	~ANNkd_leaf() { }					// destructor (none)
+
+	virtual void getStats(						// get tree statistics
+				int dim,						// dimension of space
+				ANNkdStats &st,					// statistics
+				ANNorthRect &bnd_box);			// bounding box
+	virtual void print(int level, ostream &out);// print node
+	virtual void dump(ostream &out);			// dump node
+
+	virtual void ann_search(ANNdist);			// standard search
+	virtual void ann_pri_search(ANNdist);		// priority search
+	virtual void ann_FR_search(ANNdist);		// fixed-radius search
+};
+
+//----------------------------------------------------------------------
+//		KD_TRIVIAL is a special pointer to an empty leaf node. Since
+//		some splitting rules generate many (more than 50%) trivial
+//		leaves, we use this one shared node to save space.
+//
+//		The pointer is initialized to NULL, but whenever a kd-tree is
+//		created, we allocate this node, if it has not already been
+//		allocated. This node is *never* deallocated, so it produces
+//		a small memory leak.
+//----------------------------------------------------------------------
+
+extern ANNkd_leaf *KD_TRIVIAL;					// trivial (empty) leaf node
+
+//----------------------------------------------------------------------
+//	kd-tree splitting node.
+//		Splitting nodes contain a cutting dimension and a cutting value.
+//		These indicate the axis-parellel plane which subdivide the
+//		box for this node. The extent of the bounding box along the
+//		cutting dimension is maintained (this is used to speed up point
+//		to box distance calculations) [we do not store the entire bounding
+//		box since this may be wasteful of space in high dimensions].
+//		We also store pointers to the 2 children.
+//----------------------------------------------------------------------
+
+class ANNkd_split : public ANNkd_node	// splitting node of a kd-tree
+{
+	int					cut_dim;		// dim orthogonal to cutting plane
+	ANNcoord			cut_val;		// location of cutting plane
+	ANNcoord			cd_bnds[2];		// lower and upper bounds of
+										// rectangle along cut_dim
+	ANNkd_ptr			child[2];		// left and right children
+public:
+	ANNkd_split(						// constructor
+		int cd,							// cutting dimension
+		ANNcoord cv,					// cutting value
+		ANNcoord lv, ANNcoord hv,				// low and high values
+		ANNkd_ptr lc=NULL, ANNkd_ptr hc=NULL)	// children
+		{
+			cut_dim		= cd;					// cutting dimension
+			cut_val		= cv;					// cutting value
+			cd_bnds[ANN_LO] = lv;				// lower bound for rectangle
+			cd_bnds[ANN_HI] = hv;				// upper bound for rectangle
+			child[ANN_LO]	= lc;				// left child
+			child[ANN_HI]	= hc;				// right child
+		}
+
+	~ANNkd_split()						// destructor
+		{
+			if (child[ANN_LO]!= NULL && child[ANN_LO]!= KD_TRIVIAL)
+				delete child[ANN_LO];
+			if (child[ANN_HI]!= NULL && child[ANN_HI]!= KD_TRIVIAL)
+				delete child[ANN_HI];
+		}
+
+	virtual void getStats(						// get tree statistics
+				int dim,						// dimension of space
+				ANNkdStats &st,					// statistics
+				ANNorthRect &bnd_box);			// bounding box
+	virtual void print(int level, ostream &out);// print node
+	virtual void dump(ostream &out);			// dump node
+
+	virtual void ann_search(ANNdist);			// standard search
+	virtual void ann_pri_search(ANNdist);		// priority search
+	virtual void ann_FR_search(ANNdist);		// fixed-radius search
+};
+
+//----------------------------------------------------------------------
+//		External entry points
+//----------------------------------------------------------------------
+
+ANNkd_ptr rkd_tree(				// recursive construction of kd-tree
+	ANNpointArray		pa,				// point array (unaltered)
+	ANNidxArray			pidx,			// point indices to store in subtree
+	int					n,				// number of points
+	int					dim,			// dimension of space
+	int					bsp,			// bucket space
+	ANNorthRect			&bnd_box,		// bounding box for current node
+	ANNkd_splitter		splitter);		// splitting routine
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/kd_util.cpp	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,439 @@
+//----------------------------------------------------------------------
+// File:			kd_util.cpp
+// Programmer:		Sunil Arya and David Mount
+// Description:		Common utilities for kd-trees
+// Last modified:	01/04/05 (Version 1.0)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//----------------------------------------------------------------------
+
+#include "kd_util.h"					// kd-utility declarations
+
+#include <ANN/ANNperf.h>				// performance evaluation
+
+//----------------------------------------------------------------------
+// The following routines are utility functions for manipulating
+// points sets, used in determining splitting planes for kd-tree
+// construction.
+//----------------------------------------------------------------------
+
+//----------------------------------------------------------------------
+//	NOTE: Virtually all point indexing is done through an index (i.e.
+//	permutation) array pidx.  Consequently, a reference to the d-th
+//	coordinate of the i-th point is pa[pidx[i]][d].  The macro PA(i,d)
+//	is a shorthand for this.
+//----------------------------------------------------------------------
+										// standard 2-d indirect indexing
+#define PA(i,d)			(pa[pidx[(i)]][(d)])
+										// accessing a single point
+#define PP(i)			(pa[pidx[(i)]])
+
+//----------------------------------------------------------------------
+//	annAspectRatio
+//		Compute the aspect ratio (ratio of longest to shortest side)
+//		of a rectangle.
+//----------------------------------------------------------------------
+
+double annAspectRatio(
+	int					dim,			// dimension
+	const ANNorthRect	&bnd_box)		// bounding cube
+{
+	ANNcoord length = bnd_box.hi[0] - bnd_box.lo[0];
+	ANNcoord min_length = length;				// min side length
+	ANNcoord max_length = length;				// max side length
+	for (int d = 0; d < dim; d++) {
+		length = bnd_box.hi[d] - bnd_box.lo[d];
+		if (length < min_length) min_length = length;
+		if (length > max_length) max_length = length;
+	}
+	return max_length/min_length;
+}
+
+//----------------------------------------------------------------------
+//	annEnclRect, annEnclCube
+//		These utilities compute the smallest rectangle and cube enclosing
+//		a set of points, respectively.
+//----------------------------------------------------------------------
+
+void annEnclRect(
+	ANNpointArray		pa,				// point array
+	ANNidxArray			pidx,			// point indices
+	int					n,				// number of points
+	int					dim,			// dimension
+	ANNorthRect			&bnds)			// bounding cube (returned)
+{
+	for (int d = 0; d < dim; d++) {		// find smallest enclosing rectangle
+		ANNcoord lo_bnd = PA(0,d);		// lower bound on dimension d
+		ANNcoord hi_bnd = PA(0,d);		// upper bound on dimension d
+		for (int i = 0; i < n; i++) {
+			if (PA(i,d) < lo_bnd) lo_bnd = PA(i,d);
+			else if (PA(i,d) > hi_bnd) hi_bnd = PA(i,d);
+		}
+		bnds.lo[d] = lo_bnd;
+		bnds.hi[d] = hi_bnd;
+	}
+}
+
+void annEnclCube(						// compute smallest enclosing cube
+	ANNpointArray		pa,				// point array
+	ANNidxArray			pidx,			// point indices
+	int					n,				// number of points
+	int					dim,			// dimension
+	ANNorthRect			&bnds)			// bounding cube (returned)
+{
+	int d;
+										// compute smallest enclosing rect
+	annEnclRect(pa, pidx, n, dim, bnds);
+
+	ANNcoord max_len = 0;				// max length of any side
+	for (d = 0; d < dim; d++) {			// determine max side length
+		ANNcoord len = bnds.hi[d] - bnds.lo[d];
+		if (len > max_len) {			// update max_len if longest
+			max_len = len;
+		}
+	}
+	for (d = 0; d < dim; d++) {			// grow sides to match max
+		ANNcoord len = bnds.hi[d] - bnds.lo[d];
+		ANNcoord half_diff = (max_len - len) / 2;
+		bnds.lo[d] -= half_diff;
+		bnds.hi[d] += half_diff;
+	}
+}
+
+//----------------------------------------------------------------------
+//	annBoxDistance - utility routine which computes distance from point to
+//		box (Note: most distances to boxes are computed using incremental
+//		distance updates, not this function.)
+//----------------------------------------------------------------------
+
+ANNdist annBoxDistance(			// compute distance from point to box
+	const ANNpoint		q,				// the point
+	const ANNpoint		lo,				// low point of box
+	const ANNpoint		hi,				// high point of box
+	int					dim)			// dimension of space
+{
+	register ANNdist dist = 0.0;		// sum of squared distances
+	register ANNdist t;
+
+	for (register int d = 0; d < dim; d++) {
+		if (q[d] < lo[d]) {				// q is left of box
+			t = ANNdist(lo[d]) - ANNdist(q[d]);
+			dist = ANN_SUM(dist, ANN_POW(t));
+		}
+		else if (q[d] > hi[d]) {		// q is right of box
+			t = ANNdist(q[d]) - ANNdist(hi[d]);
+			dist = ANN_SUM(dist, ANN_POW(t));
+		}
+	}
+	ANN_FLOP(4*dim)						// increment floating op count
+
+	return dist;
+}
+
+//----------------------------------------------------------------------
+//	annSpread - find spread along given dimension
+//	annMinMax - find min and max coordinates along given dimension
+//	annMaxSpread - find dimension of max spread
+//----------------------------------------------------------------------
+
+ANNcoord annSpread(				// compute point spread along dimension
+	ANNpointArray		pa,				// point array
+	ANNidxArray			pidx,			// point indices
+	int					n,				// number of points
+	int					d)				// dimension to check
+{
+	ANNcoord min = PA(0,d);				// compute max and min coords
+	ANNcoord max = PA(0,d);
+	for (int i = 1; i < n; i++) {
+		ANNcoord c = PA(i,d);
+		if (c < min) min = c;
+		else if (c > max) max = c;
+	}
+	return (max - min);					// total spread is difference
+}
+
+void annMinMax(					// compute min and max coordinates along dim
+	ANNpointArray		pa,				// point array
+	ANNidxArray			pidx,			// point indices
+	int					n,				// number of points
+	int					d,				// dimension to check
+	ANNcoord			&min,			// minimum value (returned)
+	ANNcoord			&max)			// maximum value (returned)
+{
+	min = PA(0,d);						// compute max and min coords
+	max = PA(0,d);
+	for (int i = 1; i < n; i++) {
+		ANNcoord c = PA(i,d);
+		if (c < min) min = c;
+		else if (c > max) max = c;
+	}
+}
+
+int annMaxSpread(						// compute dimension of max spread
+	ANNpointArray		pa,				// point array
+	ANNidxArray			pidx,			// point indices
+	int					n,				// number of points
+	int					dim)			// dimension of space
+{
+	int max_dim = 0;					// dimension of max spread
+	ANNcoord max_spr = 0;				// amount of max spread
+
+	if (n == 0) return max_dim;			// no points, who cares?
+
+	for (int d = 0; d < dim; d++) {		// compute spread along each dim
+		ANNcoord spr = annSpread(pa, pidx, n, d);
+		if (spr > max_spr) {			// bigger than current max
+			max_spr = spr;
+			max_dim = d;
+		}
+	}
+	return max_dim;
+}
+
+//----------------------------------------------------------------------
+//	annMedianSplit - split point array about its median
+//		Splits a subarray of points pa[0..n] about an element of given
+//		rank (median: n_lo = n/2) with respect to dimension d.  It places
+//		the element of rank n_lo-1 correctly (because our splitting rule
+//		takes the mean of these two).  On exit, the array is permuted so
+//		that:
+//
+//		pa[0..n_lo-2][d] <= pa[n_lo-1][d] <= pa[n_lo][d] <= pa[n_lo+1..n-1][d].
+//
+//		The mean of pa[n_lo-1][d] and pa[n_lo][d] is returned as the
+//		splitting value.
+//
+//		All indexing is done indirectly through the index array pidx.
+//
+//		This function uses the well known selection algorithm due to
+//		C.A.R. Hoare.
+//----------------------------------------------------------------------
+
+										// swap two points in pa array
+#define PASWAP(a,b) { int tmp = pidx[a]; pidx[a] = pidx[b]; pidx[b] = tmp; }
+
+void annMedianSplit(
+	ANNpointArray		pa,				// points to split
+	ANNidxArray			pidx,			// point indices
+	int					n,				// number of points
+	int					d,				// dimension along which to split
+	ANNcoord			&cv,			// cutting value
+	int					n_lo)			// split into n_lo and n-n_lo
+{
+	int l = 0;							// left end of current subarray
+	int r = n-1;						// right end of current subarray
+	while (l < r) {
+		register int i = (r+l)/2;		// select middle as pivot
+		register int k;
+
+		if (PA(i,d) > PA(r,d))			// make sure last > pivot
+			PASWAP(i,r)
+		PASWAP(l,i);					// move pivot to first position
+
+		ANNcoord c = PA(l,d);			// pivot value
+		i = l;
+		k = r;
+		for(;;) {						// pivot about c
+			while (PA(++i,d) < c) ;
+			while (PA(--k,d) > c) ;
+			if (i < k) PASWAP(i,k) else break;
+		}
+		PASWAP(l,k);					// pivot winds up in location k
+
+		if (k > n_lo)	   r = k-1;		// recurse on proper subarray
+		else if (k < n_lo) l = k+1;
+		else break;						// got the median exactly
+	}
+	if (n_lo > 0) {						// search for next smaller item
+		ANNcoord c = PA(0,d);			// candidate for max
+		int k = 0;						// candidate's index
+		for (int i = 1; i < n_lo; i++) {
+			if (PA(i,d) > c) {
+				c = PA(i,d);
+				k = i;
+			}
+		}
+		PASWAP(n_lo-1, k);				// max among pa[0..n_lo-1] to pa[n_lo-1]
+	}
+										// cut value is midpoint value
+	cv = (PA(n_lo-1,d) + PA(n_lo,d))/2.0;
+}
+
+//----------------------------------------------------------------------
+//	annPlaneSplit - split point array about a cutting plane
+//		Split the points in an array about a given plane along a
+//		given cutting dimension.  On exit, br1 and br2 are set so
+//		that:
+//		
+//				pa[ 0 ..br1-1] <  cv
+//				pa[br1..br2-1] == cv
+//				pa[br2.. n -1] >  cv
+//
+//		All indexing is done indirectly through the index array pidx.
+//
+//----------------------------------------------------------------------
+
+void annPlaneSplit(				// split points by a plane
+	ANNpointArray		pa,				// points to split
+	ANNidxArray			pidx,			// point indices
+	int					n,				// number of points
+	int					d,				// dimension along which to split
+	ANNcoord			cv,				// cutting value
+	int					&br1,			// first break (values < cv)
+	int					&br2)			// second break (values == cv)
+{
+	int l = 0;
+	int r = n-1;
+	for(;;) {							// partition pa[0..n-1] about cv
+		while (l < n && PA(l,d) < cv) l++;
+		while (r >= 0 && PA(r,d) >= cv) r--;
+		if (l > r) break;
+		PASWAP(l,r);
+		l++; r--;
+	}
+	br1 = l;					// now: pa[0..br1-1] < cv <= pa[br1..n-1]
+	r = n-1;
+	for(;;) {							// partition pa[br1..n-1] about cv
+		while (l < n && PA(l,d) <= cv) l++;
+		while (r >= br1 && PA(r,d) > cv) r--;
+		if (l > r) break;
+		PASWAP(l,r);
+		l++; r--;
+	}
+	br2 = l;					// now: pa[br1..br2-1] == cv < pa[br2..n-1]
+}
+
+
+//----------------------------------------------------------------------
+//	annBoxSplit - split point array about a orthogonal rectangle
+//		Split the points in an array about a given orthogonal
+//		rectangle.  On exit, n_in is set to the number of points
+//		that are inside (or on the boundary of) the rectangle.
+//
+//		All indexing is done indirectly through the index array pidx.
+//
+//----------------------------------------------------------------------
+
+void annBoxSplit(				// split points by a box
+	ANNpointArray		pa,				// points to split
+	ANNidxArray			pidx,			// point indices
+	int					n,				// number of points
+	int					dim,			// dimension of space
+	ANNorthRect			&box,			// the box
+	int					&n_in)			// number of points inside (returned)
+{
+	int l = 0;
+	int r = n-1;
+	for(;;) {							// partition pa[0..n-1] about box
+		while (l < n && box.inside(dim, PP(l))) l++;
+		while (r >= 0 && !box.inside(dim, PP(r))) r--;
+		if (l > r) break;
+		PASWAP(l,r);
+		l++; r--;
+	}
+	n_in = l;					// now: pa[0..n_in-1] inside and rest outside
+}
+
+//----------------------------------------------------------------------
+//	annSplitBalance - compute balance factor for a given plane split
+//		Balance factor is defined as the number of points lying
+//		below the splitting value minus n/2 (median).  Thus, a
+//		median split has balance 0, left of this is negative and
+//		right of this is positive.  (The points are unchanged.)
+//----------------------------------------------------------------------
+
+int annSplitBalance(			// determine balance factor of a split
+	ANNpointArray		pa,				// points to split
+	ANNidxArray			pidx,			// point indices
+	int					n,				// number of points
+	int					d,				// dimension along which to split
+	ANNcoord			cv)				// cutting value
+{
+	int n_lo = 0;
+	for(int i = 0; i < n; i++) {		// count number less than cv
+		if (PA(i,d) < cv) n_lo++;
+	}
+	return n_lo - n/2;
+}
+
+//----------------------------------------------------------------------
+//	annBox2Bnds - convert bounding box to list of bounds
+//		Given two boxes, an inner box enclosed within a bounding
+//		box, this routine determines all the sides for which the
+//		inner box is strictly contained with the bounding box,
+//		and adds an appropriate entry to a list of bounds.  Then
+//		we allocate storage for the final list of bounds, and return
+//		the resulting list and its size.
+//----------------------------------------------------------------------
+
+void annBox2Bnds(						// convert inner box to bounds
+	const ANNorthRect	&inner_box,		// inner box
+	const ANNorthRect	&bnd_box,		// enclosing box
+	int					dim,			// dimension of space
+	int					&n_bnds,		// number of bounds (returned)
+	ANNorthHSArray		&bnds)			// bounds array (returned)
+{
+	int i;
+	n_bnds = 0;									// count number of bounds
+	for (i = 0; i < dim; i++) {
+		if (inner_box.lo[i] > bnd_box.lo[i])	// low bound is inside
+				n_bnds++;
+		if (inner_box.hi[i] < bnd_box.hi[i])	// high bound is inside
+				n_bnds++;
+	}
+
+	bnds = new ANNorthHalfSpace[n_bnds];		// allocate appropriate size
+
+	int j = 0;
+	for (i = 0; i < dim; i++) {					// fill the array
+		if (inner_box.lo[i] > bnd_box.lo[i]) {
+				bnds[j].cd = i;
+				bnds[j].cv = inner_box.lo[i];
+				bnds[j].sd = +1;
+				j++;
+		}
+		if (inner_box.hi[i] < bnd_box.hi[i]) {
+				bnds[j].cd = i;
+				bnds[j].cv = inner_box.hi[i];
+				bnds[j].sd = -1;
+				j++;
+		}
+	}
+}
+
+//----------------------------------------------------------------------
+//	annBnds2Box - convert list of bounds to bounding box
+//		Given an enclosing box and a list of bounds, this routine
+//		computes the corresponding inner box.  It is assumed that
+//		the box points have been allocated already.
+//----------------------------------------------------------------------
+
+void annBnds2Box(
+	const ANNorthRect	&bnd_box,		// enclosing box
+	int					dim,			// dimension of space
+	int					n_bnds,			// number of bounds
+	ANNorthHSArray		bnds,			// bounds array
+	ANNorthRect			&inner_box)		// inner box (returned)
+{
+	annAssignRect(dim, inner_box, bnd_box);		// copy bounding box to inner
+
+	for (int i = 0; i < n_bnds; i++) {
+		bnds[i].project(inner_box.lo);			// project each endpoint
+		bnds[i].project(inner_box.hi);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/kd_util.h	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,124 @@
+//----------------------------------------------------------------------
+// File:			kd_util.h
+// Programmer:		Sunil Arya and David Mount
+// Description:		Common utilities for kd- trees
+// Last modified:	01/04/05 (Version 1.0)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//----------------------------------------------------------------------
+
+#ifndef ANN_kd_util_H
+#define ANN_kd_util_H
+
+#include "kd_tree.h"					// kd-tree declarations
+
+//----------------------------------------------------------------------
+//	externally accessible functions
+//----------------------------------------------------------------------
+
+double annAspectRatio(			// compute aspect ratio of box
+	int					dim,			// dimension
+	const ANNorthRect	&bnd_box);		// bounding cube
+
+void annEnclRect(				// compute smallest enclosing rectangle
+	ANNpointArray		pa,				// point array
+	ANNidxArray			pidx,			// point indices
+	int					n,				// number of points
+	int					dim,			// dimension
+	ANNorthRect &bnds);					// bounding cube (returned)
+
+void annEnclCube(				// compute smallest enclosing cube
+	ANNpointArray		pa,				// point array
+	ANNidxArray			pidx,			// point indices
+	int					n,				// number of points
+	int					dim,			// dimension
+	ANNorthRect &bnds);					// bounding cube (returned)
+
+ANNdist annBoxDistance(			// compute distance from point to box
+	const ANNpoint		q,				// the point
+	const ANNpoint		lo,				// low point of box
+	const ANNpoint		hi,				// high point of box
+	int					dim);			// dimension of space
+
+ANNcoord annSpread(				// compute point spread along dimension
+	ANNpointArray		pa,				// point array
+	ANNidxArray			pidx,			// point indices
+	int					n,				// number of points
+	int					d);				// dimension to check
+
+void annMinMax(					// compute min and max coordinates along dim
+	ANNpointArray		pa,				// point array
+	ANNidxArray			pidx,			// point indices
+	int					n,				// number of points
+	int					d,				// dimension to check
+	ANNcoord&			min,			// minimum value (returned)
+	ANNcoord&			max);			// maximum value (returned)
+
+int annMaxSpread(				// compute dimension of max spread
+	ANNpointArray		pa,				// point array
+	ANNidxArray			pidx,			// point indices
+	int					n,				// number of points
+	int					dim);			// dimension of space
+
+void annMedianSplit(			// split points along median value
+	ANNpointArray		pa,				// points to split
+	ANNidxArray			pidx,			// point indices
+	int					n,				// number of points
+	int					d,				// dimension along which to split
+	ANNcoord			&cv,			// cutting value
+	int					n_lo);			// split into n_lo and n-n_lo
+
+void annPlaneSplit(				// split points by a plane
+	ANNpointArray		pa,				// points to split
+	ANNidxArray			pidx,			// point indices
+	int					n,				// number of points
+	int					d,				// dimension along which to split
+	ANNcoord			cv,				// cutting value
+	int					&br1,			// first break (values < cv)
+	int					&br2);			// second break (values == cv)
+
+void annBoxSplit(				// split points by a box
+	ANNpointArray		pa,				// points to split
+	ANNidxArray			pidx,			// point indices
+	int					n,				// number of points
+	int					dim,			// dimension of space
+	ANNorthRect			&box,			// the box
+	int					&n_in);			// number of points inside (returned)
+
+int annSplitBalance(			// determine balance factor of a split
+	ANNpointArray		pa,				// points to split
+	ANNidxArray			pidx,			// point indices
+	int					n,				// number of points
+	int					d,				// dimension along which to split
+	ANNcoord			cv);			// cutting value
+
+void annBox2Bnds(				// convert inner box to bounds
+	const ANNorthRect	&inner_box,		// inner box
+	const ANNorthRect	&bnd_box,		// enclosing box
+	int					dim,			// dimension of space
+	int					&n_bnds,		// number of bounds (returned)
+	ANNorthHSArray		&bnds);			// bounds array (returned)
+
+void annBnds2Box(				// convert bounds to inner box
+	const ANNorthRect	&bnd_box,		// enclosing box
+	int					dim,			// dimension of space
+	int					n_bnds,			// number of bounds
+	ANNorthHSArray		bnds,			// bounds array
+	ANNorthRect			&inner_box);	// inner box (returned)
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/perf.cpp	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,134 @@
+//----------------------------------------------------------------------
+// File:			perf.cpp
+// Programmer:		Sunil Arya and David Mount
+// Description:		Methods for performance stats
+// Last modified:	01/04/05 (Version 1.0)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//	Revision 1.0  04/01/05
+//		Changed names to avoid namespace conflicts.
+//		Added flush after printing performance stats to fix bug
+//			in Microsoft Windows version.
+//----------------------------------------------------------------------
+
+#include <ANN/ANN.h>					// basic ANN includes
+#include <ANN/ANNperf.h>				// performance includes
+
+using namespace std;					// make std:: available
+
+//----------------------------------------------------------------------
+//	Performance statistics
+//		The following data and routines are used for computing
+//		performance statistics for nearest neighbor searching.
+//		Because these routines can slow the code down, they can be
+//		activated and deactiviated by defining the PERF variable,
+//		by compiling with the option: -DPERF
+//----------------------------------------------------------------------
+
+//----------------------------------------------------------------------
+//	Global counters for performance measurement
+//----------------------------------------------------------------------
+
+int				ann_Ndata_pts  = 0;		// number of data points
+int				ann_Nvisit_lfs = 0;		// number of leaf nodes visited
+int				ann_Nvisit_spl = 0;		// number of splitting nodes visited
+int				ann_Nvisit_shr = 0;		// number of shrinking nodes visited
+int				ann_Nvisit_pts = 0;		// visited points for one query
+int				ann_Ncoord_hts = 0;		// coordinate hits for one query
+int				ann_Nfloat_ops = 0;		// floating ops for one query
+ANNsampStat		ann_visit_lfs;			// stats on leaf nodes visits
+ANNsampStat		ann_visit_spl;			// stats on splitting nodes visits
+ANNsampStat		ann_visit_shr;			// stats on shrinking nodes visits
+ANNsampStat		ann_visit_nds;			// stats on total nodes visits
+ANNsampStat		ann_visit_pts;			// stats on points visited
+ANNsampStat		ann_coord_hts;			// stats on coordinate hits
+ANNsampStat		ann_float_ops;			// stats on floating ops
+//
+ANNsampStat		ann_average_err;		// average error
+ANNsampStat		ann_rank_err;			// rank error
+
+//----------------------------------------------------------------------
+//	Routines for statistics.
+//----------------------------------------------------------------------
+
+DLL_API void annResetStats(int data_size) // reset stats for a set of queries
+{
+	ann_Ndata_pts  = data_size;
+	ann_visit_lfs.reset();
+	ann_visit_spl.reset();
+	ann_visit_shr.reset();
+	ann_visit_nds.reset();
+	ann_visit_pts.reset();
+	ann_coord_hts.reset();
+	ann_float_ops.reset();
+	ann_average_err.reset();
+	ann_rank_err.reset();
+}
+
+DLL_API void annResetCounts()				// reset counts for one query
+{
+	ann_Nvisit_lfs = 0;
+	ann_Nvisit_spl = 0;
+	ann_Nvisit_shr = 0;
+	ann_Nvisit_pts = 0;
+	ann_Ncoord_hts = 0;
+	ann_Nfloat_ops = 0;
+}
+
+DLL_API void annUpdateStats()				// update stats with current counts
+{
+	ann_visit_lfs += ann_Nvisit_lfs;
+	ann_visit_nds += ann_Nvisit_spl + ann_Nvisit_lfs;
+	ann_visit_spl += ann_Nvisit_spl;
+	ann_visit_shr += ann_Nvisit_shr;
+	ann_visit_pts += ann_Nvisit_pts;
+	ann_coord_hts += ann_Ncoord_hts;
+	ann_float_ops += ann_Nfloat_ops;
+}
+
+										// print a single statistic
+void print_one_stat(char *title, ANNsampStat s, double div)
+{
+	cout << title << "= [ ";
+	cout.width(9); cout << s.mean()/div			<< " : ";
+	cout.width(9); cout << s.stdDev()/div		<< " ]<";
+	cout.width(9); cout << s.min()/div			<< " , ";
+	cout.width(9); cout << s.max()/div			<< " >\n";
+}
+
+DLL_API void annPrintStats(				// print statistics for a run
+	ANNbool validate)					// true if average errors desired
+{
+	cout.precision(4);					// set floating precision
+	cout << "  (Performance stats: "
+		 << " [      mean :    stddev ]<      min ,       max >\n";
+	print_one_stat("    leaf_nodes       ", ann_visit_lfs, 1);
+	print_one_stat("    splitting_nodes  ", ann_visit_spl, 1);
+	print_one_stat("    shrinking_nodes  ", ann_visit_shr, 1);
+	print_one_stat("    total_nodes      ", ann_visit_nds, 1);
+	print_one_stat("    points_visited   ", ann_visit_pts, 1);
+	print_one_stat("    coord_hits/pt    ", ann_coord_hts, ann_Ndata_pts);
+	print_one_stat("    floating_ops_(K) ", ann_float_ops, 1000);
+	if (validate) {
+		print_one_stat("    average_error    ", ann_average_err, 1);
+		print_one_stat("    rank_error       ", ann_rank_err, 1);
+	}
+	cout.precision(0);					// restore the default
+	cout << "  )\n";
+	cout.flush();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pr_queue.h	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,125 @@
+//----------------------------------------------------------------------
+// File:			pr_queue.h
+// Programmer:		Sunil Arya and David Mount
+// Description:		Include file for priority queue and related
+// 					structures.
+// Last modified:	01/04/05 (Version 1.0)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//----------------------------------------------------------------------
+
+#ifndef PR_QUEUE_H
+#define PR_QUEUE_H
+
+#include <ANN/ANNx.h>					// all ANN includes
+#include <ANN/ANNperf.h>				// performance evaluation
+
+//----------------------------------------------------------------------
+//	Basic types.
+//----------------------------------------------------------------------
+typedef void			*PQinfo;		// info field is generic pointer
+typedef ANNdist			PQkey;			// key field is distance
+
+//----------------------------------------------------------------------
+//	Priority queue
+//		A priority queue is a list of items, along with associated
+//		priorities.  The basic operations are insert and extract_minimum.
+//
+//		The priority queue is maintained using a standard binary heap.
+//		(Implementation note: Indexing is performed from [1..max] rather
+//		than the C standard of [0..max-1].  This simplifies parent/child
+//		computations.)  User information consists of a void pointer,
+//		and the user is responsible for casting this quantity into whatever
+//		useful form is desired.
+//
+//		Because the priority queue is so central to the efficiency of
+//		query processing, all the code is inline.
+//----------------------------------------------------------------------
+
+class ANNpr_queue {
+
+	struct pq_node {					// node in priority queue
+		PQkey			key;			// key value
+		PQinfo			info;			// info field
+	};
+	int			n;						// number of items in queue
+	int			max_size;				// maximum queue size
+	pq_node		*pq;					// the priority queue (array of nodes)
+
+public:
+	ANNpr_queue(int max)				// constructor (given max size)
+		{
+			n = 0;						// initially empty
+			max_size = max;				// maximum number of items
+			pq = new pq_node[max+1];	// queue is array [1..max] of nodes
+		}
+
+	~ANNpr_queue()						// destructor
+		{ delete [] pq; }
+
+	ANNbool empty()						// is queue empty?
+		{ if (n==0) return ANNtrue; else return ANNfalse; }
+
+	ANNbool non_empty()					// is queue nonempty?
+		{ if (n==0) return ANNfalse; else return ANNtrue; }
+
+	void reset()						// make existing queue empty
+		{ n = 0; }
+
+	inline void insert(					// insert item (inlined for speed)
+		PQkey kv,						// key value
+		PQinfo inf)						// item info
+		{
+			if (++n > max_size) annError("Priority queue overflow.", ANNabort);
+			register int r = n;
+			while (r > 1) {				// sift up new item
+				register int p = r/2;
+				ANN_FLOP(1)				// increment floating ops
+				if (pq[p].key <= kv)	// in proper order
+					break;
+				pq[r] = pq[p];			// else swap with parent
+				r = p;
+			}
+			pq[r].key = kv;				// insert new item at final location
+			pq[r].info = inf;
+		}
+
+	inline void extr_min(				// extract minimum (inlined for speed)
+		PQkey &kv,						// key (returned)
+		PQinfo &inf)					// item info (returned)
+		{
+			kv = pq[1].key;				// key of min item
+			inf = pq[1].info;			// information of min item
+			register PQkey kn = pq[n--].key;// last item in queue
+			register int p = 1;			// p points to item out of position
+			register int r = p<<1;		// left child of p
+			while (r <= n) {			// while r is still within the heap
+				ANN_FLOP(2)				// increment floating ops
+										// set r to smaller child of p
+				if (r < n  && pq[r].key > pq[r+1].key) r++;
+				if (kn <= pq[r].key)	// in proper order
+					break;
+				pq[p] = pq[r];			// else swap with child
+				p = r;					// advance pointers
+				r = p<<1;
+			}
+			pq[p] = pq[n+1];			// insert last item in proper place
+		}
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pr_queue_k.h	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,118 @@
+//----------------------------------------------------------------------
+// File:			pr_queue_k.h
+// Programmer:		Sunil Arya and David Mount
+// Description:		Include file for priority queue with k items.
+// Last modified:	01/04/05 (Version 1.0)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//----------------------------------------------------------------------
+
+#ifndef PR_QUEUE_K_H
+#define PR_QUEUE_K_H
+
+#include <ANN/ANNx.h>					// all ANN includes
+#include <ANN/ANNperf.h>				// performance evaluation
+
+//----------------------------------------------------------------------
+//	Basic types
+//----------------------------------------------------------------------
+typedef ANNdist			PQKkey;			// key field is distance
+typedef int				PQKinfo;		// info field is int
+
+//----------------------------------------------------------------------
+//	Constants
+//		The NULL key value is used to initialize the priority queue, and
+//		so it should be larger than any valid distance, so that it will
+//		be replaced as legal distance values are inserted.  The NULL
+//		info value must be a nonvalid array index, we use ANN_NULL_IDX,
+//		which is guaranteed to be negative.
+//----------------------------------------------------------------------
+
+const PQKkey	PQ_NULL_KEY  =  ANN_DIST_INF;	// nonexistent key value
+const PQKinfo	PQ_NULL_INFO =  ANN_NULL_IDX;	// nonexistent info value
+
+//----------------------------------------------------------------------
+//	ANNmin_k
+//		An ANNmin_k structure is one which maintains the smallest
+//		k values (of type PQKkey) and associated information (of type
+//		PQKinfo).  The special info and key values PQ_NULL_INFO and
+//		PQ_NULL_KEY means that thise entry is empty.
+//
+//		It is currently implemented using an array with k items.
+//		Items are stored in increasing sorted order, and insertions
+//		are made through standard insertion sort.  (This is quite
+//		inefficient, but current applications call for small values
+//		of k and relatively few insertions.)
+//		
+//		Note that the list contains k+1 entries, but the last entry
+//		is used as a simple placeholder and is otherwise ignored.
+//----------------------------------------------------------------------
+
+class ANNmin_k {
+	struct mk_node {					// node in min_k structure
+		PQKkey			key;			// key value
+		PQKinfo			info;			// info field (user defined)
+	};
+
+	int			k;						// max number of keys to store
+	int			n;						// number of keys currently active
+	mk_node		*mk;					// the list itself
+
+public:
+	ANNmin_k(int max)					// constructor (given max size)
+		{
+			n = 0;						// initially no items
+			k = max;					// maximum number of items
+			mk = new mk_node[max+1];	// sorted array of keys
+		}
+
+	~ANNmin_k()							// destructor
+		{ delete [] mk; }
+	
+	PQKkey ANNmin_key()					// return minimum key
+		{ return (n > 0 ? mk[0].key : PQ_NULL_KEY); }
+	
+	PQKkey max_key()					// return maximum key
+		{ return (n == k ? mk[k-1].key : PQ_NULL_KEY); }
+	
+	PQKkey ith_smallest_key(int i)		// ith smallest key (i in [0..n-1])
+		{ return (i < n ? mk[i].key : PQ_NULL_KEY); }
+	
+	PQKinfo ith_smallest_info(int i)	// info for ith smallest (i in [0..n-1])
+		{ return (i < n ? mk[i].info : PQ_NULL_INFO); }
+
+	inline void insert(					// insert item (inlined for speed)
+		PQKkey kv,						// key value
+		PQKinfo inf)					// item info
+		{
+			register int i;
+										// slide larger values up
+			for (i = n; i > 0; i--) {
+				if (mk[i-1].key > kv)
+					mk[i] = mk[i-1];
+				else
+					break;
+			}
+			mk[i].key = kv;				// store element here
+			mk[i].info = inf;
+			if (n < k) n++;				// increment number of items
+			ANN_FLOP(k-i+1)				// increment floating ops
+		}
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/Makefile	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,96 @@
+#-----------------------------------------------------------------------------
+# Makefile for the test and evaluation program
+#
+# ANN: Approximate Nearest Neighbors
+# Version: 1.1.1 08/04/06
+#-----------------------------------------------------------------------------
+# Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+# David Mount.  All Rights Reserved.
+# 
+# This software and related documentation is part of the Approximate
+# Nearest Neighbor Library (ANN).  This software is provided under
+# the provisions of the Lesser GNU Public License (LGPL).  See the
+# file ../ReadMe.txt for further information.
+# 
+# The University of Maryland (U.M.) and the authors make no
+# representations about the suitability or fitness of this software for
+# any purpose.  It is provided "as is" without express or implied
+# warranty.
+#-----------------------------------------------------------------------------
+# Revision 0.1  03/04/98
+#	Initial release
+# Revision 1.1.1  08/04/06
+#	Added copyright/license
+#-----------------------------------------------------------------------------
+# Note: For full performance measurements, it is assumed that the library
+# and this program have both been compiled with the -DANN_PERF flag.  See
+# the Makefile in the ANN base directory for this flag.
+#-----------------------------------------------------------------------------
+
+#-----------------------------------------------------------------------------
+# Basic definitions
+#		BASEDIR		where include, src, lib, ... are
+#		INCDIR		include directory
+#		LIBDIR		library directory
+#		BINDIR		bin directory
+#		LDFLAGS		loader flags
+#		ANNLIBS		ANN library
+#		OTHERLIBS	other libraries
+#-----------------------------------------------------------------------------
+
+BASEDIR	= ..
+INCDIR	= $(BASEDIR)/include
+LIBDIR	= $(BASEDIR)/lib
+BINDIR	= $(BASEDIR)/bin
+LDFLAGS	= -L$(LIBDIR)
+ANNLIBS	= -lANN
+OTHERLIBS = -lm
+
+#-----------------------------------------------------------------------------
+# Some more definitions
+#		ANNTEST		name of test program
+#-----------------------------------------------------------------------------
+
+ANNTEST = ann_test
+
+HEADERS = rand.h
+TESTSOURCES = ann_test.cpp rand.cpp
+TESTOBJECTS = $(TESTSOURCES:.cpp=.o)
+
+#-----------------------------------------------------------------------------
+# Make the program
+#-----------------------------------------------------------------------------
+
+default: 
+	@echo "Specify a target configuration"
+
+targets: $(BINDIR)/$(ANNTEST)
+
+$(BINDIR)/$(ANNTEST): $(TESTOBJECTS) $(LIBDIR)/$(ANNLIB)
+	$(C++) $(TESTOBJECTS) -o $(ANNTEST) $(LDFLAGS) $(ANNLIBS) $(OTHERLIBS)
+	mv $(ANNTEST) $(BINDIR)
+
+#-----------------------------------------------------------------------------
+# configuration definitions
+#-----------------------------------------------------------------------------
+
+include ../Make-config
+
+#-----------------------------------------------------------------------------
+# Objects
+#-----------------------------------------------------------------------------
+
+ann_test.o: ann_test.cpp
+	$(C++) -c -I$(INCDIR) $(CFLAGS) ann_test.cpp
+
+rand.o: rand.cpp
+	$(C++) -c -I$(INCDIR) $(CFLAGS) rand.cpp
+
+#-----------------------------------------------------------------------------
+# Cleaning
+#-----------------------------------------------------------------------------
+
+clean:
+	-rm -f *.o *.out core
+
+realclean: clean
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/ann_test.cpp	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,1640 @@
+//----------------------------------------------------------------------
+//	File:			ann_test.cpp
+//	Programmer:		Sunil Arya and David Mount
+//	Description:	test program for ANN (approximate nearest neighbors)
+//  Last modified:	08/04/06 (Version 1.1.1)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//	Revision 0.2  06/26/98
+//		Added CLOCKS_PER_SEC definition if needed
+//	Revision 1.0  04/01/05
+//		Added comments (from "#" to eol)
+//		Added clus_orth_flats and clus_ellipsoids distributions
+//		Fixed order of fair and midpt in split_table
+//		Added dump/load operations
+//		Cleaned up C++ for modern compilers
+//	Revision 1.1  05/03/05
+//		Added fixed radius kNN search
+//	Revision 1.1.1 08/04/06
+//		Added planted distribution
+//----------------------------------------------------------------------
+
+#include <ctime>						// clock
+#include <cmath>						// math routines
+#include <string>						// C string ops
+#include <fstream>						// file I/O
+
+#include <ANN/ANN.h>					// ANN declarations
+#include <ANN/ANNx.h>					// more ANN declarations
+#include <ANN/ANNperf.h>				// performance evaluation
+
+#include "rand.h"						// random point generation
+
+#ifndef CLOCKS_PER_SEC					// define clocks-per-second if needed
+  #define CLOCKS_PER_SEC 1000000
+#endif
+
+using namespace std;					// make std:: available
+
+//----------------------------------------------------------------------
+// ann_test
+//
+// This program is a driver for testing and evaluating the ANN library
+// for computing approximate nearest neighbors.  It allows the user to
+// generate data and query sets of various sizes, dimensions, and
+// distributions, to build kd- and bbd-trees of various types, and then
+// run queries and outputting various performance statistics.
+//
+// Overview:
+// ---------
+// The test program is run as follows:
+// 
+//		ann_test < test_input > test_output
+//
+// where the test_input file contains a list of directives as described
+// below.  Directives consist of a directive name, followed by list of
+// arguments (depending on the directive).  Arguments and directives are
+// separated by white space (blank, tab, and newline).  String arguments
+// are not quoted, and consist of a string of nonwhite chacters.  A
+// character "#" denotes a comment.  The following characters up to
+// the end of line are ignored.  Comments may only be inserted between
+// directives (not within the argument list of a directive).
+//
+// Basic operations:
+// -----------------
+// The test program can perform the following operations.  How these
+// operations are performed depends on the options which are described
+// later.
+//
+//		Data Generation:
+//		----------------
+//		read_data_pts <file>	Create a set of data points whose
+//								coordinates are input from file <file>.
+//		gen_data_pts			Create a set of data points whose
+//								coordinates are generated from the
+//								current point distribution.
+//
+//		Building the tree:
+//		------------------
+//		build_ann				Generate an approximate nearest neighbor
+//								structure for the current data set, using
+//								the selected splitting rules.  Any existing
+//								tree will be destroyed.
+//
+//		Query Generation/Searching:
+//		---------------------------
+//		read_query_pts <file>	Create a set of query points whose
+//								coordinates are input from file <file>.
+//		gen_query_pts			Create a set of query points whose
+//								coordinates are generated from the
+//								current point distribution.
+//		run_queries <string>	Apply nearest neighbor searching to the
+//								query points using the approximate nearest
+//								neighbor structure and the given search
+//								strategy.  Possible strategies are:
+//									standard = standard kd-tree search
+//									priority = priority search
+//
+//		Miscellaneous:
+//		--------------
+//		output_label			Output a label to the output file.
+//		dump <file>				Dump the current structure to given file.
+//								(The dump format is explained further in
+//								the source file kd_tree.cc.)
+//	  	load <file>				Load a tree from a data file which was
+//								created by the dump operation.	Any
+//								existing tree will be destroyed.
+//
+// Options:
+// --------
+// How these operations are performed depends on a set of options.
+// If an option is not specified, a default value is used. An option
+// retains its value until it is set again.  String inputs are not
+// enclosed in quotes, and must contain no embedded white space (sorry,
+// this is C++'s convention).
+//
+// Options affecting search tree structure:
+// ----------------------------------------
+//		split_rule <type>		Type of splitting rule to use in building
+//								the search tree.  Choices are:
+//									kd			= optimized kd-tree
+//									midpt		= midpoint split
+//									fair		= fair split
+//									sl_midpt	= sliding midpt split
+//									sl_fair		= sliding fair split
+//									suggest		= authors' choice for best
+//								The default is "suggest".  See the file
+//								kd_split.cc for more detailed information.
+//
+//		shrink_rule <type>		Type of shrinking rule to use in building
+//								a bd-tree data structure.  If "none" is
+//								given, then no shrinking is performed and
+//								the result is a kd-tree.  Choices are:
+//									none		= perform no shrinking
+//									simple		= simple shrinking
+//									centroid	= centroid shrinking
+//									suggest		= authors' choice for best
+//								The default is "none".  See the file
+//								bd_tree.cc for more information.
+//		bucket_size <int>		Bucket size, that is, the maximum number of
+//								points stored in each leaf node.
+//
+// Options affecting data and query point generation:
+// --------------------------------------------------
+//		dim <int>				Dimension of space.
+//		seed <int>				Seed for random number generation.
+//		data_size <int>			Number of data points.  When reading data
+//								points from a file, this indicates the
+//								maximum number of points for storage
+//								allocation. Default = 100.
+//		query_size <int>		Same as data_size for query points.
+//		std_dev <float>			Standard deviation (used in gauss,
+//								planted, and clustered distributions).
+//								This is the "small" distribution for
+//								clus_ellipsoids.  Default = 1.
+//		std_dev_lo <float>		Low and high standard deviations (used in
+//		std_dev_hi <float>		clus_ellipsoids).  Default = 1.
+//		corr_coef <float>		Correlation coefficient (used in co-gauss
+//								and co_lapace distributions). Default = 0.05.
+//		colors <int>			Number of color classes (clusters) (used
+//								in the clustered distributions).  Default = 5.
+//		new_clust				Once generated, cluster centers are not
+//								normally regenerated.  This is so that both
+//								query points and data points can be generated
+//								using the same set of clusters.  This option
+//								forces new cluster centers to be generated
+//								with the next generation of either data or
+//								query points.
+//		max_clus_dim <int>		Maximum dimension of clusters (used in
+//								clus_orth_flats and clus_ellipsoids).
+//								Default = 1.
+//		distribution <string>	Type of input distribution
+//									uniform		= uniform over cube [-1,1]^d.
+//									gauss		= Gaussian with mean 0
+//									laplace		= Laplacian, mean 0 and var 1
+//									co_gauss	= correlated Gaussian
+//									co_laplace	= correlated Laplacian
+//									clus_gauss	= clustered Gaussian
+//									clus_orth_flats = clusters of orth flats
+//									clus_ellipsoids = clusters of ellipsoids
+//									planted		= planted distribution
+//								See the file rand.cpp for further information.
+//
+// Options affecting nearest neighbor search:
+// ------------------------------------------
+//		epsilon <float>			Error bound for approx. near neigh. search.
+//		near_neigh <int>		Number of nearest neighbors to compute.
+//		max_pts_visit <int>		Maximum number of points to visit before
+//								terminating.  (Used in applications where
+//								real-time performance is important.)
+//								(Default = 0, which means no limit.)
+//		radius_bound <float>	Sets an upper bound on the nearest
+//								neighbor search radius.  If the bound is
+//								positive, then fixed-radius nearest
+//								neighbor searching is performed, and the
+//								count of the number of points in the
+//								range is returned.  If the bound is
+//								zero, then standard search is used.
+//								This can only be used with standard, not
+//								priority, search.  (Default = 0, which
+//								means standard search.)
+//
+// Options affection general program behavior:
+// -------------------------------------------
+//		stats <string>			Level of statistics output
+//									silent		 = no output,
+//									exec_time	+= execution time only
+//									prep_stats	+= preprocessing statistics
+//									query_stats += query performance stats
+//									query_res	+= results of queries
+//									show_pts	+= show the data points
+//									show_struct += print search structure
+//		validate <string>		Validate experiment and compute average
+//								error.  Since validation causes exact
+//								nearest neighbors to be computed by the
+//								brute force method, this can take a long
+//								time.  Valid arguments are:
+//									on			= turn validation on
+//									off			= turn validation off
+//		true_near_neigh <int>	Number of true nearest neighbors to compute.
+//								When validating, we compute the difference
+//								in rank between each reported nearest neighbor
+//								and the true nearest neighbor of the same
+//								rank.  Thus it is necessary to compute a
+//								few more true nearest neighbors.  By default
+//								we compute 10 more than near_neigh.  With
+//								this option the exact number can be set.
+//								(Used only when validating.)
+//
+// Example:
+// --------
+//	output_label test_run_0		# output label for this run
+//	  validate off				# do not perform validation
+//	  dim 16					# points in dimension 16
+//	  stats query_stats			# output performance statistics for queries
+//	  seed 121212				# random number seed
+//	  data_size 1000
+//	  distribution uniform
+//	gen_data_pts				# 1000 uniform data points in dim 16
+//	  query_size 100
+//	  std_dev 0.05
+//	  distribution clus_gauss
+//	gen_query_pts				# 100 points in 10 clusters with std_dev 0.05
+//	  bucket_size 2
+//	  split_rule kd
+//	  shrink_rule none
+//	build_ann					# kd-tree, bucket size 2
+//	  epsilon 0.1
+//	  near_neigh 5
+//	  max_pts_visit 100			# stop search if more than 100 points seen
+//	run_queries standard		# run queries; 5 nearest neighbors, 10% error
+//	  data_size 500
+//	read_data_pts data.in		# read up to 500 points from file data.in
+//	  split_rule sl_midpt
+//	  shrink_rule simple
+//	build_ann					# bd-tree; simple shrink, sliding midpoint split
+//	  epsilon 0
+//	run_queries priority		# run same queries; 0 allowable error
+//
+//------------------------------------------------------------------------
+
+//------------------------------------------------------------------------
+//	Constants
+//------------------------------------------------------------------------
+
+const int		STRING_LEN		= 500;			// max string length
+const double	ERR				= 0.00001;		// epsilon (for float compares)
+
+//------------------------------------------------------------------------
+//	Enumerated values and conversions
+//------------------------------------------------------------------------
+
+typedef enum {DATA, QUERY} PtType;		// point types
+
+//------------------------------------------------------------------------
+//	Statistics output levels
+//------------------------------------------------------------------------
+
+typedef enum {					// stat levels
+		SILENT,							// no output
+		EXEC_TIME,						// just execution time
+		PREP_STATS,						// preprocessing info
+		QUERY_STATS,					// query performance
+		QUERY_RES,						// query results
+		SHOW_PTS,						// show data points
+		SHOW_STRUCT,					// show tree structure
+		N_STAT_LEVELS}					// number of levels
+		StatLev;
+
+const char stat_table[N_STAT_LEVELS][STRING_LEN] = {
+		"silent",						// SILENT
+		"exec_time",					// EXEC_TIME
+		"prep_stats",					// PREP_STATS
+		"query_stats",					// QUERY_STATS
+		"query_res",					// QUERY_RES
+		"show_pts",						// SHOW_PTS
+		"show_struct"};					// SHOW_STRUCT
+
+//------------------------------------------------------------------------
+//	Distributions
+//------------------------------------------------------------------------
+
+typedef enum {					// distributions
+		UNIFORM,						// uniform over cube [-1,1]^d.
+		GAUSS,							// Gaussian with mean 0
+		LAPLACE,						// Laplacian, mean 0 and var 1
+		CO_GAUSS,						// correlated Gaussian
+		CO_LAPLACE,						// correlated Laplacian
+		CLUS_GAUSS,						// clustered Gaussian
+		CLUS_ORTH_FLATS,				// clustered on orthog flats
+		CLUS_ELLIPSOIDS,				// clustered on ellipsoids
+		PLANTED,						// planted distribution
+		N_DISTRIBS}
+		Distrib;
+
+const char distr_table[N_DISTRIBS][STRING_LEN] = {
+		"uniform",						// UNIFORM
+		"gauss",						// GAUSS
+		"laplace",						// LAPLACE
+		"co_gauss",						// CO_GAUSS
+		"co_laplace",					// CO_LAPLACE
+		"clus_gauss",					// CLUS_GAUSS
+		"clus_orth_flats",				// CLUS_ORTH_FLATS
+		"clus_ellipsoids",				// CLUS_ELLIPSOIS
+		"planted"};						// PLANTED
+
+//------------------------------------------------------------------------
+//	Splitting rules for kd-trees (see ANN.h for types)
+//------------------------------------------------------------------------
+
+const int N_SPLIT_RULES = 6;
+const char split_table[N_SPLIT_RULES][STRING_LEN] = {
+		"standard",						// standard optimized kd-tree
+		"midpt",						// midpoint split
+		"fair",							// fair split
+		"sl_midpt",						// sliding midpt split
+		"sl_fair",						// sliding fair split
+		"suggest"};						// authors' choice for best
+
+//------------------------------------------------------------------------
+//	Shrinking rules for bd-trees (see ANN.h for types)
+//------------------------------------------------------------------------
+
+const int N_SHRINK_RULES = 4;
+const char shrink_table[N_SHRINK_RULES][STRING_LEN] = {
+		"none",							// perform no shrinking (kd-tree)
+		"simple",						// simple shrinking
+		"centroid",						// centroid shrinking
+		"suggest"};						// authors' choice for best
+
+//----------------------------------------------------------------------
+//	Short utility functions
+//		Error - general error routine
+//		printPoint - print a point to standard output
+//		lookUp - look up a name in table and return index
+//----------------------------------------------------------------------
+
+void Error(								// error routine
+	char				*msg,			// error message
+	ANNerr				level)			// abort afterwards
+{
+	if (level == ANNabort) {
+		cerr << "ann_test: ERROR------->" << msg << "<-------------ERROR\n";
+		exit(1);
+	}
+	else {
+		cerr << "ann_test: WARNING----->" << msg << "<-------------WARNING\n";
+	}
+}
+
+void printPoint(						// print point
+	ANNpoint			p,				// the point
+	int					dim)			// the dimension
+{
+	cout << "[";
+	for (int i = 0; i < dim; i++) {
+		cout << p[i];
+		if (i < dim-1) cout << ",";
+	}
+	cout << "]";
+}
+
+int lookUp(								// look up name in table
+	const char	*arg,					// name to look up
+	const char	(*table)[STRING_LEN],	// name table
+	int			size)					// table size
+{
+	int i;
+	for (i = 0; i < size; i++) {
+		if (!strcmp(arg, table[i])) return i;
+	}
+	return i;
+}
+
+//------------------------------------------------------------------------
+// Function declarations
+//------------------------------------------------------------------------
+
+void generatePts(						// generate data/query points
+	ANNpointArray		&pa,			// point array (returned)
+	int					n,				// number of points
+	PtType				type,			// point type
+	ANNbool				new_clust,		// new cluster centers desired?
+	ANNpointArray		src = NULL,		// source array (for PLANTED)
+	int					n_src = 0);		// source size (for PLANTED)
+
+void readPts(							// read data/query points from file
+	ANNpointArray		&pa,			// point array (returned)
+	int					&n,				// number of points
+	char				*file_nm,		// file name
+	PtType				type);			// point type (DATA, QUERY)
+
+void doValidation();					// perform validation
+void getTrueNN();						// compute true nearest neighbors
+
+void treeStats(							// print statistics on kd- or bd-tree
+	ostream				&out,			// output stream
+	ANNbool				verbose);		// print stats
+
+//------------------------------------------------------------------------
+//	Default execution parameters
+//------------------------------------------------------------------------
+const int		extra_nn		= 10;			// how many extra true nn's?
+
+const int		def_dim			= 2;			// def dimension
+const int		def_data_size	= 100;			// def data size
+const int		def_query_size	= 100;			// def number of queries
+const int		def_n_color		= 5;			// def number of colors
+const ANNbool	def_new_clust	= ANNfalse;		// def new clusters flag
+const int		def_max_dim		= 1;			// def max flat dimension
+const Distrib	def_distr		= UNIFORM;		// def distribution
+const double	def_std_dev		= 1.00;			// def standard deviation
+const double	def_corr_coef	= 0.05;			// def correlation coef
+const int		def_bucket_size = 1;			// def bucket size
+const double	def_epsilon		= 0.0;			// def error bound
+const int		def_near_neigh	= 1;			// def number of near neighbors
+const int		def_max_visit	= 0;			// def number of points visited
+const int		def_rad_bound	= 0;			// def radius bound
+												// def number of true nn's
+const int		def_true_nn		= def_near_neigh + extra_nn;
+const int		def_seed		= 0;			// def seed for random numbers
+const ANNbool	def_validate	= ANNfalse;		// def validation flag
+												// def statistics output level
+const StatLev	def_stats		= QUERY_STATS;
+const ANNsplitRule								// def splitting rule
+				def_split		= ANN_KD_SUGGEST;
+const ANNshrinkRule								// def shrinking rule
+				def_shrink		= ANN_BD_NONE;
+
+//------------------------------------------------------------------------
+//	Global variables - Execution options
+//------------------------------------------------------------------------
+
+int				dim;					// dimension
+int				data_size;				// data size
+int				query_size;				// number of queries
+int				n_color;				// number of colors
+ANNbool			new_clust;				// generate new clusters?
+int				max_dim;				// maximum flat dimension
+Distrib			distr;					// distribution
+double			corr_coef;				// correlation coef
+double			std_dev;				// standard deviation
+double			std_dev_lo;				// low standard deviation
+double			std_dev_hi;				// high standard deviation
+int				bucket_size;			// bucket size
+double			epsilon;				// error bound
+int				near_neigh;				// number of near neighbors
+int				max_pts_visit;			// max number of points to visit
+double			radius_bound;			// maximum radius search bound
+int				true_nn;				// number of true nn's
+ANNbool			validate;				// validation flag
+StatLev			stats;					// statistics output level
+ANNsplitRule	split;					// splitting rule
+ANNshrinkRule	shrink;					// shrinking rule
+
+//------------------------------------------------------------------------
+//	More globals - pointers to dynamically allocated arrays and structures
+//
+//		It is assumed that all these values are set to NULL when nothing
+//		is allocated.
+//
+//		data_pts, query_pts				The data and query points
+//		the_tree						Points to the kd- or bd-tree for
+//										nearest neighbor searching.
+//		apx_nn_idx, apx_dists			Record approximate near neighbor
+//										indices and distances
+//		apx_pts_in_range				Counts of the number of points in
+//										the in approx range, for fixed-
+//										radius NN searching.
+//		true_nn_idx, true_dists			Record true near neighbor
+//										indices and distances
+//		min_pts_in_range, max_...		Min and max counts of the number
+//										of points in the in approximate
+//										range.
+//		valid_dirty						To avoid repeated validation,
+//										we only validate query results
+//										once.  This validation becomes
+//										invalid, if a new tree, new data
+//										points or new query points have
+//										been generated.
+//		tree_data_size					The number of points in the
+//										current tree.  (This will be the
+//										same a data_size unless points have
+//										been added since the tree was
+//										built.)
+//
+//		The approximate and true nearest neighbor results are stored
+//		in: apx_nn_idx, apx_dists, and true_nn_idx, true_dists.
+//		They are really flattened 2-dimensional arrays. Each of these
+//		arrays consists of query_size blocks, each of which contains
+//		near_neigh (or true_nn) entries, one for each of the nearest
+//		neighbors for a given query point.
+//------------------------------------------------------------------------
+
+ANNpointArray	data_pts;				// data points
+ANNpointArray	query_pts;				// query points
+ANNbd_tree*		the_tree;				// kd- or bd-tree search structure
+ANNidxArray		apx_nn_idx;				// storage for near neighbor indices
+ANNdistArray	apx_dists;				// storage for near neighbor distances
+int*			apx_pts_in_range;		// storage for no. of points in range
+ANNidxArray		true_nn_idx;			// true near neighbor indices
+ANNdistArray	true_dists;				// true near neighbor distances
+int*			min_pts_in_range;		// min points in approx range
+int*			max_pts_in_range;		// max points in approx range
+
+ANNbool			valid_dirty;			// validation is no longer valid
+
+//------------------------------------------------------------------------
+//	Initialize global parameters
+//------------------------------------------------------------------------
+
+void initGlobals()
+{
+	dim					= def_dim;				// init execution parameters
+	data_size			= def_data_size;
+	query_size			= def_query_size;
+	distr				= def_distr;
+	corr_coef			= def_corr_coef;
+	std_dev				= def_std_dev;
+	std_dev_lo			= def_std_dev;
+	std_dev_hi			= def_std_dev;
+	new_clust			= def_new_clust;
+	max_dim				= def_max_dim;
+	n_color				= def_n_color;
+	bucket_size			= def_bucket_size;
+	epsilon				= def_epsilon;
+	near_neigh			= def_near_neigh;
+	max_pts_visit		= def_max_visit;
+	radius_bound		= def_rad_bound;
+	true_nn				= def_true_nn;
+	validate			= def_validate;
+	stats				= def_stats;
+	split				= def_split;
+	shrink				= def_shrink;
+	annIdum				= -def_seed;			// init. global seed for ran0()
+
+	data_pts			= NULL;					// initialize storage pointers
+	query_pts			= NULL;
+	the_tree			= NULL;
+	apx_nn_idx			= NULL;
+	apx_dists			= NULL;
+	apx_pts_in_range	= NULL;
+	true_nn_idx 		= NULL;
+	true_dists			= NULL;
+	min_pts_in_range	= NULL;
+	max_pts_in_range	= NULL;
+
+	valid_dirty			= ANNtrue;				// (validation must be done)
+}
+
+//------------------------------------------------------------------------
+// getDirective - skip comments and read next directive
+//	Returns ANNtrue if directive read, and ANNfalse if eof seen.
+//------------------------------------------------------------------------
+
+ANNbool skipComment(				// skip any comments
+    istream		&in)				// input stream
+{
+    char ch = 0;
+						// skip whitespace
+    do { in.get(ch); } while (isspace(ch) && !in.eof());
+    while (ch == '#' && !in.eof()) {		// comment?
+						// skip to end of line
+	do { in.get(ch); } while(ch != '\n' && !in.eof());
+						// skip whitespace
+	do { in.get(ch); } while(isspace(ch) && !in.eof());
+    }
+    if (in.eof()) return ANNfalse;			// end of file
+    in.putback(ch);				// put character back
+    return ANNtrue;
+}
+
+ANNbool getDirective(
+    istream		&in,			// input stream
+    char		*directive)		// directive storage
+{
+    if (!skipComment(in))			// skip comments
+    	return ANNfalse;			// found eof along the way?
+    in >> directive;				// read directive
+    return ANNtrue;
+}
+
+
+//------------------------------------------------------------------------
+// main program - driver
+//		The main program reads input options, invokes the necessary
+//		routines to process them.
+//------------------------------------------------------------------------
+
+int main(int argc, char** argv)
+{
+	long		clock0;						// clock time
+	char		directive[STRING_LEN];		// input directive
+	char		arg[STRING_LEN];			// all-purpose argument
+
+	cout << "------------------------------------------------------------\n"
+		 << "ann_test: Version " << ANNversion << " " << ANNversionCmt << "\n"
+		 << "    Copyright: " << ANNcopyright << ".\n"
+		 << "    Latest Revision: " << ANNlatestRev << ".\n"
+		 << "------------------------------------------------------------\n\n";
+
+	initGlobals();								// initialize global values
+
+	//--------------------------------------------------------------------
+	//	Main input loop
+	//--------------------------------------------------------------------
+												// read input directive
+	while (getDirective(cin, directive)) {
+		//----------------------------------------------------------------
+		//	Read options
+		//----------------------------------------------------------------
+		if (!strcmp(directive,"dim")) {
+			cin >> dim;
+		}
+		else if (!strcmp(directive,"colors")) {
+			cin >> n_color;
+		}
+		else if (!strcmp(directive,"new_clust")) {
+			new_clust = ANNtrue;
+		}
+		else if (!strcmp(directive,"max_clus_dim")) {
+			cin >> max_dim;
+		}
+		else if (!strcmp(directive,"std_dev")) {
+			cin >> std_dev;
+		}
+		else if (!strcmp(directive,"std_dev_lo")) {
+			cin >> std_dev_lo;
+		}
+		else if (!strcmp(directive,"std_dev_hi")) {
+			cin >> std_dev_hi;
+		}
+		else if (!strcmp(directive,"corr_coef")) {
+			cin >> corr_coef;
+		}
+		else if (!strcmp(directive, "data_size")) {
+			cin >> data_size;
+		}
+		else if (!strcmp(directive,"query_size")) {
+			cin >> query_size;
+		}
+		else if (!strcmp(directive,"bucket_size")) {
+			cin >> bucket_size;
+		}
+		else if (!strcmp(directive,"epsilon")) {
+			cin >> epsilon;
+		}
+		else if (!strcmp(directive,"max_pts_visit")) {
+			cin >> max_pts_visit;
+			valid_dirty = ANNtrue;				// validation must be redone
+		}
+		else if (!strcmp(directive,"radius_bound")) {
+			cin >> radius_bound;
+			valid_dirty = ANNtrue;				// validation must be redone
+		}
+		else if (!strcmp(directive,"near_neigh")) {
+			cin >> near_neigh;
+			true_nn = near_neigh + extra_nn;	// also reset true near neighs
+			valid_dirty = ANNtrue;				// validation must be redone
+		}
+		else if (!strcmp(directive,"true_near_neigh")) {
+			cin >> true_nn;
+			valid_dirty = ANNtrue;				// validation must be redone
+		}
+		//----------------------------------------------------------------
+		//	seed option
+		//		The seed is reset by setting the global annIdum to the
+		//		negation of the seed value.  See rand.cpp.
+		//----------------------------------------------------------------
+		else if (!strcmp(directive,"seed")) {
+			cin >> annIdum;
+			annIdum = -annIdum;
+		}
+		//----------------------------------------------------------------
+		//	validate option
+		//----------------------------------------------------------------
+		else if (!strcmp(directive,"validate")) {
+			cin >> arg;							// input argument
+			if (!strcmp(arg, "on")) {
+				validate = ANNtrue;
+				cout << "validate = on   "
+					 << "(Warning: this may slow execution time.)\n";
+			}
+			else if (!strcmp(arg, "off")) {
+				validate = ANNfalse;
+			}
+			else {
+				cerr << "Argument: " << arg << "\n";
+				Error("validate argument must be \"on\" or \"off\"", ANNabort);
+			}
+		}
+		//----------------------------------------------------------------
+		//	distribution option
+		//----------------------------------------------------------------
+		else if (!strcmp(directive,"distribution")) {
+			cin >> arg;							// input name and translate
+			distr = (Distrib) lookUp(arg, distr_table, N_DISTRIBS);
+			if (distr >= N_DISTRIBS) {			// not something we recognize
+				cerr << "Distribution: " << arg << "\n";
+				Error("Unknown distribution", ANNabort);
+			}
+		}
+		//----------------------------------------------------------------
+		//	stats option
+		//----------------------------------------------------------------
+		else if (!strcmp(directive,"stats")) {
+			cin >> arg;							// input name and translate
+			stats = (StatLev) lookUp(arg, stat_table, N_STAT_LEVELS);
+			if (stats >= N_STAT_LEVELS) {		// not something we recognize
+				cerr << "Stats level: " << arg << "\n";
+				Error("Unknown statistics level", ANNabort);
+			}
+			if (stats > SILENT)
+				cout << "stats = " << arg << "\n";
+		}
+		//----------------------------------------------------------------
+		//	split_rule option
+		//----------------------------------------------------------------
+		else if (!strcmp(directive,"split_rule")) {
+			cin >> arg;							// input split_rule name
+			split = (ANNsplitRule) lookUp(arg, split_table, N_SPLIT_RULES);
+			if (split >= N_SPLIT_RULES) {		// not something we recognize
+				cerr << "Splitting rule: " << arg << "\n";
+				Error("Unknown splitting rule", ANNabort);
+			}
+		}
+		//----------------------------------------------------------------
+		//	shrink_rule option
+		//----------------------------------------------------------------
+		else if (!strcmp(directive,"shrink_rule")) {
+			cin >> arg;							// input split_rule name
+			shrink = (ANNshrinkRule) lookUp(arg, shrink_table, N_SHRINK_RULES);
+			if (shrink >= N_SHRINK_RULES) {		// not something we recognize
+				cerr << "Shrinking rule: " << arg << "\n";
+				Error("Unknown shrinking rule", ANNabort);
+			}
+		}
+		//----------------------------------------------------------------
+		//	label operation
+		//----------------------------------------------------------------
+		else if (!strcmp(directive,"output_label")) {
+			cin >> arg;
+			if (stats > SILENT)
+				cout << "<" << arg << ">\n";
+		}
+		//----------------------------------------------------------------
+		//	gen_data_pts operation
+		//----------------------------------------------------------------
+		else if (!strcmp(directive,"gen_data_pts")) {
+			if (distr == PLANTED) {				// planted distribution
+				Error("Cannot use planted distribution for data points", ANNabort);
+			}
+			generatePts(						// generate data points
+				data_pts,						// data points
+				data_size,						// data size
+				DATA,							// data points
+				new_clust);						// new clusters flag
+			valid_dirty = ANNtrue;				// validation must be redone
+			new_clust = ANNfalse;				// reset flag
+		}
+		//----------------------------------------------------------------
+		//	gen_query_pts operation
+		//		If the distribution is PLANTED, then the query points
+		//		are planted near the data points (which must already be
+		//		generated).
+		//----------------------------------------------------------------
+		else if (!strcmp(directive,"gen_query_pts")) {
+			if (distr == PLANTED) {				// planted distribution
+				if (data_pts == NULL) {
+					Error("Must generate data points before query points for planted distribution", ANNabort);
+				}
+				generatePts(					// generate query points
+					query_pts,					// point array
+					query_size,					// number of query points
+					QUERY,						// query points
+					new_clust,					// new clusters flag
+					data_pts,					// plant around data pts
+					data_size);
+			}
+			else {								// all other distributions
+				generatePts(					// generate query points
+					query_pts,					// point array
+					query_size,					// number of query points
+					QUERY,						// query points
+					new_clust);					// new clusters flag
+			}
+			valid_dirty = ANNtrue;				// validation must be redone
+			new_clust = ANNfalse;				// reset flag
+		}
+		//----------------------------------------------------------------
+		//	read_data_pts operation
+		//----------------------------------------------------------------
+		else if (!strcmp(directive,"read_data_pts")) {
+			cin >> arg;							// input file name
+			readPts(
+				data_pts,						// point array
+				data_size,						// number of points
+				arg,							// file name
+				DATA);							// data points
+			valid_dirty = ANNtrue;				// validation must be redone
+		}
+		//----------------------------------------------------------------
+		//	read_query_pts operation
+		//----------------------------------------------------------------
+		else if (!strcmp(directive,"read_query_pts")) {
+			cin >> arg;							// input file name
+			readPts(
+				query_pts,						// point array
+				query_size,						// number of points
+				arg,							// file name
+				QUERY);							// query points
+			valid_dirty = ANNtrue;				// validation must be redone
+		}
+		//----------------------------------------------------------------
+		//	build_ann operation
+		//		We always invoke the constructor for bd-trees.  Note
+		//		that when the shrinking rule is NONE (which is true by
+		//		default), then this constructs a kd-tree.
+		//----------------------------------------------------------------
+		else if (!strcmp(directive,"build_ann")) {
+			//------------------------------------------------------------
+			//	Build the tree
+			//------------------------------------------------------------
+			if (the_tree != NULL) {				// tree exists already
+				delete the_tree;				// get rid of it
+			}
+			clock0 = clock();					// start time
+
+			the_tree = new ANNbd_tree(			// build it
+					data_pts,					// the data points
+					data_size,					// number of points
+					dim,						// dimension of space
+					bucket_size,				// maximum bucket size
+					split,						// splitting rule
+					shrink);					// shrinking rule
+
+			//------------------------------------------------------------
+			//	Print summary
+			//------------------------------------------------------------
+			long prep_time = clock() - clock0;	// end of prep time
+
+			if (stats > SILENT) {
+				cout << "[Build ann-structure:\n";
+				cout << "  split_rule    = " << split_table[split] << "\n";
+				cout << "  shrink_rule   = " << shrink_table[shrink] << "\n";
+				cout << "  data_size     = " << data_size << "\n";
+				cout << "  dim           = " << dim << "\n";
+				cout << "  bucket_size   = " << bucket_size << "\n";
+
+				if (stats >= EXEC_TIME) {		// output processing time
+					cout << "  process_time  = "
+						 << double(prep_time)/CLOCKS_PER_SEC << " sec\n";
+				}
+
+				if (stats >= PREP_STATS)		// output or check tree stats
+					treeStats(cout, ANNtrue);	// print tree stats
+				else
+					treeStats(cout, ANNfalse);	// check stats
+
+				if (stats >= SHOW_STRUCT) {		// print the whole tree
+					cout << "  (Structure Contents:\n";
+					the_tree->Print(ANNfalse, cout);
+					cout << "  )\n";
+				}
+				cout << "]\n";
+			}
+		}
+		//----------------------------------------------------------------
+		//	dump operation
+		//----------------------------------------------------------------
+		else if (!strcmp(directive,"dump")) {
+			cin >> arg;							// input file name
+			if (the_tree == NULL) {				// no tree
+				Error("Cannot dump.  No tree has been built yet", ANNwarn);
+			}
+			else {								// there is a tree
+												// try to open file
+				ofstream out_dump_file(arg);
+				if (!out_dump_file) {
+					cerr << "File name: " << arg << "\n";
+					Error("Cannot open dump file", ANNabort);
+				}
+												// dump the tree and points
+				the_tree->Dump(ANNtrue, out_dump_file);
+				if (stats > SILENT) {
+					cout << "(Tree has been dumped to file " << arg << ")\n";
+				}
+			}
+		}
+		//----------------------------------------------------------------
+		//	load operation
+		//		Since this not only loads a tree, but loads a new set
+		//		of data points.
+		//----------------------------------------------------------------
+		else if (!strcmp(directive,"load")) {
+			cin >> arg;							// input file name
+			if (the_tree != NULL) {				// tree exists already
+				delete the_tree;				// get rid of it
+			}
+			if (data_pts != NULL) {				// data points exist already
+				delete data_pts;				// get rid of them
+			}
+
+			ifstream in_dump_file(arg);			// try to open file
+			if (!in_dump_file) {
+				cerr << "File name: " << arg << "\n";
+				Error("Cannot open file for loading", ANNabort);
+			}
+												// build tree by loading
+			the_tree = new ANNbd_tree(in_dump_file);
+
+			dim = the_tree->theDim();			// new dimension
+			data_size = the_tree->nPoints();	// number of points
+			data_pts = the_tree->thePoints();	// new points
+
+			valid_dirty = ANNtrue;				// validation must be redone
+
+			if (stats > SILENT) {
+					cout << "(Tree has been loaded from file " << arg << ")\n";
+			}
+			if (stats >= SHOW_STRUCT) {			// print the tree
+				cout << "  (Structure Contents:\n";
+				the_tree->Print(ANNfalse, cout);
+				cout << "  )\n";
+			}
+		}
+		//----------------------------------------------------------------
+		//	run_queries operation
+		//		This section does all the query processing.  It consists
+		//		of the following subsections:
+		//
+		//		**	input the argument (standard or priority) and output
+		//			the header describing the essential information.
+		//		**	allocate space for the results to be stored.
+		//		**	run the queries by invoking the appropriate search
+		//			procedure on the query points.  Print nearest neighbor
+		//			if requested.
+		//		**	print final summaries
+		//
+		//	The approach for processing multiple nearest neighbors is
+		//	pretty crude.  We allocate an array whose size is the
+		//	product of the total number of queries times the number of
+		//	nearest neighbors (k), and then use each k consecutive
+		//	entries to store the results of each query.
+		//----------------------------------------------------------------
+		else if (!strcmp(directive,"run_queries")) {
+
+			//------------------------------------------------------------
+			//	Input arguments and print summary
+			//------------------------------------------------------------
+			enum {STANDARD, PRIORITY} method;
+
+			cin >> arg;							// input argument
+			if (!strcmp(arg, "standard")) {
+				method = STANDARD;
+			}
+			else if (!strcmp(arg, "priority")) {
+				method = PRIORITY;
+			}
+			else {
+				cerr << "Search type: " << arg << "\n";
+				Error("Search type must be \"standard\" or \"priority\"",
+						ANNabort);
+			}
+			if (data_pts == NULL || query_pts == NULL) {
+				Error("Either data set and query set not constructed", ANNabort);
+			}
+			if (the_tree == NULL) {
+				Error("No search tree built.", ANNabort);
+			}
+
+			//------------------------------------------------------------
+			//	Set up everything
+			//------------------------------------------------------------
+
+			#ifdef ANN_PERF						// performance only
+				annResetStats(data_size);			// reset statistics
+			#endif
+
+			clock0 = clock();					// start time
+												// deallocate existing storage
+			if (apx_nn_idx	 	 != NULL) delete [] apx_nn_idx;
+			if (apx_dists		 != NULL) delete [] apx_dists;
+			if (apx_pts_in_range != NULL) delete [] apx_pts_in_range;
+												// allocate apx answer storage
+			apx_nn_idx = new ANNidx[near_neigh*query_size];
+			apx_dists  = new ANNdist[near_neigh*query_size];
+			apx_pts_in_range = new int[query_size];
+
+			annMaxPtsVisit(max_pts_visit);		// set max points to visit
+
+			//------------------------------------------------------------
+			//	Run the queries
+			//------------------------------------------------------------
+												// pointers for current query
+			ANNidxArray	  curr_nn_idx = apx_nn_idx;
+			ANNdistArray  curr_dists  = apx_dists;
+
+			for (int i = 0; i < query_size; i++) {
+				#ifdef ANN_PERF
+					annResetCounts();			// reset counters
+				#endif
+				apx_pts_in_range[i] = 0;
+
+				if (radius_bound == 0) {		// no radius bound
+					if (method == STANDARD) {
+						the_tree->annkSearch(
+							query_pts[i],		// query point
+							near_neigh,			// number of near neighbors
+							curr_nn_idx,		// nearest neighbors (returned)
+							curr_dists,			// distance (returned)
+							epsilon);			// error bound
+					}
+					else if (method == PRIORITY) {
+						the_tree->annkPriSearch(
+							query_pts[i],		// query point
+							near_neigh,			// number of near neighbors
+							curr_nn_idx,		// nearest neighbors (returned)
+							curr_dists,			// distance (returned)
+							epsilon);			// error bound
+					}
+					else {
+						Error("Internal error - invalid method", ANNabort);
+					}
+				}
+				else {							// use radius bound
+					if (method != STANDARD) {
+						Error("A nonzero radius bound assumes standard search",
+							ANNwarn);
+					}
+					apx_pts_in_range[i] = the_tree->annkFRSearch(
+						query_pts[i],			// query point
+						ANN_POW(radius_bound),	// squared radius search bound
+						near_neigh,				// number of near neighbors
+						curr_nn_idx,			// nearest neighbors (returned)
+						curr_dists,				// distance (returned)
+						epsilon);				// error bound
+				}
+				curr_nn_idx += near_neigh;		// increment current pointers
+				curr_dists	+= near_neigh;
+
+				#ifdef ANN_PERF
+					annUpdateStats();			// update stats
+				#endif
+			}
+
+			long query_time = clock() - clock0; // end of query time
+
+			if (validate) {						// validation requested
+				if (valid_dirty) getTrueNN();	// get true near neighbors
+				doValidation();					// validate
+			}
+
+			//------------------------------------------------------------
+			//	Print summaries
+			//------------------------------------------------------------
+		
+			if (stats > SILENT) {
+				cout << "[Run Queries:\n";
+				cout << "  query_size    = " << query_size << "\n";
+				cout << "  dim           = " << dim << "\n";
+				cout << "  search_method = " << arg << "\n";
+				cout << "  epsilon       = " << epsilon << "\n";
+				cout << "  near_neigh    = " << near_neigh << "\n";
+				if (max_pts_visit != 0)
+					cout << "  max_pts_visit = " << max_pts_visit << "\n";
+				if (radius_bound != 0)
+					cout << "  radius_bound  = " << radius_bound << "\n";
+				if (validate)
+					cout << "  true_nn       = " << true_nn << "\n";
+
+				if (stats >= EXEC_TIME) {		// print exec time summary
+					cout << "  query_time    = " <<
+						double(query_time)/(query_size*CLOCKS_PER_SEC)
+						 << " sec/query";
+					#ifdef ANN_PERF
+						cout << " (biased by perf measurements)";
+					#endif
+					cout << "\n";
+				}
+
+				if (stats >= QUERY_STATS) {		// output performance stats
+					#ifdef ANN_PERF
+						cout.flush();
+						annPrintStats(validate);
+					#else
+						cout << "  (Performance statistics unavailable.)\n";
+					#endif
+				}
+
+				if (stats >= QUERY_RES) {		// output results
+					cout << "  (Query Results:\n";
+					cout << "    Pt\tANN\tDist\n";
+					curr_nn_idx = apx_nn_idx;	// subarray pointers
+					curr_dists  = apx_dists;
+												// output nearest neighbors
+					for (int i = 0; i < query_size; i++) {
+						cout << " " << setw(4) << i;
+						for (int j = 0; j < near_neigh; j++) {
+												// exit if no more neighbors
+							if (curr_nn_idx[j] == ANN_NULL_IDX) {
+								cout << "\t[no other pts in radius bound]\n";
+								break;
+							}
+							else {				// output point info
+								cout << "\t" << curr_nn_idx[j]
+								 	<< "\t" << ANN_ROOT(curr_dists[j])
+								 	<< "\n";
+							}
+						}
+												// output range count
+						if (radius_bound != 0) {
+							cout << "    pts_in_radius_bound = "
+								<< apx_pts_in_range[i] << "\n";
+						}
+												// increment subarray pointers
+						curr_nn_idx += near_neigh;
+						curr_dists  += near_neigh;
+					}
+					cout << "  )\n";
+				}
+				cout << "]\n";
+			}
+		}
+		//----------------------------------------------------------------
+		//	Unknown directive
+		//----------------------------------------------------------------
+		else {
+			cerr << "Directive: " << directive << "\n";
+			Error("Unknown directive", ANNabort);
+		}
+	}
+	//--------------------------------------------------------------------
+	//	End of input loop (deallocate stuff that was allocated)
+	//--------------------------------------------------------------------
+	if (the_tree  		!= NULL) delete the_tree;
+	if (data_pts  		!= NULL) annDeallocPts(data_pts);
+	if (query_pts 		!= NULL) annDeallocPts(query_pts);
+	if (apx_nn_idx		!= NULL) delete [] apx_nn_idx;
+	if (apx_dists		!= NULL) delete [] apx_dists;
+	if (apx_pts_in_range != NULL) delete [] apx_pts_in_range;
+
+	annClose();			// close ANN
+
+	return EXIT_SUCCESS;
+}
+
+//------------------------------------------------------------------------
+// generatePts - call appropriate routine to generate points of a
+//		given distribution.
+//------------------------------------------------------------------------
+
+void generatePts(
+	ANNpointArray		&pa,			// point array (returned)
+	int					n,				// number of points to generate
+	PtType				type,			// point type
+	ANNbool				new_clust,		// new cluster centers desired?
+	ANNpointArray		src,			// source array (if distr=PLANTED)
+	int					n_src)			// source size (if distr=PLANTED)
+{
+	if (pa != NULL) annDeallocPts(pa);			// get rid of any old points
+	pa = annAllocPts(n, dim);					// allocate point storage
+
+	switch (distr) {
+		case UNIFORM:							// uniform over cube [-1,1]^d.
+			annUniformPts(pa, n, dim);
+			break;
+		case GAUSS:								// Gaussian with mean 0
+			annGaussPts(pa, n, dim, std_dev);
+			break;
+		case LAPLACE:							// Laplacian, mean 0 and var 1
+			annLaplacePts(pa, n, dim);
+			break;
+		case CO_GAUSS:							// correlated Gaussian
+			annCoGaussPts(pa, n, dim, corr_coef);
+			break;
+		case CO_LAPLACE:						// correlated Laplacian
+			annCoLaplacePts(pa, n, dim, corr_coef);
+			break;
+		case CLUS_GAUSS:						// clustered Gaussian
+			annClusGaussPts(pa, n, dim, n_color, new_clust, std_dev);
+			break;
+		case CLUS_ORTH_FLATS:					// clustered on orthog flats
+			annClusOrthFlats(pa, n, dim, n_color, new_clust, std_dev, max_dim);
+			break;
+		case CLUS_ELLIPSOIDS:					// clustered ellipsoids
+			annClusEllipsoids(pa, n, dim, n_color, new_clust, std_dev,
+						std_dev_lo, std_dev_hi, max_dim);
+			break;
+		case PLANTED:							// planted distribution
+			annPlanted(pa, n, dim, src, n_src, std_dev);
+			break;
+		default:
+			Error("INTERNAL ERROR: Unknown distribution", ANNabort);
+			break;
+	}
+
+	if (stats > SILENT) {
+		if(type == DATA) cout << "[Generating Data Points:\n";
+		else			 cout << "[Generating Query Points:\n";
+		cout << "  number        = " << n << "\n";
+		cout << "  dim           = " << dim << "\n";
+		cout << "  distribution  = " << distr_table[distr] << "\n";
+		if (annIdum < 0)
+			cout << "  seed          = " << annIdum << "\n";
+		if (distr == GAUSS || distr == CLUS_GAUSS
+		 || distr == CLUS_ORTH_FLATS)
+			cout << "  std_dev       = " << std_dev << "\n";
+		if (distr == CLUS_ELLIPSOIDS) {
+			cout << "  std_dev       = " << std_dev << " (small) \n";
+			cout << "  std_dev_lo    = " << std_dev_lo << "\n";
+			cout << "  std_dev_hi    = " << std_dev_hi << "\n";
+		}
+		if (distr == CO_GAUSS || distr == CO_LAPLACE)
+			cout << "  corr_coef     = " << corr_coef << "\n";
+		if (distr == CLUS_GAUSS || distr == CLUS_ORTH_FLATS
+		 || distr == CLUS_ELLIPSOIDS) {
+			cout << "  colors        = " << n_color << "\n";
+			if (new_clust)
+				cout << "  (cluster centers regenerated)\n";
+		}
+		if (distr == CLUS_ORTH_FLATS || distr == CLUS_ELLIPSOIDS) {
+			cout << "  max_dim       = " << max_dim << "\n";
+		}
+	}
+												// want to see points?
+	if ((type == DATA  && stats >= SHOW_PTS) ||
+		(type == QUERY && stats >= QUERY_RES)) {
+		if(type == DATA) cout << "(Data Points:\n";
+		else			 cout << "(Query Points:\n";
+		for (int i = 0; i < n; i++) {
+			cout << " " << setw(4) << i << "\t";
+			printPoint(pa[i], dim);
+			cout << "\n";
+		}
+		cout << "  )\n";
+	}
+	cout << "]\n";
+}
+
+//------------------------------------------------------------------------
+// readPts - read a collection of data or query points.
+//------------------------------------------------------------------------
+
+void readPts(
+	ANNpointArray		&pa,			// point array (returned)
+	int					&n,				// number of points
+	char				*file_nm,		// file name
+	PtType				type)			// point type (DATA, QUERY)
+{
+	int i;
+	//--------------------------------------------------------------------
+	//	Open input file and read points
+	//--------------------------------------------------------------------
+	ifstream in_file(file_nm);					// try to open data file
+	if (!in_file) {
+		cerr << "File name: " << file_nm << "\n";
+		Error("Cannot open input data/query file", ANNabort);
+	}
+												// allocate storage for points
+	if (pa != NULL) annDeallocPts(pa);			// get rid of old points
+	pa = annAllocPts(n, dim);
+
+	for (i = 0; i < n; i++) {					// read the data
+		if (!(in_file >> pa[i][0])) break;
+		for (int d = 1; d < dim; d++) {
+			in_file >> pa[i][d];
+		}
+	}
+
+	char ignore_me;								// character for EOF test
+	in_file >> ignore_me;						// try to get one more character
+	if (!in_file.eof()) {						// exhausted space before eof
+		if (type == DATA) 
+			Error("`data_size' too small. Input file truncated.", ANNwarn);
+		else
+			Error("`query_size' too small. Input file truncated.", ANNwarn);
+	}
+	n = i;										// number of points read
+
+	//--------------------------------------------------------------------
+	//	Print summary
+	//--------------------------------------------------------------------
+	if (stats > SILENT) {
+		if (type == DATA) {
+			cout << "[Read Data Points:\n";
+			cout << "  data_size  = " << n << "\n";
+		}
+		else {
+			cout << "[Read Query Points:\n";
+			cout << "  query_size = " << n << "\n";
+		}
+		cout << "  file_name  = " << file_nm << "\n";
+		cout << "  dim        = " << dim << "\n";
+												// print if results requested
+		if ((type == DATA && stats >= SHOW_PTS) ||
+			(type == QUERY && stats >= QUERY_RES)) {
+			cout << "  (Points:\n";
+			for (i = 0; i < n; i++) {
+				cout << "    " << i << "\t";
+				printPoint(pa[i], dim);
+				cout << "\n";
+			}
+			cout << "  )\n";
+		}
+		cout << "]\n";
+	}
+}
+
+//------------------------------------------------------------------------
+//	getTrueNN
+//		Computes the true nearest neighbors.  For purposes of validation,
+//		this intentionally done in a rather dumb (but safe way), by
+//		invoking the brute-force search.
+//
+//		The number of true nearest neighbors is somewhat larger than
+//		the number of nearest neighbors.  This is so that the validation
+//		can determine the expected difference in element ranks.
+//
+//		This procedure is invoked just prior to running queries.  Since
+//		the operation takes a long time, it is performed only if needed.
+//		In particular, once generated, it will be regenerated only if
+//		new query or data points are generated, or if the requested number
+//		of true near neighbors or approximate near neighbors has changed.
+//
+//		To validate fixed-radius searching, we compute two counts, one
+//		with the original query radius (trueSqRadius) and the other with
+//		a radius shrunken by the error factor (minSqradius).  We then
+//		check that the count of points inside the approximate range is
+//		between these two bounds.  Because fixed-radius search is
+//		allowed to ignore points within the shrunken radius, we only
+//		compute exact neighbors within this smaller distance (for we
+//		cannot guarantee that we will even visit the other points).
+//------------------------------------------------------------------------
+
+void getTrueNN()						// compute true nearest neighbors
+{
+	if (stats > SILENT) {
+		cout << "(Computing true nearest neighbors for validation.  This may take time.)\n";
+	}
+												// deallocate existing storage
+	if (true_nn_idx			!= NULL) delete [] true_nn_idx;
+	if (true_dists			!= NULL) delete [] true_dists;
+	if (min_pts_in_range	!= NULL) delete [] min_pts_in_range;
+	if (max_pts_in_range	!= NULL) delete [] max_pts_in_range;
+
+	if (true_nn > data_size) {					// can't get more nn than points
+		true_nn = data_size;
+	}
+
+												// allocate true answer storage
+	true_nn_idx = new ANNidx[true_nn*query_size];
+	true_dists  = new ANNdist[true_nn*query_size];
+	min_pts_in_range = new int[query_size];
+	max_pts_in_range = new int[query_size];
+
+	ANNidxArray  curr_nn_idx = true_nn_idx;		// current locations in arrays
+	ANNdistArray curr_dists = true_dists;
+
+												// allocate search structure
+	ANNbruteForce *the_brute = new ANNbruteForce(data_pts, data_size, dim);
+												// compute nearest neighbors
+	for (int i = 0; i < query_size; i++) {
+		if (radius_bound == 0) {				// standard kNN search
+			the_brute->annkSearch(				// compute true near neighbors
+						query_pts[i],			// query point
+						true_nn,				// number of nearest neighbors
+						curr_nn_idx,			// where to put indices
+						curr_dists);			// where to put distances
+		}
+		else {									// fixed radius kNN search
+												// search radii limits
+			ANNdist trueSqRadius = ANN_POW(radius_bound);
+			ANNdist minSqRadius = ANN_POW(radius_bound / (1+epsilon));
+			min_pts_in_range[i] = the_brute->annkFRSearch(
+						query_pts[i],			// query point
+						minSqRadius,			// shrunken search radius
+						true_nn,				// number of near neighbors
+						curr_nn_idx,			// nearest neighbors (returned)
+						curr_dists);			// distance (returned)
+			max_pts_in_range[i] = the_brute->annkFRSearch(
+						query_pts[i],			// query point
+						trueSqRadius,			// true search radius
+						0, NULL, NULL);			// (ignore kNN info)
+		}
+		curr_nn_idx += true_nn;					// increment nn index pointer
+		curr_dists  += true_nn;					// increment nn dist pointer
+	}
+	delete the_brute;							// delete brute-force struct
+	valid_dirty = ANNfalse;						// validation good for now
+}
+
+//------------------------------------------------------------------------
+//	doValidation
+//		Compares the approximate answers to the k-nearest neighbors
+//		against the true nearest neighbors (computed earlier). It is
+//		assumed that the true nearest neighbors and indices have been
+//		computed earlier.
+//
+//		First, we check that all the results are within their allowed
+//		limits, and generate an internal error, if not.  For the sake of
+//		performance evaluation, we also compute the following two
+//		quantities for nearest neighbors:
+//
+//		Average Error
+//		-------------
+//		The relative error between the distance to a reported nearest
+//		neighbor and the true nearest neighbor (of the same rank),
+//
+//		Rank Error
+//		----------
+//		The difference in rank between the reported nearest neighbor and
+//		its position (if any) among the true nearest neighbors.  If we
+//		cannot find this point among the true nearest neighbors, then
+//		it assumed that the rank of the true nearest neighbor is true_nn+1.
+//
+//		Because of the possibility of duplicate distances, this is computed
+//		as follows.  For the j-th reported nearest neighbor, we count the
+//		number of true nearest neighbors that are at least this close.  Let
+//		this be rnk.  Then the rank error is max(0, j-rnk).  (In the code
+//		below, j is an array index and so the first item is 0, not 1.  Thus
+//		we take max(0, j+1-rnk) instead.)
+//
+//		For the results of fixed-radious range count, we verify that the
+//		reported number of points in the range lies between the actual
+//		number of points in the shrunken and the true search radius.
+//------------------------------------------------------------------------
+
+void doValidation()						// perform validation
+{
+	int*		  curr_apx_idx = apx_nn_idx;	// approx index pointer
+	ANNdistArray  curr_apx_dst = apx_dists;		// approx distance pointer
+	int*		  curr_tru_idx = true_nn_idx;	// true index pointer
+	ANNdistArray  curr_tru_dst = true_dists;	// true distance pointer
+	int i, j;
+
+	if (true_nn < near_neigh) {
+		Error("Cannot validate with fewer true near neighbors than actual", ANNabort);
+	}
+
+	for (i = 0; i < query_size; i++) {			// validate each query
+		//----------------------------------------------------------------
+		//	Compute result errors
+		//		In fixed radius search it is possible that not all k
+		//		nearest neighbors were computed.  Because the true
+		//		results are computed over the shrunken radius, we should
+		//		have at least as many true nearest neighbors as
+		//		approximate nearest neighbors. (If not, an infinite
+		//		error will be generated, and so an internal error will
+		//		will be generated.
+		//
+		//		Because nearest neighbors are sorted in increasing order
+		//		of distance, as soon as we see a null index, we can
+		//		terminate the distance checking.  The error in the
+		//		result should not exceed epsilon.  However, if
+		//		max_pts_visit is nonzero (meaning that the search is
+		//		terminated early) this might happen.
+		//----------------------------------------------------------------
+		for (j = 0; j < near_neigh; j++) {
+			if (curr_tru_idx[j] == ANN_NULL_IDX)// no more true neighbors?
+				break;
+												// true i-th smallest distance
+			double true_dist = ANN_ROOT(curr_tru_dst[j]);
+												// reported i-th smallest
+			double rept_dist = ANN_ROOT(curr_apx_dst[j]);
+												// better than optimum?
+			if (rept_dist < true_dist*(1-ERR)) {
+				Error("INTERNAL ERROR: True nearest neighbor incorrect",
+						ANNabort);
+			}
+
+			double resultErr;					// result error
+			if (true_dist == 0.0) {				// let's not divide by zero
+				if (rept_dist != 0.0) resultErr = ANN_DBL_MAX;
+				else				  resultErr = 0.0;
+			}
+			else {
+				resultErr = (rept_dist - true_dist) / ((double) true_dist);
+			}
+
+			if (resultErr > epsilon && max_pts_visit == 0) {
+				Error("INTERNAL ERROR: Actual error exceeds epsilon",
+						ANNabort);
+			}
+			#ifdef ANN_PERF
+				ann_average_err += resultErr;	// update statistics error
+			#endif
+		}
+		//--------------------------------------------------------------------
+		//  Compute rank errors (only needed for perf measurements)
+		//--------------------------------------------------------------------
+		#ifdef ANN_PERF
+			for (j = 0; j < near_neigh; j++) {
+				if (curr_tru_idx[i] == ANN_NULL_IDX) // no more true neighbors?
+					break;
+
+				double rnkErr = 0.0;			// rank error
+												// reported j-th distance
+				ANNdist rept_dist = curr_apx_dst[j];
+				int rnk = 0;					// compute rank of this item
+				while (rnk < true_nn && curr_tru_dst[rnk] <= rept_dist)
+					rnk++;
+				if (j+1-rnk > 0) rnkErr = (double) (j+1-rnk);
+				ann_rank_err += rnkErr;			// update average rank error
+			}
+		#endif
+		//----------------------------------------------------------------
+		//	Check range counts from fixed-radius query
+		//----------------------------------------------------------------
+		if (radius_bound != 0) {				// fixed-radius search
+			if  (apx_pts_in_range[i] < min_pts_in_range[i] ||
+				 apx_pts_in_range[i] > max_pts_in_range[i])
+				Error("INTERNAL ERROR: Invalid fixed-radius range count",
+						ANNabort);
+		}
+
+		curr_apx_idx += near_neigh;
+		curr_apx_dst += near_neigh;
+		curr_tru_idx += true_nn;				// increment current pointers
+		curr_tru_dst += true_nn;
+	}
+}
+
+//----------------------------------------------------------------------
+//	treeStats
+//		Computes a number of statistics related to kd_trees and
+//		bd_trees.  These statistics are printed if in verbose mode,
+//		and otherwise they are only printed if they are deemed to
+//		be outside of reasonable operating bounds.
+//----------------------------------------------------------------------
+
+#define log2(x) (log(x)/log(2.0))				// log base 2
+
+void treeStats(
+	ostream		&out,							// output stream
+	ANNbool		verbose)						// print stats
+{
+	const int	MIN_PTS		= 20;				// min no. pts for checking
+	const float MAX_FRAC_TL = 0.50;				// max frac of triv leaves
+	const float MAX_AVG_AR	= 20;				// max average aspect ratio
+
+	ANNkdStats st;								// statistics structure
+
+	the_tree->getStats(st);						// get statistics
+												// total number of nodes
+	int n_nodes = st.n_lf + st.n_spl + st.n_shr;
+												// should be O(n/bs)
+	int opt_n_nodes = (int) (2*(float(st.n_pts)/st.bkt_size));
+	int too_many_nodes = 10*opt_n_nodes;
+	if (st.n_pts >= MIN_PTS && n_nodes > too_many_nodes) {
+		out << "-----------------------------------------------------------\n";
+		out << "Warning: The tree has more than 10x as many nodes as points.\n";
+		out << "You may want to consider a different split or shrink method.\n";
+		out << "-----------------------------------------------------------\n";
+		verbose = ANNtrue;
+	}
+												// fraction of trivial leaves
+	float frac_tl = (st.n_lf == 0 ? 0 : ((float) st.n_tl)/ st.n_lf);
+	if (st.n_pts >= MIN_PTS && frac_tl > MAX_FRAC_TL) {
+		out << "-----------------------------------------------------------\n";
+		out << "Warning: A significant fraction of leaves contain no points.\n";
+		out << "You may want to consider a different split or shrink method.\n";
+		out << "-----------------------------------------------------------\n";
+		verbose = ANNtrue;
+	}
+												// depth should be O(dim*log n)
+	int too_many_levels = (int) (2.0 * st.dim * log2((double) st.n_pts));
+	int opt_levels = (int) log2(double(st.n_pts)/st.bkt_size);
+	if (st.n_pts >= MIN_PTS && st.depth > too_many_levels) {
+		out << "-----------------------------------------------------------\n";
+		out << "Warning: The tree is more than 2x as deep as (dim*log n).\n";
+		out << "You may want to consider a different split or shrink method.\n";
+		out << "-----------------------------------------------------------\n";
+		verbose = ANNtrue;
+	}
+												// average leaf aspect ratio
+	if (st.n_pts >= MIN_PTS && st.avg_ar > MAX_AVG_AR) {
+		out << "-----------------------------------------------------------\n";
+		out << "Warning: Average aspect ratio of cells is quite large.\n";
+		out << "This may slow queries depending on the point distribution.\n";
+		out << "-----------------------------------------------------------\n";
+		verbose = ANNtrue;
+	}
+
+	//------------------------------------------------------------------
+	//  Print summaries if requested
+	//------------------------------------------------------------------
+	if (verbose) {								// output statistics
+		out << "  (Structure Statistics:\n";
+		out << "    n_nodes          = " << n_nodes
+			<< " (opt = " << opt_n_nodes
+			<< ", best if < " << too_many_nodes << ")\n"
+			<< "        n_leaves     = " << st.n_lf
+			<< " (" << st.n_tl << " contain no points)\n"
+			<< "        n_splits     = " << st.n_spl << "\n"
+			<< "        n_shrinks    = " << st.n_shr << "\n";
+		out << "    empty_leaves     = " << frac_tl*100
+			<< " percent (best if < " << MAX_FRAC_TL*100 << " percent)\n";
+		out << "    depth            = " << st.depth
+			<< " (opt = " << opt_levels
+			<< ", best if < " << too_many_levels << ")\n";
+		out << "    avg_aspect_ratio = " << st.avg_ar
+			<< " (best if < " << MAX_AVG_AR << ")\n";
+		out << "  )\n";
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/rand.cpp	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,594 @@
+//----------------------------------------------------------------------
+//	File:			rand.cpp
+//	Programmer:		Sunil Arya and David Mount
+//	Description:	Routines for random point generation
+//	Last modified:	08/04/06 (Version 1.1.1)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//	Revision 0.2  03/26/98
+//		Changed random/srandom declarations for SGI's.
+//	Revision 1.0  04/01/05
+//		annClusGauss centers distributed over [-1,1] rather than [0,1]
+//		Added annClusOrthFlats distribution
+//		Changed procedure names to avoid namespace conflicts
+//		Added annClusFlats distribution
+//		Added rand/srand option and fixed annRan0() initialization.
+//	Revision 1.1.1  08/04/06
+//		Added planted distribution
+//----------------------------------------------------------------------
+
+#include "rand.h"						// random generator declarations
+
+using namespace std;					// make std:: accessible
+
+//----------------------------------------------------------------------
+//	Globals
+//----------------------------------------------------------------------
+int		annIdum = 0;					// used for random number generation
+
+//------------------------------------------------------------------------
+//	annRan0 - (safer) uniform random number generator
+//
+//	The code given here is taken from "Numerical Recipes in C" by
+//	William Press, Brian Flannery, Saul Teukolsky, and William
+//	Vetterling. The task of the code is to do an additional randomizing
+//	shuffle on the system-supplied random number generator to make it
+//	safer to use. 
+//
+//	Returns a uniform deviate between 0.0 and 1.0 using the
+//	system-supplied routine random() or rand(). Set the global
+//	annIdum to any negative value to initialise or reinitialise
+//	the sequence.
+//------------------------------------------------------------------------
+
+double annRan0()
+{
+	const int TAB_SIZE = 97;			// table size: any large number
+	int j;
+
+	static double y, v[TAB_SIZE];
+	static int iff = 0;
+	const double RAN_DIVISOR = double(ANN_RAND_MAX + 1UL);
+	if (RAN_DIVISOR < 0) {
+		cout << "RAN_DIVISOR " << RAN_DIVISOR << endl;
+		exit(0);
+	}
+
+	//--------------------------------------------------------------------
+	// As a precaution against misuse, we will always initialize on the
+	// first call, even if "annIdum" is not set negative. Determine
+	// "maxran", the next integer after the largest representable value
+	// of type int. We assume this is a factor of 2 smaller than the
+	// corresponding value of type unsigned int. 
+	//--------------------------------------------------------------------
+
+	if (annIdum < 0 || iff == 0) {		// initialize
+		iff = 1;
+		ANN_SRAND(annIdum);				// (re)seed the generator
+		annIdum = 1;
+
+		for (j = 0; j < TAB_SIZE; j++)	// exercise the system routine
+			ANN_RAND();					// (values intentionally ignored)
+
+		for (j = 0; j < TAB_SIZE; j++)	// then save TAB_SIZE-1 values
+			v[j] = ANN_RAND();
+		y = ANN_RAND();					// generate starting value
+	 }
+
+	//--------------------------------------------------------------------
+	// This is where we start if not initializing. Use the previously
+	// saved random number y to get an index j between 1 and TAB_SIZE-1.
+	// Then use the corresponding v[j] for both the next j and as the
+	// output number.
+	//--------------------------------------------------------------------
+
+	j = int(TAB_SIZE * (y / RAN_DIVISOR));
+	y = v[j];
+	v[j] = ANN_RAND();					// refill the table entry
+	return y / RAN_DIVISOR;
+}
+
+//------------------------------------------------------------------------
+//	annRanInt - generate a random integer from {0,1,...,n-1}
+//
+//		If n == 0, then -1 is returned.
+//------------------------------------------------------------------------
+
+static int annRanInt(
+	int					n)
+{
+	int r = (int) (annRan0()*n);
+	if (r == n) r--;					// (in case annRan0() == 1 or n == 0)
+	return r;
+}
+
+//------------------------------------------------------------------------
+//	annRanUnif - generate a random uniform in [lo,hi]
+//------------------------------------------------------------------------
+
+static double annRanUnif(
+	double				lo,
+	double				hi)
+{
+	return annRan0()*(hi-lo) + lo;
+}
+
+//------------------------------------------------------------------------
+//	annRanGauss - Gaussian random number generator
+//		Returns a normally distributed deviate with zero mean and unit
+//		variance, using annRan0() as the source of uniform deviates.
+//------------------------------------------------------------------------
+
+static double annRanGauss()
+{
+	static int iset=0;
+	static double gset;
+
+	if (iset == 0) {					// we don't have a deviate handy
+		double v1, v2;
+		double r = 2.0;
+		while (r >= 1.0) {
+			//------------------------------------------------------------
+			// Pick two uniform numbers in the square extending from -1 to
+			// +1 in each direction, see if they are in the circle of radius
+			// 1.  If not, try again 
+			//------------------------------------------------------------
+			v1 = annRanUnif(-1, 1);
+			v2 = annRanUnif(-1, 1);
+			r = v1 * v1 + v2 * v2;
+		}
+		double fac = sqrt(-2.0 * log(r) / r);
+		//-----------------------------------------------------------------
+		// Now make the Box-Muller transformation to get two normal
+		// deviates.  Return one and save the other for next time.
+		//-----------------------------------------------------------------
+		gset = v1 * fac;
+		iset = 1;						// set flag
+		return v2 * fac;
+	}
+	else {								// we have an extra deviate handy
+		iset = 0;						// so unset the flag
+		return gset;					// and return it
+	}
+}
+
+//------------------------------------------------------------------------
+//	annRanLaplace - Laplacian random number generator
+//		Returns a Laplacian distributed deviate with zero mean and
+//		unit variance, using annRan0() as the source of uniform deviates. 
+//
+//				prob(x) = b/2 * exp(-b * |x|).
+//
+//		b is chosen to be sqrt(2.0) so that the variance of the Laplacian
+//		distribution [2/(b^2)] becomes 1. 
+//------------------------------------------------------------------------
+
+static double annRanLaplace() 
+{
+	const double b = 1.4142136;
+
+	double laprand = -log(annRan0()) / b;
+	double sign = annRan0();
+	if (sign < 0.5) laprand = -laprand;
+	return(laprand);
+}
+
+//----------------------------------------------------------------------
+//	annUniformPts - Generate uniformly distributed points
+//		A uniform distribution over [-1,1].
+//----------------------------------------------------------------------
+
+void annUniformPts(				// uniform distribution
+	ANNpointArray		pa,				// point array (modified)
+	int					n,				// number of points
+	int					dim)			// dimension
+{
+	for (int i = 0; i < n; i++) {
+		for (int d = 0; d < dim; d++) {
+			pa[i][d] = (ANNcoord) (annRanUnif(-1,1));
+		}
+	}
+}
+
+//----------------------------------------------------------------------
+//	annGaussPts - Generate Gaussian distributed points
+//		A Gaussian distribution with zero mean and the given standard
+//		deviation.
+//----------------------------------------------------------------------
+
+void annGaussPts(						// Gaussian distribution
+	ANNpointArray		pa,				// point array (modified)
+	int					n,				// number of points
+	int					dim,			// dimension
+	double				std_dev)		// standard deviation
+{
+	for (int i = 0; i < n; i++) {
+		for (int d = 0; d < dim; d++) {
+			pa[i][d] = (ANNcoord) (annRanGauss() * std_dev);
+		}
+	}
+}
+
+//----------------------------------------------------------------------
+//	annLaplacePts - Generate Laplacian distributed points
+//		Generates a Laplacian distribution (zero mean and unit variance).
+//----------------------------------------------------------------------
+
+void annLaplacePts(				// Laplacian distribution
+	ANNpointArray		pa,				// point array (modified)
+	int					n,				// number of points
+	int					dim)			// dimension
+{
+	for (int i = 0; i < n; i++) {
+		for (int d = 0; d < dim; d++) {
+			pa[i][d] = (ANNcoord) annRanLaplace();
+		}
+	}
+}
+
+//----------------------------------------------------------------------
+//	annCoGaussPts - Generate correlated Gaussian distributed points
+//		Generates a Gauss-Markov distribution of zero mean and unit
+//		variance.
+//----------------------------------------------------------------------
+
+void annCoGaussPts(				// correlated-Gaussian distribution
+	ANNpointArray		pa,				// point array (modified)
+	int					n,				// number of points
+	int					dim,			// dimension
+	double				correlation)	// correlation
+{
+	double std_dev_w = sqrt(1.0 - correlation * correlation);
+	for (int i = 0; i < n; i++) {
+		double previous = annRanGauss();
+		pa[i][0] = (ANNcoord) previous;
+		for (int d = 1; d < dim; d++) {
+			previous = correlation*previous + std_dev_w*annRanGauss();
+			pa[i][d] = (ANNcoord) previous;
+		} 
+	}
+}
+
+//----------------------------------------------------------------------
+//	annCoLaplacePts - Generate correlated Laplacian distributed points
+//		Generates a Laplacian-Markov distribution of zero mean and unit
+//		variance.
+//----------------------------------------------------------------------
+
+void annCoLaplacePts(			// correlated-Laplacian distribution
+	ANNpointArray		pa,				// point array (modified)
+	int					n,				// number of points
+	int					dim,			// dimension
+	double				correlation)	// correlation
+{
+	double wn;
+	double corr_sq = correlation * correlation;
+
+	for (int i = 0; i < n; i++) {
+		double previous = annRanLaplace();
+		pa[i][0] = (ANNcoord) previous;
+		for (int d = 1; d < dim; d++) {
+			double temp = annRan0();
+			if (temp < corr_sq)
+				wn = 0.0;
+			else
+				wn = annRanLaplace();
+			previous = correlation * previous + wn;
+			pa[i][d] = (ANNcoord) previous;
+		} 
+	}
+}
+
+//----------------------------------------------------------------------
+//	annClusGaussPts - Generate clusters of Gaussian distributed points
+//		Cluster centers are uniformly distributed over [-1,1], and the
+//		standard deviation within each cluster is fixed.
+//
+//		Note: Once cluster centers have been set, they are not changed,
+//		unless new_clust = true.  This is so that subsequent calls generate
+//		points from the same distribution.  It follows, of course, that any
+//		attempt to change the dimension or number of clusters without
+//		generating new clusters is asking for trouble.
+//
+//		Note: Cluster centers are not generated by a call to uniformPts().
+//		Although this could be done, it has been omitted for
+//		compatibility with annClusGaussPts() in the colored version,
+//		rand_c.cc.
+//----------------------------------------------------------------------
+
+void annClusGaussPts(			// clustered-Gaussian distribution
+	ANNpointArray		pa,				// point array (modified)
+	int					n,				// number of points
+	int					dim,			// dimension
+	int					n_clus,			// number of colors
+	ANNbool				new_clust,		// generate new clusters.
+	double				std_dev)		// standard deviation within clusters
+{
+	static ANNpointArray clusters = NULL;// cluster storage
+
+	if (clusters == NULL || new_clust) {// need new cluster centers
+		if (clusters != NULL)			// clusters already exist
+			annDeallocPts(clusters);	// get rid of them
+		clusters = annAllocPts(n_clus, dim);
+										// generate cluster center coords
+		for (int i = 0; i < n_clus; i++) {
+			for (int d = 0; d < dim; d++) {
+				clusters[i][d] = (ANNcoord) annRanUnif(-1,1);
+			}
+		}
+	}
+
+	for (int i = 0; i < n; i++) {
+		int c = annRanInt(n_clus);				// generate cluster index
+		for (int d = 0; d < dim; d++) {
+		  pa[i][d] = (ANNcoord) (std_dev*annRanGauss() + clusters[c][d]);
+		}
+	}
+}
+
+//----------------------------------------------------------------------
+//	annClusOrthFlats - points clustered along orthogonal flats
+//
+//		This distribution consists of a collection points clustered
+//		among a collection of axis-aligned low dimensional flats in
+//		the hypercube [-1,1]^d.  A set of n_clus orthogonal flats are
+//		generated, each whose dimension is a random number between 1
+//		and max_dim.  The points are evenly distributed among the clusters.
+//		For each cluster, we generate points uniformly distributed along
+//		the flat within the hypercube.
+//
+//		This is done as follows.  Each cluster is defined by a d-element
+//		control vector whose components are either:
+//		
+//				CO_FLAG indicating that this component is to be generated
+//						uniformly in [-1,1],
+//				x		a value other than CO_FLAG in the range [-1,1],
+//						which indicates that this coordinate is to be
+//						generated as x plus a Gaussian random deviation
+//						with the given standard deviation.
+//						
+//		The number of zero components is the dimension of the flat, which
+//		is a random integer in the range from 1 to max_dim.  The points
+//		are disributed between clusters in nearly equal sized groups.
+//
+//		Note: Once cluster centers have been set, they are not changed,
+//		unless new_clust = true.  This is so that subsequent calls generate
+//		points from the same distribution.  It follows, of course, that any
+//		attempt to change the dimension or number of clusters without
+//		generating new clusters is asking for trouble.
+//
+//		To make this a bad scenario at query time, query points should be
+//		selected from a different distribution, e.g. uniform or Gaussian.
+//
+//		We use a little programming trick to generate groups of roughly
+//		equal size.  If n is the total number of points, and n_clus is
+//		the number of clusters, then the c-th cluster (0 <= c < n_clus)
+//		is given floor((n+c)/n_clus) points.  It can be shown that this
+//		will exactly consume all n points.
+//
+//		This procedure makes use of the utility procedure, genOrthFlat
+//		which generates points in one orthogonal flat, according to
+//		the given control vector.
+//
+//----------------------------------------------------------------------
+const double CO_FLAG = 999;						// special flag value
+
+static void genOrthFlat(		// generate points on an orthog flat
+	ANNpointArray		pa,				// point array
+	int					n,				// number of points
+	int					dim,			// dimension
+	double				*control,		// control vector
+	double				std_dev)		// standard deviation
+{
+	for (int i = 0; i < n; i++) {				// generate each point
+		for (int d = 0; d < dim; d++) {			// generate each coord
+			if (control[d] == CO_FLAG)			// dimension on flat
+				pa[i][d] = (ANNcoord) annRanUnif(-1,1);
+			else								// dimension off flat
+				pa[i][d] = (ANNcoord) (std_dev*annRanGauss() + control[d]);
+		}
+	}
+}
+
+void annClusOrthFlats(			// clustered along orthogonal flats
+	ANNpointArray		pa,				// point array (modified)
+	int					n,				// number of points
+	int					dim,			// dimension
+	int					n_clus,			// number of colors
+	ANNbool				new_clust,		// generate new clusters.
+	double				std_dev,		// standard deviation within clusters
+	int					max_dim)		// maximum dimension of the flats
+{
+	static ANNpointArray control = NULL;		// control vectors
+
+	if (control == NULL || new_clust) {			// need new cluster centers
+		if (control != NULL) {					// clusters already exist
+			annDeallocPts(control);				// get rid of them
+		}
+		control = annAllocPts(n_clus, dim);
+
+		for (int c = 0; c < n_clus; c++) {		// generate clusters
+			int n_dim = 1 + annRanInt(max_dim); // number of dimensions in flat
+			for (int d = 0; d < dim; d++) {		// generate side locations
+												// prob. of picking next dim
+				double Prob = ((double) n_dim)/((double) (dim-d));
+				if (annRan0() < Prob) {			// add this one to flat
+					control[c][d] = CO_FLAG;	// flag this entry
+					n_dim--;					// one fewer dim to fill
+				}
+				else {							// don't take this one
+					control[c][d] = annRanUnif(-1,1);// random value in [-1,1]
+				}
+			}
+		}
+	}
+	int offset = 0;								// offset in pa array
+	for (int c = 0; c < n_clus; c++) {			// generate clusters
+		int pick = (n+c)/n_clus;				// number of points to pick
+												// generate the points
+		genOrthFlat(pa+offset, pick, dim, control[c], std_dev);
+		offset += pick;							// increment offset
+	}
+}
+
+//----------------------------------------------------------------------
+//	annClusEllipsoids - points clustered around axis-aligned ellipsoids
+//
+//		This distribution consists of a collection points clustered
+//		among a collection of low dimensional ellipsoids whose axes
+//		are alligned with the coordinate axes in the hypercube [-1,1]^d.
+//		The objective is to model distributions in which the points are
+//		distributed in lower dimensional subspaces, and within this
+//		lower dimensional space the points are distributed with a
+//		Gaussian distribution (with no correlation between the
+//		dimensions).
+//
+//		The distribution is given the number of clusters or "colors"
+//		(n_clus), maximum number of dimensions (max_dim) of the lower
+//		dimensional subspace, a "small" standard deviation
+//		(std_dev_small), and a "large" standard deviation range
+//		(std_dev_lo, std_dev_hi).
+//
+//		The algorithm generates n_clus cluster centers uniformly from
+//		the hypercube [-1,1]^d.  For each cluster, it selects the
+//		dimension of the subspace as a random number r between 1 and
+//		max_dim.  These are the dimensions of the ellipsoid.  Then it
+//		generates a d-element std dev vector whose entries are the
+//		standard deviation for the coordinates of each cluster in the
+//		distribution.  Among the d-element control vector, r randomly
+//		chosen values are chosen uniformly from the range [std_dev_lo,
+//		std_dev_hi].  The remaining values are set to std_dev_small.
+//
+//		Note that annClusGaussPts is a special case of this in which
+//		max_dim = 0, and std_dev = std_dev_small.
+//
+//		If the flag new_clust is set, then new cluster centers are
+//		generated.
+//
+//		This procedure makes use of the utility procedure genGauss
+//		which generates points distributed according to a Gaussian
+//		distribution.
+//
+//----------------------------------------------------------------------
+
+static void genGauss(			// generate points on a general Gaussian
+	ANNpointArray		pa,				// point array
+	int					n,				// number of points
+	int					dim,			// dimension
+	double				*center,		// center vector
+	double				*std_dev)		// standard deviation vector
+{
+	for (int i = 0; i < n; i++) {
+		for (int d = 0; d < dim; d++) {
+			pa[i][d] = (ANNcoord) (std_dev[d]*annRanGauss() + center[d]);
+		}
+	}
+}
+
+void annClusEllipsoids(			// clustered around ellipsoids
+	ANNpointArray		pa,				// point array (modified)
+	int					n,				// number of points
+	int					dim,			// dimension
+	int					n_clus,			// number of colors
+	ANNbool				new_clust,		// generate new clusters.
+	double				std_dev_small,	// small standard deviation
+	double				std_dev_lo,		// low standard deviation for ellipses
+	double				std_dev_hi,		// high standard deviation for ellipses
+	int					max_dim)		// maximum dimension of the flats
+{
+	static ANNpointArray centers = NULL;		// cluster centers
+	static ANNpointArray std_dev = NULL;		// standard deviations
+
+	if (centers == NULL || new_clust) {			// need new cluster centers
+		if (centers != NULL)					// clusters already exist
+			annDeallocPts(centers);				// get rid of them
+		if (std_dev != NULL)					// std deviations already exist
+			annDeallocPts(std_dev);				// get rid of them
+
+		centers = annAllocPts(n_clus, dim);		// alloc new clusters and devs
+		std_dev	 = annAllocPts(n_clus, dim);
+
+		for (int i = 0; i < n_clus; i++) {		// gen cluster center coords
+			for (int d = 0; d < dim; d++) {
+				centers[i][d] = (ANNcoord) annRanUnif(-1,1);
+			}
+		}
+		for (int c = 0; c < n_clus; c++) {		// generate cluster std dev
+			int n_dim = 1 + annRanInt(max_dim); // number of dimensions in flat
+			for (int d = 0; d < dim; d++) {		// generate std dev's
+												// prob. of picking next dim
+				double Prob = ((double) n_dim)/((double) (dim-d));
+				if (annRan0() < Prob) {			// add this one to ellipse
+												// generate random std dev
+					std_dev[c][d] = annRanUnif(std_dev_lo, std_dev_hi);
+					n_dim--;					// one fewer dim to fill
+				}
+				else {							// don't take this one
+					std_dev[c][d] = std_dev_small;// use small std dev
+				}
+			}
+		}
+	}
+
+	int offset = 0;								// next slot to fill
+	for (int c = 0; c < n_clus; c++) {			// generate clusters
+		int pick = (n+c)/n_clus;				// number of points to pick
+												// generate the points
+		genGauss(pa+offset, pick, dim, centers[c], std_dev[c]);
+		offset += pick;							// increment offset in array
+	}
+}
+
+//----------------------------------------------------------------------
+//	annPlanted - Generates points from a "planted" distribution
+//		In high dimensional spaces, interpoint distances tend to be
+//		highly clustered around the mean value.  Approximate nearest
+//		neighbor searching makes little sense in this context, unless it
+//		is the case that each query point is significantly closer to its
+//		nearest neighbor than to other points.  Thus, the query points
+//		should be planted close to the data points. Given a source data
+//		set, this procedure generates a set of query points having this
+//		property.
+//
+//		We are given a source data array and a standard deviation.  We
+//		generate points as follows.  We select a random point from the
+//		source data set, and we generate a Gaussian point centered about
+//		this random point and perturbed by a normal distributed random
+//		variable with mean zero and the given standard deviation along
+//		each coordinate.
+//
+//		Note that this essentially the same a clustered Gaussian
+//		distribution, but where the cluster centers are given by the
+//		source data set.
+//----------------------------------------------------------------------
+
+void annPlanted(				// planted nearest neighbors
+	ANNpointArray	pa,			// point array (modified)
+	int				n,			// number of points
+	int				dim,		// dimension
+	ANNpointArray	src,		// source point array
+	int				n_src,		// source size
+	double			std_dev)	// standard deviation about source
+{
+	for (int i = 0; i < n; i++) {
+		int c = annRanInt(n_src);			// generate source index
+		for (int d = 0; d < dim; d++) {
+		  pa[i][d] = (ANNcoord) (std_dev*annRanGauss() + src[c][d]);
+		}
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/rand.h	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,131 @@
+//----------------------------------------------------------------------
+//	File:			rand.h
+//	Programmer:		Sunil Arya and David Mount
+//	Description:	Basic include file for random point generators
+//	Last modified:	08/04/06 (Version 1.1.1)
+//----------------------------------------------------------------------
+// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and
+// David Mount.  All Rights Reserved.
+// 
+// This software and related documentation is part of the Approximate
+// Nearest Neighbor Library (ANN).  This software is provided under
+// the provisions of the Lesser GNU Public License (LGPL).  See the
+// file ../ReadMe.txt for further information.
+// 
+// The University of Maryland (U.M.) and the authors make no
+// representations about the suitability or fitness of this software for
+// any purpose.  It is provided "as is" without express or implied
+// warranty.
+//----------------------------------------------------------------------
+// History:
+//	Revision 0.1  03/04/98
+//		Initial release
+//	Revision 1.0  04/01/05
+//		Added annClusOrthFlats distribution
+//		Changed procedure names to avoid namespace conflicts
+//		Added annClusFlats distribution
+//	Revision 1.1.1  08/04/06
+//		Added planted distribution
+//----------------------------------------------------------------------
+
+#ifndef rand_H
+#define rand_H
+
+//----------------------------------------------------------------------
+//	Basic includes
+//----------------------------------------------------------------------
+#include <cstdlib>						// standard includes (rand/random)
+#include <cmath>						// math routines
+#include <ANN/ANN.h>					// basic ANN includes
+
+//----------------------------------------------------------------------
+//	Although random/srandom is a more reliable random number generator,
+//	many systems do not have it.  If it is not available, set the
+//	preprocessor symbol ANN_NO_RANDOM, and this will substitute the use
+//	of rand/srand for them.
+//----------------------------------------------------------------------
+#ifdef ANN_NO_RANDOM					// for systems not having random()
+  #define ANN_RAND		rand
+  #define ANN_SRAND		srand
+  #define ANN_RAND_MAX	RAND_MAX
+#else									// otherwise use rand()
+  #define ANN_RAND		random
+  #define ANN_SRAND		srandom
+  #define ANN_RAND_MAX	2147483647UL		// 2**{31} - 1
+  // #define ANN_RAND_MAX	1073741824UL		// 2**{30}
+#endif
+
+//----------------------------------------------------------------------
+//	Globals
+//----------------------------------------------------------------------
+extern	int		annIdum;				// random number seed
+
+//----------------------------------------------------------------------
+//	External entry points
+//----------------------------------------------------------------------
+
+void annUniformPts(				// uniform distribution
+	ANNpointArray	pa,			// point array (modified)
+	int				n,			// number of points
+	int				dim);		// dimension
+
+void annGaussPts(				// Gaussian distribution
+	ANNpointArray	pa,			// point array (modified)
+	int				n,			// number of points
+	int				dim,		// dimension
+	double			std_dev);	// standard deviation
+
+void annCoGaussPts(				// correlated-Gaussian distribution
+	ANNpointArray	pa,			// point array (modified)
+	int				n,			// number of points
+	int				dim,		// dimension
+	double			correlation);	// correlation
+
+void annLaplacePts(				// Laplacian distribution
+	ANNpointArray	pa,			// point array (modified)
+	int				n,			// number of points
+	int				dim);		// dimension
+
+void annCoLaplacePts(			// correlated-Laplacian distribution
+	ANNpointArray	pa,			// point array (modified)
+	int				n,			// number of points
+	int				dim,		// dimension
+	double			correlation);	// correlation
+
+void annClusGaussPts(			// clustered-Gaussian distribution
+	ANNpointArray	pa,			// point array (modified)
+	int				n,			// number of points
+	int				dim,		// dimension
+	int				n_clus,		// number of colors (clusters)
+	ANNbool			new_clust,	// generate new cluster centers
+	double			std_dev);	// standard deviation within clusters
+
+void annClusOrthFlats(          // clustered along orthogonal flats
+	ANNpointArray	pa,			// point array (modified)
+	int				n,			// number of points
+	int				dim,		// dimension
+	int				n_clus,		// number of colors
+	ANNbool			new_clust,	// generate new clusters.
+	double			std_dev,	// standard deviation within clusters
+	int				max_dim);	// maximum dimension of the flats
+
+void annClusEllipsoids(			// clustered around ellipsoids
+	ANNpointArray	pa,			// point array (modified)
+	int				n,			// number of points
+	int				dim,		// dimension
+	int				n_clus,		// number of colors
+	ANNbool			new_clust,	// generate new clusters.
+	double			std_dev_small,	// small standard deviation
+	double			std_dev_lo,	// low standard deviation for ellipses
+	double			std_dev_hi,	// high standard deviation for ellipses
+	int				max_dim);	// maximum dimension of the flats
+
+void annPlanted(				// planted nearest neighbors
+	ANNpointArray	pa,			// point array (modified)
+	int				n,			// number of points
+	int				dim,		// dimension
+	ANNpointArray	src,		// source point array
+	int				n_src,		// source size
+	double			std_dev);	// standard deviation about source
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/test1-data.pts	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,20 @@
+-0.297462	0.176102
+0.565538	-0.361496
+0.909313	-0.182785
+0.920712	0.478408
+0.167682	0.0499836
+0.305223	-0.0805835
+0.114973	0.882453
+0.742916	0.16376
+0.0724605	-0.826775
+0.690960	-0.559284
+0.188485	-0.643934
+0.749427	-0.942415
+-0.970662	-0.223466
+0.916110	0.879597
+0.927417	-0.382593
+-0.711327	0.278713
+-0.519172	0.986146
+0.135338	0.924588
+-0.0837537	0.61687
+0.0520465	0.896306
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/test1-query.pts	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,10 @@
+0.0902484	-0.207129
+-0.419567	0.485743
+0.826225	-0.30962
+0.694758	0.987088
+-0.410807	-0.465182
+-0.836501	0.490184
+0.588289	0.656408
+0.325807	0.38721
+-0.532226	-0.727036
+-0.52506	-0.853508
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/test1.in	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,15 @@
+  validate on
+  stats query_stats
+  dim 2
+  data_size 20
+  query_size 10
+read_data_pts test1-data.pts
+read_query_pts test1-query.pts
+  bucket_size 1
+  near_neigh 3
+  split_rule suggest
+  shrink_rule none
+build_ann
+  epsilon 0.0
+run_queries standard
+run_queries priority
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/test1.save	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,76 @@
+------------------------------------------------------------
+ann_test: Version 1.0 
+    Copyright: David M. Mount and Sunil Arya.
+    Latest Revision: Mar 1, 2005.
+------------------------------------------------------------
+
+validate = on   (Warning: this may slow execution time.)
+stats = query_stats
+[Read Data Points:
+  data_size  = 20
+  file_name  = test1-data.pts
+  dim        = 2
+]
+[Read Query Points:
+  query_size = 10
+  file_name  = test1-query.pts
+  dim        = 2
+]
+[Build ann-structure:
+  split_rule    = suggest
+  shrink_rule   = none
+  data_size     = 20
+  dim           = 2
+  bucket_size   = 1
+  process_time  = 0 sec
+  (Structure Statistics:
+    n_nodes          = 39 (opt = 40, best if < 400)
+        n_leaves     = 20 (0 contain no points)
+        n_splits     = 19
+        n_shrinks    = 0
+    empty_leaves     = 0 percent (best if < 50 percent)
+    depth            = 6 (opt = 4, best if < 17)
+    avg_aspect_ratio = 1.48847 (best if < 20)
+  )
+]
+(Computing true nearest neighbors for validation.  This may take time.)
+[Run Queries:
+  query_size    = 10
+  dim           = 2
+  search_method = standard
+  epsilon       = 0
+  near_neigh    = 3
+  true_nn       = 13
+  query_time    = 0 sec/query (biased by perf measurements)
+  (Performance stats:  [      mean :    stddev ]<      min ,       max >
+    leaf_nodes       = [       6.3 :     2.751 ]<        4 ,        11 >
+    splitting_nodes  = [       8.8 :     3.676 ]<        5 ,        15 >
+    shrinking_nodes  = [         0 :         0 ]<        0 ,         0 >
+    total_nodes      = [      15.1 :      6.35 ]<        9 ,        26 >
+    points_visited   = [       6.3 :     2.751 ]<        4 ,        11 >
+    coord_hits/pt    = [      0.57 :    0.2201 ]<     0.35 ,      0.95 >
+    floating_ops_(K) = [     0.156 :    0.0563 ]<    0.101 ,     0.254 >
+    average_error    = [         0 :         0 ]<        0 ,         0 >
+    rank_error       = [         0 :         0 ]<        0 ,         0 >
+  )
+]
+[Run Queries:
+  query_size    = 10
+  dim           = 2
+  search_method = priority
+  epsilon       = 0
+  near_neigh    = 3
+  true_nn       = 13
+  query_time    = 0 sec/query (biased by perf measurements)
+  (Performance stats:  [      mean :    stddev ]<      min ,       max >
+    leaf_nodes       = [       5.9 :     2.025 ]<        4 ,         9 >
+    splitting_nodes  = [       8.7 :     3.498 ]<        5 ,        15 >
+    shrinking_nodes  = [         0 :         0 ]<        0 ,         0 >
+    total_nodes      = [      14.6 :      5.42 ]<        9 ,        24 >
+    points_visited   = [       5.9 :     2.025 ]<        4 ,         9 >
+    coord_hits/pt    = [     0.535 :    0.1667 ]<     0.35 ,       0.8 >
+    floating_ops_(K) = [    0.1719 :   0.05861 ]<    0.114 ,     0.267 >
+    average_error    = [         0 :         0 ]<        0 ,         0 >
+    rank_error       = [         0 :         0 ]<        0 ,         0 >
+  )
+]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/test2-data.pts	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,5000 @@
+-0.297462 0.176102 0.565538 -0.361496 0.909313 -0.182785 0.920712 0.478408
+0.167682 0.0499836 0.305223 -0.0805835 0.114973 0.882453 0.742916 0.16376
+0.0724605 -0.826775 0.69096 -0.559284 0.188485 -0.643934 0.749427 -0.942415
+-0.970662 -0.223466 0.91611 0.879597 0.927417 -0.382593 -0.711327 0.278713
+-0.519172 0.986146 0.135338 0.924588 -0.0837537 0.61687 0.0520465 0.896306
+0.901473 -0.325291 0.0652063 -0.120574 -0.488327 0.751363 -0.697499 -0.947413
+-0.987624 0.963139 0.369289 -0.211379 -0.883509 -0.708899 0.600525 -0.582872
+-0.643506 0.71497 0.575093 0.00459678 0.539812 -0.258652 0.869204 -0.00241996
+0.772744 -0.676832 -0.897886 -0.196002 -0.628767 0.30896 0.570148 0.26033
+-0.386577 -0.874337 -0.259992 0.312917 -0.0935399 0.573666 0.239825 0.85421
+-0.796208 0.678532 -0.642731 -0.143502 -0.381581 0.356034 0.65693 0.401868
+-0.218174 0.780909 0.499682 0.523531 0.214211 -0.29589 -0.291622 0.0764825
+0.091177 0.447957 -0.848885 -0.752714 -0.40904 0.733853 0.721019 0.0583175
+0.663434 -0.344447 0.696992 0.511178 0.723191 0.159443 -0.988504 -0.898227
+-0.972966 -0.467816 -0.756507 -0.00932436 0.665708 -0.215697 0.193261 -0.73054
+-0.503446 -0.623009 0.0161417 -0.0152601 -0.586458 0.358857 0.480893 -0.481899
+0.231917 -0.216164 -0.302167 0.938651 -0.337667 -0.550426 0.304921 0.733026
+0.881044 -0.953436 0.468168 0.290473 0.624624 -0.88191 -0.173327 0.594642
+-0.616391 0.222285 0.780042 0.915883 0.152626 0.500683 0.679114 0.974283
+0.111703 -0.193509 -0.932136 0.47911 -0.99438 -0.865367 -0.0967407 -0.375721
+0.876059 0.397368 0.90637 -0.91502 -0.254416 -0.770248 -0.95772 0.192315
+0.543171 0.18398 -0.605726 -0.108319 0.366217 -0.226911 -0.46079 0.683085
+0.337 -0.447926 0.728826 -0.72444 0.25202 0.201194 0.2288 -0.595918
+-0.989507 -0.323679 0.812735 -0.786256 -0.498072 -0.386284 0.049872 0.0345352
+0.575 0.358321 -0.63589 0.0972841 -0.205853 0.931691 -0.638675 0.374053
+0.335957 -0.223622 -0.627704 0.37217 -0.994567 -0.557683 -0.57658 -0.701232
+0.0755894 0.974534 0.715631 -0.206894 -0.526541 0.501268 0.571862 0.212854
+-0.869894 -0.151379 0.296696 0.616219 0.804961 0.216442 0.169456 -0.387354
+-0.417341 -0.677607 -0.101949 0.336936 0.759843 -0.780843 0.118637 -0.563597
+0.0711953 0.678427 -0.291873 0.388899 -0.369805 -0.543637 -0.272861 0.757796
+0.164091 0.2259 0.593925 -0.60811 -0.876473 -0.859748 -0.555799 -0.0760664
+-0.0258962 0.842516 -0.273949 0.755465 0.718062 0.698204 0.411453 0.57304
+-0.718382 0.878294 0.340659 -0.866202 -0.842228 -0.358782 -0.0827611 0.19
+0.195705 0.702977 -0.139206 0.49806 0.292129 -0.711906 0.460747 0.415933
+0.0301255 -0.0247891 0.655832 -0.28719 -0.980266 0.0435323 -0.218995 -0.328763
+0.152072 0.101915 -0.733531 0.979024 -0.402967 0.996893 -0.0937599 0.560043
+-0.146347 0.638532 -0.455591 0.757517 0.736552 -0.402962 0.279153 0.392166
+0.935555 -0.435862 -0.220478 -0.216536 -0.486893 -0.999307 0.870995 -0.219688
+0.874182 0.687041 0.818154 0.888706 -0.409832 -0.0864898 0.548772 -0.2601
+0.634894 0.752933 0.694626 0.568505 -0.53463 0.823661 -0.128738 0.589029
+0.876153 -0.936599 0.558147 0.461222 0.83707 -0.394617 0.293574 0.397603
+-0.605902 0.147833 0.883365 0.934395 -0.517984 -0.518272 0.15289 -0.197287
+-0.841908 -0.189046 -0.687789 -0.400047 -0.0059939 0.636801 -0.926915 0.456876
+0.895508 -0.273416 0.809081 -0.91928 -0.203844 0.216291 0.863094 -0.268931
+-0.0429209 0.67578 -0.352266 0.411506 0.81286 0.68938 0.852793 -0.629614
+-0.339257 0.526827 0.531975 0.187766 0.22966 0.453669 -0.662857 0.298569
+-0.710394 0.81991 -0.0218645 0.713223 -0.531523 0.0181046 -0.152334 -0.116328
+-0.907862 -0.406953 0.925716 -0.539728 0.785887 -0.971309 -0.413071 0.975195
+-0.648158 -0.12306 0.122396 -0.524215 -0.586375 0.803927 -0.1532 -0.714185
+0.393997 -0.147598 0.309933 0.780862 0.756713 -0.275399 -0.333717 0.65411
+-0.0393073 0.238394 0.329379 -0.529649 0.338274 0.355714 -0.0642789 0.790386
+0.854227 -0.538818 -0.137987 -0.352855 -0.438209 0.0361346 0.277982 -0.831233
+-0.619246 0.342369 0.641529 -0.388092 -0.0129252 0.649824 0.407042 0.60878
+-0.555105 -0.682711 0.150686 0.73807 0.164439 -0.579306 0.417745 -0.585381
+-0.338461 -0.483024 -0.726698 0.0718554 -0.107977 -0.182788 -0.390668 0.342764
+-0.0275691 -0.962499 0.7334 -0.106491 0.297794 -0.33725 -0.17166 -0.638197
+0.586193 0.352238 -0.0854822 0.654726 -0.476064 0.656265 0.66643 0.852146
+0.616724 -0.709663 0.684614 -0.148603 0.354114 -0.230582 0.277798 -0.631456
+-0.905237 0.403059 -0.699449 -0.898671 0.31476 0.878856 0.336509 -0.387219
+0.45696 0.0752823 -0.171288 0.555415 0.596403 0.901777 -0.441202 0.194817
+-0.192999 -0.88183 -0.254202 0.053615 0.441121 -0.094888 -0.225595 0.658495
+0.956766 -0.897565 -0.387446 0.444515 0.300364 0.864927 -0.74361 0.263379
+0.612994 -0.854378 0.0613588 0.837108 -0.535565 0.461418 -0.412153 -0.995443
+-0.649823 -0.976708 -0.188926 -0.456246 0.364738 0.0958001 -0.581642 0.271749
+-0.367256 -0.110651 0.723649 0.948672 0.824979 0.173978 -0.804377 -0.529976
+0.700675 -0.839077 0.211385 0.781518 -0.98416 0.0010383 -0.735942 -0.820944
+-0.21899 -0.698457 0.0323291 0.358671 -0.237131 0.766883 0.722428 -0.615278
+0.925019 0.477009 0.0929154 -0.963981 -0.770475 -0.66034 -0.412604 -0.989395
+0.188951 -0.899547 0.659488 0.000167491 0.241788 -0.833199 0.890115 -0.51071
+-0.567007 0.171081 -0.313735 0.263977 -0.452386 0.058921 0.245298 -0.681204
+-0.706525 0.541778 0.337212 0.527072 0.25638 -0.199825 0.935215 -0.303665
+-0.671715 0.928582 0.382235 -0.747164 -0.70352 -0.833457 0.486566 -0.880991
+0.00239932 -0.303997 -0.580476 0.159374 -0.766379 0.662052 -0.406566 0.247808
+0.72319 0.154886 -0.681147 -0.136651 -0.658755 0.119839 -0.396113 0.341413
+-0.846152 -0.765456 0.305871 0.317983 -0.416314 -0.0165978 0.579588 0.628929
+0.214003 0.0627324 -0.375235 0.0384183 -0.543795 -0.525115 -0.335451 -0.343502
+0.373437 -0.99614 -0.29953 0.819305 -0.350093 0.623615 -0.298837 0.593464
+-0.528475 0.623557 -0.0741295 0.437527 -0.145454 -0.915441 0.63253 -0.803763
+-0.106869 -0.0737426 -0.446327 0.475409 0.626033 -0.963294 -0.299805 0.942468
+0.892964 0.170889 0.311687 0.716786 -0.39085 -0.986859 0.484436 0.995274
+-0.706496 -0.537461 -0.762442 -0.904428 -0.433185 0.564872 0.470109 0.123817
+-0.262784 0.902148 0.774335 0.663736 -0.624472 -0.0984558 -0.337614 -0.720203
+-0.866238 -0.375162 -0.278362 -0.900335 0.530593 -0.519309 0.947509 -0.864766
+0.541422 -0.517111 0.969367 -0.00489309 -0.999942 -0.813808 -0.232481 -0.546827
+0.72111 0.500202 0.225871 0.601391 -0.530886 0.0662849 0.25603 0.0269803
+-0.55402 -0.733515 -0.474599 0.293354 -0.830255 -0.632472 0.591209 -0.958008
+0.190085 -0.953903 -0.102418 -0.31927 -0.808489 -0.0164479 0.965921 0.859736
+-0.045593 0.0761261 0.815027 0.0726849 -0.739992 -0.324571 0.37797 0.766814
+-0.53319 0.870626 0.882681 0.876645 0.335389 -0.91757 -0.645386 0.695575
+-0.654247 0.936453 0.3427 -0.897004 -0.631964 0.645085 -0.722994 0.782582
+-0.596276 -0.969859 -0.379385 0.862274 -0.162028 -0.78108 -0.779214 0.657125
+-0.389549 -0.139342 -0.226078 -0.629354 0.658266 0.749323 -0.712046 -0.463735
+-0.515695 -0.590335 -0.260976 0.836529 -0.43391 0.992155 -0.372528 0.256853
+-0.728294 -0.545911 -0.932695 0.607095 0.252943 0.679097 0.357944 -0.544717
+-0.522439 -0.597402 0.789478 0.216115 0.308621 0.906395 -0.446619 0.311532
+-0.354402 0.859965 0.73919 0.564627 0.799822 0.0650698 0.796785 0.0643813
+-0.822488 0.356159 0.73162 -0.950163 0.0307983 0.707154 -0.0150776 0.768888
+0.293397 0.470361 0.999707 -0.105452 0.265617 -0.0899393 -0.139308 0.247726
+-0.814213 0.000165209 0.743174 0.723423 -0.495665 -0.569869 0.20464 0.226699
+0.797078 -0.910643 0.638684 0.708226 -0.473388 -0.682395 0.937041 0.962691
+-0.599728 -0.0115274 0.0426607 0.77116 0.0906074 -0.225591 -0.476268 0.435468
+-0.825989 0.96699 0.402459 0.746756 0.0971159 0.960465 0.734328 -0.616388
+0.120195 -0.770287 0.700157 -0.362726 -0.977723 0.801883 0.572893 -0.86369
+-0.640466 0.160692 -0.0868509 0.337732 -0.365243 0.287518 0.00417294 -0.221229
+0.808683 0.9046 -0.714129 -0.142761 -0.885229 -0.491364 0.0646426 0.46698
+-0.639558 0.162556 0.261822 -0.785512 0.621871 -0.173387 0.57077 0.885758
+0.937931 -0.895746 -0.424813 0.396573 0.119719 -0.777125 0.503697 -0.929197
+0.317781 -0.437269 0.905695 -0.233495 0.531483 -0.117484 -0.433652 -0.210996
+0.237316 0.870417 0.499755 0.154555 -0.855437 0.993596 0.606112 -0.484495
+-0.871784 -0.00282462 -0.999517 -0.404143 0.332888 -0.401976 0.917133 -0.062792
+0.984408 0.979356 0.444104 -0.22763 0.780517 -0.335999 0.996501 -0.312278
+-0.959262 0.424283 -0.860627 -0.0694463 -0.733332 0.24356 0.704195 -0.629933
+-0.568364 -0.926862 -0.660816 -0.717476 -0.430908 0.312 0.0532743 0.621865
+-0.604698 -0.195759 -0.528853 -0.0751889 0.634449 0.376064 0.0408941 -0.233978
+0.86435 0.881091 -0.381823 0.415693 0.329333 0.533571 -0.472293 0.0100355
+-0.848382 -0.421601 0.325856 0.0402104 0.0375616 0.160701 -0.0488019 -0.821447
+-0.830876 -0.577031 0.668062 0.244227 0.786971 0.641181 0.185922 0.557849
+-0.222176 0.873644 -0.842672 0.0822688 0.1352 -0.720617 -0.753538 0.351144
+0.33882 -0.69687 0.670628 0.854046 0.0373551 -0.245094 -0.685852 0.465421
+-0.255688 -0.533918 -0.636433 0.782628 -0.908956 0.257956 0.127924 0.176628
+0.346114 -0.825391 -0.798756 -0.673796 0.0464586 -0.564756 -0.649834 -0.93799
+-0.872198 -0.525028 0.655929 -0.33057 0.578602 -0.0980388 0.18996 0.624275
+0.0377116 0.20725 0.534533 0.941527 -0.49673 -0.302692 -0.305545 -0.434091
+-0.892842 0.272028 0.621542 0.880808 0.461609 -0.575953 0.00533898 0.407816
+0.798509 -0.652709 -0.953708 0.363563 -0.6924 -0.506284 -0.854446 -0.900739
+0.42303 0.140742 -0.982719 -0.486268 0.619562 0.242502 -0.691598 -0.82573
+0.281322 0.738703 -0.745971 -0.921568 -0.0965933 -0.458791 -0.0239777 -0.391412
+0.737994 0.506724 0.408581 0.914318 0.944033 0.470169 0.517512 -0.582022
+0.854393 0.638642 0.925928 -0.266903 0.249463 0.348856 -0.373119 -0.272758
+0.359209 -0.00257437 -0.0371977 -0.0566714 -0.104687 -0.927367 -0.878102 0.915497
+-0.980826 -0.831506 -0.392008 0.98813 -0.796466 0.932677 0.751053 -0.268263
+-0.931643 -0.837905 0.246372 0.244269 -0.894743 -0.789657 0.791453 -0.811077
+0.354346 -0.970716 -0.632394 -0.321787 0.00575287 -0.309555 -0.0123187 0.175477
+0.180362 -0.284787 0.777856 0.93745 0.839013 0.184939 0.102242 0.0720602
+0.256497 -0.470638 -0.507036 -0.321465 0.848751 -0.745974 -0.921839 -0.743009
+0.393878 -0.842621 0.0562395 0.922845 0.141543 0.0318582 0.0349252 -0.0904675
+-0.229106 0.696157 0.770312 0.0376088 -0.673544 -0.282075 -0.90807 0.162741
+-0.926558 -0.74316 -0.55728 0.278791 -0.497663 -0.893535 0.3457 -0.395518
+-0.336464 -0.829243 -0.711496 0.136823 -0.599154 0.237323 -0.18359 0.770229
+-0.145921 0.482492 -0.71054 0.987273 0.741452 0.729582 -0.0281977 0.917108
+-0.458362 0.0658424 -0.0279174 0.856926 0.709681 -0.783696 -0.961252 0.688503
+0.973118 0.849728 -0.814271 -0.469361 -0.653283 -0.104521 -0.960699 0.245302
+-0.911346 0.999177 -0.148402 -0.549248 -0.128112 -0.0623094 0.602351 0.0236946
+-0.766632 -0.244277 0.434017 -0.175912 0.530235 0.51945 0.933491 0.795817
+0.135716 0.0875148 -0.117921 -0.964061 -0.884529 -0.444931 -0.113143 -0.49756
+-0.155353 0.381952 -0.549882 0.304886 0.085705 0.409697 0.326658 -0.401568
+0.661057 0.785486 -0.682437 -0.371898 -0.47805 -0.545586 0.349588 0.0399875
+0.283964 0.117143 -0.388108 -0.0946642 0.73372 0.41185 -0.117624 0.269631
+0.665895 -0.170339 -0.367877 -0.134399 -0.338441 -0.0982146 0.128465 -0.30942
+-0.588202 -0.901838 0.206724 0.15348 0.906219 -0.990114 0.668819 -0.942605
+-0.367757 0.180424 -0.472094 0.731779 -0.329447 -0.332298 -0.0121267 0.29385
+-0.739351 -0.68326 -0.789779 0.293027 0.248523 0.574044 0.282377 -0.654182
+-0.327741 0.769444 -0.45172 -0.485067 -0.687509 0.712137 -0.245604 -0.802737
+0.462452 0.287437 -0.862168 -0.0115283 0.180286 -0.0755134 0.00532817 -0.314071
+0.299825 0.304382 0.790399 0.539985 -0.132184 -0.116863 -0.450487 0.177349
+0.46726 -0.497682 -0.919405 -0.136883 -0.239881 0.38042 -0.657034 -0.58277
+0.408087 -0.352302 0.533597 -0.221728 -0.401964 -0.468149 -0.582847 0.0768009
+0.698612 0.482192 -0.863302 -0.848353 -0.637903 0.889848 0.338528 -0.121574
+-0.57544 0.386562 0.196173 -0.395793 -0.658929 -0.0862365 -0.134087 -0.503467
+-0.596217 -0.889683 -0.297276 -0.228813 0.0438439 -0.57411 -0.615104 0.398265
+0.723855 -0.750041 -0.539976 -0.936613 0.355356 0.352291 0.839291 -0.88281
+0.299302 -0.219931 0.0672785 -0.288995 -0.218354 0.800048 0.754672 0.318256
+0.572547 0.260125 0.792013 0.244274 -0.640165 -0.595878 0.403371 -0.188557
+-0.894039 -0.638266 -0.856429 0.24191 -0.296712 0.976669 0.609767 0.573067
+-0.445127 -0.973205 0.388411 0.603933 0.853165 -0.441861 0.0535785 -0.648563
+0.770047 -0.82881 -0.295716 0.465457 0.538209 0.157396 0.730344 0.786522
+-0.275821 -0.913917 0.839515 0.0459649 -0.20751 -0.125001 -0.805479 -0.657282
+-0.851585 0.989703 0.947285 -0.727628 0.831814 0.625855 -0.63615 -0.381488
+-0.0655911 -0.808206 0.600867 0.899066 -0.278109 0.910354 0.473494 0.142634
+0.808929 -0.168982 -0.847232 0.459863 -0.910526 0.656583 -0.285735 -0.404819
+-0.0320648 -0.825178 -0.387763 0.0331624 -0.946075 0.551552 0.328367 -0.520419
+0.664296 0.307382 0.78977 0.998128 -0.784913 -0.623012 -0.855921 -0.38578
+0.417838 -0.0115991 -0.188635 0.546942 0.0187048 -0.513309 0.0977445 0.683181
+-0.654691 -0.707864 -0.655903 -0.27102 0.494584 -0.64251 -0.822701 0.948065
+0.0520526 -0.7392 0.301475 -0.367139 0.0226178 0.3656 0.493187 -0.833477
+0.546452 0.25182 -0.240083 0.663908 0.233792 -0.40176 -0.523707 -0.958207
+0.637881 -0.434266 0.937711 -0.884153 0.967427 -0.2417 0.423966 0.338289
+0.580809 0.251979 -0.627208 -0.799636 0.556872 -0.367169 0.251983 0.792732
+-0.976935 0.0116265 0.982995 -0.792821 -0.951236 -0.669607 -0.580612 0.69541
+-0.477557 -0.462184 -0.940225 -0.358341 -0.908887 0.453559 0.248522 -0.777471
+-0.445277 0.195476 0.00953749 -0.637083 0.666037 -0.318406 -0.510122 0.157887
+-0.233629 0.404874 0.757236 0.73776 0.885794 0.604826 -0.0677713 -0.572471
+0.77151 0.61707 0.415902 0.310543 -0.580839 0.489709 -0.650273 -0.325419
+0.412893 -0.955568 0.956084 0.130488 0.0726098 -0.569455 0.596294 0.839599
+-0.298585 0.246649 0.950922 -0.735803 -0.0357101 -0.0360352 -0.260508 -0.817461
+0.216787 -0.426844 0.107673 -0.515836 0.249557 -0.532994 -0.352223 0.62053
+-0.0782868 -0.00041177 -0.100859 -0.0858553 0.847271 0.689137 0.170866 -0.47497
+0.0473733 0.288673 0.984627 -0.675146 -0.767599 -0.305889 -0.727514 -0.0746797
+0.443565 0.113971 -0.128798 0.689816 0.331141 0.878447 -0.0820185 -0.685195
+0.152155 0.232343 0.620349 0.810755 0.805267 -0.645301 0.371111 0.999969
+0.771033 -0.518711 -0.46167 -0.778356 -0.303337 0.338897 -0.788653 -0.641049
+-0.601934 -0.331875 -0.356332 -0.97196 -0.428272 0.489866 0.815942 -0.0266128
+-0.827429 -0.195289 0.949786 0.0602482 0.614102 -0.629974 -0.88504 -0.797522
+0.092041 0.467493 -0.907994 0.859784 0.514958 0.195214 0.533135 0.443255
+0.373345 -0.834546 -0.990051 0.482633 -0.576983 -0.78488 0.258782 0.143983
+0.0252336 -0.35831 0.267115 0.602956 0.567865 -0.0744821 0.350106 -0.965662
+-0.0995878 -0.0662973 -0.403141 0.363913 0.0576992 -0.778704 -0.0906451 0.132037
+0.901541 0.193029 0.958542 -0.279989 0.748255 0.523988 -0.178916 -0.122212
+0.662571 0.599512 -0.692118 -0.140859 0.943946 0.374829 -0.577019 -0.317454
+-0.569703 -0.421185 0.209724 -0.0272069 -0.825385 -0.299885 -0.702465 -0.841303
+-0.625022 -0.939014 -0.646478 -0.929883 -0.872406 0.240342 0.329466 0.982431
+-0.548367 -0.233095 -0.934782 0.563045 0.458769 0.805903 -0.395638 -0.335692
+0.0298147 0.93917 -0.641635 -0.93952 0.808355 0.0620558 0.272624 0.91682
+0.685732 -0.454605 0.895198 0.535367 -0.195084 0.798437 0.78036 0.0728712
+0.748921 0.613001 -0.586845 -0.368276 0.607438 0.44901 -0.860836 0.0710699
+0.160246 -0.912767 0.793088 -0.0789475 0.86137 -0.646717 -0.418569 -0.504365
+-0.714887 -0.158707 -0.312812 0.0879129 0.150715 0.0164083 -0.488934 0.0938861
+-0.671302 0.831696 0.215217 -0.394584 0.86001 -0.41718 -0.584042 -0.28624
+-0.493184 0.740163 -0.570726 -0.0863252 0.396933 0.379573 0.761653 -0.529462
+-0.0744424 0.903038 -0.587916 -0.666138 -0.602562 0.580486 -0.0215209 0.610203
+-0.0184679 0.767602 -0.617271 -0.70958 -0.401369 0.76296 0.730919 -0.0675959
+0.202507 0.0970708 0.813517 -0.379081 0.500343 -0.891592 -0.947009 -0.130569
+-0.3293 0.0190248 0.130283 0.0215455 0.468149 0.487996 -0.91982 0.263618
+0.166966 0.257769 -0.870823 -0.742854 0.347766 -0.517503 0.0991567 -0.937943
+0.177273 0.654459 -0.12014 0.0798352 0.328079 -0.41541 -0.981877 0.650573
+-0.416929 0.864492 -0.616631 -0.543461 -0.816447 0.627673 0.12846 -0.0171272
+-0.00616636 -0.927528 0.748037 0.627434 -0.763391 -0.43345 -0.631288 0.529012
+0.283554 -0.648569 0.872216 -0.546691 0.576309 0.996444 -0.243198 -0.933623
+-0.930564 0.547018 0.18931 -0.698586 0.151469 -0.842365 0.637498 -0.163121
+-0.00261068 0.704759 0.27449 -0.242241 -0.607262 0.580741 0.245604 0.92185
+0.582213 -0.823424 -0.10619 -0.990174 -0.0735172 -0.909104 0.520764 -0.820255
+0.900447 -0.94827 0.155163 0.417331 0.0114175 -0.00628024 -0.910574 -0.283187
+-0.187358 -0.139705 0.562407 0.292244 0.890497 -0.977713 -0.0115719 -0.0382545
+-0.690194 -0.0973353 -0.155404 0.0832844 0.162616 0.568383 -0.753987 0.435038
+0.291621 -0.5899 0.396798 -0.0742157 0.0331849 0.684662 0.655881 -0.261075
+0.872796 0.850441 0.888413 -0.469705 -0.100169 -0.416602 0.926549 0.101557
+-0.873468 -0.197107 -0.675292 0.49963 0.365601 -0.429868 0.132738 0.0865636
+-0.103572 -0.0652441 0.763867 -0.803298 0.438389 0.0059869 0.961121 0.149466
+0.156736 -0.240026 -0.016764 0.493385 0.197859 0.959152 -0.559036 -0.355299
+-0.129929 -0.100494 -0.324997 -0.932065 -0.439955 -0.908395 -0.815456 -0.0763179
+-0.51843 -0.429505 -0.404266 0.773386 0.669001 0.405253 -0.362474 -0.657479
+-0.326284 0.91793 -0.113967 0.27732 0.0900128 -0.0141997 -0.101568 -0.177652
+0.253364 0.944982 -0.981293 0.681051 0.220457 0.678805 0.117425 0.81758
+0.76245 0.882228 0.588842 -0.0966178 0.0846132 -0.814894 -0.599803 -0.157418
+0.602957 0.776127 0.436864 -0.0315237 -0.380279 -0.577336 -0.687014 -0.40178
+-0.138798 -0.105822 0.841678 -0.0263646 0.640965 -0.921257 -0.787924 0.262715
+-0.332249 0.699275 0.160189 -0.277205 -0.0486838 -0.735237 -0.00192763 0.880213
+-0.0118682 -0.907686 -0.196037 0.14673 -0.583138 0.602316 0.174741 -0.242854
+0.128001 0.0702017 -0.520309 0.950693 0.983046 0.976974 -0.696315 0.339818
+-0.220227 0.959419 -0.447921 0.772382 0.245944 -0.231034 0.781869 0.566132
+-0.739302 0.827347 0.564051 -0.450396 0.131851 -0.627369 0.0814461 0.792095
+-0.707655 0.761645 -0.347376 0.952777 -0.782499 0.000215353 0.130336 -0.123162
+0.200002 -0.651541 0.765025 -0.502356 -0.000344623 -0.349748 -0.700109 -0.847312
+0.636117 -0.129245 0.676774 -0.576404 0.0827873 -0.203879 0.701524 -0.809694
+0.434977 0.179651 -0.290366 -0.0791204 0.263298 0.639721 0.629461 0.670814
+0.00186741 -0.432625 -0.00158293 -0.831541 -0.823676 0.472602 -0.961719 -0.66056
+-0.984705 0.190091 0.565003 -0.884111 -0.559499 0.233506 -0.713269 0.547719
+0.355859 -0.245797 -0.742472 -0.677628 -0.970212 0.149376 -0.392426 0.544144
+-0.147631 0.907208 0.391922 -0.312962 0.963317 0.973541 0.291944 0.448386
+0.29835 -0.982196 0.707691 0.449114 0.460402 -0.526763 -0.993272 -0.782804
+0.304143 0.122948 0.493004 -0.717811 -0.37569 0.844869 -0.788104 0.617283
+0.743039 0.955465 0.235476 0.707989 -0.066996 0.420538 -0.721263 0.825603
+0.0494904 0.559394 -0.670968 -0.191983 -0.0920988 0.22054 0.580336 0.547939
+-0.188052 0.239844 0.27005 -0.188772 0.592379 -0.193501 0.501971 0.892349
+0.859846 0.604318 0.715631 -0.0350142 -0.386098 -0.253564 0.626177 -0.227681
+-0.867934 -0.332436 0.279554 -0.389763 0.528261 0.264091 0.292911 -0.265678
+0.566285 -0.180326 0.809413 0.526826 0.941549 0.383176 -0.515368 -0.477709
+0.965153 0.397489 0.82954 -0.696508 -0.64787 -0.324891 0.614777 -0.965558
+-0.0796109 -0.790563 -0.845366 -0.650756 -0.956735 -0.616139 0.246225 0.633251
+-0.0871428 -0.472832 -0.105659 0.22979 0.375183 0.486171 0.119254 0.872361
+0.681773 -0.0360835 0.262123 0.0616381 0.530013 -0.916977 -0.0935366 0.980232
+0.132328 -0.570867 -0.10049 -0.327286 0.515566 -0.46658 -0.539151 -0.91762
+0.296509 -0.4306 0.212748 -0.819735 0.863 0.396073 -0.804393 0.938419
+0.301962 0.126031 -0.422601 -0.538843 -0.730788 -0.672684 0.357379 0.19197
+0.0436512 0.947901 -0.200379 0.294212 -0.263388 0.889449 -0.158338 0.742788
+-0.857164 -0.794924 0.960183 0.462791 0.909592 0.621129 -0.979916 -0.483498
+-0.950737 0.509248 -0.415408 0.339305 0.0395366 0.326865 -0.0173424 -0.184521
+0.926779 -0.695107 0.178422 -0.0335427 0.558427 0.873586 -0.798514 0.59477
+0.0116028 -0.639165 -0.99498 -0.817078 -0.75414 0.997985 -0.149242 -0.757341
+-0.854019 -0.0510839 0.0171485 -0.499207 0.312593 0.354565 -0.726875 -0.509954
+-0.0973036 -0.97082 0.686793 -0.523589 -0.0157376 0.782279 0.692317 0.0632247
+0.778373 0.749199 -0.288588 -0.125306 0.483981 0.692396 0.0789724 0.616047
+0.563043 -0.109978 0.236749 -0.460316 -0.0637256 -0.939167 -0.218829 0.671097
+0.96692 0.293831 -0.285168 -0.125799 0.760805 0.894275 0.417545 -0.673229
+0.768438 0.955127 0.752221 0.554419 0.586243 -0.299753 0.0538873 0.857052
+-0.251428 -0.178101 0.598394 -0.783113 -0.312652 0.751426 -0.327546 -0.417581
+-0.373495 0.580349 -0.671673 0.191876 -0.524553 0.480578 -0.697009 0.121584
+0.940414 -0.420872 -0.399819 -0.734092 0.228542 0.438589 -0.656298 -0.94457
+-0.215194 -0.255169 0.305846 -0.796909 0.983606 -0.502691 0.736112 -0.0623938
+0.40672 -0.387792 0.688816 0.498798 -0.450368 0.732224 -0.592412 0.104975
+-0.81188 0.208479 0.16719 -0.649639 0.912674 0.644033 0.714323 -0.332735
+-0.58738 0.069026 0.281932 -0.93151 0.11176 -0.847874 -0.907921 -0.618208
+-0.0166421 0.32995 -0.413312 0.987446 -0.663446 -0.848917 -0.660166 0.918778
+-0.472898 -0.619355 0.081946 0.977692 0.424855 -0.698976 -0.247465 -0.414872
+-0.709575 0.437799 0.819009 -0.603688 0.911107 -0.0593075 0.6424 -0.841602
+-0.301987 0.0139387 0.703714 -0.142194 0.346217 0.886637 0.351668 0.0953612
+-0.798206 0.515067 0.350112 -0.118378 0.627946 -0.196216 -0.119848 -0.666486
+-0.0960841 -0.0905893 -0.401865 0.367503 0.522487 0.172046 0.405863 -0.703013
+0.681311 0.251237 0.726527 -0.788047 0.608837 0.87006 0.19911 -0.756488
+-0.367448 0.847017 -0.483341 -0.934484 0.484957 0.310926 -0.141077 0.799676
+0.129294 -0.939129 0.434043 0.928614 -0.784234 -0.155421 0.56559 0.42488
+-0.81969 -0.365195 -0.0990222 -0.659092 0.935576 0.997549 0.261516 0.479096
+-0.30282 0.597882 -0.0400856 -0.359952 0.65592 0.0900222 0.526692 0.387967
+-0.106283 0.985081 0.479074 0.825846 0.485159 0.432059 0.825164 0.975166
+-0.629375 -0.271564 -0.865987 -0.513429 -0.363984 -0.760674 -0.725854 -0.883243
+-0.724934 -0.00115233 -0.800608 -0.585264 -0.854157 -0.767145 -0.503937 -0.859145
+-0.437062 0.218128 0.339113 0.777923 -0.129217 -0.45072 -0.694891 0.195081
+0.253737 -0.0208482 -0.0750381 -0.924029 0.996339 0.482457 -0.625736 -0.844848
+-0.536997 -0.122948 -0.952199 0.298501 -0.572839 0.803669 0.846795 -0.204753
+-0.814245 0.856752 -0.854549 0.0121502 -0.244473 -0.477249 -0.926179 0.38471
+-0.622075 0.950099 -0.234329 -0.635224 0.689427 -0.242433 0.887506 -0.363187
+-0.268139 -0.997729 -0.0682811 0.697112 0.717812 0.817084 0.821962 0.354532
+0.281839 0.122168 -0.872511 -0.0787717 -0.433926 -0.297339 0.234911 -0.700059
+-0.442467 0.964492 -0.434611 0.75884 -0.90507 -0.0809998 -0.123331 -0.486963
+0.629516 -0.671634 -0.667595 -0.680669 0.00628531 -0.0160714 -0.0682033 0.404433
+0.493993 -0.5621 -0.300429 -0.541774 -0.609693 0.477616 -0.611964 0.777714
+-0.820392 -0.194439 -0.843868 0.548159 0.933125 0.0682794 0.90077 -0.912988
+0.346994 0.460742 0.0711625 0.143112 -0.322344 0.706363 0.581826 0.85121
+-0.340411 0.13449 -0.340575 -0.846684 -0.478047 0.177675 -0.409092 0.334076
+-0.944282 -0.814166 -0.83139 0.548307 0.512799 0.51377 -0.977379 -0.256738
+0.327306 0.449161 -0.589384 -0.377997 -0.980277 -0.317601 -0.825479 0.668345
+0.476947 -0.231503 -0.230226 0.291133 0.867569 -0.483659 -0.699588 -0.866898
+-0.417091 0.0796027 0.74786 0.663857 0.495741 0.14875 0.834061 -0.406024
+0.473261 0.140245 -0.84201 -0.513092 0.173684 -0.171047 -0.270411 -0.740897
+-0.279202 0.242499 -0.0531898 0.01875 -0.368387 0.11644 -0.22019 -0.844834
+-0.183708 -0.737165 0.850556 -0.345713 0.653315 0.773672 0.645283 0.926115
+0.505334 0.348271 0.312431 -0.0445571 -0.329575 -0.271828 0.0056622 -0.666408
+-0.649974 -0.683124 -0.000972694 0.317819 0.0950826 -0.979677 -0.816691 -0.619386
+0.679926 0.0729124 -0.823981 0.2991 0.448544 0.0401972 -0.756171 0.371164
+-0.840083 0.959263 -0.830681 -0.598575 0.0837273 -0.733904 -0.79105 0.484256
+0.412114 -0.407305 0.943331 0.608559 -0.323736 -0.0952373 -0.456893 0.464353
+-0.670586 -0.865889 -0.40852 -0.0711989 -0.0330043 0.374488 -0.747553 -0.00226158
+0.751611 0.0783874 0.80301 0.184682 -0.327936 0.246717 -0.910611 0.264174
+0.514412 -0.473595 0.6392 0.668385 0.84815 0.827681 0.222833 -0.37884
+-0.180982 -0.361258 0.407307 0.744511 0.469552 -0.544188 -0.780816 0.833719
+-0.665318 0.209095 0.0774345 -0.130712 -0.763488 0.624944 -0.350726 0.0769057
+0.703306 0.147031 -0.108821 0.0217217 -0.441957 -0.235285 -0.946216 0.0952471
+0.468648 0.922992 0.32141 0.611106 -0.828832 0.329353 0.0698133 -0.0894808
+-0.682444 0.155833 -0.76055 -0.926175 0.552841 -0.127039 0.215525 -0.129632
+0.928951 -0.145428 -0.983338 -0.242727 0.570928 0.484034 -0.372604 -0.0987295
+-0.373366 -0.583479 0.00910048 -0.678305 0.168452 0.754081 0.646345 -0.499036
+-0.17539 0.263483 0.988656 0.322723 -0.732819 -0.532137 0.0227312 -0.635047
+0.525417 0.0649438 0.6975 0.0404561 -0.544791 0.620582 -0.709808 -0.477295
+-0.334942 0.324497 0.847588 0.662796 -0.132046 -0.482696 0.991537 0.923082
+-0.20068 0.74449 -0.489799 0.63289 -0.866579 -0.282239 -0.625266 0.843382
+-0.135319 0.873575 -0.561836 -0.576817 0.0431551 -0.848525 -0.335841 0.774156
+-0.649615 0.740492 -0.645749 -0.361132 -0.205354 -0.675642 0.931562 -0.533698
+0.192217 0.0832572 0.543377 0.408635 -0.943419 -0.646391 -0.967457 -0.481755
+0.281202 0.868417 -0.114176 0.671657 -0.153338 0.73452 0.574116 -0.955257
+0.557163 -0.223188 0.962339 0.452624 0.613705 0.900581 0.645901 0.329851
+-0.598393 -0.487692 -0.602136 -0.472586 0.881521 -0.883675 0.537421 0.0677523
+0.263266 0.203235 -0.829731 0.189255 0.102929 -0.79814 0.254124 0.612319
+-0.0713455 -0.375519 0.419743 -0.225415 0.964394 0.109494 -0.709433 -0.331222
+0.843804 -0.183654 -0.341667 0.537221 0.250964 0.701849 0.730312 0.0704345
+0.284205 -0.673898 -0.298678 -0.468715 -0.997889 0.732829 -0.825887 -0.94121
+0.904557 -0.0467022 0.475033 0.270049 -0.736836 0.470416 0.0970923 -0.598756
+-0.424076 0.136916 0.524596 0.374663 0.203456 -0.681284 0.0263966 -0.699673
+0.0130246 -0.0532326 -0.0615701 -0.339619 -0.852729 -0.0357394 -0.83475 -0.89354
+0.987203 -0.0959013 0.0851994 -0.724039 -0.26461 -0.682084 -0.47515 -0.177745
+-0.877482 -0.537615 0.248853 0.0758161 0.28464 -0.359021 0.713614 -0.549527
+-0.336066 0.723184 0.424637 -0.609074 -0.0372588 0.694688 0.161025 0.00549367
+0.450152 0.566343 0.0599369 0.60323 0.331496 0.156181 0.228176 0.197368
+0.584285 0.30046 0.66568 0.818899 0.0788251 0.0212786 -0.352632 -0.489074
+0.479954 -0.201059 0.474697 0.74284 -0.143695 -0.829963 0.326414 -0.832921
+0.988085 -0.278915 0.605341 -0.152305 0.78077 0.881069 -0.818724 0.474738
+-0.436552 0.712162 -0.0635374 0.244215 -0.571331 0.204936 -0.111836 -0.0682449
+-0.0709972 0.574723 -0.909965 0.335705 0.269968 0.465588 -0.918693 0.091444
+0.98582 -0.0754521 -0.547262 -0.380355 -0.0867791 -0.0747597 -0.0866743 0.42908
+0.419141 0.100784 -0.917742 -0.638208 0.971851 0.0873342 0.508788 0.511826
+0.254514 -0.379363 0.344608 -0.253227 -0.126856 0.211372 -0.760917 -0.0370611
+0.461313 0.0262896 0.634298 0.447411 -0.731852 0.734685 -0.349677 -0.158824
+0.334537 -0.180378 -0.0369194 0.256403 0.0446841 -0.493594 0.54217 0.294292
+-0.0925171 -0.180654 0.701996 -0.634091 0.173207 0.15828 0.0562676 0.831866
+0.878095 0.981166 0.563838 -0.527609 -0.891458 0.55635 -0.369676 -0.816483
+-0.505458 0.434734 0.837874 -0.634362 -0.295461 -0.310891 -0.270371 0.78806
+0.0550179 -0.2884 -0.946651 0.276765 0.765948 0.803761 0.987376 0.339298
+0.363058 -0.200504 0.269844 -0.846002 0.821406 -0.899048 0.452818 -0.965904
+0.240888 -0.723617 0.850907 0.77804 0.416406 -0.881811 0.475796 -0.706006
+0.949923 0.703903 -0.577528 0.484688 -0.151916 -0.614139 0.278253 0.750611
+-0.562183 -0.840888 0.201305 -0.863502 -0.841988 0.963908 0.553503 -0.265581
+0.556983 0.914997 0.175021 0.676986 -0.515886 -0.708668 -0.0416682 -0.240647
+-0.470628 0.0114494 0.556913 -0.473869 -0.647865 -0.857761 -0.131074 -0.5774
+0.100571 0.572337 -0.86835 -0.772119 -0.895905 0.185833 0.820328 0.50272
+-0.145288 -0.879785 0.735591 0.143136 0.183041 -0.848571 0.770955 0.895035
+0.860503 0.638752 -0.923975 -0.776266 -0.0339876 0.392074 -0.409834 0.904356
+0.665608 -0.377151 0.539506 -0.885743 0.587655 -0.247009 0.929327 0.41128
+-0.333 0.693968 -0.200711 0.825734 -0.709479 -0.580446 0.0255974 0.0384008
+0.131076 0.347609 -0.372302 -0.57721 0.115747 -0.296598 -0.683664 0.3911
+-0.764893 0.147385 0.886291 -0.185818 -0.662009 -0.772474 0.27857 0.249265
+0.801509 0.807046 0.367588 -0.854962 0.493405 -0.290518 -0.641011 -0.775767
+0.286831 -0.691024 -0.444923 -0.0338499 0.339135 0.0460713 -0.329586 0.76591
+0.802283 0.0193814 -0.789017 0.473164 0.0212489 -0.635791 0.6961 -0.596351
+-0.596642 -0.998232 0.0136001 -0.276802 0.915992 0.691271 -0.300357 0.320925
+0.637074 -0.0804191 0.151036 -0.351331 0.542885 -0.289594 -0.821636 0.743944
+0.578408 0.0780374 -0.281724 -0.544973 -0.716897 0.932581 -0.476661 0.019135
+-0.380527 -0.443295 -0.546443 -0.0261096 -0.533649 -0.386573 -0.693799 -0.478674
+-0.046097 0.13709 -0.241074 -0.312128 -0.172706 0.414745 0.677841 -0.971149
+0.363223 0.655025 0.273508 -0.728881 0.288561 -0.417987 0.216158 0.297134
+-0.0229396 0.274697 -0.572701 -0.00854633 -0.891319 0.497741 0.707254 -0.0715516
+-0.166197 -0.175614 -0.382295 0.221078 0.31008 -0.40528 0.555547 0.206632
+0.0926327 -0.897087 -0.537789 0.423398 0.615531 -0.383331 0.485904 0.520743
+-0.992939 -0.571718 -0.43316 -0.714167 0.849937 0.646327 0.94783 -0.198636
+-0.174774 0.806576 -0.0249607 0.65846 -0.477966 0.209632 -0.397504 0.388044
+-0.558192 -0.478565 -0.071865 -0.788793 0.33193 -0.259333 -0.32999 0.807504
+0.407392 -0.293065 -0.620214 -0.342446 0.655084 -0.709866 0.276465 0.472418
+-0.742165 0.464929 -0.735399 0.827727 0.501501 -0.745092 0.151738 0.895937
+0.728639 -0.673592 0.805636 0.407921 -0.27646 -0.595708 0.786234 0.277305
+0.965162 -0.299604 0.0224402 -0.736399 0.99229 0.403263 -0.672184 -0.195072
+0.732057 0.242696 -0.842716 -0.981741 0.910077 0.37308 0.189254 -0.711949
+-0.112862 0.508801 -0.784562 -0.260952 -0.141216 -0.884663 0.659708 -0.645477
+0.137565 0.961694 -0.402307 -0.237631 0.879642 0.818971 -0.934519 -0.156967
+-0.369574 -0.448501 -0.0253348 -0.156766 -0.774773 -0.315431 0.0272124 0.383744
+-0.265289 0.0890106 -0.341694 0.749724 0.691768 0.210621 -0.946144 0.692789
+-0.366599 0.272157 -0.355304 -0.198237 0.896213 0.627534 0.0261838 -0.141295
+0.45492 0.302257 -0.0468647 0.649361 0.158008 0.117297 0.282796 0.953413
+-0.159449 -0.296339 -0.0335203 -0.523948 -0.872181 0.88031 -0.285115 -0.0267583
+0.572534 -0.0236469 0.274608 -0.931378 -0.0453279 -0.712016 -0.380912 -0.424716
+-0.934625 -0.456438 -0.661584 -0.116224 0.977467 0.0170871 -0.115195 -0.792868
+0.0637042 0.0229216 -0.00697457 -0.0529792 0.964685 0.231166 0.229974 0.3553
+0.789391 0.0625273 0.0602473 0.244722 0.645841 0.17548 -0.689109 -0.244772
+-0.690024 -0.095846 0.900466 -0.208639 -0.969796 -0.227784 0.108467 0.0271702
+-0.15074 -0.833923 0.128248 0.430724 0.482692 -0.969463 -0.632649 -0.145399
+-0.37713 0.0774293 -0.236528 0.922563 -0.81271 0.299678 -0.932778 0.492247
+0.188545 -0.529713 0.624936 -0.469141 0.987246 0.431504 0.854037 -0.762246
+-0.0552025 0.372414 0.869929 0.159012 -0.687834 -0.139634 -0.39739 -0.498658
+0.578699 0.910161 -0.154866 0.769141 -0.659524 -0.891779 -0.353737 0.622878
+0.901131 -0.957311 0.384053 -0.244528 -0.698428 0.14552 0.451192 0.547946
+-0.560394 0.785912 -0.671458 0.637162 -0.608589 -0.109387 -0.0562739 0.749011
+-0.235035 0.975024 -0.720015 0.423625 -0.194715 -0.844956 0.904767 0.334961
+-0.250385 0.278003 -0.960428 -0.560063 0.459592 0.549588 -0.587277 -0.317793
+-0.672238 -0.0193841 -0.609921 -0.743995 0.347307 -0.950875 0.304479 -0.0682391
+-0.738912 0.871768 -0.80597 0.943043 0.584323 0.184483 -0.823518 -0.450663
+-0.299693 0.658124 -0.0920184 -0.517681 -0.167155 -0.885931 -0.252782 -0.859972
+0.301004 -0.715509 -0.878621 0.343585 -0.305201 0.300754 -0.0804703 0.88171
+0.146689 -0.0406856 0.502733 -0.728415 0.667357 -0.681166 0.635528 -0.569843
+-0.605522 -0.389553 0.97596 -0.544883 -0.499722 -0.739967 0.936435 0.569182
+0.115188 -0.933271 0.618308 0.771824 -0.273154 0.973603 -0.548468 -0.377346
+0.289198 0.400707 0.341007 0.242693 0.629546 -0.841992 -0.902661 -0.680752
+0.790193 0.450719 -0.676837 -0.998801 -0.953709 -0.514285 -0.608983 -0.063873
+-0.845608 0.13869 0.308817 0.573333 -0.111053 0.850081 -0.130535 -0.626792
+0.557385 -0.668952 -0.517374 -0.837176 -0.0946193 -0.342095 0.329456 -0.725253
+-0.996383 0.298292 0.613085 0.279964 -0.341768 -0.0500832 0.836943 -0.382539
+-0.257443 -0.334236 0.341544 -0.762126 0.830931 -0.755055 -0.629344 -0.366851
+-0.00481919 0.954593 -0.807561 -0.415451 0.182417 -0.154364 -0.364854 0.835567
+-0.237453 0.829338 -0.0698139 0.596618 -0.349329 0.796922 -0.890895 0.178854
+-0.64816 0.967274 0.945728 0.734379 -0.994984 -0.931034 -0.267934 -0.924349
+0.473281 0.542363 -0.339317 -0.232638 0.56468 0.349527 -0.929153 0.944001
+-0.289266 0.588317 -0.0176391 0.735485 -0.997942 -0.885337 0.20366 0.112654
+-0.558884 0.940195 -0.889159 -0.673324 -0.995184 0.0471987 0.185648 0.949386
+0.196061 -0.930484 0.00639625 0.637149 -0.307618 0.998405 -0.0294353 -0.594105
+0.0552998 -0.11803 0.382521 0.119049 -0.0321779 0.0782131 -0.412258 -0.704946
+-0.76376 0.628232 0.832789 -0.0694965 0.126545 0.0439213 0.607367 0.335537
+-0.579641 -0.740907 -0.351012 0.88042 0.633933 -0.241521 -0.625853 0.625727
+0.560657 -0.526308 -0.829512 -0.802544 -0.670859 0.1376 -0.991083 -0.257036
+0.3691 0.714599 0.399681 -0.317525 0.271002 0.575944 -0.506426 0.00972196
+-0.0498428 0.299066 0.767105 0.383995 -0.0707558 -0.928393 0.797721 0.546903
+0.166821 -0.883638 -0.596293 0.511645 0.46263 -0.248875 0.885323 0.692066
+-0.466133 -0.432107 -0.921983 -0.0902192 -0.0991836 -0.391786 -0.227445 0.170829
+-0.19356 0.0902635 0.688871 0.763108 0.416828 -0.274712 -0.225387 -0.250981
+0.958279 -0.0519003 -0.323055 -0.685343 0.315093 -0.0760968 -0.136304 0.711662
+-0.368057 0.920782 -0.149644 0.991639 0.72477 0.312863 -0.493577 0.588193
+0.492952 0.505702 -0.689534 -0.634408 -0.794865 -0.562177 0.25718 0.61149
+-0.852158 0.425178 0.201842 -0.356184 -0.717887 -0.778701 -0.220887 -0.820186
+-0.0936795 -0.0265722 -0.297521 -0.983691 0.949468 0.688647 0.524366 -0.671308
+0.68033 -0.645956 -0.580308 -0.0508978 0.644663 0.504026 0.446264 -0.672277
+-0.594764 0.318113 -0.918364 0.932367 0.309752 0.428791 0.543422 -0.15454
+0.623329 -0.275694 -0.235256 0.276813 -0.679186 -0.694129 0.315376 0.85814
+0.265107 -0.403794 0.154762 0.599364 -0.183366 -0.486222 -0.603675 -0.967964
+0.00159266 0.345222 -0.71807 -0.691834 0.112445 0.421346 0.762269 -0.165408
+-0.583827 0.307018 -0.406981 -0.0445757 -0.0681729 0.596643 0.159363 0.441615
+-0.255382 0.406932 0.653552 -0.677342 -0.735519 0.896659 -0.541693 0.590323
+0.816429 0.683525 0.663796 -0.105868 0.335355 0.144513 0.6088 -0.71196
+0.905091 0.461875 0.748461 -0.631851 -0.22203 0.835632 0.701367 0.494544
+0.703343 0.960029 0.0364494 0.753041 -0.460295 -0.320132 -0.0610723 -0.990114
+0.841779 -0.607848 0.564599 0.626047 -0.274692 -0.474232 0.548603 0.574891
+-0.915994 0.245424 -0.980944 -0.0317871 -0.0595176 0.965232 -0.190413 0.309468
+0.265267 0.328185 -0.755614 0.0244079 0.859598 0.599836 0.182496 0.0869868
+0.678263 0.64813 -0.140393 0.965751 0.266443 0.896842 0.487152 0.366294
+-0.374064 -0.425941 0.364628 0.0217471 -0.819208 0.996813 -0.0982184 0.752044
+0.852448 0.954876 0.831177 -0.557424 -0.570651 0.0823429 0.194555 0.547086
+-0.00831721 0.374227 -0.169066 -0.393005 0.881835 -0.172907 -0.292724 -0.637595
+0.353033 -0.128384 0.017136 -0.967027 -0.0267362 -0.784259 0.738713 -0.479217
+0.781405 -0.0243668 0.0528664 -0.42977 0.309843 -0.981927 -0.458865 -0.373984
+0.686457 -0.859277 -0.4438 -0.319241 0.925002 -0.757436 0.371107 0.785337
+0.0687281 -0.227704 -0.716049 0.618614 0.809186 -0.323491 0.21301 0.558899
+-0.473516 -0.260677 -0.653484 -0.337515 -0.471802 -0.246028 -0.657803 -0.641357
+0.257195 0.333542 0.144983 0.906458 -0.221926 -0.179038 0.292535 -0.238652
+-0.444515 -0.597292 -0.140636 -0.138139 0.457578 -0.369601 -0.993449 0.59436
+0.331135 0.318457 -0.149608 0.906395 -0.566347 -0.603843 -0.157088 -0.745638
+0.854311 0.156158 -0.0937663 -0.177936 -0.331773 0.806838 0.0753236 0.48724
+0.734952 -0.803158 -0.789472 0.758886 0.667306 -0.658141 -0.453839 0.543691
+-0.0331302 0.673922 -0.0424407 -0.134746 0.980874 0.822616 -0.805295 -0.469583
+-0.241237 0.870376 0.537135 -0.257666 0.615657 0.718748 0.268031 0.0668715
+-0.397724 -0.830642 0.091248 -0.457051 0.802427 0.700776 0.65742 0.198644
+-0.0240565 0.027776 -0.976066 0.175095 0.00973869 -0.367777 0.571263 -0.210909
+-0.636901 0.827491 0.550051 0.183547 -0.585769 -0.370358 0.166339 -0.330917
+0.565224 -0.939577 -0.458682 0.9171 0.467549 -0.759357 -0.183062 -0.284542
+0.363913 -0.886314 -0.0413776 -0.351271 0.869881 -0.231896 -0.0871829 0.615437
+0.724921 0.342138 -0.891776 0.419366 -0.258134 -0.000122475 -0.329935 0.225855
+-0.0432628 -0.216738 0.848847 0.956695 0.363199 0.704409 -0.0599769 0.239999
+0.583261 0.411418 0.166635 -0.518895 0.240378 0.225784 -0.494503 -0.403743
+-0.150441 -0.474896 0.223493 0.588753 -0.737874 0.347776 -0.0871865 0.548901
+0.615756 0.829829 -0.939853 0.172147 -0.433539 -0.840024 -0.892388 -0.501087
+-0.203193 0.535319 -0.308958 0.587202 0.416361 -0.758153 -0.00744435 0.91033
+0.340677 -0.39525 -0.648123 -0.573656 0.610198 0.517564 0.154642 0.596717
+0.367509 0.610028 0.547478 0.925487 -0.637296 0.456543 0.65985 0.065585
+0.681616 0.260005 0.557239 0.923106 0.262336 -0.720056 0.164285 -0.620676
+-0.359834 -0.882962 -0.897786 0.429535 -0.702074 -0.766166 0.964263 -0.233261
+-0.237624 -0.790538 0.582138 -0.83352 -0.288147 -0.133838 -0.774226 -0.786283
+-0.748984 0.428917 0.231277 0.0558497 0.557488 0.154205 0.987467 -0.168732
+-0.348904 0.121741 0.887333 0.116473 0.335068 -0.607775 -0.0431827 0.970477
+-0.242826 -0.85206 0.794075 -0.587371 0.440513 -0.825878 0.695418 -0.755786
+-0.810785 -0.21277 -0.443549 0.435317 -0.278752 -0.532933 -0.793485 -0.699513
+0.122329 0.104611 -0.42504 0.606581 -0.444402 -0.435393 0.267759 -0.92598
+-0.274437 -0.920847 -0.972989 0.363913 0.83342 0.69625 -0.856296 -0.124536
+0.148277 -0.249354 0.692935 -0.133297 0.157911 -0.999667 -0.0986783 0.154615
+0.398736 0.531996 0.865322 -0.640611 -0.960076 0.131621 -0.0102551 0.392264
+0.0295367 -0.352277 0.0305908 -0.0388276 0.735082 0.0192332 0.643458 0.853862
+0.763109 0.93205 -0.576725 -0.184735 0.0222924 -0.960971 -0.630598 0.09047
+-0.602926 -0.465131 0.58007 -0.231048 0.32844 -0.408513 -0.0611884 -0.19347
+-0.565888 -0.406195 -0.50918 0.930646 0.116224 -0.284601 -0.939067 0.0921216
+0.381663 0.359147 -0.79389 0.915396 0.525897 0.553779 0.294566 -0.559796
+-0.955401 0.773148 -0.030864 0.47044 -0.485715 0.577058 0.501647 0.148485
+0.649985 0.187823 0.257612 0.234403 0.562823 -0.232794 0.466006 0.866358
+-0.967552 0.698507 0.973176 0.713228 -0.50343 -0.465678 0.565198 0.240488
+0.731744 0.860012 0.285087 -0.774288 -0.31705 0.157733 0.734589 -0.548765
+-0.575229 -0.389898 0.958725 0.580675 -0.549094 -0.881739 0.158066 0.504872
+0.248021 -0.711627 0.256419 0.982309 -0.819137 0.701679 -0.788117 -0.655522
+-0.977658 0.996174 0.222797 0.698182 -0.796879 -0.217397 -0.152265 0.00811935
+0.734854 -0.230751 -0.738565 -0.416549 0.148439 -0.734261 -0.0874713 0.197338
+0.431863 -0.617537 -0.369529 -0.152348 -0.547801 -0.920963 -0.0698932 0.115991
+0.863838 0.467625 -0.590202 0.731417 -0.111158 -0.0108276 -0.141117 0.388947
+-0.460448 -0.00358 -0.431949 0.448622 0.120444 0.281721 0.27916 -0.48844
+0.748822 0.72906 -0.814608 0.720227 -0.620837 -0.933228 0.592673 -0.715689
+-0.127509 -0.880016 0.23264 0.576413 -0.124992 0.581517 -0.119071 0.100669
+-0.754226 -0.130812 -0.83735 -0.467967 0.472236 0.277411 -0.604429 -0.495482
+0.468701 0.67957 -0.183306 -0.288385 0.536939 0.455635 -0.101417 0.480532
+0.131223 0.739641 -0.75708 0.521296 -0.74665 0.681778 -0.0432743 0.957592
+0.984619 -0.793028 -0.492116 -0.101056 -0.660434 0.716401 0.479151 0.711206
+-0.836175 0.751225 0.772158 -0.164186 -0.88874 0.507996 0.704264 0.600089
+0.0560691 -0.376625 -0.548074 0.299412 -0.934393 0.514745 0.499281 -0.904859
+-0.203049 -0.0873434 -0.917847 -0.78063 0.83491 0.464976 -0.579076 -0.659313
+-0.921206 0.566957 -0.314978 -0.765169 0.190357 -0.250332 -0.96709 -0.584996
+-0.905697 0.862693 -0.534835 -0.184377 0.797527 -0.0554951 0.484088 -0.35793
+0.00261279 0.478205 0.0564249 -0.543993 -0.40644 0.963891 0.699088 0.157682
+0.140747 0.236231 -0.240204 -0.897283 -0.725133 0.37085 0.375177 -0.690336
+-0.393322 0.628132 0.435174 0.309909 0.924293 -0.585999 -0.665178 -0.173297
+-0.741262 0.286904 0.466634 -0.11632 -0.332832 -0.298046 -0.129136 0.201002
+0.576918 -0.756116 -0.444226 0.219374 -0.644529 0.592023 -0.0436092 0.0751134
+-0.17499 0.0570784 -0.362637 -0.044791 0.137197 0.0987175 0.565834 0.843653
+0.234925 -0.852282 -0.420832 0.0505005 -0.693224 -0.355616 -0.286931 -0.786463
+0.225882 0.771209 -0.398083 -0.846683 0.86721 -0.242219 -0.784639 -0.0026907
+-0.293549 0.6105 -0.320505 -0.411405 0.724511 0.912 -0.00921325 -0.921633
+-0.52302 0.802085 -0.742938 -0.0560601 0.751242 -0.82785 0.432593 -0.969704
+-0.844137 0.394251 0.895536 -0.465464 0.00182795 0.411128 -0.890464 0.825167
+0.0722815 0.923014 -0.217788 0.731359 0.919544 -0.400096 -0.801688 0.679209
+-0.753574 -0.448565 -0.779133 -0.310703 0.681793 0.376105 -0.00229828 0.886417
+-0.0785138 -0.174144 0.364852 -0.724653 -0.00245858 -0.110276 -0.14491 0.901792
+0.363281 0.0423805 -0.446579 -0.414802 0.488114 0.635499 0.984603 0.754421
+-0.232388 -0.913675 -0.829001 0.483703 0.157112 -0.0105208 0.0124018 0.982927
+0.732588 -0.403144 0.0405142 0.666896 -0.983896 -0.88312 -0.598408 -0.102636
+0.235983 -0.194344 -0.899966 0.818913 -0.307926 0.605328 0.00938062 -0.979785
+0.00486521 -0.296775 -0.336182 -0.773916 -0.135781 -0.254591 -0.887617 -0.22463
+0.776907 -0.00507311 0.575003 0.0972172 0.0917146 0.299598 0.908971 0.371128
+0.154097 0.662223 -0.327984 0.809309 0.505141 -0.801119 -0.640887 -0.175704
+-0.621285 -0.93906 0.88343 -0.335682 -0.414518 -0.270482 -0.21631 0.938979
+-0.131579 0.914072 -0.764339 0.685784 0.948479 0.952585 -0.964771 -0.631935
+0.306776 -0.212961 -0.315976 0.614698 -0.0898369 0.780489 0.360809 0.416606
+-0.468014 0.404283 -0.96396 -0.189297 -0.791442 0.773885 0.587043 -0.0782596
+-0.480517 0.70835 -0.211486 0.732444 -0.276463 -0.75612 0.726469 -0.719253
+-0.622656 -0.699469 -0.946631 -0.530526 -0.0741792 0.961648 -0.727138 -0.679362
+0.474522 -0.510806 -0.284161 0.478636 0.241942 0.793324 0.864238 -0.0188507
+-0.861661 0.0884048 0.189929 0.755653 0.498479 -0.103323 -0.214646 0.876877
+0.540655 0.468286 0.761424 0.234187 0.311882 -0.949578 -0.301205 0.351382
+0.153818 0.516557 -0.833179 0.779226 0.833771 0.332097 0.682078 -0.621843
+0.054233 0.352558 -0.312155 0.823886 -0.967821 -0.442538 -0.940638 0.928046
+-0.287713 -0.320047 0.915229 -0.506667 0.836883 0.81554 0.523616 -0.477319
+-0.666288 -0.756207 -0.4391 -0.166991 -0.463488 -0.224589 -0.567453 -0.813841
+0.921816 0.233968 0.503249 -0.780836 0.661116 -0.878693 0.272364 0.653018
+0.0982718 0.955343 -0.00116737 0.0515896 -0.900309 0.162698 -0.405466 -0.622419
+0.274121 0.00532402 -0.278421 0.187935 0.737302 -0.288707 0.468913 0.0727112
+-0.645074 0.396039 0.918114 0.699024 -0.64576 -0.346968 0.968304 0.509498
+0.959975 0.275805 0.770663 0.264169 -0.546041 0.0894624 0.916164 -0.531846
+-0.220712 0.176343 -0.285256 0.428888 -0.806397 0.470583 -0.436048 0.352457
+0.827127 0.663989 0.197963 0.295046 -0.162647 -0.629688 0.0927522 0.528304
+-0.0948724 -0.449113 0.15219 -0.681607 0.439602 -0.556948 0.827255 0.30789
+0.633612 0.177003 0.197909 0.0607861 0.813352 -0.478578 0.849208 -0.0559195
+-0.621938 -0.938186 -0.344109 0.344632 -0.653958 -0.2633 -0.401879 -0.224379
+0.569173 -0.186415 -0.394973 -0.911254 -0.126121 0.722517 -0.336122 -0.606807
+0.336334 -0.737192 0.646788 0.590685 0.908107 -0.52367 0.407099 0.7393
+0.179463 0.948656 -0.959131 0.660897 0.973779 -0.819904 0.777307 0.707572
+0.805222 0.47696 0.792415 -0.153259 -0.34436 0.489184 0.178155 -0.676351
+-0.366101 -0.905987 0.370496 0.913466 -0.576158 0.0581566 -0.630027 0.624738
+0.240351 0.423925 -0.965376 -0.6155 0.167325 0.37747 0.6683 0.800608
+0.733028 -0.985473 -0.231205 0.147117 0.860921 0.797464 0.325777 -0.272022
+0.99405 -0.719682 -0.514499 -0.625007 -0.194546 0.149532 0.769961 -0.47702
+0.969417 -0.560176 0.136726 -0.084649 0.389179 0.916409 0.362402 -0.140272
+0.572255 0.967829 0.269192 0.278367 -0.512647 -0.80402 -0.424621 -0.495134
+0.74935 0.330136 0.37711 -0.219175 0.126386 0.643323 -0.0506832 -0.637607
+0.677819 0.147174 -0.883904 -0.674671 -0.702196 -0.609653 -0.360972 -0.411869
+0.0473199 0.885646 -0.447124 -0.310008 0.0355451 -0.661485 0.839227 0.301716
+-0.785281 0.731203 -0.962014 0.882407 0.762484 -0.0631677 0.0461328 0.556399
+0.836915 -0.880616 -0.20345 0.195834 -0.280629 -0.254905 0.541897 -0.944301
+-0.953188 0.637588 -0.999833 0.204481 0.493087 0.438599 -0.372864 0.646388
+-0.172526 0.402667 -0.0226788 0.132275 0.84847 -0.975069 0.400631 0.699629
+0.60715 -0.237398 0.851343 -0.469023 -0.246306 -0.126365 -0.22573 0.801854
+0.973127 -0.336768 0.426195 -0.82333 0.686216 -0.272869 -0.376275 -0.184089
+-0.834437 0.984273 -0.690948 0.536909 -0.969076 0.0569001 0.0944958 -0.847545
+0.350913 0.742704 -0.0888435 0.661019 -0.180019 -0.850345 -0.732034 0.287116
+0.42318 -0.0784443 0.76352 -0.287245 -0.0895427 0.107832 0.240182 -0.618388
+0.733383 -0.822303 0.779953 0.349853 -0.741592 0.23154 -0.164536 0.939154
+-0.529592 -0.0682568 -0.850412 0.236524 0.951305 0.835525 0.876292 0.434137
+-0.889841 -0.0897097 0.271357 -0.113305 0.541147 -0.65919 0.247945 -0.818463
+0.103092 -0.527044 -0.896553 0.594214 -0.937021 0.284395 0.297577 0.125347
+0.495554 -0.439143 -0.251043 0.0232232 0.865299 -0.109303 -0.171189 -0.875226
+0.57307 -0.578949 -0.608173 -0.684583 -0.107306 0.0709148 -0.0246238 -0.0624843
+-0.715761 -0.273036 -0.0475207 -0.574422 -0.70413 -0.840535 -0.823665 0.810428
+0.0481544 -0.712767 -0.756264 0.224144 -0.567741 0.944005 0.259615 -0.692591
+0.979149 0.0738153 -0.596483 0.0797648 0.0513163 -0.538501 -0.800301 0.706676
+-0.557846 -0.394867 0.63447 -0.100628 0.712387 0.00607913 0.515474 -0.208223
+0.425765 0.518023 0.770432 -0.926689 -0.327345 0.82541 0.425676 -0.334855
+-0.832356 0.754433 0.639186 -0.907847 -0.646159 -0.842478 -0.7382 -0.944428
+-0.527099 -0.544425 -0.0802107 -0.536255 -0.69648 -0.947971 -0.97821 -0.671188
+-0.385232 0.671455 0.676753 -0.388442 -0.770879 -0.455934 -0.532879 0.0420204
+-0.877769 -0.0561897 0.3066 0.977451 0.400127 0.473004 -0.664074 0.538949
+0.700269 0.477385 0.416165 0.283032 -0.736692 0.96748 0.818292 0.393618
+-0.591449 -0.66396 -0.552564 -0.248555 -0.0538592 0.0149328 -0.715989 -0.301757
+-0.961856 -0.480595 -0.224266 -0.600355 -0.313135 -0.373333 0.621861 0.119805
+-0.0289787 -0.867208 -0.352495 -0.670025 0.839881 0.416516 -0.584136 0.82359
+0.873906 -0.455942 0.744804 -0.701634 -0.240905 0.44596 0.264161 -0.894824
+0.650648 -0.210614 0.695181 0.230454 0.134154 -0.378442 0.68298 0.974372
+-0.616655 -0.654828 0.106464 -0.35322 -0.855384 0.868473 -0.197215 0.922002
+-0.713525 -0.0435003 -0.864588 0.656072 0.868593 0.173013 0.00212877 -0.775055
+0.911177 0.793915 -0.374071 0.495409 -0.771561 -0.163497 -0.880465 0.09295
+0.662883 0.901321 -0.682988 0.51054 0.905844 -0.645043 -0.378337 0.849723
+0.0722367 0.944185 -0.192626 0.234598 -0.73386 -0.920794 -0.355706 0.101956
+-0.743876 -0.37457 0.789534 -0.670556 -0.477737 -0.0691285 -0.602454 -0.991518
+-0.469718 -0.939276 -0.442335 -0.407247 -0.193899 0.378604 -0.376943 0.766453
+0.814289 -0.641182 0.415069 -0.407948 -0.693805 -0.118009 -0.836475 -0.116981
+-0.329729 -0.370857 -0.437681 0.100834 0.454515 -0.971288 0.171979 -0.705728
+-0.500349 -0.146904 -0.918759 -0.193116 0.0928924 -0.251882 -0.593915 0.51246
+-0.864867 -0.312605 -0.324324 -0.877312 0.816048 -0.69731 0.96412 0.654401
+0.652711 0.186415 0.873401 -0.835052 0.398853 -0.00100471 -0.795989 -0.40831
+0.122206 -0.673676 -0.455272 -0.977259 0.691944 -0.46109 0.6438 0.763297
+-0.254397 -0.978692 -0.930729 -0.491152 0.458397 0.58434 0.355154 0.975119
+0.221987 0.498127 -0.276902 -0.5598 -0.958984 -0.45776 0.846432 -0.723353
+-0.170915 0.730709 0.451446 -0.436452 -0.387114 0.680566 -0.107194 -0.536168
+0.375747 -0.0831178 0.965975 0.947039 0.452417 0.288673 0.852116 0.882378
+-0.299774 -0.00230704 0.707474 -0.0906821 0.06061 0.77999 0.355836 0.560197
+0.623911 0.51013 0.0369807 0.501648 -0.0966267 0.41681 -0.119264 0.114759
+-0.515069 0.52296 0.962316 -0.547326 -0.304037 0.0283051 -0.439579 -0.478872
+0.918665 0.580931 0.783695 -0.604643 0.896858 -0.688057 0.217374 -0.218612
+-0.692767 0.905495 0.850366 -0.612433 -0.573719 0.606877 0.918137 -0.645591
+0.0845819 -0.384892 0.898472 -0.591445 0.261452 0.880986 -0.170558 0.748134
+-0.845194 0.489728 -0.892401 -0.523616 0.608827 0.298731 -0.513934 -0.599622
+-0.441465 0.890703 -0.883215 0.847724 0.4496 -0.0929575 0.607727 -0.0115072
+-0.302087 0.0883766 -0.0491913 0.572896 -0.656623 0.200039 -0.99019 -0.622263
+-0.0611687 0.559847 -0.160513 0.914396 -0.789758 -0.0322675 0.243944 -0.873612
+0.383492 -0.227006 0.857748 -0.691379 -0.119268 0.906544 0.0676283 -0.941901
+0.362183 0.110534 0.118316 0.355861 0.538892 -0.499587 -0.476783 -0.80109
+-0.395513 0.313769 -0.854058 0.312002 -0.980265 0.589553 -0.231006 0.255777
+0.408053 0.417829 0.481733 -0.789267 0.91658 -0.771752 -0.61247 -0.842104
+-0.907614 0.915451 0.687083 0.89316 -0.181949 0.519122 0.195216 -0.897277
+0.109486 0.648038 -0.966609 -0.191132 -0.515898 -0.400711 -0.0251581 -0.694888
+0.507398 -0.436314 -0.918196 0.886837 -0.89631 -0.298954 0.133382 0.987254
+-0.847858 -0.890704 -0.485997 -0.243752 0.404901 0.056256 -0.0530081 -0.663969
+0.207087 0.022262 0.293799 0.738427 -0.659575 -0.37452 -0.222543 -0.660175
+-0.54719 0.5073 -0.203394 0.42828 0.270223 -0.268403 -0.576576 -0.196087
+-0.201262 0.865856 0.62896 0.166951 -0.797367 -0.394524 -0.223129 -0.708701
+-0.101959 -0.725559 0.798945 0.271839 0.0692502 -0.979058 -0.99892 0.0419966
+0.53545 0.922479 0.778318 -0.781238 0.398312 -0.577787 0.897057 -0.744146
+-0.62022 -0.373106 0.908867 -0.685094 -0.393671 -0.0789112 0.591853 0.681938
+0.616694 0.0851848 -0.781406 0.650371 -0.00992323 -0.725596 -0.725729 -0.212746
+-0.629517 -0.897357 0.530401 0.197561 -0.723204 0.5815 0.486909 0.791385
+0.332906 0.875343 -0.0229728 -0.26032 0.538418 -0.840019 -0.523949 0.923199
+0.454019 0.42438 -0.000983201 0.477238 -0.554344 0.0758181 -0.443851 0.645411
+0.704459 -0.16484 -0.283569 0.419795 0.515995 -0.707621 -0.127128 -0.00579609
+0.788275 0.123504 0.21663 0.573395 -0.115169 -0.266037 0.701736 0.196113
+0.356737 -0.529321 -0.616597 0.916584 0.437721 0.578161 -0.941679 0.0760077
+-0.360035 0.079058 0.246907 0.378028 0.0462992 -0.427991 -0.167935 0.784062
+-0.867621 0.228581 -0.0104227 -0.226125 -0.119777 0.778775 0.492626 0.928746
+-0.197559 -0.939388 0.868273 0.261652 -0.900631 -0.382494 -0.347938 0.537963
+-0.114143 0.123893 -0.106055 -0.416625 -0.104318 0.12035 0.509647 -0.428684
+0.978424 0.876989 0.838603 -0.0887538 0.334778 -0.66115 -0.335466 0.343176
+-0.820025 -0.908138 0.874542 0.314593 -0.818071 -0.257017 -0.836866 0.0887811
+0.656548 -0.291373 0.933373 0.256272 -0.898607 -0.399715 -0.503581 0.394048
+0.362886 -0.549097 -0.0870603 -0.0583177 -0.72757 0.925943 -0.133231 -0.547881
+-0.108116 0.469448 -0.145514 0.558468 0.799794 0.0360063 -0.703488 0.514873
+-0.256492 -0.113745 -0.45644 0.877031 -0.155099 0.675648 0.0225446 0.889124
+-0.997824 -0.275151 -0.0816768 -0.117119 -0.199962 0.793884 0.135836 -0.517578
+-0.85956 0.762486 -0.632285 0.0615244 -0.704787 0.880425 0.528767 -0.945482
+-0.0437808 -0.369173 0.113644 -0.0113774 -0.834023 0.500225 0.966642 -0.35483
+0.690285 -0.131156 -0.759254 0.853709 0.458314 -0.797575 -0.603178 0.439594
+0.0444817 0.901667 0.0658321 0.789708 -0.10006 -0.528711 0.955701 -0.980148
+0.306586 0.866876 -0.080387 0.245783 0.717017 -0.809001 0.484824 0.782623
+-0.632013 -0.677042 -0.014166 -0.995771 0.970022 0.883048 -0.133481 0.628743
+-0.688194 -0.17207 0.686293 -0.41734 0.496601 -0.074268 0.75973 -0.490093
+0.771534 0.0304465 0.296286 -0.27083 -0.836945 0.123148 0.902198 0.043503
+0.647878 0.224745 0.609021 0.193213 0.179697 -0.605319 0.79772 0.0173175
+0.075366 0.294109 0.417857 -0.326649 -0.565692 -0.474323 -0.224209 -0.666198
+0.133962 -0.427347 0.00741124 0.63284 -0.949592 -0.392416 -0.442946 -0.733096
+-0.561296 0.924184 0.626388 0.247312 -0.681852 -0.271314 -0.635791 0.857857
+0.477755 -0.998126 0.542267 -0.684616 0.657366 0.842474 -0.731047 0.880506
+0.0999426 -0.788276 0.907031 -0.66577 -0.34713 -0.813638 -0.924886 0.0799697
+0.000974058 0.879143 -0.917237 -0.0658394 0.536149 -0.897546 0.517589 0.878819
+-0.00976123 -0.234068 -0.195261 -0.865796 0.909201 0.694289 0.181825 -0.830926
+0.68441 0.462165 -0.502413 0.0498697 -0.0708356 -0.707278 -0.863705 0.926523
+0.0847125 -0.0993972 -0.93918 0.52679 0.899829 -0.154097 0.467359 -0.377423
+0.782743 0.212666 -0.882375 0.662286 0.0817885 0.466493 -0.947296 -0.561182
+0.984956 0.995736 -0.956063 -0.675235 -0.208349 -0.279891 -0.562258 0.0238953
+-0.973069 0.308437 -0.818147 0.46848 0.72665 -0.655727 -0.541774 0.671946
+0.187228 0.634296 -0.383014 -0.0904102 0.259885 0.57266 0.959802 -0.389448
+-0.684243 -0.11016 -0.953932 -0.0495816 -0.131607 0.728629 0.697163 -0.721516
+-0.181418 -0.382948 -0.722509 -0.695144 0.0787127 -0.245262 -0.498048 -0.739869
+0.830178 0.914575 -0.454904 0.745695 -0.239102 0.553015 0.294614 -0.175759
+0.984054 -0.0581829 0.446551 0.73675 0.868628 0.707773 0.717387 0.0422369
+-0.730983 0.194695 0.0743934 0.25252 -0.267732 -0.471383 0.297828 0.0322841
+0.655256 -0.560019 -0.641681 0.661432 -0.266061 0.052572 -0.955081 -0.282528
+-0.415285 0.226273 -0.90604 0.184445 -0.989665 -0.0912558 0.61949 -0.805614
+-0.500972 0.611884 0.8492 0.7098 -0.0588433 0.348041 -0.414189 -0.858704
+-0.648221 -0.759019 -0.811462 0.271084 0.737339 0.0153722 -0.592471 -0.826956
+-0.323454 0.611526 0.859839 0.716502 0.292863 -0.9588 -0.678535 0.938754
+0.154796 -0.115514 -0.739081 0.573985 -0.631539 0.589655 -0.14831 0.549913
+0.0906076 -0.651253 0.0283252 -0.946034 0.560444 -0.0612346 -0.199005 0.220301
+-0.0975565 -0.465731 -0.933866 0.111095 -0.465958 -0.828732 0.729906 -0.921229
+0.541046 0.152101 0.627026 0.919834 0.980592 0.278033 -0.357773 0.685608
+0.163656 -0.820748 0.219899 -0.101181 0.375515 -0.933299 0.515094 -0.8771
+0.603751 0.221247 0.446117 -0.989361 0.993051 0.0945616 -0.628518 0.819361
+-0.828535 -0.801524 -0.987235 0.928514 -0.0875665 0.861287 0.716365 -0.898612
+-0.170997 0.917167 -0.71157 0.475425 0.768015 -0.696612 0.204355 0.570293
+-0.827697 -0.28734 -0.0396248 -0.306508 -0.317003 -0.914925 -0.271988 -0.21109
+-0.841498 -0.252688 0.316755 -0.38155 -0.332195 0.289861 0.7727 -0.320135
+0.510168 0.169364 -0.498838 0.209328 0.514153 0.593351 -0.380651 0.311029
+-0.602362 0.678853 0.273814 -0.366988 0.909642 -0.953147 0.882081 0.884784
+0.521452 -0.495593 0.160721 0.176382 0.458051 -0.617109 -0.172667 0.145778
+0.817753 -0.144844 0.443388 0.514065 -0.635053 0.729437 -0.547013 0.235895
+0.0339596 0.0366261 0.349729 0.57932 0.181026 -0.785278 -0.61222 0.353273
+0.081437 0.0810859 -0.458834 0.342 -0.509965 -0.213191 -0.530875 0.748608
+-0.00403304 -0.730842 0.640446 -0.812574 -0.631621 -0.693543 -0.533125 0.240443
+0.736345 0.164469 -0.232611 -0.682714 0.0391465 0.215764 0.181629 -0.170527
+-0.316153 0.849775 -0.713543 -0.992168 0.226637 0.899808 -0.983037 0.615648
+0.593865 0.613709 0.964471 -0.0694818 -0.554318 -0.944957 0.404677 0.569198
+0.854136 -0.567775 0.624205 -0.0638568 0.227571 0.423304 0.804173 0.607347
+-0.57195 0.771232 0.949745 0.913996 0.033205 -0.674982 0.450981 -0.776398
+-0.00892122 0.28499 0.224971 0.83427 -0.677952 0.780563 -0.459848 -0.169539
+0.674748 0.550088 0.309164 0.650185 0.986459 0.479641 -0.759661 -0.070167
+0.131979 0.214995 0.57041 -0.426954 0.666856 -0.367388 -0.659574 0.729844
+-0.826653 -0.334649 -0.777172 -0.312917 -0.213826 -0.648087 0.361105 0.419723
+-0.60796 0.660562 0.877929 -0.317686 0.835597 0.770875 -0.669502 -0.354348
+-0.173571 -0.558255 0.288056 -0.0195096 0.216895 -0.697269 -0.936962 -0.110495
+-0.769401 0.205658 -0.422241 -0.418914 0.224285 0.724838 0.329769 -0.176675
+-0.608851 0.504321 0.401991 0.38628 -0.864586 -0.723579 0.528884 0.139734
+0.129013 0.832588 0.636092 0.379191 -0.47732 -0.774767 0.106628 -0.458607
+0.600563 -0.0212063 -0.6852 -0.986305 -0.894318 -0.499191 -0.0669232 0.65708
+-0.17459 -0.571405 0.45184 0.451606 -0.209903 -0.144011 0.0814855 0.394845
+0.801352 -0.184869 -0.700182 -0.58335 0.122312 0.483505 -0.938643 0.763043
+-0.694568 0.738964 0.144524 0.405695 0.0687771 0.852866 0.233823 -0.634871
+-0.441766 0.666858 0.917758 -0.0621066 0.898027 0.776859 -0.591587 0.538725
+-0.129871 0.86815 0.328025 -0.797892 -0.200945 -0.00775088 -0.787212 -0.0477195
+0.411625 -0.935478 0.97188 -0.4774 0.880431 -0.295131 -0.0397297 0.742689
+-0.468279 0.665199 -0.00262621 -0.306908 0.55242 -0.876837 -0.0766511 0.588279
+-0.384238 0.0945892 0.295707 0.210992 -0.239061 -0.0312253 0.963805 0.910599
+0.59308 -0.890281 0.360783 -0.441871 -0.18166 -0.842993 0.614948 0.372101
+-0.282672 0.484205 -0.390907 -0.641843 -0.900236 -0.419012 -0.127662 0.460704
+0.721775 0.869937 -0.550456 0.663482 -0.0202616 -0.493301 -0.404294 -0.255343
+-0.621552 -0.0546371 0.741689 -0.0772868 0.599692 0.960398 -0.099038 0.557427
+0.291379 0.851408 -0.688359 -0.376174 0.60419 -0.512245 -0.200478 0.441748
+0.30017 0.669317 0.0157743 0.864596 0.46077 -0.444435 -0.690974 -0.815909
+0.934688 -0.559636 -0.944507 0.573606 -0.210941 -0.0144233 -0.178447 -0.734446
+0.372047 0.115652 -0.184899 0.186208 0.350788 -0.707895 0.145772 0.0159335
+0.250639 0.683152 0.344556 -0.650937 0.994165 0.886205 -0.261378 -0.414116
+0.125493 -0.682846 0.8503 -0.795054 -0.547047 0.201266 0.951237 -0.570226
+-0.832089 -0.76452 -0.00559059 -0.0127649 -0.623252 0.695241 -0.0741697 -0.926311
+-0.870471 0.86697 -0.409793 0.185559 0.841404 0.775766 -0.661608 0.630784
+-0.0418847 0.510854 0.832215 0.574998 -0.993502 -0.659399 0.302716 -0.949432
+0.251255 -0.256833 0.17971 0.349283 0.823358 0.0684997 0.484002 0.0554339
+-0.0812522 0.530946 -0.0502746 -0.425602 0.402146 -0.149901 -0.00779549 0.496858
+0.308736 -0.105052 0.912841 0.839152 -0.305452 0.499928 0.95626 0.321928
+-0.3285 0.0754262 -0.978408 0.276809 0.890524 -0.191066 -0.37462 0.869924
+-0.843673 -0.317329 0.324965 0.899363 0.305543 -0.618414 -0.0500692 -0.305687
+0.776532 -0.565459 -0.694585 -0.461779 0.724174 0.724395 0.401296 0.937612
+0.184945 0.596819 -0.112383 -0.109576 -0.140985 -0.774741 -0.609435 0.0236652
+0.953433 -0.486151 0.655185 0.766429 -0.701394 -0.370928 -0.820288 -0.877196
+0.572462 0.709389 -0.316934 -0.81279 0.0864481 0.582348 0.482659 -0.223883
+0.515367 0.126074 -0.424637 -0.558138 0.176037 -0.735063 -0.448309 -0.74732
+-0.0720739 -0.0230992 -0.020745 0.243751 -0.0196581 -0.776428 0.372864 0.353649
+0.285757 0.60437 0.514482 0.200558 -0.0784612 0.491931 -0.391741 -0.219148
+-0.533693 0.928068 0.782882 0.29664 -0.189146 -0.4963 0.0980167 -0.959944
+0.608752 0.144835 -0.710443 0.601716 0.948639 -0.0447879 -0.518276 -0.00486581
+-0.254559 -0.329286 0.734333 0.130947 -0.00577986 -0.721763 -0.341906 -0.421621
+-0.855017 0.174414 -0.848329 0.214249 -0.58743 0.49036 -0.593059 0.659447
+0.526415 -0.727025 0.26561 0.669341 0.843729 0.0761335 0.169667 -0.116155
+-0.526465 -0.447057 -0.615264 0.489265 -0.974332 0.956576 0.835828 0.00231343
+0.613543 -0.325269 0.900706 -0.233333 0.137425 -0.0920977 0.654766 0.513183
+-0.491512 0.680511 -0.860143 0.000219877 0.158272 0.46976 -0.634852 0.550822
+-0.551847 -0.398146 0.1887 -0.631267 -0.644479 0.300039 -0.304721 0.542797
+-0.242835 -0.813084 -0.822062 0.898453 0.961803 -0.968091 -0.0286443 -0.383386
+0.921859 -0.268503 0.330602 -0.752452 -0.36633 0.706127 -0.853998 -0.163032
+0.356645 0.571826 -0.975479 0.616479 -0.701651 -0.44157 -0.281014 -0.1878
+-0.243982 -0.0327769 -0.0568341 -0.557591 -0.702275 -0.830818 -0.160744 -0.383181
+-0.606415 -0.993561 0.935008 0.237088 -0.626452 -0.279491 -0.0299587 0.096851
+-0.811084 0.697592 -0.358233 -0.624643 0.879112 0.98145 0.134991 -0.113781
+0.677045 0.173258 0.198926 -0.130985 0.692711 0.235918 -0.463143 -0.97181
+0.128611 -0.196469 -0.143549 -0.877259 -0.22387 0.911893 0.938579 -0.602357
+-0.558379 0.0831053 0.755255 -0.0633384 0.766946 -0.217916 0.803606 -0.69906
+0.378348 -0.577776 0.290786 0.72261 0.374513 -0.0515563 0.119249 -0.883982
+0.494366 -0.501015 0.221005 0.676703 -0.343459 0.239507 -0.43485 0.484132
+-0.0240771 -0.0695587 -0.767498 -0.426817 0.349456 0.815025 0.592253 0.0434642
+0.900908 -0.0224957 -0.227291 0.712525 -0.17387 0.423376 0.699817 0.0650314
+0.715058 0.981705 0.463282 -0.488915 0.225502 -0.579498 0.474955 0.0182237
+0.857074 -0.0382085 -0.560685 0.240137 0.713133 0.950877 0.839938 -0.222778
+-0.759526 -0.48741 -0.110886 0.589902 -0.178458 -0.533093 -0.336843 0.620609
+0.0139508 0.752568 -0.156613 0.316151 -0.0609667 -0.0964161 0.966551 -0.904765
+-0.460361 0.292631 0.780214 0.315363 0.707871 0.92645 -0.71585 0.321802
+-0.694523 0.944745 0.980457 0.706664 -0.327244 0.886355 0.877686 -0.999405
+-0.737367 -0.876693 0.594778 -0.23487 0.390236 -0.79106 0.712837 -0.382474
+-0.654429 -0.600899 -0.754773 -0.115959 -0.174276 -0.921064 -0.696421 -0.168972
+0.0708496 -0.735405 0.268682 0.566339 0.956091 -0.965215 -0.528977 -0.211907
+0.0595766 -0.271321 0.0586539 0.872684 -0.164932 -0.217101 -0.110703 -0.994614
+-0.100716 -0.21279 0.0343801 0.121225 -0.481159 -0.984074 0.423633 -0.524078
+0.677134 -0.121567 -0.719651 0.403784 -0.0439599 -0.0956062 -0.872936 -0.0305165
+0.603626 0.664413 -0.66371 0.677597 -0.635079 0.677114 0.274386 -0.565885
+-0.368999 0.395814 0.593433 0.071033 -0.517066 0.679989 -0.896466 -0.19466
+0.620615 -0.902769 -0.446372 0.71205 -0.0134724 0.792839 0.442742 0.705649
+0.448554 0.0907248 -0.875912 -0.78133 0.550768 0.401435 -0.2083 -0.548377
+-0.636633 -0.509317 -0.886577 0.836475 -0.244503 0.405991 0.435771 0.172506
+0.5809 0.193259 0.469274 -0.516108 0.116578 0.720497 0.492518 0.813402
+-0.764552 0.693023 0.813783 0.754981 0.505089 0.726952 0.72732 -0.579995
+0.609565 0.490126 0.354568 0.881088 -0.16121 -0.845049 -0.776224 -0.870536
+0.249554 0.737273 -0.873171 0.978158 0.972466 -0.191672 -0.759513 0.876725
+0.480007 0.890844 -0.29484 0.381001 -0.0617632 -0.397249 0.985152 0.245097
+0.588217 -0.748707 -0.723281 0.960338 0.332118 0.507824 -0.899531 -0.850595
+-0.528361 -0.0907407 -0.66284 0.194275 0.226352 0.939166 -0.796648 -0.560345
+-0.0018087 -0.488208 0.268087 -0.691234 -0.166023 0.857149 0.887926 -0.822825
+-0.255971 0.220112 -0.598075 0.0654637 -0.587158 -0.580129 -0.112089 -0.205686
+0.922303 0.926634 0.342239 -0.450665 0.960983 -0.0389203 0.0641601 0.166471
+0.478002 -0.208739 -0.505577 0.486465 -0.611075 0.835469 -0.388308 0.918577
+-0.945503 -0.489629 0.0602579 0.852291 0.898433 -0.523384 0.428025 -0.0249408
+0.448862 0.0653039 -0.833613 0.416429 -0.418658 -0.575603 0.283643 0.0631906
+0.472831 -0.233259 0.321724 -0.521398 -0.0559032 0.904495 0.0420803 -0.68707
+-0.418759 -0.243526 0.261977 -0.20153 0.363749 0.0561165 -0.901287 0.380951
+0.0356224 0.709165 0.687935 0.0385029 -0.360781 -0.0977945 -0.0523092 0.587724
+0.606512 0.606752 -0.948712 -0.0413094 -0.163546 -0.374833 -0.742109 -0.941404
+-0.591905 -0.527455 -0.364899 0.703861 -0.250776 0.13719 -0.547711 0.990142
+-0.188902 0.564909 0.927158 -0.906163 -0.417163 0.135594 -0.170626 0.874103
+0.0848013 0.132844 -0.735145 -0.093525 -0.421543 -0.397611 0.158808 -0.0642251
+0.985356 0.733467 -0.249225 -0.402127 0.153127 -0.194697 0.966564 -0.699326
+-0.92745 0.665489 -0.347215 0.693321 -0.957146 -0.653181 0.511458 -0.753823
+-0.713669 0.106806 0.116199 -0.42533 -0.423685 -0.615305 0.353406 0.455503
+0.913431 0.771845 0.325587 0.919554 -0.777534 -0.521801 -0.22661 -0.248731
+-0.987823 0.299457 0.651216 0.705278 -0.657446 0.861857 0.241607 0.781219
+0.666632 -0.940135 -0.465348 -0.997609 -0.97654 0.837899 0.583858 0.373042
+0.994313 -0.635854 -0.878991 -0.727423 0.782306 -0.892377 0.905096 0.074571
+0.554527 0.920449 -0.772302 -0.498784 0.957279 0.989656 -0.175314 -0.0813478
+0.930287 -0.50704 -0.239235 0.821616 -0.647472 -0.11052 0.247848 -0.5883
+-0.54487 -0.173971 -0.00350076 -0.259568 -0.845643 -0.968549 0.738096 0.262694
+0.523131 -0.923979 0.744681 0.813637 0.247499 -0.961381 -0.314356 -0.0229167
+-0.695943 0.421685 -0.198657 -0.511001 0.419557 -0.879891 0.531399 -0.659729
+-0.637058 -0.935509 0.718733 0.13937 -0.0334449 -0.192238 0.359693 0.626302
+0.552849 -0.919393 0.646026 0.437715 0.000286214 0.299565 0.44429 -0.341682
+0.464539 -0.527284 -0.44486 0.820841 0.930996 0.568054 0.386079 0.468224
+-0.294328 -0.808375 -0.529592 -0.106826 -0.321099 -0.984758 -0.115137 0.398672
+0.286542 0.295766 0.222531 -0.0306655 0.330739 0.906166 -0.413205 -0.761751
+-0.308349 0.428458 0.285334 0.999387 -0.876236 -0.41015 -0.572476 -0.581781
+0.0986278 -0.701512 -0.152086 0.554128 -0.729661 0.928477 0.248127 0.250132
+-0.301041 0.298569 0.336602 0.780929 0.389382 -0.968069 -0.645047 0.648065
+0.173302 -0.1454 0.24924 -0.968054 -0.267053 -0.706765 0.750725 0.768158
+-0.450792 -0.347903 0.687592 0.578171 -0.919444 0.426823 0.600826 0.455884
+0.125016 0.503402 0.168666 -0.267666 -0.27683 -0.886591 -0.771492 -0.948732
+0.876239 -0.355067 0.901132 0.871746 0.916059 -0.29615 -0.799335 -0.844642
+0.0149953 -0.608281 -0.500099 0.538077 0.378825 0.520402 0.575124 0.859247
+-0.610797 0.328011 -0.523517 -0.898361 0.00218621 -0.887533 0.0194196 -0.33779
+-0.616134 0.0660449 -0.31806 -0.30886 0.766834 -0.978261 -0.486737 -0.399618
+-0.0917382 0.277186 0.839681 -0.473801 -0.549823 -0.602682 -0.585298 0.293436
+-0.103361 -0.555463 -0.234813 0.432113 -0.468597 0.888812 -0.22229 -0.187223
+0.781542 0.0750056 -0.536047 -0.80232 -0.915122 0.428795 0.203037 -0.293338
+0.810786 -0.0354941 -0.675073 -0.645535 0.106937 0.354792 -0.872742 -0.412236
+-0.538382 -0.763935 -0.854645 -0.912881 -0.115333 -0.743536 -0.0770939 -0.465974
+0.741225 -0.43547 0.103791 0.763534 -0.513783 -0.870602 0.737691 -0.261385
+-0.0622958 0.204415 -0.915488 0.160516 -0.67954 0.190377 -0.50775 0.620587
+-0.119934 0.405527 -0.756127 -0.470831 0.609895 0.754775 -0.52016 0.342044
+0.440928 0.382402 -0.526856 -0.604671 -0.123643 0.0473221 0.681299 0.432775
+0.35705 -0.631322 0.335415 -0.160106 -0.511203 0.108416 -0.187068 -0.19273
+0.818762 0.955804 0.253726 0.243133 -0.866393 -0.713879 0.831281 0.48583
+-0.598078 -0.237423 -0.732799 -0.837698 -0.813628 -0.568913 0.975931 -0.414931
+-0.70244 0.670657 -0.627528 0.684003 0.879295 -0.780104 0.45747 0.717542
+0.742923 0.28711 0.427397 -0.804295 -0.935748 -0.63725 0.185404 0.195977
+0.523175 0.164912 -0.226626 0.473188 -0.903959 0.111465 0.962655 -0.649899
+0.811926 -0.150801 -0.148576 -0.314315 -0.378293 0.120209 -0.717872 0.475651
+0.527778 0.38538 0.294788 -0.284074 -0.43133 0.400691 0.6078 0.152683
+0.712556 0.5142 0.401574 -0.948874 0.628844 0.97335 -0.298696 -0.601937
+-0.991927 0.576505 0.407119 -0.467578 -0.189144 0.360232 0.517798 -0.435152
+-0.835849 0.981422 0.411036 0.965548 0.692699 -0.00998499 0.371297 -0.00133145
+-0.767232 0.09019 0.602586 0.912263 0.354785 -0.333148 0.653425 -0.649789
+-0.809157 0.21328 -0.835589 0.352537 0.358959 0.781091 0.0597904 0.466797
+-0.833931 0.470528 0.122331 -0.477634 -0.417411 0.421302 -0.191153 -0.132141
+0.45709 -0.959619 0.912188 -0.99528 -0.600182 -0.56223 -0.423687 -0.193773
+0.0216373 0.146337 0.905906 0.334817 -0.324455 -0.819952 0.347551 -0.277488
+-0.319623 0.209662 0.0298132 0.939739 -0.069773 0.888707 0.996402 -0.054304
+-0.821955 0.819168 -0.853819 0.571645 -0.834139 -0.861082 -0.873796 -0.237357
+0.236371 0.744487 0.741755 -0.471208 -0.78459 -0.443649 0.271483 -0.0455994
+0.851346 -0.208521 -0.131185 -0.796203 -0.255105 -0.698859 -0.612414 -0.816121
+-0.122906 -0.600864 -0.936747 -0.321419 -0.151019 -0.827735 0.136891 0.0296146
+0.735648 0.193249 -0.426487 -0.23817 -0.71209 0.423922 -0.347415 -0.378162
+0.778483 0.18169 -0.735153 0.984382 -0.306176 -0.99738 -0.107892 -0.795631
+-0.805644 0.112209 -0.298002 0.610045 0.0361954 -0.882893 0.282081 -0.989255
+-0.162802 0.138385 -0.476159 -0.34362 -0.0208122 0.547458 -0.397081 -0.597724
+0.884562 0.954509 0.571493 -0.00982217 0.869722 -0.729849 0.0274898 0.977989
+0.13102 0.704919 0.468061 -0.815591 0.402209 -0.521649 0.471525 -0.170029
+0.34004 0.298699 -0.269258 0.954558 -0.874734 0.193975 -0.827563 -0.400525
+0.157099 -0.292881 0.306565 -0.0130616 -0.158665 -0.149573 0.839071 -0.0153065
+0.45548 0.424047 -0.837859 0.741006 0.800953 0.938368 -0.691706 0.823846
+-0.601256 -0.357712 0.179111 0.175019 -0.385855 0.813766 0.717624 -0.232948
+-0.444183 0.955079 0.836534 -0.902232 -0.81723 -0.696455 0.540988 -0.59834
+-0.456177 0.51899 -0.226569 0.286242 0.0182484 -0.569708 0.0927978 0.351204
+0.42471 0.418102 0.544486 0.806483 -0.499258 -0.749449 -0.723003 -0.700478
+0.898082 0.908541 0.699173 -0.292711 0.297043 -0.990494 0.995252 0.851631
+0.594536 -0.732215 0.328213 0.133244 -0.528041 0.529194 0.787225 -0.309067
+-0.872484 -0.526274 -0.368968 0.620617 0.59385 -0.197271 -0.531257 0.160596
+-0.911691 0.992716 0.138414 0.439126 -0.856473 0.458083 -0.724759 -0.949265
+0.445634 0.941434 0.383013 0.119187 0.360761 0.224577 -0.406873 -0.14874
+-0.850024 0.406242 -0.987686 0.419716 0.833527 -0.810417 0.30594 -0.00712326
+-0.190325 0.903821 -0.160207 -0.185619 -0.546711 -0.368094 0.835662 -0.140476
+0.398994 -0.701222 -0.607329 0.172177 -0.970453 0.830484 -0.50775 0.782039
+-0.467062 -0.00650276 0.950333 0.176548 -0.210942 -0.558266 -0.0952733 -0.0479317
+0.100437 -0.393928 -0.847001 -0.829858 -0.441968 -0.0318336 -0.490883 0.848848
+-0.631143 -0.528653 0.631995 0.695675 -0.51902 -0.396995 -0.7112 -0.740444
+-0.26705 -0.555723 -0.914737 -0.545952 -0.280876 0.852172 -0.965218 -0.79901
+0.292693 0.340534 -0.403736 -0.0187143 -0.403433 -0.653135 -0.873989 -0.252567
+-0.321953 -0.00175426 -0.0982173 0.529045 -0.341277 -0.629041 -0.599386 0.661672
+0.910626 -0.537007 0.203493 -0.00364493 0.937403 -0.464218 0.533787 0.746203
+-0.437352 0.581493 0.320334 -0.147759 0.358775 0.289687 0.779021 -0.0177836
+-0.882005 0.455478 -0.218773 -0.372343 0.989746 0.41922 -0.198826 -0.661025
+0.87591 -0.712593 -0.304432 0.826156 -0.642761 -0.933846 -0.291615 -0.316973
+0.604414 0.88602 0.782185 0.470725 0.711684 -0.061264 0.525596 -0.200641
+0.248111 -0.608594 -0.851087 0.310291 -0.372669 0.95437 0.103978 0.91879
+-0.101975 0.704781 0.305341 0.560117 0.517339 -0.660969 0.858211 0.224984
+0.437192 -0.697103 -0.335884 -0.83529 0.0265226 -0.0506648 0.937622 0.312205
+0.266575 -0.439799 -0.429115 0.589414 0.540477 0.611981 -0.592582 0.780986
+0.298469 0.289732 -0.382572 -0.257052 0.293741 -0.291227 0.375649 0.297089
+0.206021 0.580981 0.886214 -0.0433701 0.751282 0.900529 -0.214723 0.772611
+-0.172119 -0.642249 0.0190451 -0.143636 0.253911 -0.203335 0.0485596 0.17505
+-0.843601 -0.513378 -0.291131 -0.040763 0.772936 0.911256 0.395748 0.408965
+0.287581 0.520859 -0.94936 -0.553394 -0.674212 -0.0944238 -0.685162 0.890514
+0.529198 -0.500136 -0.638627 0.424193 0.467577 -0.561498 0.39007 -0.925369
+0.3854 0.0436241 -0.880083 -0.420581 0.374951 -0.337581 -0.624367 0.443054
+0.132368 -0.878239 -0.574338 -0.274575 0.00250376 0.494147 0.173526 0.883387
+0.61281 0.174375 -0.622462 -0.0826392 -0.412087 0.0339736 0.441503 -0.591437
+0.68225 0.844676 -0.122762 -0.179799 -0.660691 -0.485314 -0.559874 -0.565694
+0.649297 -0.625909 0.759782 -0.870365 -0.372888 -0.267214 0.630475 0.540693
+-0.311311 0.804323 0.861152 0.86655 0.751852 -0.556321 0.374448 -0.869674
+0.671019 0.110837 -0.897409 -0.725767 -0.0471085 -0.221898 -0.339532 -0.454421
+0.195124 -0.869949 -0.279884 0.793026 0.296529 -0.815951 -0.58896 0.923199
+-0.709055 0.470964 0.835874 0.0816438 0.307834 -0.603159 -0.528858 -0.844923
+-0.721763 0.838714 -0.871618 -0.182521 -0.0532893 -0.0895496 -0.916913 -0.196797
+-0.311177 -0.963831 -0.81429 -0.783186 0.160698 -0.525185 -0.0447396 0.0220367
+-0.602121 -0.792035 -0.571744 0.186665 0.580744 0.928993 -0.542637 0.545755
+-0.878623 -0.289613 0.0795839 0.424377 0.695898 -0.236941 -0.500899 -0.900809
+-0.27813 0.325782 0.104022 -0.648674 0.385746 0.858498 -0.778167 0.640713
+-0.920418 -0.297414 0.951722 -0.502752 -0.500822 0.906769 0.475276 -0.120436
+0.0555665 -0.781139 -0.100632 -0.240305 0.350214 -0.236548 -0.856435 -0.536652
+0.82334 0.100009 0.635653 0.423638 -0.742337 -0.882165 -0.947683 -0.902723
+0.633898 0.696032 -0.840314 -0.758485 0.840569 0.297607 -0.0833301 0.0548925
+-0.946265 0.785038 0.0966939 -0.805429 0.869914 -0.642478 -0.131833 -0.149584
+0.723076 0.201727 0.722296 0.292561 0.546842 -0.991661 -0.240245 -0.576672
+-0.298388 -0.230718 -0.960268 0.525073 -0.0687227 0.426996 -0.84886 -0.352525
+0.875025 -0.136292 -0.0825568 -0.401207 -0.143353 0.897022 -0.586978 0.815228
+0.991454 0.693501 0.420691 -0.252937 -0.883019 -0.80479 -0.282766 0.132104
+0.50084 0.261296 -0.292088 0.171744 -0.975827 0.966368 -0.02166 -0.457527
+-0.867127 0.596761 0.909639 -0.0600934 -0.991778 -0.0624672 0.167349 0.652688
+-0.72436 0.474212 0.511686 0.47024 -0.325579 0.761913 -0.591578 -0.550693
+-0.87061 0.159126 -0.666693 0.51595 0.308097 -0.794654 -0.955128 -0.683876
+-0.0890715 -0.658886 0.259221 -0.487484 -0.598891 -0.597186 -0.518363 0.631827
+0.157736 -0.119963 0.56765 -0.630407 0.0792633 -0.40219 0.23451 0.275624
+-0.59349 0.874425 0.172097 0.308708 -0.0750917 -0.0565186 0.30194 0.430169
+0.751406 -0.472457 -0.754903 0.175155 -0.828196 -0.271119 0.441171 -0.822592
+-0.874723 -0.902089 0.779307 -0.549314 0.0049205 -0.814337 -0.569034 -0.388881
+-0.0496898 -0.438871 -0.164657 -0.133288 0.0280757 0.604918 0.434283 0.133385
+-0.44948 -0.417847 0.14142 0.890699 -0.630288 -0.505602 -0.0243172 0.467915
+-0.357174 0.165959 -0.620437 -0.925041 0.882595 -0.690612 -0.246178 -0.745699
+-0.661864 0.135524 0.893137 0.459743 0.81759 0.759988 0.919215 0.172754
+-0.979926 0.185689 0.365976 -0.408455 0.496844 0.828914 0.116831 -0.537032
+0.438368 0.32504 -0.0374737 0.466047 0.526118 0.173433 -0.417122 0.942193
+0.851893 0.778213 0.462288 0.993282 0.390593 -0.982581 0.295066 -0.321388
+0.614328 -0.807427 -0.562029 0.0568302 0.660809 -0.642214 -0.928537 -0.852186
+0.249547 0.175475 0.933737 -0.28369 0.229133 -0.147816 0.443864 -0.203126
+-0.9688 0.450049 0.20203 0.784042 -0.295913 -0.0312097 -0.457373 -0.770108
+0.533278 -0.373477 -0.379462 0.438474 0.200825 -0.0519506 -0.425382 0.505706
+0.355871 0.386051 0.743153 0.454655 0.744657 0.953363 -0.35094 -0.977463
+0.366017 -0.62106 0.905681 -0.947607 0.906391 0.797143 0.266247 0.528978
+-0.549458 -0.684604 0.0390662 -0.32929 -0.677886 -0.784919 -0.786702 -0.610963
+0.321161 -0.701703 -0.196161 0.675761 -0.395796 -0.276971 0.439669 -0.806306
+0.635941 0.640764 0.952784 -0.654622 -0.421039 -0.201594 -0.394228 -0.448705
+-0.3584 -0.341399 -0.0177754 -0.513204 -0.671774 0.961536 0.346114 -0.487067
+-0.60647 0.815841 0.703981 -0.821304 0.0687581 0.809137 -0.000827548 0.41432
+-0.522778 0.371105 0.116334 -0.59484 0.912115 -0.611119 -0.587923 0.269186
+0.267031 0.965863 0.697034 0.702101 0.781557 0.99254 -0.49076 -0.815809
+0.87365 -0.839719 -0.279633 -0.22592 0.813012 0.0435874 0.747437 0.86291
+-0.133208 0.796063 0.85827 0.770385 0.78936 -0.00305904 -0.714272 0.198962
+0.45192 0.938234 0.00246251 0.929763 -0.33744 0.51791 -0.855774 -0.424807
+-0.484192 0.694311 -0.107501 -0.783608 0.341487 0.126003 -0.630579 0.0317058
+-0.523726 -0.282109 0.350271 0.0073639 0.224109 -0.525064 0.819749 -0.126559
+0.349715 -0.818691 0.979166 0.335877 0.827511 0.448404 -0.178738 -0.998246
+-0.986554 0.843464 0.0494969 0.874156 0.644035 0.377021 -0.108501 0.927281
+-0.165659 0.217427 0.696053 -0.418239 0.722399 0.340772 -0.133902 0.0457679
+-0.322195 0.864682 0.296428 -0.455825 -0.161267 -0.94023 0.59127 -0.930389
+-0.607985 -0.666585 0.815694 0.0222016 -0.352874 -0.558811 -0.25617 0.216572
+-0.741508 -0.965064 -0.171648 0.795252 -0.806555 0.0642285 0.262478 0.1701
+0.0294231 -0.022182 -0.569997 -0.302406 0.406219 0.0899895 -0.669984 0.1125
+0.567577 -0.191888 -0.941946 -0.136822 0.06772 0.532028 0.754898 -0.387807
+-0.355954 -0.527357 -0.766761 0.823577 -0.23552 -0.692847 0.674303 0.279432
+0.414774 0.793844 -0.0556157 -0.123008 -0.0587105 0.260584 -0.322527 -0.287282
+0.219779 0.904389 -0.986921 0.431746 0.423658 -0.967195 0.499086 -0.996652
+-0.909703 0.539895 -0.630127 0.869508 0.122599 0.658514 0.425301 -0.860719
+-0.199796 0.661064 -0.105205 -0.66879 0.44428 0.360143 0.492939 -0.460633
+-0.591228 0.955616 -0.928397 -0.33865 -0.0100055 0.678019 0.859405 -0.884136
+0.257959 0.938057 0.733089 -0.508656 -0.327347 -0.226158 -0.788497 0.890343
+0.0917658 0.0452882 0.736755 -0.718124 0.702182 0.623431 -0.307694 0.707526
+-0.448969 -0.0976383 0.261963 -0.060521 -0.407749 0.0671337 0.722232 0.917006
+0.0939932 -0.493438 0.731232 -0.637236 -0.729693 -0.899482 -0.606368 -0.818409
+0.0924388 -0.724056 0.0637412 -0.858471 0.306947 -0.56491 -0.177466 -0.140946
+0.963139 0.657961 -0.550621 -0.532091 0.388969 -0.168796 0.200818 0.954923
+-0.927948 -0.144509 0.851824 0.282163 -0.6838 0.440361 0.793712 0.237032
+-0.761038 -0.344333 0.482373 0.272288 0.330062 -0.89687 -0.750929 -0.895303
+0.891593 0.17512 0.0368649 0.656235 -0.602655 -0.52724 -0.324825 -0.218512
+-0.178757 0.106361 -0.786419 0.385929 0.482041 0.418832 -0.0239656 -0.699096
+0.476948 0.386084 -0.491765 0.218255 0.195142 -0.229045 -0.201467 -0.716236
+-0.245364 -0.178718 0.0261941 0.79052 0.79242 -0.992083 -0.692832 0.41532
+-0.0163223 0.52435 0.557524 0.823774 0.955016 0.0161157 -0.981033 0.143466
+-0.32114 -0.926067 -0.970764 0.534577 0.454701 0.926327 0.24691 -0.0345573
+0.746455 0.290984 0.820033 -0.975666 0.28493 -0.68386 -0.0184387 0.349946
+0.121368 0.824574 0.909234 0.972388 -0.875856 0.931241 -0.190719 0.419245
+0.957067 0.750502 -0.189851 -0.403203 0.790796 0.310838 0.57588 -0.832113
+-0.99678 -0.177133 0.0847001 0.149754 -0.223304 0.0277731 -0.746891 0.124499
+0.328892 -0.558507 0.952343 0.63907 -0.160313 0.359808 -0.0896632 -0.920504
+-0.703425 0.599164 0.454539 0.280253 0.343914 0.268915 0.121279 0.0706275
+0.0819806 -0.0260664 -0.452012 0.534075 0.665468 -0.777891 0.473708 0.82371
+-0.433046 0.034782 0.522489 0.121652 -0.393345 0.677849 0.845486 -0.523482
+0.0787604 0.748632 -0.224027 -0.739522 -0.411641 0.389571 -0.999132 -0.795857
+-0.0229049 0.691355 -0.165205 -0.592761 -0.325611 -0.720616 -0.102312 -0.330572
+0.865303 0.156614 -0.79352 0.255691 0.0807876 -0.626587 0.793079 0.0290817
+-0.945279 -0.0846664 -0.374888 -0.667183 -0.504733 0.235353 -0.194729 0.451198
+-0.624138 -0.522172 0.485696 -0.188533 -0.861529 0.71042 -0.107355 0.129584
+-0.032633 0.103963 -0.973725 0.6503 0.598923 0.543365 -0.222287 0.200471
+0.50997 0.287462 0.546289 0.092789 0.247406 0.306928 0.907567 -0.0817465
+-0.602545 0.429731 -0.160718 0.409995 0.0603658 0.699852 0.944123 -0.279073
+-0.617229 0.94587 -0.293599 0.249853 0.185483 -0.15985 0.376199 0.478009
+-0.913821 0.902843 -0.0319189 -0.163233 0.06097 0.303983 0.388982 0.825583
+0.803066 0.0602229 0.607606 0.264056 -0.0273412 0.368949 -0.448388 0.0894237
+0.474698 -0.0853695 -0.276576 0.12158 -0.466526 -0.106598 0.837411 -0.962005
+0.963205 -0.36027 -0.46135 -0.450732 -0.688112 0.909647 -0.485183 -0.726725
+-0.98335 -0.483217 0.440138 -0.882965 0.591247 0.705897 0.51467 0.311796
+0.932707 -0.482583 0.50795 0.905327 -0.136499 -0.159968 0.572432 -0.833733
+0.308466 -0.918981 0.736131 -0.241078 0.566423 -0.820824 0.0762153 0.998902
+-0.574397 -0.896001 -0.0140756 -0.787536 -0.608351 -0.146387 -0.714798 0.937753
+-0.12184 0.95313 -0.86626 0.164525 -0.780993 -0.286156 0.223559 0.186948
+-0.922137 0.14814 0.484396 -0.208987 -0.999587 0.378318 -0.326022 0.613935
+0.084696 -0.884513 -0.572624 0.0844671 -0.577091 0.275735 0.825845 -0.0805973
+0.925467 -0.330806 -0.466913 0.611224 0.453998 -0.353312 -0.431593 -0.293111
+0.560446 0.913154 0.0906239 -0.663937 -0.347225 -0.329733 -0.0634993 0.460402
+-0.383723 0.114834 -0.905004 -0.691624 0.835869 0.344849 -0.939217 0.537941
+-0.721011 -0.348403 -0.00576813 -0.989891 0.0723988 -0.567613 -0.779642 -0.78354
+0.385344 -0.455507 -0.0233818 0.788528 0.109993 -0.213506 0.456872 -0.834098
+-0.48394 -0.98133 -0.919482 0.17167 -0.371616 0.148954 -0.383733 0.758057
+-0.375511 -0.558951 -0.502408 0.891249 -0.353771 0.560189 -0.16795 -0.543868
+-0.37115 -0.573654 0.510089 0.906864 0.433786 0.510185 0.971383 -0.101245
+-0.234985 -0.683994 0.629377 0.714775 -0.25377 0.821737 0.147973 -0.902029
+0.622774 0.109474 -0.925719 0.954841 -0.838217 -0.838764 0.794163 -0.359638
+-0.969295 -0.70625 -0.169544 -0.944458 -0.715546 0.86016 0.708005 -0.945322
+0.46898 -0.814756 -0.0936694 -0.625662 0.290876 -0.292345 0.804004 -0.756511
+-0.942462 0.461271 -0.133129 0.187726 0.0946201 0.696192 0.359844 -0.844139
+0.563431 0.314016 -0.618401 -0.349053 -0.779491 -0.229991 -0.23926 -0.866743
+0.655119 -0.297929 0.882511 -0.970511 0.438275 0.927748 0.818598 -0.695924
+0.27305 0.391222 -0.55341 0.874844 -0.69446 0.0146682 -0.818413 0.331227
+-0.629138 -0.77631 -0.409139 -0.972164 -0.482111 0.0919363 -0.048589 0.616701
+0.603334 0.440657 -0.708531 0.148558 0.741351 0.171211 -0.913832 0.225193
+-0.290597 0.985929 -0.18809 0.973706 -0.404376 0.997051 -0.14134 0.679776
+0.87582 -0.122859 -0.716285 -0.412934 0.71662 -0.164979 -0.750002 -0.219348
+-0.342228 0.515422 0.356727 0.716068 0.255808 -0.981862 0.299258 0.0274295
+-0.309099 0.407465 -0.940287 -0.642382 0.153391 0.331409 0.506176 0.707616
+-0.974934 0.919957 -0.14204 -0.100708 0.286887 -0.312046 0.323156 -0.146763
+0.665122 0.930822 0.78843 0.0628672 -0.176518 0.810625 0.0252852 -0.838717
+-0.630099 -0.31493 -0.435586 0.778668 -0.161566 0.108783 -0.233434 -0.590801
+0.786437 0.677349 0.905807 0.825616 0.97916 0.884624 0.498115 0.42734
+-0.295858 0.593155 -0.259452 -0.941386 0.492692 -0.445883 0.404013 -0.419882
+-0.795611 0.863705 0.0558309 -0.614871 -0.585717 -0.582341 0.116653 -0.671626
+-0.524893 0.338942 0.334323 -0.755656 0.448694 -0.53751 0.890865 0.728529
+-0.647052 -0.743385 0.710565 0.780498 -0.413726 0.912974 0.750723 0.361914
+0.274769 -0.810813 -0.22343 0.838632 0.603144 -0.780761 -0.39045 -0.74793
+-0.225211 0.115451 -0.0529903 -0.85687 -0.970864 0.711897 -0.163225 0.742498
+-0.698407 0.871296 -0.432346 0.297334 0.578215 0.0895254 0.713119 -0.98793
+-0.380986 -0.125795 -0.435093 -0.354766 0.718332 0.343689 -0.670844 0.373268
+-0.979723 -0.937316 0.311361 -0.291178 0.516959 0.977806 -0.815439 -0.674165
+-0.0323153 -0.710142 -0.743586 0.0624365 -0.701897 -0.190656 0.226054 0.292736
+-0.493086 0.0295618 -0.205672 0.65815 0.129321 0.378478 0.50234 -0.216347
+0.584741 0.84211 0.167401 0.607226 -0.714133 -0.217052 0.412324 0.729219
+0.118591 -0.39914 0.0803751 0.6693 0.566324 0.721258 0.262219 -0.616252
+-0.997376 -0.604019 0.0656538 0.599502 0.00110348 -0.637884 -0.779426 -0.15533
+0.902245 -0.83549 -0.0556138 0.06506 0.651397 0.970983 0.750116 -0.313178
+0.123484 0.0431771 0.060113 0.47014 -0.276801 0.324975 0.0506168 -0.492554
+0.724213 0.68835 0.331324 -0.702835 -0.178587 -0.228648 -0.0399587 0.128594
+-0.0320557 -0.554456 0.665615 -0.089894 0.304825 -0.330259 0.14179 -0.812656
+0.626568 -0.644126 0.937721 -0.882729 0.704299 0.610393 -0.0757684 0.924555
+-0.625918 -0.948106 0.0951738 -0.993843 -0.502306 -0.489336 -0.282158 -0.318153
+-0.207382 0.044949 0.0964022 -0.484303 -0.365384 -0.555911 -0.90306 0.360545
+-0.230588 -0.207239 -0.347432 -0.0525925 0.24211 0.420735 -0.496557 0.612099
+-0.110829 0.428517 0.896458 0.0240659 -0.0684408 0.158986 0.992357 0.789784
+-0.594865 0.180221 -0.509125 -0.784086 -0.603065 0.902279 -0.13072 -0.0459181
+0.972982 -0.128882 -0.191688 -0.271181 0.467487 0.834183 -0.226382 0.124324
+0.226513 -0.713675 -0.133761 0.390153 0.266047 -0.688886 -0.65987 0.0485102
+0.856414 -0.0471387 -0.835046 0.744284 -0.484911 -0.937073 -0.916864 -0.3921
+0.173184 0.481602 -0.582463 0.0924304 0.944067 -0.955617 -0.579323 0.282798
+0.0778271 0.273025 -0.21682 -0.910587 0.249759 -0.903923 0.8988 -0.0383336
+0.278796 -0.383595 -0.337323 -0.0574443 0.32618 -0.518353 0.586899 0.882512
+-0.145354 -0.365954 -0.350825 -0.453288 -0.340702 -0.366973 0.840828 -0.903173
+-0.826925 -0.524238 -0.725683 -0.363874 0.882786 -0.893936 0.834338 -0.845758
+0.981676 0.38459 0.403841 -0.852946 0.831358 0.134174 0.600342 0.319108
+-0.965339 -0.529092 -0.110751 -0.0104939 0.879482 -0.649905 -0.575851 0.43798
+-0.562991 0.0273841 -0.296924 0.374767 -0.0715699 0.59238 -0.257965 0.467256
+-0.163342 0.675786 0.0404688 0.772686 -0.800894 -0.0960582 0.792491 -0.277204
+-0.838616 -0.704292 -0.606351 0.512386 -0.0721938 -0.373044 -0.482231 0.381387
+-0.300435 -0.811809 0.0690514 0.793722 -0.850233 -0.571292 -0.676329 -0.236226
+-0.916339 0.461819 -0.7495 -0.130893 -0.299153 0.856143 0.200783 -0.027939
+-0.782393 -0.379879 0.26394 -0.0156787 0.553081 -0.0766997 0.0507427 -0.923302
+0.860352 -0.170888 0.968314 -0.181919 0.546342 -0.973947 0.312326 -0.799889
+0.81222 -0.451001 -0.68649 0.142295 0.170818 0.760639 -0.681591 0.385237
+0.217836 0.307764 0.314993 0.232972 -0.59703 -0.478095 -0.980271 -0.135897
+0.553113 0.547028 0.957202 0.798325 0.627305 0.0203087 -0.0433017 -0.553673
+-0.0016148 0.951573 -0.418186 -0.496682 -0.239602 0.73593 -0.473037 0.621046
+0.433566 -0.580368 -0.0956536 0.210872 -0.740542 -0.332272 0.850168 -0.0238131
+-0.205609 0.153521 -0.402918 -0.713328 -0.265156 -0.773804 0.725339 0.470349
+0.558929 0.412309 0.730158 -0.0374842 0.479966 0.898242 0.440661 0.497333
+0.629008 0.437205 -0.361182 -0.663844 0.157557 -0.199986 0.113008 -0.41816
+-0.0826236 -0.978743 0.815084 0.39091 -0.338941 0.880036 -0.13348 -0.299471
+0.584767 0.365066 -0.636932 -0.157548 0.542492 -0.193568 -0.0480755 0.30407
+0.361588 0.229671 0.987737 0.157145 -0.472845 -0.3861 -0.858493 -0.471023
+0.724432 0.402472 0.54433 0.687866 -0.103772 0.314791 0.558369 0.870504
+0.901182 -0.117562 -0.687705 -0.434755 -0.532181 -0.407797 -0.975511 0.280664
+-0.1908 -0.588684 -0.937916 0.975736 0.795355 0.50423 -0.708375 0.879924
+0.280243 -0.819291 -0.280556 -0.266857 0.941041 0.275321 0.87149 0.349788
+-0.377843 -0.75705 0.958412 0.88434 0.627061 -0.282291 -0.270561 0.727935
+-0.573253 0.999137 -0.137561 0.787423 -0.277337 0.603983 0.709329 0.71357
+-0.786407 -0.541805 -0.41953 0.0447377 0.0205872 0.602401 0.562479 -0.0216093
+-0.0703607 -0.160516 0.541279 0.130353 0.541861 -0.0802796 -0.144014 0.751182
+0.601665 0.138491 -0.680005 -0.267557 0.381164 0.955646 0.264988 -0.876559
+-0.827176 -0.616917 0.396616 0.382655 -0.10695 -0.506198 -0.741015 -0.473331
+0.88219 -0.745805 0.965667 0.962275 0.950847 -0.407496 0.617847 0.836703
+-0.0415932 0.439522 -0.07451 -0.470155 0.456856 0.875438 0.610125 0.604677
+0.270323 0.320618 -0.0947187 -0.365721 0.760394 -0.472468 0.896321 0.224609
+-0.158006 -0.14951 0.717 0.655573 -0.454379 0.895668 -0.657176 0.248163
+0.138563 -0.0180113 0.191786 0.900287 -0.623111 0.0718001 -0.419325 -0.928102
+0.721988 0.450695 0.054242 0.675887 -0.046098 -0.0776113 0.649494 -0.541712
+-0.973227 0.811297 0.671414 0.254526 0.658319 0.57909 0.600238 -0.675435
+-0.011479 0.86599 0.366494 0.225368 0.140601 -0.000124131 0.144893 0.225741
+-0.0838095 0.387244 -0.689906 0.586899 0.246606 0.218082 -0.774383 -0.177423
+-0.725591 0.175092 0.102378 0.965872 -0.587109 0.543606 -0.0260682 -0.51752
+0.197836 -0.702652 0.520644 0.819619 -0.678164 0.947498 -0.277995 0.107026
+0.776415 -0.875923 0.394003 -0.354281 0.70118 -0.695215 -0.256926 0.0904048
+0.481263 0.146732 -0.425491 0.537589 0.355505 -0.688914 0.989679 -0.663574
+0.915144 0.721881 -0.799716 -0.337425 0.1607 0.381086 -0.954813 -0.90889
+0.861045 0.809379 0.0106808 0.188282 -0.92879 -0.139722 0.235875 0.912959
+0.317596 0.0962255 -0.52784 0.329931 0.619167 -0.369354 0.57385 0.76421
+-0.788329 -0.375513 -0.635246 0.448801 0.614954 -0.0946107 0.431591 -0.475603
+-0.247791 -0.387756 0.501257 0.161509 -0.416007 0.965461 -0.490639 0.951325
+0.351507 -0.5273 0.75251 -0.265674 0.715974 0.228488 0.55418 -0.878948
+-0.231026 0.968163 -0.661585 -0.999387 0.540818 -0.0698159 0.521574 -0.00717663
+0.960331 -0.484705 -0.341116 -0.613373 0.937889 -0.318486 -0.726292 0.527913
+-0.119951 0.300227 -0.44361 -0.56629 0.334748 -0.722119 0.797099 -0.14651
+-0.204771 -0.143151 0.805168 -0.886228 0.0897569 0.547813 -0.237215 0.124713
+0.405914 0.636952 -0.842242 -0.0302225 0.839292 -0.75642 -0.259522 0.396902
+0.38835 0.433439 0.397809 -0.568495 -0.23167 -0.0718805 0.193332 0.0820198
+-0.469228 -0.608177 0.260098 -0.651517 0.367638 -0.650733 0.523926 0.347477
+0.191905 -0.0680753 -0.364185 0.137717 -0.440258 0.312023 -0.725152 0.180157
+-0.103302 0.896225 0.416362 -0.519851 0.774741 0.160886 0.708706 0.721492
+-0.466633 -0.0893367 0.826321 -0.870924 0.761161 0.513968 0.329094 -0.386737
+0.907783 0.365883 -0.366647 0.00331088 0.804544 0.20207 -0.633814 -0.555848
+-0.235618 -0.0339699 -0.0185517 0.360198 0.551649 0.964854 -0.668951 -0.648484
+0.939624 0.34939 -0.744987 0.583514 0.825694 0.369501 -0.455276 -0.478728
+0.867588 0.0923404 0.473362 -0.391421 -0.625188 0.405277 -0.663635 0.23118
+0.98559 0.452073 0.397196 -0.161284 0.824009 0.0686514 -0.243402 -0.458581
+-0.64569 0.941453 -0.71447 -0.113639 -0.492668 0.791628 -0.181362 -0.478111
+-0.0637608 -0.468836 -0.0765535 -0.171667 0.517801 -0.698574 0.962859 -0.893231
+0.451662 0.053278 -0.892541 0.779971 0.526298 -0.187434 0.479513 0.769857
+0.464148 0.910832 0.754622 0.56699 -0.512335 -0.443822 -0.959895 0.00641124
+-0.612024 -0.974763 0.0887326 0.723811 0.250143 -0.678394 0.93651 0.687853
+-0.0962185 0.453788 -0.894264 -0.4403 -0.503982 -0.362084 0.898738 -0.921332
+-0.795003 -0.490026 -0.10242 -0.768762 -0.360123 0.20174 0.227832 0.779859
+-0.869027 -0.166382 -0.837505 0.2924 -0.996497 0.833509 -0.71889 -0.704882
+-0.618075 -0.0733225 -0.972386 0.383851 -0.832165 -0.0710698 0.0938433 -0.0574702
+0.105864 0.95241 -0.468853 0.977143 0.098734 0.621518 0.0742271 -0.225418
+0.758995 0.084791 0.522413 -0.535609 0.738139 -0.56859 -0.880642 -0.833513
+0.575114 0.104168 0.384118 0.948417 -0.881103 -0.720524 -0.453562 -0.60447
+0.453197 -0.484345 -0.498019 0.0352992 -0.506009 -0.813873 -0.866188 0.123789
+0.458891 -0.997015 -0.873448 0.384451 -0.864472 -0.981493 0.886432 -0.821239
+-0.174388 0.731022 0.564594 0.0486276 0.578099 -0.0255768 0.220408 -0.353769
+-0.250461 0.310739 0.54473 -0.0545715 0.806352 -0.10376 0.134289 0.42747
+-0.633519 0.0503947 0.899446 -0.5244 0.877891 -0.540384 -0.237581 -0.236054
+0.51793 -0.402829 -0.74295 -0.50237 0.486262 -0.522252 0.17971 -0.0238329
+0.918786 -0.51196 -0.314827 -0.400451 -0.220271 0.28387 0.309916 -0.139415
+-0.454818 -0.845796 -0.434315 -0.304371 -0.664384 0.15454 -0.198632 -0.0817048
+0.321019 -0.69302 0.0532293 -0.131409 0.53806 -0.624413 0.0382679 -0.71237
+-0.318035 0.46381 0.557568 0.63931 0.909057 0.123634 0.499409 -0.761453
+0.0792408 -0.343298 0.274612 -0.762256 -0.527155 -0.491915 0.258529 -0.485005
+0.831757 0.654417 0.76289 -0.98712 0.540921 -0.358934 0.0907502 -0.795737
+0.438672 0.545536 -0.40142 -0.95785 0.860667 0.31558 0.316762 0.765004
+0.536493 0.973878 -0.480902 -0.227973 0.693516 0.989617 -0.378439 0.265221
+-0.644759 0.301819 -0.644533 0.601933 -0.641316 0.181153 -0.86458 -0.135988
+-0.542538 -0.848576 0.692349 0.079111 0.270207 0.283374 0.0606738 -0.29633
+-0.756621 0.897779 -0.269115 0.164742 0.501106 -0.244866 -0.32088 -0.914074
+-0.0498213 -0.0570648 0.263523 0.908372 0.564612 -0.705888 -0.86702 0.82604
+0.524106 -0.605483 0.537845 0.810716 0.542551 -0.708089 -0.30362 -0.919583
+0.0033156 0.236522 -0.274942 0.907076 0.991233 -0.488817 -0.927317 0.604774
+0.753357 0.437084 -0.321181 -0.330611 -0.88642 -0.500423 0.435738 0.883124
+0.726302 0.0567875 0.619763 -0.0224197 -0.56383 0.792938 0.517057 -0.774178
+-0.0755045 0.52396 -0.316418 -0.527674 0.61262 0.0490231 0.820156 -0.461446
+0.921259 0.74196 0.701823 -0.368448 0.0144466 0.0792542 -0.7888 -0.925565
+0.976048 -0.350421 -0.454161 -0.426072 0.720985 0.208408 0.0451211 -0.866218
+0.274607 0.681934 -0.996008 0.746247 -0.807708 0.408563 -0.923163 -0.37162
+-0.756702 0.875637 0.356668 0.567545 -0.699811 -0.882049 -0.854333 0.362533
+-0.512753 0.774731 -0.67637 -0.745905 -0.774444 0.124573 -0.570468 0.243402
+-0.0898509 -0.22061 -0.458399 -0.0416534 -0.0878776 0.142848 -0.477647 0.756049
+0.000349967 0.480484 -0.232482 0.732368 0.429491 0.470299 0.768061 0.741892
+0.890118 0.0577898 0.152233 0.417615 -0.941858 0.319885 -0.190016 0.71424
+-0.978877 -0.382177 0.944849 0.100975 -0.15484 -0.802377 -0.601933 -0.54424
+-0.228456 0.171383 0.232305 0.103878 -0.0456658 0.163971 0.771114 0.0675747
+0.0165751 0.62803 0.0934436 -0.327452 -0.670034 -0.777859 -0.397378 -0.543197
+0.504346 0.329616 0.687922 -0.925564 0.503927 -0.344951 0.238153 -0.575422
+-0.225979 -0.488465 -0.21703 0.375165 -0.463176 -0.607798 0.378912 0.736663
+-0.140162 -0.114695 -0.463715 -0.359241 -0.0816379 -0.838987 -0.298994 0.661456
+-0.923774 0.996942 0.00563778 0.492051 -0.809241 -0.220833 0.496805 -0.913763
+0.140333 -0.0130841 -0.854971 -0.760718 0.0336346 0.0254133 -0.170119 -0.638502
+0.361199 0.241009 0.856447 0.165383 0.0618192 -0.319219 -0.483658 -0.606498
+-0.124282 0.909326 0.388856 -0.0583138 -0.574562 -0.457529 0.824842 -0.623682
+0.38279 -0.935983 0.825104 0.382438 0.6676 0.801026 0.587021 -0.872922
+0.229531 -0.331683 -0.343916 0.835561 0.10239 -0.429101 0.967624 0.821956
+-0.135739 -0.353168 -0.0449242 0.188729 0.536394 0.992154 0.0872412 0.938832
+-0.994855 0.374559 0.0957442 -0.614064 -0.221976 0.973031 -0.446563 -0.419641
+-0.302373 -0.299059 -0.872026 -0.711552 0.0355826 -0.651896 -0.738868 -0.854359
+0.377706 -0.255825 -0.737457 -0.771 -0.333372 0.151784 -0.524131 -0.482389
+-0.111203 -0.470208 -0.781669 0.638474 -0.681036 -0.219878 0.324534 -0.497162
+0.861592 0.459932 -0.954288 0.341893 0.949 0.324577 -0.613932 0.773538
+-0.33621 0.348251 0.418902 0.139857 -0.666187 0.159527 0.736503 0.152294
+-0.466221 0.397112 -0.606685 -0.771545 -0.302752 0.415823 0.64901 0.0614916
+0.581623 0.774078 0.708457 0.962784 -0.711574 0.940553 0.580483 0.540611
+-0.28569 -0.412809 -0.00786611 -0.54289 -0.898176 0.380764 -0.688689 0.504092
+-0.811939 -0.274285 0.815974 0.481681 -0.32469 -0.934366 0.839547 -0.169832
+0.209099 -0.571355 -0.0470802 0.218184 -0.517936 -0.821072 -0.123108 -0.389733
+0.515922 -0.0245071 0.429742 0.826203 -0.283113 -0.315026 0.598175 -0.118725
+0.00876872 -0.837834 -0.0497919 -0.0266431 -0.984383 -0.179382 0.676681 0.241681
+-0.294095 0.408535 -0.856501 0.385449 0.264363 0.580878 0.369414 -0.426799
+-0.835825 -0.544945 -0.734543 0.780376 0.298703 0.90176 -0.286362 0.955803
+0.392917 0.456737 0.292057 -0.404861 0.467663 0.325697 -0.350189 -0.986631
+0.0282557 0.234152 0.0634116 0.945357 0.495868 -0.816892 0.602026 -0.707111
+0.299164 0.529442 -0.256736 0.184076 -0.548297 0.848613 -0.40698 -0.696608
+0.0445485 -0.531856 -0.0068861 -0.876519 -0.674682 0.973914 0.0447032 0.514157
+-0.0992711 -0.652818 -0.0439884 -0.641035 0.723269 0.859504 -0.905632 -0.882526
+-0.890704 0.782478 -0.424662 -0.192941 -0.66712 -0.349342 -0.6031 0.964571
+0.526555 -0.0567282 0.581412 0.316658 -0.311291 -0.344182 -0.176196 0.0270604
+0.793437 -0.604303 -0.928391 -0.799126 -0.630315 -0.610741 -0.588965 -0.1293
+-0.906492 0.272001 0.341823 0.796484 0.0523215 0.123696 0.904695 -0.12076
+-0.972747 -0.648288 -0.602745 -0.722191 -0.351104 0.500287 0.088745 -0.319842
+0.500934 0.282794 0.0454934 0.605164 -0.780366 -0.329965 0.939782 -0.178307
+-0.838816 0.874248 0.18245 -0.969468 -0.91579 -0.0267874 -0.759045 -0.589663
+0.211185 0.465236 -0.240739 -0.498714 -0.675289 0.587301 -0.337304 -0.872029
+-0.276362 0.622924 0.585823 0.277861 0.063359 -0.754191 0.423178 0.286404
+0.322527 0.338383 0.622437 0.809099 -0.037747 -0.21445 0.00934567 -0.290484
+-0.182961 0.0311626 0.966787 -0.367836 0.177457 -0.173187 -0.43698 -0.39583
+-0.758299 -0.70009 -0.865822 0.612413 0.897207 -0.255269 -0.466869 0.0620859
+0.0918929 -0.34017 -0.402086 -0.162409 -0.348218 -0.827295 0.547759 -0.0633793
+-0.427105 0.89858 0.709572 0.00684876 0.476413 0.83969 -0.478957 0.632089
+-0.371331 -0.672297 0.528203 0.767076 -0.58556 -0.442409 -0.418912 0.135802
+0.267323 -0.200532 0.454927 -0.896557 0.938315 0.55772 -0.563894 -0.74007
+0.870471 -0.72489 -0.972334 0.395925 -0.105143 0.629998 0.518278 -0.517841
+-0.29891 0.832678 0.549625 0.271397 -0.823728 0.875052 -0.456435 -0.448438
+-0.0586764 0.194515 0.407848 0.14095 0.619632 -0.980324 -0.117258 -0.815876
+-0.933897 -0.28261 0.634805 0.301492 -0.972994 -0.134614 -0.12992 0.701162
+0.639765 -0.406018 -0.59692 0.570878 0.640079 -0.825857 -0.291862 0.34047
+-0.583488 0.12816 0.688513 -0.575937 0.53116 0.845981 0.116178 -0.549486
+-0.777821 -0.177186 0.730038 0.98904 -0.89302 0.885844 0.840692 0.631682
+0.632508 0.219905 -0.244135 -0.412468 -0.668984 0.943456 -0.0197695 0.104622
+-0.0940114 0.233033 -0.747028 0.376862 -0.980243 -0.284161 0.221297 -0.957587
+-0.901751 -0.402335 0.615905 -0.468134 0.247774 0.397941 -0.884356 -0.888632
+0.130646 0.0827703 -0.603369 0.271076 0.423045 -0.260751 -0.373238 0.419404
+-0.687241 -0.523622 0.814121 -0.55475 0.880876 0.663568 0.812579 0.376562
+-0.262174 0.356007 0.267313 -0.658261 0.0691339 -0.663666 -0.18604 0.395529
+-0.165158 0.488524 0.855688 -0.523008 -0.129683 0.46563 0.78824 -0.791651
+-0.581014 0.597263 -0.0503741 -0.165992 -0.8116 0.79565 0.92139 0.23766
+-0.672821 0.60898 0.752071 0.483987 0.146269 -0.91847 0.108537 0.243277
+0.923749 -0.243402 0.308673 -0.911232 -0.677737 -0.440247 0.744561 -0.398138
+0.575828 0.407175 0.760658 -0.172748 -0.00405966 0.415096 -0.679837 0.934977
+0.0950945 -0.0456896 -0.872209 0.989618 -0.049148 -0.555535 -0.321886 0.272169
+0.487764 -0.27916 0.871749 -0.984377 -0.376352 0.561644 0.229217 -0.994861
+0.872511 -0.101974 0.105318 -0.140537 -0.183839 -0.0312317 -0.866099 -0.298308
+0.699842 0.155432 0.87801 0.64462 0.00403796 0.466432 -0.795627 -0.685231
+-0.683326 0.751886 -0.69546 -0.568289 -0.76068 -0.508528 -0.484421 0.249769
+-0.528628 -0.291938 -0.141746 -0.770612 -0.186257 0.883314 0.388875 -0.234146
+0.350193 -0.428158 -0.7459 -0.349548 0.572079 -0.0250603 -0.228663 -0.977659
+-0.388133 -0.876622 -0.253835 -0.557926 0.458291 0.639308 -0.0519916 -0.04663
+0.161414 -0.00827725 -0.107576 0.629214 -0.633143 0.348901 -0.749198 -0.74827
+-0.0587521 -0.759471 0.947034 -0.225698 -0.0076309 0.166646 0.72231 0.962406
+0.228604 -0.656118 0.492903 0.591451 -0.0412384 -0.763194 0.218953 -0.75096
+-0.0853158 -0.0288549 -0.395504 0.596218 0.532552 -0.0724938 0.599071 0.685863
+-0.309642 0.0939375 -0.143125 -0.722295 0.357981 0.498287 -0.774542 0.786052
+0.261744 -0.306346 0.472413 0.705548 0.481577 -0.582633 -0.716086 -0.336843
+0.09798 -0.556612 -0.511358 -0.975902 -0.234911 0.101811 -0.0825996 -0.694234
+-0.0738821 -0.525627 -0.651907 0.375882 -0.250062 0.713097 0.124152 -0.769629
+0.217827 -0.70236 0.770399 -0.361043 -0.776906 0.577841 0.283512 -0.0524186
+0.373881 0.0340662 -0.696774 0.76993 -0.0190527 -0.989262 0.318189 0.285332
+0.0795496 0.0930517 -0.354266 -0.865884 -0.647234 0.190744 -0.212696 -0.607302
+0.697017 -0.3633 0.763994 0.56485 0.852337 0.65899 -0.852101 -0.00132943
+0.840541 0.238459 -0.594806 -0.96931 -0.102222 -0.47928 -0.0224324 0.0384352
+0.496916 0.577207 -0.441211 -0.877902 -0.618756 -0.677445 -0.849987 0.0307652
+-0.391906 -0.934762 -0.476748 0.904321 -0.666687 0.456262 -0.913208 0.538686
+-0.622405 0.747127 0.355453 0.941675 -0.138281 -0.364041 0.859529 -0.705589
+-0.220003 -0.828672 -0.418765 -0.304503 -0.56044 -0.0464992 0.980377 0.174231
+-0.873058 -0.367132 -0.811555 -0.34624 -0.146387 -0.089031 -0.343529 0.640726
+-0.463947 -0.158464 -0.469379 0.618198 -0.866839 0.893599 -0.378412 0.473208
+-0.433498 0.1337 0.133971 0.797691 0.689436 -0.900095 0.647485 0.229876
+0.822318 -0.0500753 0.654512 -0.801272 0.973569 -0.908658 -0.213578 -0.596733
+-0.175229 -0.30907 -0.229341 -0.799842 0.14742 -0.71894 -0.271957 -0.809688
+0.756969 0.0647562 -0.556409 -0.867341 0.935732 0.705752 0.867598 0.403568
+0.900701 0.616795 -0.804695 -0.357841 0.849394 0.968658 -0.153075 -0.0127006
+0.459091 0.244803 -0.988288 0.50804 0.310159 -0.619608 0.104331 -0.271515
+-0.0131555 0.081407 -0.53846 0.72394 0.37893 -0.00165161 0.0607774 0.833515
+0.0147606 -0.791332 0.347137 0.15768 0.533896 -0.555295 -0.162536 -0.230331
+-0.618749 -0.0898566 -0.630924 0.374219 -0.959814 0.315794 0.701011 0.477475
+0.0400638 0.568849 -0.760913 -0.68221 0.514091 -0.312234 -0.345115 0.261302
+-0.20384 -0.318684 0.166508 0.37568 0.0633076 0.231149 -0.813706 0.651435
+-0.043047 0.192414 0.327987 -0.293963 0.875594 0.89737 0.275166 -0.151287
+0.447596 0.840841 -0.933354 0.249121 -0.595451 -0.259476 -0.52932 -0.772351
+0.738218 -0.287759 -0.716446 -0.769356 -0.347781 -0.893608 -0.560328 0.716437
+-0.41101 -0.804579 0.977996 -0.351573 -0.392059 -0.757424 0.375409 0.0162358
+0.0480087 0.934702 -0.672329 0.635712 -0.00300719 0.214493 -0.832019 -0.771661
+-0.421777 -0.271635 0.718182 0.583991 -0.626458 -0.00333879 0.727638 0.823556
+-0.0382401 -0.262535 0.972411 -0.399773 -0.669322 -0.422892 0.206397 -0.543495
+0.703215 -0.855285 -0.604492 -0.282483 0.441433 -0.24338 -0.154623 -0.48984
+-0.58621 0.541519 0.546088 0.794191 -0.882634 -0.605676 -0.298874 0.374352
+-0.126557 0.555681 -0.287025 0.318666 0.530153 -0.397346 0.576145 -0.638613
+-0.917444 0.296461 0.955836 -0.65721 0.695861 0.043674 -0.624715 0.690593
+0.986136 -0.660492 -0.733043 0.576596 -0.553081 -0.775878 -0.931387 0.573468
+-0.527571 -0.575773 -0.579764 0.788955 0.315556 -0.335398 -0.184458 0.72793
+0.0136059 0.0681429 0.548535 0.142222 0.0239615 0.995879 -0.866157 -0.142694
+-0.557506 -0.0331198 -0.0317959 0.515413 0.283685 0.604645 0.922669 -0.154334
+0.883074 -0.505844 -0.460389 0.485507 0.401237 0.265223 0.104808 0.428291
+-0.661414 0.39231 -0.25108 0.57457 0.387117 -0.877487 -0.749304 0.404519
+0.534068 -0.331007 -0.146343 -0.977265 0.20961 0.160137 0.437703 -0.609875
+-0.308816 -0.665959 0.47042 0.0504511 -0.626521 0.811507 -0.852126 0.760364
+-0.078426 -0.438817 0.381848 -0.0238299 0.565028 -0.570837 0.534991 -0.889088
+-0.931507 0.186301 0.797062 -0.223884 -0.178746 0.786467 0.891901 -0.766474
+0.170792 0.938991 0.213343 0.33078 0.972223 0.157726 0.754286 -0.469261
+-0.153329 0.636921 0.888783 -0.6106 -0.702787 -0.120373 -0.0259913 -0.573057
+-0.681333 0.351697 0.819066 0.782317 0.299589 -0.209447 -0.0239501 -0.708697
+-0.0485829 -0.849968 0.366031 0.894566 -0.236988 0.417351 -0.027951 -0.454019
+-0.504835 -0.286129 -0.744047 -0.974466 0.422891 0.305965 -0.658884 0.455997
+0.443154 -0.872624 -0.69793 -0.217703 0.119623 0.382854 0.731145 0.764561
+-0.103426 -0.429499 0.861196 0.513499 0.467221 0.278728 0.888892 -0.859868
+-0.236591 0.982268 -0.123918 -0.870957 -0.485913 -0.384631 0.269559 0.681465
+-0.969833 -0.419319 0.64387 -0.824699 -0.601057 0.0015978 0.526771 -0.182932
+0.167587 -0.992645 -0.771173 0.278499 -0.0384297 -0.0274552 0.418631 -0.410953
+-0.265885 0.301537 -0.14445 0.463352 0.590728 -0.158784 -0.0902518 0.678023
+-0.807479 0.661826 -0.403457 -0.430091 0.668091 0.59243 -0.310691 0.454404
+-0.575875 -0.37056 -0.359989 -0.7231 -0.712069 -0.528939 0.641205 -0.226798
+-0.218395 0.206113 -0.29861 -0.879979 0.0130812 0.311978 0.727739 -0.388292
+-0.927151 -0.558819 -0.519273 -0.0980931 0.665045 0.665278 -0.232994 0.351635
+-0.977552 -0.80713 -0.647368 0.637197 0.0915763 0.809541 0.274054 -0.224862
+-0.164315 0.364527 -0.800353 -0.792172 0.847013 0.187365 0.0990939 -0.412477
+0.372143 -0.551978 0.402478 0.312149 -0.0522783 -0.856704 0.901229 -0.118029
+-0.345782 -0.821606 -0.679754 0.990239 -0.0118953 0.214492 0.69436 -0.0135066
+-0.436876 0.929784 0.497388 0.200406 -0.598338 0.589664 -0.852718 0.820035
+0.0563828 -0.95758 -0.845192 -0.798894 0.707567 -0.738946 0.958976 0.965312
+-0.135131 -0.42393 -0.39051 0.791436 0.532899 0.910974 0.193791 -0.200857
+0.873451 -0.58441 -0.118604 -0.798794 -0.0241556 0.309326 0.402356 -0.854476
+-0.714225 0.669105 0.153772 -0.335128 -0.545302 -0.910632 -0.428904 0.0103926
+-0.0911475 -0.0617885 0.525746 -0.993839 0.262267 -0.730372 0.0696819 -0.561545
+-0.421976 0.889024 -0.211543 -0.643264 0.0494218 0.343296 0.119638 -0.107548
+0.36477 -0.506497 -0.784439 0.736339 -0.908276 0.276037 0.615321 0.280225
+-0.570541 0.0991791 -0.0575483 -0.612905 0.760565 -0.11731 0.498152 0.720806
+-0.173592 -0.932767 -0.324539 0.551885 0.542661 0.982325 0.141416 0.0749308
+-0.64489 -0.937608 -0.424643 -0.89868 0.676486 0.470915 0.541542 0.645032
+-0.58852 -0.517797 0.91728 0.797466 0.171727 0.537008 0.413464 0.0792674
+0.725099 -0.467204 0.419716 -0.453448 -0.12609 -0.600627 -0.876101 -0.0280678
+0.500841 -0.629449 0.216681 -0.331148 -0.574679 -0.648917 -0.488191 0.577152
+-0.739027 0.228226 -0.567767 -0.969028 -0.253798 -0.717974 0.0696748 0.0938428
+-0.927949 -0.423073 0.787491 0.331996 0.0850664 0.7873 0.163322 0.436217
+0.0308512 0.228962 0.0324198 0.494983 0.874798 0.206818 -0.0354002 -0.0951359
+-0.298199 0.635572 -0.750356 -0.16748 -0.213532 -0.246433 0.239039 -0.347236
+-0.625589 0.14159 0.82336 -0.450564 0.553692 -0.598211 0.299441 0.759206
+0.348087 -0.713231 0.372781 0.385948 0.642597 -0.738866 -0.895538 -0.743501
+-0.382141 -0.396326 -0.971747 0.696216 -0.292185 0.573439 0.247653 -0.147936
+0.80625 0.800385 -0.700048 0.351293 -0.926384 0.257988 0.55101 -0.815838
+0.409352 -0.0711105 -0.701948 0.925536 0.310476 -0.0162135 -0.969555 -0.790082
+-0.528257 -0.209494 -0.483273 -0.155396 0.604412 0.990433 0.519163 -0.795194
+0.769942 0.442149 0.421451 0.588982 0.969506 0.201319 0.0616305 0.94586
+-0.973679 0.215293 -0.941432 0.908672 0.136433 -0.188619 -0.379484 -0.104493
+-0.415368 -0.919933 -0.223428 0.236506 0.410394 -0.264152 -0.117417 0.243977
+0.322721 -0.305795 -0.877695 -0.289087 -0.252315 0.34939 -0.183321 0.709864
+-0.261912 -0.687879 0.565977 -0.834074 0.158382 -0.518495 0.885207 0.697517
+0.205533 -0.042898 0.8289 0.0454625 -0.0248576 0.763017 0.962756 -0.572692
+0.959316 -0.036971 -0.094245 0.323684 0.663768 -0.199927 0.351647 0.81876
+-0.826478 -0.365443 0.420705 0.962953 0.794163 0.427182 -0.611511 -0.61819
+0.475511 -0.793381 -0.723674 -0.852891 -0.889669 0.640189 0.856983 -0.290165
+0.633274 0.292767 -0.253832 0.242778 0.873079 -0.99642 0.892524 0.361816
+-0.863646 -0.913512 -0.288336 -0.756333 -0.397216 0.686055 -0.136304 -0.678875
+-0.633119 -0.744407 -0.588538 -0.00867756 -0.226401 0.0968277 0.362938 0.565491
+0.915974 -0.737677 -0.0173621 -0.384381 0.0729694 0.215846 0.904642 0.237143
+-0.185859 0.631033 -0.801478 0.997759 -0.723299 0.93095 0.773143 0.594227
+-0.289559 0.322607 0.757116 0.559505 0.949622 -0.27274 -0.792751 0.391485
+0.289462 -0.822898 0.0272 -0.445521 0.620849 -0.00287989 0.312331 -0.797289
+-0.154895 0.767109 -0.267342 -0.953723 0.543938 -0.866447 -0.0941029 -0.339166
+0.519829 -0.821429 0.75125 -0.113211 -0.617758 0.296394 0.028915 0.370434
+-0.391275 0.576168 -0.961182 0.48575 0.798456 0.0891443 0.832443 -0.964255
+0.912362 0.819835 0.900146 0.0447154 0.639345 0.702846 0.911199 0.0560238
+0.0315657 -0.358377 0.349247 0.630195 0.249739 -0.969036 0.744419 0.565511
+0.280934 0.125016 -0.580872 0.536871 0.348812 -0.88015 -0.660975 -0.999603
+-0.15396 0.313619 0.261226 -0.222399 -0.71731 -0.451114 0.311605 -0.303305
+-0.033923 -0.940143 -0.648723 -0.776813 0.381103 -0.368571 0.270384 0.0804864
+0.293465 0.729439 -0.794396 -0.165949 -0.481165 0.565788 -0.951154 -0.347625
+0.885893 -0.648988 0.676499 -0.0471971 -0.748788 -0.460324 -0.019368 -0.957997
+0.202859 -0.954417 0.33712 -0.117888 0.400289 -0.941898 0.75673 0.303229
+0.596352 0.454783 0.858148 0.771329 -0.720131 0.99016 0.994014 0.759047
+-0.592595 -0.629853 0.733491 -0.459211 -0.441861 0.0822931 -0.409895 -0.0787478
+0.184709 0.533202 -0.847097 -0.907619 0.0118464 0.936569 0.196118 0.254834
+-0.884053 -0.532799 0.910126 0.475674 0.666932 -0.628023 -0.576535 -0.469368
+0.891465 -0.793515 0.50095 0.842043 -0.462611 0.0398849 0.62048 0.596908
+0.43778 0.300052 -0.0114264 -0.323756 0.571497 -0.330773 0.805934 -0.284496
+-0.792036 -0.0501875 0.437801 0.148841 0.734703 0.30062 -0.715432 0.108541
+0.845658 -0.162659 0.154013 -0.0147165 -0.102836 -0.518214 -0.0524601 0.211388
+0.774781 0.709874 -0.68275 -0.899831 -0.562339 0.421571 0.669019 0.749238
+0.948515 0.834915 0.27058 0.269523 -0.721323 0.232853 0.123963 -0.8937
+-0.265647 -0.589781 0.14842 -0.845417 -0.698621 -0.220769 0.851933 -0.798709
+0.559397 -0.899814 -0.726456 -0.41406 -0.339211 0.557953 0.52204 0.932899
+-0.022377 0.950529 -0.667494 -0.215668 -0.938877 -0.214596 -0.809057 0.046996
+-0.408067 -0.980112 0.238443 -0.752431 -0.799308 -0.336314 0.319919 0.189053
+-0.763031 0.277874 0.120553 -0.854431 0.867596 -0.510476 -0.385128 -0.992872
+-0.0576368 0.137547 0.563772 -0.864928 -0.769947 -0.434662 -0.342907 0.620904
+-0.0160516 -0.132959 0.244994 -0.188478 -0.777315 0.992548 -0.0024895 0.979159
+-0.730022 -0.00247484 0.990202 0.312306 0.237458 -0.35138 0.137266 0.455564
+0.956368 0.310525 -0.854778 0.411043 -0.952062 0.358463 0.231315 -0.0518105
+-0.0672578 -0.207477 0.288971 0.0380662 0.690969 -0.268031 0.919081 -0.115396
+-0.704587 -0.154296 0.136428 0.954856 0.330782 0.481386 0.471715 -0.219455
+-0.203376 0.920095 0.697111 0.55034 0.383709 -0.262638 -0.817549 0.227347
+-0.463615 -0.291141 0.0250162 -0.00726496 -0.198275 0.58227 -0.211953 0.593673
+0.857279 0.841782 -0.449536 0.64487 -0.0307082 -0.0592299 0.648799 0.563618
+0.341086 -0.806764 0.890553 0.7288 0.389373 0.0534525 0.768573 -0.853393
+0.735197 -0.527257 -0.0361665 -0.0291081 0.524811 -0.753464 0.590635 0.242473
+0.758816 -0.904507 -0.294953 0.400438 0.625616 -0.542324 -0.846579 0.207886
+-0.773352 0.584384 -0.906816 0.790825 0.564684 -0.997325 0.363822 -0.0303743
+0.849792 0.34236 -0.47525 0.187017 0.809634 -0.330487 -0.0429083 -0.451028
+-0.518092 -0.772305 -0.785787 -0.0447383 0.194206 0.98632 -0.195761 -0.700767
+-0.522136 -0.931827 -0.800064 -0.154929 -0.274584 -0.987216 0.515634 -0.833795
+0.665241 -0.869177 -0.747338 -0.0971025 -0.502152 0.244928 0.811075 -0.423818
+0.630245 -0.945272 0.859781 -0.986722 0.231161 -0.615765 0.772432 0.61465
+0.884009 -0.935077 0.361179 -0.517252 0.247166 -0.107838 0.275589 0.0451575
+0.239435 -0.932808 -0.389149 -0.541961 0.612902 -0.285752 0.315727 0.632086
+0.439833 0.462677 -0.675846 0.0639894 -0.971488 -0.497908 -0.994998 -0.983985
+-0.665924 0.158148 -0.574551 -0.539711 0.329338 0.658037 -0.836134 -0.549203
+0.323902 -0.767664 0.743178 -0.20366 -0.702825 0.572041 -0.0672957 -0.820981
+0.929342 -0.232172 0.912706 0.492563 0.594423 -0.765973 -0.777843 0.222314
+-0.353925 -0.714375 -0.745331 -0.590585 0.608246 0.316576 0.25868 -0.181157
+-0.954547 -0.268678 -0.0259193 0.636473 -0.00576454 0.504652 -0.983029 -0.999909
+-0.977427 -0.439742 -0.634293 -0.443093 -0.208878 -0.917314 0.460906 0.668095
+0.404642 0.172564 -0.313897 0.0348753 0.314359 0.582387 0.587393 -0.406708
+-0.683042 -0.730176 0.28103 0.0451851 -0.536919 -0.440717 0.647332 -0.499174
+0.181887 0.957391 -0.937752 0.599208 -0.537083 -0.426277 -0.11741 -0.50889
+0.246802 -0.644743 0.906881 -0.0991696 -0.00592176 0.808702 -0.0879378 -0.136421
+-0.654269 0.913209 0.936144 0.186601 0.286651 -0.505364 -0.711188 0.216235
+0.897288 0.68245 0.773807 -0.519927 0.482965 0.963589 0.901341 -0.5257
+0.0480231 -0.66276 0.274623 -0.612045 0.546233 -0.565404 0.521747 0.0284632
+0.556798 0.111723 -0.317132 0.582086 0.743024 -0.231451 0.842579 -0.639296
+-0.17357 0.131176 0.67723 -0.844804 0.273531 0.41979 0.146505 -0.209657
+-0.621485 -0.292841 0.473998 0.0377861 -0.150556 0.27686 0.795891 0.154968
+-0.880345 -0.421512 -0.893228 -0.558276 -0.660662 0.233274 0.279943 -0.724258
+-0.00866459 -0.869644 -0.510631 -0.675563 0.874323 -0.647973 0.361705 -0.0513744
+-0.765622 -0.840489 0.349422 -0.45233 0.372522 -0.879064 -0.255937 0.883011
+0.289411 0.796227 -0.906529 0.303926 -0.720834 0.0183671 -0.244382 0.266483
+0.20845 -0.849936 0.0364291 0.769035 0.388537 0.208324 0.719498 -0.817213
+0.571492 0.296124 -0.612299 -0.268751 -0.59594 -0.612136 0.527542 -0.401115
+-0.554466 0.040609 0.27548 -0.765129 0.200401 0.0717073 0.968369 0.20067
+0.491465 -0.79106 0.011206 -0.793763 -0.246114 0.612065 -0.16963 0.0736798
+-0.496521 -0.157787 0.868321 -0.521676 -0.685509 -0.240769 -0.0398775 0.552004
+0.165768 -0.963096 -0.568903 -0.983895 0.824196 0.0279871 0.454328 0.218824
+0.740034 -0.912918 -0.887235 -0.599089 0.79243 -0.512696 0.518684 -0.00402916
+-0.327851 0.914753 0.890236 -0.656269 0.852599 -0.427016 0.365611 0.612482
+0.066393 0.255606 -0.843267 -0.643871 -0.112525 -0.464752 0.81926 0.463016
+-0.467603 0.410669 -0.423947 0.119199 -0.687074 -0.784492 0.63345 -0.286635
+0.98679 0.456341 -0.678906 0.0648139 -0.737 0.248312 0.731778 -0.409536
+0.513261 0.661747 0.565116 -0.625691 0.648478 -0.163854 0.143801 0.499486
+0.840303 -0.817532 -0.231689 0.39123 -0.903837 -0.47848 0.225207 -0.852077
+0.123674 -0.311777 0.290866 -0.0950451 -0.426041 0.86066 -0.748283 -0.632109
+-0.521492 0.0864328 -0.32038 0.840318 -0.77951 -0.606943 0.782581 0.777126
+-0.15473 -0.511288 -0.730831 0.793147 -0.586367 0.0114341 0.200563 0.879166
+0.250878 -0.199742 -0.729809 -0.487566 0.422522 0.864251 -0.0122899 -0.0645909
+0.397044 -0.205551 0.886822 -0.436877 0.369261 0.480061 0.318214 0.575161
+-0.841199 0.463341 0.281459 -0.848436 0.756315 0.572097 -0.846394 -0.746386
+-0.44147 -0.181421 -0.623874 -0.901199 -0.761866 -0.702611 0.66056 0.560011
+0.00865089 0.617429 0.60499 0.0953529 -0.0678855 -0.701857 -0.802685 -0.219635
+0.420718 -0.839643 -0.332753 -0.0244583 -0.254837 -0.157819 -0.155316 0.596616
+0.721415 -0.690868 -0.533421 0.857715 -0.526885 -0.887416 -0.554687 -0.315093
+-0.0237967 0.247744 0.0436885 0.0905536 0.697041 -0.942072 -0.73151 0.357572
+-0.0985748 0.2026 -0.533896 0.827953 -0.147183 0.18746 0.553788 -0.560407
+0.244526 -0.0242629 0.959511 -0.35888 0.827606 0.525406 0.916333 0.116075
+-0.862214 0.0870938 0.355415 0.25719 -0.912298 0.832491 0.291841 -0.209333
+-0.103273 0.299104 0.102417 -0.755506 0.395904 0.449318 -0.922041 0.343038
+-0.996375 0.539566 -0.810872 -0.457363 -0.00370834 -0.915863 -0.0582603 -0.773698
+-0.502701 0.281822 0.333183 -0.984507 0.568097 0.635937 -0.32079 -0.505801
+0.853921 -0.36294 0.152173 0.703791 0.173053 0.747136 -0.708884 -0.807983
+-0.146087 0.983002 -0.0854224 -0.899636 -0.945061 0.545917 -0.844186 -0.956619
+-0.159242 0.40135 -0.970597 0.814538 0.248151 -0.984629 0.0420052 0.150303
+0.68965 -0.0845069 -0.118973 -0.0804514 -0.342862 -0.809644 0.484086 -0.940726
+-0.591145 0.284674 0.491459 -0.0577902 -0.102593 -0.776112 -0.712163 0.795008
+-0.415303 -0.79179 -0.962326 0.959955 -0.405948 -0.173242 0.690971 0.631169
+-0.472481 -0.726465 0.330005 -0.521806 0.674279 -0.651179 -0.199559 -0.0987495
+-0.777557 -0.788969 -0.835652 -0.13577 0.506319 0.995402 -0.210915 0.143186
+0.523246 -0.71789 -0.963673 0.264485 0.989123 -0.411849 0.746188 0.0228331
+-0.783776 0.708437 -0.923628 -0.34587 0.184657 -0.955679 0.874086 0.0372084
+-0.821056 -0.172536 -0.871285 -0.812582 -0.426327 0.489858 0.505255 0.787761
+0.523894 0.509191 0.450586 -0.948326 0.336666 0.328266 0.175533 0.132165
+-0.0335831 -0.713004 -0.271654 -0.362875 -0.987953 -0.142638 0.349005 0.328507
+0.0100541 -0.799865 -0.733318 -0.792683 -0.745214 0.613791 0.753187 0.362633
+0.884437 0.500743 0.742149 0.738966 -0.666168 0.50721 -0.412618 -0.956246
+0.732696 -0.908065 0.535723 0.535157 0.351496 -0.902803 -0.683144 0.138511
+-0.132169 -0.434749 -0.72639 0.314277 -0.516514 0.61994 0.0519247 -0.308297
+0.317812 -0.37567 -0.495581 0.750164 -0.569595 -0.657367 -0.831786 0.372993
+-0.932849 0.260294 -0.989796 0.358031 0.32691 0.612817 0.666925 -0.604385
+-0.414279 -0.470107 0.846858 -0.310571 0.971106 0.667517 -0.140636 -0.287537
+0.35593 0.240565 0.773082 0.827102 0.891107 0.818325 -0.633923 -0.716162
+0.569729 0.48686 -0.573935 -0.0971379 0.242509 0.621819 0.343014 -0.889115
+-0.22017 0.67562 -0.106311 0.0444585 -0.020977 0.695225 0.00345053 0.715914
+0.674576 -0.421233 0.65987 -0.431844 0.542729 0.605938 0.858969 0.438134
+0.963366 -0.837117 0.0781909 -0.838091 -0.168628 -0.2336 0.937015 0.739941
+0.718574 0.581652 -0.858404 -0.401037 -0.00716871 -0.707419 -0.467581 -0.78914
+-0.151921 -0.94791 0.6188 0.817459 -0.709341 -0.926268 0.0723514 0.336622
+0.96258 -0.75766 0.396941 0.718143 -0.169828 0.122031 -0.0367065 0.7384
+0.263628 -0.880443 -0.124994 0.266299 -0.257957 -0.0265027 0.921781 0.844244
+0.998924 -0.233981 0.673804 0.185795 -0.399473 -0.367174 0.850937 0.784937
+-0.562042 0.346308 0.765645 -0.946488 0.623402 0.530048 -0.14034 -0.347501
+-0.999026 -0.186878 0.17968 -0.46803 0.507831 0.843023 -0.837577 0.531084
+-0.10777 -0.88443 0.280961 0.19961 0.516423 -0.0250554 -0.0374467 0.944339
+0.648775 0.43716 -0.0294552 -0.291237 0.429182 -0.014207 -0.999934 0.616593
+0.5151 -0.370435 0.925594 0.127702 0.91067 -0.950674 -0.852667 -0.451298
+0.551099 0.201026 -0.216906 0.435788 -0.0886131 0.835681 -0.452632 0.06121
+-0.762853 -0.275637 -0.0452351 -0.43197 0.348678 0.692471 -0.0250651 -0.837511
+-0.000705068 0.693438 0.329145 0.784132 -0.837982 -0.270238 0.876447 0.288744
+0.581061 0.875979 -0.22214 -0.977312 -0.286251 0.654071 -0.431568 -0.132034
+0.118309 0.37006 -0.278813 -0.166397 0.344885 -0.41479 -0.708495 -0.401663
+0.50952 0.85496 -0.42861 0.258136 0.864074 -0.705577 -0.547031 0.548996
+0.603454 -0.379478 -0.447613 -0.704614 0.294644 -0.646423 -0.662817 -0.353713
+0.629235 -0.855449 -0.501383 -0.180815 0.0642744 0.978021 -0.885866 0.667011
+-0.277067 -0.800078 0.357491 0.852214 0.214084 0.602324 0.630773 -0.934377
+0.822629 -0.42572 -0.0414185 -0.238885 -0.897346 0.952023 0.468097 0.50996
+0.187288 -0.396971 -0.909384 -0.229735 0.723638 -0.0262056 -0.663937 -0.517033
+-0.744808 -0.305843 -0.0132199 0.0133952 0.592778 -0.817288 0.785724 0.226325
+0.115543 -0.674744 -0.430768 0.475621 -0.201807 0.223091 -0.162097 -0.525051
+-0.280492 0.0154554 -0.850462 -0.793395 0.630453 -0.482961 -0.0385223 -0.377634
+-0.113907 -0.562943 -0.49774 -0.96475 -0.803074 -0.648262 0.7712 -0.263702
+-0.42579 0.264327 0.772499 0.707879 -0.663871 -0.0649428 0.845919 -0.573576
+-0.968266 -0.011629 0.618734 -0.539617 0.501684 0.156367 0.260198 0.326613
+-0.616168 0.731211 -0.346115 0.838324 0.680605 -0.582237 0.588383 -0.736307
+0.22 0.781366 0.404332 0.363306 0.280824 0.0860145 -0.844068 -0.346392
+-0.989464 0.816089 0.396796 0.13281 0.306754 0.0244165 -0.558434 -0.041283
+-0.571711 -0.561174 -0.756804 -0.761599 0.726301 -0.435965 -0.42099 0.310841
+-0.3506 -0.177054 -0.100774 0.828329 0.903417 0.444617 0.786963 -0.364767
+0.576912 -0.247691 0.940025 0.124626 -0.345186 -0.799237 0.972112 0.293386
+-0.756064 0.0174836 0.346254 0.729743 0.177827 -0.989281 -0.626815 -0.181518
+0.0113047 0.710335 -0.157297 0.8192 -0.7834 -0.972748 0.880057 0.686708
+-0.984164 -0.776617 0.224398 0.397543 0.665649 0.254794 0.802654 0.728762
+0.331912 0.983285 -0.161468 -0.634742 0.608703 -0.442285 0.636728 0.566193
+-0.141833 0.931464 -0.392285 -0.117315 -0.665514 -0.718371 -0.68684 0.134075
+0.0653097 -0.0704623 -0.254018 0.905615 0.45013 -0.657428 -0.404572 0.000768281
+-0.685062 0.280918 0.325373 -0.885701 0.336282 0.216995 0.641761 -0.608141
+-0.607014 0.749325 0.587225 -0.0221953 -0.0550681 0.646176 0.42147 0.338693
+0.635026 0.20767 0.662579 -0.0780125 -0.850308 -0.438233 0.166219 -0.623084
+0.861369 -0.456771 -0.915508 -0.469572 0.451801 0.0122024 0.0242943 0.322577
+-0.414223 0.784582 -0.433078 0.799838 -0.324865 -0.991578 -0.622669 0.178575
+0.0565888 0.135022 0.619722 0.671557 0.425162 -0.421601 -0.25108 0.821844
+-0.797878 -0.220905 0.0967337 -0.743334 -0.649678 -0.979725 0.179823 0.741467
+-0.456997 0.616709 -0.802383 0.504038 -0.273702 0.192112 -0.273834 0.586739
+-0.184189 0.347775 0.980186 -0.107538 -0.619015 -0.866729 -0.691914 -0.87061
+-0.147123 -0.123446 0.933143 -0.627955 -0.864982 0.857844 0.446014 0.636984
+0.579715 -0.664341 -0.663416 0.60679 0.961587 -0.955314 -0.46082 0.323185
+-0.763326 -0.317488 -0.0296931 -0.543851 0.196844 -0.503798 -0.326354 -0.043125
+-0.470543 -0.541783 -0.314201 -0.795537 -0.759185 0.0990609 0.911611 -0.64058
+0.0664862 0.722826 0.899792 0.741519 0.782599 0.0647453 0.457447 0.695179
+0.58767 -0.818951 -0.0449839 0.446339 0.0756951 0.0465723 0.899595 -0.645389
+-0.604101 -0.215408 0.316787 0.99631 -0.280395 0.256987 -0.791317 -0.420584
+0.00783592 0.389534 0.827462 0.736468 -0.485448 -0.206538 0.202916 -0.706972
+0.851653 -0.615325 0.958712 -0.782672 -0.727878 0.547352 -0.64593 0.118389
+0.221741 0.89213 -0.801569 0.883675 0.289008 0.426343 -0.843248 -0.956447
+-0.1651 0.121533 0.617531 -0.735839 0.547591 -0.715481 0.960951 0.313266
+0.804189 -0.616054 0.91116 0.606297 0.65658 -0.48108 0.748657 0.16065
+0.794865 0.0766061 -0.980672 0.706476 -0.816405 0.184429 -0.911435 0.537995
+0.716987 0.0314115 -0.671708 -0.400309 0.685982 0.432049 -0.806327 -0.412623
+0.745035 0.0077021 -0.43329 0.758352 0.34165 -0.0448048 -0.635356 -0.0756354
+-0.824857 -0.498955 0.236824 0.468947 -0.0306672 0.596619 -0.686569 0.458268
+-0.0301541 -0.000230301 -0.764087 -0.40606 -0.812309 0.260076 0.910427 -0.0361387
+-0.281342 0.996378 -0.174217 0.396589 0.828647 0.62871 -0.0241627 -0.901862
+-0.989947 0.279349 0.6173 0.506768 -0.598962 -0.467246 -0.479589 0.795945
+-0.568429 -0.708814 -0.305729 0.556525 0.2365 -0.12609 -0.950731 -0.849946
+-0.393335 0.110022 0.408178 -0.189781 0.153311 -0.0509175 0.13667 -0.635806
+0.515497 0.226554 -0.457446 0.963648 0.138001 0.198869 0.55655 0.275074
+0.833916 -0.907625 -0.431839 0.580657 0.844465 -0.59836 0.709453 -0.607478
+0.708596 0.323194 -0.363549 -0.152327 0.801959 0.194822 -0.796287 0.643948
+-0.438857 0.921563 0.289893 -0.00920486 0.440235 -0.935067 -0.150133 -0.0879078
+-0.439521 0.360491 0.483873 0.622308 -0.719552 0.247959 -0.174353 -0.753308
+0.823863 -0.581082 -0.724696 0.966331 0.928865 -0.207342 0.370228 0.369655
+0.0637058 -0.95021 -0.293585 -0.568655 0.812117 0.118339 -0.589146 -0.151276
+-0.479777 0.787033 -0.66087 -0.891266 0.521678 0.83649 -0.42658 -0.756782
+-0.614751 -0.23329 -0.463254 -0.982015 0.742681 -0.524214 -0.286417 -0.197657
+0.836815 0.623114 0.195545 -0.169787 0.890554 0.488276 -0.0398315 0.809048
+-0.982284 -0.872347 0.0571053 0.977138 -0.785018 -0.25923 0.196843 0.428123
+-0.398294 -0.581749 0.0954772 -0.469722 0.147785 -0.0476722 0.580913 -0.871628
+-0.616744 -0.838678 -0.359308 -0.0478123 0.823345 0.641562 0.53659 0.969992
+0.544305 -0.142675 0.378207 0.890251 -0.136662 -0.867295 0.809838 -0.159524
+0.690661 -0.208898 0.0603975 0.935953 0.520713 0.0285134 0.84775 -0.830052
+0.485369 -0.660915 0.102891 0.635658 -0.549607 -0.199088 0.116683 -0.644873
+-0.204462 0.41009 0.239874 -0.135912 -0.52821 0.741063 0.418835 0.886441
+-0.659746 -0.990784 0.526589 0.476916 -0.632939 -0.789347 -0.261617 -0.43198
+-0.812314 0.552784 -0.502973 -0.520641 -0.642169 -0.85452 0.566397 0.0104621
+-0.534805 -0.663166 -0.00239012 0.724684 0.492722 -0.509403 -0.863882 0.365751
+0.784838 -0.769144 0.271731 -0.304991 -0.18287 -0.937801 -0.202343 -0.0235132
+0.410138 -0.00510835 -0.894632 0.74949 -0.135095 -0.099285 -0.889814 -0.852642
+-0.244566 -0.982174 -0.22027 -0.445252 -0.532723 -0.23535 -0.832387 -0.516421
+-0.945681 0.187503 0.27538 -0.782043 0.334733 -0.859677 -0.192137 0.680349
+0.749007 -0.861941 0.33958 -0.772802 -0.184557 0.375975 0.317242 0.803211
+0.180729 -0.827121 -0.932489 0.212849 -0.0774885 -0.561804 0.832561 0.924228
+-0.51261 0.934506 -0.0985754 0.615137 0.0265231 0.966255 -0.905823 -0.222526
+-0.212689 -0.908656 -0.511251 0.384387 0.222447 0.44556 0.431341 0.886168
+0.81375 -0.20064 0.24307 -0.99242 -0.585578 -0.974598 0.366026 -0.463103
+-0.898744 0.0204658 0.348743 -0.461792 0.402921 0.992579 -0.972558 -0.136229
+0.58008 0.0991207 -0.689031 -0.839114 -0.968505 -0.298291 -0.487098 -0.618124
+-0.621908 -0.982348 -0.0978592 0.0026808 -0.754653 0.835372 -0.626442 0.0567296
+0.542684 -0.845997 -0.930758 -0.062581 0.709223 -0.630462 0.475657 0.4694
+0.233525 -0.639955 0.461843 -0.498573 0.135962 0.648516 -0.860887 0.593932
+0.881612 -0.484931 0.709647 0.146055 0.157837 -0.461421 0.800285 -0.904641
+0.524459 0.684703 -0.832042 -0.339311 0.0214582 -0.36108 -0.876202 -0.297081
+-0.963736 -0.225418 0.0667202 -0.141799 -0.0067285 0.416775 0.608885 -0.445757
+0.0835383 -0.783474 -0.941268 0.717977 -0.40279 -0.400818 -0.201124 -0.91622
+0.343427 0.765246 0.712287 -0.286136 0.493127 -0.659244 -0.0693339 0.830604
+-0.60618 -0.367933 -0.307954 -0.722405 -0.486379 -0.749567 0.392966 0.470268
+-0.329486 -0.892206 -0.967454 -0.0256706 -0.322041 -0.231606 -0.273662 0.467779
+0.00864375 -0.81182 -0.548585 -0.0300353 -0.0434251 0.796928 0.669132 -0.863061
+-0.0340044 0.945618 0.208824 -0.637676 -0.00122878 0.181622 -0.217756 0.919925
+-0.438567 0.894487 -0.123102 -0.0219841 0.615826 -0.209102 -0.407801 -0.565796
+0.715973 -0.0374182 -0.152052 -0.879616 -0.111176 0.487921 0.623314 -0.442354
+-0.939463 0.998591 -0.840935 -0.717716 -0.928034 0.760342 -0.460224 -0.711057
+-0.339058 0.446081 -0.529201 0.169856 -0.713303 -0.28214 0.23864 -0.64956
+-0.368286 0.342269 -0.0480571 -0.767477 -0.237158 -0.374401 -0.417466 0.103495
+0.70439 0.947576 0.88951 -0.484411 0.82739 -0.0317333 -0.374721 0.728774
+-0.164127 0.998379 3.58187e-05 -0.478777 -0.886255 -0.718046 -0.530109 -0.372583
+0.447814 0.751623 -0.844977 -0.0501045 0.328442 -0.554447 0.32604 -0.512797
+0.125453 0.948951 -0.251164 -0.0734488 -0.724174 0.382493 0.565093 -0.380303
+-0.959134 0.129028 0.905471 -0.430826 0.33407 -0.865566 -0.102439 -0.847552
+-0.671577 0.547515 -0.405553 -0.533779 0.792841 0.940761 -0.240287 -0.790082
+0.261696 -0.468283 0.636685 0.172508 -0.712444 -0.511514 0.0697376 0.323731
+0.967268 0.0701916 0.70247 0.961297 0.532989 0.209927 -0.863799 -0.988658
+-0.738586 -0.957943 -0.227758 0.439528 0.638227 -0.361157 -0.550217 -0.0740309
+-0.167978 -0.671522 -0.590948 0.788766 0.900721 -0.436472 0.701945 -0.283663
+-0.933055 0.308208 -0.48667 -0.965686 0.424975 0.916878 0.870325 0.307718
+-0.440769 -0.136783 -0.717385 0.978844 -0.978524 0.894935 -0.955621 0.0347861
+-0.402571 0.932431 -0.69001 -0.854947 -0.704255 -0.843845 0.439145 0.332507
+0.884315 0.358231 -0.0204979 -0.905149 0.311102 -0.134503 -0.504413 -0.351413
+0.93749 -0.419078 -0.606983 -0.861235 -0.528741 -0.316415 0.0760611 0.556028
+-0.481772 0.0528745 0.912388 -0.648943 -0.528738 -0.0836405 0.45518 0.134116
+0.65148 -0.0730722 -0.102746 -0.248844 -0.275548 0.245518 -0.402454 -0.434698
+-0.736554 0.94961 0.725272 0.0492115 0.755981 0.876823 -0.969465 0.806371
+-0.691828 0.047525 0.496619 0.528133 -0.411473 -0.441943 0.133401 -0.361174
+-0.533397 0.840733 0.126147 0.612444 0.284063 0.598789 0.878335 -0.0490234
+0.604006 0.818177 -0.723031 -0.113028 0.672895 0.157053 -0.367267 -0.514891
+-0.226723 0.715447 0.0342616 0.0163529 -0.7168 -0.454648 0.615421 -0.639414
+0.788543 -0.114448 -0.618044 0.931844 0.397526 -0.323861 0.766333 -0.685741
+0.672859 -0.165548 -0.0151693 -0.0820926 0.217384 -0.899237 0.90086 -0.968222
+0.309018 0.896308 -0.405664 -0.497062 0.916715 0.0237754 -0.106368 -0.861573
+-0.269966 0.102866 0.762425 0.2448 -0.432779 -0.96265 -0.627808 0.205983
+0.310784 -0.173406 0.518453 0.344953 0.0330906 0.931382 -0.240309 -0.474299
+0.982172 -0.60229 0.707335 0.920388 0.528837 -0.567362 -0.379323 0.271828
+-0.854471 0.885482 0.569127 -0.279502 -0.984145 -0.986498 0.0491782 -0.856641
+0.251908 0.345603 -0.117219 0.047237 -0.872522 0.137715 -0.76625 0.14018
+-0.397734 -0.298491 -0.12443 -0.516682 -0.565237 -0.787377 0.0348365 -0.110158
+-0.904191 -0.440638 0.267592 0.838202 0.644222 0.0461281 -0.323435 -0.181573
+-0.193219 0.123638 -0.726347 0.257066 0.622249 -0.394583 0.927198 -0.616079
+-0.881052 -0.725467 0.999209 0.0472901 -0.585616 -0.366093 -0.243887 -0.512779
+-0.929443 0.916092 -0.327464 0.494227 -0.55818 -0.772939 -0.585813 -0.0464067
+-0.980349 0.595058 0.0355612 0.423679 -0.105675 0.274351 0.658272 0.478176
+0.00210862 0.767072 -0.85446 -0.796965 0.244109 -0.269706 -0.911463 -0.355583
+0.812399 0.711786 -0.69391 0.516279 -0.715963 -0.648673 -0.226655 -0.420628
+-0.489381 0.661046 0.958852 -0.148027 -0.161704 0.324932 -0.967644 -0.249043
+-0.754152 0.627913 -0.411467 -0.441104 -0.713304 -0.654139 -0.469572 -0.393992
+-0.873313 0.0239746 0.782447 -0.743247 0.600311 0.372719 0.701501 0.610132
+0.478536 0.468219 -0.571597 0.714447 -0.16895 -0.168505 -0.870466 0.498229
+-0.559904 -0.857032 0.333161 -0.28656 -0.301776 0.486585 -0.765691 -0.913841
+0.730426 -0.225736 -0.747767 0.582975 0.499248 0.517178 0.371442 0.597353
+0.606516 0.048935 -0.556591 -0.148378 -0.752258 0.00501431 -0.0688888 -0.417933
+0.581317 -0.588115 -0.547754 -0.36809 0.514811 -0.653504 0.540169 0.0116083
+0.539994 0.0387363 -0.373906 -0.195572 0.681116 -0.537351 -0.480147 0.341481
+-0.726982 0.416172 -0.442743 0.873262 0.77925 0.866927 0.0864211 0.59553
+0.88649 0.266731 0.937636 0.868009 0.20473 0.524346 -0.438782 -0.554437
+0.426115 -0.164787 0.64804 -0.0793962 0.00412427 -0.300663 0.0455931 0.520787
+0.51715 0.98294 0.100624 -0.972808 0.0351265 -0.595614 -0.0868222 -0.00845374
+-0.108488 0.787103 -0.379717 0.0959567 -0.880038 -0.600296 0.388735 0.084587
+-0.864644 -0.667847 -0.240725 -0.253896 -0.88752 -0.772616 -0.570779 0.395807
+-0.21042 0.947049 0.475964 0.975556 -0.00100742 -0.438765 -0.293878 0.683117
+0.0379649 0.0255203 0.41284 -0.726212 0.535715 0.0914284 -0.941792 -0.134525
+0.493006 0.550706 0.179805 -0.281732 0.825291 -0.732768 -0.776553 -0.80783
+0.519644 0.505448 -0.141743 -0.00348875 0.0889648 0.714917 -0.00428693 0.164767
+0.103408 -0.717194 -0.341366 -0.515549 -0.119209 0.70495 -0.932573 -0.786965
+0.0231636 0.945253 0.104304 -0.519617 0.569347 -0.325106 -0.0486517 -0.212616
+-0.0491609 -0.15152 0.217699 0.336631 -0.517949 0.851969 0.656025 0.203582
+0.466604 0.728384 0.376079 -0.240832 -0.983118 0.914609 0.950797 0.301587
+0.798194 -0.582151 -0.841621 -0.801487 0.200817 0.0549527 -0.517497 -0.803304
+0.514074 0.135644 -0.177831 -0.862979 -0.449721 0.240401 -0.915253 0.131752
+-0.00652486 0.901605 -0.878675 -0.69349 0.90813 0.591722 -0.493227 -0.895225
+0.173175 -0.0949145 0.662523 0.993257 0.500343 -0.262429 -0.933478 -0.836239
+-0.363235 0.647656 -0.0540754 0.517371 -0.897888 -0.127308 0.76276 0.95806
+0.73717 -0.579742 -0.515394 -0.0900528 -0.422909 -0.867229 0.118616 -0.619266
+-0.789218 0.395874 -0.263162 -0.218993 -0.989462 -0.412965 -0.34815 -0.252564
+-0.167916 -0.867763 0.562551 -0.132474 -0.828412 -0.239798 -0.527397 0.525177
+-0.677053 0.60444 0.166432 -0.622612 -0.99513 -0.904785 0.469131 -0.122162
+-0.86848 0.743779 0.136043 -0.0355452 -0.858098 0.337151 -0.20756 0.754075
+0.898261 0.333916 0.578844 0.0165041 -0.482019 0.268773 -0.232733 -0.511812
+-0.310141 0.984661 -0.0355772 -0.0615404 0.261641 0.772658 -0.415472 -0.739663
+-0.931102 -0.96816 -0.456587 -0.761168 -0.181398 0.427283 -0.569672 0.325545
+0.548456 0.437026 -0.0967424 0.874929 -0.945728 0.219869 -0.28097 -0.0350449
+-0.924421 0.0953952 -0.945492 -0.741848 -0.88119 -0.788247 0.154273 0.823235
+-0.349462 -0.300058 0.516437 0.790399 0.0226538 -0.397157 -0.652717 -0.210641
+-0.0566707 -0.958777 0.944967 0.571243 0.0727161 0.954246 -0.989825 0.312317
+0.0674175 -0.199475 0.602463 0.140729 -0.523178 0.944059 -0.133752 -0.55164
+-0.858503 0.430255 -0.320692 0.274377 0.981339 -0.487528 0.65521 0.0438374
+0.633114 -0.331395 -0.1199 -0.430513 0.601308 -0.342459 -0.0434577 -0.23422
+0.0754465 0.685361 -0.405587 0.831622 0.147556 0.803707 0.751314 0.867704
+-0.798783 0.575314 -0.0780584 0.374875 -0.78028 -0.55593 -0.652663 0.0566913
+0.545555 0.333988 0.293725 -0.458525 0.725412 0.210956 0.0573337 0.659658
+-0.919578 -0.276029 -0.394873 0.0204002 -0.492932 0.356923 -0.966322 -0.217896
+0.254969 -0.724236 0.629989 0.909324 -0.492372 -0.91706 -0.988393 -0.784333
+-0.64209 -0.846022 0.747568 -0.742917 -0.467237 0.808793 -0.607423 0.783012
+-0.062119 -0.0346325 -0.981145 -0.242132 0.468866 0.177845 0.279318 -0.407476
+-0.82309 -0.475214 0.816436 0.80076 -0.828438 -0.0744201 -0.755459 -0.592288
+0.188374 -0.824065 -0.364972 0.265613 -0.0671335 0.862794 -0.559167 -0.185972
+0.956574 0.443286 0.938111 0.99978 -0.61782 0.606602 -0.710399 -0.399743
+0.373872 -0.536204 0.879088 0.830825 -0.37226 -0.62618 -0.737087 0.528716
+-0.247862 -0.08905 -0.885543 0.631119 0.999098 0.950532 -0.865904 0.301747
+-0.543677 -0.777999 -0.103366 -0.767815 0.206858 -0.327054 0.269201 0.834288
+0.584777 -0.0853758 -0.391491 -0.874293 -0.160799 -0.864734 0.420523 0.137826
+-0.104722 -0.664662 -0.188868 -0.367055 -0.602064 -0.943215 0.368623 0.130933
+0.755609 0.954666 0.538894 0.323516 0.691233 -0.427272 -0.583608 -0.143928
+-0.872202 -0.0515559 0.462139 0.544525 -0.582221 -0.119367 -0.723396 0.663627
+-0.0425203 0.780898 -0.431425 0.25698 0.421757 0.54623 -0.185291 0.06734
+-0.526959 -0.255149 -0.852612 0.00240849 -0.596438 0.487974 0.996254 -0.277034
+-0.250355 -0.542272 -0.0105174 0.965026 0.842351 0.742194 0.360429 0.392727
+-0.0712163 0.215971 -0.655292 -0.417113 -0.604008 0.505837 0.188779 0.778084
+0.72285 0.0481556 0.338723 -0.620417 -0.0949132 0.170445 -0.886654 -0.667965
+0.0722872 -0.884601 -0.398315 -0.570663 -0.717769 0.293513 0.86843 0.131688
+0.635362 -0.217584 -0.801661 -0.159571 -0.64837 0.170806 -0.0798785 0.00159534
+-0.522543 0.623366 -0.975635 0.486717 -0.697985 -0.480893 0.242301 0.907825
+-0.682965 -0.862529 -0.529999 -0.469402 -0.0689268 0.638641 -0.261971 0.162454
+0.924986 -0.838339 0.41012 -0.328706 0.0662599 0.841739 0.787578 0.621908
+0.855472 0.881251 0.036657 -0.778922 0.213021 0.511113 -0.634199 -0.989152
+0.702894 -0.237175 0.525947 -0.593405 -0.934287 0.942147 0.223931 0.175514
+0.360713 0.796448 0.00851988 0.649489 0.439841 -0.908649 -0.743818 0.980769
+-0.887181 -0.988196 0.326568 0.529733 -0.17162 -0.474393 0.779824 0.836944
+0.469429 -0.546156 0.0698695 0.699024 0.601318 0.350035 -0.394446 -0.905387
+0.960154 -0.711228 -0.778727 0.480277 -0.643098 0.129766 0.839766 -0.683655
+0.152151 0.482563 0.257712 0.12372 0.852753 -0.958938 0.57036 0.157611
+-0.0485753 0.556195 -0.229038 0.588178 -0.70367 -0.597682 0.822591 -0.521196
+0.436099 -0.126062 -0.4454 0.134319 0.0551376 0.796622 0.202384 0.890468
+0.965482 0.626513 -0.562947 -0.269078 0.39698 -0.742422 0.130553 0.929076
+0.683358 -0.97097 -0.730346 -0.68618 -0.0400286 0.235318 -0.867485 -0.346546
+0.333295 -0.445525 -0.963462 -0.533717 -0.449516 -0.601454 -0.245269 -0.299874
+-0.447599 0.153277 0.601545 -0.917766 0.631199 0.671554 -0.348887 0.971254
+-0.987207 -0.0343355 -0.264064 -0.632789 -0.645582 0.850846 -0.43561 -0.139635
+0.507676 0.745846 -0.57733 -0.116314 -0.804799 -0.871462 0.231639 -0.457229
+-0.352731 -0.483039 -0.608581 -0.240055 -0.194946 0.390388 0.0721848 0.37785
+-0.108104 -0.372327 0.56838 -0.513627 0.789168 0.587824 -0.939963 0.0481087
+-0.0373395 -0.477224 0.386216 0.981896 -0.442703 0.978169 -0.535139 0.0158854
+-0.768252 -0.79301 0.720239 -0.911349 0.897648 -0.690076 0.215503 0.499193
+0.501812 0.255198 0.1391 -0.158408 -0.153084 0.220766 0.332727 0.583619
+-0.745589 -0.953123 0.740416 -0.965433 -0.946512 -0.984059 -0.221339 0.166907
+-0.983864 0.676227 0.55923 0.0408475 -0.923848 0.768858 0.656617 -0.820871
+0.205957 -0.321971 0.997178 0.863801 -0.95386 -0.212687 -0.552148 -0.994185
+-0.751285 0.891413 -0.251897 0.219731 -0.846847 0.491592 0.437694 0.305215
+-0.49895 -0.943796 0.107967 0.858461 0.739407 0.935811 -0.872678 0.667908
+-0.662264 0.617156 0.219431 0.923692 0.968059 0.905166 0.188744 -0.21665
+0.265055 -0.160066 0.275978 -0.180617 0.838283 -0.840746 0.622687 -0.586854
+-0.563731 -0.00539522 -0.436826 -0.268258 -0.167928 -0.151694 0.836768 0.0803586
+0.678223 0.192053 0.294282 -0.792568 0.520835 -0.374463 0.73826 -0.804014
+-0.422662 0.920872 -0.74267 -0.913076 -0.482928 -0.427512 0.0909748 0.476928
+-0.395764 0.573938 -0.339744 0.0564879 0.121589 0.327182 0.76153 0.029828
+0.357279 -0.0736123 -0.216815 0.993638 0.554024 0.945262 0.9521 0.992713
+0.41563 0.835111 0.333971 0.243163 0.854872 -0.244089 0.821639 -0.601421
+-0.547932 -0.802817 0.165144 -0.918539 0.0972188 -0.296996 -0.214255 -0.767947
+0.939733 -0.107441 -0.176512 0.927349 -0.739474 0.422475 -0.970313 0.188903
+-0.963026 0.594481 -0.228628 -0.341258 -0.933545 -0.716736 -0.943601 -0.480241
+-0.976579 -0.734036 0.139383 -0.525071 0.275555 0.733044 -0.164632 0.877818
+0.469534 -0.157197 -0.340027 -0.229847 -0.907174 -0.812643 -0.377661 -0.668763
+0.160111 -0.981113 -0.454339 -0.839043 -0.272351 0.81987 0.199865 -0.449337
+0.748273 0.510208 -0.994967 0.925383 -0.24439 0.999317 -0.226718 0.471643
+-0.867453 -0.532115 0.0845664 -0.819005 0.0369521 -0.0195426 0.542037 0.15077
+-0.689657 -0.948521 0.617848 -0.52699 -0.572121 0.167283 -0.65349 -0.00733644
+-0.705351 0.432267 -0.416052 -0.255617 0.2413 -0.96528 0.741295 0.595977
+-0.746777 -0.218203 -0.882464 0.451746 0.714665 -0.281248 -0.800118 -0.54971
+-0.740157 -0.354166 -0.155435 -0.32114 0.324222 0.163949 0.918079 0.841913
+0.0871473 0.811038 0.610476 0.542277 -0.380087 -0.624198 0.176843 -0.322804
+-0.966303 -0.610082 0.351537 0.537812 -0.56573 0.896842 0.0409576 0.938087
+-0.89567 0.550195 -0.421399 -0.773171 -0.095841 0.89622 0.224035 0.425158
+-0.23045 0.0829561 -0.960155 -0.878914 -0.693009 0.843461 -0.698353 -0.125659
+0.361473 -0.514447 -0.171557 0.475797 -0.0174048 -0.528989 -0.971387 0.288903
+0.863352 -0.613576 0.402034 0.926998 -0.562214 0.791953 0.29749 0.131722
+-0.358312 -0.319234 -0.541508 -0.476338 -0.724377 -0.0146154 0.0106356 -0.161128
+0.348456 -0.460724 0.553631 0.491866 0.583169 0.914039 0.762895 0.812704
+0.646607 -0.547933 0.775984 0.306783 0.5141 -0.744085 -0.90439 -0.121258
+-0.0858139 -0.0963209 0.159597 -0.90429 0.707903 -0.75263 0.405992 0.362285
+0.0398405 0.941671 -0.886079 0.0271912 0.213453 -0.836911 0.485894 -0.555229
+-0.292586 0.667731 -0.555299 0.814736 0.342754 0.570431 0.89559 0.194648
+0.175206 -0.125579 0.156772 -0.674121 0.149871 -0.929366 -0.754064 0.0298566
+0.185215 -0.214766 0.126068 -0.917025 0.880563 0.683523 -0.805319 -0.130271
+0.223479 0.302833 -0.423818 -0.283243 -0.147496 0.674922 -0.275212 0.287667
+-0.844565 -0.649853 0.0212764 -0.119313 -0.871784 -0.202159 0.588148 0.708281
+-0.620201 -0.448051 -0.497644 0.59911 0.367225 0.178448 -0.857665 -0.885693
+0.136695 -0.223891 0.875414 0.925696 0.717649 0.0990003 0.339096 0.151777
+-0.700985 0.328839 0.0452361 0.510211 0.231076 -0.822707 0.578956 0.618465
+-0.66974 -0.504158 0.997141 -0.983956 -0.601804 0.83153 -0.251907 0.131129
+-0.23875 -0.276582 -0.763665 -0.286273 -0.578402 -0.605575 0.487201 -0.264368
+-0.279441 -0.75415 0.653356 0.313241 -0.162724 0.550417 -0.422391 -0.67508
+0.556955 0.692698 -0.559814 -0.740492 0.55263 -0.948635 0.944135 0.452505
+0.887133 -0.381995 0.565063 -0.918914 0.0693192 -0.354579 -0.201351 -0.528456
+0.488967 -0.813855 0.700582 -0.591998 0.00517579 -0.259065 0.730442 -0.162142
+-0.188417 0.54958 -0.466756 0.958246 -0.770873 -0.351427 0.256662 -0.887696
+0.940295 -0.359559 -0.383567 -0.418849 -0.0287466 -0.2082 0.912299 0.906447
+0.355532 0.219688 -0.592271 0.408647 0.963538 0.442974 0.255207 -0.54769
+0.999579 -0.647976 -0.430347 0.313431 0.956103 0.0244352 -0.21198 -0.781166
+-0.609333 0.695023 -0.00585951 -0.429169 -0.468694 0.64518 0.565546 0.786551
+0.539956 -0.76661 0.479248 -0.395474 0.989707 -0.869991 0.35182 -0.200015
+-0.610083 0.456946 -0.749989 -0.540906 -0.25171 -0.55211 0.122659 0.182224
+-0.289133 0.118245 -0.706109 0.000286182 -0.507599 0.659099 -0.352538 -0.548111
+-0.575608 0.431426 -0.435646 -0.0638061 0.573575 -0.772363 -0.543486 0.171232
+0.361416 0.79796 -0.0645699 0.121489 -0.174803 0.689077 -0.950937 -0.772784
+0.355538 0.997686 -0.324652 0.408147 0.100385 -0.83699 0.362303 0.812052
+0.57894 -0.42062 0.105521 -0.0371584 0.294148 -0.960073 -0.987327 -0.716768
+0.675003 -0.950628 0.962732 0.145438 0.0151505 0.670395 -0.702705 -0.955056
+0.368931 0.25731 0.848675 0.393233 0.365112 0.704958 -0.964903 -0.337374
+-0.0870159 -0.895422 0.530613 0.3966 0.420916 0.913206 0.92198 -0.08298
+0.525101 -0.81229 0.565656 -0.533193 -0.202546 0.475332 -0.218514 -0.88693
+-0.924348 -0.269925 0.180285 0.344104 -0.300888 -0.519645 -0.504408 0.0156576
+-0.275531 0.39835 -0.512057 -0.0724003 0.314598 -0.299159 0.524368 -0.874405
+-0.862982 -0.511945 -0.349759 0.142268 -0.123326 -0.418009 0.302254 -0.0370469
+-0.472337 -0.34847 -0.0240024 -0.320894 0.652825 -0.565138 0.952537 -0.976899
+0.162668 0.97598 0.328564 -0.641333 -0.157184 0.715958 0.139089 0.171088
+-0.715707 -0.792925 0.851959 0.0239201 0.229325 0.888776 0.242874 -0.0956594
+0.0730154 -0.22137 -0.930213 0.691392 -0.0133478 -0.183844 0.828858 0.719249
+0.710041 -0.0774391 -0.214347 -0.0990236 0.389698 0.976301 -0.893467 0.198271
+-0.755695 0.741752 -0.31524 0.812909 -0.769951 -0.288885 0.267208 -0.218886
+-0.886653 -0.633374 0.808661 0.745247 0.124286 -0.5126 -0.995492 -0.5198
+-0.692688 -0.147346 0.187424 -0.925055 -0.439214 -0.111269 -0.975173 -0.658201
+-0.831075 0.673083 -0.873982 0.888561 -0.909797 -0.477867 0.93234 -0.282008
+-0.290956 0.856362 -0.537572 0.862711 0.0502476 0.436749 0.634669 -0.055289
+-0.948314 -0.463479 -0.271359 0.83194 0.876005 -0.380152 0.564686 0.842261
+0.651726 -0.349592 -0.672053 0.811869 0.169962 -0.133927 -0.172151 0.0341328
+0.759291 0.358957 -0.58414 -0.530041 0.60161 -0.528868 -0.0799708 -0.307838
+0.671058 -0.459334 -0.689521 0.266444 -0.388679 -0.924294 -0.772005 -0.165673
+-0.642888 -0.736954 -0.424283 -0.104637 0.246528 0.137349 0.0379861 0.832927
+-0.170774 0.0669082 -0.6996 -0.579342 0.34972 -0.348279 -0.35229 -0.270538
+-0.945031 -0.524023 -0.552039 -0.114057 0.234116 0.501137 0.977221 -0.395418
+-0.409068 0.69399 0.374419 -0.0462875 -0.0465554 0.766255 0.774782 0.675965
+0.779158 -0.166837 0.821032 -0.714979 0.686341 0.539111 0.566031 0.277188
+0.538449 -0.848217 0.206875 0.862397 -0.38221 0.405983 0.282527 0.737116
+0.898407 -0.176659 0.0464721 -0.174439 -0.270702 0.100901 0.520358 -0.561523
+-0.979069 0.967672 0.792619 -0.610577 -0.974206 -0.751801 0.74998 -0.749505
+0.263804 0.723652 0.739677 -0.842901 -0.860151 -0.705391 -0.62765 -0.382012
+-0.130688 -0.30586 0.0984786 -0.262746 0.489062 -0.202678 -0.427006 0.896134
+0.516793 -0.0821588 -0.223608 -0.479332 -0.338764 -0.166683 0.511858 -0.188652
+-0.308261 0.0582935 -0.907996 0.145248 0.173322 0.894237 0.930443 0.37919
+-0.055568 -0.843438 0.895721 -0.894053 -0.602729 -0.347945 0.548196 0.767499
+-0.360557 -0.832566 0.938689 -0.968412 -0.498284 -0.0476192 -0.630211 0.169322
+-0.340761 0.225727 0.626826 0.770033 -0.589029 -0.869995 0.635105 0.140516
+-0.275869 0.150278 0.226437 -0.35612 0.307429 -0.514314 -0.102084 0.787112
+-0.56936 0.715269 0.483321 -0.677539 0.718327 -0.996698 0.288105 -0.329191
+0.0826611 -0.905288 0.948848 0.561249 0.103266 0.4488 -0.35026 -0.197099
+-0.880391 0.224373 0.950568 -0.3324 0.396463 0.578104 -0.967929 0.271137
+0.993101 -0.461551 -0.621999 0.619373 0.783432 0.365015 -0.34766 -0.600584
+0.00402216 0.290309 -0.904297 0.656952 0.191966 0.370522 0.332878 -0.24234
+0.214094 0.438921 -0.78707 0.688227 0.90262 0.885032 -0.451939 -0.305912
+-0.777585 -0.708842 -0.858883 -0.251773 0.374764 0.595089 0.312957 0.775746
+-0.740073 -0.108861 0.455241 0.86918 0.569907 -0.962557 -0.25648 0.804496
+-0.912671 0.499386 -0.95459 0.381183 -0.848648 0.988888 0.707242 0.510946
+-0.0352051 -0.0379785 0.4072 -0.0128833 0.807337 0.425928 0.570978 -0.910252
+0.626974 0.482988 -0.410612 0.175324 0.130045 -0.64675 0.20158 0.252041
+0.093055 -0.381027 0.343075 0.32612 -0.0966218 -0.24313 -0.0175112 -0.152642
+0.848891 0.0384485 -0.0553651 0.589269 -0.78618 -0.126579 -0.719034 0.482478
+-0.729124 0.43077 -0.00256574 0.33618 0.517282 0.329004 -0.295313 0.785522
+0.858593 0.167835 0.483022 0.119475 -0.515303 0.565839 -0.0836063 -0.654593
+-0.730218 0.591172 -0.898234 0.986936 0.836221 -0.975197 -0.810416 -0.76165
+0.695011 -0.868217 0.470301 -0.99774 0.692654 -0.0821989 -0.0844141 -0.423707
+0.400773 -0.0689255 0.0364469 0.876054 0.0382845 0.0188337 -0.350705 -0.151997
+-0.720572 0.586418 -0.199424 0.926402 0.615271 0.111343 0.427535 -0.369212
+-0.53713 -0.27109 -0.856338 0.554745 0.123548 0.522981 0.628222 -0.299325
+0.953218 -0.683508 0.684732 0.871014 -0.164698 -0.639858 -0.329335 0.517082
+0.0442618 -0.516209 0.15372 0.669799 0.506915 -0.571725 0.554727 -0.544378
+0.436668 0.928487 0.347232 -0.43956 -0.685853 -0.355098 0.574867 0.577127
+0.403338 0.200018 0.121288 0.0687721 0.395435 0.20708 0.929302 0.133507
+-0.0135593 -0.0567897 0.716383 -0.829264 -0.447934 0.797416 0.113515 0.57257
+-0.469182 -0.69959 -0.886091 -0.48694 -0.328326 0.63613 0.72095 -0.105447
+-0.347547 0.834653 0.326223 -0.232592 0.442301 -0.584429 -0.161556 0.221195
+-0.817152 -0.648083 -0.6338 -0.617803 0.877637 -0.309426 0.986573 -0.761129
+0.0437569 -0.917417 -0.901463 0.187357 0.262695 0.0747365 -0.75528 0.998739
+-0.707196 -0.956231 -0.0671567 0.533672 -0.756212 -0.024034 0.130722 -0.219808
+-0.135062 0.522076 -0.63458 -0.357056 0.770788 -0.60991 -0.279767 -0.308377
+0.559967 -0.91155 -0.649344 -0.202197 0.0450569 0.0936384 0.960643 0.862273
+0.321983 -0.58597 0.817368 -0.983835 -0.369924 -0.712908 -0.806488 -0.481701
+0.185647 -0.00648949 0.966832 0.442513 0.850818 0.018954 0.710457 -0.277024
+-0.972975 0.0417475 -0.652856 -0.418745 0.791432 -0.260435 0.755233 0.586012
+0.982456 -0.0963127 0.297784 0.437391 0.0971326 -0.654282 -0.813028 -0.845197
+-0.923037 -0.141157 -0.419079 -0.135268 0.340604 0.906165 0.440158 0.465527
+0.145523 0.263577 0.71804 -0.89 -0.45117 0.899872 0.53504 -0.94317
+0.524796 0.768644 -0.802586 -0.0936898 -0.749671 -0.0920919 0.749551 -0.626382
+-0.80644 -0.891784 0.31891 -0.120768 0.16823 -0.516945 -0.345036 -0.568261
+0.793169 -0.978639 0.27872 -0.959108 -0.338635 -0.117787 0.152006 -0.855402
+-0.870878 -0.474037 -0.901367 -0.212822 0.443774 0.341581 -0.249137 0.542928
+0.0741436 0.130848 0.354614 -0.265943 -0.668795 0.483405 0.685919 -0.383351
+0.878892 -0.131983 0.560014 -0.424243 0.116246 0.331165 0.533075 0.0968753
+-0.403953 0.380238 -0.242981 0.222949 0.712495 -0.216949 0.932865 -0.0829776
+-0.69437 0.174616 0.783624 -0.576855 0.0601987 -0.0695508 -0.545245 -0.441067
+0.102256 0.980114 0.118383 0.556969 0.344759 -0.240915 0.154121 -0.140074
+-0.799409 -0.444041 0.964764 -0.844537 -0.658997 0.636795 -0.362719 -0.0759832
+-0.0020397 -0.390442 -0.807246 -0.426076 -0.786194 0.712275 -0.016741 -0.435245
+-0.022729 0.975231 -0.591688 0.814654 -0.565707 -0.335615 -0.803594 -0.897355
+0.659914 -0.433625 -0.0638004 -0.799626 0.844321 0.174313 0.484576 -0.518126
+0.0825412 0.995173 -0.030989 -0.577059 0.113051 0.53154 -0.837545 -0.869107
+-0.985299 0.251115 0.392605 -0.0264367 0.411883 0.861677 0.440783 -0.700776
+0.657025 0.228187 0.483658 0.0184127 0.510077 0.640849 -0.429233 0.645621
+-0.212764 0.979465 -0.0700215 0.852905 0.745117 -0.740672 0.592321 0.476026
+-0.0570856 -0.206335 -0.567143 0.251576 0.973209 -0.0473433 -0.550067 0.153031
+0.361088 0.423245 -0.958558 0.243484 0.746056 -0.695582 0.312399 -0.823769
+0.74667 -0.839898 0.870564 -0.55274 0.240814 0.220124 -0.909308 -0.315429
+0.332682 -0.374113 -0.888994 -0.699781 -0.519364 -0.68096 0.0941501 0.500746
+-0.478334 0.642977 0.578055 -0.402882 0.287253 0.26079 -0.545313 -0.790074
+0.279175 0.79182 -0.0225746 0.105242 -0.0304137 -0.668448 0.331735 -0.55909
+-0.0788047 -0.381013 0.292915 0.553269 0.168335 0.213994 -0.51418 -0.391753
+0.265128 0.840426 -0.822027 0.560019 -0.397816 0.177753 -0.0649444 -0.75469
+-0.837923 0.475437 -0.775741 0.111428 0.713371 0.927307 0.824662 0.630516
+-0.554579 -0.34954 0.281128 0.571655 -0.400387 0.541733 -0.439061 0.237519
+-0.737327 0.315332 -0.467477 -0.682537 0.370516 0.319608 0.27339 0.36382
+-0.185508 0.33086 0.676371 -0.701803 -0.254673 -0.900504 -0.50075 0.551068
+0.972067 0.507886 -0.650132 -0.135926 0.306056 -0.256413 0.922394 -0.156155
+0.395757 -0.527971 0.159301 -0.263157 0.587493 -0.478528 -0.621343 -0.289296
+-0.855766 0.494758 -0.146443 0.666901 0.399917 0.204614 -0.929095 0.276574
+0.106647 0.129908 0.801299 -0.469317 0.912648 0.813049 0.709985 0.0299976
+-0.447052 -0.294152 -0.984121 0.826067 -0.758664 0.859195 -0.887033 -0.126497
+-0.525572 0.297714 -0.467697 -0.996458 -0.156444 -0.780756 0.684544 -0.849622
+0.338088 0.0297275 0.176656 -0.107333 0.66221 0.470726 0.425236 0.712842
+0.265663 -0.679335 0.928894 -0.514168 -0.652477 -0.60961 -0.581951 0.475835
+-0.682929 0.850813 -0.828784 0.92308 -0.731889 0.410259 0.900516 -0.224582
+-0.985953 0.171351 -0.259284 -0.358424 -0.427112 0.171932 0.0957721 -0.918852
+0.649038 -0.181069 0.847588 -0.0878832 -0.660489 -0.190686 0.291881 -0.371576
+0.386358 -0.526922 0.0181347 0.132002 0.799416 -0.0414992 0.346399 0.987424
+0.0904239 0.919841 0.472689 -0.299126 -0.30447 0.839527 -0.186602 -0.0457745
+-0.314095 -0.0583921 -0.174376 -0.458928 0.89156 0.318632 0.776904 0.598496
+-0.502987 0.248515 0.776473 0.685687 0.187229 -0.331967 -0.740824 0.192051
+0.453311 0.456026 -0.197498 -0.0530535 -0.811066 0.215611 0.05142 0.827801
+0.668463 -0.816578 -0.630663 -0.947085 -0.560805 -0.55766 0.582363 -0.176172
+-0.571445 -0.931439 -0.00676455 0.994012 0.514398 -0.066941 0.13035 0.614353
+0.499379 -0.203294 0.872702 0.329388 0.347085 -0.684774 0.186549 -0.741651
+-0.496264 0.169345 -0.0523917 0.00680297 0.321116 -0.0408015 0.827076 0.405007
+-0.742955 -0.496809 -0.655286 0.608952 0.941601 -0.400993 0.436962 -0.859172
+-0.343765 0.42654 -0.878849 0.887708 0.136542 0.333953 0.278177 -0.883513
+0.334913 0.549629 0.260482 0.214592 -0.812072 0.806985 -0.672151 0.223634
+0.350486 0.700689 0.264024 -0.0858438 -0.736967 0.910123 -0.0365574 -0.721711
+-0.758495 -0.71386 0.269364 0.654538 -0.127509 0.490754 0.505888 -0.227744
+-0.410972 0.825348 0.556706 0.93449 -0.315437 0.046301 -0.355252 -0.499265
+-0.198761 0.693901 0.0809512 0.598022 0.216152 -0.0557807 0.633541 -0.920389
+-0.105208 0.820162 -0.841928 0.197307 0.775155 0.479185 -0.0129137 -0.920868
+-0.00289153 -0.848301 0.497239 -0.116999 -0.778492 -0.449622 -0.307548 0.707701
+0.643452 0.805278 -0.868296 -0.663651 0.964767 -0.598762 -0.95075 0.814099
+0.702587 0.022535 -0.382656 0.605942 -0.69756 0.38932 -0.194961 -0.371336
+0.725439 -0.73543 0.35924 0.221953 0.502839 0.170354 0.0902493 0.89545
+0.272991 -0.23815 -0.368274 -0.527361 -0.204286 0.144316 -0.55093 0.673088
+-0.221703 -0.277757 0.760379 0.261115 0.122372 -0.785284 -0.302733 0.707354
+-0.83038 0.631834 -0.848415 0.814266 -0.943272 -0.189483 -0.0581163 0.34286
+-0.744309 -0.560878 -0.157826 0.253617 -0.500915 -0.0487691 -0.349202 -0.270705
+-0.360954 -0.664127 0.859286 -0.280102 0.654414 -0.51319 -0.108095 -0.576189
+0.862022 -0.302638 -0.285045 -0.571026 -0.276549 -0.122277 -0.0148892 0.0524154
+-0.781367 -0.0358786 -0.862979 0.796873 0.718916 0.624263 0.492487 -0.412841
+-0.674732 0.44741 0.12108 0.165215 0.308106 0.877464 0.350762 -0.137168
+0.944773 -0.525673 0.539535 0.805693 -0.590677 -0.473832 -0.86767 0.230023
+-0.704677 -0.951173 0.238569 0.247775 -0.738827 -0.339384 -0.993212 -0.114532
+-0.903368 -0.0239983 -0.321369 -0.0601956 -0.808445 0.158124 0.624174 0.421578
+-0.849332 0.27961 -0.472397 -0.994164 -0.765143 -0.987517 -0.349657 -0.401462
+-0.640832 0.244533 -0.27625 0.841018 0.950529 0.621075 0.918131 -0.225662
+0.745814 -0.428672 0.646151 0.0741225 -0.0211338 0.464879 -0.851963 -0.916987
+-0.101954 -0.276708 -0.0872924 -0.49987 0.755351 -0.846396 0.710409 0.334835
+0.24353 -0.213543 -0.857267 0.322163 0.826677 0.459816 -0.569691 0.343797
+-0.498103 -0.0150314 -0.0622409 0.0777802 0.739183 -0.0612893 0.90107 0.211244
+0.783052 -0.32894 -0.61945 0.532135 0.282544 -0.993743 -0.118648 0.971226
+-0.0875874 -0.0864152 0.471729 -0.366368 -0.71376 -0.384434 -0.686004 0.868823
+-0.821418 0.670089 -0.0223627 -0.242403 -0.85078 -0.168284 0.158154 0.652704
+0.519088 -0.176841 -0.778506 0.170754 0.293266 -0.732885 -0.199528 -0.880297
+0.954958 -0.207707 -0.95033 -0.29616 0.381677 -0.835554 0.500021 0.272155
+-0.341774 0.503913 0.328025 0.530894 -0.426435 0.997955 -0.00143635 -0.236397
+0.675025 -0.705682 -0.117268 -0.59063 -0.261205 -0.909041 0.835805 -0.180595
+0.194336 0.217548 -0.0826236 0.322955 0.787922 0.635806 -0.601225 0.849099
+-0.883491 -0.532006 0.819639 0.00105429 0.921199 0.736782 -0.00753231 -0.0718162
+0.637852 -0.892649 0.827382 -0.336917 0.633483 -0.330272 -0.560808 -0.552755
+0.419203 -0.24472 -0.788399 0.827093 0.174324 -0.881508 0.288636 -0.167812
+-0.631573 -0.919389 -0.316457 -0.123103 0.191612 0.679214 -0.650922 -0.0655893
+-0.754231 -0.307079 0.286307 -0.707389 -0.555264 -0.532295 -0.979045 0.174008
+0.0956924 -0.376153 0.215392 0.931178 0.471885 0.350595 0.0816649 0.559682
+0.995234 -0.17001 -0.225094 -0.0199892 -0.476462 -0.620546 0.670361 -0.734298
+0.0618002 0.511107 0.126024 -0.911874 -0.515122 0.199259 -0.153888 -0.14643
+0.55341 0.814418 -0.401288 0.0908439 -0.411111 -0.159649 -0.094307 -0.901488
+0.268385 -0.42747 0.769464 0.743663 0.991108 -0.12387 0.382316 0.100802
+-0.997442 0.38077 -0.821689 0.210547 -0.818763 -0.969185 -0.995689 0.098865
+-0.941008 0.0415596 0.209826 -0.562129 0.737192 0.801041 -0.233382 -0.832159
+-0.756248 -0.713343 -0.845329 0.45093 0.980933 0.182862 -0.542358 -0.286078
+-0.0376019 0.958241 -0.304717 0.746084 0.433264 0.442267 0.404 0.54026
+-0.0714448 -0.714976 -0.96135 -0.222457 0.694713 0.740249 0.196941 -0.677119
+0.0420683 0.252027 -0.162027 -0.651752 0.0830012 0.664514 -0.73259 0.71592
+-0.820265 0.360586 -0.734685 0.140403 -0.956773 -0.189421 0.939188 0.210828
+-0.58817 -0.0206047 0.971823 -0.634373 -0.623086 -0.539548 0.606546 0.944775
+-0.981771 -0.846209 0.0250994 -0.294033 0.913781 0.234707 0.943602 -0.823085
+0.71755 0.25391 -0.265289 -0.186836 -0.0160964 0.733051 0.0945265 0.0544957
+-0.189257 0.291791 0.213208 0.276115 0.526883 -0.497135 -0.23261 0.357334
+-0.834497 -0.516587 -0.701262 0.758542 0.604283 -0.898403 0.483098 -0.725842
+0.286748 0.923059 -0.878815 -0.566687 0.109317 -0.454299 0.993513 -0.613102
+0.0633329 0.335537 -0.488599 0.458213 -0.876552 -0.594897 -0.805268 -0.113543
+-0.806828 0.252615 0.939087 0.9549 -0.468198 0.339006 -0.27214 -0.73677
+0.377358 0.7833 0.00540191 0.500714 -0.32138 0.0955231 0.911839 -0.86314
+-0.52298 -0.419656 0.48054 -0.568488 0.84489 0.700685 -0.935709 -0.649709
+0.779817 0.0622625 -0.70091 -0.299574 0.714823 -0.319211 0.0138431 0.534249
+-0.0930375 -0.928566 -0.501586 0.88442 -0.313336 0.0877296 -0.388998 -0.656063
+0.918037 0.965761 -0.526943 0.72899 -0.187046 0.569136 0.641175 -0.881373
+-0.868506 0.708643 -0.845511 0.0423333 -0.653447 0.104797 -0.971814 -0.0592641
+0.113582 0.0982362 0.296222 0.844357 0.618947 -0.76513 -0.357092 -0.226115
+-0.892713 -0.107977 0.780329 -0.117651 0.70063 0.113163 -0.881551 0.124592
+0.679055 -0.253271 -0.389185 0.273218 -0.168828 0.984187 -0.53537 -0.366435
+0.178635 0.0965333 -0.809133 -0.646821 0.598732 -0.690665 -0.12513 0.00995571
+0.596674 -0.0551118 -0.849999 -0.202192 0.720032 0.71466 0.433842 0.330282
+-0.360911 -0.0179244 0.617987 0.206179 0.439985 0.941844 0.260142 0.958835
+-0.130109 -0.608319 -0.407372 0.258944 -0.546059 -0.149142 -0.414605 -0.930047
+0.246275 -0.307401 0.885364 0.931141 0.850374 -0.507991 0.993946 0.860865
+-0.00735639 -0.376057 -0.141489 -0.0791886 -0.94232 0.262036 -0.332814 0.864286
+-0.623501 -0.108497 -0.915583 -0.197976 -0.0446641 -0.98592 0.0157384 -0.285527
+0.0800298 -0.211889 0.183531 -0.0259725 -0.140507 0.331835 -0.441566 -0.0824537
+0.349123 0.101694 0.648666 0.423303 0.0503596 -0.634703 -0.758321 0.878317
+0.968075 -0.888882 -0.885247 0.239309 -0.430522 -0.557886 0.981217 -0.861691
+-0.25365 -0.251681 0.41785 0.255933 0.790183 -0.082351 -0.145108 -0.714586
+0.325073 0.906998 -0.146159 -0.832511 0.191264 -0.742264 0.342077 -0.0963672
+0.475946 0.68986 0.0607583 -0.617167 -0.866828 -0.35384 0.658142 0.6789
+0.998507 -0.322951 0.907556 -0.574775 0.905785 -0.941915 -0.971645 -0.716665
+-0.669851 0.267652 0.273679 -0.0975457 0.235855 0.946079 0.683143 -0.732098
+0.48798 0.528768 0.166133 -0.59308 -0.569879 -0.573397 0.260883 0.32438
+-0.511057 -0.640244 -0.492433 -0.573725 -0.0806553 0.124341 -0.277098 -0.638164
+-0.747998 -0.484261 -0.849188 0.115952 0.180504 -0.667777 -0.969912 0.0727628
+0.963349 0.761828 -0.745403 -0.43181 -0.487012 0.827165 -0.646577 -0.160079
+-0.764275 0.907474 0.329591 0.159052 0.290096 0.163844 -0.327156 0.387687
+0.615459 0.56839 0.487407 0.917093 0.0743702 -0.484865 0.461471 0.917078
+-0.708641 0.835115 -0.372658 0.254261 -0.423061 0.268536 0.485171 -0.664508
+-0.660714 0.978831 0.241741 -0.737719 -0.0879775 -0.0736933 0.328497 0.62788
+0.365053 0.219433 -0.973205 -0.354778 -0.325695 0.831896 0.639059 -0.630742
+0.784274 -0.6332 -0.133621 -0.568539 0.423926 0.530975 0.772903 0.969602
+0.689438 -0.272964 0.691828 -0.127472 0.157738 0.113051 -0.589811 -0.750684
+0.381831 -0.0884335 0.0316414 -0.230055 -0.0134921 -0.284282 0.59055 0.749157
+0.403634 0.829692 0.245198 0.247367 0.887491 -0.314775 -0.00336517 0.915281
+0.407755 -0.141263 0.0458666 0.710067 0.413619 -0.754431 0.411961 -0.326802
+0.501326 -0.222584 0.20897 0.731039 -0.225906 -0.81537 -0.225643 -0.624335
+-0.331887 0.360021 0.629249 0.011293 0.294649 0.993715 0.913614 0.512187
+-0.966964 0.413302 -0.228988 0.600816 0.949428 0.491869 -0.135294 -0.61582
+-0.743862 -0.671765 0.630707 0.465107 0.898169 -0.693695 0.777233 -0.095741
+-0.603113 0.402744 -0.806204 0.347373 0.310882 -0.43267 -0.26291 -0.542884
+-0.247632 0.294954 0.781344 -0.356017 -0.900273 -0.382095 -0.562438 0.941904
+0.0925794 -0.160435 0.378564 -0.893988 -0.965652 -0.222735 0.000143474 0.226441
+-0.611725 0.338148 -0.239605 0.609967 -0.259542 -0.454734 -0.639997 0.346785
+-0.710872 0.728833 0.27258 0.950759 -0.797826 -0.301731 -0.101216 0.425688
+0.374105 0.587368 0.659061 0.353339 -0.499129 -0.97268 0.25812 -0.210001
+0.364602 0.345639 -0.229452 -0.515252 -0.0821484 -0.349889 0.391311 0.880473
+-0.392072 0.27623 -0.0272775 0.681752 -0.313177 0.335266 -0.141426 -0.102619
+0.290725 -0.989626 0.071846 -0.233169 0.569509 -0.739351 -0.389236 -0.671164
+-0.846608 0.266524 0.966217 0.151338 -0.895552 -0.437395 -0.700916 0.224747
+0.868884 -0.113134 -0.0122065 -0.117899 0.423913 0.232129 -0.351079 0.470261
+0.283962 -0.17001 0.0315349 0.256011 -0.639937 -0.37519 0.305536 0.614595
+0.199122 -0.216066 0.00690402 0.900753 -0.439018 -0.368711 0.624255 0.1382
+-0.0846128 0.0448389 -0.792859 -0.683196 -0.111982 0.4918 -0.773415 -0.637275
+-0.69179 0.922291 0.514366 -0.359919 0.919197 -0.212761 -0.0490307 0.159089
+-0.592126 0.913464 0.373748 0.686366 -0.0837567 0.582358 0.542379 -0.710981
+0.776816 -0.0300756 0.593407 0.385193 -0.18663 -0.101923 -0.448378 0.79683
+0.876291 0.682979 0.00792547 0.590353 0.0662863 0.827135 0.36273 0.703052
+0.619674 -0.738234 0.117859 0.897781 -0.763085 -0.59241 -0.300285 0.763047
+0.151579 0.447337 0.13128 -0.542545 -0.548617 -0.968609 -0.345168 -0.261123
+-0.412593 0.649262 -0.0421784 -0.970225 0.274411 -0.692277 0.692538 0.718578
+0.323079 0.506911 0.97922 0.658567 -0.37656 0.274636 -0.327808 -0.163211
+-0.198701 0.898417 -0.686527 -0.455088 0.294022 -0.627006 -0.36186 -0.913923
+0.424909 -0.0379385 -0.965039 -0.977996 -0.0997874 0.328052 -0.014271 0.736479
+0.787764 0.777855 -0.477795 0.749913 0.740409 0.194397 -0.514953 -0.0555138
+0.555525 0.927322 0.194017 -0.622111 0.399491 0.846684 -0.602196 -0.51277
+0.114974 0.128285 -0.391519 0.684282 0.656746 -0.072509 0.86117 0.191379
+-0.141111 0.417114 0.427917 -0.0169738 0.581725 -0.173114 0.205534 0.831369
+-0.667783 0.920361 -0.164443 -0.699943 0.328983 0.178066 0.324884 0.483594
+0.290897 0.590753 0.800007 -0.406528 0.0108895 -0.481459 0.762413 -0.87964
+-0.0374459 0.455109 0.583535 -0.407589 -0.641308 0.743001 -0.0543311 0.931398
+0.105705 -0.808965 0.622163 0.119456 -0.0576327 0.86564 -0.485867 0.536879
+-0.853874 0.378509 0.543008 -0.199228 -0.214181 -0.837815 -0.321409 -0.353931
+-0.722147 -0.252559 0.152847 -0.275855 -0.811723 -0.416028 -0.459245 -0.793537
+0.193833 0.423986 -0.281668 -0.529538 -0.414685 0.195773 0.530865 0.663184
+-0.658142 0.916743 0.103524 0.893851 0.248385 -0.863959 -0.493926 0.600878
+0.652699 0.372216 0.90989 -0.859484 0.459355 -0.664908 -0.943507 -0.264866
+0.267349 0.263592 0.942405 -0.160659 -0.690987 -0.137588 -0.126636 -0.763782
+0.420644 0.414345 0.270858 -0.751345 0.522227 0.75386 0.24366 0.713402
+0.920577 -0.37329 -0.673177 0.519007 -0.0448376 -0.801103 -0.132771 0.87576
+0.572886 0.965373 0.720584 0.0116552 0.157656 0.567011 0.0979474 0.858477
+-0.191483 0.0111142 -0.0405819 0.439271 -0.00114045 0.138384 0.952113 0.238512
+-0.878561 0.766138 -0.829573 -0.813322 0.69347 -0.384524 0.0914315 0.470025
+0.615343 -0.770406 -0.0247067 0.602883 -0.608007 0.42336 0.501264 -0.714984
+-0.890308 0.412663 0.482641 0.217433 -0.593223 0.0251279 -0.830907 -0.538826
+0.284212 -0.740456 -0.250777 0.610698 -0.43747 -0.931171 0.726396 0.511639
+-0.975656 0.393448 -0.900851 -0.685102 0.952177 -0.523442 -0.115032 -0.583663
+0.743824 -0.520495 -0.680266 0.807349 0.83317 0.114616 -0.513738 -0.73344
+0.229743 0.930853 -0.689057 0.94333 0.378999 0.404477 -0.678043 -0.515842
+-0.200405 0.333877 -0.20619 -0.110618 -0.27048 0.971163 -0.0294844 0.241777
+0.711951 -0.664789 -0.668293 0.561827 -0.868251 -0.296878 0.606881 -0.998199
+-0.792886 0.066126 0.941762 0.205742 0.343292 -0.43991 0.159765 0.302223
+0.123834 -0.246352 0.688239 -0.800765 -0.632175 0.753347 -0.263937 0.245751
+-0.85339 -0.543006 -0.813026 -0.213682 -0.299409 0.880484 -0.0594784 -0.115971
+0.0247822 -0.986925 0.532953 0.910922 -0.445822 0.0334869 0.920333 0.882088
+0.42718 0.658115 0.369245 0.895163 -0.824924 0.175481 0.472521 0.0824934
+0.379481 0.345051 0.849693 0.504958 -0.189682 -0.943164 -0.703458 0.444428
+0.861471 0.244628 -0.243541 -0.792561 0.245301 -0.295087 -0.0212582 -0.378426
+0.979916 0.414535 0.659639 -0.387006 -0.417387 0.478365 -0.332829 0.777529
+0.616686 -0.37674 0.121101 -0.108845 -0.950854 -0.836815 -0.395289 0.65502
+0.991669 -0.274754 -0.136351 -0.728001 -0.876925 -0.37137 0.175147 0.723281
+0.832188 0.924674 -0.596478 -0.869862 0.881561 0.741873 0.651392 0.51925
+-0.427572 0.00906724 -0.558908 -0.589578 -0.338921 0.830095 0.26632 -0.740495
+-0.446695 -0.0702259 0.997073 -0.701311 0.899308 -0.129431 -0.567768 0.941529
+-0.790527 -0.672531 0.392716 -0.203615 0.850462 0.299535 -0.0747023 0.418255
+-0.59688 0.0231533 -0.0109927 -0.240299 -0.222859 -0.547847 0.478953 -0.604809
+0.239525 -0.867907 0.398413 0.367716 0.275771 -0.885413 -0.393816 0.143464
+0.930022 -0.675525 -0.0909771 0.0710653 0.0960455 -0.0694187 -0.052106 -0.591057
+-0.0231766 -0.864838 0.6411 0.344139 -0.201789 -0.262545 -0.557 -0.345325
+0.59342 0.152716 0.434344 0.89218 0.0986881 -0.780129 -0.868729 0.625606
+0.00818566 -0.488817 0.741293 0.42078 -0.263251 -0.840337 0.500478 0.142849
+0.660305 -0.480487 0.25653 0.165858 0.547334 0.211187 0.169976 -0.708666
+-0.272326 -0.863905 -0.978446 -0.0991408 -0.369753 -0.438594 0.823899 0.309049
+-0.0849499 -0.837982 0.539864 0.643419 0.0885973 -0.486783 -0.978469 -0.0165461
+0.317965 0.782542 0.0914338 0.31265 -0.129641 0.688271 -0.86896 0.731073
+-0.66639 0.95396 -0.25294 -0.661787 -0.119636 0.0576572 0.51083 0.823934
+-0.0862847 -0.831097 0.622062 0.480839 -0.837853 0.0321093 -0.203866 -0.459344
+-0.515805 -0.922669 -0.835204 0.444568 -0.0733216 0.794002 -0.323481 -0.0936258
+0.133534 -0.166693 -0.190366 -0.678033 -0.468401 -0.531849 0.564241 -0.122906
+0.881661 0.044731 -0.478211 -0.380869 0.890735 -0.860411 -0.794993 -0.194394
+0.0201941 0.732144 0.553071 0.766648 0.523756 0.952517 -0.0856112 0.143381
+0.198553 -0.0327278 -0.945738 -0.756521 0.331658 0.0809548 -0.89392 -0.885436
+0.647726 -0.516117 0.553898 -0.271229 -0.407122 0.199254 -0.509396 -0.33208
+-0.899161 -0.0597467 -0.74211 0.91456 -0.551628 0.525144 -0.374348 -0.978749
+0.964722 0.0358027 0.187102 0.0683323 -0.937071 -0.705447 -0.804941 -0.50421
+-0.151172 -0.337901 -0.96729 -0.915654 -0.465939 0.256953 -0.290618 -0.225787
+0.152924 -0.820449 -0.064029 -0.270565 0.972987 -0.346386 0.780181 0.517794
+-0.45025 0.613471 0.608074 0.891807 0.250031 0.525261 0.945701 -0.803949
+0.458817 -0.133452 0.499495 -0.693867 -0.122164 -0.121782 0.756054 0.59001
+0.729794 0.12912 0.579871 0.808181 -0.937923 0.752947 -0.888688 -0.0572164
+-0.0213048 0.234291 0.0756045 0.146937 -0.806819 0.376335 -0.927768 0.51411
+-0.442081 -0.491403 -0.756449 0.633985 0.353856 -0.211605 0.46728 0.684738
+-0.587787 -0.648858 0.867078 0.727426 -0.380667 -0.171875 -0.793082 -0.719459
+-0.379344 -0.0453489 0.300836 0.00645384 0.921641 0.0624578 0.279266 -0.817832
+-0.93532 0.3827 0.999977 -0.455193 0.180612 0.674355 0.785228 -0.880989
+0.276895 -0.0498514 -0.743932 -0.94604 0.0460987 0.556896 0.580312 0.476311
+-0.815368 -0.757894 0.00689569 0.26726 -0.825702 -0.40052 0.986792 0.679104
+0.0618043 0.122066 0.988848 0.128116 -0.0267133 -0.974641 0.877536 0.119517
+-0.623966 -0.782174 -0.220243 0.00570844 0.123463 0.473008 -0.721568 0.573985
+0.629938 -0.191704 0.044033 0.189455 -0.319255 -0.399956 0.903219 0.784092
+0.971801 0.41164 -0.128211 -0.885582 -0.23368 0.55743 0.759247 0.960679
+-0.709077 0.867762 0.65299 -0.928537 0.377655 0.912603 0.975816 0.161785
+-0.357524 -0.548823 0.938905 0.203863 0.34696 0.670413 -0.19962 -0.789242
+-0.702756 -0.153727 -0.821328 0.0472297 0.378057 0.248361 -0.277278 -0.913699
+0.541585 -0.172727 0.764302 -0.861468 0.20947 0.812251 -0.728814 0.257396
+0.682423 -0.192835 -0.167988 -0.833954 0.706607 -0.0935099 -0.98626 0.951032
+0.549769 0.872987 -0.793829 -0.293233 -0.515632 0.472482 0.529231 -0.218298
+0.00249768 -0.508924 -0.630586 -0.159767 0.826932 -0.525461 0.430755 -0.881606
+0.338152 0.362913 0.731648 -0.154969 -0.293888 0.714924 0.679079 0.705427
+-0.360239 -0.546798 0.972064 -0.585367 -0.753076 0.282928 -0.0254499 -0.904648
+-0.977429 0.0421894 -0.769564 -0.180918 -0.516198 0.660201 0.537819 0.724147
+-0.374937 0.75315 0.360724 0.501295 -0.344399 0.108865 -0.685019 -0.362472
+0.902537 -0.844042 -0.902645 0.0327107 0.746802 -0.896137 0.89488 -0.38186
+0.00799492 -0.0255363 -0.158411 0.865279 0.562249 -0.786371 -0.990776 -0.98752
+-0.0287431 0.626907 -0.827029 -0.046212 -0.021303 -0.339383 -0.495085 0.112493
+-0.593129 0.0889764 0.793592 0.190739 0.697384 0.29409 -0.739642 0.574616
+0.533346 -0.79939 -0.0947867 -0.758435 -0.252366 0.420454 0.0992783 -0.90679
+0.791362 0.108924 -0.852472 -0.410327 0.89312 0.37903 -0.910593 -0.979168
+0.822607 0.113178 -0.780245 -0.0861847 0.203481 -0.960967 0.794187 0.499256
+0.0157146 -0.854559 0.959378 -0.752122 -0.431942 -0.914425 -0.100344 -0.703418
+0.639176 -0.492071 0.630305 0.0156427 0.391215 -0.231858 -0.99141 0.709872
+0.715364 -0.0279243 -0.809327 -0.64058 -0.760974 0.823927 -0.350474 -0.900163
+-0.343778 0.790012 0.302519 0.845171 0.470429 -0.74919 0.106579 -0.198452
+0.345597 0.678188 -0.249415 -0.0986324 0.31822 -0.682419 -0.0894058 -0.159801
+-0.927773 -0.0583743 0.707291 -0.407067 0.189784 -0.358025 0.483922 -0.67485
+-0.858836 0.784199 -0.757571 -0.172145 0.594192 0.934726 -0.783253 -0.547583
+-0.422483 0.0463805 -0.91506 0.477381 0.639314 -0.505029 0.614802 0.718891
+-0.137746 -0.276347 0.421175 0.675612 0.922327 0.81178 -0.0665909 -0.47881
+0.651853 -0.528218 0.225201 -0.74441 0.25099 -0.114694 -0.255129 -0.177056
+-0.80798 0.782718 0.422031 0.86857 0.938546 0.0929628 0.834163 -0.317626
+-0.408741 -0.945791 0.84471 -0.612027 0.810331 0.894789 0.13357 0.359048
+0.293323 -0.980481 0.937842 0.0598322 -0.840713 -0.957666 -0.407442 -0.993255
+0.60878 -0.904276 0.976301 -0.911836 -0.37507 0.926083 -0.552848 0.588328
+-0.895595 -0.458053 -0.915578 -0.364804 -0.873578 0.346265 -0.864188 0.271065
+0.554131 0.887265 0.968452 0.499216 0.446189 -0.885185 -0.267792 -0.0813319
+-0.973781 -0.917278 -0.922124 0.755966 -0.560364 -0.152761 0.73279 0.214736
+-0.0959491 0.355175 -0.305867 0.493368 0.689713 -0.68866 -0.974056 0.853615
+0.872727 0.0279295 0.91701 -0.503722 0.810464 -0.596978 -0.457862 0.233401
+0.862179 0.110614 -0.962337 -0.0959645 0.727667 -0.486606 -0.618321 0.226816
+-0.0372636 -0.341771 0.449044 0.505915 0.887379 0.537463 -0.390808 -0.676399
+0.877213 0.328224 0.826247 -0.383743 0.770792 0.357184 -0.224052 -0.357501
+-0.774513 0.651501 -0.584021 0.748626 0.276732 0.277809 0.399628 0.290414
+-0.11288 0.492465 0.854089 -0.387016 0.553205 0.286692 0.386178 0.434708
+-0.271317 0.825526 -0.0900205 -0.606965 -0.550913 -0.374639 -0.828632 0.901892
+-0.215649 0.716365 -0.591051 -0.682146 0.0558905 0.946952 0.43916 0.315786
+-0.421451 -0.237249 0.605612 0.0499465 0.969081 -0.495375 -0.522025 0.997612
+-0.932361 -0.660013 0.757458 -0.322021 -0.897498 -0.727323 -0.0540161 0.905532
+-0.145957 0.102737 -0.835887 0.503569 -0.912842 0.95257 -0.426563 -0.938148
+-0.647317 0.995824 0.723835 -0.716276 -0.207958 0.263358 0.82976 -0.714866
+0.0152628 -0.0180885 0.89722 -0.0578 -0.231579 -0.833811 0.373745 -0.0693651
+-0.512399 -0.690217 0.941337 -0.366201 -0.537408 0.416734 -0.613837 0.8855
+0.672429 0.880776 -0.792689 -0.204073 -0.906482 0.922812 0.104828 0.460221
+0.619748 0.769417 -0.873343 0.664736 -0.0494597 -0.249347 0.900202 -0.458901
+0.659488 0.192534 0.163689 0.0586922 -0.902261 -0.172069 -0.82588 -0.149118
+0.077176 0.308493 -0.106334 0.993873 0.520081 0.376014 -0.788564 -0.533899
+0.130135 0.74021 -0.528029 0.223747 -0.737436 0.579668 -0.788358 -0.130166
+0.501493 -0.74121 -0.0851298 -0.308201 0.0299741 -0.242361 -0.330355 0.452635
+0.745454 0.335935 -0.199234 -0.433497 0.112833 0.752673 -0.119819 -0.986114
+0.919548 0.578935 0.542923 -0.10352 -0.766806 -0.978232 -0.34755 0.788593
+0.62738 0.0990158 -0.166868 0.194295 0.351127 0.814015 0.676045 -0.356309
+0.510406 -0.419944 0.523977 0.392391 -0.334614 -0.344021 0.266684 -0.142563
+-0.758684 0.211365 -0.605222 -0.592752 -0.677406 -0.661907 0.188426 -0.851318
+0.260054 -0.933099 -0.112497 -0.71334 0.617495 0.233812 -0.810667 -0.0764758
+0.20642 0.395384 -0.24246 -0.983552 -0.634481 -0.0824766 0.0806025 0.532388
+0.0280422 0.365149 0.167271 -0.0171417 0.274566 -0.822412 -0.0184639 -0.853725
+0.412007 0.18347 -0.0791277 0.391852 -0.276179 -0.0103696 -0.100715 0.698667
+0.511202 0.427406 0.72993 0.127507 0.361402 -0.952601 0.18617 0.221879
+0.209074 -0.49027 -0.199655 0.328483 0.638837 0.220071 0.567806 -0.955906
+-0.116366 0.8109 -0.303113 -0.839278 0.853005 -0.121356 0.588508 0.365637
+0.058076 -0.980878 0.35331 -0.15642 -0.2379 0.229284 0.541109 -0.186901
+-0.787957 0.934787 0.706604 0.532961 -0.256714 0.309883 0.396585 -0.261672
+0.355373 -0.179306 -0.411972 0.368987 -0.917634 0.948915 -0.584951 -0.829728
+0.637541 -0.173326 0.210325 0.607454 0.572296 0.841261 0.0494415 -0.0763956
+-0.591643 -0.444647 -0.504743 0.434822 0.849002 -0.211766 -0.0788843 0.989326
+-0.337477 0.385435 0.445913 0.309361 0.918501 0.6652 0.944211 0.0257118
+-0.23916 -0.451166 -0.609886 -0.0659227 -0.0375864 0.737618 0.367575 -0.820003
+0.496646 -0.576896 0.767511 -0.689981 0.705403 0.712963 -0.0780863 -0.333201
+0.608137 0.487054 0.100392 0.300656 -0.84303 0.719292 -0.982492 0.980654
+-0.818826 -0.0389666 -0.476579 -0.184201 -0.632971 0.420708 0.0329246 0.56942
+-0.865627 -0.239283 0.872223 0.986551 0.974816 0.729962 -0.204364 0.942937
+-0.686741 0.234766 -0.0289711 0.32923 0.0281623 0.651585 0.505194 0.278144
+-0.869217 0.942754 0.656311 -0.884832 -0.755165 0.722221 -0.555994 0.181614
+-0.794462 0.96172 -0.444081 0.497709 -0.576258 -0.507055 -0.960692 0.897876
+-0.189972 0.47366 -0.620641 0.831582 0.908929 0.399992 -0.620239 0.866167
+0.166999 0.57064 0.386637 0.293375 -0.235856 -0.925089 0.908138 -0.459595
+0.84173 0.361143 0.277008 -0.699575 -0.328956 -0.949933 0.587514 0.0271074
+0.892804 -0.805868 -0.971652 -0.0706002 0.780361 -0.427233 0.569584 0.921465
+-0.701738 0.553394 -0.434867 0.950728 -0.602964 -0.231112 0.142276 0.436999
+-0.921229 0.963686 0.0121928 0.478565 -0.903602 -0.797991 0.763195 -0.551912
+-0.119594 -0.366926 0.991877 -0.533825 0.79025 -0.26983 -0.843712 -0.633321
+0.514414 -0.731802 0.388953 0.695488 0.281179 0.0614743 0.854952 -0.639278
+0.653624 -0.93081 -0.703172 -0.952874 0.467182 0.439103 0.664818 -0.870386
+-0.461089 0.681186 -0.837432 -0.551937 -0.915217 0.724061 -0.980872 0.949939
+-0.412469 0.18445 -0.63193 0.467245 0.110388 -0.871162 0.407215 -0.554955
+0.604099 -0.592378 -0.503853 0.199651 0.215938 -0.0685861 0.936613 -0.34603
+-0.916616 0.105062 -0.113299 -0.849665 -0.153681 -0.24699 -0.0431739 -0.99078
+0.688881 0.0168708 -0.273708 0.559642 0.202772 0.0186263 -0.825888 0.175398
+0.327059 -0.781869 -0.179969 0.923801 -0.601341 -0.908216 -0.18981 -0.337681
+0.450217 -0.940719 -0.374239 0.707066 -0.946993 -0.568042 0.457238 0.25565
+-0.134222 -0.426903 0.13369 0.124935 -0.867752 -0.958096 0.40148 0.590237
+0.511295 0.322837 0.0731732 -0.380006 -0.11069 0.774001 0.174249 0.168671
+0.589268 -0.657451 -0.866506 0.261098 -0.413224 0.673675 0.0814509 -0.470938
+-0.868213 0.604029 0.744615 0.599093 0.0384209 0.125244 -0.685501 -0.0630482
+-0.0304775 -0.108923 -0.429019 0.196518 -0.859279 -0.794601 -0.911809 0.163866
+0.644154 -0.562387 -0.790462 -0.595303 -0.553399 0.697125 -0.725724 0.469391
+-0.152077 0.741402 -0.0546205 -0.932208 0.840667 -0.293023 0.588662 0.606879
+-0.252727 -0.93542 -0.92383 0.692652 -0.59087 -0.454228 0.880038 -0.520625
+-0.0330253 0.327793 -0.175133 0.5013 0.542762 0.878107 -0.445413 0.198224
+-0.174487 -0.549524 0.037043 -0.673611 0.818549 -0.520281 0.624963 0.846791
+0.567396 0.336605 -0.0631226 -0.0271266 0.564415 -0.813487 0.149925 -0.935113
+0.379675 0.431089 -0.880337 -0.09441 0.950797 -0.375657 0.774873 0.339918
+-0.892763 0.876422 0.618538 0.134364 0.931439 0.959874 0.760375 0.12029
+-0.632104 0.593841 0.772795 0.516281 0.634152 0.974791 0.823063 -0.166161
+0.315663 0.768764 0.433545 0.311113 -0.324854 0.957896 -0.490663 -0.737455
+-0.304496 0.733789 0.793955 0.411901 -0.498453 0.293996 0.420119 0.422718
+0.670829 0.773441 0.696162 -0.513205 -0.202708 0.427208 -0.0306869 -0.841357
+0.920577 0.765176 -0.853106 0.370126 -0.989349 -0.546866 -0.575291 0.287968
+-0.757095 0.192672 0.814395 -0.453257 0.604847 -0.876354 0.367886 -0.0151331
+0.235559 0.875296 0.477356 -0.218342 0.26972 -0.808785 -0.682001 -0.647294
+-0.752228 -0.524457 -0.84528 -0.548262 0.0279057 0.746114 0.170418 0.0449894
+-0.392635 -0.597178 -0.939452 0.46004 0.422517 0.0810758 -0.850889 0.449146
+-0.409177 0.415453 -0.54126 -0.0305021 -0.31647 -0.0866191 0.224091 -0.719058
+-0.810073 0.187324 -0.832119 -0.189144 -0.830587 0.593345 0.770149 -0.330896
+-0.535108 0.273231 -0.0951172 -0.928801 0.389627 -0.232366 0.882369 -0.853362
+-0.497017 0.601427 -0.554973 0.608969 -0.781784 -0.180138 -0.0446734 0.149021
+0.454688 0.633539 -0.0790617 0.388466 -0.616397 -0.863969 0.410837 -0.680489
+-0.148318 -0.339283 0.163559 -0.0209041 -0.300157 0.430034 0.940282 0.602268
+-0.518671 0.275683 0.698899 -0.575999 -0.502948 0.182458 0.48962 -0.440142
+-0.617709 0.936434 -0.936071 -0.0633253 0.570726 -0.408753 -0.0703058 -0.0714649
+0.101372 -0.546566 -0.671765 0.986878 0.638177 -0.452032 0.639692 -0.769896
+0.174799 -0.0577958 0.322054 0.658358 -0.709421 -0.945225 -0.735239 -0.513385
+-0.109145 -0.227472 0.751624 -0.315295 -0.66989 -0.748413 -0.539431 0.72071
+0.966609 -0.432091 0.292787 0.91216 0.361899 -0.884765 0.110524 -0.243311
+-0.839594 0.737413 -0.020524 -0.577383 0.274459 -0.641296 0.294426 0.266055
+-0.0777944 -0.12732 0.519281 0.0816115 -0.238187 0.645786 -0.319999 0.885084
+-0.783431 0.243143 -0.78833 0.320227 -0.601606 0.430834 0.191957 0.204063
+-0.938407 0.98457 -0.306877 -0.546397 0.974052 0.331455 0.972354 0.943355
+0.586176 -0.828675 -0.323056 0.160293 -0.920361 -0.0660152 0.622205 0.641198
+0.872164 -0.338022 -0.143586 0.745673 -0.27235 -0.942767 -0.846036 -0.658522
+-0.347873 0.14824 -0.827163 0.0277554 0.215965 0.462571 0.150729 -0.719356
+0.710976 -0.0125055 -0.661091 0.0458706 0.279894 -0.452641 -0.805444 -0.949556
+0.303348 0.904368 0.50278 0.0118716 0.574233 -0.482165 -0.328897 0.85348
+0.494556 0.750216 0.279848 0.79234 0.299291 -0.332139 0.402305 -0.708261
+-0.185838 -0.168782 0.512185 0.411594 -0.182905 0.855864 -0.650474 -0.0487407
+0.274737 0.00184485 0.119464 0.0808393 0.455276 0.328098 0.790185 0.771224
+-0.750247 0.991348 0.575928 0.392401 -0.419237 -0.791278 0.7272 -0.662481
+0.518297 0.866057 -0.0971389 -0.656726 -0.00456969 -0.530444 0.74639 0.545359
+-0.913198 0.168062 0.44004 0.47359 -0.893752 -0.632574 0.0189093 -0.285474
+0.121985 -0.0851743 -0.358886 0.443117 0.232953 0.383373 0.428068 0.330468
+-0.952961 -0.689825 0.902817 0.988628 -0.242252 -0.0696776 0.403773 0.610098
+-0.558115 0.0430609 -0.152619 -0.856945 -0.743948 -0.964333 0.0213278 -0.350069
+0.951536 -0.715168 0.908198 0.0755313 -0.302643 -0.0346488 -0.932556 -0.953335
+0.716817 0.169996 0.446301 -0.890338 -0.650838 0.288421 0.0217752 0.827143
+-0.423832 -0.319625 0.57522 0.492049 -0.954419 0.0321517 -0.571249 -0.428418
+-0.929349 -0.147587 -0.777471 -0.105646 -0.233346 0.448064 -0.637381 -0.24875
+-0.505605 0.705017 -0.0959733 -0.750152 -0.9875 0.237013 0.611796 -0.0658917
+-0.754473 0.975777 -0.311153 0.811346 0.816528 0.479834 -0.417514 -0.0501505
+-0.336015 -0.436469 0.246355 -0.860231 -0.795712 0.132214 0.220806 0.224177
+-0.464325 -0.807899 0.226076 0.463425 0.277786 -0.0949832 -0.628236 0.685393
+-0.610457 -0.830874 0.0182248 0.487999 -0.434955 0.417479 0.662097 -0.590251
+-0.868883 0.28932 -0.52939 0.583749 -0.853499 -0.446555 0.640106 -0.312221
+-0.571267 0.499154 0.449614 0.395598 -0.0409316 -0.914739 0.419068 -0.0674042
+-0.411804 0.270978 0.264104 -0.324432 -0.519737 -0.662117 0.763018 -0.222477
+0.524455 -0.560286 -0.562702 0.292157 -0.533457 0.584337 -0.508795 -0.929743
+-0.762652 -0.971874 0.802773 0.791144 0.00753262 0.766991 0.540942 0.622855
+0.18138 -0.690126 0.60004 -0.94918 -0.190943 0.163418 -0.196051 0.122354
+-0.85054 -0.616725 0.0901593 0.598235 0.122568 0.877437 0.273597 -0.357027
+0.431568 -0.892009 0.840537 0.741927 0.580244 -0.352159 -0.57254 -0.727205
+0.0600962 -0.0731579 0.564756 0.229222 0.713273 -0.771259 0.114384 0.0744715
+0.816392 -0.98539 -0.640545 0.681416 0.601987 -0.169311 0.835319 0.545517
+-0.638803 0.904986 -0.985946 0.0495214 0.808597 0.192554 -0.00420704 0.350903
+0.353323 0.639512 -0.423534 0.765067 0.76902 -0.433274 -0.486244 -0.889671
+-0.398864 0.353809 0.317748 -0.151293 0.721683 -0.462832 -0.144684 0.394665
+0.498871 0.226772 -0.696744 -0.708177 0.688459 0.938859 0.249073 -0.349694
+-0.543234 -0.775247 0.450643 -0.847143 -0.239568 -0.226471 0.160416 -0.915136
+-0.311468 -0.136463 -0.072374 -0.231853 -0.706321 -0.342557 -0.856242 -0.523405
+-0.0887504 0.878851 0.357334 -0.20889 0.6194 0.623697 0.682307 -0.643001
+0.786759 0.497659 0.523058 0.352989 -0.377757 -0.568991 0.575593 0.248978
+-0.44774 -0.526464 0.137441 0.0368045 -0.138769 -0.719269 -0.636638 0.205365
+0.754234 0.290974 0.118056 0.926953 0.340107 0.647463 -0.165792 0.524386
+0.862808 -0.808229 0.986318 -0.333334 0.938955 0.504754 -0.948564 -0.627975
+-0.737627 -0.850771 -0.872538 -0.337812 0.281918 -0.121811 -0.0542474 0.247375
+-0.306369 0.127887 0.728652 0.0133278 0.751216 -0.125756 -0.356234 -0.19106
+0.202586 0.309792 -0.453417 0.692834 0.69547 0.70986 -0.85682 0.760528
+-0.131201 0.144543 -0.178906 -0.157251 -0.533544 0.888226 0.208771 -0.977268
+-0.504413 -0.0699119 -0.435211 -0.91065 0.312126 0.75234 0.97395 0.544
+0.894817 0.511993 0.287178 -0.23484 -0.581139 -0.584932 -0.625012 0.0210486
+-0.286104 0.254178 -0.542006 0.161124 0.766974 0.742791 0.912037 0.632687
+-0.60916 -0.885383 -0.756673 -0.777782 0.277766 0.991106 0.900554 -0.391421
+-0.142503 -0.818095 -0.45911 -0.918373 -0.298651 -0.277392 0.725643 -0.854794
+-0.649908 -0.187901 0.0247095 -0.60228 0.793194 -0.617519 -0.997789 -0.274494
+-0.280149 0.898711 -0.360574 -0.976312 0.476091 0.916732 -0.169414 -0.72465
+-0.411932 -0.32515 0.871157 0.599611 0.134385 -0.102408 0.394689 0.7496
+0.104619 -0.175166 0.904801 0.0569862 -0.0476467 0.376232 -0.110904 0.740176
+0.52391 0.230445 -0.167388 -0.522466 0.227577 0.29069 -0.0534199 0.0569272
+0.625561 0.549869 0.861022 0.10075 0.72685 -0.0568357 0.509931 0.0672989
+-0.346833 -0.551593 -0.389969 0.0073665 0.288691 -0.804029 0.088699 0.532961
+-0.767316 -0.343539 -0.357081 -0.0846586 0.600049 0.835556 0.816295 -0.263728
+0.58262 -0.116763 0.636783 -0.618889 -0.416884 -0.309726 -0.468009 0.871142
+-0.823144 0.986674 0.95286 -0.361432 0.55619 0.958338 -0.136065 0.00978749
+0.157041 -0.134212 0.276699 0.145281 -0.485878 0.862085 0.902173 -0.76561
+-0.138389 -0.182146 0.889744 0.297919 0.740105 0.147681 0.503145 -0.736469
+-0.685033 -0.485946 0.201931 0.296399 0.480032 0.935205 0.238879 -0.803755
+-0.615923 0.079203 -0.319049 -0.402563 -0.124385 -0.320356 -0.438738 0.347248
+-0.26052 0.160195 0.763041 -0.255672 0.994378 0.909226 -0.0298997 -0.997844
+-0.276995 -0.453403 0.634612 0.0875058 0.650583 -0.96219 0.523689 -0.100822
+-0.177809 -0.937384 -0.28952 -0.220639 0.271869 0.790844 -0.139988 0.387136
+-0.157078 0.472966 -0.67483 -0.991139 -0.822019 -0.444225 0.934609 0.994294
+-0.209155 -0.386623 0.541155 0.466955 0.684132 -0.637023 -0.000662698 -0.366198
+0.5711 0.205397 -0.738076 0.182721 -0.283388 -0.842837 0.19663 -0.599122
+-0.674715 -0.0732164 -0.941004 -0.512716 0.927311 0.184827 -0.281494 -0.300882
+-0.547956 0.999928 0.959472 0.0852394 0.689922 0.514692 -0.127357 0.413696
+-0.0377045 0.197385 0.991193 -0.987554 -0.991909 -0.741119 -0.0827873 -0.851644
+0.789856 -0.0561885 -0.918343 0.134567 0.329217 0.687128 0.467436 -0.435116
+-0.471794 0.73237 0.977324 0.694653 -0.451916 0.454989 0.00498822 -0.257135
+0.748528 0.450546 -0.743392 -0.450777 0.758868 -0.320118 0.728743 0.0153246
+-0.531501 -0.892419 0.633288 0.658013 0.263826 0.12886 0.385882 0.0323802
+0.687212 -0.24275 0.751322 -0.730946 0.937416 0.0921673 0.405329 0.241475
+-0.213351 0.774039 -0.049899 -0.25581 0.000732646 0.684335 0.151096 0.649219
+0.26154 0.333546 -0.80676 -0.119055 0.364801 0.177554 -0.691678 -0.62992
+0.52007 -0.12052 0.983154 0.806358 -0.00997916 0.889552 -0.877461 -0.215677
+0.757724 -0.741531 0.156651 -0.68095 -0.0755776 0.486172 -0.359773 0.0925162
+-0.692822 -0.0141875 0.81207 -0.00906921 -0.00493599 0.47499 -0.625689 0.90352
+0.649982 -0.812876 0.895096 -0.0379297 -0.338638 -0.478548 -0.0943941 0.272687
+0.724685 -0.022035 0.0457361 -0.716353 0.344336 0.176737 -0.126939 -0.752648
+-0.936457 -0.233943 -0.648857 -0.45973 0.73649 0.932867 0.757983 0.962803
+0.170945 0.490496 0.952495 0.763113 -0.68094 0.720786 -0.667562 0.950296
+0.977082 -0.497909 0.727733 0.610678 0.0265574 0.00265843 0.391433 -0.765324
+0.619972 0.541125 0.708 0.997773 -0.272605 0.712599 0.0736995 0.272346
+-0.940861 0.0762346 0.0136436 -0.537222 0.594253 -0.907104 -0.372755 0.22729
+0.873806 -0.528205 0.477191 -0.943149 -0.439462 0.117662 -0.252288 0.516592
+0.657385 -0.518584 -0.946717 -0.854304 -0.952449 -0.752462 0.207444 0.0728009
+-0.645599 0.340758 0.657169 -0.331184 -0.598246 -0.274908 -0.0250179 -0.304901
+0.686562 -0.654303 0.27842 -0.115524 0.473662 0.0127028 0.553789 0.990883
+0.393672 0.600265 -0.920467 0.532092 -0.349666 -0.615626 0.633596 -0.841394
+0.131594 -0.708877 0.585439 0.45468 0.378988 -0.0539827 -0.596616 0.645908
+0.892736 0.0992729 -0.0382379 0.427434 -0.350509 -0.360955 0.979282 0.139371
+0.267914 -0.492926 -0.622307 -0.674663 0.164849 -0.229132 -0.035842 0.959332
+-0.731852 0.327502 -0.575435 -0.0297323 0.980193 -0.612321 -0.280145 0.0856629
+0.643568 -0.513787 -0.134338 0.232088 -0.149599 -0.584207 -0.579692 0.157425
+0.614703 0.736502 -0.0833472 0.514622 -0.293587 -0.650099 0.533982 0.186323
+-0.675352 -0.119661 -0.515183 -0.210644 -0.85384 0.307861 0.700693 -0.877282
+0.274578 0.473508 0.406831 -0.538001 0.956363 0.646266 -0.546682 0.992454
+-0.87327 -0.00296215 0.0414035 0.0500699 -0.670198 0.853049 0.914707 0.116119
+0.190999 -0.700027 -0.859726 -0.639689 -0.501863 0.951785 0.43509 -0.938298
+0.907065 0.087347 0.317729 -0.55167 0.694181 -0.298263 -0.173535 -0.405605
+0.894403 -0.584206 -0.0723924 0.633117 0.570955 -0.560545 0.467796 0.122046
+-0.796304 0.528693 0.00108817 -0.890026 -0.820986 0.412875 0.221054 -0.558606
+0.219785 -0.199144 0.467752 0.0898112 -0.5489 -0.178627 -0.974027 -0.70176
+-0.279536 -0.355732 0.829754 0.206678 0.92681 0.725132 0.59638 -0.652078
+0.901265 0.691778 -0.10057 0.967704 0.233985 -0.877128 -0.40284 0.149152
+-0.764962 -0.204784 0.770602 -0.837699 0.776018 0.632944 0.201403 -0.586494
+-0.132137 0.720944 -0.452181 0.0467145 0.515932 -0.23395 -0.944926 -0.525222
+0.180312 -0.85565 0.960342 0.854501 0.25741 -0.336411 0.473119 0.792189
+-0.6289 -0.0291849 0.0420405 -0.452139 0.238573 0.429904 0.270788 -0.750278
+0.847802 0.426038 0.353717 -0.950472 0.981075 0.888408 0.766313 -0.765033
+0.283318 0.683637 -0.594716 -0.258368 -0.949117 -0.306491 -0.793554 0.163335
+0.571415 -0.561182 0.741436 -0.11306 -0.226107 -0.542048 -0.623548 -0.686956
+0.2674 -0.838761 -0.117915 -0.193575 0.0629765 0.705599 0.0882624 -0.255399
+0.791962 -0.154414 0.155621 -0.496132 -0.378271 0.939525 0.970834 0.564463
+0.335219 0.801393 -0.211062 -0.0313083 0.268018 -0.299146 -0.232611 0.714823
+-0.426097 0.567041 0.649474 0.0358228 -0.299913 -0.0713698 -0.633735 -0.784617
+0.0232393 0.662918 0.0372392 0.231156 -0.691952 0.433214 -0.603794 -0.213686
+0.905391 0.415682 0.402408 -0.211226 0.240961 0.636125 -0.0358785 0.492232
+0.107998 0.778871 0.011083 0.514138 0.63688 -0.634362 0.161362 -0.00531217
+-0.684938 0.930207 0.806177 0.46788 -0.00147245 0.466066 0.847943 -0.677591
+-0.00649523 0.806737 -0.302778 -0.145562 -0.863794 -0.0302537 0.772421 0.187482
+0.619861 -0.0637037 -0.110914 0.0793783 0.256422 -0.0290565 -0.392131 0.864709
+-0.0191528 0.927415 -0.082349 0.525604 -0.931214 -0.466625 -0.914915 0.872849
+-0.17235 0.646809 0.949734 -0.81783 -0.322976 0.127121 -0.200871 0.0826042
+-0.632413 0.0674995 0.978769 -0.318435 -0.186217 -0.663021 0.57249 0.926005
+0.0181546 0.0713998 0.709013 -0.385123 0.946755 -0.0728979 -0.103564 -0.188298
+-0.683118 0.320875 -0.391775 -0.335778 -0.0798763 -0.972134 0.219379 0.492908
+0.579168 0.799142 0.295507 -0.764597 -0.761547 -0.26899 0.872283 0.0791589
+-0.606292 0.794086 0.137936 0.637808 0.0615395 -0.389156 -0.614971 0.924965
+0.713525 0.884743 0.661499 0.615001 0.396643 0.619282 -0.887594 0.863704
+0.124719 -0.669662 0.0415935 0.892271 0.296006 -0.419755 -0.34637 0.161909
+0.953529 -0.461741 -0.476569 -0.150034 0.703462 -0.918889 -0.914346 -0.635682
+0.625844 -0.910335 0.412728 0.684072 -0.573945 -0.506028 0.150957 0.164161
+-0.455554 0.302384 0.94253 -0.149663 -0.681389 0.0460208 0.501568 0.00589114
+0.473585 0.858584 -0.630107 0.962347 -0.902829 -0.423111 0.516332 -0.101748
+0.491872 0.668381 -0.402207 0.712402 0.574147 0.810886 0.221889 -0.789166
+0.555292 -0.966892 -0.250653 -0.698821 -0.770122 0.468273 -0.189857 0.486777
+-0.274678 0.475475 0.090513 0.0941176 0.833517 -0.0989901 0.732688 0.929906
+0.933572 0.558267 -0.959083 -0.0707562 -0.371505 0.797705 0.464027 0.922195
+0.719289 0.503181 0.582471 0.763781 -0.0555772 -0.39836 -0.0366971 0.115712
+-0.522027 -0.321389 0.131675 0.89057 0.716248 -0.446274 0.974616 0.543703
+0.419614 0.463716 0.0980643 -0.985997 -0.407129 -0.948701 -0.115993 -0.546362
+-0.0715668 0.849654 0.403235 -0.910678 -0.117649 -0.604286 0.184488 0.729098
+-0.93474 -0.599825 0.0214467 0.670089 0.363606 0.988076 0.432029 0.148693
+0.819119 -0.251876 0.271394 -0.764731 0.607854 0.562658 0.699353 -0.222141
+0.9961 0.262391 -0.479401 0.275457 0.461772 0.816849 -0.762862 -0.697602
+0.581109 0.350793 -0.120216 -0.312196 -0.929956 0.407073 -0.312881 -0.705924
+-0.668388 0.984213 0.273338 0.639527 0.501369 -0.614373 0.214894 -0.218285
+-0.124574 0.7385 -0.00144546 -0.0154488 -0.0514818 0.703353 0.875083 0.169949
+0.11434 0.471679 -0.665672 0.598294 -0.213896 -0.10477 -0.45066 -0.832872
+0.574354 0.606272 -0.71956 -0.597004 -0.394706 -0.183679 -0.304551 0.535606
+0.572686 0.214173 -0.812911 0.32976 -0.611692 0.244669 -0.0058671 -0.10343
+-0.197952 0.346636 -0.587875 -0.352256 -0.277861 0.507426 -0.911851 0.406888
+-0.0069995 -0.171561 0.767617 -0.682493 -0.493422 -0.556888 -0.412298 -0.633811
+-0.299201 0.488389 -0.642966 0.551488 0.456489 -0.952984 -0.414757 -0.593406
+0.343825 0.725008 0.24153 -0.851154 -0.374948 0.122291 -0.766575 0.725006
+-0.779711 0.385846 0.323872 -0.765733 -0.202113 -0.143466 0.298488 -0.26644
+-0.503339 -0.662685 0.0770419 -0.119041 0.863646 0.525176 -0.130999 -0.422811
+0.422938 0.147297 0.16718 0.437515 -0.36838 -0.630864 -0.800768 0.961757
+-0.0641101 -0.715403 0.246984 -0.452333 -0.387947 0.343553 0.273382 -0.902628
+-0.541774 -0.914521 -0.593925 -0.6866 0.453686 -0.563833 0.622579 0.622065
+-0.539202 -0.667677 0.338388 -0.753619 0.597776 -0.649447 -0.490685 -0.760126
+-0.368934 -0.984469 -0.162553 0.535268 -0.0581524 -0.270395 0.117763 0.376106
+0.421615 -0.269914 0.0908834 -0.428551 -0.0659017 -0.674737 0.343036 -0.809389
+0.381187 0.054868 -0.736517 -0.0805571 0.238274 0.392724 -0.858288 -0.555801
+-0.668288 0.0322469 -0.17407 0.709696 -0.228347 -0.405828 -0.741468 0.112184
+0.586689 0.877233 0.353419 -0.269228 0.246214 0.0663341 -0.265378 0.0738752
+-0.846392 -0.896188 0.599184 -0.989711 0.815948 -0.891413 -0.717648 0.928854
+0.847613 0.497684 0.653577 0.256727 -0.941993 0.687621 0.885548 -0.0328761
+-0.835823 -0.633593 -0.778862 0.101114 -0.297876 0.514077 -0.0219575 -0.35025
+0.020711 0.559037 0.316685 -0.583087 0.540192 -0.435422 -0.675302 -0.521982
+0.745565 -0.292312 -0.0292307 -0.239998 -0.381024 -0.450953 0.0987404 -0.942122
+-0.742454 0.257428 0.934171 0.809179 0.19012 0.2545 0.907287 0.284899
+-0.672138 -0.161404 0.3675 0.0488093 0.931938 0.176262 0.88015 -0.329395
+-0.025253 0.316535 -0.206743 0.0107128 0.702844 -0.384482 0.30496 0.368379
+0.84283 -0.132163 -0.871323 0.839478 0.451141 0.275397 -0.67559 0.884972
+-0.424877 -0.0780003 -0.675793 0.0674848 0.120192 0.85349 0.825394 -0.23963
+0.964721 0.288912 0.784952 0.0211033 0.776431 -0.168673 -0.827909 -0.0470922
+-0.137226 -0.295394 -0.758961 -0.358091 0.719381 0.22567 0.465528 0.238049
+0.846867 0.593485 0.402443 0.0197375 -0.326613 -0.389345 0.210102 0.585761
+-0.251388 0.975586 0.765576 0.0105263 0.0485571 -0.144259 -0.225171 -0.846924
+0.904802 -0.306201 0.973132 0.0169053 0.54403 0.146896 -0.67209 -0.100314
+-0.305925 -0.649057 -0.961895 0.10197 0.773901 0.251404 -0.68321 -0.999172
+0.803232 0.831024 -0.194258 -0.21741 0.519616 -0.26428 -0.871257 0.459452
+0.495183 -0.315436 0.988942 0.0946434 -0.145408 -0.780088 0.478292 -0.440063
+0.140639 -0.666605 -0.394771 0.209669 -0.882781 -0.866785 0.822876 0.313566
+0.289734 -0.351428 0.0652073 0.0207896 -0.880111 -0.289536 0.655548 -0.866614
+-0.55384 -0.263566 0.324455 -0.907539 -0.429209 -0.674557 0.171382 -0.749217
+0.573479 -0.606619 -0.99615 -0.841321 -0.624034 -0.16957 0.40645 -0.857816
+0.6124 0.515271 -0.476764 0.712873 -0.13435 0.456959 0.976651 0.049353
+-0.38961 -0.554669 -0.961053 0.597428 -0.980611 -0.306856 0.237047 -0.0528948
+0.436825 0.067787 0.553998 -0.973296 0.589735 -0.965539 0.933691 -0.092189
+-0.756253 0.657371 -0.131657 -0.393731 -0.401185 -0.61353 0.0998119 -0.0482496
+0.88094 0.068662 -0.311243 -0.541921 0.6701 -0.631771 0.6582 0.837739
+0.553374 -0.311691 0.895415 0.427898 -0.466342 0.639683 0.0199094 -0.290336
+-0.27462 -0.924421 0.433571 0.152194 0.391239 0.572982 -0.898181 -0.437818
+0.400034 0.193773 -0.397168 -0.61091 0.0983465 -0.122479 0.214126 0.148631
+-0.639838 0.703216 -0.709621 -0.159355 -0.979139 0.227143 0.646861 -0.882124
+0.435646 0.598844 0.553529 0.0650148 -0.482796 0.131495 -0.909386 -0.984489
+-0.91282 -0.486764 0.565165 -0.365891 -0.625747 -0.968751 -0.5831 0.760851
+0.41417 0.88422 -0.528985 -0.79639 0.769148 0.0281669 0.278321 0.233352
+0.043172 -0.119929 0.744422 0.204351 -0.181731 0.207236 0.00826885 -0.89295
+0.481915 0.327717 0.041896 -0.408631 -0.0673356 -0.873874 -0.508949 0.513303
+-0.670448 -0.135228 -0.224288 0.429496 0.716588 0.108394 -0.672017 0.813268
+-0.823246 0.284042 -0.89564 -0.660131 -0.622931 0.386008 0.642158 -0.46408
+0.124811 0.91243 -0.131516 0.580109 0.273929 0.620618 -0.60207 -0.940485
+0.242091 -0.842635 0.558778 -0.708394 0.959491 0.807801 0.260162 -0.860087
+0.701188 -0.286316 0.665152 0.0836808 0.0777449 0.665974 0.190459 0.229637
+-0.573788 0.553263 0.401587 -0.254484 0.453416 0.320535 0.124292 -0.674375
+-0.772557 0.286658 0.286858 -0.610604 0.164543 -0.461166 -0.111085 -0.467779
+0.755912 -0.835414 -0.523273 0.124686 0.625215 0.254365 -0.621343 0.721486
+0.723409 0.800257 -0.473727 -0.977582 -0.692884 0.415379 0.536753 0.757392
+0.836582 -0.563446 0.361799 0.49473 -0.65864 -0.873374 0.991183 0.520681
+-0.0842182 0.655348 0.417902 -0.607633 0.288775 -0.92892 0.96663 -0.822085
+0.962041 -0.131105 -0.235819 0.988614 -0.637875 -0.738374 0.741394 -0.474423
+0.466231 -0.931568 0.460443 -0.20345 -0.628494 -0.994319 0.931444 0.675085
+0.972864 -0.20814 0.460001 -0.885232 0.124898 -0.985502 0.888845 -0.579836
+-0.29524 -0.680225 0.122174 -0.219773 0.64414 -0.447162 0.359855 0.266702
+-0.668839 -0.772446 0.581573 -0.0510943 -0.212979 0.966907 0.613242 0.857691
+-0.0390333 -0.919343 0.916039 0.0784157 0.861652 -0.650292 -0.994993 -0.646119
+-0.92435 -0.640192 0.861895 -0.751346 0.64982 -0.566795 0.724396 -0.911267
+0.87906 0.649922 0.854086 -0.556599 0.352613 -0.790212 0.0402968 0.187952
+-0.0738641 0.202716 0.0614971 -0.151917 0.416292 0.530612 0.774077 -0.394695
+-0.133099 -0.693308 -0.385959 0.669784 -0.851992 0.331418 -0.496843 -0.887921
+0.840795 0.221318 0.823693 0.680852 -0.248194 0.869303 0.702691 0.942566
+0.226746 -0.649925 -0.411488 0.193243 0.85133 0.435078 0.199276 -0.310649
+-0.326584 0.252741 0.768958 0.318801 -0.300594 0.867793 -0.253636 0.702688
+0.930336 -0.221198 -0.419854 0.40996 0.221548 -0.105628 0.92983 -0.256735
+0.597607 0.00693479 -0.509817 0.437797 -0.983077 0.508448 0.809127 0.196139
+-0.407975 -0.976637 0.950385 -0.764164 0.853928 -0.417241 0.765138 -0.343425
+0.27828 0.432838 -0.276489 -0.193367 -0.376719 0.0728322 -0.243358 0.393985
+0.950319 -0.818687 0.629642 -0.359023 0.0925039 -0.382067 -0.573574 0.982943
+-0.350449 -0.399127 -0.93732 -0.444581 0.698315 0.237874 -0.475988 -0.835617
+0.536712 -0.822973 0.259625 0.297349 0.79306 0.13849 0.755881 -0.78431
+0.431106 -0.127735 -0.463165 -0.591191 -0.153523 -0.211218 0.503748 0.23995
+-0.365947 -0.33267 -0.293726 -0.212914 0.336077 0.934874 -0.627893 -0.691594
+-0.0518001 0.0367222 -0.393038 -0.321993 -0.739019 0.335645 -0.67634 0.180534
+-0.259305 0.0203263 0.877685 -0.466853 0.849428 -0.61377 0.477269 -0.15404
+-0.879647 -0.90787 -0.358828 0.862563 0.795065 -0.0406532 -0.551764 0.174125
+0.643761 0.690572 0.289164 0.38959 0.410595 -0.720023 0.57238 -0.917611
+0.674706 -0.590643 0.159813 0.4123 0.767407 -0.517906 -0.316851 -0.298961
+0.363192 0.188104 -0.210612 -0.473926 0.279279 0.938374 -0.358034 0.0612207
+0.931987 0.35805 0.846323 0.408925 -0.646355 0.500204 -0.429592 -0.519569
+0.515194 -0.386515 -0.404967 -0.226663 -0.975967 -0.630693 0.307084 0.927822
+-0.942307 -0.791655 -0.898573 0.480521 0.380706 0.303901 0.456812 0.991757
+-0.048805 0.631629 0.89261 -0.821022 -0.969259 0.640607 0.371623 -0.896981
+-0.43813 -0.713409 0.415642 -0.125709 0.50242 0.476583 -0.74203 0.786028
+-0.195922 0.196466 0.440618 -0.507517 0.199694 -0.667823 0.151653 0.620218
+-0.75496 -0.652103 -0.940331 -0.184016 0.998388 0.406921 -0.119219 0.716519
+0.318588 0.704902 0.291492 0.983082 0.50794 0.88594 -0.880253 -0.836508
+0.0566302 -0.853426 0.420597 0.399746 -0.78373 -0.412174 0.415964 0.137116
+0.241168 -0.237681 0.236262 0.958907 -0.467803 -0.287174 0.917187 0.80971
+-0.183402 -0.249486 -0.0956603 -0.329253 0.32755 -0.55554 0.0461645 0.151975
+-0.832858 0.00999473 0.799883 0.611502 -0.0333815 0.0269128 0.788707 -0.05049
+-0.466655 -0.0359917 -0.178252 -0.75571 -0.352506 -0.385766 -0.775035 -0.225194
+0.653347 -0.214511 0.392336 0.351973 0.675455 -0.432383 -0.590565 -0.00247393
+0.83193 0.427776 -0.397143 -0.524797 0.0329433 -0.712917 0.586987 -0.597506
+0.955054 -0.422828 -0.156757 -0.900635 -0.993511 -0.453753 -0.900185 0.184881
+0.32201 -0.872906 -0.18668 -0.826279 -0.203369 -0.905251 -0.993372 -0.439943
+-0.785225 -0.105336 -0.637984 0.818458 0.570591 -0.403852 -0.946671 0.224589
+0.200085 -0.849365 0.607434 0.0208227 -0.654719 0.803037 0.618628 0.807793
+-0.693831 -0.813777 0.864736 -0.716155 -0.180395 0.240294 -0.614494 -0.338928
+0.75223 -0.550192 -0.48055 0.952716 -0.348465 -0.581164 0.994858 -0.279835
+-0.558747 -0.165934 0.440945 -0.68293 -0.61582 0.593773 0.710021 -0.722819
+0.0810007 0.930372 -0.791776 -0.770294 -0.272479 -0.524799 0.697685 -0.970154
+0.948796 0.577075 -0.558255 0.575764 -0.2287 -0.195658 0.230724 -0.987664
+-0.741981 -0.083787 0.285034 0.544847 0.00336 -0.219707 0.512473 0.0111617
+0.487292 0.0635702 -0.711597 -0.0247088 -0.370464 -0.404298 -0.666299 -0.101871
+0.598502 0.510439 -0.756427 -0.512909 0.583027 0.375139 0.156568 0.131014
+-0.17058 0.990818 0.612171 0.120444 0.103895 0.541877 0.0448434 -0.16348
+-0.397441 -0.467477 0.719242 -0.465148 -0.439904 -0.964904 -0.43302 -0.816664
+0.453677 -0.824843 0.797395 0.549664 -0.948966 0.546001 -0.880261 -0.273346
+-0.953964 0.620678 -0.520965 -0.253769 -0.272652 -0.679127 -0.982491 -0.566005
+0.64798 -0.266019 -0.573181 0.977262 -0.463859 -0.330665 -0.734435 -0.92418
+0.803465 0.735973 -0.0784778 0.359947 -0.656448 -0.0861305 -0.0149736 0.938578
+-0.855584 -0.921477 -0.831869 -0.33965 0.693436 -0.963245 0.56718 -0.0405202
+-0.634494 -0.621353 -0.67548 -0.619686 -0.616101 0.806266 -0.746468 0.823212
+-0.234292 0.62324 -0.404441 -0.0396719 -0.353624 -0.0309763 -0.0210264 -0.765736
+0.794504 0.721823 0.323607 0.0348415 -0.450974 -0.311555 0.143033 -0.101537
+0.307413 -0.228631 -0.709472 -0.479056 -0.183105 0.241753 -0.258827 -0.431294
+0.729868 -0.867868 -0.819651 0.982833 -0.0388093 0.473378 0.167372 0.31321
+-0.431609 0.969556 0.544448 -0.350157 0.67349 -0.463998 0.188472 -0.487228
+-0.352616 -0.734989 -0.164356 -0.721236 -0.0695177 -0.963942 -0.216112 -0.344447
+0.737561 0.146819 0.823387 -0.894282 -0.198945 -0.193143 -0.409891 0.650166
+0.379543 0.831259 -0.0890597 -0.285106 0.19873 -0.349228 0.722469 -0.0811125
+0.162026 0.788818 0.22839 0.640705 0.341505 -0.563131 0.0293779 -0.0870272
+-0.965161 -0.309858 -0.401846 0.479686 -0.388533 0.266861 0.404528 -0.698517
+0.218193 -0.700151 -0.111992 -0.77773 -0.537417 0.0594156 -0.791989 -0.341195
+-0.0491561 0.188822 -0.807967 -0.438611 -0.408479 0.0560279 0.0305076 -0.165252
+-0.133245 -0.842566 0.375244 -0.787213 -0.862269 0.466999 -0.798118 0.195476
+0.299756 0.479351 -0.222634 0.80622 -0.379803 0.71845 -0.11904 0.41572
+0.92435 0.739867 -0.503637 0.532559 -0.541676 0.581079 0.316796 -0.521131
+0.0671036 -0.923564 0.970237 0.438984 0.964438 0.931545 -0.858427 -0.867754
+0.469373 -0.690432 0.632152 0.30219 0.516518 0.376453 0.942618 -0.510809
+-0.374131 -0.616714 -0.235787 0.381932 0.340483 -0.0552866 0.154077 -0.97495
+0.0478047 0.334196 -0.63611 0.379448 0.60729 -0.299805 0.701503 -0.37992
+0.916858 0.50276 0.614059 0.980054 0.6831 -0.0876382 -0.317726 -0.706322
+-0.164709 -0.359572 0.793866 -0.129485 0.758523 0.441986 -0.171055 0.490299
+-0.64881 -0.222841 0.538741 0.722652 0.306283 0.0446685 0.0302669 0.340515
+-0.0870664 -0.921692 -0.288006 0.401609 -0.699856 -0.464328 0.605429 0.201644
+0.443318 0.775192 0.339284 0.923055 0.272059 -0.926282 -0.84369 0.640364
+-0.435417 0.305676 0.183887 0.18005 0.93121 -0.597983 0.633152 -0.748446
+-0.444077 -0.152974 0.901408 0.00567173 0.337209 0.249761 -0.465012 -0.572423
+0.14441 -0.217803 0.886623 -0.298584 -0.992069 -0.910329 -0.865043 -0.79585
+0.0427073 0.169323 -0.610172 0.606651 -0.925988 0.248012 0.438596 0.80506
+0.580341 0.278589 -0.98893 0.999265 0.794102 0.809174 -0.0091269 0.349602
+-0.785846 -0.639567 0.411711 -0.517947 -0.331774 -0.00407746 -0.306337 0.998251
+-0.0411384 0.862358 -0.265456 0.834848 -0.168149 -0.652118 -0.286001 -0.955105
+-0.973704 0.054507 -0.421655 -0.7494 0.734801 0.733003 0.716725 -0.675356
+0.411991 -0.493809 0.140858 0.594907 -0.470983 0.563757 0.493642 -0.913018
+0.0848154 0.588962 0.52998 -0.612874 0.180051 0.98097 0.786611 -0.317053
+-0.345644 -0.437166 0.810846 0.858096 0.665159 0.478925 -0.0875771 0.0923788
+-0.241872 -0.0142244 0.147105 0.311358 -0.481969 0.53812 0.788871 -0.263556
+0.831506 0.640901 -0.932048 0.998328 -0.556773 -0.508118 0.937576 -0.67691
+-0.647504 -0.246892 -0.436839 -0.43205 0.656722 0.900011 -0.940555 -0.482263
+-0.749823 -0.919295 -0.680736 -0.293111 -0.581066 -0.28322 -0.138873 -0.544922
+-0.23649 0.571688 -0.364229 0.779989 -0.367618 -0.281898 0.597353 0.192759
+0.262706 -0.238745 -0.188718 -0.254212 0.37893 0.793777 -0.729617 -0.415413
+0.0467543 0.767762 -0.829876 0.775823 -0.313896 -0.0956588 0.97448 -0.21157
+-0.439962 0.461296 -0.221232 -0.979795 0.790144 -0.248104 0.242984 -0.88226
+0.0864715 0.982388 0.171117 -0.249684 -0.334482 -0.808296 -0.221967 0.822003
+0.632996 0.94374 -0.775281 -0.686826 -0.778744 -0.759771 0.927022 0.0224117
+0.379151 -0.615238 -0.0501672 0.641635 -0.337415 0.703021 -0.580354 0.875055
+-0.141639 -0.156486 -0.250025 -0.568296 -0.242664 -0.396983 -0.608354 0.675347
+0.62325 -0.391065 -0.762547 -0.809897 0.283655 -0.288219 0.350484 0.156588
+-0.776012 0.274076 0.294224 0.368845 0.796698 -0.454758 -0.834285 -0.955352
+-0.634363 -0.80141 -0.706988 -0.550012 0.948761 -0.412028 -0.416648 -0.928917
+-0.0891207 0.376098 -0.964987 -0.917623 0.94218 0.967984 -0.885209 0.953605
+-0.282277 -0.827035 -0.193524 0.663693 0.254509 0.634436 0.796459 0.720589
+0.88988 0.0108032 -0.228537 -0.0757205 -0.349577 -0.891614 -0.287738 0.796168
+0.196442 0.45566 -0.663953 0.332061 0.624401 -0.41001 0.877254 -0.578532
+0.907596 -0.606834 -0.720908 0.949873 0.307714 -0.720114 0.589878 0.0596667
+0.598985 -0.777062 -0.239063 0.244857 -0.866087 0.500555 -0.313432 0.999761
+-0.647462 -0.615176 0.861202 0.406797 -0.460893 -0.290523 0.659345 0.165012
+-0.96857 0.849776 -0.569581 0.694598 0.638149 -0.109018 -0.589715 0.826114
+-0.0027549 -0.930053 0.89528 0.976338 0.710978 -0.0452181 0.523359 -0.810643
+-0.670165 0.0473472 0.497387 0.694714 -0.458602 0.958052 -0.0847757 -0.857943
+-0.285355 -0.0624846 0.297264 0.0787774 0.572124 -0.0933931 -0.965279 0.910607
+-0.802499 -0.195514 0.600725 -0.736912 -0.0388842 0.217021 -0.901233 0.851295
+-0.835873 -0.0623102 -0.830387 0.960948 0.397927 -0.705977 0.313747 0.537092
+0.952972 -0.506664 0.00583154 0.860835 0.278171 0.530486 0.549018 -0.994979
+0.19622 -0.933826 -0.760742 0.248686 -0.603 -0.35062 -0.0153036 -0.577148
+-0.941617 0.517287 -0.268814 -0.210716 -0.0391231 -0.209571 0.533472 -0.80421
+-0.662987 0.839977 -0.348736 0.987334 0.136113 -0.936907 0.676846 -0.183018
+-0.244292 -0.501728 0.680024 -0.948987 -0.256957 -0.0360509 0.0846798 -0.3269
+-0.914367 -0.70277 -0.219623 -0.0701372 0.291313 0.848735 -0.766073 0.290009
+-0.239939 0.551149 0.828111 -0.921141 0.555425 0.904696 0.0177353 -0.72478
+-0.69786 -0.227274 0.389082 -0.491666 0.35536 0.290257 0.503103 0.201486
+-0.634598 0.969934 0.402552 -0.0453698 0.786254 0.9334 0.630699 0.881358
+-0.00591691 0.304347 -0.792962 0.823663 0.0365753 0.229457 -0.378103 -0.140421
+0.974196 0.451824 -0.0269083 -0.509734 0.408524 -0.893785 0.736339 0.827325
+0.12172 -0.884968 -0.613209 -0.778287 -0.985988 -0.383091 -0.91481 0.463101
+0.661399 -0.675849 0.040684 0.245202 0.472531 -0.035824 -0.93978 -0.134191
+0.587334 0.107128 -0.797056 0.945834 -0.990166 -0.117561 0.679656 0.958143
+-0.960443 -0.302675 0.29185 0.15371 0.0143037 0.372646 -0.519729 -0.974672
+-0.910563 -0.375314 -0.375177 -0.882413 0.728729 -0.10515 -0.827114 -0.950809
+0.692252 0.755329 0.606595 0.972517 0.418286 -0.11729 -0.571962 -0.813254
+0.803214 0.36952 0.289499 -0.336532 0.916552 0.221312 0.51359 -0.537217
+-0.561784 -0.529544 -0.802465 -0.0332391 0.428501 -0.219429 -0.278968 -0.284951
+-0.562281 0.274244 0.90186 -0.891902 0.900667 0.291199 0.00631785 -0.638341
+-0.49093 -0.530458 0.0828044 0.482718 -0.680165 -0.269098 -0.594883 0.849732
+0.879348 -0.298821 0.390532 0.102698 0.706264 -0.124483 -0.14492 -0.318506
+-0.358964 0.348387 -0.723543 -0.399297 -0.698828 0.455239 0.391509 0.548327
+-0.392957 0.422771 -0.627696 -0.192509 0.0241379 0.0278262 -0.312123 0.380219
+0.68006 0.626891 0.0441748 0.451729 -0.879991 0.0161236 -0.513503 0.310096
+0.365854 -0.984841 0.219854 -0.366791 0.519929 -0.580663 0.876846 0.730039
+-0.581241 -0.0153402 0.014145 0.981295 -0.498005 0.327281 -0.965842 -0.864351
+-0.105895 -0.855385 -0.138845 -0.964329 -0.842362 0.456257 -0.957012 -0.828246
+0.292177 -0.416624 0.71723 -0.623425 0.298619 0.488671 0.49368 -0.36694
+0.560037 -0.717505 0.68229 -0.162798 -0.42066 -0.0649666 0.312833 0.110852
+0.838137 0.767129 -0.256094 -0.657869 0.99366 0.875143 -0.0659944 -0.129317
+0.967663 0.195352 -0.507424 0.810117 -0.438656 0.321165 -0.387351 -0.922342
+0.426811 -0.895498 0.380813 0.454062 -0.842164 0.942753 -0.361861 -0.62961
+-0.0222192 -0.377454 0.870297 -0.863223 -0.179788 -0.820079 -0.220045 -0.520223
+-0.771642 0.499579 0.980336 -0.89382 0.138686 -0.0278531 0.48178 0.499688
+0.4789 0.198088 0.240406 -0.00892653 0.187878 -0.94387 0.420187 -0.827594
+-0.224953 0.499761 0.208712 0.426446 -0.416422 0.913984 -0.897736 0.0182281
+0.799346 0.535787 -0.815264 0.658569 0.752995 0.493531 -0.998731 0.358444
+0.205353 0.158476 -0.975775 0.405028 0.429149 0.970673 0.593034 0.162828
+-0.934039 0.702637 -0.894025 -0.625242 -0.130516 -0.17667 -0.328593 0.781197
+0.238078 -0.255501 0.97914 0.431254 0.522377 0.326107 0.648545 0.976772
+0.208661 -0.590069 -0.533551 -0.649294 0.76325 0.589831 0.234321 -0.0510115
+-0.69793 0.68513 0.930427 0.588933 0.774451 0.237988 -0.808147 0.169682
+0.0349228 0.514847 0.778509 -0.129969 0.0390609 -0.207936 -0.297653 0.472766
+0.512546 0.159146 0.727731 -0.177057 -0.809416 -0.602289 -0.787647 0.38428
+-0.186697 0.779926 0.660422 0.500904 -0.0689695 0.0559962 0.333259 -0.0574155
+-0.728707 -0.0706758 -0.888296 -0.238565 -0.250264 0.839343 0.493229 -0.576019
+-0.809987 0.220358 0.205609 0.757369 0.143384 0.615678 0.330835 0.977295
+-0.391994 -0.684258 0.205786 -0.00734942 0.726512 -0.71284 -0.0306872 0.456416
+0.499907 0.567074 -0.205645 0.251682 -0.186756 0.280597 -0.0836714 -0.108558
+-0.28285 0.0691123 0.530537 -0.185215 -0.606915 0.0682439 0.0027849 0.559894
+0.991504 -0.59958 -0.125012 0.831124 -0.662051 -0.764216 -0.731422 -0.351546
+0.0504676 0.349729 0.858409 0.0808612 -0.826867 0.43127 -0.254422 -0.630537
+0.3472 0.216606 0.227496 0.239261 0.416589 -0.974391 -0.766833 -0.789926
+-0.612068 0.932691 0.578923 -0.137452 0.000133821 -0.952855 0.0602413 -0.231185
+-0.801073 0.0313484 -0.580106 0.161526 -0.722227 -0.0439152 0.553315 0.906336
+0.0287729 -0.964495 0.955237 -0.447544 -0.0758286 0.528293 0.201741 -0.739478
+-0.781629 -0.284645 -0.483844 0.362895 -0.42788 -0.786034 0.850566 0.872203
+0.000988529 -0.872803 0.395764 -0.0222731 -0.462379 -0.363251 0.800724 -0.170503
+0.317611 0.694185 0.97882 -0.519405 -0.835364 0.771746 -0.618922 -0.0419782
+0.555083 0.230567 -0.573056 -0.401002 -0.660464 0.101558 -0.896003 0.474492
+0.541582 -0.388696 0.723882 0.278064 0.957648 -0.645315 0.0103556 -0.228311
+-0.876491 0.895205 -0.059744 0.556219 0.953718 0.982976 0.996312 0.802643
+-0.268706 -0.950022 0.648118 -0.218916 -0.536437 -0.89109 0.477512 -0.703463
+0.840411 -0.234881 -0.98169 0.665541 -0.675073 -0.79018 0.122206 0.107823
+0.940919 -0.588458 0.0397954 -0.973241 -0.768445 -0.843359 -0.114625 -0.712586
+-0.763167 0.336097 0.92266 0.358382 -0.598842 -0.775323 0.980411 -0.806153
+-0.312086 0.157702 0.789472 -0.503158 -0.257445 -0.743381 -0.828678 0.86506
+-0.0126923 -0.392215 -0.13923 0.83301 -0.524511 -0.176745 -0.114381 0.28772
+-0.0400626 0.657065 0.58184 0.600973 0.362788 -0.950236 -0.314557 0.184622
+0.0749907 0.697958 0.330292 -0.640931 0.11142 0.925076 -0.694668 -0.638676
+0.493009 0.145296 -0.520822 -0.98083 -0.914793 0.733923 -0.373969 -0.440337
+-0.970714 -0.175843 0.98078 -0.737724 -0.0116679 -0.0424787 -0.794543 0.294647
+-0.139649 -0.897596 0.0889451 0.331298 0.880008 0.851879 0.135868 -0.899387
+-0.507133 0.936525 -0.857716 -0.633908 -0.655703 -0.554029 -0.402635 -0.446275
+-0.985789 0.610474 -0.938237 -0.0277712 -0.785777 -0.500821 0.592228 0.541555
+-0.985032 0.177672 -0.384303 -0.961241 0.928837 -0.272532 0.132935 0.878376
+0.465095 0.675375 0.438776 0.538609 -0.763695 -0.14723 -0.531163 -0.592394
+-0.838288 0.000891291 -0.519412 -0.0231059 -0.733383 0.948007 -0.158819 -0.297876
+-0.925951 -0.1423 -0.51796 0.0954837 0.159675 -0.916505 -0.203607 -0.017358
+-0.92074 0.99374 -0.0859041 0.770165 0.722163 -0.653699 -0.130248 -0.207295
+-0.462486 0.0955302 -0.698791 -0.212344 0.200033 0.647105 0.821219 -0.132371
+-0.565166 0.0770586 0.961235 -0.508404 -0.442225 -0.953534 -0.293995 -0.708842
+-0.849335 0.209508 -0.448546 -0.556959 0.934118 -0.0660197 0.0713486 0.739346
+0.890078 0.402817 -0.800801 -0.191642 -0.766558 0.982021 -0.278174 -0.0073298
+-0.963572 0.284708 -0.58032 -0.706186 -0.95045 0.0150127 0.0315615 0.96933
+0.840222 -0.683602 0.910108 -0.343273 0.441095 0.63458 0.89769 0.554707
+0.491723 -0.774222 -0.692531 -0.0468481 0.706801 -0.339504 0.59126 -0.686917
+-0.445663 -0.649241 -0.863431 -0.710597 -0.921198 -0.901963 -0.129142 0.760962
+0.0320171 -0.285886 0.338763 -0.768237 0.252418 -0.205757 -0.574938 -0.879478
+0.301201 -0.413578 -0.519134 0.047605 0.462966 -0.441339 -0.94419 -0.427017
+-0.358283 -0.96023 -0.598302 -0.0410851 0.557403 -0.534843 0.747025 -0.134568
+0.880795 0.610099 -0.582609 -0.456949 0.95577 0.576349 0.684508 0.665622
+-0.237965 0.384696 -0.179683 0.324595 -0.992583 0.0704854 0.401968 0.796009
+-0.00203615 0.69546 0.328352 -0.509609 -0.447603 -0.265674 -0.475372 -0.0344349
+-0.589852 0.338638 -0.361372 -0.868961 -0.736954 0.113487 0.704388 0.555416
+-0.130052 -0.0963523 0.362398 0.762927 0.0542655 -0.558715 0.613645 0.611645
+-0.0890763 0.073031 -0.520539 0.53027 -0.0493678 0.27893 -0.324707 0.48077
+0.485537 -0.209992 -0.278468 0.0241694 0.504499 0.0158526 0.212986 0.896538
+-0.918242 -0.347432 0.0817963 -0.190843 0.898233 -0.91068 -0.212327 0.761878
+0.0486397 -0.154782 0.17479 -0.282162 0.319754 -0.349857 -0.819006 0.953552
+-0.600682 0.33818 -0.569613 -0.966094 0.389177 0.00301871 -0.460958 -0.802867
+0.897449 0.218671 0.834667 0.383977 0.24897 -0.471332 0.311505 0.275869
+-0.955746 0.310375 -0.782398 -0.559921 0.0162922 -0.368741 0.689078 0.788591
+0.312957 0.474791 0.789484 0.12461 0.0376771 0.358785 0.264312 -0.090945
+-0.187699 0.693019 0.0338453 0.981572 -0.667717 -0.222581 0.969189 -0.492898
+-0.162957 0.414095 -0.525001 -0.542582 0.761473 0.867993 -0.479436 0.969725
+0.122143 -0.367049 -0.211531 -0.813606 -0.735177 -0.588383 -0.363287 -0.682746
+-0.0615493 -0.111727 0.0677509 -0.994696 -0.482459 0.71518 0.714496 0.816877
+0.477809 -0.845984 -0.104193 0.841676 0.98396 -0.14268 -0.174282 0.178472
+0.227179 -0.00360693 0.695781 -0.551831 0.36939 0.227701 0.849255 -0.591003
+0.327169 0.788534 -0.511301 -0.22985 -0.817921 0.331116 -0.214407 -0.910214
+-0.708966 0.208188 -0.508084 -0.540582 -0.193875 0.608349 0.967027 -0.279604
+0.364089 0.768508 -0.430323 0.781235 0.229113 -0.531661 0.315563 -0.797436
+-0.771633 -0.964051 0.887155 0.0490612 -0.49456 0.60161 -0.577165 -0.42747
+0.631762 -0.10653 -0.87284 -0.791872 -0.397926 -0.815688 -0.443718 0.676639
+0.237383 0.627652 0.581267 -0.0624467 0.481185 -0.734953 0.105723 -0.930586
+0.281403 0.460436 -0.00877237 -0.219244 0.891316 -0.769947 -0.576876 -0.577317
+-0.264914 0.949003 0.242688 0.122196 -0.537458 0.642368 -0.401507 -0.305504
+-0.644836 -0.679715 0.308287 -0.116654 -0.350678 0.827556 0.269841 0.875639
+-0.0122482 0.788323 -0.0636885 -0.920086 -0.558517 -0.581069 -6.7954e-05 0.377795
+-0.83225 0.981355 -0.231438 -0.0760357 -0.381715 -0.107074 -0.117899 0.190844
+0.947034 -0.0348618 0.250442 0.191565 -0.775705 0.154775 -0.0833674 0.672069
+-0.651433 -0.85605 -0.218248 0.339136 0.812395 0.793409 0.203541 0.140841
+-0.15254 0.249303 -0.773216 0.477813 -0.726266 -0.186391 -0.042282 0.863566
+-0.22177 0.165006 0.119711 -0.99751 0.462757 -0.0655601 -0.141857 0.907958
+0.457659 0.189563 0.373878 -0.584828 -0.839178 -0.413517 -0.902242 -0.962533
+0.636505 0.614248 -0.307533 -0.0669895 0.68695 0.974162 -0.414596 0.909689
+-0.771077 -0.738859 -0.750467 0.519689 -0.998582 -0.0267039 0.972495 0.0175519
+0.765825 -0.287436 0.222765 0.961867 -0.305154 0.788899 -0.295583 0.709795
+-0.246841 0.961723 -0.777986 0.893427 -0.423192 -0.109563 -0.925778 -0.753771
+0.104348 0.302678 -0.912214 0.00249155 -0.312287 0.396746 0.168541 0.115341
+0.014949 -0.252524 -0.657262 -0.20561 0.199603 0.228653 0.720772 -0.918958
+-0.774701 0.975592 -0.946264 -0.849281 -0.455914 0.192243 0.424375 0.56935
+0.66413 0.862284 0.34288 0.819815 0.280028 -0.0379026 0.776205 -0.0816372
+-0.693112 0.654071 -0.385478 -0.673351 0.674679 -0.128085 -0.327999 0.123251
+-0.863902 -0.605326 -0.768949 -0.732213 -0.859094 -0.910892 -0.753148 0.852136
+0.139327 0.647198 -0.695638 -0.650699 0.488065 0.710881 -0.052738 0.979065
+0.96188 -0.882517 -0.487372 -0.895156 -0.731849 -0.752382 -0.0555075 -0.841653
+0.289452 0.190389 -0.439215 0.963425 -0.180696 -0.41886 0.626262 -0.832502
+0.0952616 0.145581 -0.944876 -0.890151 -0.990307 -0.899171 -0.906756 0.715892
+-0.758892 -0.167672 -0.989394 0.903334 -0.220127 -0.353353 0.656034 0.0925861
+0.257189 -0.913204 0.124925 -0.641496 -0.503652 -0.30457 0.0317497 -0.808368
+0.811121 0.674702 -0.0342996 -0.664897 -0.0646336 -0.654337 0.825959 -0.422053
+0.850755 0.0808313 -0.0784897 -0.66403 -0.293737 -0.549064 0.453074 0.550516
+-0.506625 0.500224 0.502962 0.271969 0.539411 0.329842 -0.549577 0.0854797
+-0.351406 0.052171 0.941238 0.03936 -0.123868 0.150834 0.81009 0.975996
+0.599451 0.36938 0.6028 0.653908 -0.721486 -0.396746 -0.646534 0.923577
+-0.232604 -0.897794 -0.0260559 0.91711 -0.838969 -0.0474446 -0.251691 -0.0617259
+0.060493 -0.464392 0.661492 -0.285598 -0.635514 -0.369137 0.352977 -0.890196
+-0.955907 -0.116436 0.812475 -0.899991 -0.408582 0.916462 -0.60746 0.00521365
+-0.982504 -0.106176 -0.0219168 -0.509379 -0.419312 -0.878456 -0.503178 -0.484892
+-0.978184 0.338475 0.462099 -0.621855 0.479982 0.361033 -0.151682 0.197591
+-0.144616 0.646619 -0.0578232 -0.742414 0.541164 -0.67586 0.381051 0.51102
+0.351967 -0.890665 0.120717 -0.0687964 0.986809 -0.934492 0.887835 -0.113176
+-0.70413 -0.629716 -0.939221 0.0804935 0.644462 -0.4129 0.67533 0.209738
+0.521936 -0.787522 0.892707 0.670515 0.461472 -0.904075 -0.107031 -0.940442
+-0.98956 -0.603699 -0.31856 0.276867 -0.317106 0.348596 0.773518 -0.154266
+-0.8903 -0.884725 -0.868828 0.188125 -0.300871 0.530784 0.131985 0.105447
+-0.144031 0.304302 -0.985802 -0.384027 0.37946 -0.332699 0.517149 -0.455308
+-0.119757 0.677374 0.925894 -0.929066 0.786887 0.960437 0.788471 0.715683
+0.958458 0.568038 0.222981 -0.817089 0.939071 0.249736 0.320322 -0.487564
+0.703385 -0.393002 -0.688667 -0.903855 -0.971126 0.712135 -0.668344 -0.580313
+0.0283297 0.392803 0.873114 -0.787694 0.557397 0.0225545 -0.0324734 -0.131235
+0.712484 0.1031 -0.0644722 0.895062 -0.617746 0.389033 0.587848 0.61443
+0.957954 0.323512 -0.915179 0.958706 0.502953 0.183585 0.794429 0.447973
+0.0684171 -0.859266 0.199364 -0.00677877 0.775452 0.959018 0.815097 0.76503
+0.032451 -0.0488488 0.305582 0.864427 0.495644 -0.345989 -0.563957 0.604405
+-0.465654 -0.40132 0.284185 -0.36625 -0.455115 -0.558626 0.399088 -0.804661
+0.148858 -0.55583 0.745466 0.348599 -0.984103 -0.306385 -0.147229 0.0302473
+-0.199802 0.493632 -0.478577 0.443527 0.759946 0.600887 0.00843066 0.0412703
+-0.799267 0.333701 -0.38604 0.635409 0.281086 0.211121 0.718651 -0.512993
+0.950882 -0.173535 0.495208 -0.507966 0.885123 -0.79731 -0.334338 -0.844913
+0.676898 0.686809 0.673109 0.608432 -0.262318 0.897646 0.547983 0.742935
+-0.839834 0.51153 0.304554 -0.534904 -0.665482 -0.105767 0.447829 -0.395065
+0.24932 -0.959949 -0.845937 0.790385 -0.36664 -0.0685263 -0.763679 -0.341931
+0.770678 0.104919 0.67285 -0.475033 -0.281144 -0.535127 -0.104696 -0.167921
+0.406637 -0.400048 -0.529971 0.945332 -0.716183 0.554581 -0.858926 0.530261
+-0.130121 0.45542 -0.799044 -0.514247 -0.885435 0.0658838 -0.112793 0.922899
+-0.632733 -0.839631 0.657114 -0.0595196 0.85263 -0.483647 -0.588631 0.434639
+-0.763286 0.829716 -0.774419 -0.135791 -0.226617 -0.971946 0.450276 -0.748912
+-0.829521 -0.219481 0.00672118 -0.794178 -0.568094 0.184311 0.603022 -0.0555631
+-0.818178 -0.904793 0.518201 -0.14007 -0.86115 0.624831 -0.536512 0.268663
+0.747958 -0.978679 0.647341 0.187085 0.788826 0.944593 0.60351 0.378025
+0.896682 0.152103 -0.640573 -0.916862 0.809931 -0.718852 0.746217 -0.288638
+0.132065 0.853987 -0.946194 0.178117 -0.234832 -0.787313 0.724442 -0.804484
+0.841424 -0.935334 -0.219099 0.853492 -0.425391 -0.666394 0.804367 0.450022
+-0.0559757 0.89209 -0.666535 -0.27427 -0.950254 0.386653 0.669156 -0.469244
+-0.639528 0.746106 0.900671 0.298351 -0.558404 0.187357 -0.474758 0.856625
+0.943668 0.272076 -0.47407 0.246344 0.502997 -0.183403 0.849963 0.0174011
+0.677586 -0.502934 0.454683 0.605003 -0.92176 -0.616544 0.487946 0.397674
+-0.551589 0.609696 -0.489814 0.925535 -0.413836 -0.967745 -0.76 0.00678453
+-0.836005 -0.798824 0.893406 -0.748916 -0.439515 -0.106358 -0.455938 0.830748
+0.0613894 -0.367138 -0.901316 0.340187 -0.329082 0.448266 -0.0103162 -0.510146
+-0.925967 -0.348735 -0.617499 -0.466985 0.0377553 0.305652 -0.373743 -0.563813
+-0.215901 0.971575 -0.387115 -0.552134 -0.335928 0.891275 0.107977 -0.353687
+0.346958 0.0134376 0.972283 -0.0779874 0.960555 0.44081 0.313072 -0.20081
+0.50655 0.966124 0.531481 0.536602 -0.0962096 -0.645679 -0.748907 -0.114082
+-0.730333 -0.309869 -0.558686 -0.33768 0.27867 0.701115 0.105935 -0.930818
+0.470554 0.381202 0.607257 -0.267815 0.566203 0.409737 0.553764 0.258616
+-0.367004 0.738815 -0.0804347 -0.0459079 0.721225 -0.582668 0.622424 -0.292641
+0.545229 0.166704 -0.202632 -0.481201 -0.878181 0.0831667 0.758087 0.259266
+0.754528 0.474816 0.00861407 0.406863 -0.604234 -0.435677 -0.54182 0.709244
+-0.913399 -0.364028 0.572926 0.307614 -0.425578 -0.963852 -0.643343 0.261065
+-0.603916 0.909204 0.196812 -0.351592 -0.445108 0.398432 0.616995 0.623206
+0.850149 -0.0909519 -0.29138 -0.602343 -0.669736 -0.629829 0.172692 -0.473004
+0.248849 0.0156421 0.17716 0.0974834 0.152069 0.802682 0.543331 -0.506565
+0.729818 0.122228 -0.0971823 -0.244587 0.415095 0.977121 0.210393 0.0410674
+0.879973 0.135216 -0.704358 -0.917243 -0.840452 0.276222 0.93666 -0.692741
+-0.933786 0.664264 0.173459 0.375414 -0.8766 0.788061 -0.399528 -0.0286686
+-0.642726 -0.618546 -0.537998 0.641385 -0.292247 -0.0933617 0.873355 -0.487486
+0.183198 0.671922 0.838543 0.191269 -0.377824 0.967969 0.0460472 -0.386277
+-0.0989322 -0.614006 -0.42701 -0.636265 0.0925185 -0.539117 0.354915 -0.504088
+0.167572 0.457611 0.54502 0.0310795 0.519358 0.275429 0.916363 0.881313
+-0.0726403 0.414511 -0.716541 -0.391977 0.690113 0.716706 0.281276 -0.842286
+0.287011 -0.432998 0.781827 -0.166975 -0.194825 0.455087 -0.760107 -0.836116
+-0.170192 0.876408 -0.834564 -0.960086 -0.952722 0.52316 0.0729177 0.501935
+-0.662812 0.875393 0.843351 -0.187418 0.773837 0.735443 -0.717014 0.553597
+-0.157824 -0.159628 -0.419416 0.15577 -0.812527 0.360696 -0.217718 0.0164864
+-0.740506 -0.103478 0.0169908 0.419559 0.821638 0.62033 0.65779 -0.343858
+0.452492 0.2548 -0.795943 -0.694096 -0.52172 -0.544809 0.531331 -0.960923
+-0.657693 -0.882995 0.0375964 0.22507 -0.920386 0.330874 -0.615008 0.585572
+0.205102 0.581671 0.789423 -0.845662 -0.209172 0.564361 0.667472 0.578153
+0.0689673 -0.0126824 0.241653 -0.327017 -0.512004 -0.449905 0.164354 -0.211784
+-0.297128 0.886296 0.348349 0.633904 0.388161 -0.335727 -0.842603 -0.572757
+0.283042 0.113655 -0.763819 0.566521 -0.804337 0.790946 -0.422361 0.066902
+0.54913 0.123015 0.829041 -0.391733 0.39943 -0.636955 -0.695998 0.0905171
+0.175117 0.606036 -0.673416 0.249112 -0.496315 -0.167191 -0.091044 0.513134
+0.877112 0.396982 0.685741 -0.792368 -0.235322 0.618024 -0.137511 0.12308
+0.490078 0.0671532 0.162762 -0.420424 -0.0875615 -0.199071 -0.783905 -0.241668
+0.64501 0.304917 0.418164 -0.212675 0.521454 0.708504 -0.0821817 0.0594873
+-0.820473 0.0948298 -0.886739 -0.550107 -0.652213 -0.819744 -0.0997843 0.353467
+0.306612 -0.39133 -0.348201 0.448639 -0.789163 0.0186648 0.295967 0.914176
+-0.533277 -0.0339372 0.104407 0.324413 0.212383 -0.878661 0.209887 0.306651
+-0.881642 0.25031 -0.415166 0.855903 0.214193 0.025399 -0.22203 0.571824
+0.71636 0.396948 -0.892458 0.858979 0.904456 -0.624258 -0.997935 -0.209621
+-0.302727 0.358524 -0.281995 -0.245178 0.00841442 -0.11592 -0.774032 0.561263
+0.948927 0.16215 -0.390985 -0.424176 0.379584 0.206267 -0.286016 0.558752
+-0.47546 0.6948 -0.971628 -0.3329 0.464283 0.822603 0.590005 -0.128156
+-0.265066 -0.712716 0.355359 -0.210927 0.86857 -0.405269 0.0154551 -0.0524003
+-0.0342695 0.785197 -0.12004 -0.619969 0.0305008 -0.323594 -0.0334806 0.0765711
+0.234872 -0.665406 -0.677282 0.392269 0.739396 -0.241054 0.167588 0.774975
+-0.764842 -0.122105 0.85323 -0.707777 -0.631841 0.436807 -0.160758 -0.0016953
+0.567043 0.614199 -0.0145614 0.142769 -0.377262 -0.237247 0.461966 0.690182
+0.0134212 -0.0299085 0.0534913 -0.374947 -0.627306 -0.356386 0.476337 -0.891982
+0.468098 -0.574631 -0.456699 -0.918161 0.208839 0.566924 -0.115736 0.869802
+0.0793177 0.490222 -0.185521 0.189923 -0.0943652 0.562403 -0.410622 -0.712502
+-0.951183 -0.12032 0.776452 0.529138 -0.84233 0.972017 -0.605747 -0.0206698
+-0.256617 0.729897 -0.727987 -0.526322 -0.0425027 0.168154 0.0810821 -0.540821
+-0.548331 0.853898 -0.504343 -0.0463173 -0.0713747 -0.314358 0.606325 -0.419281
+0.892865 -0.604713 0.574714 0.125193 0.486 -0.727891 0.576456 0.967208
+0.568343 -0.982626 0.312736 -0.681818 0.317003 -0.121853 -0.0536441 0.860819
+0.826723 0.318229 -0.736094 0.0134885 0.965055 -0.247302 -0.688274 0.482682
+-0.0292887 -0.358691 0.261033 -0.0598555 -0.876009 -0.557208 0.744197 0.276602
+-0.604998 0.332384 -0.983015 -0.304436 0.923102 0.749504 -0.757294 -0.377615
+-0.0648532 0.922708 -0.930013 -0.752686 -0.744714 0.0273013 0.0490791 0.857023
+-0.424368 0.826781 -0.879546 0.311477 0.700447 0.160418 -0.998176 -0.242925
+-0.209553 -0.192164 -0.442874 -0.816464 -0.989184 0.332274 -0.790085 0.54333
+-0.874551 0.0181679 -0.516911 -0.994742 -0.102463 0.348485 -0.0252379 -0.938111
+-0.640902 0.18803 0.64721 0.0115315 0.787931 -0.321811 0.39656 -0.803182
+0.0414234 -0.690448 -0.0515842 0.470013 0.446467 -0.109847 -0.43762 -0.888103
+-0.244172 -0.810811 -0.463355 0.508295 -0.954523 0.752755 0.819407 0.336853
+-0.645397 -0.708511 -0.269597 0.0576244 -0.907121 -0.908286 0.840547 0.271441
+0.213379 0.204338 -0.224331 -0.470491 -0.747464 0.586295 -0.193571 0.727277
+0.667593 0.846802 -0.92505 -0.967607 -0.21128 -0.20069 0.8426 -0.912126
+-0.094351 0.754726 0.692247 -0.8727 -0.435482 0.729205 0.329841 -0.239777
+0.482003 0.540016 0.400182 0.584533 0.594352 -0.224742 -0.99018 -0.365495
+-0.123584 -0.547139 0.170261 0.704244 0.704143 -0.46706 0.128778 0.543696
+-0.209179 -0.400937 -0.458475 -0.338609 -0.924137 -0.130142 -0.384185 -0.267361
+0.394728 -0.300397 0.502588 -5.66998e-05 -0.754345 0.733919 -0.225551 -0.225447
+0.798904 0.313307 0.885807 -0.804789 0.841102 -0.17677 0.665423 0.934713
+0.133434 0.862782 0.706749 0.743111 0.803831 -0.405349 -0.680002 -0.65964
+0.709679 -0.578185 0.742372 0.913493 0.750212 -0.81846 0.817477 0.779722
+-0.646891 0.480178 -0.833644 -0.297043 -0.855037 -0.323747 0.196813 0.841262
+0.27306 -0.867964 -0.36413 -0.527862 0.899337 -0.651062 -0.0152727 0.510921
+-0.62046 -0.860057 -0.603597 -0.497356 -0.85335 -0.667626 0.981406 0.663257
+-0.236741 0.87578 -0.635824 -0.0714842 -0.577548 0.248457 -0.314388 -0.774441
+0.0308561 0.877784 0.882683 0.599996 0.69647 0.0172356 0.016956 0.925496
+0.888874 0.411776 0.660213 -0.981331 -0.861061 -0.283163 -0.36206 0.218147
+0.171534 0.600916 0.34933 0.158056 -0.214328 0.354213 0.797588 0.630514
+0.766312 0.484621 -0.592262 -0.498101 0.976096 0.702271 -0.765422 0.709424
+0.0999393 -0.768355 -0.480068 0.266339 0.133088 -0.829619 -0.164323 0.110434
+-0.300064 -0.235681 0.341673 -0.241589 -0.342955 0.0950661 -0.820896 0.304435
+-0.501493 0.746096 0.728828 0.483865 -0.471456 0.0280791 -0.723644 0.860073
+0.142364 -0.795489 -0.708879 -0.317509 -0.201062 0.923447 0.367666 0.0252843
+-0.476622 -0.347662 -0.855173 0.00143293 0.141859 -0.303242 0.358551 -0.0809706
+0.932145 -0.18086 -0.978378 0.979316 -0.338207 -0.365419 0.328332 0.396093
+0.964991 -0.140835 0.301633 -0.0695005 0.0705005 -0.957443 -0.804295 0.601779
+0.830231 -0.879194 -0.156087 -0.697821 -0.700792 0.601835 0.727405 -0.282395
+-0.931165 0.331703 0.789664 0.693819 0.678749 0.449265 -0.955396 0.298338
+0.176182 0.87002 -0.446887 0.657141 0.773813 -0.883434 0.938524 -0.479869
+-0.249151 -0.725152 0.266159 -0.0654869 0.0862028 0.763146 0.900775 -0.581974
+0.845321 -0.0729742 -0.831248 -0.903661 0.324603 0.339655 0.815701 -0.0998833
+-0.559835 -0.851241 -0.663833 -0.906784 -0.433688 0.176868 -0.390089 -0.478584
+0.144606 0.369814 0.0372999 0.412716 0.494503 -0.82662 -0.572932 -0.174767
+0.0859566 0.925116 -0.285663 0.508513 -0.411593 -0.715404 -0.373222 -0.460061
+0.551503 0.667559 -0.436541 0.0951149 -0.752639 0.931708 0.546945 0.359672
+-0.212842 -0.298282 0.0607391 0.030647 0.401654 -0.96886 -0.5564 -0.229788
+-0.924008 -0.811365 0.639315 0.26512 -0.769191 -0.902165 -0.251788 0.848436
+0.808648 0.805774 -0.472114 0.705025 0.55845 0.17971 0.289988 -0.307662
+-0.361655 -0.759789 0.989953 -0.0391764 -0.051465 0.900116 -0.393512 0.440551
+0.0763763 0.489862 -0.666779 0.562786 0.291706 0.170673 0.787105 -0.289259
+-0.257504 -0.43626 0.792029 0.274716 -0.617916 -0.654418 -0.958838 0.0568095
+0.616259 -0.914804 -0.0190587 -0.704978 -0.242336 -0.973583 0.496185 -0.615579
+0.920462 0.866854 -0.829198 -0.136917 -0.492731 -0.922408 -0.951137 0.727202
+0.00348854 -0.391947 -0.231838 0.493274 -0.996519 -0.260075 0.771868 0.870124
+0.830233 -0.925175 0.996539 0.826752 -0.418671 0.417069 -0.828469 0.228377
+0.821491 -0.49821 -0.163306 -0.818344 -0.0498616 -0.170444 0.0328762 -0.731516
+0.667227 -0.332722 0.953548 -0.405401 0.620377 -0.939604 -0.755965 -0.0372982
+-0.092582 0.692445 0.944956 -0.20967 -0.941755 0.0343647 0.968934 -0.566135
+-0.141614 0.356234 -0.131954 -0.51963 -0.0972306 -0.995663 0.184744 0.135003
+0.46079 -0.0962763 0.666713 -0.13341 0.380956 -0.00794642 -0.61904 0.328261
+0.430556 -0.112199 -0.77223 -0.711065 0.352103 -0.057003 -0.120917 -0.418046
+0.703284 -0.343972 -0.934621 0.18446 0.194894 0.0768015 0.748957 0.893926
+-0.6781 0.591317 -0.876744 0.341167 0.840744 0.479815 -0.998961 -0.668906
+-0.564083 -0.120834 0.356981 0.989786 0.227531 0.680774 0.978001 0.715466
+-0.414349 0.160306 -0.100453 -0.19362 0.706187 -0.221035 -0.632907 -0.632393
+0.747987 0.955967 0.396999 -0.967516 0.563976 0.781441 0.872177 0.211161
+-0.48628 0.343442 0.924508 -0.473322 -0.105208 0.954776 0.412598 -0.276284
+0.641808 0.664805 0.422078 0.804798 0.624479 0.193849 0.463262 0.674536
+0.940558 0.876727 0.357005 0.757128 0.312283 -0.967821 0.528998 0.677824
+-0.583199 0.316136 0.0934153 0.175373 0.363483 0.264127 -0.98363 -0.228808
+0.311756 -0.54244 -0.593852 -0.66438 0.342554 0.00448297 0.391012 0.501337
+0.82219 0.114693 0.857205 -0.113997 -0.80673 0.12687 -0.0537883 -0.877063
+-0.128875 -0.624697 -0.98395 -0.926508 0.664611 0.729306 -0.827396 -0.359327
+-0.24602 0.52598 -0.0437766 0.574809 -0.993097 0.727501 -0.316276 -0.348622
+-0.285874 0.490093 0.125751 -0.393087 -0.714803 0.434096 -0.411678 -0.253062
+0.141284 -0.218594 -0.290909 -0.0756113 0.319561 0.33128 -0.869283 0.475909
+-0.933981 0.481987 -0.118591 -0.611428 0.796587 0.654279 -0.450943 0.225717
+0.584282 0.0561487 -0.551652 -0.706212 0.782172 0.457304 0.826883 -0.294561
+-0.00654909 -0.0238666 -0.606697 0.171336 0.522634 0.414978 0.67485 0.159151
+-0.66459 0.154426 0.60672 0.336923 0.785555 -0.737444 0.917125 0.0064614
+-0.577299 -0.834931 -0.358861 -0.765279 0.834001 0.471985 -0.160271 0.0363573
+-0.290718 0.186945 -0.0422565 0.671869 -0.0464416 -0.527829 0.179027 -0.094191
+0.823146 -0.0989166 -0.185364 -0.412318 0.105894 -0.31185 0.76524 -0.468312
+-0.537756 0.944155 -0.113883 -0.636604 -0.575465 -0.00326705 0.314706 -0.507163
+0.51412 0.521641 0.938342 -0.499935 -0.205773 -0.495695 -0.160574 0.184923
+-0.742075 -0.842996 -0.808609 -0.690305 -0.676926 -0.343345 0.445905 0.486126
+-0.0634245 -0.207896 -0.16498 -0.925668 0.582142 -0.666177 -0.841095 -0.453497
+-0.154675 0.622874 0.669864 0.00453511 -0.958206 -0.702163 0.237264 -0.511588
+0.653803 -0.441264 -0.0604796 -0.602637 0.167087 0.128361 0.389147 0.271361
+0.574152 -0.275057 -0.883065 0.195813 0.643444 -0.930003 -0.904643 -0.609023
+-0.868801 0.112228 0.697994 0.645571 -0.63435 0.783179 0.732564 -0.934264
+0.814669 -0.194712 0.150047 0.947009 -0.826012 0.896548 0.781659 -0.189373
+-0.504756 0.358911 0.0557541 -0.482806 0.8569 -0.21997 0.885924 -0.908434
+0.6879 0.0709806 0.387706 -0.321125 0.19731 0.115749 0.354793 0.495713
+0.295946 0.44123 -0.339491 0.825531 0.271526 0.686722 0.45988 0.471292
+-0.70877 0.656621 -0.799589 -0.285575 -0.191575 -0.647724 -0.611062 -0.236987
+-0.933419 0.967166 0.688633 -0.0451107 -0.608065 0.0354303 0.234907 -0.335263
+0.0183814 0.15336 -0.797535 0.303284 0.0978846 0.310774 -0.184561 -0.207435
+-0.378662 0.802281 0.523453 -0.45621 -0.224442 -0.0527786 0.28046 -0.85757
+-0.563993 0.720886 0.745362 0.936508 0.105535 -0.40803 -0.673072 -0.509342
+-0.558965 -0.534701 -0.949386 -0.497307 -0.845344 0.952257 0.774218 -0.784747
+-0.226164 -0.353859 -0.0276497 -0.138868 0.893743 0.263379 -0.742459 -0.73528
+0.920107 0.257864 0.398545 0.143756 0.760314 0.455289 -0.501466 -0.596911
+0.408561 -0.727019 0.912709 0.533152 0.329288 -0.348257 0.965502 0.34198
+-0.411456 0.652547 -0.299001 -0.896395 -0.656623 0.0781634 0.380077 0.914864
+-0.326664 -0.131558 -0.491358 0.832212 -0.468633 0.576658 0.901296 -0.366231
+-0.270571 0.3933 -0.0355827 0.864757 -0.149494 0.185708 -0.608046 0.415472
+0.299774 0.282516 -0.483964 -0.841935 -0.483778 0.425422 0.446914 0.480453
+0.529066 -0.362368 0.247862 0.889101 0.248018 -0.426146 -0.93691 0.0142508
+0.394014 -0.992437 -0.0965593 0.425013 -0.584837 -0.34293 -0.121579 -0.240481
+-0.381852 0.980143 0.557916 -0.207325 -0.265601 -0.0745425 0.916415 0.0431458
+0.787258 0.27153 0.185874 -0.183988 -0.32713 0.817681 0.0656985 0.606756
+0.0447763 -0.0805468 0.94682 -0.166576 0.578229 0.739584 0.698273 -0.14163
+0.488017 0.857431 0.875631 0.564616 -0.344284 -0.933559 -0.704433 0.450133
+0.707089 -0.458679 -0.01303 -0.274325 -0.427044 -0.392301 -0.925996 -0.948434
+-0.783134 0.910236 -0.650189 -0.95997 -0.24753 -0.219915 -0.406262 0.607386
+0.812164 0.691252 0.808511 -0.230207 -0.00842888 -0.764701 -0.479814 -0.157139
+-0.416275 0.394686 0.367218 -0.966156 0.582522 -0.614079 0.954274 0.473963
+-0.549753 -0.00547251 -0.36182 -0.712263 0.530485 0.621769 -0.539101 -0.271036
+-0.618533 -0.218757 0.155714 0.422001 -0.21221 0.562021 0.739202 0.769531
+-0.0498263 -0.0162003 0.267082 0.775233 0.91126 0.749903 0.735397 0.724286
+0.81932 -0.843928 0.529529 0.259539 -0.184566 -0.245879 0.905974 -0.856265
+-0.903726 -0.248198 -0.770753 0.474829 -0.952649 0.0330828 -0.556191 0.956247
+-0.624436 0.47964 0.131432 -0.168345 -0.477246 -0.0911477 0.778222 0.135703
+0.735938 0.658457 0.206606 0.421425 0.385614 -0.812726 -0.306028 -0.419352
+0.0394456 0.847125 0.668017 0.110562 0.337858 0.183032 -0.551017 0.783097
+-0.704871 -0.480713 0.646156 0.16095 -0.765813 0.735973 0.625862 0.729738
+0.18318 0.0945581 0.55991 0.628873 -0.960968 -0.329497 -0.809604 -0.0621605
+0.7643 0.65972 -0.103192 0.023295 0.957597 0.835945 -0.19354 -0.298343
+0.601999 -0.650217 0.787204 -0.0923997 -0.043043 -0.502477 0.819477 0.91156
+-0.80225 0.629247 0.485568 0.884574 0.661799 -0.0913704 -0.717703 0.0780696
+0.852178 -0.55987 -0.782186 0.392126 -0.165152 -0.364592 -0.571183 0.854628
+-0.993015 -0.884956 -0.876392 0.303986 -0.653503 -0.934443 0.30092 -0.239616
+-0.373432 -0.994714 -0.0860847 -0.127951 -0.226855 0.898356 -0.118759 -0.15347
+0.753139 0.587493 -0.76116 0.800912 -0.0664921 0.717756 0.546394 -0.818198
+-0.848135 0.920414 0.089797 -0.10953 0.487352 -0.0413274 0.160116 -0.922569
+0.620857 0.913376 -0.5371 -0.888848 -0.547893 0.965342 -0.0102596 0.642646
+0.228929 -0.383441 0.616893 -0.215024 -0.110073 0.0767176 0.664356 0.051058
+-0.141747 -0.351581 0.631057 -0.134139 -0.873394 -0.342096 -0.370005 0.686414
+-0.476121 0.953787 0.846469 -0.970234 -0.908107 0.871893 0.278422 0.96444
+0.154088 -0.856321 0.299098 0.465107 -0.982717 0.729739 -0.330896 -0.523069
+-0.647891 0.518537 0.265766 -0.8496 -0.365555 0.250577 -0.860084 0.965434
+0.180901 0.839412 0.0102612 0.519798 0.433035 0.525283 -0.227114 -0.787815
+-0.623962 0.745481 0.822129 0.189897 0.473787 -0.145218 0.685099 0.933544
+-0.990604 0.119522 0.22156 -0.116173 0.727771 0.229791 -0.636448 -0.977407
+0.347856 -0.82244 0.565478 0.633358 0.69042 -0.572761 0.816634 0.921053
+0.50877 0.935481 -0.297248 -0.295278 0.475637 0.833435 0.390233 -0.901122
+-0.604076 0.291104 -0.723547 0.783539 -0.735368 0.977447 -0.000195883 -0.315096
+-0.0472228 0.48099 -0.989383 -0.83706 0.278294 0.0993613 0.134936 0.675335
+0.228965 -0.915804 -0.138968 -0.802494 -0.563767 0.179447 0.246339 -0.156208
+-0.557728 -0.00987051 0.240962 0.789866 0.732192 0.71669 0.367024 -0.738044
+-0.258237 -0.348335 0.323778 0.0357073 -0.0524682 0.558493 -0.33209 0.720644
+-0.526678 0.688981 0.205941 0.279382 -0.455743 0.175003 0.106483 0.472977
+0.604514 0.24659 0.850118 0.916246 0.55859 -0.68052 -0.794915 0.0871143
+0.440163 0.240024 -0.584987 -0.106263 0.255702 0.451313 0.705061 -0.13135
+0.282462 0.612703 0.712391 0.247212 0.924635 -0.924864 -0.0714029 -0.424631
+0.121823 -0.862768 -0.774174 -0.426802 -0.55929 0.0617382 0.204368 0.286078
+0.509855 -0.190018 0.16875 -0.285439 -0.949994 -0.643695 0.285811 -0.855972
+-0.381486 -0.207199 0.0960123 -0.181356 0.992789 0.756944 0.69183 0.118718
+-0.783188 -0.946586 0.0521069 -0.127942 -0.0577861 0.332436 0.0785184 -0.536647
+0.923994 -0.483284 0.333174 0.0843593 0.4227 -0.675179 0.0593178 0.751924
+0.44757 0.469096 -0.817663 -0.614827 -0.149585 0.596369 -0.189046 -0.0777454
+0.273003 0.68871 -0.148789 -0.328606 -0.335955 -0.67944 0.412775 0.769597
+-0.731963 0.346327 0.517231 0.287071 0.152039 0.428483 -0.651829 0.744116
+0.635242 -0.609571 -0.542329 -0.851562 -0.961134 0.389616 -0.376796 -0.126802
+-0.0180099 -0.331095 0.251956 -0.914776 -0.903607 -0.461179 -0.675812 -0.544263
+0.562364 0.401615 -0.25766 -0.00929416 0.265503 -0.836285 0.946206 -0.0850661
+0.669014 0.744431 -0.473584 0.476114 0.125088 0.6667 0.592061 0.475967
+-0.584397 0.535709 0.853683 0.269452 0.25484 0.0672744 0.179976 -0.013398
+0.867427 -0.883255 -0.470908 0.229988 0.85815 -0.292816 -0.311314 -0.0952967
+0.772391 0.71723 -0.298444 0.860807 0.905866 0.801083 -0.257112 0.865618
+0.91475 0.35208 0.739183 0.5542 0.885793 -0.762854 -0.114436 -0.390397
+-0.00238038 0.13775 -0.176457 0.8346 -0.817934 -0.676072 -0.792165 -0.534726
+0.545058 -0.495617 -0.517554 -0.996651 -0.812834 0.601195 -0.0579808 0.931626
+0.702873 0.864469 -0.0558588 0.84158 0.220361 -0.911474 0.381343 0.933388
+0.340707 0.42134 0.98726 -0.843155 0.852878 0.591611 -0.259672 0.0175789
+-0.577658 -0.876924 0.00399223 -0.193853 0.203345 -0.276663 -0.502468 -0.180009
+0.0177999 0.00340674 0.056276 -0.198192 -0.312252 0.633585 0.598034 0.197541
+-0.159061 0.800112 0.784389 0.0723555 0.0359479 0.759342 -0.34009 0.905375
+0.338589 -0.310562 0.883088 0.753153 -0.750019 0.0217613 0.0432865 0.767058
+-0.657262 0.101825 0.149319 0.509225 -0.30078 0.00550695 0.14276 0.927615
+0.893967 0.256508 0.246723 -0.684237 0.140062 0.280849 -0.0466129 -0.328157
+-0.90317 0.446809 0.405565 0.895497 0.106392 -0.597579 0.898757 -0.364794
+0.581448 -0.313556 -0.374284 0.221787 -0.444622 -0.0981259 0.791659 0.714229
+0.499203 -0.985318 -0.950079 -0.433976 -0.459 -0.80906 -0.319202 -0.563101
+0.333075 -0.854522 -0.378698 0.564525 0.0147096 0.75404 -0.0901849 -0.723399
+-0.892629 0.700876 -0.76047 -0.698236 0.721126 0.645856 -0.123505 -0.711135
+-0.740339 -0.796952 0.22256 -0.652009 0.454916 -0.173672 0.647484 0.962477
+-0.46539 0.652972 -0.668187 -0.409683 -0.253592 -0.808649 0.0459738 0.346145
+-0.131851 0.481449 0.274155 0.327115 0.538323 -0.855945 0.376928 -0.464248
+-0.311477 0.60781 0.0647915 0.0349144 -0.906979 -0.221873 -0.293571 -0.0705909
+0.255457 0.393087 -0.200897 0.724084 0.752364 0.359745 -0.0612326 -0.343136
+-0.959241 0.204038 -0.877381 0.183352 0.936718 0.669003 -0.822116 -0.688967
+-0.0105198 0.11415 0.676121 -0.0160809 0.207737 -0.899675 -0.742513 -0.600623
+0.139435 0.192258 0.0616812 0.137983 0.817877 -0.947131 0.941711 -0.14502
+-0.408732 0.837576 -0.80274 -0.183649 -0.0150065 -0.0972932 -0.0893301 0.570324
+-0.855058 0.000896283 0.963632 0.269734 0.669349 0.869792 -0.22901 -0.380569
+0.244925 0.665405 -0.546693 -0.744555 0.781028 0.257806 -0.26532 -0.776705
+0.167019 0.945111 -0.267772 0.527467 0.694969 -0.387071 0.87623 -0.813872
+-0.174104 0.503103 0.313091 0.709993 0.763812 -0.642976 0.546306 -0.197767
+0.24718 0.855926 -0.99392 0.185421 -0.080989 -0.193255 -0.13245 0.817247
+0.538442 -0.806945 0.38069 0.512923 -0.704145 0.897306 0.180391 -0.908193
+0.522868 0.0509071 0.604966 -0.70499 -0.338617 -0.160258 0.606294 -0.272594
+-0.105343 0.71768 0.622049 -0.802764 -0.683397 -0.266077 0.998037 -0.0913231
+-0.435137 0.938807 0.894503 -0.454815 0.149053 -0.924636 0.365601 0.186184
+0.8702 -0.621265 0.791263 0.0014155 -0.416484 0.616878 0.0670925 -0.632963
+0.0549841 0.442197 -0.878079 0.776771 0.256464 0.6385 -0.763827 -0.217914
+0.468603 0.337946 0.276022 -0.65522 0.208541 -0.0905303 -0.305621 0.852601
+0.979409 -0.51722 0.106743 0.0763094 -0.797137 -0.88488 0.504488 -0.168023
+-0.266514 0.260147 -0.416327 -0.475632 -0.121679 0.752852 -0.450344 -0.796255
+-0.666477 -0.686081 0.0558797 0.891521 -0.213814 -0.632339 0.132522 0.669797
+0.478548 0.25804 -0.73034 -0.763098 -0.7187 -0.123103 0.396324 0.747569
+0.250672 -0.0969102 0.565463 -0.269419 -0.113583 0.885196 0.221078 -0.754703
+0.809342 -0.679751 -0.952205 0.869309 -0.144359 0.203847 -0.39146 0.626885
+0.126664 0.689631 -0.990055 0.102341 -0.548834 -0.436249 0.638882 0.257144
+0.679681 -0.662895 -0.682011 0.908557 -0.286349 0.502272 0.0131963 0.458774
+0.956644 0.585121 0.123999 -0.528068 0.018217 -0.109967 -0.49207 -0.963983
+0.661237 -0.437022 0.285641 -0.542122 0.34798 0.483353 0.200802 -0.575863
+-0.293233 0.101943 0.776871 -0.716736 0.339757 0.348393 -0.877006 0.0756994
+-0.192361 -0.429056 0.698857 0.0690558 0.571109 0.689003 0.558945 -0.20103
+0.304939 -0.75176 -0.234605 -0.531447 0.962697 -0.81432 0.287845 0.0611473
+0.0303345 0.50117 0.256422 0.390316 -0.943237 0.880831 0.812167 -0.918173
+-0.460962 -0.456693 -0.256297 0.400444 -0.0476327 0.112099 0.933638 -0.0833243
+0.0664529 -0.490261 0.818026 -0.579211 -0.405074 -0.293812 -0.835751 0.818004
+0.589462 0.752656 -0.851615 0.598916 -0.991793 0.59601 -0.387809 -0.234004
+0.312491 -0.744039 -0.393213 0.12193 -0.205172 0.964511 -0.396016 0.823664
+0.241052 -0.527564 0.757131 -0.0885936 -0.440873 -0.0562625 -0.108217 0.997197
+-0.348426 0.939195 0.764351 0.111117 -0.509492 0.794485 0.547293 0.811958
+0.265172 -0.726696 -0.646237 0.852409 -0.752579 -0.529954 -0.892903 0.744079
+0.991331 -0.968149 0.582996 -0.799841 0.130517 -0.0319984 -0.369265 0.661045
+0.905755 -0.101298 -0.520091 0.470791 0.827143 0.148135 -0.843935 -0.00181772
+0.517024 -0.391846 0.360668 -0.288355 0.40142 0.962982 0.370957 -0.375467
+-0.639948 -0.908811 0.925173 -0.258794 -0.986795 -0.958077 -0.771582 0.833089
+0.323493 0.219279 0.202369 -0.662371 0.216746 -0.212691 -0.595568 -0.237929
+-0.253571 -0.302909 0.00829868 0.593948 -0.661691 0.252085 0.290047 0.340127
+-0.0323342 -0.0986575 0.471169 0.606045 0.472742 0.856805 0.478151 0.262277
+-0.823422 -0.999551 -0.701375 -0.628034 0.810717 0.478998 -0.439586 -0.402394
+-0.0149096 0.462762 -0.218376 -0.128703 0.583629 0.540675 -0.950508 -0.945796
+0.196795 -0.681972 0.199658 -0.0528746 0.852323 -0.781498 -0.180707 0.928392
+-0.0355948 0.245186 0.941033 -0.930629 -0.607334 -0.173449 0.189164 -0.794443
+0.211917 0.959464 0.346092 -0.150506 -0.943057 -0.513279 0.495248 -0.598726
+-0.706505 -0.22289 0.798774 0.579023 -0.662528 -0.703043 0.466128 -0.976256
+-0.0865377 0.920782 -0.313851 -0.6782 0.499931 -0.288394 0.515319 -0.955472
+0.10862 0.255546 0.442373 -0.830397 0.936627 -0.750215 0.594367 0.814511
+0.106111 -0.645144 -0.159128 0.0610745 0.434246 -0.577104 0.634405 -0.660151
+0.135706 0.975158 0.0848757 -0.221776 -0.48962 -0.581868 -0.732632 -0.269339
+-0.326039 -0.608257 -0.764748 0.246634 0.743877 -0.427327 0.341363 -0.534626
+0.213119 -0.414106 -0.453311 0.91909 -0.195049 0.585568 0.8036 -0.580623
+-0.289366 -0.0875174 0.116103 -0.715581 0.49478 0.27594 -0.896851 0.0897983
+-0.579688 0.423732 0.150584 -0.222251 0.913455 0.00843966 -0.696864 0.616172
+-0.625069 0.3232 -0.658514 -0.383288 0.304153 -0.260416 0.995483 -0.192514
+0.608195 -0.121528 -0.500296 -0.120621 0.63437 -0.15617 0.555762 -0.503402
+0.56234 0.920326 -0.655406 0.556227 -0.41102 -0.122466 -0.503406 0.212939
+0.539643 -0.374674 -0.254096 -0.85075 0.637897 0.751731 -0.764317 -0.44745
+0.238889 -0.763641 -0.618631 0.569259 -0.882638 0.228504 0.688651 -0.433042
+0.795766 0.735439 -0.421045 0.459934 0.659391 0.574466 -0.860603 0.239672
+-0.538707 -0.409461 0.333454 0.882338 -0.189935 0.217746 -0.250618 0.249167
+-0.193758 -0.773611 0.0261545 -0.170627 0.297779 0.0666907 -0.0758429 0.291201
+-0.275088 -0.989135 0.52482 0.243216 -0.0715602 0.244083 -0.742632 0.996286
+-0.604519 0.919673 -0.731785 -0.388208 0.804942 -0.616248 -0.646098 0.343847
+-0.545362 0.521995 0.325602 -0.0462079 -0.0576605 -0.196755 -0.32192 -0.0395811
+-0.929555 -0.795383 -0.769878 0.937597 -0.572317 -0.545074 0.844056 0.440964
+0.648816 -0.0202996 -0.188947 -0.828698 -0.351649 -0.729544 0.32248 -0.814613
+-0.103441 0.916185 -0.64055 -0.374267 -0.266359 -0.691093 0.329788 -0.916444
+0.0855057 -0.663682 0.824731 0.390845 -0.430675 -0.16314 0.151002 -0.750227
+0.0942286 0.815537 0.991439 0.186997 -0.692234 0.195049 0.339283 -0.666759
+-0.481371 0.410785 0.0426052 -0.235143 0.334306 0.00832484 -0.753941 -0.660511
+0.452498 -0.864517 0.348422 0.203458 0.914861 0.406036 -0.0652651 0.0171851
+0.989941 -0.218013 0.533689 -0.297949 0.461208 0.838649 0.139251 -0.0197546
+-0.535147 -0.96055 -0.917169 0.920994 0.953047 -0.49934 -0.516132 0.806737
+0.681463 0.357143 -0.466521 -0.613908 -0.329098 -0.00111562 -0.567387 0.360135
+-0.925069 0.228135 0.43766 0.669042 -0.782738 -0.854043 0.0615008 -0.62869
+-0.964794 -0.402917 0.173154 0.263791 0.191719 0.921239 -0.726624 0.0206387
+-0.177547 0.92641 0.0257005 0.567644 0.25378 -0.317255 0.326914 0.955374
+-0.481678 -0.561897 -0.810486 -0.011175 -0.20251 0.0821776 -0.225426 0.828019
+0.319734 0.0455197 -0.650943 0.403695 -0.13328 0.0532351 -0.555217 0.483623
+-0.709679 0.359185 -0.653807 0.40202 0.791759 -0.628203 -0.775551 -0.1609
+-0.00967711 -0.278382 -0.0138448 -0.850629 -0.90164 -0.863227 -0.147169 -0.835083
+0.572079 -0.858894 -0.540333 -0.0858082 0.699962 0.676926 -0.920167 0.57445
+0.94329 -0.0960854 0.448321 -0.181658 0.622784 0.319869 -0.649597 0.526803
+-0.385788 0.81949 0.779691 0.650257 0.622329 0.177045 -0.346547 0.147598
+0.815096 -0.256498 -0.10321 0.330242 -0.253005 0.708998 0.793137 0.642095
+-0.906686 -0.465188 0.641827 -0.888046 0.948462 0.578915 -0.85646 0.415115
+0.189503 -0.231009 -0.504437 0.145098 -0.439487 0.600806 -0.111601 -0.867408
+0.960378 0.263207 -0.255279 -0.831335 -0.250174 -0.566223 0.413952 0.174853
+0.210605 0.915587 -0.95212 -0.781721 0.126896 -0.652111 0.216699 0.97238
+0.569672 -0.811293 -0.060879 0.836581 0.594458 -0.17383 0.273041 -0.579067
+0.438901 -0.738221 -0.171059 -0.515204 0.725874 -0.999104 -0.946137 0.198549
+-0.562374 -0.271372 -0.923062 0.928222 0.678984 -0.178428 -0.565382 -0.417847
+0.0589951 0.846803 -0.982789 -0.83878 -0.823362 0.382187 0.559251 -0.85245
+0.281434 0.186205 0.518949 0.579525 -0.578728 -0.313613 0.566895 0.989014
+0.385349 -0.844833 0.965636 -0.29242 -0.0320836 0.188487 -0.486568 0.609471
+0.812515 -0.0955862 -0.221162 0.293421 0.133897 -0.316121 0.17491 -0.0731692
+-0.851469 -0.629898 -0.430684 -0.959584 0.926379 0.772077 0.666256 0.0218093
+0.841021 0.897457 -0.924708 -0.420437 -0.169368 0.382381 0.976445 -0.404921
+0.283016 0.883067 -0.0180705 0.414147 0.9427 0.595938 0.167437 -0.286301
+0.604149 -0.468205 -0.225634 -0.114448 -0.144297 -0.524006 0.818634 0.736907
+-0.0805167 -0.499092 -0.198474 -0.794759 -0.02127 0.730269 0.627705 0.113475
+0.903352 -0.0252357 0.870841 -0.148878 0.213653 0.197376 -0.0670939 -0.475582
+0.629193 -0.739515 -0.198465 0.721853 -0.28623 0.970282 -0.940538 0.230602
+-0.281755 -0.773608 -0.39371 0.371552 -0.00568323 -0.252002 0.189924 0.825681
+-0.682856 -0.442933 0.782342 -0.551643 -0.301092 0.58446 -0.698666 -0.0942016
+0.381089 0.248401 -0.175918 -0.477737 -0.968251 0.0262816 0.439686 0.778217
+-0.23532 0.853349 -0.715212 0.542211 -0.917156 -0.976299 0.335364 -0.728281
+-0.879117 0.816838 0.741221 -0.304429 -0.620405 0.0690136 -0.402444 -0.87388
+0.411968 0.630165 -0.847352 0.481918 -0.217918 0.565266 -0.0122791 -0.795835
+0.0234592 0.870668 0.438645 -0.603354 0.602228 0.912884 0.688535 -0.606993
+-0.654541 0.646906 -0.29001 -0.965252 -0.275964 0.664379 -0.00808228 0.0235506
+0.0100944 0.152887 -0.304005 -0.795911 0.369806 0.43199 0.734702 0.747264
+0.446445 0.333043 0.930935 -0.694211 -0.601388 0.147061 -0.0998489 -0.93187
+0.74102 0.948449 -0.519778 -0.432951 0.665825 -0.130346 0.816236 0.886446
+-0.345459 -0.705149 -0.343866 -0.463113 -0.45104 0.215277 0.498107 0.55857
+0.172837 -0.25636 -0.727345 -0.501137 -0.900514 -0.535885 -0.673991 -0.627859
+-0.840898 -0.225774 0.937815 0.685105 0.833471 0.929874 -0.479996 -0.635103
+-0.849378 0.0766661 -0.621978 0.863871 0.711126 -0.391414 0.955512 0.760642
+0.771356 -0.257743 -0.321609 -0.492456 0.380348 -0.408613 0.94531 -0.719525
+0.40955 0.357061 -0.375443 0.129784 -0.844371 -0.693414 -0.131407 -0.417468
+0.0317405 -0.242657 0.137224 0.489892 0.0742063 0.622838 -0.536855 -0.144005
+0.838209 -0.94144 -0.396847 -0.5825 -0.00177164 -0.2439 0.698392 -0.79463
+-0.0847977 -0.28233 -0.0612805 0.964329 -0.594445 0.393508 -0.271259 0.0163982
+0.858929 -0.801424 0.817041 -0.496205 0.0243399 0.933555 -0.454056 0.738247
+0.201018 0.88881 -0.918101 -0.596397 0.76459 0.286093 0.0988432 0.979148
+-0.0484204 -0.468678 -0.126223 0.178388 0.943972 0.518688 0.982847 -0.223554
+0.0139024 -0.876422 0.180538 0.732026 0.540794 0.791659 0.488013 0.92101
+-0.573541 -0.966942 -0.345976 -0.264077 -0.354252 0.111363 -0.0798913 -0.953628
+-0.886551 -0.609552 -0.512374 -0.250939 0.0299737 -0.161727 -0.850325 0.784233
+-0.65672 -0.810091 0.720265 -0.367129 0.0745166 -0.755664 -0.716485 0.694168
+-0.224685 -0.254047 0.778674 0.478427 0.736657 -0.397138 -0.250502 -0.562233
+-0.757017 -0.24048 0.939309 -0.300419 -0.936982 0.461805 -0.281682 -0.267151
+-0.812877 -0.594169 -0.630813 0.704813 0.349527 -0.0717624 -0.158619 0.625095
+-0.79515 0.949354 0.0317152 0.417216 -0.831035 0.544364 -0.249483 0.0506718
+-0.560894 -0.155408 0.705131 -0.773296 -0.543498 0.625823 -0.555176 0.617108
+-0.335133 0.957534 -0.0844158 0.727917 0.210453 -0.875149 -0.468757 0.669607
+0.89199 0.264511 0.192064 0.697532 -0.274442 -0.595215 0.525028 -0.894577
+-0.690688 0.328797 -0.779329 -0.601845 -0.0847156 -0.27547 0.658439 -0.0165512
+0.804787 0.49006 -0.463583 0.933438 -0.961176 0.784489 0.952389 -0.725538
+-0.259765 0.0255164 -0.72265 0.43701 -0.991672 0.436923 -0.15044 -0.449078
+-0.701744 -0.596686 0.505973 -0.335453 0.715539 0.811012 -0.496299 0.0725392
+-0.488745 -0.155034 0.478185 0.900486 -0.868652 0.544572 0.179341 0.210153
+0.0340945 -0.174927 -0.655313 0.294701 0.087628 0.789314 0.541003 0.626333
+-0.759713 -0.726705 0.248022 0.837257 0.827688 0.248072 -0.275017 0.815465
+-0.446743 -0.950319 -0.664201 -0.655403 0.937845 -0.529307 0.966991 0.29705
+-0.595593 0.0431616 -0.317064 -0.515757 -0.295014 -0.179958 0.906339 -0.679403
+0.830869 -0.583668 -0.936455 -0.904527 0.145552 0.331073 0.103653 0.0448009
+-0.3558 -0.789052 0.499721 0.0566035 0.691236 -0.780277 -0.517583 -0.5023
+-0.962397 0.721471 0.958446 -0.289021 -0.729467 0.0894384 -0.940042 0.790251
+0.0555765 -0.158012 -0.481045 -0.784203 0.254878 -0.442009 -0.217187 0.149968
+0.771778 0.469362 0.295287 -0.238196 0.525796 0.841417 0.471167 -0.223849
+0.418275 -0.823732 0.675104 -0.529826 -0.217189 -0.735826 0.694598 0.0404085
+-0.737136 -0.635519 -0.816541 -0.53935 0.900962 -0.628396 0.189722 -0.779302
+-0.535194 0.53962 0.975443 0.348913 0.150123 -0.26131 0.520848 -0.730596
+0.978975 -0.0471649 0.201077 0.873904 0.288306 -0.379299 0.994282 0.549067
+-0.505652 0.258319 -0.600744 0.127497 0.314517 0.678104 0.106161 0.757435
+-0.308022 0.0824012 0.550073 -0.810625 0.665014 -0.668955 0.559599 0.957784
+-0.79884 0.670301 -0.367139 -0.891605 0.323452 0.199292 0.381776 -0.639931
+-0.256317 -0.536244 -0.325341 0.521513 -0.670016 -0.396123 -0.511194 -0.430955
+0.975777 0.14726 -0.773959 -0.511971 0.70116 -0.457476 0.601153 0.581795
+0.227825 -0.860724 0.370203 -0.0947922 -0.97406 0.0451292 -0.239343 -0.817037
+-0.470012 0.604172 -0.0921631 -0.717006 -0.0819806 0.403823 -0.139446 0.833008
+0.822054 0.227319 -0.0375581 -0.0493148 -0.260897 -0.62889 -0.370465 -0.0977058
+0.598783 0.812078 -0.0660498 0.259183 -0.506962 -0.510327 -0.942989 -0.468865
+-0.259301 0.743864 -0.218953 0.715528 0.196164 0.232278 -0.395251 0.139116
+0.791498 0.106472 0.0452309 0.629534 0.954354 0.311 -0.142481 -0.14749
+0.611771 0.875423 0.122703 -0.715426 -0.777026 -0.658008 0.488373 0.73403
+0.928229 -0.275799 0.639149 -0.615548 0.0611227 -0.805727 -0.145858 0.0201392
+0.435509 0.463819 -0.240368 -0.0902166 0.0443554 -0.478563 0.0194528 0.376945
+0.471205 -0.27338 -0.035732 -0.729623 0.722559 0.108647 -0.16389 0.613536
+0.978695 0.632154 0.679019 0.111165 -0.152862 0.364563 -0.149085 -0.0789087
+0.622036 0.794577 -0.330212 0.752239 0.0228988 0.920498 -0.711901 -0.00787498
+-0.469051 0.917879 -0.0811375 0.20919 0.557763 -0.84167 0.0757235 0.575219
+0.800904 -0.308932 0.376545 -0.384286 0.432287 -0.935728 0.357876 0.591294
+-0.768239 -0.508914 -0.226472 -0.381764 -0.308265 -0.501238 -0.358439 -0.711269
+0.863075 -0.649126 -0.559737 0.242747 -0.0833645 -0.48658 0.545111 -0.749735
+0.560645 0.0981928 0.98915 0.386877 0.998202 -0.923064 -0.143429 0.0120489
+-0.172888 -0.987736 -0.019919 0.900102 -0.706244 -0.800856 -0.863956 -0.134379
+-0.657668 0.618311 0.579982 0.852182 -0.621864 -0.65489 -0.0406368 0.235367
+0.528019 0.954676 -0.761864 -0.840649 -0.566082 0.516921 0.511785 0.0612233
+0.737796 0.317777 0.373947 -0.155693 0.839091 0.578526 0.283004 0.328822
+0.482275 -0.246011 -0.514408 -0.996551 0.186639 -0.353908 -0.710367 -0.95679
+-0.542976 0.379978 0.388341 -0.50985 -0.71483 -0.305278 -0.380838 -0.672205
+-0.0465311 0.777669 0.340097 0.100179 -0.531904 -0.723961 -0.981274 -0.0394776
+0.244866 0.0632913 -0.101809 0.376018 -0.553911 0.506234 0.843822 0.261087
+-0.34388 -0.985927 0.649291 0.30278 0.920758 0.180314 0.634717 -0.35386
+0.142797 -0.701537 0.163084 -0.211039 0.661914 -0.363659 -0.873628 0.728903
+0.815882 -0.217997 -0.466938 -0.0983389 -0.745205 0.664456 0.494475 0.0985773
+-0.2489 -0.321198 0.5543 0.391957 -0.827394 -0.67636 0.435296 0.3459
+-0.513688 -0.916884 0.882012 0.0695999 0.0376325 0.510818 -0.536005 -0.705857
+0.5442 0.41657 0.402025 -0.0543298 0.865691 -0.763821 0.106548 -0.838279
+-0.820634 -0.405408 -0.139101 -0.797438 -0.0440854 0.823462 0.758196 -0.581836
+-0.283799 0.76933 0.593534 -0.456088 0.387223 0.616003 -0.738034 -0.21752
+0.323996 0.614662 -0.950994 -0.40592 0.154952 -0.601096 -0.909662 0.277428
+0.685618 0.517136 0.886496 -0.485098 -0.788357 -0.208862 -0.725962 0.458484
+0.982799 -0.0979862 -0.94766 -0.885644 0.080183 0.263394 0.828962 0.53429
+0.430696 -0.368712 -0.474724 0.490441 0.875802 0.847952 0.740507 0.529319
+-0.32743 -0.869403 0.709334 -0.575641 -0.527952 -0.0762286 -0.237205 -0.822635
+-0.350666 -0.684212 -0.457443 -0.740521 0.996867 0.573595 0.730673 -0.260659
+-0.558065 -0.231694 0.506373 0.371054 -0.359671 -0.327323 0.440685 -0.233344
+0.492332 0.704796 0.546572 -0.197951 -0.581357 0.838951 -0.0710844 -0.0748296
+0.301623 -0.222486 -0.36994 0.758046 -0.604416 0.0381278 0.0866519 0.0076825
+-0.108616 0.473392 -0.0826879 0.20341 -0.587521 0.762725 0.235206 -0.956744
+-0.222462 -0.131956 0.330108 0.326434 0.0916936 0.959663 0.198013 0.973006
+-0.0065452 -0.157656 -0.568667 0.640993 0.371594 0.229192 -0.612711 0.807077
+-0.124147 -0.330151 -0.377112 0.0423615 -0.289726 0.664887 0.139732 -0.744687
+0.369068 -0.207116 -0.812014 0.431813 0.901761 0.184991 0.809224 0.664435
+-0.140696 0.658488 -0.380659 -0.100359 0.132319 0.290516 -0.7908 -0.303609
+0.950275 0.294591 0.813284 0.255675 0.379241 0.752181 0.21117 -0.0879986
+-0.788587 0.674907 -0.639197 0.843933 0.546026 0.133486 0.340824 0.737389
+0.551478 -0.665144 0.572637 -0.251883 0.667913 -0.652631 0.262991 -0.628928
+-0.00829559 0.827264 -0.659673 0.677435 -0.582898 0.861656 0.807052 -0.241922
+0.53029 0.276406 -0.850369 0.606148 0.417719 0.322676 -0.718059 0.814904
+0.0509127 -0.77916 0.38724 -0.0618599 0.321472 0.294822 0.536563 0.222844
+0.183128 -0.961351 0.469498 -0.107124 -0.998764 -0.974323 -0.561324 -0.778491
+0.705104 -0.16619 0.246858 0.853025 0.933275 -0.96025 -0.2306 -0.581463
+-0.135804 -0.291501 -0.453964 -0.0667871 -0.0116701 -0.530398 -0.636346 -0.989861
+-0.883888 0.868279 0.686281 0.365628 -0.280309 -0.613791 -0.2066 0.274597
+0.291794 0.775417 0.23292 0.0894797 0.292737 -0.163122 -0.638439 -0.594163
+-0.830332 -0.275543 -0.585718 0.270686 0.383448 -0.836213 0.777362 0.100967
+0.664511 0.30164 -0.128448 -0.948827 0.862502 -0.430376 -0.942581 0.0512758
+0.711924 -0.285207 -0.654959 -0.988625 0.392955 -0.359291 0.863404 -0.106388
+-0.659953 0.917055 -0.799197 0.651361 0.370245 0.391718 0.223717 0.723495
+0.123549 -0.945111 -0.555769 -0.649814 0.499219 -0.619066 -0.601799 0.69068
+-0.618715 0.32131 0.759993 -0.0737941 -0.229136 -0.391153 0.0804427 -0.0470107
+-0.705316 0.341965 0.61163 -0.48823 -0.791244 -0.859084 0.325526 0.469497
+-0.38023 -0.0987179 -0.939405 0.435456 0.393173 -0.892511 0.631725 0.58999
+0.942535 0.0601412 -0.392017 0.285243 0.870367 -0.147963 0.332054 0.395072
+-0.483855 -0.0679516 -0.824674 -0.564758 0.56754 -0.57824 -0.624811 -0.711699
+-0.2866 -0.174484 -0.926319 0.34033 0.624304 -0.384439 -0.42727 -0.446075
+0.213221 0.51746 -0.717439 0.833329 -0.769489 0.325338 0.596314 0.224083
+0.0602668 0.344342 0.489977 -0.580508 0.843116 -0.315491 0.168088 -0.601734
+0.321409 0.129467 -0.292062 0.46742 0.521776 0.903115 -0.424467 0.0117525
+0.777867 0.75377 -0.158987 0.149591 0.0631847 -0.526191 0.926621 -0.952158
+-0.108637 -0.591344 -0.457731 -0.33968 0.835762 0.178632 0.0384074 -0.474663
+0.363637 -0.350786 -0.601748 -0.756875 0.854744 0.372593 -0.175902 0.303099
+-0.0330089 0.146971 -0.769861 -0.99727 0.46859 -0.195382 -0.455002 -0.172157
+0.0297913 0.539815 -0.983084 0.38095 0.0792756 0.70725 0.820313 0.487679
+0.0484071 0.0412326 0.914358 -0.536642 -0.958456 0.340165 0.0820479 0.992099
+-0.159312 -0.449366 -0.0792356 0.181913 0.539605 0.950556 0.387085 -0.0460472
+0.308555 0.816409 -0.226476 -0.976578 -0.95974 0.92481 -0.10954 0.944659
+-0.487201 0.334477 -0.222606 0.887994 -0.245868 0.924337 -0.191241 0.258974
+-0.516916 -0.431767 -0.362052 -0.956869 0.140973 -0.525674 -0.829216 -0.864134
+0.467598 -0.0623155 -0.562673 0.387059 0.417803 -0.156728 -0.132967 -0.851912
+-0.0159641 0.681031 0.789737 0.61295 -0.382811 -0.437122 -0.575667 0.139461
+0.201726 -0.0284665 0.126787 -0.770721 -0.378973 -0.871242 -0.93124 0.167806
+-0.906587 0.755051 0.805754 -0.466284 0.846402 -0.265639 -0.399551 0.783611
+-0.330639 0.799403 -0.365028 0.152432 -0.457075 -0.880786 0.951629 -0.637468
+0.0939051 0.972762 0.673671 -0.0251475 -0.416985 -0.586914 -0.212876 -0.518802
+0.26211 -0.158193 0.0879568 0.133352 0.294339 0.806577 0.347484 0.284492
+0.18738 0.601394 -0.288238 0.929328 -0.430584 0.144805 -0.0861466 0.9678
+-0.672234 -0.577955 -0.226058 0.795892 0.372343 0.433359 -0.307655 -0.355279
+-0.91036 -0.593156 -0.0141378 0.367605 -0.69358 -0.889241 -0.390859 0.67733
+0.986818 0.965071 0.535801 0.19849 -0.598978 -0.787907 -0.977443 0.297804
+0.594224 -0.532425 0.28695 -0.972223 0.155023 0.323215 0.256217 0.506544
+-0.927605 -0.829722 0.276827 0.356957 0.832604 -0.96117 0.531935 -0.147619
+0.89414 -0.248586 -0.0725506 -0.825005 0.51739 0.465548 0.381324 0.908398
+0.736161 0.0285865 0.0647281 -0.631369 0.562227 0.329487 0.435297 -0.89194
+0.168549 0.237941 0.0677357 0.690194 -0.657008 0.348647 0.438995 0.119896
+-0.490611 -0.240686 -0.412573 0.472571 0.751665 -0.264279 0.911799 -0.870605
+0.982511 -0.626581 -0.46597 0.60857 -0.575409 0.697278 0.671233 -0.559026
+0.670154 -0.810728 0.0135843 -0.252631 -0.964883 -0.64613 0.0921187 0.202064
+0.560799 0.432354 0.906522 -0.611299 -0.641625 0.0577759 -0.883151 -0.415086
+-0.612934 0.25347 -0.619802 -0.689669 -0.772393 0.328471 -0.154783 0.20487
+0.927717 0.232525 0.24183 -0.411393 0.169979 0.203034 -0.391018 0.781991
+-0.0575303 0.244628 -0.331141 0.156427 -0.436854 -0.620626 0.497404 0.936758
+-0.755519 -0.694919 -0.0139654 0.258019 -0.871405 -0.0450511 -0.492955 -0.298025
+0.202794 -0.141868 -0.938724 0.311757 -0.0128749 -0.112618 -0.524556 0.873593
+-0.334348 -0.705892 0.758689 -0.700964 0.260453 0.212106 0.67753 0.149304
+-0.119876 0.0868582 0.166572 0.462281 0.345725 0.184584 0.671379 0.134625
+-0.143818 0.879489 -0.434038 -0.804062 0.879466 0.420275 0.757427 -0.635403
+-0.531995 -0.642183 -0.813272 0.501051 0.389997 -0.420186 -0.645479 -0.111166
+-0.302184 -0.774725 -0.315015 -0.978614 -0.275317 0.716474 0.0844563 0.428733
+0.283421 0.260302 -0.881416 -0.798459 -0.83066 0.551997 0.437974 0.515384
+0.755976 0.845284 0.561146 -0.0527445 -0.262402 -0.187658 -0.311828 0.867852
+-0.989924 -0.219227 -0.550345 -0.154239 0.467149 -0.672575 -0.300683 0.0634565
+-0.724787 0.352666 -0.110587 -0.554322 0.00744583 -0.975196 -0.86003 -0.966098
+0.151237 0.633514 0.776802 0.71245 0.0024771 0.62805 -0.940123 0.04355
+0.601368 0.15256 -0.534149 0.107194 0.583994 0.72257 0.488926 -0.127211
+-0.296958 -0.655767 0.815496 0.62545 -0.66598 -0.696658 0.422174 0.227705
+-0.838788 -0.255448 -0.418342 -0.239067 -0.468444 -0.493054 -0.617915 0.46068
+-0.10102 -0.844915 -0.772289 -0.255899 0.855761 -0.865344 0.465499 0.993729
+-0.696099 0.602138 -0.866223 0.616719 -0.638643 -0.117135 -0.467626 0.682793
+-0.467108 0.926499 0.633912 0.879862 -0.490802 -0.25296 0.454019 -0.851356
+0.294904 -0.56879 -0.889959 -0.585637 0.329798 0.886105 -0.283169 -0.632372
+0.854875 0.799757 -0.336953 -0.140972 -0.687957 0.890311 -0.628454 0.915021
+-0.631309 -0.296261 0.323326 -0.923162 0.132575 -0.051929 -0.123272 -0.780163
+0.247462 0.138162 0.970424 -0.0159447 0.765595 -0.63247 0.526467 0.329408
+0.558882 0.991274 0.762702 0.148037 -0.812295 0.320623 -0.360074 0.890414
+-0.193575 0.836558 0.66645 0.369587 0.894989 0.724637 0.134832 -0.103241
+-0.373098 0.522283 -0.509777 -0.408407 0.281541 0.491888 0.295896 0.885464
+-0.435318 -0.15438 0.295375 -0.0130003 -0.370649 -0.939891 0.979149 0.441866
+-0.0458628 0.0889234 -0.00384797 -0.172882 0.654266 0.0200125 0.93788 -0.229084
+0.232796 0.331426 0.137932 -0.1588 0.746055 -0.611013 0.0580773 -0.984885
+-0.274608 0.0274619 0.236169 -0.00557469 0.63567 -0.41614 -0.738035 0.678355
+-0.777497 -0.274965 -0.978902 -0.94074 -0.998772 -0.371096 0.918989 0.470693
+-0.351333 0.600498 -0.279957 0.982019 0.686641 0.463126 -0.951743 -0.774277
+-0.693266 0.587143 0.806982 -0.0391043 0.687868 0.836473 0.758257 0.814607
+-0.155583 0.559107 -0.180078 -0.901172 -0.564174 0.950115 0.658405 -0.995456
+-0.179338 -0.769771 0.63757 -0.800916 -0.941813 0.901739 -0.835243 -0.399236
+0.200282 0.56488 -0.695449 -0.784017 -0.169102 0.163009 -0.681538 -0.422385
+0.877868 -0.858239 -0.0760585 0.969674 0.0520049 0.650256 -0.174781 -0.592959
+-0.643602 0.490123 0.0763367 -0.133388 0.603845 -0.399696 0.421458 -0.623528
+0.621015 0.394125 0.58665 -0.318446 -0.242279 -0.0396681 -0.215221 0.910531
+0.679511 -0.69743 0.219824 -0.109131 -0.908851 0.362093 -0.323557 -0.842242
+-0.572823 0.174681 0.121563 -0.798144 0.918647 -0.0353657 -0.618057 -0.963881
+0.875206 0.628925 -0.285123 -0.745414 -0.951678 0.627636 0.4282 -0.261089
+-0.180566 0.0979852 0.161239 0.501575 -0.340417 0.793822 -0.609995 -0.209603
+-0.522707 0.472491 -0.49147 -0.626946 0.731457 -0.92191 0.381342 0.535288
+0.230116 -0.411899 -0.376975 -0.0727894 0.407803 0.797609 -0.617944 -0.102145
+0.470748 -0.680442 -0.052813 0.485381 0.259645 0.314615 0.982611 0.798367
+0.767657 0.413682 0.403979 -0.364973 -0.0227396 -0.587921 -0.459537 -0.56456
+-0.817581 0.0230745 0.122747 -0.272514 -0.151073 -0.571134 -0.12752 0.308456
+-0.234365 -0.896628 -0.543475 -0.928624 0.755612 0.511077 -0.599918 -0.599189
+-0.614712 0.0293457 -0.508606 -0.920826 0.164886 0.904763 -0.528188 0.0844406
+0.902556 0.119671 0.994113 -0.269736 -0.424784 0.264042 -0.657939 -0.806347
+-0.750066 -0.245443 -0.808003 0.442991 -0.209324 -0.808908 -0.981794 -0.510847
+-0.610594 0.900685 0.754698 -0.95254 0.420727 -0.330646 -0.906228 -0.181319
+0.067648 0.377454 0.519654 -0.886214 -0.720197 0.137773 -0.220185 0.760907
+-0.698287 0.697118 -0.598066 -0.491931 0.661839 -0.178514 0.446478 0.725278
+0.854846 -0.959739 0.449098 0.829102 -0.676333 0.786899 0.379883 -0.454514
+-0.170446 -0.570646 0.513767 0.689225 0.0637064 0.047249 0.194648 0.70846
+-0.914489 -0.84392 -0.378201 -0.361538 -0.356328 0.127385 -0.67819 0.168057
+0.125882 0.453762 0.630228 -0.307048 0.0558355 0.423292 -0.156626 0.409801
+0.545793 -0.272674 -0.228218 -0.18991 -0.940324 0.648011 0.48258 -0.539391
+0.652456 -0.809515 0.320749 -0.509295 0.136827 0.341681 -0.374427 -0.216659
+0.674087 -0.0444064 0.15684 0.0964682 -0.254558 0.862153 0.816423 0.29775
+-0.228888 0.203158 -0.720184 0.665157 -0.155045 -0.483388 -0.476821 -0.378136
+-0.261212 -0.853161 -0.908703 0.118185 0.539272 0.15899 0.9865 0.275421
+-0.895025 -0.826869 -0.27963 -0.242447 -0.163778 -0.692896 0.66349 0.0390357
+-0.427301 -0.277379 -0.231296 -0.415472 -0.752861 -0.299575 0.729758 -0.213146
+0.375921 -0.565423 0.096258 -0.583626 -0.263709 0.675703 -0.0166036 0.0170838
+-0.639753 0.126037 -0.106663 0.220402 0.257187 -0.743703 -0.403632 0.268798
+-0.95692 -0.875367 0.337192 -0.509973 -0.731753 -0.894748 -0.598928 -0.808364
+0.512275 -0.583381 -0.974964 0.847309 0.921829 -0.676939 -0.796804 0.0290198
+0.140113 -0.915027 0.793142 0.977794 -0.894313 -0.250609 -0.513954 0.188916
+-0.597928 0.982209 -0.572229 0.191877 0.127513 0.284272 -0.624505 0.600551
+-0.0618661 0.974959 -0.936933 -0.757253 0.865399 -0.810305 -0.25958 -0.62859
+0.179969 -0.394173 -0.272225 -0.273774 0.705135 -0.529459 0.534434 0.198125
+-0.00457802 0.906561 0.432007 0.311682 0.504192 0.881337 0.803117 0.409709
+-0.623662 0.414641 -0.774825 -0.883711 0.133717 0.697851 -0.0338443 0.382461
+-0.487514 -0.613888 0.160689 -0.111202 -0.96655 -0.702182 0.0501156 -0.206706
+-0.550074 0.749546 -0.431205 -0.567424 -0.680566 0.942111 -0.721449 -0.403556
+0.235001 0.191921 0.439872 -0.279121 -0.688673 -0.193997 -0.672952 0.62718
+-0.444838 -0.231392 0.209668 -0.342187 0.432978 0.289592 0.554435 -0.318237
+-0.27749 0.354259 -0.107901 0.240673 -0.82693 -0.0822021 0.580248 0.954766
+-0.770102 0.697206 -0.98903 -0.652434 0.86804 -0.0104531 0.49113 0.792418
+0.657355 0.689204 -0.0956647 0.225194 -0.12617 0.302542 0.808653 -0.0638344
+0.100763 0.488962 -0.472099 0.415373 0.255599 -0.767797 -0.759042 -0.981816
+0.82712 0.512842 -0.574906 -0.675571 -0.108577 0.134561 0.691657 0.364584
+0.717932 0.644293 -0.891336 -0.14146 -0.752995 0.466326 0.0956557 0.748409
+-0.639551 0.993796 0.23663 -0.860338 0.546328 -0.0134221 -0.190639 -0.774242
+-0.168998 0.809897 -0.0724687 0.880509 0.924059 0.914387 -0.356067 -0.70861
+-0.665771 0.0469613 -0.344686 -0.639886 -0.794659 -0.752005 -0.538779 -0.554446
+0.358273 0.810189 0.589195 0.0768694 -0.363041 0.466094 -0.612151 -0.798805
+-0.176668 0.773198 -0.531688 0.653239 -0.487518 -0.748874 -0.115973 -0.95675
+0.379019 -0.187013 -0.694737 0.435753 0.733395 -0.375554 0.901036 0.576703
+-0.878736 0.859948 0.594482 0.731464 0.656825 0.185427 0.703121 0.475483
+0.451083 -0.605168 -0.567243 -0.829023 -0.855582 0.0894606 -0.701407 -0.934292
+-0.734215 -0.871833 -0.751409 -0.851524 0.442948 0.324741 0.0601873 -0.545492
+-0.645031 -0.159748 -0.73442 -0.0663618 0.524607 -0.30848 0.984521 -0.14582
+0.251307 -0.84424 0.527263 -0.119836 0.814 0.513187 0.663162 0.053065
+0.171631 0.608003 -0.390446 0.0240444 0.632319 0.302603 -0.974016 -0.550811
+-0.519843 0.20318 0.646409 -0.469461 0.815997 0.828373 0.525019 -0.33928
+-0.312998 -0.930874 0.748211 0.50108 -0.426059 0.24332 -0.761835 -0.888036
+-0.0430873 0.93541 0.607379 -0.930788 0.748549 -0.629869 -0.327984 -0.802965
+-0.893623 -0.94416 0.644368 -0.793722 -0.371427 -0.574178 0.538288 -0.599681
+0.991865 0.942398 0.502691 -0.721589 -0.0177585 0.69164 -0.739599 0.308632
+-0.948865 -0.462305 0.481357 0.239694 -0.687471 0.972791 -0.759844 -0.101514
+-0.427971 0.817675 0.37791 0.717362 0.780244 0.687148 0.817492 -0.356595
+0.408544 0.481804 0.634608 -0.292359 -0.333752 -0.730047 -0.146216 -0.379925
+-0.411169 0.480939 0.111173 0.719619 0.791424 -0.478602 -0.543974 0.983891
+0.328765 -0.252362 0.148485 -0.707759 0.783393 0.360622 -0.813371 -0.387891
+-0.732258 0.0508194 -0.468909 -0.104074 -0.402039 0.562892 -0.797813 -0.351684
+-0.531397 0.563291 0.757849 0.419854 0.0848375 -0.538672 -0.130978 0.29123
+0.581819 0.769303 -0.768847 0.296335 0.46928 0.686351 -0.452858 0.42095
+-0.468421 0.354316 0.320273 -0.683124 0.733479 0.959525 -0.466906 -0.562437
+-0.320985 0.662557 -0.469076 0.731449 -0.792907 -0.522255 -0.810503 -0.0463208
+-0.135518 -0.548003 0.821454 -0.596468 -0.221672 0.722425 0.677631 0.239664
+0.240495 0.518917 -0.560083 -0.533732 -0.316851 -0.384751 0.472647 -0.736067
+0.963678 0.279479 0.730123 0.767116 0.368007 -0.722811 -0.896892 0.947205
+0.363038 0.890507 -0.57866 -0.448616 -0.486435 0.378788 -0.0279786 -0.259052
+0.783014 0.730993 -0.845192 -0.448047 0.815635 -0.755785 0.676373 -0.367349
+-0.0086781 -0.325064 -0.795016 -0.764885 -0.497666 0.546077 0.15676 -0.347416
+-0.442516 0.831899 0.539601 -0.946358 0.42282 -0.733471 0.986251 -0.216558
+0.149417 -0.976062 0.843743 -0.709507 -0.949645 -0.444824 0.623921 -0.212131
+0.889061 -0.714132 0.886256 -0.524226 0.260209 -0.425858 -0.335331 -0.608121
+0.163371 -0.653703 -0.731777 -0.000247172 -0.188642 0.924377 0.298805 -0.388973
+0.762605 -0.842116 0.869683 -0.830962 0.677016 0.142839 -0.12232 0.522901
+-0.690976 -0.576243 0.773121 0.520893 -0.24379 0.197899 -0.222619 0.359383
+-0.462497 -0.296712 0.673668 0.87853 -0.46955 -0.69347 0.111819 0.845106
+0.175018 -0.934832 0.679228 0.637092 -0.0536522 -0.826904 0.908255 -0.239506
+0.145944 -0.31197 0.548688 0.900027 0.390772 0.910796 -0.22158 -0.549628
+0.24904 0.135123 -0.10011 -0.514924 -0.984626 0.938774 -0.904509 -0.770618
+-0.639954 0.877993 -0.188124 -0.182481 0.146301 -0.285402 -0.0191776 0.528271
+-0.387525 0.482188 0.979864 -0.349333 -0.545409 0.399055 -0.883834 0.979338
+-0.699892 -0.672811 -0.831444 0.613173 0.13007 -0.189966 -0.142866 0.160236
+0.0910655 -0.996865 0.0246345 -0.904468 -0.274297 -0.293687 -0.728378 -0.326509
+-0.309902 0.428136 -0.612639 -0.0769603 -0.889623 0.22853 -0.235892 0.534631
+0.78105 -0.525496 0.103986 0.125321 -0.00833412 -0.780349 -0.156386 0.23734
+0.958042 0.2222 -0.516709 0.302859 0.356197 0.621717 -0.375293 -0.325277
+-0.950257 -0.567975 -0.557345 0.227985 0.962381 0.0284058 -0.946306 0.993726
+0.689634 -0.0610698 -0.181399 0.341457 0.303838 0.48898 0.234354 0.840447
+-0.280721 -0.220603 0.613225 0.369206 -0.991763 -0.37548 -0.561312 -0.559419
+-0.562699 0.464465 -0.484657 -0.845516 0.286717 -0.325758 0.359892 0.250142
+-0.108194 -0.228172 0.946117 -0.502686 -0.0465551 0.712636 0.772485 0.179967
+-0.737207 -0.408187 0.466146 0.953815 0.157193 -0.050292 -0.515917 0.516513
+0.543843 -0.0965304 0.884514 -0.637205 -0.796977 -0.926221 0.798812 -0.185254
+-0.753853 -0.665576 -0.236124 -0.371611 0.561697 -0.752251 0.84445 -0.721008
+0.415113 -0.419192 0.81641 -0.498895 0.156293 0.675782 -0.582893 -0.507618
+0.4038 0.53983 -0.748939 -0.0885593 0.832176 -0.930937 -0.179189 0.895717
+-0.616491 -0.0931225 -0.190058 0.969533 0.271779 0.502087 0.859372 -0.962636
+-0.576212 -0.0748974 0.131519 0.12715 -0.953877 0.89019 0.632441 0.908584
+0.515387 -0.161986 -0.844445 -0.172084 0.179543 -0.09881 -0.646958 0.218213
+-0.846388 -0.731861 -0.0872301 0.792956 -0.00136626 -0.616736 -0.198031 -0.0934711
+0.193242 -0.18113 -0.149347 0.852692 0.414392 0.455737 0.77598 0.651056
+0.085765 -0.943946 -0.295603 0.162231 0.618967 0.406141 0.667482 -0.163063
+0.651067 0.481217 -0.848668 -0.730323 0.702711 0.674271 0.639327 0.11048
+0.792505 -0.148969 0.670314 0.155321 0.236991 -0.725394 -0.85646 -0.861638
+0.0494774 -0.0744954 0.406126 -0.854873 -0.959164 0.948478 0.124809 -0.80229
+-0.628362 0.375658 0.545496 0.076435 -0.467406 -0.345889 -0.110965 -0.503293
+-0.976087 0.459429 -0.260363 0.846721 -0.0974471 -0.673193 0.476279 0.749357
+0.857776 0.0693236 -0.409274 -0.428415 0.673289 -0.136668 0.824272 0.381379
+0.820045 0.804361 -0.317322 0.142192 -0.310016 0.854062 0.402185 0.831183
+-0.296965 0.034647 -0.719021 -0.853171 0.948462 -0.317786 -0.682242 0.851529
+-0.360539 -0.28977 -0.540494 -0.871484 -0.0713698 -0.202932 0.283497 0.32302
+-0.368837 -0.902355 0.0806888 0.937038 0.0197885 0.855694 0.6758 0.624621
+-0.642331 0.114485 -0.214602 -0.430039 -0.12427 0.267638 0.173853 -0.447229
+0.30979 0.280358 -0.567427 0.169455 0.205752 -0.689963 0.714521 0.0473829
+0.383499 0.0804055 0.550963 0.0282557 0.349583 -0.812192 0.992022 -0.586029
+-0.0443168 -0.695056 -0.491459 0.289843 0.0399156 0.729499 -0.59989 -0.686555
+-0.329796 0.392133 0.818108 0.897126 -0.755773 -0.225375 -0.276367 0.433383
+-0.438587 0.308626 0.753066 0.570264 -0.6305 -0.00913223 0.694738 -0.0574015
+-0.000567365 0.56681 0.781076 -0.141968 0.983244 0.492774 0.533332 0.229013
+0.19993 0.200886 0.0562647 0.477792 -0.385539 -0.929566 0.992027 0.869331
+0.355324 -0.0744283 -0.280209 0.147904 -0.837536 -0.575321 -0.026675 0.576413
+-0.854892 0.448117 -0.632357 0.884104 0.460515 -0.38821 -0.309308 -0.83903
+0.545732 0.821317 -0.301445 0.132048 0.432038 0.319904 -0.324767 0.655713
+0.32467 -0.22967 0.904307 0.727212 -0.776325 0.0210347 -0.182459 -0.865849
+-0.948423 -0.102846 0.522964 -0.9679 -0.540413 0.9555 -0.906271 0.366339
+0.905601 -0.824081 0.806826 0.635544 -0.581854 -0.668167 0.636123 -0.954634
+-0.435015 -0.0557779 0.702212 0.874607 -0.653595 -0.212491 -0.784918 0.126354
+0.937068 0.672375 0.577975 -0.607661 -0.0178115 0.44509 -0.821401 -0.0571128
+0.0953985 0.212275 -0.532983 -0.320107 0.386387 0.19727 0.132351 0.103074
+0.653617 -0.279407 -0.926383 0.361078 -0.774375 -0.175768 -0.725556 0.834164
+0.651801 0.94774 0.254977 0.316746 0.213899 0.00485267 0.922421 -0.488591
+-0.3543 -0.471387 0.965173 0.173607 0.846795 -0.446685 -0.468995 0.541162
+-0.932263 -0.700538 0.0437374 -0.600939 0.637763 -0.853614 -0.89898 -0.59456
+0.822556 0.441414 0.664329 0.541246 -0.499665 0.342649 -0.441652 -0.56069
+0.524078 0.809887 0.655461 -0.168242 -0.610231 0.579368 0.031113 -0.166155
+-0.526537 -0.400588 -0.587946 0.529077 -0.390321 -0.203477 -0.253867 -0.660506
+0.865728 -0.896361 -0.166965 0.334866 0.237346 0.545053 -0.33189 -0.66649
+-0.465374 0.977072 -0.0195884 -0.978674 -0.986898 -0.0328485 0.579987 -0.71977
+-0.274641 -0.741784 -0.411774 -0.0662335 -0.413689 -0.105837 -0.65194 0.00284367
+-0.630715 -0.462553 -0.697124 -0.423515 -0.948907 0.422678 -0.845514 0.392979
+-0.612671 0.965431 0.221359 0.449319 0.305557 0.406974 0.703473 0.359746
+0.557118 0.655683 0.770181 0.166699 0.390762 0.267572 -0.630432 0.506798
+0.642224 0.581337 0.995115 -0.154745 -0.642818 -0.0617701 0.225192 -0.871905
+0.684701 0.000151154 0.866918 0.279185 -0.0704296 -0.574974 0.354941 -0.258214
+0.259761 -0.631192 -0.457332 0.285686 0.699099 -0.896124 -0.99771 -0.221524
+0.765276 -0.626306 0.705763 0.612461 -0.947382 0.988387 0.864967 -0.344337
+0.369436 0.302681 0.93184 -0.489951 -0.178039 -0.554152 -0.636793 0.0947663
+-0.745905 0.765296 -0.0878794 0.54381 -0.566166 0.0709023 -0.621111 -0.658188
+-0.439942 -0.393803 0.0993992 -0.0673843 -0.71495 -0.5793 0.796486 0.596146
+0.347069 -0.0333286 0.663615 0.716399 0.928039 0.0243541 0.0211747 -0.647925
+0.231801 -0.953452 -0.28938 -0.785405 0.0021042 -0.418424 -0.954474 0.0944015
+-0.795226 -0.786352 -0.629143 -0.0268838 0.612522 -0.707865 -0.464972 -0.190053
+0.221904 0.148953 -0.874814 -0.950534 0.303472 -0.203122 -0.297299 -0.844548
+0.140824 -0.858117 -0.46766 0.937109 -0.666551 -0.0215576 -0.0413337 0.526174
+0.937529 -0.950909 -0.0802493 -0.368285 -0.952247 0.177659 0.7287 0.225324
+-0.296159 -0.952219 -0.435089 -0.306847 -0.0509877 0.0222074 -0.929953 0.435227
+-0.623887 0.928342 0.219252 0.839628 -0.153282 -0.152008 0.0605999 0.598386
+0.12803 -0.440865 -0.201706 -0.810531 0.274716 0.294492 0.226332 -0.735106
+0.652479 0.420165 -0.482305 -0.945197 -0.042351 -0.358698 -0.155276 -0.82037
+0.322464 -0.139477 -0.687325 0.389929 0.380014 -0.360332 -0.992663 0.968118
+0.498006 -0.987473 -0.0485686 -0.447246 0.0918458 -0.644389 0.755311 0.887464
+0.429836 0.345143 -0.485296 0.182335 -0.356696 0.582101 0.832393 0.607575
+-0.223757 0.351515 0.115408 0.780621 -0.480247 -0.195 -0.773274 0.935187
+-0.128869 -0.928501 -0.661209 0.820022 -0.247699 0.168445 -0.48247 0.564638
+0.739054 -0.619004 -0.122714 0.236034 -0.430382 -0.923658 -0.683358 0.24331
+0.395269 0.606288 0.98815 -0.192725 0.0080007 -0.834696 0.131245 0.578261
+0.479883 0.455326 0.101033 0.817782 -0.80053 0.600643 -0.947445 0.590112
+0.937189 -0.470375 -0.959809 0.631907 -0.865896 0.467946 -0.10058 -0.289725
+-0.421509 0.387252 0.271291 -0.798807 -0.191348 -0.76576 0.566838 -0.648024
+0.0543221 -0.97846 -0.755844 0.495572 -0.546768 0.68395 0.710712 0.869045
+-0.0680898 -0.694386 0.683653 -0.745838 0.420444 0.90945 0.866767 0.573934
+-0.0782296 0.339832 -0.0350136 0.0327823 0.816112 -0.535942 0.821392 0.436657
+0.130665 -0.77761 0.073332 0.529 -0.0310249 0.209788 -0.168761 0.429739
+-0.206022 -0.174666 -0.591531 -0.274372 0.990813 -0.410182 0.357321 0.557301
+-0.257423 0.898744 0.0316753 -0.621787 0.0729736 -0.721405 -0.78409 0.252105
+0.25796 -0.646719 0.797532 0.657129 0.0252002 -0.264597 0.0280809 0.0296184
+0.903781 -0.359993 -0.0370503 -0.252323 -0.755103 -0.968228 0.332395 0.152309
+0.715643 0.202338 0.0211722 0.114315 -0.915303 -0.923349 -0.844118 -0.170521
+-0.559759 -0.325486 -0.6104 0.048279 0.612685 0.533573 -0.389062 0.0201878
+-0.414804 0.378705 -0.0365641 0.725253 -0.426036 -0.872704 -0.783059 -0.894508
+0.195722 0.331857 0.405579 -0.196618 -0.646433 0.31528 -0.685225 0.142291
+0.557115 -0.250782 0.109774 -0.136143 -0.771967 0.203548 -0.218052 0.389333
+-0.629642 -0.12249 0.865808 -0.091847 -0.838728 -0.982414 0.216325 -0.262573
+0.109992 -0.280158 -0.479389 0.129597 0.268368 0.673147 -0.962008 -0.866278
+-0.16216 -0.59445 0.376369 0.543022 0.559321 -0.687589 0.78088 0.942087
+-0.914894 -0.839347 0.891765 0.309621 0.530463 0.310419 0.0591803 0.548127
+0.077753 0.671682 0.689121 0.319091 -0.258157 -0.233634 -0.121386 -0.667556
+-0.864087 0.135174 0.451474 0.800652 -0.788833 0.0185349 0.824255 -0.101176
+-0.495449 -0.0897356 -0.481195 -0.329414 0.63027 -0.847425 0.481735 -0.715652
+-0.479162 0.835453 0.192061 0.0202158 0.114332 -0.592705 0.54729 -0.413141
+-0.125399 0.732418 -0.69633 -0.133807 -0.201421 -0.776236 -0.907875 0.505893
+-0.360225 -0.817624 0.342119 -0.397985 0.331854 -0.256212 -0.633924 -0.632303
+-0.472471 -0.920919 0.187211 0.0398026 0.4989 0.0805651 0.0742864 0.950357
+0.390164 0.380505 0.358938 0.006135 0.532438 -0.780838 0.507366 -0.834666
+0.305488 -0.0339484 -0.0659418 -0.945186 -0.0063168 -0.322266 0.739375 0.990767
+-0.305596 -0.887935 0.0151104 -0.701757 0.774948 -0.238107 -0.0178909 -0.87515
+-0.274157 0.530351 0.291663 0.847541 -0.00723269 -0.231056 0.448725 0.691927
+-0.997664 -0.78874 -0.777246 -0.090291 0.334912 -0.58018 -0.827108 -0.909759
+0.613561 -0.848892 -0.402654 -0.191104 -0.473759 -0.682979 0.139817 -0.596996
+0.479488 0.129539 0.73461 0.818347 0.975974 0.840722 -0.467352 0.333716
+0.132463 -0.890211 -0.175518 -0.251334 0.209338 -0.65694 0.284632 -0.0846382
+-0.208428 0.439492 -0.704196 0.75804 -0.709925 -0.533397 0.714339 0.90422
+-0.637903 0.0814424 -0.227628 0.687734 0.105665 0.754281 0.0383247 -0.20825
+0.905862 0.0235782 -0.318191 0.33822 -0.108553 -0.474966 0.572027 0.0572129
+-0.560315 0.827218 0.448415 0.572057 0.520588 0.48663 -0.0396718 0.261578
+-0.885042 -0.512612 0.463418 0.82466 -0.055316 -0.580829 -0.281855 0.277118
+0.846699 0.269458 0.664875 0.109804 -0.799353 0.484617 -0.0811441 0.675031
+0.983116 -0.320686 -0.967268 0.422405 -0.875115 -0.876388 0.244567 0.832954
+-0.711578 0.980622 0.38807 -0.056876 0.0154746 0.0850274 0.383304 0.725276
+-0.615692 0.453829 -0.114977 -0.671071 -0.182657 0.424096 -0.674289 0.608264
+0.979723 -0.14854 -0.526936 0.348416 0.337652 -0.370859 0.384555 -0.523567
+0.667058 0.647991 -0.525271 -0.387758 -0.997505 0.499909 -0.696958 0.0438556
+-0.344948 0.91037 0.310014 -0.786479 0.231515 0.83267 -0.800147 -0.71553
+-0.311102 0.290886 0.0941962 -0.146718 -0.0788699 -0.304247 -0.297134 0.312001
+-0.135024 0.333654 0.224173 -0.48049 -0.137087 -0.0851665 -0.063134 -0.370265
+-0.167541 -0.567091 0.269331 0.0842452 -0.0742686 -0.801058 0.0182561 0.770316
+0.200225 -0.824877 -0.118187 0.303305 -0.363584 -0.59466 -0.328064 0.986639
+0.69955 -0.446219 0.513832 0.940837 0.039409 -0.764758 0.553287 -0.114898
+-0.275923 0.57232 0.525424 -0.974437 -0.776375 -0.996626 0.546344 0.6603
+-0.180902 -0.369212 0.989044 -0.30809 0.993703 -0.994958 0.687437 0.594484
+-0.955314 0.653012 -0.542373 -0.863294 -0.150448 0.586242 -0.742387 -0.136533
+-0.53176 -0.0034602 0.610657 0.283423 -0.678439 0.273139 -0.92601 -0.637018
+-0.3506 -0.766942 -0.357359 0.427682 -0.384695 0.66865 -0.274092 0.396424
+0.578505 -0.835379 0.300984 -0.944219 -0.564666 0.350301 0.984021 0.404488
+0.742556 -0.570024 0.106047 -0.279436 -0.382923 0.356421 0.432863 0.884236
+0.863228 -0.120595 -0.202818 0.842471 -0.347364 -0.836418 -0.653095 -0.00384722
+0.141851 0.42798 0.159145 0.0873448 0.547416 0.637176 0.80213 -0.159199
+-0.998928 0.7877 0.806591 -0.583023 -0.64463 0.180916 -0.179182 -0.206517
+-0.491129 -0.338378 0.168081 0.174024 -0.933346 -0.267203 -0.658137 -0.782135
+-0.543445 -0.946734 -0.581929 0.997398 0.35883 -0.889394 0.744214 -0.841229
+0.241667 0.0268001 0.782658 0.848009 0.0369494 0.882349 -0.426744 -0.346987
+0.862106 0.252457 -0.439019 0.440632 -0.618553 -0.40721 -0.00100412 0.289788
+0.935614 -0.746169 0.116288 -0.0702415 -0.248752 -0.459585 0.888645 0.517373
+-0.0638119 0.421087 -0.43006 0.619832 0.532893 0.388006 -0.850096 -0.166677
+-0.0533826 0.0597424 0.284244 -0.392274 -0.48001 -0.860994 -0.575622 0.961669
+0.319127 0.431032 -0.353745 0.622434 -0.0175861 -0.160517 0.0479902 0.759641
+-0.279297 -0.372989 0.461996 0.361456 0.812175 0.364688 -0.938057 0.672262
+-0.998169 0.862792 0.365382 0.0944088 -0.00568185 -0.914102 0.345984 0.922671
+0.748825 0.0697302 -0.0838671 -0.512355 -0.645202 0.280872 0.542005 -0.512991
+0.717398 0.0148824 -0.756246 0.668985 0.551587 0.933034 -0.0302685 0.57869
+0.0135831 0.961429 0.798888 -0.490134 0.0788875 -0.732927 -0.847448 0.815737
+0.34141 -0.0631161 -0.610386 0.528839 0.516286 0.296187 -0.109325 -0.645514
+0.461527 -0.251398 0.378351 -0.447978 -0.621262 -0.677811 0.784492 0.100396
+0.888894 -0.654193 -0.827866 -0.352366 -0.554857 -0.865394 -0.0173624 0.1884
+-0.276482 0.225799 -0.379563 -0.868872 0.921386 -0.509194 0.249485 -0.194679
+-0.432662 0.0761289 0.0314111 0.924523 0.602866 -0.0592413 0.253429 0.323095
+-0.246217 0.69923 -0.936107 0.35813 0.0303942 -0.378067 0.259794 0.170069
+0.598878 -0.0956435 -0.419756 -0.812831 0.942492 0.000759372 -0.419882 0.194993
+-0.872005 -0.110201 -0.281762 -0.316407 0.281128 0.259073 0.985252 0.779942
+-0.551026 0.506062 0.621188 0.316797 0.787958 0.375718 -0.377522 -0.709219
+0.868502 -0.565741 -0.64381 -0.0949202 -0.800112 -0.187901 -0.36674 0.902865
+0.593779 0.306037 0.260546 -0.289094 0.387811 -0.854141 -0.298593 -0.746131
+-0.403865 -0.0599061 -0.175985 -0.103992 -0.182054 0.122747 -0.793396 -0.0752806
+0.118987 0.32932 -0.357681 -0.407338 0.293571 -0.838911 0.0936832 -0.127899
+-0.307963 0.573313 0.176062 -0.501988 0.131799 0.779664 0.27436 -0.846411
+-0.6298 -0.0892439 0.206789 0.536271 0.610512 -0.788464 -0.169622 -0.468959
+-0.566494 0.744672 0.283892 -0.00565353 -0.0362827 0.200455 -0.473492 -0.967341
+-0.0173342 0.768724 0.327515 0.0419136 -0.756228 -0.433718 0.21463 -0.682303
+-0.861236 0.970447 0.937002 -0.164183 0.292068 0.487319 0.381598 0.578987
+0.762385 0.942806 -0.360376 -0.532665 0.917836 -0.421796 0.054024 -0.521111
+0.961201 0.792211 0.548377 -0.50753 0.345851 0.113151 -0.148371 -0.467866
+0.475471 0.641824 0.515887 -0.549656 0.418083 -0.692525 0.797605 0.238006
+0.740897 -0.585185 0.771689 0.715425 -0.717804 0.1123 0.090004 0.645284
+-0.200492 0.439643 0.39152 -0.87713 -0.820466 -0.267014 0.858388 -0.684192
+-0.572121 -0.6481 -0.836354 -0.727361 -0.57808 0.0535239 -0.512827 -0.302114
+-0.885128 0.971046 -0.046249 0.744135 0.462079 0.737962 -0.00550365 -0.731318
+0.345713 -0.707811 0.669868 0.860885 0.316897 -0.38473 -0.850745 0.744343
+-0.826244 -0.907294 -0.632241 -0.0685697 -0.860307 0.191838 -0.8719 -0.244189
+-0.476754 0.6518 -0.0621155 -0.108737 0.45466 -0.326862 0.561656 0.614533
+-0.260912 0.0790318 -0.693098 0.686324 0.569608 0.504235 -0.92998 0.841807
+-0.505985 -0.00248717 -0.584705 -0.978566 0.523799 -0.994243 0.401884 -0.408141
+-0.461064 0.199489 0.664111 0.682063 0.828969 -0.566705 0.345817 -0.474344
+0.342875 0.792451 0.974492 0.00326968 -0.0979298 0.364309 0.952433 -0.350622
+0.246868 0.420798 -0.77104 -0.686994 0.046457 -0.646043 0.0945476 0.3939
+0.713466 -0.197333 -0.956722 -0.318996 0.0542445 0.966028 0.926643 0.927768
+-0.956614 -0.150579 -0.778315 0.27839 0.340588 0.456458 0.64809 -0.862655
+0.93772 -0.0823584 0.645405 0.152695 -0.0893484 0.079338 -0.181385 -0.149401
+0.880062 -0.899808 0.67678 0.983115 -0.793427 -0.0992431 0.10006 0.674211
+-0.25547 0.809335 0.773695 -0.0525009 0.155048 -0.397669 0.244787 0.163812
+0.0814183 0.733641 0.123502 -0.341607 -0.744109 0.549434 -0.581446 -0.534397
+-0.545486 -0.598795 0.742333 -0.932709 0.964186 -0.437112 0.429452 0.55377
+-0.804624 -0.964547 -0.410035 -0.0545865 -0.751108 -0.239502 -0.441446 -0.861369
+0.110917 0.669109 0.836676 0.518027 -0.853143 0.0849209 0.103102 -0.925186
+-0.300751 0.0979728 0.608553 -0.586374 0.868477 -0.0524241 -0.649287 -0.950954
+0.370902 -0.654803 0.0152561 -0.497862 -0.849674 -0.164914 0.850231 0.258313
+0.491816 0.823417 0.219459 0.00673006 0.104549 -0.348766 -0.24244 0.556283
+-0.522479 0.509741 0.156232 -0.54768 0.774396 0.179653 -0.588555 -0.916058
+0.0815185 -0.575153 0.252636 0.166534 0.617775 -0.304252 -0.507862 -0.450254
+0.227304 -0.494694 -0.534251 0.274714 -0.845407 -0.0655565 -0.435776 -0.567606
+-0.981232 0.550524 -0.538458 0.696908 -0.636625 0.653841 0.612047 -0.417008
+0.887174 -0.340062 -0.847439 0.774232 0.283741 -0.409639 -0.440044 -0.432796
+-0.975221 -0.967874 0.286576 0.162995 -0.27583 0.155831 0.869568 -0.153391
+-0.411653 0.267808 -0.587389 0.914526 0.34149 0.654458 -0.893734 -0.234464
+0.772245 0.271029 -0.202365 -0.860186 0.00942087 -0.40884 -0.723717 -0.864783
+0.276351 -0.529273 -0.494314 0.666065 -0.806368 0.220149 0.478168 0.0328102
+-0.250285 0.600581 0.614246 -0.681106 -0.843817 0.944788 0.518175 -0.141106
+0.213816 -0.191986 -0.00334154 -0.423007 0.040556 -0.66452 -0.204187 -0.234212
+-0.0915631 0.424535 0.287596 0.764726 0.266142 0.02135 -0.179428 0.445019
+-0.306792 -0.317645 0.798546 -0.481469 -0.437666 0.541224 0.742633 0.141972
+-0.259233 0.735648 0.18293 0.226327 0.815834 -0.169555 -0.891832 0.965041
+0.817583 -0.306246 -0.727388 0.836307 -0.0567295 -0.359821 -0.0623004 0.0146595
+-0.982549 0.470623 0.224901 0.320201 -0.422177 0.0846818 0.877561 -0.0348397
+-0.599939 0.32302 -0.696371 0.408123 -0.0737024 -0.637588 -0.98979 -0.996502
+-0.883334 0.19633 -0.89659 -0.215099 -0.550339 0.384832 -0.740544 -0.549133
+0.0599547 0.690338 -0.91832 0.938188 0.305775 0.0802236 -0.201966 0.478655
+0.550545 0.07251 0.719926 -0.048884 0.366542 -0.351833 -0.211951 0.613254
+-0.794952 0.048904 0.638651 -0.784534 0.130564 0.0426809 -0.580999 0.626428
+0.798411 0.505826 0.818592 -0.174041 0.38094 -0.272236 0.720355 0.709383
+0.857351 0.100727 -0.613272 -0.410095 0.567996 -0.00762872 0.926644 0.640707
+-0.0424957 -0.161533 0.81314 -0.246815 -0.130873 0.310154 0.402256 0.159093
+-0.389781 0.223039 -0.683524 -0.395225 -0.497549 0.791054 -0.751099 -0.724181
+-0.661612 0.891685 0.62511 -0.399175 -0.681625 0.613913 0.0347462 0.0741704
+0.92973 0.777514 0.523026 -0.188668 -0.518442 -0.154507 0.876129 -0.0304955
+0.359611 0.437814 0.215449 0.679015 -0.385793 0.244239 0.0285141 0.377071
+-0.0901188 0.861664 0.592853 -0.0103729 0.634642 0.0399738 0.375644 -0.942805
+-0.878677 -0.0977806 -0.581259 0.909113 -0.949485 0.539159 -0.269272 -0.644702
+0.396922 -0.901451 0.775878 0.743231 0.387978 0.902272 0.647426 0.204801
+-0.727022 0.221606 0.394251 0.138904 -0.0424268 0.910571 -0.508341 0.724071
+0.699054 -0.868596 0.542153 -0.840958 0.599846 -0.624429 -0.632413 -0.654074
+-0.665642 0.538683 -0.0799395 -0.896025 -0.706551 -0.786008 -0.672906 0.353977
+0.959652 -0.202836 -0.794991 -0.53457 0.781096 -0.101194 -0.171251 0.486897
+-0.859707 0.950463 -0.763817 -0.91514 -0.333851 0.936668 -0.216623 -0.0952078
+-0.894765 0.105362 -0.950423 0.562549 0.270471 -0.699869 0.315632 -0.91655
+0.882887 -0.00132108 0.980841 0.409653 -0.563253 0.885914 0.880727 0.964139
+0.823164 -0.920521 -0.649476 -0.626808 -0.285936 -0.248118 -0.361665 0.420277
+0.19636 0.0985554 0.150611 0.517697 -0.304759 0.122974 0.815924 -0.685767
+0.451288 0.321481 0.130937 0.116384 0.121141 -0.86833 0.639199 0.260986
+0.864675 0.681775 -0.218958 -0.769449 -0.677597 -0.971851 0.0532934 0.221523
+0.533964 0.15659 0.28682 -0.818857 -0.201443 -0.649906 0.542813 -0.00959073
+0.817783 0.165464 0.103392 -0.716906 0.962953 -0.202037 -0.0759537 0.186108
+0.562349 0.0929924 -0.666527 0.447057 -0.733005 -0.0808003 0.938691 0.94022
+0.377163 0.794003 0.878441 -0.585736 -0.216602 0.317632 -0.368325 0.960691
+0.35932 0.217905 -0.66962 0.757986 -0.0605952 0.369402 0.349153 0.375401
+0.128361 -0.759455 -0.454601 0.231159 0.182047 0.626316 -0.2662 0.970907
+0.417101 0.00294624 -0.31508 -0.81961 -0.645843 0.760031 -0.700553 -0.275863
+-0.643067 0.412063 0.268319 -0.878727 0.847759 -0.53539 -0.0379323 -0.756312
+0.31784 -0.727992 0.910541 0.947458 -0.616752 0.155985 -0.757064 0.0402706
+0.29477 0.486366 -0.195294 -0.44712 -0.730204 -0.224981 -0.573309 0.365301
+-0.640745 0.15997 -0.675915 -0.983852 0.582019 0.769503 -0.534825 0.822197
+0.730151 -0.652336 0.771257 -0.715613 -0.529114 -0.349577 0.334493 0.516408
+0.648553 0.539158 0.357103 -0.0156328 -0.427603 -0.911554 0.407488 0.392862
+0.879597 -0.0713534 -0.370896 0.695681 0.629233 -0.630578 -0.522855 0.574893
+0.84401 0.66487 -0.815655 -0.919033 0.258513 -0.873484 0.752816 -0.409359
+-0.62824 0.90338 0.339717 -0.61761 0.708712 0.962615 0.832122 0.00398013
+-0.885082 0.586661 -0.607857 0.0706468 0.343362 0.236728 -0.269383 -0.238784
+0.820654 0.911229 0.255108 -0.290276 0.363748 0.739205 0.626344 -0.791513
+0.157016 0.378835 0.249012 0.831632 -0.408016 0.483629 0.405754 0.547478
+0.015345 -0.932139 0.660487 0.521992 0.603381 0.245233 -0.274024 -0.335447
+0.887678 0.491729 -0.737601 -0.187352 -0.994706 0.889207 0.187995 -0.183223
+0.565283 0.82096 -0.138177 -0.527245 -0.400863 0.554744 0.761942 -0.335533
+0.309582 0.00424392 0.218933 0.0392123 0.274676 0.806379 -0.305205 0.0880121
+-0.676519 0.820172 0.265933 -0.807138 -0.155751 -0.939377 -0.649055 -0.562359
+-0.0252011 -0.727199 0.342119 -0.622712 -0.692151 -0.535785 0.0109545 -0.354449
+0.594403 -0.620663 -0.501857 -0.531579 -0.286862 -0.493018 0.931711 0.897296
+-0.188629 0.836926 0.816477 -0.514478 0.70182 -0.150489 -0.656092 -0.223061
+-0.637774 0.922224 -0.366716 -0.853182 -0.165967 -0.47444 -0.15255 0.237983
+-0.959962 0.731896 0.677249 -0.947991 0.0474711 -0.464246 0.180211 0.4343
+0.471294 0.390443 0.688116 -0.0258603 0.253201 -0.524004 0.00343533 -0.197581
+0.498937 -0.79427 -0.387358 -0.200615 -0.781537 0.0654888 -0.0235635 0.910196
+-0.654484 0.841849 0.349937 0.278838 0.641925 0.914998 -0.901531 0.22933
+-0.283348 0.922009 -0.824676 -0.71865 -0.791757 -0.625036 -0.321023 0.854829
+0.0107176 -0.664931 0.239071 0.40789 -0.654548 -0.848005 -0.750935 -0.713981
+0.506206 0.495062 -0.304657 -0.643287 0.723505 0.241457 0.119593 0.371297
+0.180474 0.468024 0.988186 -0.48715 -0.991846 0.244942 0.0528599 0.0637469
+0.833889 -0.11873 -0.17861 -0.189427 -0.298778 0.55161 0.243032 0.545208
+0.722107 -0.0935925 0.516911 -0.487714 -0.745494 -0.379238 0.257987 -0.666524
+0.497401 0.842661 0.209398 0.760874 -0.923557 0.1712 0.0554442 0.195015
+-0.936423 -0.663775 -0.104996 0.00741343 -0.744289 -0.617282 0.594674 0.979071
+0.208138 0.782254 -0.158247 0.222795 0.579382 0.147957 -0.114167 0.960539
+-0.923005 -0.898775 -0.0621371 0.552772 -0.858906 -0.068227 0.865541 0.5706
+0.781961 0.640867 -0.809071 0.136981 -0.356763 -0.0792435 0.297144 -0.538134
+-0.221544 -0.354654 0.4786 0.333252 -0.174252 -0.244583 0.869017 -0.0716268
+0.848776 0.283365 0.868168 0.0538657 -0.532768 0.579825 -0.506475 0.345407
+-0.652467 0.0745767 -0.161587 0.0106741 -0.00559021 0.74463 0.533452 -0.450377
+-0.541299 -0.547479 0.713555 -0.706911 0.158814 -0.232027 -0.642914 -0.11275
+-0.345691 -0.477523 0.309209 -0.576494 -0.709177 0.254141 0.88782 -0.0494284
+0.00376162 0.476296 0.324455 -0.0231295 0.75273 -0.678247 -0.766696 0.992602
+-0.392655 0.221898 -0.996051 0.643405 -0.289373 0.555213 -0.966631 0.388454
+0.399735 -0.0782908 0.282509 0.809283 0.0621044 0.686929 -0.287878 0.146168
+0.468366 -0.599108 0.491734 0.415345 -0.597701 -0.188818 -0.321578 0.439873
+0.933667 0.912003 -0.689847 0.776399 0.132141 -0.0142812 0.841542 0.904968
+0.932671 -0.205578 0.107385 0.059832 0.510427 -0.0480776 -0.67251 0.621484
+-0.100876 0.549002 0.634983 -0.119785 -0.446428 -0.391563 0.403919 0.590761
+-0.0603544 0.45941 0.25589 0.579738 -0.983069 -0.459147 -0.0990035 0.0473122
+0.954596 0.633348 0.609027 -0.12728 -0.442261 -0.953808 -0.452732 0.578247
+0.0964376 0.993204 0.940248 0.510918 0.32833 -0.98558 -0.614856 -0.511803
+0.761979 -0.582177 0.478123 0.168238 0.191916 -0.600198 -0.60908 0.438701
+0.779942 0.212245 -0.551264 0.909407 0.112989 0.237651 0.659996 -0.871192
+0.0781793 0.62752 -0.608189 0.948704 -0.494867 0.79049 0.940317 -0.817677
+-0.87335 0.831035 0.457211 0.991613 -0.673819 0.715329 -0.923197 0.650651
+0.505027 0.455998 0.244774 0.620398 0.896838 -0.0624675 -0.294483 -0.714691
+-0.807255 -0.184722 -0.606469 0.0510232 0.179566 -0.0579363 -0.174412 -0.863459
+0.710181 -0.587959 -0.998859 -0.779537 0.221212 -0.918746 -0.626431 0.0818739
+-0.881738 -0.0697553 0.506168 -0.434019 -0.935939 -0.120315 0.219988 -0.846367
+0.375305 -0.854521 0.182392 -0.314735 0.30013 -0.474127 -0.841578 -0.627124
+0.52294 0.382034 0.54439 0.0941296 -0.679883 -0.380568 0.572685 0.711513
+-0.316525 0.277625 0.983235 0.518219 0.241373 0.743714 0.0649138 -0.20638
+0.693347 0.403006 -0.464385 -0.823494 -0.321207 0.918251 0.647452 -0.502137
+0.441142 0.647581 0.632004 0.487662 0.731203 0.863621 0.463359 0.786659
+0.384 -0.0455528 0.481857 0.413089 -0.458782 -0.667023 0.522426 0.29537
+-0.82415 -0.550388 -0.255981 -0.735899 -0.380215 -0.627895 -0.234079 0.944972
+0.893836 0.735363 -0.769291 0.944714 0.285597 -0.0938004 -0.123621 0.755603
+-0.888358 0.278655 0.92245 -0.598397 -0.230367 0.748407 0.520847 0.348698
+-0.896829 -0.145125 0.962619 -0.92495 0.451189 -0.261137 -0.286005 -0.679152
+-0.539385 0.775541 -0.0944589 0.367213 0.542262 -0.346505 -0.532552 0.139301
+0.977876 0.734137 0.408733 0.485077 0.972942 -0.759233 0.735209 -0.552718
+-0.943534 0.544304 0.0340769 0.887574 0.901972 -0.674539 0.0974603 0.926637
+-0.330129 -0.703179 -0.577478 0.0477279 0.188415 0.855658 0.152493 -0.0639507
+-0.232286 0.224599 -0.370838 -0.712825 0.675681 0.00981678 0.389022 0.0244613
+-0.399395 0.894336 0.551905 0.89118 -0.444561 0.764462 -0.303071 0.141737
+0.786329 0.673323 0.477762 -0.167822 0.71861 0.664168 -0.268925 0.0828351
+0.863814 -0.929986 -0.434447 0.898087 -0.0612498 0.757239 -0.258106 -0.0494983
+0.392358 0.420596 0.134843 -0.944536 -0.672695 -0.387 -0.65693 0.562342
+0.881747 -0.842434 -0.0466943 -0.516486 -0.14465 -0.743237 0.874053 -0.0565631
+0.0330436 -0.311132 -0.173063 0.210661 -0.25813 0.318614 0.198463 -0.630609
+-0.166034 -0.966343 0.488652 -0.836782 0.809192 -0.263693 0.743423 -0.139854
+-0.448914 0.728159 -0.371649 0.183715 -0.382062 -0.611343 0.360754 -0.750939
+0.725689 -0.275327 0.566848 -0.258814 -0.89277 -0.198909 0.874353 -0.27228
+0.25559 -0.404302 -0.887753 0.832919 -0.60103 -0.480956 0.772441 0.973311
+0.814496 0.535915 0.530017 -0.528991 -0.287927 0.471753 0.607369 -0.930765
+0.255896 0.792492 -0.72809 -0.515453 -0.327744 -0.130237 -0.962123 -0.945513
+-0.791085 -0.155853 -0.759945 0.17272 0.012639 0.71853 -0.295496 -0.962142
+-0.738404 -0.942573 0.219774 -0.242158 -0.79843 0.567457 -0.269836 0.573959
+0.999862 -0.292232 0.296913 0.154585 -0.0319392 -0.101248 -0.0284865 0.566198
+-0.270317 0.0990491 0.800965 -0.972202 -0.758828 -0.524636 -0.795831 0.0511171
+0.74104 0.756612 -0.777225 0.890035 -0.0559034 -0.177004 0.0648665 0.159184
+0.722954 -0.44605 -0.930824 -0.892966 0.94335 -0.801206 -0.183307 0.882795
+0.071331 0.312503 -0.0158416 -0.384237 0.11333 0.190089 -0.532708 0.89314
+0.560323 0.165608 -0.487801 0.839083 0.777147 0.619958 -0.326733 -0.48473
+-0.959508 0.596919 -0.347908 -0.28008 0.708603 -0.00157721 0.895788 -0.556427
+-0.330629 0.710724 -0.820599 0.278355 -0.190401 0.0906331 0.498114 -0.751765
+-0.333808 0.420045 -0.497672 0.946621 0.0894518 -0.432735 -0.813018 0.373842
+0.426476 -0.225521 0.45047 0.819105 0.865342 -0.921414 -0.725207 -0.425674
+-0.281437 0.995249 -0.529129 -0.677178 -0.601884 0.0964011 0.361923 -0.301413
+-0.664911 0.927445 0.739841 -0.37735 -0.0321333 -0.925231 0.257107 0.0908388
+-0.176315 -0.843917 0.273098 0.716013 0.123057 0.70907 -0.217759 -0.686514
+0.733115 -0.0402991 0.0794695 0.546967 0.874903 0.170671 0.692598 0.649382
+0.116708 0.113768 0.641518 0.0478678 -0.137072 -0.241049 0.762593 0.292057
+-0.490503 -0.604258 0.0301591 -0.551319 0.302458 0.900232 0.561375 0.133538
+0.768615 0.121881 -0.720506 0.681753 -0.984649 -0.0141507 -0.930949 0.0295205
+-0.042986 -0.762953 -0.0271066 -0.0377672 0.199279 0.867505 0.494154 -0.93018
+0.990379 -0.300296 -0.549796 0.408229 -0.861129 -0.196474 0.457403 0.546383
+-0.390446 0.157214 -0.0581865 0.846007 -0.152204 0.591226 -0.703394 0.535103
+-0.332402 -0.532502 0.315163 0.111102 0.822611 0.735132 0.962867 0.336456
+0.808038 0.369777 0.0355726 -0.328323 0.362608 -0.635222 -0.31314 -0.477716
+0.810855 -0.941815 0.240262 0.999463 0.299438 -0.182634 0.168391 -0.956243
+-0.410342 -0.887757 -0.825826 0.476632 -0.633834 0.967322 0.287407 -0.803921
+-0.727006 -0.72843 0.216492 -0.807746 0.965501 0.845416 -0.179987 0.172446
+0.496043 0.741301 -0.192255 0.0823884 0.260061 0.376388 0.895602 -0.492551
+-0.67124 0.524929 0.424585 -0.588839 -0.918418 0.833771 -0.666691 -0.395147
+0.70891 -0.546548 -0.494552 0.765338 0.351682 0.208478 0.309074 -0.783014
+-0.414118 0.216203 0.311043 -0.769911 0.25044 -0.914296 0.505495 -0.862396
+-0.661161 0.318837 -0.323545 -0.749562 0.238528 -0.864356 0.0969031 0.343573
+0.910163 -0.0435227 -0.306567 -0.91579 0.758843 -0.735411 -0.657015 0.067253
+0.0824448 -0.143139 0.000233853 -0.669545 0.979572 -0.171555 -0.00872194 -0.281785
+0.553714 -0.0448039 -0.297894 -0.269935 0.0816493 -0.817265 -0.25409 0.816555
+-0.910175 0.453318 0.0867426 0.65485 0.408334 -0.109336 0.461691 0.673779
+-0.53455 0.371076 -0.413704 -0.303239 -0.20085 0.627329 -0.142815 -0.277738
+-0.376888 -0.239065 0.720016 0.992076 -0.966696 -0.850758 -0.604795 0.39294
+-0.268847 0.142458 -0.491271 -0.25731 0.839292 -0.403519 0.276029 0.275732
+-0.272131 -0.649085 -0.397107 -0.473747 0.19504 -0.315186 -0.332551 0.953764
+0.829421 -0.277897 0.291972 -0.431647 0.319913 0.532588 -0.648084 0.792957
+0.32397 0.325757 -0.530295 0.875518 0.530823 -0.369587 0.977863 -0.806537
+0.5498 -0.512532 0.631372 -0.219018 -0.309337 -0.791233 0.126655 -0.668416
+-0.907103 -0.593879 -0.258768 -0.929844 0.31005 0.643959 0.199629 0.539163
+-0.157051 -0.0516952 -0.924173 -0.313176 -0.951263 0.925897 -0.487796 0.898177
+-0.856732 -0.994336 0.980966 -0.988833 0.120569 0.071028 -0.546373 0.314786
+0.445977 -0.957414 0.668461 -0.363623 -0.943982 0.283875 0.509337 0.141872
+-0.638478 0.152685 -0.0681733 0.038048 -0.773979 0.927497 0.659393 0.135351
+-0.940054 0.211372 0.528711 -0.50352 0.805783 -0.510394 -0.569456 -0.694606
+0.0995063 -0.891677 0.57187 -0.0835409 0.565456 -0.58246 0.992037 0.395467
+0.275065 0.529805 -0.155233 0.176407 -0.0336307 0.896007 -0.9481 -0.81459
+-0.237838 -0.994235 -0.109618 0.173412 -0.748352 -0.882013 0.387504 0.673715
+0.822711 0.0505035 -0.110435 -0.783284 0.166197 0.0547938 0.927833 0.147362
+-0.657396 0.340709 0.40621 0.679443 -0.0472974 0.883564 0.82865 0.495513
+-0.0387411 0.711403 0.235356 0.777087 0.303619 0.594127 0.0310233 -0.757835
+-0.109776 -0.193426 -0.497913 0.853871 0.123684 0.176588 0.0694529 -0.201389
+-0.0402764 0.83056 0.175167 -0.107285 -0.739853 -0.232708 0.541223 0.677185
+0.501453 0.569484 -0.510039 -0.34945 0.0179517 0.943833 -0.158113 -0.919172
+-0.493293 -0.971963 -0.212403 -0.643734 0.443588 -0.641623 -0.211297 -0.466253
+-0.0285846 0.0773716 0.0650886 0.980142 -0.458166 0.0895902 0.789982 0.714124
+0.255996 -0.769745 -0.0267572 -0.166986 -0.530757 -0.915754 0.720455 -0.116985
+0.782805 -0.949967 -0.99872 0.61993 0.255601 0.802841 0.552145 0.315338
+0.084646 0.0161256 -0.0109366 0.443328 0.748397 0.30841 -0.415378 0.618193
+-0.507773 0.272894 0.858081 0.257301 -0.119435 -0.306529 -0.497836 0.704057
+0.661695 0.386045 0.397397 -0.532988 0.505115 0.188356 0.425434 -0.406217
+-0.0724046 -0.0522931 0.618651 -0.746365 0.585327 -0.164312 0.388168 -0.829286
+0.327152 -0.611959 -0.104688 -0.439687 -0.989773 0.593231 -0.359783 -0.100241
+0.395388 0.228014 -0.361063 -0.592886 0.237209 -0.85933 -0.952566 -0.567496
+-0.425794 0.707947 -0.217454 -0.948841 -0.951188 0.427717 0.649977 0.451391
+-0.0809486 0.762827 -0.208069 0.761946 0.195246 0.330323 -0.712674 0.385718
+-0.713438 -0.0104818 0.373325 -0.158264 -0.558272 -0.935253 -0.180376 0.257992
+0.963579 -0.467634 -0.991456 0.73661 0.420621 0.611541 0.129878 -0.139247
+0.121076 -0.232961 -0.685685 0.175954 0.636974 0.106251 0.771119 -0.486818
+0.0236844 0.845598 0.0274395 0.794204 -0.937526 0.593828 -0.677017 -0.46641
+-0.0135729 -0.615094 -0.398661 -0.833819 -0.523664 -0.0747468 0.2075 0.892752
+-0.846625 -0.545092 -0.043494 0.667598 -0.934632 -0.468268 -0.682847 0.355478
+0.137197 -0.336166 -0.205873 0.956068 -0.551939 -0.292111 0.62029 -0.690471
+-0.0719763 0.243208 0.906418 -0.861834 0.826217 -0.213284 0.0212987 -0.233671
+0.0813541 0.170654 0.403923 -0.187356 -0.816106 -0.151359 0.105874 -0.401042
+0.839184 0.347649 -0.0576062 0.760529 0.391581 0.9243 -0.352764 0.961582
+0.502812 0.134488 0.341987 0.788667 0.503163 0.692971 -0.780474 0.0476577
+0.0412754 -0.350309 0.454983 0.312676 0.135271 -0.523718 -0.418448 -0.362349
+-0.197467 -0.358567 -0.105724 -0.338137 0.461614 -0.0580483 0.303333 -0.0102347
+0.219552 0.908984 0.285955 -0.793621 0.608321 -0.35922 -0.554176 -0.939427
+0.549849 0.31185 0.952824 -0.612367 -0.0122756 -0.859247 -0.707739 0.599578
+0.755847 -0.487411 -0.746853 -0.356608 -0.491911 0.465175 -0.783563 0.508618
+0.747822 0.40923 -0.84765 0.00950605 -0.459484 0.215416 0.843092 -0.900749
+-0.332525 -0.528359 -0.896191 0.602761 -0.0746646 -0.976921 0.10818 -0.704926
+-0.476777 -0.739367 0.915101 0.256158 0.407109 0.512779 0.016504 -0.390586
+0.481183 -0.791426 -0.862797 -0.457648 0.183429 -0.921095 -0.586662 0.357809
+0.778921 0.753544 0.436628 0.964292 0.391287 -0.9507 0.180487 0.87763
+-0.915636 -0.357254 -0.0276632 0.0985259 0.365129 0.632246 0.0456464 0.826809
+0.162956 -0.551402 -0.100095 0.375576 0.929266 -0.768643 0.453956 -0.558734
+0.387555 0.00583336 0.0956637 0.150533 0.535709 0.224147 0.459317 -0.328455
+-0.302872 0.997435 0.693767 -0.580299 -0.923281 0.38768 0.910991 -0.944723
+0.263872 -0.00554942 0.922022 0.966055 -0.916112 0.953158 -0.0659692 0.67065
+0.771442 0.564864 -0.0156295 0.887604 0.702961 -0.705951 -0.818255 -0.528323
+-0.310714 -0.288474 -0.58712 0.717359 0.159609 0.551893 0.975287 0.827947
+0.65936 0.82215 0.939652 0.648182 0.252733 -0.17138 0.522031 -0.4215
+-0.706526 0.1775 -0.273366 -0.687876 0.854777 0.63618 0.398037 0.020683
+0.753955 0.0357367 0.332278 0.184082 -0.120687 -0.0202955 -0.494045 0.0165401
+0.563232 -0.762517 -0.758065 0.385607 0.0584629 0.0359835 0.564418 0.658008
+-0.814176 0.193863 0.340561 -0.467972 0.730094 -0.590777 0.266266 0.898681
+0.42032 -0.158488 0.0773322 0.629157 0.148051 0.788621 -0.0995409 -0.51202
+0.551366 -0.174213 0.211137 0.44097 0.627692 0.487515 -0.110838 -0.259599
+0.660744 0.808913 0.431178 -0.743901 -0.70084 -0.614744 0.873532 0.947402
+0.657012 0.677467 -0.88745 -0.848636 0.488145 -0.70814 0.21825 0.146662
+-0.640812 0.575023 0.305682 -0.321175 -0.789839 0.669056 -0.265304 -0.460024
+0.0602146 0.623089 -0.118032 -0.258082 0.32257 -0.434977 -0.706771 -0.730281
+0.785421 0.949763 0.00173022 0.307924 0.913622 0.945387 -0.192498 -0.78929
+0.0812777 -0.1087 -0.902461 -0.439343 -0.0509033 0.493594 -0.91322 -0.911076
+0.664665 -0.345977 -0.122002 -0.148442 0.995442 0.948341 -0.474989 0.717596
+0.560131 0.514181 -0.436591 -0.0717882 0.487307 -0.670861 -0.0540871 0.73297
+-0.345602 0.578287 0.131515 -0.470945 0.13739 -0.263547 -0.158584 0.305424
+-0.484451 -0.718533 -0.885015 -0.280674 -0.918536 0.212214 -0.176913 0.517279
+0.988947 -0.76769 -0.749337 0.300556 -0.37006 0.164866 0.228126 -0.759785
+-0.174493 -0.924436 -0.506373 0.482527 -0.956326 0.165372 0.633601 0.177169
+-0.517201 0.00372408 0.415542 -0.350327 0.222067 0.225172 0.815001 -0.0865672
+0.197375 0.222817 -0.747992 -0.503789 0.468773 -0.439407 0.033173 -0.129953
+0.827224 -0.466374 -0.495222 -0.0898777 -0.680222 -0.585435 0.916833 0.0594001
+0.959447 -0.380616 0.975301 -0.367369 0.40445 -0.823556 0.0115204 0.84144
+-0.472505 0.360614 0.206951 -0.583504 -0.625714 -0.748102 0.330881 -0.562482
+-0.990271 -0.739283 -0.191383 -0.00171732 0.546829 0.295452 0.0531057 -0.383237
+-0.72186 -0.835512 -0.705172 0.381392 -0.606595 0.77036 0.123339 -0.249107
+0.888597 0.00179132 -0.78501 0.794097 -0.651798 -0.813885 0.78348 0.297299
+0.81999 0.15467 -0.14832 -0.458069 -0.404541 0.832797 -0.630262 0.480856
+0.314595 0.0334145 -0.135598 -0.202529 0.999964 -0.198896 -0.246905 -0.513281
+-0.884823 0.558152 0.314944 0.438152 0.426111 0.895771 0.404761 -0.743871
+-0.0142195 0.576544 0.263497 0.550393 -0.177705 -0.0444126 -0.493675 0.149114
+0.788509 -0.967804 0.0512684 -0.000240066 0.968937 0.177356 0.894977 -0.0332478
+0.920454 -0.684096 -0.00578537 0.343446 0.376961 -0.825182 0.973292 0.59011
+-0.815357 0.00406678 0.781357 -0.772359 0.270754 0.888258 0.359646 0.399655
+-0.113866 -0.884301 -0.958318 -0.32709 0.840044 -0.628694 0.628969 -0.204064
+-0.438121 -0.670837 0.590836 -0.805603 -0.007223 0.575179 -0.82525 0.826362
+-0.547629 -0.954535 -0.644461 -0.955827 -0.766725 -0.351031 0.903685 -0.599275
+0.854089 -0.314952 0.0995219 0.0699437 -0.669311 0.942229 0.149795 0.537265
+0.309702 -0.824829 -0.548082 0.206617 -0.725008 0.180603 0.580146 0.615781
+-0.854342 0.479803 -0.9838 -0.099605 -0.763394 0.237341 0.934116 -0.420095
+0.115805 -0.208419 -0.087311 0.129972 -0.563641 -0.421101 -0.970127 0.137739
+0.44262 -0.177393 0.167527 -0.692812 0.599586 -0.743865 -0.772632 -0.176744
+-0.549924 -0.368415 0.30554 0.353603 -0.123664 -0.352592 0.847888 0.423067
+-0.413168 -0.0570652 0.847956 -0.918095 -0.741655 0.462271 -0.679351 -0.111826
+0.287593 0.46235 -0.579968 0.335121 0.6549 0.460653 -0.167511 0.622548
+-0.672489 0.443283 -0.203378 -0.216303 0.0656424 0.964999 0.400008 0.477621
+0.207475 -0.961349 -0.262596 -0.731828 -0.506035 -0.999647 0.751166 -0.764657
+0.467351 -0.367681 -0.953751 0.359332 0.754394 -0.999689 -0.531382 -0.871787
+0.250477 -0.796916 0.423656 0.909619 0.553729 -0.122082 0.977349 -0.467007
+0.520121 0.95428 -0.410991 -0.409846 0.546661 0.840189 -0.915785 0.98718
+-0.18025 -0.607312 0.0637037 0.37189 -0.847285 -0.180727 0.508935 -0.30391
+0.643897 0.352201 -0.662156 -0.883445 -0.235406 0.303709 -0.568661 -0.853786
+0.555629 -0.404865 -0.93202 0.41341 -0.61751 -0.304193 0.857318 0.10947
+0.712673 -0.808243 -0.0434287 0.0282617 0.200517 -0.420758 -0.663233 -0.804838
+-0.477177 0.173882 -0.980349 -0.973668 0.196806 -0.165048 0.889967 -0.527342
+-0.189642 0.0841829 -0.158568 0.690367 -0.68358 0.333694 0.835314 -0.687871
+-0.711753 -0.443409 0.998708 0.174378 0.91963 -0.664183 -0.811339 -0.656113
+0.0287801 0.0142831 0.551603 0.962091 -0.00350028 -0.531681 0.525424 0.25806
+-0.458069 0.485684 -0.0619558 0.833071 0.0482247 0.535973 -0.236037 0.867441
+-0.023838 -0.0643108 -0.996132 -0.567693 0.440262 -0.103496 -0.527486 0.464781
+-0.698311 -0.296613 0.0111023 -0.488601 -0.659732 -0.738163 -0.963845 0.230247
+-0.908222 -0.299702 -0.642994 -0.55212 0.260429 -0.226378 0.913648 -0.365756
+0.437429 0.162903 -0.195237 0.531475 0.091433 0.282727 0.203729 0.00381281
+0.0990043 0.819328 -0.611776 0.123238 0.6737 0.398916 -0.234533 -0.337256
+0.814935 -0.153293 -0.76881 0.169639 -0.338824 -0.85024 -0.273738 -0.613287
+-0.210824 -0.627221 -0.541288 -0.0872546 0.389206 0.701921 -0.782778 0.79226
+-0.909832 -0.215319 0.660727 0.775423 -0.372287 0.624207 -0.637745 0.932302
+0.842689 -0.874822 0.0611899 0.730969 -0.580852 -0.337593 0.67403 -0.244609
+0.22271 0.545747 -0.321391 0.866144 -0.615409 -0.860523 -0.670567 -0.749662
+-0.726717 0.681525 -0.87862 -0.620928 -0.606091 0.0870114 0.752608 0.857461
+-0.0590785 0.818145 -0.332715 0.360067 0.841109 0.216229 0.0631998 -0.885411
+0.955158 -0.937858 0.360506 -0.519713 -0.420515 -0.412394 0.668483 0.306322
+0.00551993 -0.873231 0.567241 -0.0486603 0.887307 0.0875648 0.479888 -0.155571
+0.904497 -0.342693 0.382679 -0.19778 0.53716 0.508197 -0.269558 -0.792825
+0.52473 -0.304597 -0.224985 0.751555 0.353214 -0.999656 0.783507 0.413489
+0.80228 0.66089 -0.584213 -0.968646 0.498895 0.162749 -0.338572 0.816104
+-0.557026 0.883686 0.343095 0.334774 0.344759 0.755417 0.136652 -0.945347
+-0.416951 -0.878276 -0.971276 -0.830583 0.798158 -0.499066 0.237057 0.266891
+-0.760204 0.386817 0.558751 0.27612 -0.285203 -0.0346366 -0.97617 0.0346681
+-0.146884 0.400747 -0.0775784 0.900523 0.017959 0.649192 -0.478388 0.674617
+0.74203 0.950873 0.685794 -0.64869 0.540257 0.513511 0.138377 0.322264
+-0.727548 0.706718 -0.000295323 0.629921 0.396159 -0.73155 -0.172958 0.0498129
+-0.878049 -0.118984 -0.213529 0.759694 0.833882 0.731587 0.97162 -0.613445
+-0.491061 0.196977 0.356361 -0.742985 -0.945365 0.274974 -0.489835 0.625618
+-0.630478 -0.36574 0.463239 -0.116383 0.783928 0.979597 -0.947382 0.560773
+-0.33433 0.104791 0.744223 -0.622755 0.0544037 0.687749 -0.376238 -0.977356
+0.530733 -0.95224 -0.583356 -0.262283 -0.837691 -0.114288 -0.498621 0.398882
+-0.85912 0.775853 0.96867 0.873247 -0.597385 -0.258265 -0.469445 -0.541538
+-0.657603 0.994144 -0.518487 0.717148 0.357168 0.781278 0.366237 -0.91158
+0.66088 0.979942 -0.0887133 -0.708632 0.394368 0.691787 -0.0560976 0.0170481
+0.421953 0.0205685 -0.456769 0.384411 -0.558128 -0.0706432 -0.337617 0.425415
+0.825493 -0.570805 -0.197645 0.826435 -0.975019 0.0510593 0.31627 -0.0646259
+-0.341256 -0.966377 -0.388371 -0.530386 -0.940404 -0.291 0.621017 0.938019
+0.207462 -0.835385 -0.933832 0.802338 0.576419 0.876296 -0.0189136 -0.62584
+0.566295 -0.204288 0.381545 -0.957756 0.229146 0.911575 -0.273125 -0.86176
+-0.159784 0.118258 -0.0928733 0.908685 -0.75321 0.17539 0.9311 0.919689
+-0.895679 -0.869722 -0.305613 0.978413 -0.260642 -0.22097 0.0108463 0.464738
+-0.921535 0.531013 -0.89864 -0.181785 -0.987569 -0.301404 -0.462394 0.0737861
+0.275929 -0.76026 0.881128 -0.806603 -0.375909 -0.117435 -0.324399 0.734031
+0.199174 0.951772 -0.786122 -0.469441 -0.660992 -0.839116 0.227365 -0.330594
+0.490465 -0.898334 0.179136 -0.984101 0.140673 0.909234 0.331808 0.915265
+0.0119734 0.416263 0.976076 0.496574 0.495028 0.0999223 0.712925 -0.870446
+0.00638765 0.296281 0.926079 -0.487033 0.584958 -0.50556 -0.439026 0.833546
+0.630958 -0.596538 0.605977 0.0390853 0.720553 0.89873 -0.543126 -0.975361
+-0.748472 0.0475716 -0.529878 -0.430742 -0.397697 -0.0979335 -0.674655 0.399633
+-0.48724 0.549792 0.658135 -0.309457 -0.883989 -0.732573 0.226791 0.930981
+0.332137 0.11424 -0.839425 -0.51136 -0.177398 0.102265 0.13192 -0.0157651
+-0.0631248 -0.227487 0.380461 -0.0747341 -0.61549 -0.529484 0.299037 0.690554
+-0.682568 0.532712 -0.0527239 -0.420051 0.867505 -0.599011 -0.0133785 -0.554751
+-0.859661 -0.463941 0.418014 -0.706624 0.611324 -0.157146 -0.279821 0.827332
+0.409209 -0.439493 0.0758388 -0.201192 -0.989339 -0.671252 0.649598 -0.763886
+-0.914459 -0.531413 0.484629 -0.590613 0.333156 -0.369144 -0.667669 0.831709
+-0.0354539 -0.354733 -0.36816 -0.664978 -0.657856 0.397374 0.136192 0.849048
+-0.187504 0.806837 -0.606356 0.617539 -0.66631 0.475744 -0.214508 0.0036764
+0.217461 0.652098 0.448925 -0.427721 0.0810363 0.467725 -0.360456 -0.857412
+-0.574992 -0.526611 -0.635704 -0.546381 -0.0412227 -0.340441 0.649255 -0.361588
+-0.674937 0.380113 -0.0846294 -0.94479 0.798474 0.402347 0.19684 0.536886
+-0.675463 -0.145289 -0.374791 0.953359 0.81581 0.498523 0.309522 0.0254998
+0.959249 0.559139 0.0918515 -0.367284 -0.10403 -0.586723 0.628689 -0.179668
+-0.513358 -0.496821 -0.293347 -0.909988 -0.880276 -0.776228 -0.615681 0.497814
+-0.319152 0.116039 0.912388 -0.241796 -0.301361 -0.514832 -0.856162 -0.247559
+-0.925836 -0.392175 0.176942 0.595711 -0.172777 -0.787395 0.183967 0.739094
+0.0525105 -0.0792188 0.350732 0.3928 -0.712205 0.207856 -0.768793 0.254312
+-0.141179 -0.219261 -0.260389 -0.16628 0.726619 0.475262 0.264393 -0.873328
+-0.850199 -0.00897556 -0.188208 -0.269785 0.461309 0.815468 0.420283 -0.807427
+-0.203922 0.784878 -0.0223819 0.962732 0.933451 0.441232 -0.0194445 -0.0915435
+-0.305227 -0.065699 0.800444 0.588996 -0.981894 -0.325637 -0.900863 0.437637
+-0.932576 -0.402177 -0.17346 0.634145 -0.0238627 0.963023 -0.697048 -0.351221
+-0.287877 -0.79217 0.760758 0.751295 0.660071 0.252603 -0.976328 -0.0297105
+-0.0206815 0.53749 -0.924362 0.92181 -0.442592 -0.605057 -0.450468 0.572781
+0.872323 -0.262186 -0.471666 -0.801154 -0.109649 0.101526 0.593327 -0.357968
+-0.426648 -0.874541 0.306597 -0.978336 0.149578 -0.158159 -0.398312 0.0457713
+-0.835031 0.381016 0.301201 0.472713 -0.147695 0.233435 0.72058 -0.178571
+0.38076 -0.0232382 -0.0441087 0.293799 -0.503988 0.688588 -0.275395 -0.476685
+0.529689 -0.941966 -0.669545 0.614952 0.318608 0.0132478 0.140862 -0.212678
+-0.423667 -0.677594 0.59492 -0.305622 -0.237802 -0.470778 0.0884266 0.535806
+0.797109 -0.145284 0.136003 0.334246 0.848925 0.900752 0.585877 -0.112343
+-0.192336 -0.908105 -0.334296 -0.715652 0.879834 -0.402718 -0.872987 0.296066
+-0.653681 -0.184739 0.940983 0.209873 0.544847 0.282653 0.339019 -0.428972
+-0.194294 -0.0596286 -0.810739 0.726835 0.451793 -0.707472 -0.950164 -0.236336
+0.637462 -0.256761 -0.670492 -0.193041 -0.915003 -0.731883 0.0366833 -0.245979
+-0.105886 0.743982 -0.740773 -0.865156 -0.87489 0.848912 0.523122 0.946026
+0.943791 0.325707 -0.671541 0.375961 -0.77914 0.430596 -0.032457 0.605194
+-0.416813 0.324276 0.131722 -0.258272 0.233975 -0.837174 0.594033 -0.505245
+0.817084 0.530562 -0.549989 0.444467 0.369909 -0.963979 0.301724 -0.0409435
+0.291737 0.278037 -0.110433 -0.692999 0.195792 0.158968 0.153503 0.196956
+0.0469962 0.823191 0.500532 0.255422 -0.840759 -0.393582 0.875076 0.992727
+-0.87556 0.237767 -0.912181 0.542862 0.163611 -0.453662 0.668599 -0.0388426
+0.509496 0.187931 0.693408 0.267075 0.047769 0.67806 0.273793 -0.90513
+0.941115 0.58601 -0.337077 -0.9097 0.450873 0.0433947 0.742621 0.913492
+-0.351252 -0.270526 -0.017284 0.292235 0.708252 -0.35782 0.313049 -0.47276
+-0.541737 0.477614 0.914302 0.187172 0.94786 -0.782811 -0.590241 0.803465
+0.435025 -0.298838 0.966699 0.491255 0.315439 0.61704 -0.395228 -0.392824
+0.0618606 0.597891 0.787649 -0.20335 0.281462 -0.341359 0.857565 -0.417426
+0.612807 0.878532 0.54191 -0.91607 0.910597 0.944217 0.28692 -0.872627
+-0.252343 0.483845 0.558156 0.837132 -0.354361 -0.824163 -0.0468551 0.598785
+0.458753 0.509112 -0.107625 0.358408 -0.773761 0.920507 0.5133 0.0146401
+0.509639 -0.86449 -0.980457 0.734108 0.190015 0.447651 -0.797752 -0.151256
+0.360296 0.0602842 -0.158694 0.522549 0.5189 0.105209 -0.804607 0.086694
+-0.652952 -0.91206 0.793921 -0.820705 -0.486369 0.0957001 0.426589 0.868367
+0.53759 -0.900937 -0.408052 0.440422 0.931243 -0.939854 0.697158 0.11263
+0.477773 0.598425 0.387298 -0.300583 0.593027 0.204957 0.279418 0.654208
+0.97629 -0.725834 -0.961116 0.794761 -0.262701 -0.494546 0.105579 -0.491426
+0.492469 0.610988 -0.318709 -0.0778782 -0.844701 0.345592 -0.564935 0.97157
+-0.572702 0.185061 0.297169 -0.0994182 -0.00171426 -0.524556 0.89236 -0.18742
+-0.920791 0.840442 -0.438821 0.255716 0.491834 -0.915584 -0.0704714 -0.0883544
+0.189995 -0.134067 0.97846 -0.787238 -0.106828 0.518955 -0.0981396 0.8735
+0.307827 -0.141964 -0.618969 0.390996 -0.845153 0.720349 -0.585495 -0.470719
+0.860287 0.957916 0.716103 0.645734 -0.443912 0.728765 -0.969215 -0.632284
+-0.630021 0.101462 0.505277 -0.31435 0.668509 0.262507 0.604366 -0.172558
+0.772381 0.101686 -0.207645 -0.649582 0.0250132 0.734477 0.646272 0.88122
+-0.97247 -0.124273 0.376311 0.202495 0.241541 -0.249191 0.274259 0.865586
+-0.488333 0.124564 -0.0907398 0.851215 -0.817624 -0.456055 0.178095 0.490173
+0.423917 0.385585 -0.351425 0.518931 0.852271 0.457764 0.622485 -0.757424
+0.429632 -0.0673521 -0.986684 -0.915105 -0.18279 -0.0054937 0.369554 -0.0413534
+-0.259525 -0.900449 0.869191 0.383346 -0.588504 0.0464366 -0.331381 -0.603107
+-0.0421066 0.521706 -0.457787 -0.859707 0.121332 -0.688289 -0.627297 0.147912
+-0.728273 -0.327037 -0.797175 0.124753 0.607685 0.515823 0.467392 0.624953
+0.64195 -0.921966 0.923367 -0.0103251 0.274991 -0.719075 0.666047 0.609565
+0.418002 0.0575557 0.185757 -0.440775 0.916628 -0.329855 0.139507 -0.459667
+-0.304674 0.664609 -0.687229 0.254551 -0.12832 0.225946 0.336273 -0.859519
+-0.746536 -0.479471 -0.48817 -0.720331 0.466456 -0.533169 0.349399 0.599752
+-0.0693433 -0.66859 -0.879882 -0.599289 0.237562 0.877683 -0.689928 0.312201
+-0.0717741 0.936356 0.287193 0.598347 0.280962 -0.415179 -0.631889 -0.759308
+-0.476299 0.500561 -0.389283 0.0752255 -0.823881 -0.629974 -0.777593 0.589724
+0.16367 -0.901747 0.137909 -0.200179 -0.310539 -0.730002 -0.753454 0.221545
+-0.823618 0.71099 0.120062 0.94313 -0.540315 -0.174294 0.0997371 -0.303804
+0.229812 0.166168 0.0178043 0.381846 -0.180521 0.73516 0.403749 -0.395635
+0.0992278 0.330474 -0.581984 -0.138663 -0.617203 -0.135819 0.600691 0.0268797
+-0.867314 -0.584255 0.809209 0.329158 0.90545 0.1753 -0.400219 -0.820276
+0.889715 -0.615202 0.422693 -0.512655 -0.28159 0.688616 0.16942 0.915295
+-0.161029 -0.515813 0.783674 -0.0141777 -0.208935 0.24286 -0.581803 0.900997
+-0.293134 -0.926263 0.11065 0.889701 -0.196972 0.240469 0.0977642 -0.269138
+0.947799 -0.692088 -0.0539804 0.98837 -0.0416007 0.883438 -0.574093 0.762027
+-0.753382 -0.476178 -0.120212 -0.250303 0.819984 -0.35557 -0.724674 -0.062026
+0.172574 -0.24731 0.490383 0.534608 -0.507587 -0.114624 0.343643 0.664548
+0.495146 -0.904574 -0.595895 0.768859 0.559969 0.467195 -0.774944 -0.95477
+-0.496379 -0.641125 0.517243 -0.275505 0.684218 -0.632928 0.711154 -0.404151
+0.384641 0.584677 -0.0372261 -0.243059 -0.511208 0.586556 -0.907605 -0.916789
+-0.765877 0.416646 -0.193778 0.299936 0.0225621 -0.559503 -0.502178 -0.568158
+-0.172914 -0.717633 -0.802751 0.0825455 0.629485 0.0559055 0.603573 -0.372429
+-0.433832 0.562259 0.441644 0.0365981 0.571727 -0.35747 -0.903666 0.170439
+-0.0182899 0.582303 0.396927 0.490243 0.428688 0.826028 -0.769244 0.131322
+-0.0649736 -0.486877 0.307647 -0.282122 0.00321377 -0.278147 0.188783 -0.79282
+-0.461419 0.0587373 0.00863312 -0.836072 0.982549 -0.9016 0.212936 0.769096
+-0.145638 0.854439 -0.722917 -0.676676 0.549161 0.770368 0.173006 -0.11283
+-0.285712 0.358843 0.35235 -0.10454 0.691551 -0.251248 0.720999 -0.941685
+-0.298927 -0.697801 -0.450239 0.780919 -0.708458 -0.815036 -0.271314 0.457595
+0.791149 -0.843316 0.986323 -0.546781 -0.255032 -0.426204 -0.280213 0.992756
+0.409801 -0.670451 0.40012 -0.39183 -0.345477 -0.42522 -0.966631 0.786546
+-0.312445 -0.0309838 -0.554719 0.140774 0.273426 0.832503 -0.157708 -0.171821
+0.876955 0.827097 0.328969 0.488356 -0.144097 -0.996807 -0.356181 -0.611194
+0.58955 -0.0291045 -0.332825 -0.197394 0.425674 -0.699252 0.642559 -0.794596
+-0.529947 -0.0193539 0.98977 -0.353262 -0.42003 -0.0451023 0.746347 -0.644907
+0.626559 0.780302 -0.308995 0.229609 -0.366871 -0.362754 -0.0219739 0.366236
+-0.820737 0.242969 0.358432 -0.452546 -0.731564 0.431045 -0.976861 0.198892
+-0.376432 0.77431 0.649057 0.319377 -0.850052 -0.58928 0.0156763 -0.812998
+-0.493896 0.41896 -0.517035 -0.811271 0.40643 -0.23912 -0.356455 0.6641
+-0.41023 0.700385 0.737752 -0.644895 -0.0700061 0.171841 -0.712709 0.679685
+0.538251 -0.777821 -0.00789328 0.261929 -0.679857 0.744825 -0.789269 -0.806872
+-0.232583 -0.195067 0.392618 -0.953142 -0.0904066 0.264567 0.543454 0.863769
+0.290802 -0.0484524 0.212338 0.70878 0.594766 -0.970906 0.383978 -0.11893
+0.857453 -0.598519 0.700796 -0.637398 -0.947281 -0.287379 -0.68622 -0.578451
+0.61569 -0.0413152 0.189581 -0.025467 0.591727 -0.384784 0.507341 -0.200527
+-0.327361 0.216689 0.278828 -0.610616 -0.924084 0.571235 0.658218 -0.0680971
+0.369076 -0.508041 0.07053 0.444586 0.423478 -0.771579 -0.973658 -0.133692
+0.689909 0.288778 -0.00930822 -0.40316 0.0746928 -0.730177 -0.455322 0.308062
+-0.75867 -0.902211 -0.767175 -0.50214 0.067032 -0.196716 -0.721929 -0.217908
+-0.418515 -0.0892808 0.334449 -0.530416 0.275294 0.628504 -0.519566 -0.494369
+-0.805554 -0.36026 0.697411 0.742628 0.980818 -0.986554 0.618374 -0.362962
+-0.781809 0.252234 -0.938689 0.307694 0.114816 0.43207 0.371939 -0.700677
+0.530469 -0.880949 -0.927973 -0.948703 0.888111 0.513933 0.541723 -0.232608
+-0.634947 0.83015 -0.854609 -0.868864 -0.741456 0.315889 0.372722 -0.512462
+-0.526706 -0.967388 -0.395551 0.967151 0.180373 -0.285083 -0.712694 -0.527483
+0.826659 0.197001 0.168898 0.802458 0.683358 0.603025 0.696586 0.786815
+-0.399333 0.491316 0.156492 0.155273 -0.664144 -0.0482588 0.715768 -0.964983
+-0.347052 0.276578 -0.427049 -0.665851 0.376211 -0.133866 0.833013 0.84972
+-0.550404 0.293952 -0.652923 0.263592 -0.66903 0.908735 0.13017 -0.207125
+0.558522 0.0243762 -0.252566 0.425635 0.970293 0.201025 -0.933472 0.485181
+0.418512 0.973218 0.934906 -0.851058 -0.923213 -0.00528692 0.663163 0.336733
+0.300305 -0.449919 -0.917818 0.56312 -0.846321 -0.209079 0.420273 0.414711
+-0.534024 0.782551 -0.195787 0.633653 -0.618581 -0.0647479 -0.559319 -0.689941
+0.118928 0.136822 -0.0326385 -0.767448 -0.983201 -0.608737 -0.538138 -0.771818
+0.0642788 -0.23575 -0.955825 0.531643 0.896696 -0.93714 -0.743735 0.83404
+-0.759699 -0.307215 0.897355 -0.912848 -0.202901 -0.503434 -0.127725 0.657111
+0.588039 0.642811 0.798735 -0.357405 0.429553 -0.8095 0.142669 0.281876
+0.731616 -0.745817 0.687116 -0.963179 -0.202882 -0.560052 0.219008 -0.577207
+0.171463 -0.789992 -0.26166 0.148791 -0.461787 -0.620984 0.800754 -0.533135
+0.146333 0.133831 0.129373 -0.38419 -0.852851 -0.963873 -0.754177 0.450762
+-0.0854603 0.463209 0.162718 0.14919 -0.398727 0.0412205 -0.741961 0.344254
+0.648451 0.533531 -0.305557 0.943382 0.259429 0.35427 -0.170163 -0.687101
+-0.384459 0.862088 -0.538926 -0.0551781 -0.162722 -0.610804 -0.342109 0.922671
+-0.707937 0.290735 0.500182 -0.917945 0.0717458 0.131323 -0.568289 -0.723669
+-0.821583 0.919702 -0.380865 -0.0226084 -0.0980169 -0.397053 -0.563419 0.710794
+0.933331 -0.210902 0.145008 -0.830874 0.545921 -0.766231 0.70935 0.380556
+-0.118949 0.833075 -0.138143 0.388361 0.294505 0.307174 -0.122785 0.242586
+-0.989216 0.278074 0.944563 -0.887136 -0.495663 0.0860985 -0.365618 0.539404
+0.327773 -0.00732701 -0.453755 0.49406 0.660355 -0.33187 0.600803 0.460809
+-0.823785 0.387044 0.260448 0.539937 -0.544437 -0.772416 0.882615 0.984641
+0.374367 0.764354 -0.356019 -0.124537 0.879582 -0.492949 -0.0903574 0.798317
+0.995688 0.216409 0.996199 0.896376 -0.227497 0.438396 -0.629191 0.420907
+-0.653814 0.570553 0.109743 -0.133596 -0.481663 0.863684 0.35997 -0.985733
+0.877632 -0.193981 0.700456 -0.519204 -0.0232916 0.408009 0.420762 0.891245
+0.32699 -0.195468 -0.745174 0.669308 0.567984 0.125155 0.369705 0.586686
+0.350518 0.857318 0.235782 -0.0613923 0.930641 0.442481 -0.0804044 -0.710929
+-0.160918 -0.982138 -0.358503 -0.523143 0.300813 -0.429542 -0.209023 0.313505
+-0.96121 -0.735214 0.238155 0.770734 -0.797954 0.685873 -0.435539 -0.481711
+0.226573 -0.947087 0.483706 0.88208 -0.280183 0.838936 -0.29229 0.391445
+-0.908792 0.486889 0.217232 -0.822105 0.414924 -0.482778 0.676449 0.183816
+0.0442115 0.623602 -0.65238 0.278868 -0.0683481 -0.255748 -0.937132 -0.459009
+0.863573 0.615655 -0.315832 0.0756595 -0.984566 -0.196992 -0.69228 0.814119
+-0.349865 -0.339028 -0.898581 0.673827 -0.976803 -0.226884 -0.38377 0.208712
+-0.399204 0.283016 0.270532 -0.602491 0.505236 0.957699 -0.688275 0.0937528
+-0.362006 -0.180131 -0.00592082 -0.640728 0.261582 0.991148 -0.900273 -0.806972
+0.583159 0.246894 -0.333407 -0.949928 0.864219 -0.751779 0.691914 0.384194
+0.519467 0.975468 0.330569 -0.90671 0.876544 0.528413 -0.257303 -0.443693
+0.975573 0.761322 0.906247 -0.379877 -0.301486 0.88182 -0.270344 -0.0292251
+0.133132 0.527226 0.684918 0.763549 -0.154507 0.694995 0.568294 -0.583042
+0.703709 0.335868 -0.598098 0.939269 -0.985655 -0.51328 0.666223 -0.134206
+-0.993873 -0.0213064 0.558352 0.758266 0.0838586 0.83138 -0.29162 -0.224693
+-0.0316652 -0.193959 -0.22978 0.317311 0.36578 0.515929 -0.0359695 -0.285163
+0.912247 -0.53452 0.973823 0.231653 -0.736281 -0.0860418 -0.834986 -0.790922
+-0.577686 -0.576915 -0.0706287 0.202458 0.782071 -0.625289 -0.776728 0.0224522
+-0.707905 0.50783 -0.061236 -0.617065 -0.618228 -0.131832 -0.153148 0.942724
+0.360483 -0.871978 0.993859 0.114053 0.757332 0.386036 -0.361646 0.207122
+0.908065 0.830837 0.869343 -0.73375 0.928219 -0.464749 -0.571267 0.586814
+-0.341393 -0.627896 -0.264869 -0.585668 0.700693 0.094233 0.20721 0.479512
+-0.457757 -0.473789 0.576526 0.301305 0.574675 -0.883921 0.449592 0.0104652
+0.138251 0.49342 -0.17178 -0.56035 -0.762154 -0.121695 -0.563466 -0.339857
+0.406129 -0.857286 -0.290089 0.12217 -0.820902 -0.73995 -0.321759 -0.956618
+-0.0963213 -0.5873 0.645211 -0.0321442 0.133028 0.918141 -0.628066 -0.916372
+0.0722743 -0.914343 0.414923 0.546207 -0.107927 -0.494056 -0.643561 0.900971
+-0.249978 -0.145655 -0.814521 0.0326581 0.231742 0.836964 -0.941829 -0.804002
+0.574748 0.744282 -0.485392 -0.812953 -0.441999 -0.373936 0.301269 -0.338922
+0.219447 0.0117936 -0.441458 0.803417 -0.335385 -0.690639 -0.478367 0.307749
+0.132945 0.488976 0.135689 0.0114681 -0.025846 -0.599261 0.326764 -0.935265
+-0.363688 0.695589 -0.5346 -0.407649 0.981315 0.0246431 -0.527814 0.230187
+-0.875594 0.456132 -0.888954 -0.698443 -0.217489 -0.475568 0.0283053 0.889665
+-0.0128877 0.291354 0.546735 0.0149985 0.383543 -0.842329 0.701909 -0.570953
+-0.571183 0.999504 -0.122796 -0.961091 -0.891756 0.71844 -0.0322515 -0.0286555
+0.82554 0.507298 -0.134212 -0.0271159 -0.977184 0.319353 0.531244 0.676701
+0.459324 -0.53799 0.985868 -0.836446 -0.0763077 -0.135364 0.450683 0.898561
+0.648359 0.841209 -0.551843 -0.860345 0.270765 0.326527 -0.879455 0.606743
+-0.402212 0.427867 0.314495 0.436551 -0.918564 -0.38591 0.796554 0.613382
+0.302905 -0.495404 -0.523858 -0.104942 -0.363109 -0.583927 -0.972001 0.0532944
+0.57196 0.904289 0.0753444 0.932419 -0.375329 -0.864336 0.610242 0.694952
+-0.0443916 0.933443 0.92164 0.496693 0.104307 0.0601594 -0.965775 -0.0209767
+0.898485 -0.622735 -0.780745 0.850789 -0.766448 0.29336 -0.335751 0.598825
+0.185243 -0.417636 0.618871 -0.00301566 -0.522258 0.593437 0.548895 0.895387
+-0.717995 0.370277 0.364839 -0.995687 -0.34362 0.16334 0.0853892 -0.909615
+-0.664666 -0.751413 -0.577684 -0.726584 0.560147 0.913928 0.906507 0.918903
+-0.784676 0.796495 0.24843 0.758365 0.648675 0.446033 -0.661835 0.229135
+-0.218507 -0.842401 -0.94384 -0.340522 -0.567136 -0.0856874 0.249805 0.851357
+-0.419823 0.868567 0.316477 0.601669 0.182882 0.744039 0.381101 -0.264542
+0.20937 -0.216538 0.995052 0.398241 -0.835791 0.128067 0.835295 0.871096
+0.68631 -0.67594 0.499961 0.819347 0.0212814 0.424364 0.225614 0.337487
+0.455317 -0.873514 -0.57145 -0.689051 0.94138 0.449968 -0.647846 -0.764756
+0.947225 0.408823 -0.923999 -0.326329 -0.724871 -0.818855 -0.691498 0.0741818
+0.324278 -0.937081 -0.887451 0.609746 -0.796141 -0.0630527 -0.475713 -0.148614
+-0.218216 0.577573 -0.328165 -0.74413 0.539602 -0.320021 0.16646 0.732442
+0.914569 -0.247973 0.322736 -0.646617 -0.465801 -0.225577 0.343479 -0.18574
+-0.622274 0.509186 0.16363 0.474264 0.247911 -0.0491472 -0.337898 -0.773024
+-0.455746 0.925947 0.271179 0.157244 0.918011 0.816703 0.723029 -0.407765
+0.135431 0.207946 0.454171 0.150807 0.39808 -0.181156 0.662142 0.998837
+-0.170967 -0.262359 -0.352112 -0.862965 -0.722295 0.0390601 -0.383904 -0.561961
+-0.500291 -0.300887 -0.140161 0.443431 0.973627 -0.793971 0.31385 -0.409709
+-0.437718 0.280706 0.0449257 0.581218 0.0743008 -0.506769 -0.858017 0.947134
+-0.162883 0.12211 0.58106 -0.967633 0.00458991 0.879703 -0.186182 0.447892
+0.49764 -0.700122 -0.0962428 -0.345036 0.12346 -0.431724 -0.186435 -0.522608
+-0.916139 0.0949659 -0.0479898 -0.178232 -0.838173 0.496476 -0.827512 -0.224191
+0.847845 -0.909976 -0.778024 0.428089 0.224087 0.0605156 0.825071 -0.676221
+-0.336896 -0.495372 -0.848476 0.650922 -0.65299 -0.0757912 0.131118 0.18207
+0.418753 0.124491 -0.185776 -0.428969 -0.305312 0.527287 -0.701612 0.600852
+0.568295 -0.835178 -0.839875 0.585269 0.659516 0.675947 -0.870419 -0.405351
+-0.0963861 0.0854124 0.0702742 0.0915023 -0.728222 0.508501 -0.429693 0.42044
+-0.76163 0.699498 -0.394918 0.609276 0.849858 -0.225132 -0.535513 -0.601581
+0.443189 0.845143 0.129504 0.899637 -0.495319 -0.521681 0.333595 0.313646
+0.197139 -0.5217 0.542349 0.00545544 -0.983832 -0.280804 -0.278377 0.772221
+0.375314 -0.336739 0.659778 0.613643 -0.98438 0.0728006 0.439172 0.412867
+0.0230588 -0.932134 0.73279 -0.349458 0.68099 -0.138023 -0.507766 -0.789176
+-0.503146 0.0273425 -0.555536 -0.519163 -0.058158 0.402099 -0.0639556 0.272505
+0.549357 0.364673 -0.956001 0.21719 -0.669472 -0.0098492 -0.258739 0.660656
+0.620616 0.407279 -0.113876 -0.52831 0.178259 0.162639 0.868408 -0.0754357
+-0.362482 0.159049 0.517145 -0.45285 -0.445442 0.289062 -0.253505 0.674218
+-0.357427 0.573968 0.310438 -0.313141 -0.405675 -0.611489 -0.0276639 -0.429119
+-0.668139 0.635528 0.593448 -0.183699 -0.156371 -0.437839 0.390206 -0.294725
+0.129772 -0.211686 -0.492115 -0.84819 0.387332 0.938125 0.218802 -0.830251
+0.474645 -0.988604 0.910576 -0.992808 -0.88129 0.312076 -0.106249 0.108644
+-0.345939 -0.385284 -0.300995 0.887221 -0.488168 -0.120372 0.086807 0.952477
+-0.531646 0.545158 0.997297 0.209956 0.127618 0.882957 0.522523 0.942717
+-0.652333 -0.376931 -0.353511 0.229265 -0.824008 0.188566 0.924286 0.360831
+0.863307 -0.518797 0.179152 -0.749976 0.411346 0.971809 -0.650945 0.569322
+0.407134 0.599725 0.559955 0.0969481 0.617985 0.634583 0.42873 -0.569662
+-0.800046 -0.00313865 -0.728843 0.36328 0.289795 -0.115441 0.792551 -0.518129
+0.777594 -0.612453 -0.240238 0.344502 -0.542242 0.221281 -0.888601 0.00326914
+0.360732 -0.682803 -0.107311 -0.928915 0.129344 -0.616168 -0.538422 -0.288398
+0.33447 -0.176508 -0.741403 0.372003 -0.879242 0.606991 -0.504806 0.724598
+0.311839 0.822131 -0.686503 0.253273 0.346116 -0.336598 0.363425 -0.774734
+-0.94456 0.141385 0.696468 -0.508014 0.474444 -0.206303 0.024932 0.730156
+-0.555203 -0.937368 -0.736873 -0.940357 0.41468 -0.317797 0.505206 -0.744362
+-0.047413 -0.168765 0.699887 -0.011384 -0.712655 -0.569805 0.509026 -0.527639
+0.0921165 -0.0872709 -0.63125 0.913504 -0.522371 -0.873718 0.774925 0.8211
+-0.835514 0.807243 -0.451478 0.562789 -0.648487 0.600922 -0.185889 0.443629
+0.138278 0.140251 -0.433804 0.911148 -0.986832 -0.643513 -0.73119 0.346114
+-0.14968 -0.870077 0.155331 0.432867 -0.245532 0.585842 -0.17101 -0.467997
+-0.174975 -0.191355 0.0111016 0.206618 -0.0788315 0.206557 0.700146 0.26407
+-0.599876 0.367874 0.554409 -0.678359 -0.434445 -0.0627907 0.866011 -0.631266
+0.40957 0.101284 -0.593199 -0.497476 0.734292 -0.048336 0.488333 -0.971627
+0.267436 0.860481 -0.110975 -0.547661 0.84888 -0.978113 0.177378 0.646281
+0.264242 -0.20734 -0.404393 -0.706742 -0.245965 -0.0312825 -0.177695 -0.590433
+-0.88398 -0.292129 0.652842 0.679528 0.714599 -0.31054 -0.955297 -0.180481
+0.108656 0.826234 0.574338 -0.666069 -0.0100122 0.0803361 0.162848 0.692929
+0.274484 0.683277 -0.938547 -0.490008 0.165304 0.269299 0.823205 -0.373988
+0.135267 0.963689 0.717366 -0.515998 -0.840342 -0.704418 0.248176 -0.920035
+0.658957 -0.859143 0.970355 -0.329009 -0.0468982 0.204005 -0.170679 0.540487
+-0.527316 0.520957 -0.358999 -0.925968 -0.945894 -0.997646 -0.991608 0.55757
+-0.817878 -0.503903 -0.487906 -0.0567896 0.193223 0.892943 -0.45561 0.700621
+-0.759023 0.0254688 -0.855266 0.874996 -0.645042 -0.551461 0.761377 -0.818556
+0.291934 0.905122 0.66748 -0.661038 -0.908079 -0.753333 -0.513899 -0.200027
+-0.962323 0.27371 0.895297 0.81511 -0.258531 -0.648807 0.979072 -0.884441
+-0.82089 -0.681966 -0.228665 0.51323 0.270095 0.87616 -0.638903 -0.951388
+-0.261658 0.43373 0.287688 -0.948697 0.549712 -0.438453 0.882343 0.107756
+-0.143884 0.941573 -0.733211 0.0388048 -0.227978 0.025673 -0.069112 -0.699991
+0.0481841 -0.986915 -0.0591436 -0.579039 -0.00163794 0.448317 -0.88231 -0.274336
+-0.0520785 -0.520813 0.587888 -0.0927612 0.564898 0.914219 -0.469238 -0.868434
+-0.689648 0.248501 -0.830505 -0.00817715 0.57733 -0.193782 0.640914 -0.770624
+0.604876 -0.600517 0.369522 -0.0248955 -0.803796 0.736926 0.235804 -0.114192
+-0.314167 0.029882 -0.0550515 0.902548 0.00129659 0.0887846 0.468247 -0.973941
+-0.125029 -0.822576 0.898125 0.149557 0.932975 0.299965 -0.825157 -0.881807
+-0.019497 0.520082 0.830331 0.613313 -0.712255 -0.293715 0.290778 0.910808
+-0.612102 0.442327 -0.826731 -0.586718 -0.745161 0.35706 0.496725 -0.337971
+-0.177036 0.143153 0.442151 0.315148 -0.0962316 -0.534935 0.251563 -0.573321
+-0.795171 0.356316 -0.110224 -0.772718 0.609462 -0.916863 0.156313 0.00807432
+0.51919 -0.688593 0.174565 0.330887 0.937521 0.119489 -0.029361 0.330447
+0.267624 0.0636108 -0.766347 0.0368321 -0.178892 0.754918 -0.584797 0.646224
+0.0543071 -0.244817 -0.133002 0.418942 0.156912 0.401098 -0.457923 -0.0086396
+0.31796 0.274109 -0.591155 -0.588633 0.53215 -0.803649 0.917343 -0.0162614
+-0.748638 0.358657 0.0837448 0.412766 0.628267 0.987513 -0.393735 -0.0351636
+0.340234 0.160149 -0.422025 0.929521 0.150872 -0.185484 0.644958 0.399877
+0.369833 0.622548 -0.746154 0.576763 -0.24731 -0.221174 0.990903 0.196575
+-0.374449 -0.308648 0.572227 -0.51462 -0.993824 0.528717 0.864524 -0.982967
+0.375885 0.907404 0.759051 -0.413531 -0.569807 -0.301615 -0.487152 0.0736406
+-0.0547878 -0.567737 0.868215 0.726428 0.939528 -0.613973 -0.151486 -0.143228
+0.774938 -0.315413 -0.592695 -0.55891 0.740951 -0.956491 -0.0730064 -0.0338408
+-0.337309 -0.0691164 0.338541 0.999386 -0.0193022 0.677588 0.734364 -0.856655
+-0.028869 -0.752533 -0.453042 0.274491 -0.637134 -0.398187 -0.272979 -0.430847
+-0.673989 -0.286274 -0.562854 0.12427 0.0936976 0.965523 -0.82514 -0.49618
+0.770816 0.680283 -0.897072 0.501658 -0.617746 -0.586719 -0.798991 -0.136963
+0.236992 -0.614045 0.173716 -0.0687633 -0.446663 -0.79013 -0.328581 0.215918
+0.493988 -0.932995 -0.30012 -0.678104 -0.818305 -0.251725 0.0404109 0.767502
+0.92366 0.596716 0.529179 0.69413 -0.228518 0.821449 0.382839 -0.0813092
+-0.381741 0.980686 -0.408197 0.108125 -0.707274 -0.134126 -0.610366 -0.228834
+0.78183 -0.91614 0.500856 0.750621 0.544451 0.905196 -0.32836 -0.978336
+0.421739 -0.272365 -0.537244 0.79915 0.673203 -0.529353 0.328073 -0.6235
+-0.312532 -0.708554 -0.077073 0.70549 -0.0736282 -0.933252 -0.768467 -0.795785
+-0.605335 0.722372 -0.143753 -0.83284 -0.787781 -0.474113 -0.484129 -0.957288
+-0.29693 0.879444 0.245028 -0.304153 0.861379 0.416688 -0.231506 0.595379
+-0.819934 0.0964443 -0.702166 0.279822 0.6926 0.64321 -0.00340714 -0.504682
+-0.623415 0.140376 0.517706 0.813064 -0.0192871 -0.225431 0.851822 -0.311111
+0.906409 -0.463039 -0.125906 -0.326015 0.461082 -0.345953 -0.711728 0.454559
+-0.463604 -0.506316 -0.95116 -0.773319 0.288355 0.75944 -0.606086 -0.826483
+0.25271 -0.9609 0.945414 0.329588 0.374626 -0.145722 0.355244 0.951757
+-0.0978388 0.0883752 0.819972 -0.346529 -0.701948 0.493288 -0.484703 -0.277412
+0.752528 0.81242 -0.91897 0.369705 -0.87697 -0.705945 -0.149767 0.801977
+0.220821 -0.327548 -0.875952 0.101745 0.179896 -0.161492 -0.536122 0.681313
+-0.49327 0.614592 0.670578 -0.884864 0.518873 -0.634202 0.632039 -0.132086
+0.606229 -0.487425 0.290243 0.890012 0.20712 0.648662 0.68404 -0.837515
+0.571455 0.935079 -0.366354 -0.815684 0.142722 -0.033437 -0.672339 0.38266
+0.302957 -0.546423 0.826827 -0.648203 -0.067578 -0.0800815 0.933293 -0.585709
+-0.880886 0.413273 0.500182 0.490237 -0.448977 0.505172 -0.712596 -0.649271
+-0.349604 0.104807 -0.559456 0.81238 0.0240454 -0.134857 -0.231669 0.714498
+0.121195 0.511282 -0.764937 0.3487 -0.230063 0.306971 0.721399 0.910368
+-0.164307 -0.964873 0.255116 0.18614 -0.0710032 0.847507 0.13844 -0.425006
+-0.0294202 -0.663732 0.391538 0.125527 0.865593 0.744081 0.983922 -0.196187
+-0.592124 0.761828 -0.993756 -0.0473521 -0.201354 0.819108 0.566071 -0.97679
+0.132186 -0.938286 -0.845578 0.509997 0.337286 -0.952651 0.205407 0.526075
+-0.805208 0.0574104 0.400985 0.838457 0.273258 -0.357216 -0.7291 -0.0218883
+-0.798725 0.293082 -0.83925 -0.405219 0.772495 -0.162703 0.776866 -0.0616743
+-0.718476 0.490894 0.922168 -0.234468 -0.864068 -0.726702 0.125183 -0.739661
+0.224734 -0.449467 0.860439 0.548208 -0.219997 0.413782 -0.0719829 -0.89865
+0.668905 0.140998 -0.237877 -0.245798 0.191338 0.624373 -0.514573 -0.610171
+-0.852263 -0.702425 -0.839297 -0.988417 0.616082 -0.317768 -0.490215 -0.964163
+-0.845807 0.818447 -0.0769468 0.149338 0.644181 0.775342 -0.986283 -0.842497
+0.461963 -0.751987 -0.186809 0.128579 0.567975 -0.00383664 -0.100185 -0.23146
+-0.676349 0.539082 -0.0532405 0.0730482 0.135735 -0.985184 -0.171993 -0.712114
+0.750988 -0.183431 -0.936489 0.809974 0.796974 -0.648548 0.928596 -0.0290144
+-0.764139 -0.574596 0.13775 0.163946 -0.0185631 -0.50541 -0.505162 0.337413
+0.169893 0.80255 0.0326267 -0.64676 0.591884 -0.931843 0.333031 -0.28657
+0.711617 0.566115 -0.873711 -0.447148 -0.837245 0.937222 -0.443066 0.916289
+0.857331 0.209462 -0.746399 -0.962531 -0.794518 -0.353599 0.333256 -0.399661
+0.124117 0.673644 -0.395684 -0.754722 -0.178277 0.200462 0.831671 0.229839
+-0.0436045 -0.130365 0.0559433 -0.238672 -0.741023 -0.314417 0.832164 0.49558
+0.629799 -0.019173 0.363436 -0.479682 -0.308177 -0.71409 0.175529 -0.0225631
+0.73007 -0.840835 0.0629785 0.685571 -0.902139 0.616732 0.0802994 0.758177
+-0.85408 -0.0471578 0.590884 -0.0601573 0.983901 0.99031 -0.123045 0.882654
+-0.0816098 0.619264 0.334403 0.588455 -0.603777 0.955431 -0.729233 0.541021
+-0.518286 0.739772 0.271152 -0.965414 0.0938647 0.138862 -0.490594 -0.741147
+0.560105 -0.41576 -0.805391 0.423555 -0.91956 0.677451 -0.203752 -0.711401
+0.0538332 0.745948 -0.903786 -0.804641 0.806175 0.803283 0.770014 0.614073
+0.363265 0.0423812 -0.612926 0.623838 0.544472 -0.480674 0.933129 -0.139225
+0.451303 0.349994 -0.559412 -0.153014 -0.489767 -0.777127 0.249253 -0.492274
+0.984653 0.891803 -0.532161 0.583266 0.500533 0.71927 0.372692 -0.356016
+0.242516 -0.323755 -0.0772472 0.774458 0.187239 -0.73274 0.00992747 0.136559
+-0.280286 0.720583 0.00711111 -0.800192 -0.18599 0.435274 0.867915 -0.938762
+-0.839105 0.432264 -0.0551969 -0.132463 0.677694 -0.152299 0.666318 -0.775609
+-0.696103 -0.207586 0.481987 0.718709 0.0788425 0.0415259 -0.719586 -0.264512
+0.685926 -0.93111 0.303224 0.964486 0.601764 0.334563 -0.00143469 -0.867682
+0.47876 0.917552 -0.187515 0.0117107 -0.0857956 -0.918814 -0.45574 0.323111
+-0.875695 0.550742 0.672556 -0.856563 -0.826559 -0.484963 0.657209 0.851605
+0.574605 0.575943 0.887362 -0.51758 -0.0200551 -0.347917 0.267176 -0.547546
+-0.918976 -0.591552 0.649176 -0.12985 -0.805604 0.173736 0.374882 -0.68857
+-0.21926 0.724924 0.195898 0.787601 -0.344664 -0.129131 0.322424 -0.535366
+0.525124 -0.603729 0.46486 0.203147 0.0071692 0.17777 0.195174 0.00580404
+-0.410431 0.968821 0.338612 0.419906 0.463063 -0.970917 0.57079 -0.498508
+-0.489366 0.477389 -0.578136 -0.823802 0.346119 0.264939 0.540363 0.530289
+-0.865168 -0.757669 -0.21785 -0.299619 -0.409155 0.507296 -0.774418 -0.658391
+0.313145 0.924497 0.310088 0.868992 0.68397 -0.340971 -0.993908 -0.521261
+-0.728798 -0.536925 -0.820468 0.34252 -0.285503 0.643448 -0.787477 0.456246
+-0.93774 0.415129 -0.76223 0.142001 0.839158 0.211896 0.571701 0.111681
+0.637235 0.74066 0.878211 -0.592206 -0.921065 0.0648644 0.937055 0.87811
+0.736866 0.564391 0.962762 0.191391 -0.216403 0.376728 -0.126834 -0.73718
+0.363034 -0.382508 -0.952172 0.0407933 -0.771018 0.0679968 0.193112 0.955135
+0.249875 -0.114678 -0.653656 0.630404 -0.655171 0.56021 -0.417841 0.404821
+0.516553 0.790057 -0.0447277 0.0893541 -0.61616 -0.120965 0.0667103 0.701047
+-0.138791 0.383357 -0.428867 -0.50136 0.753356 0.281848 0.329351 -0.251867
+-0.469273 0.932868 0.380054 -0.698884 0.865777 -0.541439 0.683625 -0.116086
+0.744073 0.0712213 -0.103272 0.290377 0.169962 0.390293 -0.421272 -0.132716
+-0.458002 0.255651 0.2176 -0.189844 -0.275522 0.269161 0.672978 -0.357882
+0.985702 -0.727281 0.177093 0.998714 -0.575635 -0.200188 -0.432139 -0.176382
+-0.782175 -0.283259 0.972121 0.682 0.0863075 0.673289 -0.364885 -0.969685
+-0.711504 0.909925 -0.665869 -0.730461 -0.0691128 -0.292889 -0.111506 -0.0508709
+-0.635981 -0.124585 0.275619 0.845636 0.189531 0.0483202 -0.726763 0.887665
+0.223439 -0.0510921 -0.636781 -0.596858 0.749651 -0.164003 0.382015 0.816413
+-0.74869 0.744953 0.121052 0.418714 -0.385632 -0.0246765 -0.269526 0.827996
+-0.568231 0.0798874 -0.342219 -0.845772 -0.790258 0.310717 0.202105 0.202828
+-0.323885 0.914455 -0.873757 0.270622 -0.418957 0.719904 0.597644 0.907295
+0.257158 -0.916077 0.603025 0.131385 0.0668849 -0.797673 0.589164 0.158948
+-0.0432224 0.433686 0.764993 0.19622 0.482428 0.324204 -0.360954 0.177113
+0.957828 0.780848 -0.39585 -0.302662 0.276713 -0.250807 0.497336 0.330121
+0.0917771 -0.239933 0.755576 -0.0689747 0.942656 0.851844 -0.768862 -0.284016
+-0.680781 -0.207689 0.687366 -0.27144 -0.839248 -0.687103 0.336797 -0.677944
+0.497782 -0.586443 -0.629759 -0.997223 -0.0645083 0.937243 0.623351 -0.70684
+-0.138731 -0.673768 0.649323 -0.592869 -0.342837 0.51589 -0.681159 0.892454
+-0.617808 0.797262 0.280719 0.105536 -0.539847 0.769287 0.071249 -0.74514
+-0.990808 -0.95357 -0.0156943 -0.756002 -0.560972 -0.126089 -0.887808 0.634765
+-0.338516 -0.208635 0.597976 0.0854396 0.012734 -0.785142 0.0792855 -0.880097
+-0.0764062 -0.745109 -0.992707 -0.36499 0.335626 0.855709 0.324398 0.586782
+0.19424 -0.233436 -0.629849 0.356724 0.239352 0.532618 0.414879 -0.333027
+-0.758608 0.274271 0.53069 0.404052 -0.866642 0.713566 -0.901068 0.134162
+0.779362 -0.148483 0.543867 0.352114 -0.873935 0.186967 0.455569 0.725477
+-0.724292 -0.614634 0.202163 0.707401 -0.131517 0.454659 -0.95477 0.599232
+-0.20645 -0.719682 0.910262 -0.498215 -0.105908 0.163284 -0.735948 -0.488258
+0.549961 -0.24555 -0.872877 0.247513 0.442833 -0.847675 -0.36074 0.64803
+-0.252879 -0.0200819 0.59895 -0.920402 0.354448 0.528694 0.548263 -0.92867
+-0.25331 0.499176 0.650107 -0.41606 -0.0754911 0.498998 0.38674 0.882336
+-0.339236 -0.922157 0.543701 0.385575 0.725525 -0.253489 0.021898 -0.0273315
+-0.765082 0.00328447 -0.523069 -0.608791 0.636323 0.811651 -0.532138 -0.329503
+0.829887 0.628225 -0.187006 0.225173 0.577276 -0.211055 -0.892871 -0.483464
+-0.854714 0.858207 -0.0122937 -0.658461 -0.400685 0.0794606 0.850258 -0.797366
+0.0412844 0.667351 0.0407451 0.470619 -0.603677 0.0745575 0.539431 -0.254839
+-0.627035 -0.391491 -0.93397 0.931188 -0.307649 -0.0688708 0.878511 0.195199
+0.39852 0.737091 0.968778 -0.913558 -0.152581 0.64097 0.516574 0.0750405
+-0.719413 -0.496848 -0.0895111 0.0880705 -0.868255 0.0107875 -0.35242 -0.313344
+0.968694 -0.355047 0.0447438 0.633007 -0.656497 0.730452 -0.729791 0.0827981
+0.148828 0.428359 0.255626 0.258297 0.732308 -0.766279 0.352883 0.633439
+-0.497561 0.313801 -0.320826 0.0157509 -0.212151 0.255642 -0.647177 -0.782837
+0.606544 0.340345 -0.711952 0.899099 -0.794337 0.895916 -0.52872 -0.57984
+-0.213266 0.276505 0.797944 -0.713508 0.50813 0.499895 0.326735 0.807792
+-0.709922 0.730355 -0.852953 -0.357618 -0.322249 0.847351 -0.0743483 0.862197
+-0.260705 0.591657 -0.338952 -0.736816 0.627804 0.760506 0.0370344 -0.935321
+-0.99483 0.591093 -0.214169 0.230625 -0.845151 0.67705 -0.587658 -0.956223
+-0.714011 -0.811036 0.328978 0.0862574 -0.102706 0.907204 0.51428 -0.950143
+0.825537 -0.47859 -0.832021 -0.371021 0.147028 0.829249 -0.460161 -0.579437
+0.78764 -0.443974 -0.875969 -0.146768 0.489363 -0.810822 -0.505045 0.0578246
+0.18689 -0.509896 0.599836 -0.957962 -0.222421 -0.594202 -0.795124 0.227071
+-0.582764 -0.481441 0.65536 0.670812 -0.853464 -0.405088 0.645927 -0.484566
+0.852138 0.965099 -0.541339 0.838131 -0.910702 0.331916 -0.985499 0.0882578
+-0.900796 0.546121 -0.917633 -0.205875 -0.691595 -0.906553 -0.736063 -0.825395
+0.200625 0.893539 -0.447126 0.992227 0.620585 -0.866923 -0.306836 -0.676149
+0.396613 -0.814164 0.689558 0.428812 0.904269 0.100758 0.428217 0.480116
+0.740828 -0.670401 0.470159 0.184116 0.269109 0.902811 0.0948181 0.105362
+-0.470444 0.704059 0.497044 -0.460645 0.28168 -0.401993 0.682203 -0.101029
+-0.315868 -0.794748 -0.33912 0.868196 0.321008 -0.72829 -0.950654 0.864021
+0.94353 -0.773946 -0.640697 -0.321068 -0.16959 0.120698 -0.34633 -0.576954
+-0.25532 0.396661 -0.324702 -0.20864 -0.196708 0.0595977 0.627613 -0.274521
+-0.1019 -0.0184179 0.813906 0.879106 -0.524246 -0.839458 -0.195182 0.762441
+-0.452872 -0.80778 -0.10844 -0.422918 0.117921 -0.157016 0.418023 -0.899701
+0.381207 0.770573 -0.160566 -0.803347 0.828906 -0.860895 -0.0287614 -0.120912
+-0.375971 -0.196977 0.99154 0.848828 0.709757 -0.941375 0.413689 0.129763
+-0.135432 0.058013 -0.481544 -0.956331 0.43369 -0.175228 0.352469 -0.45887
+-0.271131 -0.964791 0.493779 -0.688609 -0.0275484 0.857738 -0.461904 0.0176501
+-0.452812 0.21217 0.541749 -0.0785204 -0.0615199 -0.57467 0.930401 0.455529
+0.701331 -0.634906 -0.981788 -0.771684 -0.175897 -0.00150364 0.658368 -0.544372
+-0.852321 0.837309 -0.811165 0.927336 0.684412 0.60988 -0.432303 -0.408333
+-0.566062 0.0970141 0.508099 0.97831 0.407016 -0.775956 -0.68734 -0.34894
+0.975476 -0.685599 -0.423073 -0.739336 -0.569095 -0.9524 0.934161 0.243014
+0.347246 -0.226405 -0.692922 -0.851449 -0.0457676 0.0100628 -0.497241 0.344657
+-0.391049 -0.257704 0.815436 0.99096 -0.134007 0.806396 -0.772571 -0.740668
+-0.774868 0.767908 0.147976 0.620459 0.00462954 -0.830532 0.41766 -0.390938
+-0.669933 -0.0416615 0.0964868 0.869981 -0.260919 0.786493 -0.0750642 0.878016
+-0.983086 -0.721285 0.0356617 -0.466093 -0.0409097 -0.0963076 -0.217036 -0.406273
+0.904678 0.12219 -0.0578239 0.892585 0.571189 0.146081 0.00117287 -0.323423
+0.9889 -0.551748 -0.438811 -0.625866 0.938955 0.696542 0.894238 -0.69931
+-0.0320403 0.00533449 -0.0125391 0.753212 -0.0913314 0.867907 0.159279 -0.660979
+-0.65511 0.657473 0.201508 -0.435361 0.59615 -0.955151 -0.941454 -0.812843
+-0.768966 -0.64707 -0.449595 0.887056 -0.269047 -0.0377617 0.0294012 -0.737474
+-0.313229 0.21805 -0.643576 0.899066 -0.824893 0.5781 -0.861668 0.327946
+0.862799 -0.0611898 0.783653 0.549268 0.493201 0.609317 -0.96656 0.556559
+0.0133684 -0.527867 -0.703127 0.911624 0.799844 0.554397 0.495858 0.721182
+0.43908 -0.711218 -0.72413 -0.164134 0.957587 0.566734 -0.608718 0.721829
+-0.473956 0.239482 -0.291373 0.758672 0.99164 0.0452519 -0.835765 -0.406954
+0.335401 0.223394 -0.931716 0.52907 -0.810138 -0.0436743 -0.755524 -0.228909
+0.290202 0.439833 -0.709652 0.499486 -0.757529 0.487796 -0.750841 0.0809009
+-0.528943 0.567796 0.533682 0.991938 0.743309 -0.487622 -0.110081 0.0541543
+-0.548527 0.988634 -0.336844 0.56271 0.9076 0.286145 -0.505793 0.621384
+-0.222138 0.891092 -0.0905769 0.514477 -0.444262 0.257015 -0.790373 0.424378
+0.763666 -0.830123 -0.806007 0.386166 -0.13065 -0.874418 0.711468 0.977072
+-0.667453 0.774677 0.215033 -0.103045 -0.359772 -0.503882 -0.821811 -0.279899
+0.776916 -0.208781 0.846638 -0.839401 0.39327 0.574632 -0.789329 0.542864
+-0.228708 -0.734394 -0.224797 -0.509429 0.373326 -0.490687 -0.637614 -0.19727
+-0.238996 0.120953 -0.416065 0.242201 0.656018 0.727064 -0.980073 -0.857004
+-0.926125 -0.744431 0.0295663 -0.495074 0.878549 0.628895 -0.793609 -0.138656
+-0.687222 -0.23321 -0.664315 -0.715454 0.435467 0.0495123 0.488384 0.419708
+-0.470442 0.975884 0.0590026 -0.905845 -0.438891 -0.219989 -0.693973 0.177237
+-0.941501 -0.884588 0.69855 -0.874291 0.752482 -0.881729 0.708262 -0.93316
+-0.508954 0.0458766 -0.792059 -0.182322 0.984095 -0.582856 -0.185611 0.265929
+0.244162 -0.261541 -0.964351 -0.329159 -0.735968 0.51962 0.651772 0.467936
+-0.106126 -0.597183 -0.750275 0.482004 -0.280488 0.357224 -0.949281 -0.8064
+0.298672 0.657303 0.309271 -0.0669985 -0.217628 -0.200461 -0.894731 0.864302
+0.498891 -0.484504 0.237507 -0.516705 0.383922 -0.581693 -0.822732 -0.503028
+0.460454 -0.91012 0.923092 -0.684988 0.413275 0.658274 -0.0419288 -0.0735897
+-0.831778 0.507878 0.98194 -0.778413 0.35959 -0.329035 0.650998 -0.333126
+-0.756533 -0.845052 -0.314941 -0.76689 0.201538 0.722158 0.699828 0.414017
+-0.0437371 -0.12473 -0.860191 0.661535 -0.500183 0.706605 -0.769794 -0.976089
+0.466445 0.562851 -0.868875 -0.225531 -0.177627 0.927466 0.357603 -0.811161
+0.00656017 0.965209 -0.148819 -0.338462 -0.431935 -0.27027 0.274063 0.634862
+-0.347729 -0.0305922 0.0709034 -0.29585 -0.187039 -0.957732 -0.108768 -0.166879
+-0.674004 -0.844242 0.167912 0.562829 0.375394 -0.314415 -0.644618 -0.904611
+-0.0256775 0.43706 0.167703 -0.122045 0.702429 -0.717653 0.831582 0.293733
+-0.620773 0.406897 -0.0985464 -0.964972 0.775873 -0.220469 -0.787068 0.493256
+0.651429 -0.688814 -0.243897 -0.40135 0.00912411 -0.675226 0.139356 -0.863417
+0.931631 -0.193099 0.478894 0.256669 0.472224 -0.192646 -0.34663 0.883549
+0.882007 0.820255 0.0359719 0.569316 -0.138325 -0.784179 -0.684112 0.0195816
+-0.844701 -0.190503 -0.558551 -0.612184 0.918313 0.829079 0.830881 -0.854826
+-0.578573 0.39969 0.22331 -0.391696 0.208646 0.250025 -0.0790775 0.789384
+0.96743 0.354552 -0.997684 0.797462 0.754953 0.419684 0.251792 0.294725
+-0.302599 -0.104254 0.211014 -0.756029 -0.982209 -0.00602782 -0.806971 -0.277436
+-0.284363 0.133574 0.394061 0.224389 0.51931 0.517874 -0.223655 -0.707307
+-0.971639 0.516331 0.670884 -0.881815 0.686452 0.538432 -0.316087 -0.905712
+-0.651487 0.346597 0.234044 -0.991198 -0.379236 -0.802704 -0.198115 -0.917887
+0.899136 0.905529 0.347404 -0.793734 0.169635 -0.438555 0.598018 -0.218781
+-0.680534 0.0772033 -0.554705 0.829286 -0.760164 -0.51107 0.873015 -0.793705
+0.968168 0.948096 0.743962 0.408089 -0.736592 -0.357396 0.269436 0.0816785
+-0.558592 0.196167 -0.937529 -0.436037 0.854778 0.488349 0.850979 -0.955412
+0.0536734 -0.176532 -0.711782 -0.436239 -0.964954 -0.104726 0.451129 -0.326247
+-0.486387 0.102119 0.234256 -0.421192 0.679901 0.133501 -0.368829 -0.530326
+-0.0808063 -0.57331 0.284529 0.682669 0.736315 -0.853189 -0.689337 -0.514051
+0.515633 0.838775 -0.400992 0.477558 0.549116 0.858222 0.323168 -0.729244
+0.36016 0.0528929 -0.922323 -0.0994507 -0.62948 0.634095 -0.200443 -0.442672
+0.83715 0.192852 0.32838 -0.266968 0.0421914 -0.866337 -0.0508683 0.0878756
+-0.97411 0.506679 0.296452 0.578632 -0.620198 -0.611143 0.364563 0.0918438
+-0.938963 0.391992 0.431048 0.565726 -0.34927 0.359105 0.289028 -0.672549
+-0.707697 -0.939126 0.812606 0.497211 0.457878 0.0245149 -0.687045 -0.38471
+0.0381184 -0.378653 0.931786 -0.419089 -0.0757799 0.439691 -0.997946 -0.12534
+-0.686592 -0.432369 0.27564 0.569506 0.647944 0.590072 0.0103596 -0.800668
+0.896275 -0.992825 -0.0750274 -0.100862 -0.204293 -0.211665 -0.677872 0.559411
+-0.536664 0.0907233 -0.338986 0.992628 0.352235 -0.264914 0.547069 0.150407
+0.775416 -0.92695 -0.434443 0.252423 0.317467 -0.331904 -0.557603 0.565371
+0.602662 0.408342 -0.512091 0.0030728 0.139674 -0.108054 -0.57626 -0.921403
+-0.692144 -0.171722 -0.433231 0.755881 0.675493 -0.733586 -0.173277 0.638359
+0.872178 0.637127 -0.924613 0.0491817 -0.757412 -0.887708 0.139245 0.951704
+-0.138399 -0.605358 -0.986579 0.587042 -0.076026 -0.85188 0.148138 -0.496719
+-0.188072 0.651901 0.729753 -0.958166 0.7573 0.628388 -0.823715 -0.319704
+-0.319146 0.212294 -0.851686 -0.528566 0.0971639 -0.779318 0.00756588 0.805455
+0.410997 -0.456638 -0.444694 0.38088 -0.348983 0.326262 -0.80014 0.684784
+-0.0217769 -0.728861 -0.271593 0.0100282 -0.139043 -0.569559 0.490239 0.291991
+0.191743 -0.956743 -0.0334999 -0.362208 -0.232509 0.187365 -0.267504 -0.98481
+-0.314604 0.807347 -0.0374692 0.457703 0.347372 -0.350642 0.503465 0.149619
+0.291539 -0.508797 -0.865771 -0.868354 0.657237 0.425768 0.342987 0.266782
+-0.242675 -0.0154465 0.336309 0.0771463 -0.549974 0.786037 0.777519 -0.661664
+0.199167 0.488603 0.925073 -0.294805 0.427892 0.976814 0.354408 -0.730521
+0.00497342 -0.723675 -0.157526 -0.221206 0.997355 -0.555464 0.591398 0.933278
+-0.798625 -0.680423 0.0390295 0.611335 -0.831012 -0.984318 0.804702 -0.591644
+-0.740838 -0.488049 -0.126706 0.10938 -0.999446 0.447424 -0.0374583 -0.409728
+-0.136065 0.476407 0.34104 0.968761 -0.469901 0.046042 0.177945 0.473385
+0.84876 0.810754 -0.282497 -0.835941 -0.920369 -0.480077 -0.621141 -0.380246
+0.877481 0.0974775 0.323491 0.188718 -0.294873 0.522551 -0.783575 -0.141574
+0.982167 -0.989738 -0.755443 -0.76878 0.636702 0.221192 0.254922 -0.323343
+-0.548756 0.730088 -0.321251 0.819124 0.262294 -0.0876072 -0.0599837 0.787316
+-0.0506024 0.647385 0.836957 0.103114 0.133693 -0.42191 -0.588739 -0.832526
+0.185687 0.468747 0.317314 0.650843 0.576084 -0.918716 -0.75977 0.142646
+0.346399 -0.424681 0.472921 0.880896 -0.71694 -0.440967 -0.489734 0.906221
+-0.380201 -0.530744 -0.21443 0.339864 -0.725634 0.794353 -0.489858 -0.268242
+-0.671276 0.208873 -0.833296 0.70882 -0.627373 0.955747 -0.991261 -0.73811
+0.732094 0.437701 0.880486 -0.0873656 -0.613097 -0.218302 -0.794763 -0.770974
+-0.126436 -0.374331 -0.403368 -0.154457 -0.686789 0.619502 0.80511 0.267929
+-0.326694 0.681777 0.933906 -0.157628 0.805015 0.426671 0.931648 -0.786719
+0.636221 -0.648427 -0.536288 -0.586465 0.306729 0.177567 0.979236 0.862653
+-0.0380231 -0.102955 0.719217 -0.870774 -0.664426 -0.676106 -0.65329 -0.745433
+-0.239066 -0.0182126 -0.715331 -0.199561 -0.561092 0.132848 0.42576 0.25964
+-0.0566575 -0.170979 -0.32052 0.879041 0.321288 0.269939 0.128845 -0.114174
+-0.294883 -0.418883 -0.266252 0.697484 0.0452615 -0.45592 -0.426135 -0.532594
+0.798272 0.133508 -0.362077 0.879304 0.884913 0.00422937 -0.061545 -0.248595
+-0.984744 -0.245919 -0.653422 0.0505498 -0.0114522 0.784298 0.77642 -0.986146
+0.536832 0.965122 -0.261572 0.951519 -0.55871 0.249804 0.553907 0.210255
+0.936155 -0.623036 -0.254564 0.423069 0.305309 0.653012 -0.439647 0.0252214
+0.584988 -0.127235 0.974026 0.723807 0.170148 0.759473 0.144984 0.770854
+-0.356029 0.451229 0.575067 0.576722 0.258416 -0.814711 -0.165241 0.51859
+-0.00813152 0.752535 -0.677814 -0.864048 0.229436 0.284087 -0.167891 0.436235
+0.00788004 -0.102295 -0.940285 0.828367 0.511707 -0.490535 0.0463589 -0.213364
+-0.638034 0.211723 0.306107 -0.073834 0.19495 -0.447647 -0.310053 -0.0380121
+-0.515999 -0.501062 0.472227 -0.0865003 0.589588 0.551636 -0.7153 0.459155
+-0.036833 0.334123 -0.22177 -0.805148 -0.0341958 0.527742 0.532444 -0.688905
+-0.179861 0.0147959 0.675828 0.865579 0.975198 -0.319942 0.808325 -0.250338
+-0.643869 -0.34536 -0.93296 -0.186212 -0.219868 -0.801813 0.492328 -0.592899
+0.606531 -0.506318 -0.447056 0.589777 0.565654 0.146293 -0.745378 -0.0403156
+0.964409 0.940273 -0.689325 0.305467 0.335155 -0.140431 -0.500529 0.319785
+0.960005 0.964473 -0.439225 -0.519572 -0.549881 0.909096 -0.0727993 0.529965
+0.476247 0.710058 0.0500236 0.943053 0.648911 0.195795 0.267082 -0.0229792
+-0.691105 0.306259 0.928882 -0.980668 0.0603002 -0.906808 0.0815965 -0.541805
+0.472548 -0.17892 0.405938 -0.920382 -0.815499 0.173898 -0.0650522 0.963914
+-0.192959 -0.605192 0.535509 -0.538357 0.474006 -0.749047 0.450723 0.391387
+0.689136 0.572692 -0.624065 -0.763781 0.821114 -0.732775 -0.354682 0.392788
+-0.428872 0.370659 -0.689162 -0.383518 0.158126 -0.362763 -0.298015 0.397011
+0.761692 -0.52822 0.767065 -0.411002 -0.563805 -0.677213 -0.584136 0.977493
+0.0483114 0.867581 -0.369478 -0.80581 -0.754131 0.452109 -0.771292 -0.680477
+0.710463 0.280461 0.10484 0.137275 0.104904 0.697411 -0.321435 0.515745
+0.85039 -0.110204 -0.530962 -0.495014 0.234349 0.964586 -0.413498 0.0765348
+0.778326 0.915482 0.428292 0.983919 -0.101911 0.560052 0.596412 -0.940664
+-0.00820141 0.341059 0.0756779 -0.65676 -0.291455 0.102098 -0.557903 0.142224
+0.382496 -0.451592 0.0654742 0.509533 -0.439345 -0.881442 -0.877415 0.66565
+0.381352 0.695412 -0.758496 -0.646606 -0.861144 -0.1932 0.444279 -0.417724
+-0.21722 -0.0174348 0.0919835 0.0670942 -0.478538 0.0741871 0.364884 0.225702
+0.754242 -0.240633 -0.405087 -0.57317 -0.875154 -0.369001 -0.646432 -0.0200557
+-0.257041 0.823314 -0.296069 -0.5396 -0.811253 0.782266 0.795831 -0.942367
+0.284828 -0.271832 -0.0547863 -0.048904 0.124154 -0.80463 -0.445958 0.481062
+0.750048 -0.618551 -0.625226 -0.102515 0.25261 0.583137 -0.903711 -0.397957
+0.628092 0.465506 -0.519213 -0.498953 -0.765629 0.893854 -0.668678 0.538349
+0.549358 0.544621 -0.197553 0.427111 0.419775 0.402888 -0.714201 -0.96057
+-0.789757 -0.24699 -0.690532 -0.754698 -0.507021 0.782456 0.134618 0.138965
+-0.145837 -0.907271 -0.380181 -0.171594 -0.887093 0.151408 0.0399608 -0.967782
+-0.239428 -0.868745 0.243802 0.786926 0.398945 -0.851344 0.113376 0.420488
+-0.474001 -0.71242 0.371567 -0.243781 -0.562235 0.783651 -0.0692558 -0.240311
+-0.573088 0.227966 0.506406 -0.409247 0.0447546 -0.362153 -0.846627 -0.0100686
+0.218826 0.0538275 0.471391 0.664573 0.659483 -0.246342 0.205041 -0.376889
+-0.56742 -0.297886 0.983211 -0.0619457 0.187484 -0.392358 -0.445509 0.532601
+0.151181 -0.226808 -0.781219 -0.88863 0.514738 0.578417 -0.291603 -0.377932
+0.320535 -0.259863 0.585372 0.367507 0.199292 -0.199893 -0.165519 -0.916644
+-0.193659 -0.323366 0.144188 -0.447858 -0.932131 -0.789041 -0.819976 -0.512463
+-0.785872 0.654538 -0.117231 0.182413 0.611999 -0.468289 -0.858888 -0.579697
+0.890708 -0.850613 0.956204 0.803646 0.691517 0.340154 -0.578665 -0.486647
+0.775513 -0.429141 0.722566 0.908044 0.542147 0.753112 -0.232435 0.267161
+0.339155 0.0100213 -0.250798 0.470405 -0.167442 0.62331 0.96121 0.290845
+-0.525227 0.816981 -0.111607 0.113413 -0.737994 0.713929 -0.515309 -0.511189
+-0.0366259 0.105772 0.733191 -0.174168 -0.0891108 0.0959599 0.12254 -0.549979
+0.0936712 0.983153 -0.748721 -0.0702506 -0.539602 -0.967965 -0.953551 0.779744
+0.439294 0.591822 0.524557 0.83802 0.936916 0.15132 -0.145569 -0.70357
+0.0577606 -0.890423 0.645814 0.52633 -0.140477 0.629657 -0.0911898 -0.867438
+0.641718 0.872184 0.674205 0.925779 0.969978 -0.692878 -0.541211 0.932084
+0.127287 0.339392 -0.436132 0.446942 0.323184 -0.427856 0.0450793 -0.547228
+0.571856 0.456378 -0.212494 0.412581 0.60747 0.457908 -0.730449 -0.432328
+0.716379 -0.282181 -0.149145 0.423577 0.531272 -0.192534 0.522158 -0.0139067
+0.392458 -0.43031 0.440483 -0.420511 -0.0837572 0.349625 0.878125 0.612409
+-0.48793 0.610584 -0.878666 -0.294242 -0.488136 0.777345 -0.504048 0.782072
+-0.807702 -0.917127 -0.899227 0.823244 -0.415499 -0.734847 0.873002 0.342213
+0.205201 -0.138148 -0.752051 0.703676 0.189249 0.888606 0.0206145 -0.531954
+-0.300858 -0.938632 -0.328701 -0.544132 -0.749591 -0.9912 -0.345828 -0.455907
+-0.595073 -0.678245 0.866344 0.465099 -0.509859 -0.457841 0.466966 0.383943
+-0.060213 -0.710382 0.0313389 0.283458 0.187496 0.310622 -0.595371 0.601871
+0.562767 0.0377798 0.76085 -0.892 -0.0911599 0.265912 -0.618319 0.952178
+-0.840834 0.821741 -0.975384 -0.725079 0.603053 -0.639858 -0.633069 -0.808539
+-0.538151 -0.948088 -0.51558 0.274384 -0.0619097 -0.0826329 0.180303 -0.855399
+0.42251 0.144264 0.293215 0.190766 -0.715834 0.112131 0.430095 -0.493941
+0.0027466 0.256351 0.821961 0.0155914 0.978361 0.325366 -0.152935 0.713048
+0.155912 -0.702545 -0.559075 -0.621663 -0.499971 -0.790038 -0.723394 0.270965
+-0.452068 0.0941228 -0.507194 0.537582 -0.615952 -0.473029 -0.654752 0.16797
+0.975202 -0.278628 -0.37559 -0.459865 -0.494414 -0.522035 -0.700555 -0.713496
+-0.31939 -0.214 -0.179502 0.597574 -0.448232 0.899591 -0.698854 -0.890447
+-0.75038 0.689621 0.691946 -0.400412 0.98447 0.824083 -0.540418 0.273547
+0.751513 0.992589 0.44151 -0.176448 -0.258649 -0.570728 0.990564 0.825067
+-0.288471 -0.175124 0.728809 -0.856118 0.963137 -0.371374 -0.121704 -0.722621
+-0.560635 0.256014 0.783282 -0.0436413 -0.46044 0.528746 -0.729818 0.505957
+-0.457373 0.502338 -0.259939 -0.591323 -0.379924 0.0464475 -0.371124 0.390725
+0.736234 -0.0702791 0.764597 -0.0402704 0.144329 -0.954984 -0.329526 -0.484438
+-0.41639 -0.726601 -0.351723 -0.826754 0.725462 -0.0631057 0.275125 0.947095
+0.966303 -0.979173 -0.981785 0.536177 -0.937156 0.926273 -0.244539 -0.213392
+-0.430865 -0.765427 -0.626624 -0.903924 -0.899377 -0.169289 -0.681021 0.0820862
+-0.110559 0.0761014 -0.110221 0.520959 -0.201519 -0.922766 -0.592008 0.110752
+-0.781808 0.835112 -0.557839 0.615583 -0.934306 -0.409004 0.105904 -0.609772
+0.187986 -0.536589 0.525622 0.965509 0.994878 0.440683 -0.782722 -0.10285
+0.221736 0.238921 -0.507302 0.701848 -0.969081 -0.654852 -0.0478535 -0.668043
+0.513093 0.149467 -0.55545 0.51696 -0.989508 -0.887487 0.503948 -0.320804
+0.36926 -0.125893 0.751347 0.923279 -0.23921 -0.704303 -0.649616 0.9348
+-0.882768 -0.695332 -0.652699 0.769483 0.346243 0.429311 0.445164 -0.549846
+0.900309 0.00963954 0.121683 -0.144578 -0.731711 -0.693846 -0.0810501 0.877884
+-0.448573 0.669242 0.976741 -0.0972122 0.531226 0.497216 0.685044 0.606398
+-0.793498 -0.0199782 0.378773 -0.54014 0.33045 -0.0403891 -0.830269 0.126731
+0.957517 -0.0318155 -0.20254 0.284324 0.87273 -0.908624 -0.0335001 0.314938
+0.225949 -0.686549 0.151156 0.391466 -0.679554 -0.284395 0.994301 -0.90876
+-0.395586 0.774109 0.712459 0.352602 -0.635886 -0.420902 -0.850352 -0.318036
+0.48513 -0.834401 -0.434297 0.439986 0.729257 0.862742 0.0441958 -0.901788
+-0.638434 0.273707 -0.367312 0.0578474 0.877717 0.185739 -0.505204 -0.638063
+0.241206 -0.831992 -0.965704 -0.586159 0.169424 -0.585115 -0.0547658 0.50218
+0.753684 0.768991 -0.501 0.317682 -0.0585389 0.3068 0.772707 0.169542
+0.977906 -0.519445 0.226863 -0.733432 0.296144 -0.919477 0.657372 -0.853784
+0.00631976 0.662154 -0.86129 0.311983 -0.275507 -0.42741 0.360565 -0.904424
+-0.451835 0.518714 0.294816 0.70085 0.279951 0.201791 -0.78446 0.367603
+0.0279764 -0.698014 -0.872753 0.227458 -0.222103 -0.598081 -0.595641 0.59122
+-0.0892559 -0.754093 -0.131712 0.202004 -0.491409 0.718173 -0.168244 -0.754166
+0.0358621 0.146345 0.252568 -0.897618 -0.743443 0.590545 0.735712 0.129365
+0.535206 -0.549116 -0.322435 -0.120387 0.326257 0.857455 0.926268 0.846448
+-0.844808 -0.0579436 0.413073 -0.681191 -0.157148 -0.991291 0.982462 -0.372447
+-0.371312 0.474717 -0.659698 -0.250764 0.351652 -0.248735 0.376753 0.404496
+0.122821 -0.375758 -0.583352 0.390892 0.441815 0.611139 -0.750248 0.690489
+-0.619211 0.652251 -0.232602 -0.023077 0.510154 0.514604 0.707036 -0.088341
+0.365802 -0.288358 0.498475 0.622598 0.0884513 -0.502601 -0.0398956 -0.241912
+-0.449921 -0.0662473 -0.482305 -0.56115 0.844889 -0.968386 -0.236661 0.958662
+0.716409 0.464967 -0.63852 0.321524 -0.64652 0.754909 -0.585983 -0.554646
+-0.447716 -0.274164 -0.845825 -0.677412 0.299511 0.429741 -0.00783276 -0.625215
+-0.0666598 0.941849 -0.721826 0.175247 0.166758 0.946796 -0.441443 -0.545678
+-0.280745 -0.558744 0.0782417 0.822043 0.0373034 -0.767634 0.334889 -0.204475
+0.304197 -0.923993 0.924242 0.340491 0.826447 0.652876 0.636878 -0.00527523
+0.229423 0.0912072 -0.798967 -0.846361 -0.634938 -0.855099 -0.602047 -0.742035
+-0.899023 -0.613459 0.892855 0.0549564 -0.714598 0.818618 0.541846 0.0304994
+0.678134 -0.977333 -0.672914 0.1998 0.0666526 -0.0546959 -0.875247 0.177203
+0.386777 0.476735 0.0564501 0.607217 0.515895 0.299154 0.86858 -0.929842
+0.685959 0.19825 0.326267 0.93105 -0.2731 -0.223146 -0.388904 0.644691
+0.0917231 0.456785 0.300217 -0.418998 -0.756469 -0.18787 0.0257972 -0.510528
+0.774582 0.108108 0.217937 -0.678055 -0.857652 0.257642 -0.23537 -0.459661
+0.492765 0.329134 -0.750469 0.265036 -0.549458 0.800931 0.45043 0.654937
+0.545092 -0.405946 0.97829 -0.241211 -0.761309 0.0522561 0.489279 -0.181044
+0.595806 0.301203 0.00175219 0.0346104 -0.871983 -0.316493 -0.35869 0.750833
+-0.356902 -0.83915 0.463834 -0.799833 -0.765589 -0.00996312 0.618092 0.925763
+0.17807 0.475797 0.984541 0.0352228 0.910344 0.897265 0.64628 -0.943552
+-0.213075 0.931375 0.390993 0.759357 0.855887 -0.664187 -0.45863 -0.557136
+0.544188 -0.349897 -0.304036 -0.914146 -0.977609 -0.204913 -0.610554 -0.890574
+0.677751 -0.962213 -0.276768 -0.965943 -0.742092 0.744066 0.72906 0.803358
+-0.920121 0.851578 -0.508072 -0.749494 0.458986 0.72717 0.883557 0.211832
+-0.429776 -0.814513 -0.520569 0.331702 -0.0368137 0.40048 -0.0194574 0.286821
+-0.0945039 0.501176 -0.259392 -0.201334 -0.817095 0.110605 -0.38989 -0.556894
+-0.888289 0.419195 -0.941187 -0.703618 -0.74757 0.83368 0.397319 -0.648898
+0.140283 0.236167 0.576773 0.174286 -0.0770867 -0.970377 -0.507436 0.331816
+0.926226 -0.949527 -0.344011 -0.362622 0.476272 0.5664 -0.0610025 -0.926603
+-0.812599 0.379471 0.816848 -0.460453 0.0192854 -0.532238 0.64875 0.290428
+-0.704732 0.344577 -0.986519 0.380786 -0.963709 -0.298283 0.160948 0.725572
+-0.37787 -0.355922 0.520489 0.529633 0.463511 0.562887 0.558426 -0.21356
+0.711711 0.382962 -0.0321731 -0.168244 -0.891085 0.885591 -0.869937 0.338166
+0.594262 -0.141912 -0.688893 0.99811 0.739581 -0.379 -0.838501 0.737623
+-0.240775 -0.31584 -0.977945 0.220277 -0.700471 0.121494 0.786246 -0.609107
+-0.469262 0.615444 0.822334 -0.938985 0.00972204 0.201078 0.952333 0.219098
+0.161819 -0.58996 -0.709192 0.0850985 -0.350235 -0.0183066 -0.962063 0.552786
+-0.322579 0.535901 0.0831581 -0.0385795 -0.86019 0.506289 0.108535 0.627683
+0.653316 0.581975 -0.428346 -0.327397 -0.533502 0.191921 -0.835736 -0.671013
+0.23607 -0.764082 -0.427963 0.936417 0.812322 0.62325 -0.225402 0.473908
+0.360824 -0.31927 0.223129 -0.865486 -0.166944 0.156986 0.205085 0.00717569
+-0.560244 -0.836575 0.121307 0.962825 -0.239955 0.941542 -0.87634 0.756335
+0.379483 0.672066 0.920528 -0.425731 -0.8055 0.618419 -0.681839 0.566572
+-0.541926 -0.377947 0.260811 -0.651411 0.721151 0.796162 -0.541762 -0.576999
+-0.181808 0.639802 -0.975259 -0.663825 -0.118761 0.935995 0.850632 0.623139
+-0.0280611 -0.100807 -0.0115205 0.769508 0.975921 0.36622 -0.439825 0.182228
+-0.518802 0.677906 -0.922765 -0.650697 0.38278 -0.802091 -0.441567 -0.0682614
+-0.0606541 -0.82269 -0.757103 0.451062 0.68341 -0.21763 -0.189813 -0.719505
+0.328524 0.374754 -0.829575 -0.233745 0.603112 0.115447 -0.205495 0.495732
+-0.940007 -0.372071 -0.0567001 0.0815177 0.237495 -0.165586 0.102285 0.106442
+0.0587672 0.203151 -0.617669 0.246597 0.766063 -0.0441826 0.225723 -0.375256
+0.595638 -0.8969 -0.859182 0.924258 -0.850319 0.619827 -0.336612 0.87471
+0.253623 -0.703156 0.392904 0.754309 -0.413597 -0.550302 -0.466837 -0.0554813
+-0.171574 0.760164 -0.746511 -0.449427 0.861316 0.908235 0.939748 0.900948
+-0.866745 -0.989101 -0.105858 0.746067 0.880719 0.0791559 -0.148423 0.567304
+-0.340772 0.342627 -0.418369 0.0183479 0.663974 -0.210388 0.566031 -0.307053
+-0.796909 -0.861782 -0.41856 0.904874 0.257222 -0.849611 0.135816 -0.837315
+0.573607 0.976107 0.647015 0.169306 -0.0390818 -0.681147 -0.2512 0.186309
+-0.79281 -0.465743 -0.873903 0.415853 0.929572 0.928767 -0.917676 0.389418
+-0.189122 -0.81393 -0.482353 -0.945896 0.204562 -0.551815 -0.623091 -0.180186
+-0.601643 -0.736529 0.0744873 -0.971781 0.767349 -0.0454771 -0.0333532 0.370712
+0.953419 0.752331 0.167843 0.242817 0.792761 -0.455219 0.738609 0.422799
+0.683497 -0.156342 0.972546 -0.166608 0.434767 -0.492561 -0.635644 -0.262027
+0.0969455 -0.986278 -0.427855 0.499039 0.872608 -0.285313 0.861969 -0.00726473
+0.568782 -0.47187 -0.660013 -0.193908 -0.924188 -0.304503 0.194021 0.548087
+-0.395025 0.130907 0.458495 -0.657022 0.507126 0.566483 0.343297 -0.153337
+-0.164236 -0.93546 0.139193 0.758905 0.657126 0.0436321 0.708452 0.318435
+0.74236 -0.281163 0.462817 -0.485953 0.922327 0.551694 0.232885 -0.525846
+-0.455437 0.928112 0.328556 -0.227581 -0.097357 0.554065 0.944684 -0.795896
+-0.399629 -0.151192 -0.272881 0.384818 0.643247 0.503916 -0.919137 0.262122
+0.267216 -0.389761 -0.716136 0.124153 -0.183209 0.203462 0.558165 0.467073
+0.663323 0.184449 0.388718 0.0287672 -0.30326 0.426009 -0.0135387 -0.970393
+-0.846424 0.765307 0.654113 0.169023 0.428073 -0.972336 0.838171 -0.048438
+0.918883 -0.599371 -0.639186 0.707787 0.0389316 -0.500555 0.539954 0.572245
+0.546336 -0.851287 -0.571707 0.843092 -0.0696237 -0.77709 0.828392 -0.670245
+0.256247 0.170751 -0.74507 -0.916481 -0.198322 -0.0422062 0.201764 0.303284
+0.707147 0.538474 -0.46604 0.768481 0.450826 0.78801 -0.320954 0.0529201
+-0.457465 0.713165 0.261461 0.500716 -0.761406 0.0585499 0.266564 -0.194963
+0.0469887 0.372271 -0.814744 -0.493067 0.986417 -0.220578 -0.147642 -0.290298
+0.865739 -0.843325 -0.586935 0.558152 -0.607688 0.133677 -0.314835 -0.874994
+-0.28407 -0.0310837 -0.244577 -0.499961 0.0831651 0.611807 -0.803031 -0.324554
+-0.674089 -0.114628 -0.869776 -0.68684 -0.680338 -0.13748 0.968537 0.226829
+-0.106497 0.826638 0.175156 -0.690683 -0.20081 -0.663019 0.527855 -0.215508
+-0.569968 0.224708 -0.833994 -0.342232 0.560923 -0.520778 -0.75234 0.382951
+0.134161 -0.208342 -0.427726 -0.173193 -0.332348 0.299537 -0.234726 0.832925
+-0.402892 0.44751 0.670677 0.982216 -0.161869 -0.224028 -0.924491 0.755886
+0.124148 0.31867 0.241076 -0.869214 0.756065 -0.1096 0.973246 0.939339
+-0.804345 0.0404028 0.366816 -0.112333 0.48207 0.594207 0.0851084 -0.78472
+0.950464 0.0877894 0.237575 0.701777 -0.793751 -0.181089 0.0768191 0.438248
+-0.0821008 -0.0783405 0.501966 -0.543472 -0.125108 0.84544 0.580949 -0.127013
+-0.437705 -0.799327 -0.51293 -0.704008 0.559853 -0.676329 -0.188623 0.670392
+0.371978 0.763898 -0.481408 0.020204 -0.502421 0.773839 0.95058 0.179744
+-0.819678 0.051496 0.962227 -0.0892686 0.250977 0.594883 -0.246833 0.437308
+0.76584 -0.625579 -0.36399 0.667921 -0.30947 0.244496 -0.975459 -0.113815
+-0.52928 -0.580881 -0.430803 0.00414179 0.35355 -0.964707 0.839863 0.703258
+0.369541 0.682136 -0.0195639 0.372471 0.778789 0.0287528 0.940356 -0.240733
+-0.0878356 0.146325 -0.439308 -0.206156 -0.573423 -0.350959 -0.323891 -0.810204
+0.0112959 -0.249291 0.0271747 0.649374 0.942587 0.21371 -0.906037 -0.744209
+-0.010731 0.991442 0.885706 -0.109002 -0.189258 -0.389477 -0.452456 0.0842571
+0.878999 -0.117072 0.271111 0.329515 -0.921645 -0.948288 0.441989 0.526507
+0.780293 -0.439826 -0.826501 -0.532999 -0.733558 -0.876879 0.532704 0.378396
+-0.0936228 0.4803 -0.741781 0.00110437 -0.240193 -0.398467 -0.376829 0.945627
+0.856679 -0.857759 -0.661542 0.217709 0.00500074 0.621913 0.763219 -0.193151
+0.385666 -0.573166 -0.553545 -0.0550383 0.716349 -0.443558 0.531387 0.874882
+0.735574 -0.452782 0.862433 0.816191 -0.490542 0.127588 0.908425 0.535995
+-0.742564 -0.433178 0.915441 0.429457 0.741941 0.777874 -0.824876 -0.492205
+0.928933 0.595887 0.555872 -0.506634 -0.190822 0.405726 -0.280609 -0.896837
+0.163702 0.249171 0.255146 -0.533572 -0.378421 0.745034 0.750554 -0.783449
+-0.320676 -0.344093 0.0856638 0.164454 0.249587 0.959115 0.676873 0.531421
+0.694168 -0.948914 0.284541 0.549565 -0.392633 0.754276 -0.714306 -0.735648
+-0.190019 -0.52543 -0.05979 -0.120959 0.522829 -0.255097 -0.0403621 -0.7353
+-0.328844 -0.0182174 0.11135 -0.477302 0.791178 0.0611149 -0.0462498 -0.175987
+0.269369 -0.929168 -0.726463 0.54813 -0.937998 0.745038 -0.293154 -0.654064
+0.551288 -0.502471 0.486128 0.651546 0.369143 -0.349521 0.144616 -0.109417
+0.765235 0.877474 -0.845408 0.351489 -0.63105 -0.769469 -0.457141 -0.234768
+0.311318 0.300883 0.299567 -0.327209 -0.576271 -0.643474 -0.360074 0.981788
+0.981298 0.608698 0.0826749 -0.114287 0.743939 0.49706 -0.566342 -0.879508
+0.0800737 -0.893772 -0.912034 0.187454 -0.692667 0.522734 0.0485591 -0.645851
+-0.324429 -0.700755 0.267917 0.0402615 -0.699743 0.992684 -0.579391 -0.431563
+0.996279 -0.924962 -0.939793 0.920964 0.689077 -0.395117 -0.017921 -0.216873
+0.0636556 0.895646 -0.317375 -0.733031 -0.701854 -0.490877 -0.198355 0.129399
+-0.687348 0.719909 0.641067 0.916343 0.316081 0.816246 -0.221022 -0.14204
+0.0855796 0.67265 -0.562649 -0.147528 -0.39122 -0.611359 -0.43629 0.80869
+-0.922597 0.76178 -0.862715 -0.372038 -0.671139 0.477378 -0.502672 -0.808751
+0.253303 0.457268 0.831574 -0.773127 -0.483561 -0.24741 0.957302 -0.929012
+0.197971 -0.53769 -0.109346 0.948488 -0.686124 0.0339448 -0.118122 -0.519184
+-0.844502 0.692427 -0.688552 -0.532634 -0.759507 -0.260971 -0.796699 -0.404532
+0.0865159 -0.780443 -0.893265 0.286129 -0.963133 0.404368 -0.106939 -0.754019
+0.856322 -0.56223 0.490658 -0.128994 -0.070527 0.611366 0.172883 -0.0892844
+0.104858 0.1888 -0.648231 0.405203 0.182899 -0.215067 -0.680568 0.415602
+-0.197065 0.405019 -0.680563 0.489857 0.7812 -0.000321634 0.251133 -0.163168
+-0.0828464 -0.845147 0.138025 0.0712586 0.561523 0.418024 -0.0945405 -0.772312
+0.0421709 -0.603521 -0.893089 -0.310384 0.338777 -0.285234 -0.235222 -0.849502
+0.425383 0.769619 -0.354696 -0.719294 -0.107823 0.440272 0.985391 -0.252171
+0.146365 0.0889267 -0.401725 -0.183417 0.981461 0.486241 0.681473 -0.258455
+0.952971 -0.679307 -0.725955 0.166804 -0.461048 0.483991 0.805641 0.564412
+-0.391718 -0.885734 -0.338494 -0.758048 0.62324 -0.904924 -0.511931 -0.313077
+-0.427775 -0.462631 0.571049 0.309519 -0.633172 -0.524454 0.774625 -0.141569
+-0.27132 0.746114 -0.330058 -0.485489 -0.506717 0.00733686 0.793065 0.48465
+-0.149967 0.0249565 -0.377554 0.635322 0.926616 0.316265 0.0518561 -0.601899
+0.221472 0.121239 0.574847 0.521096 0.559327 0.942286 -0.724584 -0.855785
+-0.119323 0.0382661 -0.628763 0.436192 0.94491 -0.501119 -0.679026 -0.745567
+-0.768534 -0.877493 0.168443 -0.116303 -0.271442 -0.232377 -0.272922 -0.438878
+-0.555787 0.0546222 0.667032 -0.599897 -0.398251 -0.194041 0.7088 -0.579869
+0.945534 -0.464931 -0.976692 -0.794661 0.51902 0.652344 -0.560435 0.902057
+-0.254705 -0.567206 -0.817415 0.840607 0.740243 0.598916 0.391895 -0.394496
+-0.100858 -0.392356 -0.0955732 0.744395 -0.098339 0.356142 0.185845 0.181413
+0.0203355 -0.788697 -0.600303 0.697847 -0.700404 0.902197 -0.74871 0.302692
+-0.885 -0.338142 -0.266243 0.17608 -0.576465 -0.502188 -0.596151 -0.878618
+0.44483 0.832059 -0.173066 0.456706 0.642328 0.724746 -0.1925 -0.893404
+0.443883 -0.456011 -0.770323 -0.997234 -0.952226 -0.892065 0.20022 0.953866
+-0.711862 -0.993364 0.907505 -0.579022 -0.925414 0.500686 -0.275635 0.565904
+0.423131 -0.0968551 -0.478523 0.0238519 0.316365 0.854634 0.904365 -0.131348
+-0.548285 0.578612 -0.275744 0.407103 0.316615 -0.882478 -0.473928 0.285793
+0.63222 0.455825 0.386028 0.207057 -0.66896 -0.628345 -0.0808006 -0.807238
+0.711269 -0.784493 0.4599 0.0397161 0.527732 -0.732751 -0.601908 0.218853
+0.283443 -0.692185 0.566496 -0.68177 0.928101 0.79579 -0.493063 0.144516
+-0.149631 -0.846303 0.652118 0.841565 -0.495354 0.36171 -0.320881 -0.766979
+0.505737 0.522733 0.76624 0.202624 0.89359 0.0311913 0.872182 0.0149582
+0.574351 -0.633518 -0.825413 0.154435 -0.141215 0.140963 -0.487547 0.417802
+-0.666241 0.565788 0.756247 0.868203 -0.116211 0.75985 0.585547 0.830323
+-0.626712 -0.45364 -0.195443 0.448415 0.104229 -0.664431 0.669827 0.192545
+-0.0324374 -0.140675 -0.500651 -0.305651 -0.645708 0.988018 0.553351 -0.549405
+-0.122066 0.225076 -0.818105 -0.996791 -0.547578 -0.881317 0.752254 -0.694483
+0.476205 0.584487 -0.490537 0.5268 -0.31787 -0.482516 0.533979 0.00115596
+0.899264 0.0182342 -0.868973 0.867343 0.650678 -0.994781 -0.102045 -0.0269937
+-0.0750363 -0.453265 0.702007 -0.00121795 -0.972748 0.834929 -0.633961 -0.71164
+0.985972 -0.589411 -0.809588 0.55176 -0.351489 -0.544948 0.954608 -0.346856
+-0.699835 -0.484832 -0.834155 -0.368864 0.608062 0.0825367 0.760286 -0.0527428
+-0.799013 -0.765432 0.974613 -0.684831 0.60186 0.999952 0.79829 -0.225519
+0.690754 -0.501941 0.324644 0.316548 -0.078213 0.936501 0.980851 -0.816268
+0.0774005 -0.555405 -0.154659 0.348248 -0.467778 -0.324692 -0.629435 -0.656457
+-0.200646 0.82515 0.14657 -0.806379 -0.759421 0.0829597 -0.374377 -0.00215195
+-0.77514 0.415386 0.983687 -0.0142301 0.980576 0.600523 0.146038 -0.0822019
+-0.538879 0.116211 -0.818458 -0.740589 -0.488668 0.314551 0.649157 -0.443189
+-0.285181 0.200458 0.332028 0.3074 -0.523374 -0.551051 0.220338 -0.34828
+-0.923755 -0.1266 -0.601394 -0.0253203 -0.828103 0.490856 0.266744 -0.408953
+0.0542938 -0.215857 0.386484 -0.78468 0.0258582 0.795984 -0.183508 -0.571211
+0.552468 -0.356369 -0.196538 0.734811 -0.118357 -0.128739 0.840145 -0.93725
+-0.154347 0.873422 -0.194153 0.872663 -0.356444 0.363519 -0.273476 -0.696162
+0.583401 -0.53281 0.731566 -0.444695 -0.472582 -0.663451 0.91995 0.650943
+-0.404663 0.840018 -0.120633 -0.471824 -0.752747 -0.475972 0.646036 -0.547903
+-0.233779 0.0825393 0.942899 0.158798 0.623666 -0.631099 0.00203193 -0.235393
+-0.585184 0.883392 0.132245 -0.438164 -0.161598 -0.0969587 0.000618285 0.79207
+-0.932912 0.537109 0.367195 0.524085 -0.414115 0.494211 0.9536 -0.80306
+0.386435 -0.988085 -0.936921 0.714699 0.625112 -0.866318 -0.942141 0.336779
+0.764189 0.0251004 -0.848174 0.665548 0.147669 0.254436 -0.264234 -0.896245
+0.325485 0.754366 0.0447624 -0.585063 0.719863 -0.0696208 -0.622733 -0.387195
+-0.169277 -0.113223 0.421046 -0.0531837 -0.405825 -0.230418 -0.983003 -0.711747
+0.336613 0.164089 -0.745039 -0.807313 -0.736208 -0.10126 0.824618 -0.920568
+0.909828 -0.622685 0.332989 0.00830162 0.38507 -0.397409 0.648477 0.529428
+0.0101819 0.62799 0.33955 -0.789978 -0.969035 -0.0619933 -0.626062 -0.888456
+-0.920535 0.031577 0.209105 0.355139 -0.0742127 0.841699 0.0614381 -0.0995839
+0.985094 0.130549 0.317291 -0.966487 0.510734 0.961951 0.183114 -0.805229
+-0.652149 0.7594 -0.487267 -0.787221 0.851975 -0.873241 0.439256 0.499765
+0.541152 0.0770298 0.605506 -0.582985 -0.949134 0.0863542 0.518711 -0.496535
+0.399843 0.912941 0.268388 -0.865712 0.107298 -0.571469 0.534591 -0.976143
+-0.338867 -0.93816 0.979595 -0.325682 -0.945629 0.546945 0.828186 -0.897783
+0.241588 0.801397 0.266351 0.916368 -0.861289 0.520631 -0.350318 0.409777
+0.610429 -0.083441 0.83093 -0.670309 -0.164084 0.604357 0.0783674 -0.42118
+0.36577 -0.508371 0.416979 -0.139311 0.883315 0.362692 0.183672 0.69271
+-0.28885 0.696964 0.211831 0.489029 0.226392 0.953463 0.10962 -0.73453
+0.986815 0.600921 0.0449613 0.110881 0.578612 -0.604654 -0.810103 0.771854
+0.902732 -0.495443 -0.734904 -0.520157 0.62146 0.460401 -0.969393 -0.0602119
+-0.539116 -0.706347 -0.74457 0.971574 0.2893 0.484338 0.77608 0.282123
+0.547443 0.29363 -0.94728 -0.163755 0.388137 0.689701 0.165507 -0.452441
+0.209506 0.769668 -0.468422 0.0512967 -0.0155995 0.369681 -0.0416683 0.385239
+0.536443 -0.640138 0.0763071 0.705092 0.989851 0.828893 -0.60472 -0.28465
+-0.494723 0.921693 0.0495236 0.173518 0.741574 -0.959035 0.990642 0.353335
+0.651272 0.178445 -0.61107 0.500453 0.341522 -0.837734 -0.990673 -0.36227
+0.763702 -0.274026 0.195442 0.452955 0.676666 -0.0271457 0.441324 -0.609185
+0.423997 -0.701139 -0.410888 0.0778383 0.878795 0.15746 -0.994007 0.113326
+-0.334275 -0.442163 0.12964 -0.481628 -0.968939 -0.225538 -0.279952 -0.348539
+0.73095 0.933779 -0.804383 0.526414 0.479168 0.988399 -0.941287 0.394242
+-0.0340086 0.705096 -0.554178 -0.844025 0.165571 0.223001 0.283481 0.437085
+0.0834355 -0.563229 0.578883 0.0711771 0.619632 -0.0333454 0.186991 0.701669
+-0.321065 0.418618 -0.401531 0.405464 0.119774 -0.488364 -0.541451 0.298125
+-0.930117 -0.714498 0.96836 -0.544415 0.0404438 0.107046 -0.494357 -0.294113
+0.7649 0.891545 -0.952906 -0.0227346 0.406766 0.859156 0.300293 0.187083
+-0.391863 -0.0590129 -0.849673 0.888853 -0.925853 0.894784 0.774522 0.667416
+-0.788453 0.313785 0.0735782 -0.9446 0.0881703 -0.877804 0.115091 0.690123
+-0.298138 0.199317 -0.897659 -0.76291 -0.672211 0.439996 0.169136 -0.9143
+-0.0962146 -0.160769 0.261731 0.550875 0.97825 -0.837458 -0.890215 0.16264
+-0.655996 0.400844 -0.753987 0.144687 -0.640398 0.67667 -0.345467 0.181287
+-0.992709 0.0882317 -0.240251 0.369297 0.557474 0.425089 0.39905 0.542164
+-0.550886 -0.303266 0.414447 0.951891 -0.900641 -0.637662 -0.739914 0.599469
+0.129487 0.241247 0.196362 0.403789 0.21839 0.877744 -0.282078 0.132361
+-0.0054312 0.918197 0.188897 -0.902218 0.103391 0.139808 0.393467 -0.199445
+-0.923921 0.373623 -0.853978 0.340359 -0.57419 0.536 -0.926296 0.632232
+0.707454 0.338353 0.127895 -0.196444 -0.0319703 -0.305862 0.704341 0.618947
+0.919735 -0.750654 0.176572 -0.802977 -0.0707223 -0.320515 -0.110584 0.473198
+-0.645532 0.562394 -0.0586577 -0.265339 0.144387 0.85353 0.308196 -0.946138
+0.527819 0.914607 0.524667 0.94169 -0.185767 0.570622 0.605907 -0.423411
+-0.804722 -0.684955 -0.456404 0.365336 -0.040309 0.428063 -0.133152 0.178633
+-0.992572 0.386273 0.33409 0.865669 0.158053 -0.554986 -0.729363 0.969722
+-0.409773 -0.373148 -0.471849 0.602634 0.164685 0.783269 0.112875 0.581757
+-0.977761 -0.0302597 0.904442 0.950423 0.0675092 -0.897506 0.236307 -0.216288
+-0.277661 0.868341 0.540508 0.24097 0.443353 0.33287 -0.989548 -0.194153
+0.865029 -0.71969 0.251391 -0.806809 0.887908 0.434057 0.505243 0.37496
+0.315971 -0.163629 0.432174 0.383298 0.746031 -0.815984 -0.18584 -0.408601
+-0.555325 0.129052 -0.0885912 -0.190683 0.782567 -0.225434 -0.429651 0.483977
+0.710882 0.298927 0.713428 -0.976695 -0.275012 -0.970883 -0.47833 0.938195
+-0.409982 0.791796 -0.476071 0.11307 -0.584786 0.826539 0.869438 -0.499075
+-0.504735 -0.789846 0.837696 -0.718721 0.89905 -0.211661 0.700321 -0.263882
+-0.424087 -0.195272 0.104407 0.561988 0.315623 0.581878 0.720829 -0.253763
+0.625601 -0.577368 -0.371724 -0.80142 -0.715806 0.0741293 0.778703 0.244978
+-0.868092 -0.163168 -0.707758 -0.822344 0.501819 0.74799 0.0668078 0.812413
+0.729534 0.702338 -0.134075 0.449142 0.785552 -0.701911 0.179284 0.695407
+-0.570295 -0.551425 0.291994 0.821019 0.71508 -0.664581 -0.980156 0.888598
+0.0281019 0.283294 -0.741183 0.300605 0.703548 0.109526 -0.98041 -0.28747
+-0.97019 -0.365164 -0.0386638 -0.835926 0.114051 -0.429095 -0.374637 -0.710279
+0.321577 -0.245106 -0.560334 -0.106617 0.1186 -0.49623 -0.992678 0.110437
+0.882378 -0.636962 -0.713416 0.0834107 -0.925594 -0.352722 0.656507 -0.736961
+0.584289 -0.175682 0.247739 0.617296 -0.354663 0.629163 -0.902824 0.953023
+0.0768384 -0.717327 -0.083367 -0.618186 -0.818971 0.947659 0.653877 -0.354289
+-0.887622 0.432379 0.0866054 -0.280477 0.0676555 -0.842187 -0.0842995 -0.430422
+0.173128 -0.520141 -0.087196 -0.662103 0.961155 -0.930147 0.416494 0.584796
+0.303029 0.493141 0.374201 0.472777 -0.446954 -0.793685 -0.87863 0.619676
+0.0513011 -0.987674 0.196521 -0.998323 -0.408941 -0.466114 0.361032 0.238023
+0.319364 -0.744774 0.826224 -0.727136 0.134271 0.169153 -0.350912 0.910232
+0.62319 -0.639507 0.455339 0.958609 -0.133199 0.738603 -0.785951 0.35698
+-0.426425 0.0968416 -0.356231 -0.864742 0.319383 -0.493453 0.67159 0.332411
+0.602833 0.613828 -0.63591 0.514773 -0.645953 0.319409 -0.970493 0.541499
+0.0162915 -0.59027 -0.403851 0.45786 -0.385471 0.854787 -0.728109 0.0384164
+-0.508749 0.25453 0.0775355 0.997228 -0.957396 -0.198614 -0.945542 -0.695928
+-0.160811 0.659122 -0.937518 -0.974774 0.310763 -0.971708 -0.0595999 -0.0528106
+0.461159 -0.365737 -0.702777 -0.978425 0.0990154 -0.327472 -0.962762 0.350789
+0.795224 0.381523 -0.938263 0.479238 -0.632396 -0.0509792 0.0153148 -0.265597
+-0.0848166 0.379515 -0.291117 0.694128 0.748272 -0.493666 -0.815691 -0.6926
+-0.165031 -0.0891072 0.158474 0.10956 -0.19114 -0.77 -0.780464 0.434505
+-0.139721 -0.544348 -0.750748 -0.293889 0.757612 0.818742 -0.228336 -0.544192
+-0.858 0.358474 0.543263 0.455568 -0.598232 -0.917574 0.380048 0.780082
+-0.515837 -0.855985 0.82244 -0.477901 0.646268 -0.570199 -0.430683 0.717503
+0.717701 0.699 0.462546 0.752024 -0.981553 -0.201349 -0.761635 0.330898
+-0.479242 -0.289216 -0.0796746 -0.135831 -0.888534 -0.978519 -0.193643 0.963184
+-0.116307 0.539999 0.936034 0.531333 -0.407026 -0.506016 -0.307663 -0.91202
+-0.881043 0.537134 -0.0208986 0.790174 0.160322 0.86974 0.0347648 0.556077
+0.149292 0.89986 -0.451053 0.640971 -0.179916 -0.34306 -0.837172 0.193749
+-0.126208 -0.0227467 -0.0916505 0.872552 -0.451527 -0.225225 -0.536412 -0.484111
+0.85332 -0.370758 -0.219432 0.806461 -0.771842 0.299293 0.826374 -0.377133
+0.0974112 -0.294711 0.0150352 -0.0237784 0.723876 -0.0288437 0.787362 0.340541
+-0.358887 -0.925932 -0.0877449 0.149521 -0.941664 -0.822475 0.48412 0.420145
+0.891805 -0.435028 0.640123 -0.100903 -0.913005 -0.802434 0.221251 -0.926006
+-0.59743 -0.998152 -0.159239 -0.121085 0.0891031 -0.19614 0.71132 0.509863
+-0.766773 -0.965367 -0.66386 -0.934419 0.898039 0.44383 -0.595711 0.275202
+-0.733219 0.715742 0.559052 0.840434 -0.600565 -0.908047 0.498603 0.211169
+0.583786 -0.813278 -0.822209 -0.632192 0.929584 0.111599 -0.0819159 -0.483515
+0.0372694 0.0395407 0.61394 0.302753 -0.844206 0.851324 -0.426415 0.692142
+0.864924 -0.373763 -0.444911 -0.939984 -0.523362 -0.0627783 -0.398258 0.191987
+0.00846989 -0.0237791 -0.064829 0.429948 -0.635047 -0.657757 -0.93342 -0.525435
+0.0152487 0.89563 -0.908316 0.151498 0.534151 -0.23771 -0.247125 0.676604
+0.718967 -0.391562 -0.509936 0.0940794 -0.591401 -0.0237542 0.0989418 0.667505
+0.642065 -0.808021 -0.668695 0.825106 -0.89777 0.436322 0.0146317 -0.84359
+0.947917 0.247783 0.797738 0.904664 -0.304274 -0.860577 0.583235 -0.15636
+0.802703 -0.648104 -0.74956 -0.903054 0.298878 0.673866 0.32473 -0.0477731
+0.360735 0.617388 0.0941327 -0.469065 0.784298 0.627796 0.0719741 -0.468131
+0.831949 0.890218 0.302191 -0.024926 0.554097 -0.391123 0.543936 0.710791
+-0.13657 -0.858949 -0.565543 -0.202202 0.904933 -0.522611 -0.700196 -0.0706605
+0.68578 0.785019 -0.373929 0.320873 -0.22783 -0.983629 0.20534 0.0679298
+0.054554 -0.285939 0.0105797 0.00241309 -0.961614 0.760555 -0.712269 0.18321
+0.112195 -0.928513 -0.917439 0.447439 0.694376 0.0474544 -0.957016 0.415338
+0.565741 -0.179495 0.15515 -0.130722 0.309835 0.391258 0.300341 0.782176
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/test2-query.pts	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,100 @@
+0.0902484 -0.207129 -0.419567 0.485743 0.826225 -0.30962 0.694758 0.987088
+-0.410807 -0.465182 -0.836501 0.490184 0.588289 0.656408 0.325807 0.38721
+-0.532226 -0.727036 -0.52506 -0.853508 0.28637 0.938617 -0.864754 0.622397
+-0.408646 -0.522319 0.0388774 -0.893642 0.385806 0.890013 -0.38066 -0.524536
+0.916427 -0.941696 0.219294 -0.971436 -0.706532 0.566439 -0.0591963 0.27756
+0.692452 -0.210879 0.927987 0.587037 0.610211 0.895158 -0.228196 -0.314064
+-0.13253 0.711121 0.605841 0.771335 -0.945103 0.356652 0.00215608 -0.54444
+0.0611156 0.921316 0.245255 0.92896 0.562614 0.160313 -0.457179 -0.432326
+-0.813199 -0.0630237 0.149021 0.0301869 0.669399 0.984082 -0.304983 0.480589
+0.311004 0.515906 -0.667349 -0.464028 -0.554472 0.123471 -0.932191 0.153486
+0.488214 -0.456547 0.695901 -0.693933 -0.775879 -0.940794 0.710796 -0.79388
+-0.73914 -0.733084 0.300943 0.0726274 -0.722715 -0.414562 0.463033 -0.378469
+-0.178166 -0.846243 -0.319029 0.186783 -0.364517 0.915747 -0.300208 -0.599272
+-0.544192 0.173829 -0.0957917 0.889828 0.775796 0.148865 -0.430932 0.0342097
+-0.969596 -0.545995 -0.98045 -0.57569 0.465756 -0.166752 0.622912 -0.580526
+0.0918901 0.635361 -0.934228 -0.0273098 0.65055 0.227406 -0.628807 0.213824
+0.216987 -0.653221 -0.789576 0.6252 0.124467 0.477613 -0.259097 0.913287
+0.587512 0.377176 -0.393846 0.293478 0.275818 -0.298198 0.063539 -0.592623
+0.867649 0.64842 -0.929959 0.677208 -0.302289 -0.230779 0.267189 -0.140577
+-0.360362 0.910053 -0.26718 0.167234 -0.0203549 -0.190717 -0.291433 0.756657
+0.637052 0.538531 0.200832 0.420082 0.688092 0.500134 0.78368 -0.542742
+0.00257324 0.53221 -0.899835 0.503303 -0.46265 0.13425 -0.66756 0.125758
+-0.28673 -0.255891 0.0805643 0.154396 -0.304337 0.942248 0.404729 -0.530016
+0.330364 -0.469459 0.492101 0.923757 -0.0870035 0.114578 -0.321104 0.586945
+0.104922 -0.620678 -0.27497 0.905927 0.219188 -0.495436 -0.762684 0.557364
+-0.665582 -0.75013 -0.249321 0.667873 -0.288485 -0.765806 -0.45304 0.919665
+-0.493835 0.239472 -0.917625 0.418003 0.273087 0.54198 -0.836992 -0.842215
+-0.576808 -0.958153 0.73833 0.0770337 -0.82097 0.0731924 -0.192127 -0.369044
+-0.204979 -0.564608 -0.792166 0.356056 -0.50905 -0.217096 -0.45753 -0.998959
+0.735413 0.347442 -0.644887 0.178 0.935974 -0.630639 -0.624678 0.946812
+0.72101 -0.881322 -0.0914539 0.80997 0.619855 0.299585 -0.0544264 -0.932907
+-0.454196 0.903609 0.216595 -0.515838 0.650697 0.322145 -0.0598022 0.29879
+0.56218 0.548496 0.116056 -0.109011 0.35975 0.375862 -0.473017 0.179013
+0.790441 0.202804 0.370116 -0.299956 -0.789657 0.66881 -0.429629 -0.203547
+0.870951 -0.240769 0.472253 -0.874723 -0.67061 -0.434253 0.661868 -0.515051
+-0.45736 0.0815795 0.924138 0.0979838 -0.00884649 0.0643335 0.803118 -0.542487
+-0.177146 -0.625442 -0.840198 -0.158722 -0.596283 -0.673887 -0.738309 0.439504
+0.186587 -0.465294 0.81993 0.754213 -0.929469 0.5224 -0.567962 -0.0020964
+-0.727445 0.654887 0.237451 -0.81993 0.461061 -0.330429 -0.423304 -0.11565
+-0.638766 -0.623638 0.33871 -0.295169 -0.864833 0.715051 -0.443567 0.530583
+0.81889 0.288548 -0.558678 -0.588774 -0.961246 0.46669 0.585559 0.566684
+-0.336336 0.911721 -0.353767 -0.387489 -0.0397957 -0.544424 0.388611 -0.49438
+0.389995 -0.989308 0.0531768 -0.119235 0.8707 0.190555 -0.829453 -0.0377095
+-0.754985 0.722122 -0.486071 -0.0543854 -0.00514588 -0.0407811 -0.923871 0.768664
+-0.257839 -0.963332 0.27127 0.90108 0.2946 0.295975 0.133463 -0.203565
+0.128047 -0.0221978 0.565967 0.441817 -0.885341 -0.294394 0.752 0.655274
+0.455767 -0.659883 0.40248 0.600338 -0.83844 -0.844635 -0.436961 -0.694439
+0.494475 -0.85312 -0.703241 -0.0320226 -0.0312604 -0.804464 -0.967423 0.134369
+-0.823558 0.72077 0.692424 -0.331696 0.28281 0.956438 -0.512021 0.343271
+-0.120567 0.85007 -0.634148 0.479445 0.999095 -0.362764 -0.547786 0.0405272
+-0.759062 -0.595061 0.891393 -0.772615 0.699682 0.433783 0.496053 0.989183
+-0.830714 0.673363 -0.774558 -0.428386 -0.163786 -0.576139 0.870208 -0.403316
+-0.358526 -0.816022 -0.40667 0.888208 0.0927729 0.567724 -0.993948 -0.315037
+0.173889 0.324026 0.971654 0.445513 -0.836598 -0.335657 -0.193173 0.544429
+-0.383334 0.0514736 -0.667312 -0.650427 -0.173149 -0.785155 -0.427284 -0.773588
+-0.942451 -0.429928 -0.296064 0.478439 -0.21067 -0.583727 -0.172756 -0.867286
+0.0722371 0.969577 -0.667728 -0.673244 0.975295 -0.468511 0.283715 -0.838649
+-0.135551 0.0966441 -0.899046 -0.107455 -0.233247 -0.784231 -0.273956 -0.735285
+-0.0414323 0.633082 0.756714 -0.941008 0.7334 -0.558333 0.515249 -0.0495845
+0.151553 0.897797 0.535985 -0.435869 0.276652 0.950385 -0.588415 -0.908762
+0.836871 -0.309154 0.542942 -0.555574 0.296423 -0.852823 0.0586046 0.907905
+-0.037232 -0.50382 0.828129 0.852639 -0.187631 0.110954 -0.520551 0.2231
+-0.669727 -0.670437 -0.395765 0.938759 -0.71912 -0.299401 -0.857412 0.136054
+-0.426925 -0.323029 0.847521 -0.768077 -0.737279 -0.73427 0.409976 -0.424011
+-0.485806 -0.842531 0.425504 0.928987 0.885911 0.193509 -0.786534 -0.0521742
+0.477176 0.948246 -0.81151 -0.461006 0.140611 -0.0403634 0.904953 0.527849
+0.278327 -0.960566 -0.745472 0.449632 -0.221733 -0.67303 0.0901394 -0.365342
+0.350109 0.412389 0.22772 -0.743153 0.374894 -0.674853 -0.940435 0.284267
+0.0780486 0.00241877 -0.793647 -0.801883 -0.931572 -0.906159 -0.325908 0.129096
+0.251037 -0.32573 -0.0132674 0.16178 -0.391019 0.541115 0.186404 0.804935
+-0.457725 0.0676978 -0.679403 -0.287371 -0.0475436 -0.433919 -0.777655 -0.648854
+-0.0915583 -0.911684 -0.450737 0.330562 0.51434 -0.989688 -0.394102 0.621241
+-0.475504 -0.0645391 0.836504 0.636607 -0.294769 0.747648 -0.23722 0.750184
+-0.767895 -0.446372 0.758335 -0.407514 -0.304965 0.551426 0.467747 0.962403
+-0.550376 0.261992 0.65622 -0.274081 0.87838 0.931551 -0.329732 0.0551602
+0.911471 0.324545 0.0503461 -0.796273 0.150228 0.760694 -0.428716 -0.677338
+0.320243 0.908401 -0.406211 -0.0914938 -0.0383119 0.971036 -0.996626 -0.420682
+-0.632748 0.159697 0.350173 0.188661 -0.463423 -0.79209 -0.321071 -0.849934
+-0.493952 0.59222 -0.239915 0.0675535 -0.209439 -0.896104 0.215966 -0.804748
+0.470257 -0.814033 0.0936659 -0.279521 0.631632 -0.00510561 -0.694679 -0.554847
+0.0193325 -0.515019 -0.502347 -0.0691725 0.0823693 0.218677 0.484909 0.230698
+0.411173 -0.360974 -0.0687193 0.982974 -0.62282 -0.808528 0.391168 0.509953
+-0.123533 0.573365 0.918135 -0.570049 0.0766659 0.916687 -0.189227 0.105294
+-0.436078 0.565401 0.107861 -0.321394 -0.681098 0.372357 -0.911342 -0.836162
+0.20572 0.550261 -0.578777 -0.236365 -0.582914 0.473617 -0.745445 -0.401362
+-0.268776 -0.00963149 -0.870677 -0.315329 -0.327188 0.571639 -0.922104 -0.889744
+-0.653846 0.42571 0.484338 0.786735 -0.924095 -0.777902 0.424617 -0.11099
+0.314249 -0.488492 -0.09607 -0.285476 -0.257726 -0.803911 -0.806167 0.4756
+-0.41036 -0.669857 -0.36997 0.551767 -0.906633 0.189437 -0.684472 -0.449454
+-0.813612 -0.0906479 0.286132 0.680878 0.675851 0.0646878 -0.2403 -0.310925
+-0.685114 0.0677462 -0.95481 -0.179017 0.857301 -0.87579 -0.329674 0.562246
+0.0735071 -0.575949 0.50454 -0.686882 -0.0657996 0.874931 0.927272 -0.333088
+-0.245092 -0.109308 -0.713837 -0.613438 -0.0236157 0.140357 -0.512282 -0.518118
+0.184375 -0.865972 0.707001 -0.612003 0.67617 -0.709794 -0.885369 0.826005
+-0.157901 0.836454 0.245372 0.589479 -0.930075 0.106183 0.420879 -0.510301
+-0.466877 -0.115361 -0.736242 0.493482 -0.785855 -0.55306 0.617798 -0.904856
+-0.830296 0.557992 -0.204564 -0.500123 0.153565 -0.773108 0.287265 0.823092
+0.986858 -0.323913 -0.914362 0.535652 -0.535098 -0.945814 0.974316 0.434805
+0.732686 0.221111 0.559403 0.584674 -0.447866 0.508206 0.907212 -0.782827
+-0.970814 -0.13434 -0.550199 0.523038 -0.373701 -0.359454 0.0321578 0.840907
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/test2.in	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,21 @@
+  validate on
+  stats query_stats
+  dim 8
+  data_size 5000
+read_data_pts test2-data.pts
+  query_size 100
+read_query_pts test2-query.pts
+  bucket_size 1
+  near_neigh 3
+  split_rule suggest
+  shrink_rule none
+build_ann
+  epsilon 0.0
+run_queries standard
+run_queries priority
+  epsilon 0.10
+run_queries standard
+run_queries priority
+  epsilon 0.50
+run_queries standard
+run_queries priority
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/test2.save	Tue Jul 14 09:23:09 2009 -0700
@@ -0,0 +1,156 @@
+------------------------------------------------------------
+ann_test: Version 1.0 
+    Copyright: David M. Mount and Sunil Arya.
+    Latest Revision: Mar 1, 2005.
+------------------------------------------------------------
+
+validate = on   (Warning: this may slow execution time.)
+stats = query_stats
+[Read Data Points:
+  data_size  = 5000
+  file_name  = test2-data.pts
+  dim        = 8
+]
+[Read Query Points:
+  query_size = 100
+  file_name  = test2-query.pts
+  dim        = 8
+]
+[Build ann-structure:
+  split_rule    = suggest
+  shrink_rule   = none
+  data_size     = 5000
+  dim           = 8
+  bucket_size   = 1
+  process_time  = 0.18 sec
+  (Structure Statistics:
+    n_nodes          = 9999 (opt = 10000, best if < 100000)
+        n_leaves     = 5000 (0 contain no points)
+        n_splits     = 4999
+        n_shrinks    = 0
+    empty_leaves     = 0 percent (best if < 50 percent)
+    depth            = 17 (opt = 12, best if < 196)
+    avg_aspect_ratio = 2.03396 (best if < 20)
+  )
+]
+(Computing true nearest neighbors for validation.  This may take time.)
+[Run Queries:
+  query_size    = 100
+  dim           = 8
+  search_method = standard
+  epsilon       = 0
+  near_neigh    = 3
+  true_nn       = 13
+  query_time    = 0.0008 sec/query (biased by perf measurements)
+  (Performance stats:  [      mean :    stddev ]<      min ,       max >
+    leaf_nodes       = [     269.6 :     154.1 ]<       68 ,      1046 >
+    splitting_nodes  = [     448.2 :     259.2 ]<      100 ,      1858 >
+    shrinking_nodes  = [         0 :         0 ]<        0 ,         0 >
+    total_nodes      = [     717.8 :     412.6 ]<      168 ,      2904 >
+    points_visited   = [     269.6 :     154.1 ]<       68 ,      1046 >
+    coord_hits/pt    = [    0.1975 :    0.1075 ]<   0.0446 ,    0.6974 >
+    floating_ops_(K) = [     8.492 :     4.716 ]<    1.939 ,     32.61 >
+    average_error    = [         0 :         0 ]<        0 ,         0 >
+    rank_error       = [         0 :         0 ]<        0 ,         0 >
+  )
+]
+[Run Queries:
+  query_size    = 100
+  dim           = 8
+  search_method = priority
+  epsilon       = 0
+  near_neigh    = 3
+  true_nn       = 13
+  query_time    = 0.0011 sec/query (biased by perf measurements)
+  (Performance stats:  [      mean :    stddev ]<      min ,       max >
+    leaf_nodes       = [     237.7 :     131.6 ]<       68 ,       801 >
+    splitting_nodes  = [     408.1 :     227.7 ]<      100 ,      1398 >
+    shrinking_nodes  = [         0 :         0 ]<        0 ,         0 >
+    total_nodes      = [     645.8 :     358.5 ]<      168 ,      2149 >
+    points_visited   = [     237.7 :     131.6 ]<       68 ,       801 >
+    coord_hits/pt    = [    0.1679 :   0.08993 ]<   0.0472 ,    0.5492 >
+    floating_ops_(K) = [     10.83 :     6.344 ]<    2.638 ,      38.3 >
+    average_error    = [         0 :         0 ]<        0 ,         0 >
+    rank_error       = [         0 :         0 ]<        0 ,         0 >
+  )
+]
+[Run Queries:
+  query_size    = 100
+  dim           = 8
+  search_method = standard
+  epsilon       = 0.1
+  near_neigh    = 3
+  true_nn       = 13
+  query_time    = 0.0006 sec/query (biased by perf measurements)
+  (Performance stats:  [      mean :    stddev ]<      min ,       max >
+    leaf_nodes       = [     200.9 :     115.8 ]<       51 ,       762 >
+    splitting_nodes  = [     344.9 :     202.4 ]<       77 ,      1407 >
+    shrinking_nodes  = [         0 :         0 ]<        0 ,         0 >
+    total_nodes      = [     545.9 :     317.4 ]<      128 ,      2169 >
+    points_visited   = [     200.9 :     115.8 ]<       51 ,       762 >
+    coord_hits/pt    = [    0.1548 :   0.08517 ]<   0.0348 ,    0.5494 >
+    floating_ops_(K) = [     6.606 :     3.703 ]<    1.513 ,     25.14 >
+    average_error    = [         0 :         0 ]<        0 ,         0 >
+    rank_error       = [         0 :         0 ]<        0 ,         0 >
+  )
+]
+[Run Queries:
+  query_size    = 100
+  dim           = 8
+  search_method = priority
+  epsilon       = 0.1
+  near_neigh    = 3
+  true_nn       = 13
+  query_time    = 0.0007 sec/query (biased by perf measurements)
+  (Performance stats:  [      mean :    stddev ]<      min ,       max >
+    leaf_nodes       = [     176.1 :     101.1 ]<       49 ,       629 >
+    splitting_nodes  = [     314.3 :     186.9 ]<       77 ,      1285 >
+    shrinking_nodes  = [         0 :         0 ]<        0 ,         0 >
+    total_nodes      = [     490.4 :     286.6 ]<      128 ,      1914 >
+    points_visited   = [     176.1 :     101.1 ]<       49 ,       629 >
+    coord_hits/pt    = [    0.1309 :   0.07112 ]<   0.0374 ,    0.4332 >
+    floating_ops_(K) = [     8.205 :     4.999 ]<    2.032 ,     33.27 >
+    average_error    = [         0 :         0 ]<        0 ,         0 >
+    rank_error       = [         0 :         0 ]<        0 ,         0 >
+  )
+]
+[Run Queries:
+  query_size    = 100
+  dim           = 8
+  search_method = standard
+  epsilon       = 0.5
+  near_neigh    = 3
+  true_nn       = 13
+  query_time    = 0.0002 sec/query (biased by perf measurements)
+  (Performance stats:  [      mean :    stddev ]<      min ,       max >
+    leaf_nodes       = [     83.07 :     46.06 ]<       23 ,       264 >
+    splitting_nodes  = [     163.4 :     94.86 ]<       42 ,       512 >
+    shrinking_nodes  = [         0 :         0 ]<        0 ,         0 >
+    total_nodes      = [     246.5 :     140.2 ]<       67 ,       776 >
+    points_visited   = [     83.07 :     46.06 ]<       23 ,       264 >
+    coord_hits/pt    = [    0.0765 :   0.03992 ]<   0.0182 ,    0.2192 >
+    floating_ops_(K) = [     3.224 :     1.734 ]<    0.891 ,     9.572 >
+    average_error    = [ 0.0009039 :  0.009619 ]<        0 ,    0.1516 >
+    rank_error       = [         0 :         0 ]<        0 ,         0 >
+  )
+]
+[Run Queries:
+  query_size    = 100
+  dim           = 8
+  search_method = priority
+  epsilon       = 0.5
+  near_neigh    = 3
+  true_nn       = 13
+  query_time    = 0.0004 sec/query (biased by perf measurements)
+  (Performance stats:  [      mean :    stddev ]<      min ,       max >
+    leaf_nodes       = [     69.72 :     38.29 ]<       21 ,       246 >
+    splitting_nodes  = [     146.8 :     81.69 ]<       40 ,       475 >
+    shrinking_nodes  = [         0 :         0 ]<        0 ,         0 >
+    total_nodes      = [     216.5 :     118.8 ]<       65 ,       721 >
+    points_visited   = [     69.72 :     38.29 ]<       21 ,       246 >
+    coord_hits/pt    = [   0.06206 :   0.03155 ]<   0.0182 ,     0.194 >
+    floating_ops_(K) = [     3.608 :     1.989 ]<    1.126 ,     12.28 >
+    average_error    = [  0.001425 :     0.011 ]<        0 ,    0.1516 >
+    rank_error       = [         0 :         0 ]<        0 ,         0 >
+  )
+]