[libocas] 01/60: Imported Upstream version 0.93
Christian Kastner
chrisk-guest at moszumanska.debian.org
Mon Aug 25 03:34:41 UTC 2014
This is an automated email from the git hooks/post-receive script.
chrisk-guest pushed a commit to branch master
in repository libocas.
commit 4f65fae240503ab6741188ace0f7090d78dd38e3
Author: Christian Kastner <debian at kvr.at>
Date: Mon Jun 14 17:08:40 2010 +0200
Imported Upstream version 0.93
---
AUTHORS | 3 +
ChangeLog | 36 +
Contents.m | 29 +
INSTALL | 46 +
LICENSE | 674 ++++++++++++++
Makefile | 63 ++
README | 74 ++
RELEASES | 3 +
compute_errors_mex.c | 87 ++
data/example4_test.light | 2000 ++++++++++++++++++++++++++++++++++++++++++
data/example4_test.mat | Bin 0 -> 294784 bytes
data/example4_train.light | 300 +++++++
data/example4_train.mat | Bin 0 -> 44608 bytes
data/gender_images.mat | Bin 0 -> 2733662 bytes
data/lena.jpg | Bin 0 -> 162986 bytes
data/refernce_solution.mat | Bin 0 -> 5824 bytes
data/riply_trn.light | 250 ++++++
data/riply_trn.mat | Bin 0 -> 4744 bytes
data/riply_tst.light | 1000 +++++++++++++++++++++
data/riply_tst.mat | Bin 0 -> 18240 bytes
html/C_sc.png | Bin 0 -> 1148 bytes
html/ChangeLog | 36 +
html/formulas.tex | 42 +
html/fx_sc.png | Bin 0 -> 1177 bytes
html/index.html | 134 +++
html/lin_rule_sc.png | Bin 0 -> 2974 bytes
html/linear_svm_sc.png | Bin 0 -> 12965 bytes
html/makros.tex | 144 +++
html/multi_lin_rule_sc.png | Bin 0 -> 3799 bytes
html/multi_linear_svm_sc.png | Bin 0 -> 11607 bytes
html/multi_trn_set_sc.png | Bin 0 -> 3831 bytes
html/multi_w_sc.png | Bin 0 -> 1920 bytes
html/new.gif | Bin 0 -> 144 bytes
html/set_y_sc.png | Bin 0 -> 1496 bytes
html/trn_set_sc.png | Bin 0 -> 6665 bytes
html/w_sc.png | Bin 0 -> 679 bytes
html/wx_sc.png | Bin 0 -> 1141 bytes
html/x_sc.png | Bin 0 -> 436 bytes
lbpfilter_mex.c | 78 ++
lbppyr.m | 59 ++
lbppyr_features_mex.c | 160 ++++
lbppyr_mex.c | 134 +++
lib_svmlight_format.c | 97 ++
lib_svmlight_format.h | 13 +
liblbp.c | 257 ++++++
liblbp.h | 15 +
libocas.c | 1490 +++++++++++++++++++++++++++++++
libocas.h | 123 +++
libocas_test.m | 171 ++++
libqp.h | 86 ++
libqp_splx.c | 407 +++++++++
linclass.c | 632 +++++++++++++
msvmocas.c | 540 ++++++++++++
msvmocas.m | 63 ++
msvmocas_mex.c | 364 ++++++++
msvmocas_test.m | 49 ++
ocas_helper.c | 1778 +++++++++++++++++++++++++++++++++++++
ocas_helper.h | 104 +++
ocas_lbp_helper.c | 414 +++++++++
ocas_lbp_helper.h | 81 ++
sparse_mat.c | 123 +++
sparse_mat.h | 47 +
svmlight_linclass.m | 17 +
svmlight_linclass_mex.c | 319 +++++++
svmocas.c | 720 +++++++++++++++
svmocas.m | 67 ++
svmocas_lbp.m | 71 ++
svmocas_lbp_example.m | 118 +++
svmocas_lbp_mex.c | 382 ++++++++
svmocas_mex.c | 489 +++++++++++
svmocas_parseout.m | 131 +++
version.h | 3 +
72 files changed, 14523 insertions(+)
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..45423e6
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,3 @@
+Vojtech Franc <xfrancv at cmp.felk.cvut.cz>
+Soeren Sonnenburg <Soeren.Sonnenburg at tu-berlin.de>
+
diff --git a/ChangeLog b/ChangeLog
new file mode 100644
index 0000000..5e762e3
--- /dev/null
+++ b/ChangeLog
@@ -0,0 +1,36 @@
+2010-06-11 Vojtech Franc
+ * Added functions which implement the COFFIN framework for training
+ * translation invariant image classifier from virtual example.
+ * Added functions:
+ * lbppyr.m, lbppyr_mex.c, liblbp.h, ocas_lbp_helper.h, svmocas_lbp.m
+ * lbpfilter_mex.c, lbppyr_features_mex.c, liblbp.c, ocas_lbp_helper.c
+ * svmocas_lbp_example.m, svmocas_lbp_mex.c
+2009-08-03 Vojtech Franc
+ * BUG FIX: OCAS solver was crashing on some data (reported by Alex Binder).
+ The problem was a bug in "qsort_data" function which did not expect a sequnce of length 1
+ as its input. The same bug was fixed also in "parallel_qsort_data".
+ * A new functionality added to the stand alone application "svmocas" (mex interface has it already).
+ Each examplean have a different regularization constant which is taken from specified text file.
+2009-07-31 Vojtech Franc
+ * BUG FIX: Fixed memory leak problem (missing "LIBQP_FREE( x_neq )") in libqp_splx.c (reported by Alex Binder)
+2009-02-24 Vojtech Franc
+ * Implemented version of binary SVMOCAS which supports using different C
+ * for each training example. Currently, this functionality is used in
+ * the Matlab's intefrace only.
+2008-12-10 Vojtech Franc
+ * Added stand alone implementaion of multi-class OCAS solver (msvmocas)
+ * Added stand alone implementation of linear classifier (linclass)
+ * old benchmarking and testing scripts for Matlab removed
+ * Added new (simpler) testing script for Matlab
+ * Data moved to ./data folder
+ * Updated HTML page, README and INSTALL files
+2008-12-02 Vojtech Franc
+ * Added multi-class version of OCAS solver including interface to Matlab (msvmocas_mex.c).
+ It supports sparse and full matrices and loading examples directly from SVM^light file.
+ The parallel version has not been implemented yet.
+ * Added new implementation of linear classifier (svmlight_linclass_mex.c).
+ * Added function which computes cls. error and AUC (compute_errors_mex.c).
+2008-11-10 Vojtech Franc
+ * Added support for represenation of SVMlight data as full matrix.
+ The representation (spare or full) which requires less memory is used.
+
diff --git a/Contents.m b/Contents.m
new file mode 100644
index 0000000..9644ca0
--- /dev/null
+++ b/Contents.m
@@ -0,0 +1,29 @@
+% OCAS solver for training linear SVM classifiers from large-scale data
+%
+% Copyright (C) 2008,2009,2010
+% Vojtech Franc, xfrancv at cmp.felk.cvut.cz
+% Soeren Sonnenburg, soeren.sonnenburg at tu-berlin.de
+%
+% SVM solvers:
+% svmocas Train linear binary (two-class) SVM classifier using
+% OCAS solver.
+% svmocas_lbp Train linear SVM classifier for images represented by
+% LBP features.
+% msvmocas Train multi-class linear SVM classifier using OCAS solver.
+%
+% Auxciliary functions:
+% svmlight_linclass Classify examples in SVM^light file by linear rule.
+% svmocas_parseout Parsing of text output of SVMOCAS solver.
+%
+% Examples
+% libocas_test This script tests functionality of SVMOCAS and
+% MSVMOCAS solvers.
+% svmocas_lbp_example Example on using SVMOCAS_LBP from training translation
+% invariant image classifiers.
+%
+% LBP features for image classification:
+% lbpfilter Computes LBP for each 3x3 subwindow in input image.
+% lbppyr Computes LBP features on scale-pyramid of input image.
+% lbppyr_features Computes pyramid of LBP features for each defined
+% window in input images.
+%
\ No newline at end of file
diff --git a/INSTALL b/INSTALL
new file mode 100644
index 0000000..447497f
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,46 @@
+Issue make
+
+ make
+
+which should produce
+
+ svmocas ... standalone application for training binary linear SVM classifiers
+ msvmocas ... standalone application for training multi-class linear SVM classifiers
+ linclass ... implementation of linear classification rule
+ svmocas.so ... Linux library
+
+In addition, if mex compiler is in path then the following Matlab functions
+
+ msvmocas.mexXXX ... Training multi-class linear SVM classifier
+ svmocas.mexXXX ... Training two-class linear SVM classifier
+ svmlight_linclass.mexXXX ... Linear classifier loading examples directly form SVM^light file
+ svmocas_lbp.mexXXX ... Training two-class linear SVM classifier for grey-scale images
+
+ lbpfilter.mexXXX ... functions computing LBP features on grey-scale images
+ lbppyr_features.mexXXX
+ lbppyr.mexXXX
+
+
+MATLAB
+======
+
+First, CD to the root folder of OCASLIB and then:
+
+To test LIBOCAS library type
+ libocas_test
+
+To test SVMOCAS_LBP try
+ svmocas_lbp_example
+
+To get help type
+ help Content
+
+
+STANDALONE APPLICATIONS
+=======================
+
+To get help type
+ ./svmocas
+ ./msvmocas
+ ./linclass
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..94a9ed0
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, 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
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If 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 convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU 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
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "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 PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM 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 PROGRAM (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 PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 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 General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..2ed4145
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,63 @@
+MEXDETECTED := $(shell mex -h >/dev/null 2>&1 && echo yes)
+MEX := mex
+MEXFLAGS := $(shell if uname -m | grep -q x86_64 ; then echo -largeArrayDims ; fi)
+MEXSUFFIX := $(shell if uname -m | grep -q x86_64 ; then echo mexa64 ; else echo mexglx ; fi)
+CC := gcc
+#CFLAGS := -g -lm -Wall -pthread
+CFLAGS := -lm -msse -O3 -fPIC -fstrict-aliasing -fomit-frame-pointer -Wall -pthread
+#CFLAGS := -lm -msse -O3 -fPIC -fstrict-aliasing -fomit-frame-pointer -Wall
+#CFLAGS := -lm -msse -O3 -fPIC -fopenmp -fstrict-aliasing -fomit-frame-pointer -Wall
+
+
+ifeq (yes,$(MEXDETECTED))
+all: svmocas.$(MEXSUFFIX) svmlight_linclass.$(MEXSUFFIX) libocas.so svmocas msvmocas linclass msvmocas.$(MEXSUFFIX) compute_errors.$(MEXSUFFIX) lbppyr.$(MEXSUFFIX) svmocas_lbp.$(MEXSUFFIX) lbppyr_features.$(MEXSUFFIX) lbpfilter.$(MEXSUFFIX)
+
+compute_errors.$(MEXSUFFIX): compute_errors_mex.c libocas.h ocas_helper.h ocas_helper.c
+ $(MEX) $(MEXFLAGS) -DLIBOCAS_MATLAB -O -output compute_errors.$(MEXSUFFIX) compute_errors_mex.c ocas_helper.c lib_svmlight_format.c
+
+svmocas.$(MEXSUFFIX): libocas.c libocas.h libqp_splx.c libqp.h svmocas_mex.c lib_svmlight_format.c lib_svmlight_format.h ocas_helper.c ocas_helper.h
+ $(MEX) $(MEXFLAGS) -DLIBOCAS_MATLAB -O -output svmocas.$(MEXSUFFIX) svmocas_mex.c lib_svmlight_format.c ocas_helper.c libocas.c libqp_splx.c
+
+
+linclass_light.$(MEXSUFFIX): linclass_light_mex.c lib_svmlight_format.c lib_svmlight_format.h ocas_helper.c ocas_helper.h
+ $(MEX) $(MEXFLAGS) -DLIBOCAS_MATLAB -O -output linclass_light.$(MEXSUFFIX) linclass_light_mex.c lib_svmlight_format.c ocas_helper.c
+
+
+svmlight_linclass.$(MEXSUFFIX): svmlight_linclass_mex.c lib_svmlight_format.c lib_svmlight_format.h ocas_helper.c ocas_helper.h
+ $(MEX) $(MEXFLAGS) -DLIBOCAS_MATLAB -O -output svmlight_linclass.$(MEXSUFFIX) svmlight_linclass_mex.c lib_svmlight_format.c ocas_helper.c
+
+msvmocas.$(MEXSUFFIX): libocas.c libocas.h libqp_splx.c libqp.h msvmocas_mex.c lib_svmlight_format.c lib_svmlight_format.h ocas_helper.c ocas_helper.h
+ $(MEX) $(MEXFLAGS) -DLIBOCAS_MATLAB -O -output msvmocas.$(MEXSUFFIX) msvmocas_mex.c lib_svmlight_format.c ocas_helper.c libocas.c libqp_splx.c
+
+lbppyr.$(MEXSUFFIX): lbppyr_mex.c
+ $(MEX) $(MEXFLAGS) -O -output lbppyr.$(MEXSUFFIX) lbppyr_mex.c
+
+svmocas_lbp.$(MEXSUFFIX): libocas.c libocas.h libqp_splx.c libqp.h svmocas_lbp_mex.c ocas_lbp_helper.c ocas_lbp_helper.h liblbp.h liblbp.c
+ $(MEX) $(MEXFLAGS) -DLIBOCAS_MATLAB -O -output svmocas_lbp.$(MEXSUFFIX) svmocas_lbp_mex.c ocas_lbp_helper.c libocas.c libqp_splx.c liblbp.c
+
+lbppyr_features.$(MEXSUFFIX): lbppyr_features_mex.c liblbp.c liblbp.h
+ $(MEX) -g $(MEXFLAGS) -DLIBOCAS_MATLAB -O -output lbppyr_features.$(MEXSUFFIX) lbppyr_features_mex.c liblbp.c
+
+lbpfilter.$(MEXSUFFIX): lbpfilter_mex.c
+ $(MEX) $(MEXFLAGS) -DLIBOCAS_MATLAB -O -output lbpfilter.$(MEXSUFFIX) lbpfilter_mex.c
+
+
+else
+all: libocas.so svmocas msvmocas
+endif
+
+svmocas: svmocas.c lib_svmlight_format.c sparse_mat.c ocas_helper.c ocas_helper.h libocas.h sparse_mat.h libocas.c
+ $(CC) $(CFLAGS) -o $@ svmocas.c lib_svmlight_format.c sparse_mat.c ocas_helper.c libocas.c libqp_splx.c
+
+msvmocas: msvmocas.c lib_svmlight_format.c sparse_mat.c ocas_helper.c ocas_helper.h libocas.h sparse_mat.h libocas.c
+ $(CC) $(CFLAGS) -o $@ msvmocas.c lib_svmlight_format.c sparse_mat.c ocas_helper.c libocas.c libqp_splx.c
+
+linclass: linclass.c lib_svmlight_format.c libocas.h
+ $(CC) $(CFLAGS) -o $@ linclass.c lib_svmlight_format.c
+
+
+libocas.so: libocas.c libocas.h libqp_splx.c libqp.h
+ $(CC) $(CFLAGS) -shared -o $@ libocas.c libqp_splx.c
+
+clean:
+ rm -f *~ svmocas.$(MEXSUFFIX) svmlight_linclass.$(MEXSUFFIX) svmocas msvmocas linclass libocas.so msvmocas.$(MEXSUFFIX) lbpfilter.$(MEXSUFFIX) lbppyr_features.$(MEXSUFFIX) svmocas_lbp.$(MEXSUFFIX) lbppyr.$(MEXSUFFIX) compute_errors.$(MEXSUFFIX)
diff --git a/README b/README
new file mode 100644
index 0000000..da840c9
--- /dev/null
+++ b/README
@@ -0,0 +1,74 @@
+LIBOCAS - Library implementing Optimized Cutting Plane Algorithm (OCAS)
+solver for training linear SVM classifiers
+
+FEATURES
+ - SVM solvers for training linear classifiers from large scale-data.
+ - Binary (two-class) and genuine multi-class SVM formulations.
+ - Optimized code written in C.
+ - A stand alone application and MEX interface for Matlab.
+ - Reads examples from SVM^light format.
+ - Optimized for both sparse and dense features.
+ - Parallelized version of the binary solver.
+ - Allows using different C for each training example (Matlab's interace to binary solver).
+ - Tools for classification.
+ - Training translation invariant image classifiers from virtual examples.
+ - Functions for computing image features based on Local Binary Patterns (LBP).
+
+
+PROBLEM FORMULATION
+
+OCAS solver is currently implemented for training binary (two-class) and multi-class
+SVM classifiers:
+
+1. Binary case: OCAS solves the following unconstrained convex optimization task
+
+ W^*,W0^* = argmin 0.5*(W'*W+W0^2) + C*sum max( 0, 1-y(i)*(W'*X(:,i)+W0*X0) )
+ W,W0 i=1:nData
+
+where C is the regularization constant, X [nDim x nData] are training feature
+vectors and y [nData x 1] are their binary labels (+1/-1). The result are
+parameters W^* [nDim x 1], W0^* [1 x 1] of the linear rule
+
+ f(X) = sign( X'*W + W0 )
+
+2. Multi-class case: OCAS solves the following unconstrained convex optimization task
+
+ W^* = argmin 0.5*sum_y (W(:,y)'*W(:,y)) + C* sum max( (y~=y(i)) + (W(:,y) - W(:,y(i)))'*X(:,i))
+ W i=1:nData y
+
+where C is the regularization constant, X [nDim x nData] are training feature
+vectors and y [nData x 1] are their labels from 1 to Y. The result are
+parameters W^* [nDim x Y] of the linear rule
+
+ f(X) = argmax X'*W(:,y)
+ y
+
+AVAILABILITY
+
+LIBOCAS can be downloaded from
+ http://cmp.felk.cvut.cz/~xfrancv/ocas/html/index.html
+
+PLATFORMS
+
+GNU/Linux.
+
+
+LICENSE
+
+LIBOCAS is licensed under the GPL version 3 (cf. LICENSE).
+
+
+REFERENCES
+
+V. Franc, S. Sonnenburg. Optimized Cutting Plane Algorithm for Large-Scale Risk Minimization.
+ The Journal of Machine Learning Research (JMLR), vol. 10, pp. 2157--2192. October 2009.
+ http://jmlr.csail.mit.edu/papers/volume10/franc09a/franc09a.pdf
+
+V. Franc, S. Sonnenburg. OCAS optimized cutting plane algorithm for Support Vector
+ Machines. In Proceedings of ICML. Omnipress, 2008.
+ http://cmp.felk.cvut.cz/~xfrancv/papers/Franc-OCAS-ICML08.pdf
+
+S. Sonnenburg, V. Franc. COFFIN: A Computational Framework for Linear SVMs.
+ In Proceedings of the 27nd International Machine Learning Conference (ICML'10).
+ Haifa 2010.
+ http://cmp.felk.cvut.cz/~xfrancv/papers/Sonnenburg-COFFIN-ICML10.pdf
diff --git a/RELEASES b/RELEASES
new file mode 100644
index 0000000..d7508b0
--- /dev/null
+++ b/RELEASES
@@ -0,0 +1,3 @@
+Version 0.92 2009-08-03 SVN Revision 770
+Version 0.91 2009-07-14 SVN Revision 760
+Version 0.9 2008-12-10 SVN Revision 654
diff --git a/compute_errors_mex.c b/compute_errors_mex.c
new file mode 100644
index 0000000..de418d6
--- /dev/null
+++ b/compute_errors_mex.c
@@ -0,0 +1,87 @@
+/*=================================================================
+ * COMPUTE_ERRORS computes classification error and area under ROC.
+ *
+ * Synopsis:
+ * [error,auc] = compute_errors(score,true_labels)
+ *
+ * Input:
+ * scores [1 x n] scores of binary classifier; the classifier decides
+ * according to the sign of the score.
+ * true_labels [1 x n] true labels; 1st class label = 1,
+ * 2nd class label != 1
+ * Output:
+ * error [1x1] number of mis-classifications
+ * auc [1x1] Area under ROC
+ *
+ *=================================================================*/
+
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+#include <mex.h>
+#include <sys/time.h>
+#include <time.h>
+#include <errno.h>
+
+#include "libocas.h"
+#include "ocas_helper.h"
+
+#if !defined(MX_API_VER) || MX_API_VER<0x07040000
+#define mwSize int
+#define mwIndex int
+#endif
+
+/*======================================================================
+ Main code.
+========================================================================*/
+
+void mexFunction( int nlhs, mxArray *plhs[],int nrhs, const mxArray *prhs[] )
+{
+ int *true_labels_int;
+ uint32_t n1, n2, i;
+ double auc, error;
+
+ double *scores, *true_labels;
+
+ if( nrhs != 2 )
+ mexErrMsgTxt("Two input arguments must be passed.\n"
+ "\n"
+ "[error,auc] = compute_errors(score,true_labels)\n"
+ "Inputs: score [N x 1 (double)] positive class score >= 0 otherwise negative class \n"
+ " true_labels [N x 1 (double)] positive class 1; negative class ~= 1\n"
+ "Outputs: error [1x1] number of misclassifications\n"
+ " auc [1x1] Arrea Under ROC\n");
+
+ scores = mxGetPr(prhs[0]);
+ true_labels = mxGetPr(prhs[1]);
+
+ n1 = LIBOCAS_MAX(mxGetM(prhs[0]),mxGetN(prhs[0]));
+ n2 = LIBOCAS_MAX(mxGetM(prhs[1]),mxGetN(prhs[1]));
+
+ if(n1 != n2)
+ mexErrMsgTxt("The input vectors must be of the same size.");
+
+
+ true_labels_int = mxCalloc(n1,sizeof(int));
+ if(true_labels_int == NULL)
+ mexErrMsgTxt("Not enough memory.");
+
+ error = 0;
+ for(i = 0; i < n1; i++)
+ {
+ true_labels_int[i] = (int)true_labels[i];
+
+ if((true_labels[i] == 1 && scores[i] <= 0) || (true_labels[i] != 1 && scores[i] > 0))
+ error++;
+ }
+
+ auc = compute_auc(scores, true_labels_int, n1);
+
+ mxFree(true_labels_int);
+
+ plhs[0] = mxCreateDoubleScalar(error);
+ plhs[1] = mxCreateDoubleScalar(auc);
+
+ return;
+}
+
diff --git a/data/example4_test.light b/data/example4_test.light
new file mode 100644
index 0000000..3078b45
--- /dev/null
+++ b/data/example4_test.light
@@ -0,0 +1,2000 @@
+2 1:10.4322831384621 2:2.06516522713686 3:2.23834842900684 4:1.77112240408463 5:1.18864948361917 6:1.96610750777538 7:6.72206403524197 8:12.591666249731 9:4.94292822789817 10:0.331617033111385 13:0.844904909906825 46:0.674199862463242
+1 1:10.739901743827 2:0.332526604369495 3:3.29168886618654 4:1.28895700566806 5:1.18864948361917 6:2.61419717629723 7:7.54009299191163 8:8.89411346211159 9:2.21065634313034 10:2.69438839403 11:0.884425570049315 36:0.258530551913103
+2 1:9.79698384477366 2:1.22509801609814 3:1.44834310112208 4:2.1291660167702 5:1.58486597815889 6:0.555597188574226 7:8.42925490133517 8:11.8421623062946 9:3.17937092045712 10:1.84266445757175 13:0.844904909906825 47:1.05184741228156
+6 1:7.06854056240666 2:0.577546207589123 3:4.34502930336623 4:0.639704587998222 5:1.08528865895663 6:0.129104086593549 7:8.18028956669658 8:7.74487408217582 9:0.770003894798208 10:0.378543971759223 14:0.296673189340406 18:0.154303349962092
+1 1:10.5526556362135 2:2.94023523863554 3:0.658337773237307 4:2.63520098936581 5:0.155041236993805 6:1.81195337452936 7:7.4333935627808 8:11.6422945880449 9:4.02389132120354 10:0.234634693239188 13:0.844904909906825 46:0.674199862463242
+1 1:10.6930902169236 2:1.99515962621697 3:3.423356420834 4:3.24148817351338 5:2.17057731791327 6:2.25643112538874 7:6.15300041321091 8:12.6416331792934 9:5.14163891042674 10:1.59551591402648 13:0.844904909906825 45:0.433012701892219
+2 1:9.63648718110501 2:0.157512602069761 3:1.711678210417 6:0.405296908659349 7:7.46896003915775 8:10.6429559967965 9:3.42775927361783 10:1.32881447937793 13:0.844904909906825 47:1.05184741228156
+1 1:10.2249749478901 2:0.735058809658884 3:0.790005327884769 4:3.43721868178149 5:-1.99830927680904 6:0.870328543951534 7:8.14472309031964 8:11.4424268697952 9:3.30356509703747 10:0.671837338308207 11:0.884425570049315 37:0.418600747852556
+2 1:10.0678219647145 2:2.52020163311617 3:1.05334043717969 4:4.01963629175002 5:0.671845360306487 6:3.69905688901615 7:7.07772879901139 8:11.9920630949819 9:4.47099035689282 10:4.84755276232162 11:0.884425570049315 43:0.715678085420547
+2 1:9.68664238850146 2:0.595047607819096 3:1.711678210417 4:2.22464431348635 5:3.61762886318878 6:0.304454413160905 7:8.28698899582741 8:10.6429559967965 9:2.70743304945176 10:1.25607772447378 11:0.884425570049315 43:0.715678085420547
+1 1:10.8736489635508 2:0.0787563010348804 3:1.84334576506446 4:1.0025221155196 5:0.568484535643951 6:1.38931412587983 7:7.21999470451915 8:10.5430221376716 9:3.57679228551426 10:1.92400448456134 11:0.884425570049315 43:0.715678085420547
+2 1:8.69691296254481 2:1.56637532058262 3:1.58001065576954 4:0.859304670445373 5:-0.241175257545918 6:1.68927237682106 7:8.00245718481187 8:12.3418316019189 9:3.8003418033589 10:1.6471355465391 13:0.844904909906825 16:0.125988157669742
+2 1:9.78360912280127 2:3.01024083955543 3:1.97501331971192 4:1.47513968426456 5:0.223948453435496 6:3.42479099361592 7:6.72206403524197 8:10.7928567854837 9:4.09840782715175 10:1.71126902935781 11:0.884425570049315 43:0.715678085420547
+2 1:9.11821670467501 2:0.105008401379841 3:1.97501331971192 4:0.572869780296915 5:0.465123710981414 6:1.52355668358158 7:7.21999470451915 8:10.3931213489843 9:3.47743694424997 10:1.75819596800565 11:0.884425570049315 43:0.715678085420547
+1 1:10.4021900140242 2:2.59895793415105 3:0.92167288253223 4:0.20050442310392 5:0.0344536082208455 6:2.87818612948105 7:7.07772879901139 8:11.8921292358571 9:4.42131268626068 10:2.63181914249955 11:0.884425570049315 36:0.258530551913103
+2 1:10.2483807113417 2:0.71755740942891 3:1.05334043717969 4:2.43469656626189 5:0.413443298650146 6:0.676351259616948 7:8.25142251945046 8:11.2425591515455 9:3.12969324982497 10:1.46959529532144 13:0.844904909906825 37:0.418600747852556
+1 1:10.6262166070617 2:3.13275064116524 3:1.84334576506446 4:2.02413989038243 5:2.13612370969242 6:2.32772741201502 7:7.04216232263445 8:10.6429559967965 9:3.8003418033589 10:1.36244545207555 13:0.844904909906825 45:0.433012701892219
+2 1:11.1311123615193 2:0.831316510923738 3:1.711678210417 4:0.319852293999111 5:-0.0861340205521137 6:0.486227828613514 7:8.535954330466 8:10.9927245037334 9:2.68259421413569 10:2.89773846150397 12:0.260796291926003 46:0.674199862463242
+1 1:11.361826315543 2:1.11133891460331 3:1.58001065576954 4:1.71860934089075 5:-1.1369690712879 6:1.21653303486657 7:8.535954330466 8:11.5923276584825 9:3.00549907324462 10:2.36120712963036 12:0.260796291926003 52:0.77919372247398
+6 1:8.4996358134521 2:2.73021843587585 3:3.55502397548146 4:0.572869780296915 5:1.05083505073579 6:0.829863083974451 7:4.83704078726406 8:10.3931213489843 9:5.11680007511067 10:1.45473509808296 13:0.844904909906825 24:0.280975743474508
+1 1:9.97419891090779 2:0.315025204139522 3:1.97501331971192 4:1.21734828313094 5:0.913020617852405 6:1.28911393926991 7:7.75349185017328 8:10.3431544194219 9:3.00549907324462 10:0.63820636561059 11:0.884425570049315 44:0.445904036039959
+2 1:8.71363136501029 2:0.393781505174402 3:2.50168353830177 4:0.606287184147568 5:0.482350515091837 6:0.62882040186609 7:7.8601912793041 8:9.74355126467281 9:2.48388353160712 10:1.14970999687202 13:0.844904909906825 25:0.157785504911465
+3 1:8.08501943230809 2:0.218767502874668 3:1.58001065576954 4:0.835435096266334 5:0.637391752085641 6:0.544035628580774 7:7.61122594466551 8:10.7428898559213 9:3.35324276766962 10:0.399661094150749 14:0.296673189340406 20:0.129459555600631
+2 1:9.63314350061192 2:0.551294107244163 3:4.08169419407131 4:0.639704587998222 5:0.344536082208455 6:1.31544860369944 7:8.18028956669658 8:8.09464258911279 9:1.04323108327499 10:1.4453497103534 13:0.844904909906825 27:0.184010991918219
+7 1:11.2180480543398 2:2.39769183150636 3:1.44834310112208 4:1.01206994519122 5:0.568484535643951 6:2.46389689638235 7:6.75763051161891 8:12.1419638836692 9:4.76905638068567 10:1.51730434961341 13:0.844904909906825 52:0.77919372247398
+1 1:10.880336324537 2:2.98398873921047 3:1.44834310112208 4:0.405782761043648 5:0.344536082208455 6:2.86598226059907 7:7.0065958462575 8:11.1925922219831 9:4.09840782715175 10:1.17551981312833 13:0.844904909906825 53:1
+7 1:10.9639283368644 2:3.0277422397854 3:2.10668087435938 4:0.773374203400835 5:0.706298968527332 6:2.43370837862167 7:6.68649755886503 8:10.6429559967965 9:4.04873015651961 10:3.12689834523424 11:0.884425570049315 52:0.77919372247398
+1 1:10.6061545241031 2:0.516291306784216 3:0.790005327884769 4:1.52287883262263 5:0.396216494539723 6:3.91230344000649 7:7.96689070843493 8:11.3924599402328 9:3.4525981089339 10:0.860327208543688 11:0.884425570049315 43:0.715678085420547
+2 1:9.97085523041469 2:2.49394953277121 3:1.44834310112208 4:2.98847068721557 5:1.41259793705466 6:3.80503785562279 7:6.72206403524197 8:11.9920630949819 9:4.7442175453696 10:4.79984370802965 11:0.884425570049315 43:0.715678085420547
+1 1:10.6763718144581 2:0.805064410578777 3:1.97501331971192 4:2.1291660167702 5:1.75713401926312 6:0.363546830905216 7:8.60708728321988 8:10.7928567854837 9:2.45904469629105 10:0.601446930336451 13:0.844904909906825 45:0.433012701892219
+1 1:10.9037420879887 2:1.37385991805291 3:1.58001065576954 4:2.0050442310392 5:-0.292855669877187 6:2.56730862743489 7:8.28698899582741 8:12.0420300245443 9:3.40292043830176 10:1.53685724071668 13:0.844904909906825 47:1.05184741228156
+1 1:9.58967565420166 2:1.18134451552321 3:2.37001598365431 4:0.716087225371144 5:0.258402061656341 6:1.69505315681778 7:8.7137867123507 8:11.4923937993577 9:2.65775537881962 10:1.94121102873221 11:0.884425570049315 26:0.228914278114955
+1 1:10.5058441093102 2:0.446285705864322 3:0.395002663942384 4:3.72842748676576 5:1.05083505073579 6:1.09064049271565 7:7.8601912793041 8:11.5923276584825 9:3.65130879146247 10:2.18444899405684 13:0.844904909906825 46:0.674199862463242
+2 1:9.9675115499216 2:0.682554608968963 3:1.711678210417 4:0.515582802267224 5:0.275628865766764 6:3.21025982484854 7:8.39368842495823 8:10.7928567854837 9:2.70743304945176 10:2.12579032074704 11:0.884425570049315 43:0.715678085420547
+1 1:9.45927211497088 2:2.07391592725185 3:2.76501864759669 4:0.716087225371144 5:0.223948453435496 6:0.71296286626288 7:6.29526631871867 8:12.6416331792934 9:5.16647774574281 10:0.0993286868045894 13:0.844904909906825 27:0.184010991918219
+7 1:11.5122919377323 2:0.507540606669229 3:1.44834310112208 4:3.93370582470548 5:2.82519587410933 6:1.40344492142738 7:8.1091566139427 8:10.8927906446086 9:3.03033790856069 10:1.20758655453769 11:0.884425570049315 49:0.210818510677892
+1 1:11.0742697931366 2:2.00391032633196 3:2.23834842900684 4:2.42992265142608 5:2.80796906999891 6:0.953828699459799 7:6.8287634643728 8:12.6416331792934 9:4.84357288663389 10:3.23639453541253 12:0.260796291926003 46:0.674199862463242
+2 1:9.52948940532591 2:0.997579813108485 3:4.08169419407131 4:0.515582802267224 5:0.895793813741983 6:3.16915205598293 7:9.03388499974318 8:9.64361740554796 9:1.01839224795892 10:3.61415639152762 11:0.884425570049315 44:0.445904036039959
+1 1:10.8903673660163 2:0.245019603219628 3:1.31667554647461 4:1.0025221155196 5:0.792432989079446 6:3.26999455148137 7:7.6823588974194 8:10.8428237150461 9:3.37808160298569 10:0.0993286868045894 11:0.884425570049315 36:0.258530551913103
+7 1:11.3116711081465 2:2.86147893760065 3:2.50168353830177 4:1.52287883262263 5:0.534030927423105 6:3.37276397364539 7:6.08186746045702 8:10.7928567854837 9:4.52066802752496 10:2.62869067992303 13:0.844904909906825 52:0.77919372247398
+2 1:9.68998606899456 2:2.17892432863169 3:3.02835375689161 4:0.907043818803449 5:1.49873195760678 6:0.915932475036817 7:5.86846860219537 8:12.4417654610437 9:5.41486609890353 10:0.319103182805295 13:0.844904909906825 27:0.184010991918219
+2 1:9.68329870800837 2:2.2401792294366 3:0.263335109294923 4:1.99549640136759 5:0.361762886318878 6:2.34378513422815 7:7.61122594466551 8:11.9920630949819 9:4.04873015651961 10:2.55908238759541 11:0.884425570049315 26:0.228914278114955
+2 1:9.5495514882845 2:2.5027002328862 3:1.97501331971192 4:0.639704587998222 5:0.120587628772959 6:2.00657296775247 7:6.33083279509561 8:11.9420961654195 9:4.96776706321424 10:2.05696414406354 11:0.884425570049315 26:0.228914278114955
+2 1:10.0477598817559 2:2.45019603219628 3:1.18500799182715 4:2.63520098936581 5:0.551257731533528 6:3.30467923146173 7:6.89989641712668 8:12.0420300245443 9:4.64486220410532 10:1.35384217999011 11:0.884425570049315 43:0.715678085420547
+7 1:10.6596534119926 2:0.455036405979309 3:1.44834310112208 4:0.319852293999111 5:-0.155041236993805 6:1.70147624570304 7:8.03802366118881 8:10.8428237150461 9:3.08001557919283 10:2.18366687841271 11:0.884425570049315 43:0.715678085420547
+2 1:9.7568596788565 2:0.822565810808751 3:1.31667554647461 4:2.66384447838065 5:3.82435051251385 6:0.363546830905216 7:8.39368842495823 8:11.292526081108 9:2.98066023792855 10:1.31239005085119 11:0.884425570049315 43:0.715678085420547
+2 1:9.25530760489198 2:1.83764702414721 3:2.89668620224415 4:0.868852500116988 5:0.361762886318878 6:0.889597810607287 7:7.0065958462575 8:12.6916001088559 9:4.57034569815711 10:1.17317346619594 13:0.844904909906825 18:0.154303349962092
+2 1:9.90732530104586 2:0.175014002299734 3:1.18500799182715 4:0.429652335222686 5:0.327309278098032 6:2.3527774586675 7:7.61122594466551 8:11.0426914332958 9:3.55195345019819 10:1.30144043183336 11:0.884425570049315 43:0.715678085420547
+1 1:11.1478307639848 2:2.26643132978156 3:1.44834310112208 4:0.959556881997333 5:0.310082473987609 6:2.35341976755603 7:6.89989641712668 8:12.2918646723565 9:4.7442175453696 10:1.46959529532144 13:0.844904909906825 46:0.674199862463242
+2 1:9.50273996138114 2:2.75647053622081 3:2.63335109294923 4:0.591965439640145 5:0.671845360306487 6:2.93021314945158 7:5.83290212581843 8:10.9927245037334 9:4.81873405131782 10:0.258880278207237 11:0.884425570049315 43:0.715678085420547
+1 1:9.95413682794921 2:2.43269463196631 3:2.23834842900684 4:0.515582802267224 5:0.275628865766764 6:2.17164635210342 7:6.11743393683396 8:12.0420300245443 9:5.14163891042674 10:1.46177413888014 13:0.844904909906825 27:0.184010991918219
+2 1:9.21852711946791 2:0.183764702414721 3:0.526670218589846 4:0.143217445074229 5:-0.0516804123312682 6:1.40280261253886 7:7.71792537379634 8:11.5423607289201 9:3.75066413272675 10:2.3956202179721 11:0.884425570049315 37:0.418600747852556
+1 1:10.5961234826238 2:0.192515402529708 3:1.18500799182715 4:1.59926146999555 5:0.637391752085641 6:1.08036355049925 7:7.61122594466551 8:10.9927245037334 9:3.50227577956604 10:0.692954460699734 12:0.260796291926003 46:0.674199862463242
+1 1:9.94410578646992 2:0.726308109543897 3:1.05334043717969 4:1.32237440951871 5:0.602938143864796 6:1.56466445244719 7:8.21585604307352 8:11.3424930106704 9:3.17937092045712 10:1.57283456034669 11:0.884425570049315 43:0.715678085420547
+2 1:10.9003984074956 2:1.75889072311233 3:2.37001598365431 4:2.45379222560512 5:2.48065979190087 6:1.7926841078736 7:7.4333935627808 8:12.6416331792934 9:4.27227967436425 10:2.5410937277804 13:0.844904909906825 47:1.05184741228156
+2 1:8.16526776414242 2:0.358778704714455 3:3.29168886618654 4:0.405782761043648 5:0.120587628772959 6:0.416216159764276 7:7.61122594466551 8:8.84414653254916 9:2.13613983718213 10:0.531056522364694 13:0.844904909906825 24:0.280975743474508
+1 1:9.93741842548373 2:0.192515402529708 3:2.76501864759669 4:0.907043818803449 5:0.87856700963156 6:1.56016829022751 7:7.14886175176527 8:9.44374968729826 9:2.90614373198033 10:1.46881317967731 13:0.844904909906825 47:1.05184741228156
+3 1:7.57343631686428 2:0.253770303334615 3:3.55502397548146 4:0.859304670445373 5:1.03360824662536 6:0.626893475200514 7:7.07772879901139 8:8.49437802561219 9:2.31001168439462 10:0.165808516555693 14:0.296673189340406 24:0.280975743474508
+1 1:10.395502653038 2:2.49394953277121 3:0.395002663942384 4:1.54674840680167 5:1.05083505073579 6:0.883817030610561 7:7.54009299191163 8:11.9420961654195 9:4.09840782715175 10:0.947142045042187 13:0.844904909906825 37:0.418600747852556
+2 1:8.42273116211087 2:0.0350028004599468 3:2.23834842900684 4:1.59926146999555 5:0.0861340205521137 6:0.678920495171049 7:6.93546289350362 8:10.2432205602971 9:3.60163112083033 10:0.810271807319328 13:0.844904909906825 24:0.280975743474508
+2 1:10.7900569512234 2:0.726308109543897 3:1.05334043717969 4:3.32264472572211 5:0.947474226073251 6:0.940340212800771 7:8.21585604307352 8:11.3424930106704 9:3.17937092045712 10:1.94277526002047 12:0.260796291926003 47:1.05184741228156
+2 1:10.5760613996652 2:1.19884591575318 3:2.10668087435938 4:2.67339230805227 5:3.91048453306596 6:1.01163649942706 7:8.64265375959682 8:11.5923276584825 9:2.78194955539998 10:2.13048301461182 13:0.844904909906825 47:1.05184741228156
+2 1:9.57964461272237 2:0.306274504024535 3:2.23834842900684 4:0.429652335222686 5:0.103360824662536 6:0.872255470617109 7:7.6823588974194 8:10.0433528420474 9:2.88130489666426 10:1.93651833486743 13:0.844904909906825 46:0.674199862463242
+1 1:10.6663407729788 2:0.927574212188591 3:1.44834310112208 4:1.04071343420606 5:1.10251546306706 6:2.03226532329347 7:8.50038785408906 8:11.3424930106704 9:2.90614373198033 10:2.80701304678481 11:0.884425570049315 37:0.418600747852556
+2 1:9.98422995238708 2:2.32768623058647 3:0.790005327884769 4:1.17915696444448 5:0.723525772637755 6:0.122038688819772 7:7.2555611808961 8:12.1419638836692 9:4.39647385094461 10:0.972169745654367 13:0.844904909906825 46:0.674199862463242
+2 1:9.27202600735746 2:0.402532205289389 3:2.63335109294923 4:2.47288788494835 5:4.42728865637864 6:0.655155066295619 7:7.89575775568105 8:9.64361740554796 9:2.43420586097498 10:0.598318467759928 13:0.844904909906825 47:1.05184741228156
+2 1:9.85048273266321 2:0.446285705864322 3:1.31667554647461 4:1.61835712933878 5:1.18864948361917 6:1.27048698150268 7:8.00245718481187 8:10.942757574171 9:3.15453208514105 10:1.96311026676787 13:0.844904909906825 46:0.674199862463242
+2 1:9.24527656341269 2:0.262521003449601 3:2.23834842900684 4:1.08845258256414 5:1.01638144251494 6:1.03411731052544 7:7.57565946828857 8:10.0433528420474 9:2.95582140261248 10:2.41830157165189 11:0.884425570049315 44:0.445904036039959
+2 1:9.6465182225843 2:0.367529404829442 3:3.55502397548146 4:1.15528739026545 5:-0.68907216441691 6:0.724524426256332 7:7.54009299191163 8:8.44441109604977 9:1.88775148402141 10:1.3280323637338 11:0.884425570049315 44:0.445904036039959
+1 1:10.4055336945173 2:2.79147333668076 3:1.97501331971192 4:2.73545320091777 5:5.40921649067274 6:0.738655221803885 7:6.43753222422644 8:11.292526081108 9:4.57034569815711 10:0.940885119889142 13:0.844904909906825 47:1.05184741228156
+1 1:10.3888152920518 2:1.53137252012267 3:1.58001065576954 4:2.42992265142608 5:0.206721649325073 6:3.34514469143881 7:8.03802366118881 8:12.2918646723565 9:3.75066413272675 10:1.18099462263724 11:0.884425570049315 44:0.445904036039959
+2 1:9.84713905217011 2:1.43511481885782 3:1.05334043717969 4:1.03116560453445 5:0.620164947975219 6:3.32459080700601 7:8.07359013756576 8:12.1419638836692 9:3.67614762677854 10:3.26611492988949 11:0.884425570049315 43:0.715678085420547
+6 1:7.61021680228834 2:2.85272823748567 3:3.16002131153908 4:0.639704587998222 5:1.37814432883382 6:0.49329322638729 7:5.47723736204901 8:10.2432205602971 9:4.64486220410532 10:0.47474419598729 14:0.296673189340406 24:0.280975743474508
+1 1:10.08454036718 2:2.83522683725569 3:0.263335109294923 4:0.429652335222686 5:0.103360824662536 6:3.31238693812403 7:7.61122594466551 8:11.7921953767322 9:3.9742136505714 10:1.95294276339417 11:0.884425570049315 37:0.418600747852556
+1 1:9.85382641315631 2:2.83522683725569 3:1.58001065576954 4:0.143217445074229 5:0.120587628772959 6:0.946120992797498 7:6.72206403524197 8:11.3424930106704 9:4.39647385094461 10:1.80512290665348 13:0.844904909906825 34:0.169841555121689
+1 1:11.1745802079295 2:0.726308109543897 3:2.63335109294923 4:1.63267887384621 5:1.08528865895663 6:1.14716367490586 7:8.64265375959682 8:10.0933197716098 9:1.9871068252857 10:1.45004240421818 11:0.884425570049315 53:1
+2 1:9.7535159983634 2:2.87898033783063 3:2.63335109294923 4:3.46586217079634 5:2.60124742067383 6:1.495937401375 7:6.01073450770314 8:10.592989067234 9:4.49582919220889 10:0.593625773895144 13:0.844904909906825 25:0.157785504911465
+2 1:10.8636179220715 2:0.988829112993498 3:0.92167288253223 4:0.405782761043648 5:0.155041236993805 6:3.42607561139297 7:8.28698899582741 8:11.6422945880449 9:3.2787262617214 10:0.460666114392938 11:0.884425570049315 43:0.715678085420547
+1 1:10.395502653038 2:0.315025204139522 3:1.05334043717969 4:1.01206994519122 5:0.241175257545918 6:2.34635436978225 7:7.82462480292716 8:11.0926583628583 9:3.42775927361783 10:1.08244805147679 11:0.884425570049315 43:0.715678085420547
+2 1:9.91066898153895 2:2.02141172656193 3:2.23834842900684 4:1.14573956059383 5:1.79158762748397 6:0.434843117531504 7:6.8287634643728 8:12.6416331792934 9:4.84357288663389 10:1.30300466312162 13:0.844904909906825 46:0.674199862463242
+2 1:9.26533864637127 2:1.45261621908779 3:2.10668087435938 4:0.429652335222686 5:0.275628865766764 6:0.834359246194127 7:8.25142251945046 8:12.1919308132316 9:3.40292043830176 10:1.31082581956293 13:0.844904909906825 18:0.154303349962092
+1 1:10.8168063951682 2:2.81772543702572 3:1.97501331971192 4:1.08845258256414 5:0.310082473987609 6:2.87240534948432 7:6.4019657478495 8:11.1426252924207 9:4.54550686284103 10:0.516978440770343 13:0.844904909906825 46:0.674199862463242
+1 1:10.5760613996652 2:2.67771423518593 3:1.05334043717969 4:0.143217445074229 5:0.103360824662536 6:0.859409292846607 7:7.0065958462575 8:11.7422284471698 9:4.42131268626068 10:0.898650875106088 12:0.260796291926003 38:0.217872335165298
+3 1:7.52662478996092 2:0.00875070011498671 3:4.08169419407131 4:0.429652335222686 5:0.930247421962828 6:0.751501399574387 7:5.65506974393372 8:8.19457644823764 9:3.20420975577319 10:0.495079202734686 14:0.296673189340406 24:0.280975743474508
+1 1:10.5225625117757 2:1.22509801609814 3:1.05334043717969 4:0.143217445074229 5:0.0172268041104227 6:1.58714526354556 7:8.25142251945046 8:11.8921292358571 9:3.42775927361783 10:2.22902958577228 11:0.884425570049315 37:0.418600747852556
+2 1:10.7666511877717 2:1.40011201839787 3:1.97501331971192 4:1.17915696444448 5:1.18864948361917 6:0.570370293010304 7:8.32255547220435 8:12.0919969541068 9:3.35324276766962 10:1.94277526002047 11:0.884425570049315 36:0.258530551913103
+7 1:10.9003984074956 2:1.48761901954774 3:4.74003196730861 4:0.572869780296915 5:0.534030927423105 6:2.55767399410702 7:7.78905832655022 8:11.4424268697952 9:2.70743304945176 10:2.50198794557387 13:0.844904909906825 47:1.05184741228156
+2 1:9.48602155891566 2:2.48519883265623 3:2.50168353830177 4:1.41785270623486 5:2.61847422478426 6:1.27048698150268 7:5.86846860219537 8:11.8421623062946 9:5.24099425169103 10:0.986247827248718 13:0.844904909906825 27:0.184010991918219
+1 1:10.6262166070617 2:2.36268903104641 3:0.395002663942384 4:0.572869780296915 5:0.0344536082208455 6:3.23209832705839 7:7.54009299191163 8:11.9920630949819 9:4.12324666246782 10:1.95216064775004 11:0.884425570049315 33:0.0483368244522832
+2 1:10.3420037651484 2:2.32768623058647 3:2.37001598365431 4:0.606287184147568 5:0.361762886318878 6:1.97317290554916 7:6.08186746045702 8:12.241897742794 9:5.24099425169103 10:1.16535230975463 13:0.844904909906825 37:0.418600747852556
+2 1:9.05134309481307 2:0.245019603219628 3:3.02835375689161 4:1.01206994519122 5:0.361762886318878 6:0.776551446226867 7:7.21999470451915 8:9.09398118036129 9:2.60807770818748 10:1.65964939684519 11:0.884425570049315 34:0.169841555121689
+1 1:10.8569305610853 2:2.88773103794561 3:1.84334576506446 4:1.01206994519122 5:0.430670102760569 6:2.8948861605827 7:6.5797981297342 8:11.0926583628583 9:4.37163501562854 10:0.542006141382523 13:0.844904909906825 46:0.674199862463242
+1 1:11.0073961832747 2:0.805064410578777 3:2.10668087435938 4:1.4369483655781 5:1.11974226717748 6:1.04696348829594 7:8.64265375959682 8:10.6929229263589 9:2.38452819034284 10:2.13673993976487 11:0.884425570049315 53:1
+1 1:10.5626866776928 2:0.551294107244163 3:1.44834310112208 4:1.0025221155196 5:0.964701030183674 6:1.63210688574232 7:8.18028956669658 8:10.8927906446086 9:3.00549907324462 10:1.38043411189055 11:0.884425570049315 43:0.715678085420547
+1 1:10.7934006317165 2:0.332526604369495 3:1.97501331971192 4:3.21761859933434 5:1.03360824662536 6:2.50050850302828 7:7.75349185017328 8:10.2432205602971 9:2.9309825672964 10:1.73786096125825 11:0.884425570049315 43:0.715678085420547
+1 1:10.7298707023477 2:2.75647053622081 3:1.18500799182715 4:3.08394898393173 5:-0.706298968527332 6:1.80745721230968 7:6.93546289350362 8:11.6422945880449 9:4.39647385094461 10:0.0234634693239188 13:0.844904909906825 46:0.674199862463242
+2 1:9.32552489524701 2:2.88773103794561 3:1.84334576506446 4:0.405782761043648 5:0.275628865766764 6:1.48758738582417 7:6.65093108248809 8:11.0926583628583 9:4.34679618031246 10:0.990158405469372 13:0.844904909906825 45:0.433012701892219
+1 1:10.9672720173575 2:1.87264982460716 3:1.31667554647461 4:1.11709607157898 5:-0.0344536082208455 6:1.17157141266981 7:7.50452651553469 8:12.4917323906062 9:4.32195734499639 10:3.09952429768967 12:0.260796291926003 46:0.674199862463242
+1 1:10.5727177191721 2:0.577546207589123 3:1.44834310112208 4:1.0025221155196 5:0.981927834294096 6:1.63981459240462 7:8.21585604307352 8:10.8927906446086 9:2.9309825672964 10:1.39373007784077 11:0.884425570049315 43:0.715678085420547
+2 1:9.73679759589792 2:0.420033605519362 3:1.58001065576954 4:0.859304670445373 5:-0.258402061656341 6:0.432916190865929 7:7.96689070843493 8:10.6929229263589 9:3.03033790856069 10:1.59316956709408 11:0.884425570049315 36:0.258530551913103
+3 1:6.62717473731788 2:2.95773663886551 3:4.87169952195607 4:0.405782761043648 5:0.964701030183674 6:0.0610193444098861 7:4.16127773610217 8:8.14460951867522 9:4.19776316841604 10:0.567815957638834 14:0.296673189340406 24:0.280975743474508
+1 1:10.154757657535 2:2.97523803909548 3:1.711678210417 4:0.453521909401724 5:0.3789896904293 6:2.91158619168436 7:6.8287634643728 8:10.9927245037334 9:4.14808549778389 10:0.854070283390643 11:0.884425570049315 43:0.715678085420547
+2 1:9.40911690757443 2:2.62521003449601 3:0.658337773237307 4:0.773374203400835 5:0.275628865766764 6:0.38538533311507 7:7.29112765727304 8:11.8921292358571 9:4.27227967436425 10:0.409828597524448 11:0.884425570049315 37:0.418600747852556
+2 1:9.8605137741425 2:1.05008401379841 3:0.92167288253223 4:0.143217445074229 6:1.40794108364706 7:8.25142251945046 8:11.7422284471698 9:3.37808160298569 10:1.31942909164836 11:0.884425570049315 43:0.715678085420547
+2 1:8.96440740199255 2:0.297523803909548 3:0.658337773237307 4:0.319852293999111 5:-0.0344536082208455 6:0.903086297266315 7:7.78905832655022 8:11.3924599402328 9:3.6264699561464 10:0.296421829125507 11:0.884425570049315 37:0.418600747852556
+2 1:8.79053601635152 2:2.8964817380606 3:0.658337773237307 4:1.14573956059383 5:-0.292855669877187 6:0.2761928220658 7:7.39782708640386 8:11.6922615176074 9:4.07356899183568 10:1.18177673828137 11:0.884425570049315 26:0.228914278114955
+2 1:9.98422995238708 2:2.19642572886166 3:1.97501331971192 4:0.606287184147568 5:0.172268041104227 6:0.863905455066282 7:6.61536460611115 8:12.4417654610437 9:4.99260589853032 10:0.170501210420476 13:0.844904909906825 37:0.418600747852556
+1 1:9.97754259140089 2:0.481288506324269 3:3.81835908477638 4:1.11709607157898 5:1.61931958637974 6:1.61990301686035 7:7.96689070843493 8:8.29451030736249 9:1.39097477769999 10:1.45082451986231 13:0.844904909906825 47:1.05184741228156
+7 1:11.1444870834917 2:0.822565810808751 3:1.711678210417 4:0.916591648475064 5:0.568484535643951 6:1.54539518579143 7:8.535954330466 8:10.9927245037334 9:2.65775537881962 10:2.05148933455463 11:0.884425570049315 53:1
+2 1:9.20515239749552 2:0.315025204139522 3:1.44834310112208 4:0.319852293999111 5:-0.0172268041104227 6:1.13688673268946 7:7.78905832655022 8:10.7928567854837 9:3.25388742640533 10:0.994068983690025 11:0.884425570049315 43:0.715678085420547
+1 1:10.0343851597835 2:0.315025204139522 3:2.23834842900684 4:1.0025221155196 5:0.87856700963156 6:0.845278497299054 7:7.71792537379634 8:10.0433528420474 9:2.83162722603212 10:1.83171483855392 11:0.884425570049315 43:0.715678085420547
+1 1:10.3720968895863 2:0.892571411728645 3:2.10668087435938 4:1.28895700566806 5:1.20587628772959 6:1.58264910132589 7:8.7137867123507 8:10.8428237150461 9:2.38452819034284 10:2.58098162563106 11:0.884425570049315 43:0.715678085420547
+1 1:9.72342287392553 2:1.04133331368342 3:3.29168886618654 4:0.286434890148457 5:0.447896906870991 6:1.73423399901782 7:8.99831852336624 8:10.4930552081092 9:1.73871847212499 10:1.44926028857405 13:0.844904909906825 41:0.0982155906707477
+1 1:10.0678219647145 2:0.0262521003449601 3:5.53003729519338 4:1.27940917599644 5:2.41175257545918 6:0.192692666557535 7:4.6947748817563 8:6.34580005442793 9:2.63291654350355 10:1.52825396863124 11:0.884425570049315 44:0.445904036039959
+1 1:10.5894361216376 2:0.58629690770411 3:0.92167288253223 4:0.143217445074229 5:-0.0861340205521137 6:1.39702183254213 7:8.1091566139427 8:11.292526081108 9:3.2787262617214 10:0.597536352115798 11:0.884425570049315 37:0.418600747852556
+3 1:8.48291741098661 2:1.7151372225374 3:3.68669153012892 4:0.453521909401724 5:0.637391752085641 6:0.784259152889168 7:7.14886175176527 8:12.4417654610437 9:4.09840782715175 10:0.384800896912268 13:0.844904909906825 18:0.154303349962092
+1 1:10.4389704994482 2:0.411282905404375 3:1.05334043717969 4:0.811565522087296 5:0.482350515091837 6:3.35542163365521 7:7.93132423205799 8:11.1426252924207 9:3.35324276766962 10:2.47539601367343 11:0.884425570049315 36:0.258530551913103
+2 1:10.4757509848723 2:2.20517642897665 3:0.790005327884769 4:1.03116560453445 5:0.447896906870991 6:2.26670806760514 7:7.36226061002692 8:12.1919308132316 9:4.37163501562854 10:0.786808337995409 11:0.884425570049315 43:0.715678085420547
+1 1:10.6596534119926 2:0.358778704714455 3:1.97501331971192 4:2.1912269096357 5:0.792432989079446 6:0.653870448518569 7:7.8601912793041 8:10.2931874898595 9:2.90614373198033 10:2.00456239590679 12:0.260796291926003 37:0.418600747852556
+2 1:9.05803045579927 2:1.50512041977771 3:3.55502397548146 4:1.0025221155196 5:1.61931958637974 6:1.21396379931247 7:8.00245718481187 8:11.9920630949819 9:3.17937092045712 10:0.997979561910678 13:0.844904909906825 18:0.154303349962092
+1 1:10.0711656452076 2:2.52895233323116 3:5.00336707660354 4:1.80931372277109 5:3.20418556453863 6:0.869043926174483 7:3.27211582667863 8:10.2432205602971 9:5.93648164054102 10:0.860327208543688 13:0.844904909906825 47:1.05184741228156
+1 1:10.9906777808092 2:0.0962577012648538 3:2.37001598365431 4:2.1291660167702 5:0.568484535643951 6:0.743793692912086 7:7.04216232263445 8:9.99338591248493 9:3.37808160298569 10:0.489604393225771 12:0.260796291926003 46:0.674199862463242
+1 1:10.0176667573181 2:1.39136131828289 3:1.84334576506446 4:0.319852293999111 5:0.241175257545918 6:0.212604242101814 7:8.32255547220435 8:12.0919969541068 9:3.32840393235354 10:0.716417930023653 11:0.884425570049315 36:0.258530551913103
+2 1:9.21183975848172 2:0.56004480735915 3:3.95002663942384 4:1.94775725300951 5:3.92771133717639 6:0.68405896627925 7:8.25142251945046 8:8.29451030736249 9:1.14258642453928 10:0.745356208856486 13:0.844904909906825 47:1.05184741228156
+2 1:9.84379537167702 3:0.92167288253223 4:1.67564410736848 5:1.42982474116509 6:2.00721527664099 7:7.46896003915775 8:11.3924599402328 9:3.85001947399104 10:1.78478789990609 11:0.884425570049315 43:0.715678085420547
+2 1:10.0711656452076 2:2.92273383840556 3:0.92167288253223 4:1.4369483655781 5:0.482350515091837 6:2.6315395162874 7:7.2555611808961 8:11.5423607289201 9:4.12324666246782 10:1.18803366343442 11:0.884425570049315 37:0.418600747852556
+2 1:9.83710801069082 2:2.75647053622081 3:0.395002663942384 4:0.716087225371144 5:0.275628865766764 6:3.10363654935337 7:7.50452651553469 8:11.8421623062946 9:4.07356899183568 10:1.74411788641129 11:0.884425570049315 43:0.715678085420547
+2 1:9.13827878763359 2:1.29510361701803 3:0.790005327884769 4:0.716087225371144 5:0.344536082208455 6:1.42271418808313 7:8.14472309031964 8:11.9420961654195 9:3.57679228551426 10:1.15049211251615 11:0.884425570049315 26:0.228914278114955
+2 1:8.27226553992151 2:0.656302508624003 3:1.58001065576954 6:0.369969919790467 7:8.32255547220435 8:10.8428237150461 9:2.80678839071605 10:0.898650875106088 14:0.296673189340406 24:0.280975743474508
+2 1:10.4456578604344 2:1.41761341862785 3:2.50168353830177 4:2.11484427226278 5:2.13612370969242 6:0.443835441970856 7:8.35812194858129 8:12.0420300245443 9:3.20420975577319 10:1.14579941865137 13:0.844904909906825 36:0.258530551913103
+2 1:9.92404370351134 2:1.65388232173249 3:1.44834310112208 4:1.08845258256414 5:-0.654618556196064 6:0.799674566213771 7:7.8601912793041 8:12.3917985314813 9:3.9742136505714 10:0.423124563474668 13:0.844904909906825 47:1.05184741228156
+2 1:9.67326766652908 2:0.280022403679575 3:2.37001598365431 4:0.143217445074229 5:0.172268041104227 6:1.08485971271892 7:7.57565946828857 8:9.89345205336008 9:2.85646606134819 10:0.995633214978286 13:0.844904909906825 45:0.433012701892219
+1 1:10.4423141799413 2:0.183764702414721 3:5.00336707660354 4:2.43469656626189 5:4.30670102760569 6:0.33014676870191 7:6.01073450770314 8:6.74553549092733 9:1.93742915465356 10:1.50087992108667 11:0.884425570049315 44:0.445904036039959
+1 1:11.0040525027816 2:1.60137812104257 3:2.37001598365431 4:2.15303559094924 5:1.56763917404847 6:2.0354768677361 7:7.89575775568105 8:12.4417654610437 9:3.8003418033589 10:0.483347468072726 13:0.844904909906825 46:0.674199862463242
+1 1:9.67661134702218 2:0.58629690770411 3:3.68669153012892 4:0.907043818803449 5:1.68822680282143 6:0.129104086593549 7:8.35812194858129 8:8.69424574386189 9:1.31645827175177 10:1.07228054810309 11:0.884425570049315 43:0.715678085420547
+1 1:10.8335247976337 2:3.13275064116524 3:2.10668087435938 4:4.29652335222686 5:0.637391752085641 6:1.07972124161072 7:6.8287634643728 8:10.3931213489843 9:3.75066413272675 10:0.692954460699734 13:0.844904909906825 38:0.217872335165298
+1 1:10.8301811171406 2:1.1200896147183 3:2.50168353830177 4:2.63042707453 5:2.118896905582 6:1.65394538795218 7:8.78491966510459 8:11.2425591515455 9:2.43420586097498 10:2.12187974252639 13:0.844904909906825 47:1.05184741228156
+3 1:7.66705937067099 2:3.08899714059031 3:1.31667554647461 6:0.29995825094123 7:7.21999470451915 8:11.1426252924207 9:3.92453597993925 10:0.654630794137333 14:0.296673189340406 18:0.154303349962092
+1 1:11.5056045767461 2:0.796313710463791 3:1.711678210417 4:2.95027936852911 5:2.68738144122595 6:1.42078726141756 7:8.535954330466 8:10.8927906446086 9:2.63291654350355 10:1.11529690853027 11:0.884425570049315
+2 1:8.703600323531 2:0.245019603219628 3:2.37001598365431 4:0.859304670445373 5:0.137814432883382 6:0.705897468489104 7:7.46896003915775 8:9.94341898292251 9:2.95582140261248 10:1.52668973734298 11:0.884425570049315 44:0.445904036039959
+1 1:10.4155647359966 2:1.57512602069761 3:1.31667554647461 4:0.286434890148457 5:0.0861340205521137 6:0.308308266492056 7:7.96689070843493 8:12.3418316019189 9:3.85001947399104 10:1.64166073703018 11:0.884425570049315 37:0.418600747852556
+2 1:9.4425537125054 2:2.00391032633196 3:3.29168886618654 4:0.515582802267224 5:0.740752576748178 6:0.951259463905698 7:6.22413336596479 8:12.6416331792934 9:5.11680007511067 10:1.34445679226054 13:0.844904909906825 18:0.154303349962092
+7 1:11.3718573570223 2:2.45894673231127 3:1.97501331971192 4:0.20050442310392 5:0.120587628772959 6:3.32266388034043 7:6.33083279509561 8:11.9920630949819 9:4.99260589853032 10:2.97986060413768 13:0.844904909906825 52:0.77919372247398
+2 1:9.94410578646992 2:0.61254900804907 3:1.31667554647461 4:1.63267887384621 5:0.258402061656341 6:2.26349652316251 7:8.21585604307352 8:11.0426914332958 9:3.05517674387676 10:0.85015970516999 11:0.884425570049315 43:0.715678085420547
+2 1:9.46261579546398 2:0.227518202989654 3:1.711678210417 4:2.32967043987412 5:1.49873195760678 6:1.58329141021441 7:7.57565946828857 8:10.5430221376716 9:3.2787262617214 10:2.02724374958658 11:0.884425570049315 43:0.715678085420547
+1 1:11.0274582662333 2:2.5027002328862 3:2.37001598365431 4:0.143217445074229 5:0.155041236993805 6:2.23587724095593 7:5.93960155494926 8:11.8421623062946 9:5.16647774574281 10:1.26859157477987 13:0.844904909906825 46:0.674199862463242
+1 1:11.1143939590538 2:0.507540606669229 3:2.76501864759669 4:2.44901831076931 5:0.602938143864796 6:1.88838813226384 7:8.18028956669658 8:9.59365047598553 9:2.13613983718213 10:0.91351107234457 13:0.844904909906825 53:1
+1 1:10.4423141799413 2:0.568795507474136 3:1.31667554647461 4:1.52287883262263 5:0.637391752085641 6:2.28533502537237 7:8.18028956669658 8:11.0426914332958 9:3.05517674387676 10:2.15081802135922 11:0.884425570049315 44:0.445904036039959
+2 1:9.00787524840281 2:0.516291306784216 3:1.97501331971192 4:2.0671051239047 5:1.61931958637974 6:0.751501399574387 7:8.18028956669658 8:10.3431544194219 9:2.60807770818748 10:2.02411528701006 11:0.884425570049315 26:0.228914278114955
+2 1:8.81728546029629 2:1.27760221678806 3:1.84334576506446 4:0.143217445074229 5:0.068907216441691 6:1.04310963496479 7:8.46482137771211 8:11.8921292358571 9:3.15453208514105 10:2.05852837535181 11:0.884425570049315 44:0.445904036039959
+2 1:8.69022560155862 2:0.490039206439256 3:2.10668087435938 4:1.04071343420606 5:-0.344536082208455 6:0.729662897364533 7:8.14472309031964 8:10.1932536307346 9:2.58323887287141 10:0.165808516555693 11:0.884425570049315 36:0.258530551913103
+2 1:8.6066335892312 2:2.84397753737068 3:1.84334576506446 4:0.716087225371144 5:0.999154638404519 6:0.820228450646575 7:6.5797981297342 8:11.1925922219831 9:4.44615152157675 10:1.26468099655922 13:0.844904909906825 16:0.125988157669742
+2 1:9.40577322708133 2:1.61012882115755 3:0.395002663942384 4:1.86182678596497 5:1.34369072061297 6:1.10412897937468 7:7.82462480292716 8:12.0420300245443 9:3.89969714462318 10:2.07026011001376 11:0.884425570049315 37:0.418600747852556
+2 1:9.67995502751527 2:0.131260501724801 3:0.658337773237307 4:0.907043818803449 5:-0.0172268041104227 6:0.259492790964147 7:7.6823588974194 8:11.4923937993577 9:3.77550296804283 10:0.305025101210944 13:0.844904909906825 45:0.433012701892219
+1 1:11.2347664568053 2:0.708806709313924 3:0.790005327884769 4:3.14123596196142 5:1.39537113294424 6:0.780405299558017 7:8.1091566139427 8:11.4923937993577 9:3.37808160298569 10:2.00299816461853 13:0.844904909906825 46:0.674199862463242
+1 1:9.9608241889354 2:0.166263302184748 3:1.18500799182715 4:0.20050442310392 5:0.0344536082208455 6:1.36490638811587 7:7.61122594466551 8:10.9927245037334 9:3.55195345019819 10:0.88848337173239 13:0.844904909906825 36:0.258530551913103
+2 1:9.76689072033579 2:2.25768062966657 3:3.29168886618654 4:2.14826167611343 5:4.94409277969133 6:1.10798283270583 7:5.40610440929513 8:12.241897742794 9:5.58873794611603 10:1.20524020760529 13:0.844904909906825 27:0.184010991918219
+2 1:9.92404370351134 2:3.01899153967042 3:0.395002663942384 4:2.1291660167702 5:0.740752576748178 6:2.70155118513664 7:7.61122594466551 8:11.7422284471698 9:3.94937481525532 10:4.22968140345842 11:0.884425570049315 26:0.228914278114955
+1 1:10.3420037651484 2:0.271271703564588 3:1.44834310112208 4:0.143217445074229 5:0.068907216441691 6:0.539539466361098 7:7.71792537379634 8:10.7928567854837 9:3.30356509703747 10:0.712507351803 11:0.884425570049315 43:0.715678085420547
+2 1:10.3587221676139 2:2.69521563541591 3:1.05334043717969 4:1.14573956059383 5:-0.482350515091837 6:1.58907219021114 7:7.0065958462575 8:11.7422284471698 9:4.42131268626068 10:1.41641143152056 13:0.844904909906825 37:0.418600747852556
+1 1:10.6964338974167 2:0.673803908853977 3:0.658337773237307 4:0.319852293999111 6:3.20961751596001 7:8.07359013756576 8:11.4923937993577 9:3.42775927361783 10:1.53138243120776 11:0.884425570049315 36:0.258530551913103
+2 1:9.59301933469476 2:0.647551808509017 3:3.29168886618654 4:1.0025221155196 5:1.80881443159439 6:1.12147131936485 7:8.535954330466 8:9.19391503948614 9:1.49033011896427 10:1.17786616006072 13:0.844904909906825 27:0.184010991918219
+3 1:8.21876665203196 2:0.157512602069761 3:0.263335109294923 4:1.74725282990559 5:2.44620618368003 6:0.681489730725149 7:7.75349185017328 8:11.7422284471698 9:3.85001947399104 10:0.703904079717563 14:0.296673189340406 20:0.129459555600631
+2 1:9.34224329771249 2:0.805064410578777 3:3.423356420834 4:1.63267887384621 5:2.29116494668622 6:1.0970635816009 7:8.85605261785847 8:9.44374968729826 9:1.2916194364357 10:1.15518480638093 13:0.844904909906825 27:0.184010991918219
+2 1:9.89395057907347 2:0.0350028004599468 3:2.23834842900684 6:0.967959495007351 7:6.93546289350362 8:10.2432205602971 9:3.60163112083033 10:1.08479439840918 13:0.844904909906825 37:0.418600747852556
+1 1:10.8602742415784 2:2.78272263656577 3:2.23834842900684 4:1.61835712933878 5:1.17142267950875 6:2.98994787608442 7:6.18856688958785 8:11.1426252924207 9:4.66970103942139 10:0.742227746279963 13:0.844904909906825 46:0.674199862463242
+1 1:10.9070857684818 2:0.253770303334615 3:1.31667554647461 4:1.01206994519122 5:1.01638144251494 6:3.25650606482234 7:7.71792537379634 8:10.942757574171 9:3.40292043830176 10:0.0844684895661075 11:0.884425570049315 52:0.77919372247398
+2 1:9.85048273266321 2:0.988829112993498 3:1.31667554647461 4:1.35101789853356 5:0.344536082208455 6:1.13817135046651 7:8.42925490133517 8:11.4923937993577 9:3.05517674387676 10:1.04177803798199 13:0.844904909906825 27:0.184010991918219
+1 1:10.5827487606514 2:0.280022403679575 3:1.18500799182715 4:1.59926146999555 5:0.396216494539723 6:1.99372678998196 7:7.75349185017328 8:11.0426914332958 9:3.4525981089339 10:3.59382138478022 11:0.884425570049315 34:0.169841555121689
+3 1:7.58346735834357 2:2.61645933438103 3:3.81835908477638 4:1.58016581065232 5:3.37645360564286 6:0.885743957276137 7:4.48137602349465 8:10.6929229263589 9:5.51422144016781 10:0.619435590151455 14:0.296673189340406 24:0.280975743474508
+2 1:9.87723217660798 2:0.66505320873899 3:1.31667554647461 4:2.6924879673955 5:1.63654639049016 6:0.664147390734971 7:8.28698899582741 8:10.9927245037334 9:2.9309825672964 10:1.63618592752127 11:0.884425570049315 26:0.228914278114955
+1 1:9.34558697820559 2:0.595047607819096 3:0.92167288253223 4:0.143217445074229 6:1.44005652807331 7:8.07359013756576 8:11.292526081108 9:3.30356509703747 10:2.43550811582277 11:0.884425570049315 34:0.169841555121689
+2 1:9.92070002301824 2:1.94265542552705 3:3.02835375689161 6:1.50300279914877 7:6.61536460611115 8:12.6916001088559 9:4.89325055726603 10:1.36244545207555 13:0.844904909906825 47:1.05184741228156
+7 1:11.2046733323674 2:1.06758541402838 3:3.29168886618654 4:2.36308784372477 5:2.03276288502988 6:1.14587905712881 7:8.99831852336624 8:10.5430221376716 9:1.73871847212499 10:1.37339507109338 11:0.884425570049315 53:1
+1 1:9.90732530104586 2:3.08899714059031 3:1.31667554647461 4:0.639704587998222 5:0.223948453435496 6:1.43234882141101 7:7.21999470451915 8:11.0926583628583 9:3.92453597993925 10:1.29596562232445 13:0.844904909906825 47:1.05184741228156
+3 1:8.69022560155862 2:0.735058809658884 3:1.18500799182715 4:0.591965439640145 5:0.275628865766764 6:1.00071724832213 7:8.28698899582741 8:11.2425591515455 9:3.1048544145089 10:0.847813358237598 13:0.844904909906825 16:0.125988157669742
+1 1:10.3520348066277 2:2.36268903104641 3:0.790005327884769 4:0.572869780296915 5:0.0172268041104227 6:1.42656804141429 7:7.2555611808961 8:12.0919969541068 9:4.39647385094461 10:0.819657195048895 13:0.844904909906825 37:0.418600747852556
+2 1:9.83376433019773 2:3.0977478407053 3:0.526670218589846 4:1.63267887384621 5:0.275628865766764 6:2.48445078081515 7:7.54009299191163 8:11.5923276584825 9:3.89969714462318 10:3.6595190988872 11:0.884425570049315 37:0.418600747852556
+1 1:10.8636179220715 2:2.62521003449601 3:0.658337773237307 6:2.83386681617282 7:7.29112765727304 8:11.8921292358571 9:4.27227967436425 10:0.432509951204236 11:0.884425570049315 52:0.77919372247398
+2 1:8.86075330670655 2:0.735058809658884 3:0.92167288253223 4:1.47513968426456 5:0.275628865766764 6:0.493935535275815 7:8.21585604307352 8:11.3424930106704 9:3.20420975577319 10:1.31473639778358 11:0.884425570049315 26:0.228914278114955
+2 1:9.70670447146005 2:1.07633611414337 3:2.37001598365431 4:0.515582802267224 5:0.361762886318878 6:1.0790789327222 7:8.78491966510459 8:11.1925922219831 9:2.45904469629105 10:1.63931439009779 13:0.844904909906825 45:0.433012701892219
+1 1:11.0341456272195 2:0.0875070011498671 3:1.84334576506446 4:2.88344456082781 5:1.30923711239213 6:1.94876516778521 7:7.21999470451915 8:10.4930552081092 9:3.52711461488211 10:2.73036571366001 13:0.844904909906825 45:0.433012701892219
+1 1:10.7131522998822 2:2.28393273001153 3:0.790005327884769 4:2.18167907996408 5:0.964701030183674 6:3.8564225667048 7:7.32669413364998 8:12.1419638836692 9:4.37163501562854 10:1.96467449805613 11:0.884425570049315 36:0.258530551913103
+1 1:10.4824383458585 2:0.472537806209282 3:0.526670218589846 4:2.58268792617192 5:1.01638144251494 6:1.17799450155506 7:7.89575775568105 8:11.5423607289201 9:3.57679228551426 10:2.05696414406354 13:0.844904909906825 46:0.674199862463242
+1 1:9.45592843447779 2:1.19884591575318 3:1.18500799182715 4:0.143217445074229 6:1.49401047470942 7:8.35812194858129 8:11.8421623062946 9:3.30356509703747 10:0.6256925153045 13:0.844904909906825 37:0.418600747852556
+7 1:11.154518124971 2:0.551294107244163 3:0.131667554647461 4:2.72113145641035 5:0.706298968527332 6:0.588354941889007 7:7.82462480292716 8:11.7921953767322 9:3.8003418033589 10:1.11842537110679 13:0.844904909906825 46:0.674199862463242
+1 1:10.6663407729788 2:0.157512602069761 3:1.711678210417 4:1.90956593432305 5:1.24032989595044 6:1.83700342118183 7:7.4333935627808 8:10.592989067234 9:3.42775927361783 10:0.7508310183654 13:0.844904909906825 36:0.258530551913103
+2 1:10.362065848107 2:1.89015122483713 3:0.790005327884769 4:2.40127916241124 5:-0.310082473987609 6:1.51456435914223 7:7.61122594466551 8:12.2918646723565 9:4.19776316841604 10:1.24982079932074 13:0.844904909906825 27:0.184010991918219
+6 1:9.02793733136139 2:0.0262521003449601 3:2.50168353830177 4:1.32237440951871 5:0.999154638404519 6:1.35976791700767 7:6.79319698799585 8:10.0433528420474 9:3.57679228551426 10:1.80903348487414 13:0.844904909906825 24:0.280975743474508
+7 1:11.2046733323674 2:1.10258821448833 3:1.05334043717969 6:2.82808603617609 7:8.35812194858129 8:11.6922615176074 9:3.25388742640533 10:3.18321067161164 13:0.844904909906825 37:0.418600747852556
+1 1:10.6997775779098 2:2.83522683725569 3:0.790005327884769 4:0.773374203400835 5:0.241175257545918 6:0.884459339499086 7:7.29112765727304 8:11.6422945880449 9:4.17292433309997 10:0.165808516555693 13:0.844904909906825 37:0.418600747852556
+2 1:10.0176667573181 2:1.06758541402838 3:0.790005327884769 4:0.835435096266334 5:0.568484535643951 6:2.57565864298572 7:8.21585604307352 8:11.7422284471698 9:3.40292043830176 10:0.962002242280669 11:0.884425570049315 44:0.445904036039959
+1 1:10.2684427943003 2:2.88773103794561 3:2.37001598365431 4:0.20050442310392 5:0.137814432883382 6:0.690482055164501 7:6.18856688958785 8:10.7428898559213 9:4.47099035689282 10:1.6854592131015 11:0.884425570049315 43:0.715678085420547
+1 1:11.0976755565883 2:2.66896353507095 3:1.05334043717969 4:1.17915696444448 5:0.654618556196064 6:1.01998651497789 7:7.04216232263445 8:11.7921953767322 9:4.39647385094461 10:1.29440139103618 13:0.844904909906825 46:0.674199862463242
+1 1:10.6161855655824 2:1.18134451552321 3:1.05334043717969 4:2.73545320091777 5:1.91217525625692 6:2.95140934277291 7:8.28698899582741 8:11.8421623062946 9:3.37808160298569 10:1.41171873765578 11:0.884425570049315 43:0.715678085420547
+2 1:10.117977172111 2:0.840067211038724 3:1.31667554647461 4:1.08845258256414 5:0.637391752085641 6:0.696262835161227 7:8.39368842495823 8:11.292526081108 9:3.00549907324462 10:2.13673993976487 11:0.884425570049315 43:0.715678085420547
+2 1:8.9175958750892 2:3.01899153967042 3:1.97501331971192 4:0.319852293999111 5:0.0344536082208455 6:1.56081059911603 7:6.75763051161891 8:10.7928567854837 9:4.07356899183568 10:0.652284447204941 13:0.844904909906825 47:1.05184741228156
+2 1:10.1447266160557 2:0.61254900804907 3:3.55502397548146 4:2.18167907996408 5:3.97939174950765 6:0.293535162055979 7:8.42925490133517 8:8.89411346211159 9:1.36613594238392 10:1.05585611957634 11:0.884425570049315 44:0.445904036039959
+2 1:10.0811966866869 2:1.02383191345345 3:1.711678210417 4:3.24148817351338 5:-0.809659793189869 6:0.71553210181698 7:8.57152080684294 8:11.3924599402328 9:2.83162722603212 10:0.93775665731262 11:0.884425570049315 43:0.715678085420547
+1 1:10.3353164041622 2:2.16142292840172 3:2.37001598365431 4:0.959556881997333 5:0.844113401410714 6:1.92371512113273 7:6.43753222422644 8:12.5416993201686 9:5.0919612397946 10:1.1849052008579 13:0.844904909906825 27:0.184010991918219
+1 1:10.3152543212037 2:2.36268903104641 3:1.05334043717969 4:0.286434890148457 5:0.0861340205521137 6:1.214606108201 7:7.07772879901139 8:12.1419638836692 9:4.54550686284103 10:0.409828597524448 13:0.844904909906825 37:0.418600747852556
+2 1:8.64341407465526 2:1.19009521563819 3:1.84334576506446 4:0.859304670445373 5:0.706298968527332 6:0.578077999672605 7:8.57152080684294 8:11.6922615176074 9:2.9309825672964 10:0.980773017739804 11:0.884425570049315 23:0.0750234484920533
+1 1:10.3520348066277 2:1.09383751437334 3:1.31667554647461 4:0.453521909401724 5:0.103360824662536 6:0.647447359633318 7:8.42925490133517 8:11.6422945880449 9:3.12969324982497 10:1.49696934286602 11:0.884425570049315 37:0.418600747852556
+2 1:8.99450052643042 2:1.19009521563819 3:1.84334576506446 4:0.20050442310392 6:1.33536017924372 7:8.57152080684294 8:11.6922615176074 9:2.95582140261248 10:0.424688794762929 13:0.844904909906825 27:0.184010991918219
+1 1:10.6228729265686 2:0.183764702414721 3:3.68669153012892 4:1.77112240408463 5:1.82604123570481 6:2.26221190538546 7:6.72206403524197 8:8.34447723692492 9:2.50872236692319 10:1.31160793520706 13:0.844904909906825 45:0.433012701892219
+2 1:10.0009483548526 2:0.927574212188591 3:1.05334043717969 4:2.382183503068 5:1.27478350417128 6:3.49030650024549 7:8.28698899582741 8:11.5423607289201 9:3.22904859108926 10:2.16489610295357 11:0.884425570049315 44:0.445904036039959
+1 1:9.70670447146005 2:0.245019603219628 3:2.89668620224415 4:0.835435096266334 5:0.861340205521137 6:1.45675655917497 7:7.32669413364998 8:9.39378275773583 9:2.73227188476783 10:1.57674513856734 13:0.844904909906825 47:1.05184741228156
+1 1:9.94744946696302 2:0.428784305634349 3:1.711678210417 6:2.77991286953671 7:8.00245718481187 8:10.5430221376716 9:2.90614373198033 10:2.95092232530485 11:0.884425570049315 34:0.169841555121689
+2 1:9.49939628088804 2:0.630050408279043 3:1.84334576506446 4:0.286434890148457 5:0.258402061656341 6:1.75286095678504 7:8.39368842495823 8:10.5430221376716 9:2.55840003755534 10:2.15863917780053 11:0.884425570049315 26:0.228914278114955
+1 1:10.5994671631169 2:2.633960734611 3:0.92167288253223 4:0.405782761043648 6:2.33800435423143 7:7.14886175176527 8:11.8421623062946 9:4.37163501562854 10:1.22479309870856 11:0.884425570049315 37:0.418600747852556
+2 1:9.69667342998076 2:0.393781505174402 3:2.23834842900684 4:2.29625303602347 5:1.39537113294424 6:0.934559432804045 7:7.89575775568105 8:10.0433528420474 9:2.65775537881962 10:2.16802456553009 13:0.844904909906825 47:1.05184741228156
+2 1:9.98088627189398 2:2.21392712909164 3:1.711678210417 4:2.67339230805227 5:1.49873195760678 6:3.71190306678665 7:6.72206403524197 8:12.3917985314813 9:4.89325055726603 10:4.47917629393609 11:0.884425570049315 43:0.715678085420547
+2 1:9.26868232686436 2:0.455036405979309 3:1.44834310112208 4:2.11484427226278 5:-0.310082473987609 6:0.562662586348003 7:8.03802366118881 8:10.8428237150461 9:3.08001557919283 10:2.1070195452879 11:0.884425570049315 43:0.715678085420547
+1 1:11.4888861742806 2:1.03258261356843 3:0.790005327884769 4:1.71860934089075 5:0.706298968527332 6:1.76121097233587 7:8.18028956669658 8:11.7422284471698 9:3.42775927361783 10:1.59316956709408 13:0.844904909906825 52:0.77919372247398
+2 1:9.94744946696302 2:2.80897473691073 3:1.58001065576954 4:1.11709607157898 5:0.844113401410714 6:1.04310963496479 7:6.68649755886503 8:11.3924599402328 9:4.44615152157675 10:1.28423388766249 13:0.844904909906825 46:0.674199862463242
+2 1:10.4924693873378 2:1.99515962621697 3:1.711678210417 4:1.01206994519122 5:0.447896906870991 6:1.17221372155834 7:7.14886175176527 8:12.591666249731 9:4.62002336878925 10:2.00456239590679 13:0.844904909906825 46:0.674199862463242
+3 1:8.03152054441854 2:2.94898593875052 3:2.50168353830177 4:0.453521909401724 5:0.223948453435496 6:0.71424748403993 7:6.25969984234173 8:10.5430221376716 9:4.29711850968032 10:0.869712596273255 14:0.296673189340406 20:0.129459555600631
+1 1:10.1246645330971 2:0.857568611268698 3:0.92167288253223 4:0.143217445074229 6:1.59421066131934 7:8.21585604307352 8:11.5423607289201 9:3.2787262617214 10:3.09717795075728 11:0.884425570049315 37:0.418600747852556
+7 1:11.0241145857402 2:3.12399994105026 3:1.97501331971192 4:5.90055873705822 5:4.82350515091837 6:1.31031013259124 7:6.93546289350362 8:10.5430221376716 9:3.8003418033589 10:1.53138243120776 13:0.844904909906825 52:0.77919372247398
+3 1:8.75041185043436 2:1.06758541402838 3:2.37001598365431 4:1.14573956059383 5:0.999154638404519 6:1.02191344164346 7:8.82048614148153 8:11.0926583628583 9:2.35968935502677 10:1.92165813762895 13:0.844904909906825 18:0.154303349962092
+1 1:10.5158751507895 2:2.3714397311614 3:1.58001065576954 4:0.606287184147568 5:0.241175257545918 6:0.804170728433447 7:6.68649755886503 8:12.1919308132316 9:4.84357288663389 10:1.08244805147679 12:0.260796291926003 38:0.217872335165298
+1 1:10.2851611967658 2:2.5027002328862 3:0.395002663942384 4:0.859304670445373 5:0.568484535643951 6:3.15437895154685 7:7.46896003915775 8:11.9420961654195 9:4.17292433309997 10:0.736752936771049 11:0.884425570049315 43:0.715678085420547
+2 1:9.39239850510895 2:1.55762462046763 3:3.29168886618654 4:0.515582802267224 5:0.49957731920226 6:1.52997977246683 7:7.89575775568105 8:12.241897742794 9:3.50227577956604 10:0.793847378792585 13:0.844904909906825 27:0.184010991918219
+1 1:11.1979859713812 2:1.76764142322732 3:2.23834842900684 4:1.27940917599644 5:0.396216494539723 6:1.96674981666391 7:7.46896003915775 8:12.6416331792934 9:4.27227967436425 10:1.29205504410379 13:0.844904909906825 46:0.674199862463242
+2 1:10.2717864747934 2:0.848817911153711 3:1.58001065576954 4:1.03116560453445 5:1.10251546306706 6:0.524124053036496 7:8.535954330466 8:11.0926583628583 9:2.73227188476783 10:1.60568341740017 11:0.884425570049315 43:0.715678085420547
+2 1:9.76354703984269 2:3.01899153967042 3:1.44834310112208 4:1.21734828313094 5:1.11974226717748 6:2.53390856523159 7:7.07772879901139 8:11.1426252924207 9:4.04873015651961 10:0.671837338308207 11:0.884425570049315 43:0.715678085420547
+2 1:9.5495514882845 2:0.0875070011498671 3:1.18500799182715 4:1.90956593432305 5:1.27478350417128 6:1.68541852348991 7:7.46896003915775 8:11.0426914332958 9:3.67614762677854 10:2.6967347409624 11:0.884425570049315 26:0.228914278114955
+2 1:9.81704592773224 2:1.96890752587201 3:1.44834310112208 4:1.0025221155196 5:0.344536082208455 6:3.12547505156322 7:7.29112765727304 8:12.4917323906062 9:4.49582919220889 10:1.53763935636081 11:0.884425570049315 43:0.715678085420547
+2 1:10.428939457969 2:0.271271703564588 3:0.395002663942384 4:1.49423534360779 5:0.654618556196064 6:0.71553210181698 7:7.78905832655022 8:11.6422945880449 9:3.75066413272675 10:2.12657243639117 13:0.844904909906825 45:0.433012701892219
+1 1:10.3353164041622 2:0.192515402529708 3:1.05334043717969 6:2.40159293419541 7:7.64679242104245 8:11.1925922219831 9:3.60163112083033 10:0.221338727288967 13:0.844904909906825 37:0.418600747852556
+2 1:10.2416933503555 2:2.66021283495596 3:0.92167288253223 4:0.811565522087296 5:0.516804123312682 6:1.4805219880504 7:7.14886175176527 8:11.8421623062946 9:4.34679618031246 10:1.49305876464536 13:0.844904909906825 46:0.674199862463242
+2 1:10.7332143828408 2:2.17892432863169 3:1.05334043717969 4:0.959556881997333 5:-0.172268041104227 6:3.91358805778354 7:7.21999470451915 8:12.2918646723565 9:4.52066802752496 10:1.13015710576875 11:0.884425570049315 36:0.258530551913103
+1 1:10.810119034182 2:2.98398873921047 3:1.18500799182715 4:0.20050442310392 5:0.0516804123312682 6:2.91287080946141 7:7.14886175176527 8:11.292526081108 9:4.09840782715175 10:0.623346168372108 11:0.884425570049315 53:1
+1 1:10.7265270218546 2:0.66505320873899 3:0.263335109294923 4:0.286434890148457 5:0.18949484521465 6:3.30082537813058 7:7.89575775568105 8:11.7422284471698 9:3.72582529741068 10:0.448152264086848 11:0.884425570049315 52:0.77919372247398
+2 1:10.1079461306317 2:0.647551808509017 3:1.18500799182715 4:1.94775725300951 5:1.44705154527551 6:0.129104086593549 7:8.21585604307352 8:11.1426252924207 9:3.1048544145089 10:1.49305876464536 13:0.844904909906825 47:1.05184741228156
+1 1:10.5125314702964 2:2.75647053622081 3:2.37001598365431 4:1.08845258256414 5:1.1369690712879 6:1.79589565231623 7:6.01073450770314 8:11.0926583628583 9:4.76905638068567 10:0.91272895670044 13:0.844904909906825 46:0.674199862463242
+2 1:10.8201500756613 2:1.56637532058262 3:1.58001065576954 4:1.86660070080078 5:0.87856700963156 6:1.86719193894252 7:8.00245718481187 8:12.3418316019189 9:3.8003418033589 10:0.684351188614297 13:0.844904909906825 46:0.674199862463242
+6 1:7.9679906150497 2:1.977658225987 3:3.55502397548146 4:0.907043818803449 5:2.01553608091946 6:0.897305517269589 7:6.15300041321091 8:12.6416331792934 9:5.11680007511067 10:0.547480950891438 14:0.296673189340406 15:0.0931694990624912
+2 1:9.71339183244624 2:2.15267222828673 3:2.50168353830177 4:2.00981814587501 5:2.04998968914031 6:1.38738719921425 7:6.29526631871867 8:12.5416993201686 9:5.19131658105889 10:1.51339377139276 13:0.844904909906825 47:1.05184741228156
+7 1:10.9171168099611 2:0.201266102644694 3:2.50168353830177 4:4.12466241813779 5:2.10167010147157 6:1.4856604591586 7:7.29112765727304 8:9.79351819423523 9:3.03033790856069 10:1.71439749193433 13:0.844904909906825
+1 1:11.050864029685 2:1.54012322023766 3:1.58001065576954 4:0.143217445074229 5:0.068907216441691 6:0.905655532820415 7:8.03802366118881 8:12.2918646723565 9:3.72582529741068 10:0.995633214978286 11:0.884425570049315 53:1
+1 1:11.0207709052471 2:2.93148453852055 3:2.89668620224415 4:2.24373997282958 5:2.4978865960113 6:1.7592840456703 7:5.86846860219537 8:10.2432205602971 9:4.37163501562854 10:0.315974720228773 13:0.844904909906825 47:1.05184741228156
+2 1:9.02793733136139 2:0.525042006899203 3:4.34502930336623 4:0.286434890148457 5:0.534030927423105 6:0.873540088394159 7:7.96689070843493 8:7.59497329348855 9:0.869359236062493 10:1.01362187479329 13:0.844904909906825 47:1.05184741228156
+1 1:10.3486911261346 2:0.306274504024535 3:4.87169952195607 4:0.20050442310392 6:3.02077870273363 7:6.68649755886503 8:6.64560163180248 10:1.2615525339827 11:0.884425570049315 44:0.445904036039959
+2 1:10.3821279310656 2:1.43511481885782 3:0.790005327884769 4:1.99072248653178 5:0.757979380858601 6:0.994936468325406 7:8.03802366118881 8:12.0919969541068 9:3.72582529741068 10:0.516978440770343 13:0.844904909906825 46:0.674199862463242
+2 1:9.55289516877759 2:1.36510921793793 3:1.44834310112208 4:2.61133141518677 5:0.18949484521465 6:0.922997872810593 7:8.28698899582741 8:12.0420300245443 9:3.42775927361783 10:0.516196325126213 13:0.844904909906825
+1 1:9.58633197370856 2:0.367529404829442 3:1.58001065576954 4:2.14826167611343 5:0.430670102760569 6:1.71496473236206 7:7.89575775568105 8:10.6429559967965 9:3.08001557919283 10:0.707032542294085 13:0.844904909906825 45:0.433012701892219
+2 1:10.5091877898033 2:0.385030805059415 3:1.97501331971192 4:1.15528739026545 5:0.241175257545918 6:1.19854838598787 7:7.89575775568105 8:10.2432205602971 9:2.83162722603212 10:2.3979665649045 11:0.884425570049315 43:0.715678085420547
+5 1:9.05468677530617 2:0.297523803909548 3:0.658337773237307 4:1.01206994519122 5:0.155041236993805 6:0.0430346955311828 7:7.78905832655022 8:11.3924599402328 9:3.60163112083033 10:0.586586733097969 13:0.844904909906825 31:0.127293769304329
+1 1:9.58298829321546 2:0.0700056009198937 3:3.16002131153908 4:1.47513968426456 5:2.32561855490707 6:0.635885799639866 7:6.54423165335726 8:9.14394810992371 9:3.20420975577319 10:0.911164725412178 13:0.844904909906825 47:1.05184741228156
+3 1:7.62693520475383 2:0.131260501724801 3:2.63335109294923 4:1.22212219796675 5:2.22225773024453 6:0.304454413160905 7:7.04216232263445 8:9.69358433511038 9:3.17937092045712 10:1.21697194226725 14:0.296673189340406 24:0.280975743474508
+1 1:9.61308141765334 2:0.245019603219628 3:2.76501864759669 4:1.22212219796675 5:1.03360824662536 6:1.29232548371254 7:7.36226061002692 8:9.49371661686068 9:2.75711072008391 10:1.18412308521377 13:0.844904909906825 47:1.05184741228156
+2 1:10.2550680723279 2:1.62763022138753 3:1.18500799182715 4:3.20329685482692 5:0.568484535643951 6:4.01057669995083 7:7.89575775568105 8:12.3418316019189 9:3.94937481525532 10:2.52936199311844 11:0.884425570049315 43:0.715678085420547
+2 1:10.5626866776928 2:1.62763022138753 3:1.31667554647461 4:1.01206994519122 5:-0.0861340205521137 6:1.99244217220491 7:7.89575775568105 8:12.3418316019189 10:0.972169745654367 13:0.844904909906825 46:0.674199862463242
+2 1:9.80032752526676 2:0.393781505174402 3:0.790005327884769 4:1.22212219796675 5:0.465123710981414 6:2.88910538058598 7:7.89575775568105 8:11.3424930106704 9:3.50227577956604 10:3.12611622959011 11:0.884425570049315 43:0.715678085420547
+1 1:9.66658030554288 2:0.577546207589123 3:3.68669153012892 4:0.907043818803449 5:1.7399072151527 6:0.342992946472413 7:8.32255547220435 8:8.54434495517462 9:1.24194176580356 10:0.497425549667078 11:0.884425570049315 36:0.258530551913103
+2 1:9.77023440082889 2:0.131260501724801 3:0.395002663942384 4:0.835435096266334 5:0.0516804123312682 6:2.53583549189716 7:7.71792537379634 8:11.6422945880449 9:3.82518063867497 10:5.04621013593079 11:0.884425570049315 34:0.169841555121689
+1 1:10.5827487606514 2:0.140011201839787 3:0.790005327884769 4:1.88569636014401 5:0.895793813741983 6:2.38810444753639 7:7.64679242104245 8:11.3424930106704 9:3.70098646209461 10:2.65137203360282 11:0.884425570049315 43:0.715678085420547
+2 1:9.10818566319572 2:0.446285705864322 3:1.58001065576954 4:0.515582802267224 5:0.223948453435496 6:1.43620267474216 7:8.03802366118881 8:10.6929229263589 9:2.98066023792855 10:1.89975889959329 13:0.844904909906825 46:0.674199862463242
+2 1:9.44589739299849 2:1.21634731598315 3:1.18500799182715 4:0.143217445074229 5:0.0861340205521137 6:1.69569546570631 7:8.32255547220435 8:11.8421623062946 9:3.32840393235354 10:1.6854592131015 11:0.884425570049315 37:0.418600747852556
+1 1:10.5058441093102 2:2.82647613714071 3:0.92167288253223 4:1.29850483533967 5:-0.068907216441691 6:0.366758375347842 7:7.14886175176527 8:11.6422945880449 9:4.24744083904818 10:1.04568861620265 12:0.260796291926003 37:0.418600747852556
+6 1:8.25554713745603 2:0.752560209888857 3:1.58001065576954 4:0.143217445074229 5:-0.0344536082208455 6:0.2736235865117 7:8.42925490133517 8:11.0426914332958 9:2.80678839071605 10:1.02457149381112 14:0.296673189340406 20:0.129459555600631
+1 1:10.051103562249 2:2.85272823748567 3:1.58001065576954 4:0.835435096266334 5:0.0516804123312682 6:1.75350326567357 7:6.79319698799585 8:11.3424930106704 9:4.34679618031246 10:1.8489213827248 13:0.844904909906825 37:0.418600747852556
+2 1:9.42583531003991 2:0.113759101494827 3:1.711678210417 4:1.01206994519122 5:0.999154638404519 6:1.39830645031918 7:7.36226061002692 8:10.592989067234 9:3.50227577956604 10:0.865802018052602 13:0.844904909906825 47:1.05184741228156
+1 1:10.5760613996652 2:0.936324912303578 3:3.55502397548146 4:0.572869780296915 5:0.913020617852405 6:0.862620837289232 7:9.03388499974318 8:9.79351819423523 9:1.26678060111963 10:1.81607252567131 11:0.884425570049315 44:0.445904036039959
+2 1:10.6395913290341 2:2.00391032633196 3:0.658337773237307 4:2.26283563217281 5:-0.413443298650146 6:0.378319935341294 7:7.54009299191163 8:12.241897742794 9:4.22260200373211 10:1.57674513856734 13:0.844904909906825 37:0.418600747852556
+2 1:9.83710801069082 2:2.30143413024151 3:1.58001065576954 4:0.143217445074229 5:0.103360824662536 6:3.07280572270416 7:6.72206403524197 8:12.2918646723565 9:4.86841172194996 10:4.74118503471985 11:0.884425570049315 34:0.169841555121689
+3 1:7.97802165652899 2:0.813815110693764 3:3.29168886618654 4:0.20050442310392 5:0.18949484521465 6:0.439981588639705 7:8.85605261785847 8:9.64361740554796 9:1.41581361301606 10:0.852506052102382 13:0.844904909906825 18:0.154303349962092
+6 1:8.30570234485248 2:1.48761901954774 3:0.92167288253223 4:2.40127916241124 5:2.20503092613411 6:0.551743335243076 7:8.00245718481187 8:12.1419638836692 9:3.77550296804283 10:1.09183343920635 14:0.296673189340406 20:0.129459555600631
+2 1:9.57295725173617 2:1.22509801609814 3:1.58001065576954 4:0.453521909401724 5:0.275628865766764 6:2.49280079636598 7:8.46482137771211 8:11.7921953767322 9:3.15453208514105 10:4.831910449439 11:0.884425570049315 44:0.445904036039959
+2 1:10.5225625117757 2:1.55762462046763 3:2.63335109294923 4:5.11286278914997 5:2.82519587410933 6:2.0406153388443 7:8.00245718481187 8:12.3418316019189 9:3.6264699561464 10:1.60255495482365 13:0.844904909906825 47:1.05184741228156
+2 1:9.82707696921153 2:0.393781505174402 3:0.263335109294923 4:0.572869780296915 5:0.223948453435496 6:3.1479558626616 7:7.82462480292716 8:11.6922615176074 9:3.75066413272675 10:4.92107163286989 11:0.884425570049315 34:0.169841555121689
+1 1:9.48602155891566 2:1.95140612564204 3:1.18500799182715 6:0.445120059747906 7:7.4333935627808 8:12.4417654610437 9:4.37163501562854 10:0.446588032798587 13:0.844904909906825 37:0.418600747852556
+1 1:9.99426099386637 2:0.481288506324269 3:1.31667554647461 6:1.77598407677195 7:8.03802366118881 8:10.9927245037334 9:3.15453208514105 10:0.649155984628419 11:0.884425570049315 43:0.715678085420547
+2 1:9.95748050844231 2:2.98398873921047 3:1.84334576506446 4:2.14826167611343 5:-0.0516804123312682 6:3.04904029382873 7:6.79319698799585 8:10.942757574171 9:4.14808549778389 10:4.08499000929426 11:0.884425570049315 33:0.0483368244522832
+2 1:10.2483807113417 2:0.901322111843631 3:2.23834842900684 4:0.811565522087296 5:0.757979380858601 6:0.544035628580774 7:8.78491966510459 8:10.7428898559213 9:2.26033401376248 10:1.6369680431654 11:0.884425570049315 43:0.715678085420547
+2 1:9.95748050844231 2:0.218767502874668 3:1.84334576506446 4:1.01206994519122 5:0.551257731533528 6:2.95654781388111 7:7.57565946828857 8:10.4930552081092 9:3.25388742640533 10:0.82513200455781 11:0.884425570049315 43:0.715678085420547
+3 1:8.03820790540474 2:2.82647613714071 3:3.02835375689161 4:1.77112240408463 5:3.56594845085751 6:0.819586141758049 7:5.51280383842596 8:10.4430882785468 9:4.71937871005353 10:0.603011161624712 14:0.296673189340406 24:0.280975743474508
+1 1:10.3386600846553 2:2.75647053622081 3:2.50168353830177 4:1.63267887384621 5:1.05083505073579 6:2.00400373219837 7:5.86846860219537 8:10.9927245037334 9:4.81873405131782 10:0.501336127887731 13:0.844904909906825 46:0.674199862463242
+2 1:10.325285362683 2:2.07391592725185 3:0.92167288253223 4:1.01206994519122 5:0.3789896904293 6:3.66244528237022 7:7.4333935627808 8:12.2918646723565 9:4.34679618031246 10:1.6471355465391 11:0.884425570049315 36:0.258530551913103
+1 1:10.7934006317165 2:0.525042006899203 3:1.44834310112208 4:1.63267887384621 5:0.241175257545918 6:2.37011979865768 7:8.14472309031964 8:10.7928567854837 9:2.95582140261248 10:3.00175984217334 11:0.884425570049315 37:0.418600747852556
+2 1:9.66658030554288 2:0.630050408279043 3:1.58001065576954 4:1.67087019253267 5:0.654618556196064 6:1.84021496562446 7:8.28698899582741 8:10.8428237150461 9:2.83162722603212 10:2.03741125296028 11:0.884425570049315 26:0.228914278114955
+1 1:10.4356268189552 2:2.38019043127639 3:1.97501331971192 4:3.12691421745399 5:3.30754638920117 6:3.8666995089212 7:6.33083279509561 8:12.1419638836692 9:5.06712240447853 10:1.10356517386831 11:0.884425570049315 43:0.715678085420547
+2 1:8.95772004100636 2:0.350028004599468 3:2.37001598365431 4:0.429652335222686 5:0.585711339754373 6:0.780405299558017 7:7.78905832655022 8:9.89345205336008 9:2.70743304945176 10:1.66199574377758 11:0.884425570049315 26:0.228914278114955
+2 1:9.24862024390578 2:2.04766382690689 3:4.47669685801369 4:2.42992265142608 5:4.1688865947223 6:0.664147390734971 7:5.08600612190266 8:12.2918646723565 9:5.51422144016781 10:1.29596562232445 13:0.844904909906825 42:0.0567961834247065
+1 1:10.7098086193891 2:2.75647053622081 3:1.97501331971192 4:2.29625303602347 6:2.40801602308066 7:6.33083279509561 8:11.292526081108 9:4.66970103942139 10:1.11295056159788 13:0.844904909906825 36:0.258530551913103
+1 1:10.7967443122096 2:0.498789906554243 3:0.658337773237307 4:1.43217445074229 5:0.447896906870991 6:1.18313297266327 7:7.93132423205799 8:11.4424268697952 9:3.52711461488211 10:0.990158405469372 13:0.844904909906825 45:0.433012701892219
+2 1:8.77716129437913 2:0.140011201839787 3:3.02835375689161 4:0.730408969878567 5:0.981927834294096 6:0.675708950728423 7:6.86432994074974 8:9.24388196904856 9:2.98066023792855 10:0.742227746279963 13:0.844904909906825 47:1.05184741228156
+2 1:9.79364016428056 2:0.866319311383684 3:1.18500799182715 4:0.515582802267224 5:0.327309278098032 6:1.04310963496479 7:8.35812194858129 8:11.3924599402328 9:3.1048544145089 10:1.28032330944183 11:0.884425570049315 43:0.715678085420547
+2 1:8.55313470134165 2:1.89015122483713 3:3.95002663942384 4:0.959556881997333 5:2.06721649325073 6:0.122038688819772 7:6.25969984234173 8:12.591666249731 9:4.86841172194996 10:0.615525011930802 13:0.844904909906825 17:0.119629720910916
+2 1:10.1514139770419 2:0.113759101494827 3:1.97501331971192 4:1.52287883262263 5:0.0516804123312682 6:0.38538533311507 7:7.2555611808961 8:10.3931213489843 9:3.4525981089339 10:0.567033841994703 13:0.844904909906825 45:0.433012701892219
+2 1:9.4425537125054 2:2.93148453852055 3:4.21336174871877 4:0.916591648475064 5:1.08528865895663 6:1.5267682280242 7:4.65920840537936 8:8.89411346211159 9:4.37163501562854 10:0.819657195048895 13:0.844904909906825 38:0.217872335165298
+1 1:10.532593553255 2:0.411282905404375 3:1.05334043717969 6:0.253712010967421 7:7.93132423205799 8:11.1426252924207 9:3.32840393235354 10:1.19663693551986 11:0.884425570049315 37:0.418600747852556
+1 1:10.4456578604344 2:0.463787106094296 3:0.658337773237307 4:0.591965439640145 5:-0.120587628772959 6:0.2761928220658 7:7.93132423205799 8:11.4424268697952 9:3.52711461488211 10:2.03428279038376 12:0.260796291926003 32:0.0836242010007091
+2 1:9.93073106449753 2:0.472537806209282 3:2.23834842900684 4:1.11709607157898 5:1.5159587617172 6:0.827936157308876 7:8.1091566139427 8:10.0933197716098 9:2.53356120223927 10:0.768819678180405 13:0.844904909906825 46:0.674199862463242
+2 1:9.99091731337328 2:0.866319311383684 3:1.44834310112208 4:2.37263567339639 5:0.0516804123312682 6:2.80110906285804 7:8.46482137771211 8:11.2425591515455 9:2.90614373198033 10:2.61383048268455 11:0.884425570049315 43:0.715678085420547
+6 1:7.89108596370848 2:3.12399994105026 3:1.58001065576954 4:0.959556881997333 5:0.947474226073251 6:0.842709261744954 7:7.11329527538833 8:10.8428237150461 9:3.82518063867497 10:0.30033240734616 14:0.296673189340406 20:0.129459555600631
+2 1:9.08477989974404 2:1.49636971966273 3:1.05334043717969 4:1.86660070080078 5:0.49957731920226 6:0.362262213128166 7:8.03802366118881 8:12.1919308132316 9:3.75066413272675 10:0.631949440457545 13:0.844904909906825
+2 1:10.947209934399 2:0.472537806209282 3:2.37001598365431 4:0.515582802267224 5:0.155041236993805 6:0.382173788672445 7:8.1091566139427 8:9.89345205336008 9:2.40936702565891 10:0.779769297198233 12:0.260796291926003 46:0.674199862463242
+1 1:9.6532055835705 2:0.866319311383684 3:3.81835908477638 4:0.572869780296915 5:-0.981927834294096 6:0.790682241774419 7:8.9627520469893 8:9.29384889861099 9:1.01839224795892 10:1.21149713275834 13:0.844904909906825 47:1.05184741228156
+2 1:10.8636179220715 2:2.49394953277121 3:0.92167288253223 4:2.14826167611343 5:1.82604123570481 6:2.8871784539204 7:7.18442822814221 8:11.9920630949819 9:4.42131268626068 10:0.85015970516999 11:0.884425570049315 43:0.715678085420547
+6 1:7.70718353658815 2:0.385030805059415 3:1.84334576506446 4:1.04071343420606 5:0.999154638404519 6:0.782332226223593 7:7.89575775568105 8:10.3931213489843 9:2.90614373198033 10:0.493514971446424 14:0.296673189340406 24:0.280975743474508
+3 1:7.2357245870615 2:0.253770303334615 3:4.08169419407131 4:0.20050442310392 5:0.344536082208455 6:0.858766983958082 7:6.8287634643728 8:7.74487408217582 9:1.9871068252857 10:1.07228054810309 14:0.296673189340406 24:0.280975743474508
+3 1:7.63027888524693 2:2.43269463196631 3:3.02835375689161 4:2.02413989038243 5:1.92940206036735 6:0.395662275331472 7:5.37053793291819 8:11.7921953767322 9:5.51422144016781 10:0.387147243844659 14:0.296673189340406 20:0.129459555600631
+1 1:11.2447974982846 2:1.977658225987 3:2.50168353830177 4:2.14826167611343 5:2.51511340012172 6:2.12796934768371 7:6.75763051161891 8:12.6916001088559 9:4.86841172194996 10:0.423124563474668 13:0.844904909906825 45:0.433012701892219
+2 1:9.66992398603598 2:2.88773103794561 3:2.63335109294923 4:0.716087225371144 5:0.723525772637755 6:0.870328543951534 7:6.01073450770314 8:10.592989067234 9:4.47099035689282 10:1.16535230975463 11:0.884425570049315 43:0.715678085420547
+2 1:10.3787842505725 2:2.25768062966657 3:1.711678210417 4:1.40830487656325 5:0.654618556196064 6:3.71447230234075 7:6.65093108248809 8:12.3418316019189 9:4.9180893925821 10:1.62992900236822 11:0.884425570049315 36:0.258530551913103
+2 1:9.83042064970463 2:0.901322111843631 3:2.10668087435938 4:1.03116560453445 5:0.895793813741983 6:1.39766414143065 7:8.7137867123507 8:10.942757574171 9:2.45904469629105 10:1.47428798918623 13:0.844904909906825 38:0.217872335165298
+2 1:8.53975997936926 2:0.883820711613658 3:0.790005327884769 4:0.859304670445373 6:0.533116377475847 7:8.18028956669658 8:11.5923276584825 9:3.35324276766962 10:0.518542672058604 11:0.884425570049315 44:0.445904036039959
+2 1:9.91401266203205 2:1.06758541402838 3:1.84334576506446 4:0.429652335222686 5:0.0516804123312682 6:1.04696348829594 7:8.64265375959682 8:11.3924599402328 9:2.73227188476783 10:0.88848337173239 11:0.884425570049315 43:0.715678085420547
+2 1:9.14496614861978 2:2.57270583380609 3:3.16002131153908 4:1.0025221155196 5:1.17142267950875 6:1.2582831126207 7:5.22827202741042 8:11.3424930106704 9:5.36518842827138 10:0.286254325751809 13:0.844904909906825 47:1.05184741228156
+2 1:10.5058441093102 2:3.0977478407053 3:0.790005327884769 4:0.716087225371144 5:0.3789896904293 6:1.91472279669337 7:7.4333935627808 8:11.4424268697952 9:3.92453597993925 10:0.611614433710149 11:0.884425570049315 43:0.715678085420547
+2 1:10.9940214613023 2:1.65388232173249 3:2.23834842900684 4:1.04071343420606 5:0.671845360306487 6:2.12026164102141 7:7.75349185017328 8:12.5416993201686 9:3.9742136505714 10:0.977644555163282 13:0.844904909906825 46:0.674199862463242
+7 1:11.224735415326 2:0.761310910003844 3:2.76501864759669 4:2.89776630533523 5:3.29031958509074 6:1.09642127271237 7:8.7137867123507 8:10.0433528420474 9:1.86291264870534 10:1.33741775146337 11:0.884425570049315 53:1
+3 1:8.63003935268287 2:2.07391592725185 3:4.74003196730861 4:0.405782761043648 5:0.87856700963156 6:0.980805672777854 7:4.76590783451018 8:12.1419638836692 9:5.6135767814321 10:0.9627843579248 13:0.844904909906825 17:0.119629720910916
+1 1:10.4891257068447 2:2.91398313829057 3:0.526670218589846 4:0.572869780296915 5:0.396216494539723 6:0.408508453101974 7:7.46896003915775 8:11.6922615176074 9:4.04873015651961 10:0.791501031860193 12:0.260796291926003 37:0.418600747852556
+1 1:10.7131522998822 2:2.85272823748567 3:1.18500799182715 4:0.319852293999111 5:-0.0861340205521137 6:2.04254226550987 7:7.07772879901139 8:11.5423607289201 9:4.24744083904818 10:3.12376988265772 11:0.884425570049315 37:0.418600747852556
+3 1:8.43944956457636 2:0.061254900804907 3:4.08169419407131 4:0.773374203400835 5:0.844113401410714 6:0.422639248649527 7:5.93960155494926 8:8.14460951867522 9:2.95582140261248 10:0.931499732159575 14:0.296673189340406 24:0.280975743474508
+2 1:10.8769926440439 2:1.82014562391724 3:1.44834310112208 4:3.27013166252822 5:-0.275628865766764 6:2.53519318300864 7:7.54009299191163 8:12.5416993201686 9:4.29711850968032 10:1.06445939166178 13:0.844904909906825 45:0.433012701892219
+1 1:11.0073961832747 2:2.38019043127639 3:2.76501864759669 4:2.31057478053089 5:3.20418556453863 6:0.289038999836303 7:5.72620269668761 8:12.0420300245443 9:5.39002726358746 10:0.705468311005824 12:0.260796291926003 36:0.258530551913103
+2 1:9.98757363288018 2:1.14634171506326 3:1.711678210417 4:2.29147912118766 5:3.18695876042821 6:0.308950575380581 7:8.57152080684294 8:11.5923276584825 9:2.9309825672964 10:0.893176065597174 11:0.884425570049315 43:0.715678085420547
+2 1:8.59660254775191 2:0.796313710463791 3:1.711678210417 4:0.572869780296915 5:0.534030927423105 6:0.60505497299066 7:8.535954330466 8:10.942757574171 9:2.68259421413569 10:0.305807216855074 11:0.884425570049315 44:0.445904036039959
+6 1:8.89419011163752 2:2.73021843587585 3:4.34502930336623 4:0.639704587998222 5:1.39537113294424 6:1.06302121050907 7:4.16127773610217 8:9.84348512379766 9:5.21615541637496 10:1.00267225577546 13:0.844904909906825 27:0.184010991918219
+1 1:10.2617554333141 2:0.568795507474136 3:2.10668087435938 4:3.17942728064788 5:5.03022680024344 6:0.696262835161227 7:8.28698899582741 8:10.3431544194219 9:2.50872236692319 10:0.63742424996646 11:0.884425570049315 44:0.445904036039959
+2 1:10.3052232797244 2:3.08024644047532 3:1.31667554647461 4:1.21734828313094 5:0.723525772637755 6:0.889597810607287 7:7.18442822814221 8:11.0926583628583 9:3.92453597993925 10:1.17395558184007 13:0.844904909906825 47:1.05184741228156
+3 1:7.69380881461577 2:2.91398313829057 3:3.81835908477638 4:1.43217445074229 5:2.63570102889468 6:0.671212788508747 7:4.97930669277183 8:9.39378275773583 9:4.44615152157675 10:0.376197624826831 14:0.296673189340406 24:0.280975743474508
+1 1:11.3250458301189 2:2.53770303334615 3:1.44834310112208 4:4.99828883309058 5:1.8949484521465 6:0.709109012931729 7:6.72206403524197 8:11.9420961654195 9:4.71937871005353 10:0.580329807944924 12:0.260796291926003 37:0.418600747852556
+1 1:10.4623762628999 2:0.0350028004599468 3:0.92167288253223 4:1.43217445074229 5:0.757979380858601 6:0.412362306433125 7:7.50452651553469 8:11.3424930106704 9:3.8003418033589 10:0.767255446892143 12:0.260796291926003 36:0.258530551913103
+2 1:9.13493510714049 2:2.53770303334615 3:2.37001598365431 4:0.143217445074229 5:0.223948453435496 6:1.49144123915532 7:5.93960155494926 8:11.7422284471698 9:5.14163891042674 10:0.148601972384819 13:0.844904909906825 37:0.418600747852556
+1 1:10.2149439064108 2:2.97523803909548 3:1.84334576506446 4:0.143217445074229 5:0.068907216441691 6:2.37076210754621 7:6.75763051161891 8:10.942757574171 9:4.14808549778389 10:1.47663433611862 13:0.844904909906825 36:0.258530551913103
+2 1:8.88415907015823 2:3.08024644047532 3:2.37001598365431 4:0.286434890148457 5:0.396216494539723 6:1.18056373710917 7:6.65093108248809 8:10.3931213489843 9:3.89969714462318 10:3.93560592126531 11:0.884425570049315 26:0.228914278114955
+6 1:8.13851832019764 2:0.358778704714455 3:2.76501864759669 4:0.716087225371144 5:0.913020617852405 6:0.488154755279089 7:7.71792537379634 8:9.44374968729826 9:2.43420586097498 10:0.58815096438623 13:0.844904909906825 24:0.280975743474508
+2 1:10.0778530061938 2:0.927574212188591 3:2.23834842900684 4:1.03116560453445 5:0.792432989079446 6:2.51785084301846 7:8.78491966510459 8:10.8428237150461 9:2.31001168439462 10:1.83249695419805 11:0.884425570049315 44:0.445904036039959
+3 1:7.88105492222919 2:2.87898033783063 3:3.81835908477638 4:0.515582802267224 5:0.620164947975219 6:0.0963463332787676 7:4.87260726364101 8:9.54368354642311 9:4.62002336878925 10:0.136870237722859 14:0.296673189340406 24:0.280975743474508
+1 1:10.9171168099611 2:1.7151372225374 3:3.423356420834 4:1.32237440951871 5:1.46427834938593 6:1.40537184809296 7:7.2555611808961 8:12.5416993201686 9:4.14808549778389 10:0.997979561910678 13:0.844904909906825 47:1.05184741228156
+7 1:11.9469704018349 2:2.1089187277118 3:0.790005327884769 4:1.36056572820517 5:1.37814432883382 6:1.11633284825665 7:7.4333935627808 8:12.241897742794 9:4.32195734499639 10:1.11295056159788 12:0.260796291926003
+2 1:9.41246058806753 2:0.682554608968963 3:1.31667554647461 4:1.28895700566806 5:0.0344536082208455 6:2.07016154771645 7:8.28698899582741 8:11.0926583628583 9:2.98066023792855 10:2.01785836185701 11:0.884425570049315 26:0.228914278114955
+2 1:8.86075330670655 2:1.83764702414721 3:3.29168886618654 4:0.572869780296915 5:0.861340205521137 6:1.28526008593876 7:6.79319698799585 8:12.6916001088559 9:4.62002336878925 10:1.13484979963354 13:0.844904909906825 18:0.154303349962092
+2 1:10.7465891048132 2:1.66263302184748 3:1.711678210417 4:1.27940917599644 5:0.49957731920226 6:1.88517658782122 7:7.78905832655022 8:12.4917323906062 9:3.99905248588747 10:0.793847378792585 13:0.844904909906825 46:0.674199862463242
+2 1:10.4322831384621 2:0.393781505174402 3:1.711678210417 4:1.04071343420606 5:0.413443298650146 6:2.93535162055979 7:7.93132423205799 8:10.4930552081092 9:2.95582140261248 10:2.00847297412745 11:0.884425570049315 43:0.715678085420547
+1 1:10.2283186283831 2:1.59262742092758 3:0.92167288253223 4:0.143217445074229 5:-0.068907216441691 6:1.50300279914877 7:7.89575775568105 8:12.241897742794 9:3.89969714462318 10:2.90086692408049 11:0.884425570049315 37:0.418600747852556
+1 1:10.3018795992313 2:0.306274504024535 3:2.63335109294923 4:0.907043818803449 5:0.826886597300292 6:2.33029664756912 7:7.57565946828857 8:9.54368354642311 9:2.63291654350355 10:1.60255495482365 13:0.844904909906825 38:0.217872335165298
+1 1:10.0711656452076 2:0.315025204139522 3:2.37001598365431 4:4.0100884620784 5:4.28947422349526 6:1.06880199050579 7:7.64679242104245 8:9.79351819423523 9:2.73227188476783 10:1.66277785942171 13:0.844904909906825 47:1.05184741228156
+1 1:9.90732530104586 2:2.9664873389805 3:1.58001065576954 6:2.39516984531016 7:6.86432994074974 8:11.0926583628583 9:4.17292433309997 10:1.97249565449744 11:0.884425570049315 37:0.418600747852556
+2 1:10.1781634209867 2:1.55762462046763 3:0.790005327884769 4:3.03620983557365 5:1.3609175247234 6:3.57701820019638 7:7.93132423205799 8:12.1919308132316 9:3.85001947399104 10:4.75604523195833 11:0.884425570049315 26:0.228914278114955
+1 1:10.4590325824068 2:0.787563010348804 3:0.658337773237307 4:1.32237440951871 5:-0.120587628772959 6:2.89617077835975 7:8.07359013756576 8:11.5923276584825 9:3.4525981089339 10:1.38512680575534 11:0.884425570049315 36:0.258530551913103
+1 1:10.9271478514404 2:0.63880110839403 3:1.18500799182715 4:2.36308784372477 5:0.757979380858601 6:0.793893786217045 7:8.21585604307352 8:11.1426252924207 9:3.08001557919283 10:1.70892268242542 11:0.884425570049315
+5 1:9.30880649278153 2:0.892571411728645 3:3.55502397548146 4:0.515582802267224 5:0.654618556196064 6:0.569085675233254 7:8.99831852336624 8:9.69358433511038 9:1.26678060111963 10:1.07462689503548 13:0.844904909906825 27:0.184010991918219
+2 1:10.6228729265686 2:1.61012882115755 3:4.08169419407131 4:2.67339230805227 5:1.60209278226932 6:0.215173477655914 7:7.46896003915775 8:12.1419638836692 9:3.55195345019819 10:1.57361667599082 13:0.844904909906825 37:0.418600747852556
+2 1:9.80367120575985 2:0.953826312533552 3:1.84334576506446 4:1.28895700566806 5:0.654618556196064 6:2.94562856277619 7:8.67822023597376 8:11.1426252924207 9:2.60807770818748 10:1.38512680575534 11:0.884425570049315 43:0.715678085420547
+2 1:9.35227433919178 2:0.673803908853977 3:1.58001065576954 4:0.20050442310392 5:-0.0344536082208455 6:1.2428676992961 7:8.35812194858129 8:10.8428237150461 9:2.78194955539998 10:1.22401098306443 13:0.844904909906825 27:0.184010991918219
+1 1:9.8605137741425 2:0.551294107244163 3:0.395002663942384 4:2.47288788494835 5:-0.258402061656341 6:2.19926563431 7:7.89575775568105 8:11.6422945880449 9:3.6264699561464 10:4.61839287859134 11:0.884425570049315 34:0.169841555121689
+2 1:10.6830591754443 2:0.971327712763525 3:2.76501864759669 6:2.14017321656569 7:8.89161909423541 8:10.6429559967965 9:2.01194566060177 10:0.249494890477669 13:0.844904909906825 36:0.258530551913103
+1 1:10.0477598817559 2:2.64271143472599 3:1.18500799182715 4:0.319852293999111 5:0.103360824662536 6:1.52805284580125 7:6.89989641712668 8:11.7921953767322 9:4.49582919220889 10:0.799322188301499 13:0.844904909906825 36:0.258530551913103
+1 1:9.99091731337328 2:0.848817911153711 3:0.790005327884769 4:0.405782761043648 6:3.39717171140934 7:8.18028956669658 8:11.5423607289201 9:3.35324276766962 10:3.87381878537899 11:0.884425570049315 43:0.715678085420547
+1 1:10.6763718144581 2:0.0787563010348804 3:0.790005327884769 4:0.453521909401724 5:0.172268041104227 6:3.53719504910782 7:7.61122594466551 8:11.3924599402328 9:3.77550296804283 10:1.87864177720176 11:0.884425570049315 33:0.0483368244522832
+1 1:10.3654095286001 2:0.735058809658884 3:0.92167288253223 4:1.82363546727851 5:-0.3789896904293 6:2.53840472745126 7:8.21585604307352 8:11.3424930106704 9:3.20420975577319 10:3.73069162250308 11:0.884425570049315 43:0.715678085420547
+2 1:10.5225625117757 2:0.840067211038724 3:7.76838572420023 4:1.03116560453445 5:-0.103360824662536 6:1.95069209445078 7:7.82462480292716 10:0.945577813753926 13:0.844904909906825 46:0.674199862463242
+7 1:11.7697553357008 2:2.49394953277121 3:1.18500799182715 4:2.31057478053089 5:1.25755670006086 6:0.946120992797498 7:6.89989641712668 8:11.9920630949819 9:4.62002336878925 10:1.54389628151385 12:0.260796291926003
+1 1:10.1848507819729 2:0.726308109543897 3:0.526670218589846 4:1.90956593432305 5:1.27478350417128 6:1.50685665247992 7:8.00245718481187 8:11.6422945880449 9:3.55195345019819 10:1.74411788641129 13:0.844904909906825 46:0.674199862463242
+2 1:10.4891257068447 2:0.927574212188591 3:2.63335109294923 4:2.43469656626189 5:3.46258762619497 6:0.953828699459799 7:8.85605261785847 8:10.592989067234 9:2.06162333123391 10:2.02567951829832 13:0.844904909906825 47:1.05184741228156
+1 1:10.325285362683 2:0.770061610118831 3:0.92167288253223 4:0.453521909401724 5:0.103360824662536 6:1.35077559256832 7:8.21585604307352 8:11.3924599402328 9:3.20420975577319 10:2.65919319004413 13:0.844904909906825 38:0.217872335165298
+1 1:10.4690636238861 2:2.64271143472599 3:1.18500799182715 4:0.405782761043648 5:0.327309278098032 6:0.719385955148131 7:6.97102936988056 8:11.7921953767322 9:4.47099035689282 10:1.17317346619594 13:0.844904909906825 37:0.418600747852556
+2 1:9.73345391540482 2:0.761310910003844 3:1.31667554647461 4:2.82138366796231 5:1.94662886447777 6:1.97445752332621 7:8.35812194858129 8:11.1925922219831 9:2.95582140261248 10:0.417649753965754 13:0.844904909906825 24:0.280975743474508
+1 1:9.98422995238708 2:2.72146773576087 3:1.18500799182715 4:0.143217445074229 5:0.155041236993805 6:1.13431749713536 7:6.97102936988056 8:11.6922615176074 9:4.42131268626068 10:1.15831326895746 11:0.884425570049315 43:0.715678085420547
+2 1:9.41580426856062 2:0.743809509773871 3:1.84334576506446 4:0.907043818803449 5:0.568484535643951 6:1.04953272385004 7:8.535954330466 8:10.7428898559213 9:2.53356120223927 10:1.64322496831844 11:0.884425570049315 43:0.715678085420547
+2 1:9.5495514882845 2:2.85272823748567 3:0.658337773237307 4:0.716087225371144 5:0.155041236993805 6:1.63274919463085 7:7.36226061002692 8:11.6922615176074 9:4.12324666246782 10:1.88177023977828 11:0.884425570049315 37:0.418600747852556
+4 1:7.28922347495105 2:0.446285705864322 3:0.92167288253223 6:0.655155066295619 7:7.96689070843493 8:11.2425591515455 9:3.40292043830176 10:0.378543971759223 14:0.296673189340406 28:0.0475651494154494
+1 1:10.3687532090932 2:2.75647053622081 3:0.395002663942384 4:1.17915696444448 5:0.602938143864796 6:1.47217197249957 7:7.46896003915775 8:11.7921953767322 9:4.07356899183568 10:1.71126902935781 13:0.844904909906825 46:0.674199862463242
+1 1:11.2080170128605 2:0.236268903104641 3:2.23834842900684 4:2.44901831076931 5:1.65377319460058 6:3.24173296038627 7:7.50452651553469 8:10.0933197716098 9:3.05517674387676 10:0.319103182805295 11:0.884425570049315 52:0.77919372247398
+1 1:10.6262166070617 3:1.44834310112208 4:2.67339230805227 5:1.46427834938593 6:1.73038014568667 7:7.2555611808961 8:10.9927245037334 9:3.8003418033589 10:2.90243115536875 11:0.884425570049315 44:0.445904036039959
+1 1:10.4623762628999 2:1.00633051322347 3:2.89668620224415 4:0.916591648475064 5:0.792432989079446 6:2.55060859633324 7:8.92718557061235 8:10.6429559967965 9:1.96226798996963 10:1.71283326064607 11:0.884425570049315 43:0.715678085420547
+1 1:10.1012587696455 2:0.988829112993498 3:0.92167288253223 6:1.55631443689636 7:8.28698899582741 8:11.6422945880449 9:3.2787262617214 10:3.1104739167075 11:0.884425570049315 37:0.418600747852556
+2 1:9.00453156790972 2:2.69521563541591 3:3.55502397548146 4:0.453521909401724 5:0.568484535643951 6:0.2736235865117 7:4.80147431088712 8:10.5430221376716 9:5.21615541637496 10:0.455191304884024 11:0.884425570049315 43:0.715678085420547
+2 1:9.50942732236734 2:1.57512602069761 3:1.05334043717969 4:0.716087225371144 5:0.275628865766764 6:1.3655486970044 7:7.93132423205799 8:12.241897742794 9:3.87485830930711 10:1.79730175021218 13:0.844904909906825 40:0.0798086884467622
+2 1:9.26199496587817 2:2.95773663886551 3:3.55502397548146 4:0.716087225371144 5:1.41259793705466 6:0.757282179571113 7:5.40610440929513 8:9.59365047598553 9:4.29711850968032 10:0.97608032387502 13:0.844904909906825 38:0.217872335165298
+2 1:10.0979150891524 2:1.04133331368342 3:1.711678210417 4:1.43217445074229 5:0.68907216441691 6:0.835643863971177 7:8.60708728321988 8:11.3924599402328 9:2.80678839071605 10:1.96232815112374 11:0.884425570049315 43:0.715678085420547
+2 1:9.86720113512869 2:0.411282905404375 3:2.89668620224415 4:1.80931372277109 5:2.68738144122595 6:2.81331293174001 7:7.8601912793041 8:9.29384889861099 9:2.21065634313034 10:0.681222726037775 11:0.884425570049315 43:0.715678085420547
+2 1:10.5392809142412 2:3.0277422397854 3:2.76501864759669 4:2.95027936852911 5:1.30923711239213 6:0.243435068751019 7:6.18856688958785 8:10.0933197716098 9:4.04873015651961 10:1.39294796219664 13:0.844904909906825 47:1.05184741228156
+3 1:6.43324126871827 2:0.446285705864322 3:3.68669153012892 4:0.907043818803449 5:0.981927834294096 6:0.134884866590275 7:7.82462480292716 8:8.34447723692492 9:1.56484662491249 10:0.735188705482788 14:0.296673189340406 17:0.119629720910916
+2 1:10.1012587696455 2:0.63880110839403 3:1.711678210417 4:2.1912269096357 5:1.1369690712879 6:0.813163052872798 7:8.35812194858129 8:10.6929229263589 9:2.68259421413569 10:1.86847427382806 11:0.884425570049315 43:0.715678085420547
+2 1:10.2650991138072 2:2.30143413024151 3:1.05334043717969 4:0.20050442310392 5:0.0344536082208455 6:3.48709495580286 7:7.11329527538833 8:12.1919308132316 9:4.54550686284103 10:2.06322106921659 11:0.884425570049315 37:0.418600747852556
+2 1:9.8571700936494 2:1.94265542552705 3:1.58001065576954 4:2.40127916241124 5:2.8768762864406 6:1.41693340808641 7:7.2555611808961 8:12.591666249731 9:4.52066802752496 10:1.44065701648861 13:0.844904909906825
+2 1:9.80367120575985 2:1.60137812104257 3:1.711678210417 4:1.40830487656325 5:0.49957731920226 6:2.98352478719917 7:7.93132423205799 8:12.3917985314813 9:3.85001947399104 10:0.305807216855074 11:0.884425570049315 44:0.445904036039959
+2 1:10.2116002259177 2:2.55520443357612 3:2.10668087435938 4:2.4394704810977 5:2.46343298779045 6:3.40680634473722 7:6.18856688958785 8:11.7921953767322 9:4.99260589853032 10:0.601446930336451 11:0.884425570049315 43:0.715678085420547
+2 1:8.47623005000042 2:1.68013442207745 3:3.423356420834 4:0.319852293999111 5:0.482350515091837 6:1.12917902602716 7:7.39782708640386 8:12.4917323906062 9:3.99905248588747 10:1.24747445238835 13:0.844904909906825 16:0.125988157669742
+7 1:10.8703052830577 2:0.708806709313924 3:2.50168353830177 4:1.32237440951871 5:1.10251546306706 6:0.547889481911925 7:8.60708728321988 8:10.1432867011722 9:2.08646216654998 10:0.733624474194526 13:0.844904909906825 53:1
+2 1:9.29543177080914 2:0.647551808509017 3:1.97501331971192 4:0.730408969878567 5:1.42982474116509 6:0.79453609510557 7:8.42925490133517 8:10.4930552081092 9:2.50872236692319 10:0.92602492265066 13:0.844904909906825 47:1.05184741228156
+1 1:9.04131205333378 2:0.630050408279043 3:1.18500799182715 4:0.959556881997333 5:0.396216494539723 6:0.926209417253219 7:8.21585604307352 8:11.1426252924207 9:3.1048544145089 10:1.15909538460159 11:0.884425570049315 26:0.228914278114955
+2 1:9.65654926406359 2:1.93390472541206 3:3.55502397548146 4:0.773374203400835 5:1.08528865895663 6:1.49401047470942 7:6.33083279509561 8:12.6416331792934 9:4.96776706321424 10:1.55406378488755 13:0.844904909906825 27:0.184010991918219
+2 1:9.4358663515192 2:2.44144533208129 3:2.23834842900684 4:2.18167907996408 5:1.55041236993805 6:0.112404055491895 7:6.11743393683396 8:11.9920630949819 9:5.14163891042674 10:1.46490260145666 13:0.844904909906825 24:0.280975743474508
+1 1:10.2985359187382 2:0.682554608968963 3:0.92167288253223 4:1.99549640136759 5:-0.3789896904293 6:1.00264417498771 7:8.14472309031964 8:11.3924599402328 9:3.2787262617214 10:2.30176634067643 11:0.884425570049315 43:0.715678085420547
+2 1:9.56961357124308 2:1.31260501724801 3:3.68669153012892 4:0.572869780296915 5:0.465123710981414 6:1.04824810607299 7:8.64265375959682 8:11.292526081108 9:2.28517284907855 10:1.60568341740017 13:0.844904909906825 18:0.154303349962092
+2 1:9.83710801069082 2:2.42394393185132 3:1.58001065576954 4:1.86660070080078 5:0.723525772637755 6:3.52820272466847 7:6.61536460611115 8:12.0919969541068 9:4.84357288663389 10:3.61963120103653 11:0.884425570049315 43:0.715678085420547
+2 1:9.78695280329437 2:1.42636411874283 3:1.97501331971192 4:1.72815717056236 5:1.29201030828171 6:2.04125764773282 7:8.28698899582741 8:12.1419638836692 9:3.42775927361783 10:2.68734935323283 11:0.884425570049315 44:0.445904036039959
+2 1:9.35227433919178 2:0.848817911153711 3:0.790005327884769 4:1.08845258256414 5:0.430670102760569 6:1.89609583892615 7:8.18028956669658 8:11.5423607289201 9:3.35324276766962 10:4.70911829331049 11:0.884425570049315 26:0.228914278114955
+1 1:10.5894361216376 2:1.06758541402838 3:2.76501864759669 4:0.716087225371144 5:0.654618556196064 6:1.46574888361432 7:8.92718557061235 8:10.8927906446086 9:2.08646216654998 10:2.45271465999364 13:0.844904909906825 47:1.05184741228156
+1 1:9.56961357124308 2:1.19884591575318 3:1.31667554647461 4:1.11709607157898 5:0.327309278098032 6:1.96931905221801 7:8.35812194858129 8:11.8421623062946 9:3.2787262617214 10:1.95685334161482 11:0.884425570049315 26:0.228914278114955
+2 1:10.7131522998822 2:0.245019603219628 3:1.31667554647461 4:1.74247891506978 5:0.964701030183674 6:3.57123742019965 7:7.6823588974194 8:10.8428237150461 9:3.37808160298569 10:1.90679794039046 11:0.884425570049315 43:0.715678085420547
+2 1:9.88726321808727 2:0.061254900804907 3:0.790005327884769 4:0.143217445074229 5:0.0516804123312682 6:1.22167150597477 7:7.57565946828857 8:11.3924599402328 9:3.8003418033589 10:1.13563191527767 11:0.884425570049315 37:0.418600747852556
+2 1:11.1010192370814 2:2.41519323173633 3:1.711678210417 4:4.07692326977971 5:1.82604123570481 6:0.544035628580774 7:6.5797981297342 8:12.0919969541068 9:4.89325055726603 10:2.04445029375745 13:0.844904909906825 46:0.674199862463242
+1 1:10.3754405700794 2:1.43511481885782 3:2.37001598365431 4:0.716087225371144 5:0.344536082208455 6:2.38874675642491 7:8.32255547220435 8:12.0919969541068 9:3.2787262617214 10:3.99582882586336 11:0.884425570049315 44:0.445904036039959
+7 1:11.1812675689157 2:2.79147333668076 3:1.31667554647461 4:1.90956593432305 5:0.103360824662536 6:3.30339461368468 7:6.89989641712668 8:11.5423607289201 9:4.39647385094461 10:2.48712774833539 13:0.844904909906825 52:0.77919372247398
+2 1:9.55623884927069 2:0.236268903104641 3:1.05334043717969 4:0.405782761043648 5:0.0861340205521137 6:0.865832381731858 7:7.71792537379634 8:11.0926583628583 9:3.50227577956604 10:1.93260775664677 13:0.844904909906825 25:0.157785504911465
+1 1:10.60281084361 2:0.105008401379841 3:1.711678210417 4:2.45379222560512 5:1.10251546306706 6:3.66822606236694 7:7.32669413364998 8:10.592989067234 9:3.52711461488211 10:0.586586733097969 11:0.884425570049315 43:0.715678085420547
+3 1:8.12179991773216 2:1.59262742092758 3:3.68669153012892 4:0.716087225371144 5:1.22310309184001 6:0.311519810934682 7:7.6823588974194 8:12.241897742794 9:3.55195345019819 10:0.870494711917386 14:0.296673189340406 18:0.154303349962092
+2 1:9.88391953759418 2:1.94265542552705 3:1.84334576506446 4:0.907043818803449 5:0.895793813741983 6:0.258208173187097 7:7.18442822814221 8:12.591666249731 9:4.59518453347318 10:1.10669363644483 13:0.844904909906825 46:0.674199862463242
+2 1:9.56961357124308 2:0.297523803909548 3:0.92167288253223 4:1.32237440951871 5:1.27478350417128 6:0.859409292846607 7:7.78905832655022 8:11.2425591515455 9:3.52711461488211 10:2.36042501398623 13:0.844904909906825 45:0.433012701892219
+3 1:8.00477110047377 2:1.50512041977771 3:1.711678210417 4:1.01206994519122 5:0.465123710981414 6:0.71296286626288 7:8.1091566139427 8:12.2918646723565 9:3.65130879146247 10:1.2310500238616 13:0.844904909906825 16:0.125988157669742
+1 1:10.0544472427421 2:2.72146773576087 3:1.18500799182715 4:0.811565522087296 5:0.465123710981414 6:0.294177470944504 7:6.97102936988056 8:11.6922615176074 9:4.39647385094461 10:0.281561631887025 12:0.260796291926003 36:0.258530551913103
+6 1:9.15499719009907 2:2.91398313829057 3:3.02835375689161 4:1.82363546727851 5:1.68822680282143 6:1.29232548371254 7:5.69063622031066 8:10.1432867011722 9:4.42131268626068 10:1.76758135573521 13:0.844904909906825 24:0.280975743474508
+2 1:10.0042920353457 2:0.297523803909548 3:1.58001065576954 4:1.32237440951871 5:0.861340205521137 6:2.47995461859548 7:7.75349185017328 8:10.6929229263589 9:3.22904859108926 10:1.09965459564766 11:0.884425570049315 43:0.715678085420547
+1 1:10.9572409758783 2:2.98398873921047 3:2.10668087435938 4:2.05278337939728 5:0.740752576748178 6:3.00921714274017 7:6.54423165335726 8:10.6929229263589 9:4.17292433309997 10:0.707032542294085 13:0.844904909906825 46:0.674199862463242
+1 1:10.2818175162727 2:0.122509801609814 3:2.37001598365431 4:0.143217445074229 5:0.0861340205521137 6:3.14410200933045 7:7.14886175176527 8:10.0433528420474 9:3.32840393235354 10:2.31506230662665 11:0.884425570049315 43:0.715678085420547
+7 1:12.3114315755825 2:3.0977478407053 3:1.711678210417 4:5.65231516559623 5:5.63316494410824 6:3.37469090031097 7:7.0065958462575 8:10.7928567854837 9:3.87485830930711 10:2.8781855704007 13:0.844904909906825
+2 1:9.39908586609514 2:0.271271703564588 3:0.526670218589846 4:0.319852293999111 6:1.48373353249302 7:7.78905832655022 8:11.4923937993577 9:3.67614762677854 10:2.14456109620617 11:0.884425570049315 43:0.715678085420547
+1 1:9.56292621025688 2:2.75647053622081 3:1.58001065576954 4:1.47513968426456 5:1.37814432883382 6:2.55895861188407 7:6.68649755886503 8:11.4923937993577 9:4.52066802752496 10:4.41347857982912 11:0.884425570049315 43:0.715678085420547
+1 1:10.9572409758783 2:2.71271703564588 3:2.76501864759669 4:0.916591648475064 5:0.223948453435496 6:2.19027330987065 7:5.58393679117984 8:10.9927245037334 9:4.99260589853032 10:1.41250085329991 11:0.884425570049315 53:1
+3 1:7.77740082694319 2:0.69130530908395 3:2.76501864759669 4:1.32237440951871 5:0.447896906870991 6:0.578077999672605 7:8.60708728321988 8:9.89345205336008 9:1.88775148402141 10:0.547480950891438 14:0.296673189340406 24:0.280975743474508
+1 1:9.68664238850146 2:2.39769183150636 3:0.92167288253223 4:0.515582802267224 5:0.155041236993805 6:0.813163052872798 7:7.18442822814221 8:12.0919969541068 9:4.44615152157675 10:1.31473639778358 11:0.884425570049315 43:0.715678085420547
+1 1:9.60305037617404 2:0.0787563010348804 3:3.29168886618654 4:2.26283563217281 5:1.01638144251494 6:2.14916554100504 7:6.54423165335726 8:9.09398118036129 9:3.17937092045712 10:1.92947929407025 13:0.844904909906825 24:0.280975743474508
+1 1:10.9003984074956 2:1.7763921233423 3:2.37001598365431 4:1.91911376399467 5:2.53234020423214 6:0.71296286626288 7:7.39782708640386 8:12.6416331792934 9:4.32195734499639 10:1.52747185298711 11:0.884425570049315 43:0.715678085420547
+2 1:9.94744946696302 2:0.175014002299734 3:0.92167288253223 4:3.12691421745399 5:2.80796906999891 6:0.775266828449816 7:7.64679242104245 8:11.2425591515455 9:3.65130879146247 10:1.87003850511632 13:0.844904909906825 46:0.674199862463242
+2 1:8.8105980993101 2:2.77397193645079 3:3.55502397548146 4:0.143217445074229 5:-0.258402061656341 6:0.782332226223593 7:5.01487316914877 8:10.2931874898595 9:4.96776706321424 10:1.97484200142983 11:0.884425570049315 43:0.715678085420547
+1 1:10.5626866776928 2:0.367529404829442 3:1.44834310112208 4:0.143217445074229 5:0.0861340205521137 6:0.291608235390403 7:7.89575775568105 8:10.7928567854837 9:3.17937092045712 10:1.19898328245225 11:0.884425570049315 37:0.418600747852556
+2 1:9.28205704883675 2:1.02383191345345 3:1.05334043717969 4:2.63997490420162 5:0.292855669877187 6:1.05659812162382 7:8.32255547220435 8:11.6422945880449 9:3.25388742640533 10:0.707032542294085 11:0.884425570049315 26:0.228914278114955
+2 1:9.09481094122333 2:0.542543407129176 3:2.76501864759669 4:1.0025221155196 5:1.37814432883382 6:0.767559121787515 7:8.28698899582741 8:9.59365047598553 9:2.03678449591784 10:0.69999350149691 13:0.844904909906825 27:0.184010991918219
+1 1:10.7566201462924 2:2.91398313829057 3:0.263335109294923 4:1.15528739026545 5:0.155041236993805 6:0.975667201669653 7:7.61122594466551 8:11.7921953767322 9:3.9742136505714 10:0.401225325439011 13:0.844904909906825 45:0.433012701892219
+1 1:9.95079314745611 2:0.805064410578777 3:1.18500799182715 4:1.49423534360779 5:-0.3789896904293 6:3.10620578490747 7:8.32255547220435 8:11.3424930106704 9:3.08001557919283 10:2.311151728406 11:0.884425570049315 44:0.445904036039959
+1 1:10.8134627146751 2:1.27760221678806 3:1.711678210417 4:0.773374203400835 5:0.792432989079446 6:0.792609168439995 7:8.42925490133517 8:11.8921292358571 9:3.20420975577319 10:2.11640493301747 11:0.884425570049315 36:0.258530551913103
+2 1:10.1915381429591 2:1.53137252012267 3:0.658337773237307 4:2.03368772005405 5:1.41259793705466 6:3.51728347356354 7:7.93132423205799 8:12.1419638836692 9:3.82518063867497 10:0.610832318066018 11:0.884425570049315 43:0.715678085420547
+2 1:9.99091731337328 2:0.700056009198937 3:0.92167288253223 4:1.80931372277109 5:1.63654639049016 6:0.0815732288426899 7:8.18028956669658 8:11.3924599402328 9:3.25388742640533 10:0.405135903659664 13:0.844904909906825 47:1.05184741228156
+1 1:10.5058441093102 2:0.630050408279043 3:0.658337773237307 4:3.0648533245885 6:2.27891193648712 7:8.03802366118881 8:11.4923937993577 9:3.42775927361783 10:2.86254325751809 11:0.884425570049315 43:0.715678085420547
+2 1:10.2249749478901 2:0.507540606669229 3:0.526670218589846 4:0.286434890148457 5:0.0861340205521137 6:2.0406153388443 7:7.93132423205799 8:11.4923937993577 9:3.55195345019819 10:0.985465711604588 11:0.884425570049315 43:0.715678085420547
+2 1:10.258411752821 2:2.95773663886551 3:2.23834842900684 4:0.453521909401724 6:2.09392697659188 7:6.47309870060338 8:10.6929229263589 9:4.24744083904818 10:4.10376078475339 11:0.884425570049315 43:0.715678085420547
+2 1:9.92738738400444 2:0.210016802759681 3:1.97501331971192 4:0.286434890148457 5:0.155041236993805 6:0.65643968407267 7:7.50452651553469 8:10.3431544194219 9:3.20420975577319 10:0.0234634693239188 13:0.844904909906825 46:0.674199862463242
+2 1:8.94768899952707 2:0.140011201839787 3:1.18500799182715 4:0.591965439640145 5:-0.0861340205521137 6:1.04953272385004 7:7.54009299191163 8:11.0926583628583 9:3.6264699561464 10:4.3900151105052 11:0.884425570049315 43:0.715678085420547
+1 1:10.0979150891524 2:3.11524924093527 3:1.84334576506446 4:0.143217445074229 5:0.120587628772959 6:1.20689840153869 7:7.0065958462575 8:10.7428898559213 9:3.85001947399104 10:1.10512940515657 13:0.844904909906825 35:0.0490880693673816
+1 1:10.5660303581859 2:2.75647053622081 3:2.10668087435938 4:0.907043818803449 5:0.258402061656341 6:2.27762731871007 7:6.22413336596479 8:11.2425591515455 9:4.71937871005353 10:1.52668973734298 11:0.884425570049315 38:0.217872335165298
+7 1:11.2314227763122 2:0.420033605519362 3:0.790005327884769 4:0.319852293999111 6:2.92571698723191 7:7.93132423205799 8:11.3424930106704 9:3.47743694424997 10:3.28097512712797 13:0.844904909906825 37:0.418600747852556
+2 1:8.74372448944816 2:1.68888512219244 3:0.526670218589846 4:0.716087225371144 5:0.930247421962828 6:0.488154755279089 7:7.78905832655022 8:12.1419638836692 9:3.9742136505714 10:4.89839027919011 11:0.884425570049315 32:0.0836242010007091
+1 1:11.0575513906712 2:0.945075612418565 3:0.395002663942384 4:0.143217445074229 6:3.5493989179898 7:8.00245718481187 8:11.7921953767322 9:3.6264699561464 10:0.535749216229478 11:0.884425570049315 52:0.77919372247398
+2 1:10.1046024501386 2:1.69763582230742 3:1.05334043717969 4:2.03368772005405 5:0.0172268041104227 6:0.970528730561452 7:7.78905832655022 8:12.3418316019189 9:4.02389132120354 10:1.12702864319223 13:0.844904909906825 46:0.674199862463242
+1 1:10.8368684781268 2:2.1089187277118 3:1.31667554647461 4:3.06007940975269 5:2.25671133846538 6:0.915932475036817 7:7.18442822814221 8:12.3917985314813 9:4.57034569815711 10:2.03115432780723 13:0.844904909906825 45:0.433012701892219
+1 1:10.8201500756613 2:0.271271703564588 3:1.44834310112208 4:1.43217445074229 5:0.568484535643951 6:1.23965615485348 7:7.71792537379634 8:10.7928567854837 9:3.30356509703747 10:0.95027050761871 13:0.844904909906825 45:0.433012701892219
+2 1:9.99091731337328 2:2.95773663886551 3:4.34502930336623 4:1.79499197826367 5:0.706298968527332 6:1.77598407677195 7:4.6947748817563 8:8.74421267342431 9:4.24744083904818 10:0.381672434335745 13:0.844904909906825 47:1.05184741228156
+2 1:9.67326766652908 2:2.84397753737068 3:1.58001065576954 4:0.405782761043648 5:0.137814432883382 6:2.13953090767717 7:6.75763051161891 8:11.3424930106704 9:4.37163501562854 10:1.98813796738005 11:0.884425570049315 43:0.715678085420547
+2 1:10.395502653038 2:0.962577012648538 3:1.31667554647461 4:2.0050442310392 5:0.68907216441691 6:2.29368504092319 7:8.46482137771211 8:11.4424268697952 9:2.98066023792855 10:3.72678104428243 11:0.884425570049315 43:0.715678085420547
+1 1:8.85072226522726 2:0.175014002299734 3:1.711678210417 4:0.639704587998222 5:0.068907216441691 6:2.173573278769 7:7.46896003915775 8:10.5430221376716 9:3.37808160298569 10:2.29785576245578 13:0.844904909906825 25:0.157785504911465
+1 1:11.0007088222885 2:2.39769183150636 3:2.23834842900684 4:1.52287883262263 5:1.15419587539832 6:2.736235865117 7:6.15300041321091 8:12.0919969541068 9:5.16647774574281 10:1.30378677876575 13:0.844904909906825 53:1
+1 1:9.56292621025688 2:0.507540606669229 3:3.16002131153908 4:0.515582802267224 5:0.87856700963156 6:0.0815732288426899 7:8.14472309031964 8:9.04401425079886 9:1.78839614275713 10:0.355080502435304 11:0.884425570049315 43:0.715678085420547
+1 1:10.7131522998822 2:2.18767502874668 3:1.84334576506446 4:0.143217445074229 6:1.44005652807331 7:6.72206403524197 8:12.4417654610437 9:4.9180893925821 10:2.49807736735322 11:0.884425570049315 43:0.715678085420547
+1 1:9.77023440082889 2:0.630050408279043 3:0.395002663942384 6:3.32266388034043 7:7.93132423205799 8:11.6422945880449 9:3.6264699561464 10:2.37528521122471 11:0.884425570049315 30:0.0826662747682189
+2 1:9.7602033593496 2:0.516291306784216 3:0.92167288253223 4:0.868852500116988 5:0.0516804123312682 6:3.06252878048776 7:8.03802366118881 8:11.292526081108 9:3.32840393235354 10:1.47741645176275 11:0.884425570049315 33:0.0483368244522832
+1 1:10.4824383458585 2:0.63880110839403 3:0.658337773237307 4:1.03116560453445 5:-0.0861340205521137 6:2.96618244720899 7:8.03802366118881 8:11.4923937993577 9:3.4525981089339 10:1.47741645176275 11:0.884425570049315 33:0.0483368244522832
+2 1:10.2751301552865 2:1.76764142322732 3:1.18500799182715 4:2.89776630533523 5:3.54872164674708 6:3.98488434440983 7:7.6823588974194 8:12.4417654610437 9:4.14808549778389 10:2.93528001242224 11:0.884425570049315 43:0.715678085420547
+3 1:7.30259819692344 2:1.28635291690305 3:2.89668620224415 4:0.959556881997333 5:0.602938143864796 6:0.4117199975446 7:8.64265375959682 8:11.5423607289201 9:2.60807770818748 10:0.518542672058604 14:0.296673189340406 20:0.129459555600631
+2 1:9.47264683694327 2:0.813815110693764 3:0.658337773237307 4:0.773374203400835 5:0.103360824662536 6:0.536970230806998 7:8.07359013756576 8:11.6422945880449 9:3.47743694424997 10:0.0664798297511031 11:0.884425570049315 43:0.715678085420547
+2 1:10.1213208526041 2:2.60770863426604 3:1.97501331971192 4:0.639704587998222 5:0.155041236993805 6:2.34635436978225 7:6.33083279509561 8:11.6922615176074 9:4.86841172194996 10:2.05774625970767 11:0.884425570049315 44:0.445904036039959
+1 1:10.5727177191721 2:0.918823512073605 3:2.50168353830177 4:2.02413989038243 5:1.80881443159439 6:3.04133258716643 7:8.85605261785847 8:10.592989067234 9:2.06162333123391 10:1.37339507109338 11:0.884425570049315 43:0.715678085420547
+2 1:9.92738738400444 2:0.463787106094296 3:2.89668620224415 4:1.94775725300951 5:2.51511340012172 6:0.32757753314781 7:8.03802366118881 8:9.34381582817341 9:2.08646216654998 10:0.597536352115798 13:0.844904909906825 47:1.05184741228156
+1 1:10.7499327853063 2:0.630050408279043 3:0.395002663942384 4:0.716087225371144 5:-0.068907216441691 6:2.98609402275327 7:7.93132423205799 8:11.6422945880449 9:3.6264699561464 10:1.33272505759859 11:0.884425570049315 37:0.418600747852556
+2 1:9.77692176181508 2:2.48519883265623 3:1.84334576506446 4:0.572869780296915 5:0.826886597300292 6:1.94555362334258 7:6.4019657478495 8:11.9420961654195 9:4.94292822789817 10:1.95216064775004 11:0.884425570049315 43:0.715678085420547
+3 1:7.85430547828441 2:0.892571411728645 3:1.84334576506446 4:0.143217445074229 5:0.068907216441691 6:0.0815732288426899 7:8.60708728321988 8:11.0426914332958 9:2.60807770818748 10:0.63742424996646 14:0.296673189340406 31:0.127293769304329
+2 1:10.5058441093102 2:1.75014002299734 3:0.92167288253223 4:2.86912281632038 5:1.80881443159439 6:1.57429908577506 7:7.75349185017328 8:12.2918646723565 9:4.07356899183568 10:1.01362187479329 13:0.844904909906825 27:0.184010991918219
+2 1:10.4122210555035 2:2.84397753737068 3:1.18500799182715 4:1.11709607157898 5:-0.068907216441691 6:1.30581397037156 7:7.0065958462575 8:11.4923937993577 9:4.27227967436425 10:1.5298181999195 13:0.844904909906825 46:0.674199862463242
+7 1:11.1010192370814 2:0.00875070011498671 3:1.84334576506446 4:6.31588932777349 5:5.21972164545809 6:1.2582831126207 7:7.07772879901139 8:10.6429559967965 9:3.72582529741068 10:1.46959529532144 13:0.844904909906825 52:0.77919372247398
+2 1:9.14496614861978 2:0.778812310233817 3:1.711678210417 4:0.591965439640145 5:0.327309278098032 6:1.46896042805694 7:8.50038785408906 8:10.942757574171 9:2.68259421413569 10:5.16196325126213 11:0.884425570049315 26:0.228914278114955
+1 1:10.5392809142412 2:1.6451316216175 3:0.92167288253223 4:0.572869780296915 5:0.344536082208455 6:0.664147390734971 7:7.8601912793041 8:12.241897742794 9:3.94937481525532 10:1.33428928888685 13:0.844904909906825 37:0.418600747852556
+2 1:9.70670447146005 2:0.743809509773871 3:4.08169419407131 4:1.0025221155196 5:2.22225773024453 6:2.7156819806842 7:8.74935318872765 8:8.59431188473704 9:0.794842730114279 10:0.535749216229478 11:0.884425570049315 43:0.715678085420547
+1 1:10.2049128649315 2:1.41761341862785 3:1.711678210417 4:0.868852500116988 5:0.258402061656341 6:1.03090576608281 7:8.25142251945046 8:12.1419638836692 9:3.47743694424997 10:0.728931780329743 11:0.884425570049315 37:0.418600747852556
+2 1:9.14496614861978 2:0.463787106094296 3:0.658337773237307 4:2.18167907996408 5:0.792432989079446 6:1.47538351694219 7:7.93132423205799 8:11.4424268697952 9:3.52711461488211 10:4.51280726663371 11:0.884425570049315 26:0.228914278114955
+1 1:10.2985359187382 2:1.42636411874283 3:2.23834842900684 4:1.40830487656325 5:0.964701030183674 6:2.25835805205431 7:8.32255547220435 8:12.0919969541068 9:3.30356509703747 10:2.15160013700335 11:0.884425570049315 44:0.445904036039959
+1 1:10.221631267397 2:0.603798307934083 3:2.76501864759669 6:3.30789077590435 7:8.42925490133517 8:9.64361740554796 9:1.93742915465356 10:1.26859157477987 11:0.884425570049315 37:0.418600747852556
+2 1:8.68019456007933 2:2.92273383840556 3:3.423356420834 4:0.286434890148457 5:0.447896906870991 6:1.48694507693565 7:5.44167088567207 8:9.79351819423523 9:4.39647385094461 10:1.88959139621959 13:0.844904909906825 25:0.157785504911465
+2 1:9.91735634252515 2:2.97523803909548 3:1.711678210417 4:0.916591648475064 5:0.482350515091837 6:1.04696348829594 7:6.79319698799585 8:10.9927245037334 9:4.17292433309997 10:1.23808906465878 13:0.844904909906825 46:0.674199862463242
+1 1:11.1077065980676 2:0.892571411728645 3:2.89668620224415 4:2.72113145641035 5:0.740752576748178 6:0.561377968570952 7:8.89161909423541 8:10.2931874898595 9:1.78839614275713 10:4.41113223289673 12:0.260796291926003
+2 1:10.1346955745764 2:1.47886831943275 3:1.97501331971192 4:3.23194034384176 5:1.92940206036735 6:3.71768384678338 7:8.18028956669658 8:12.241897742794 9:3.52711461488211 10:2.49651313606496 11:0.884425570049315 43:0.715678085420547
+2 1:9.89395057907347 2:0.0525042006899203 3:0.92167288253223 4:1.80931372277109 5:1.06806185484621 6:2.58208173187097 7:7.54009299191163 8:11.292526081108 9:3.77550296804283 10:4.23593832861147 11:0.884425570049315 26:0.228914278114955
+6 1:8.58657150627261 2:2.79147333668076 3:3.95002663942384 4:0.515582802267224 5:1.03360824662536 6:0.948047919463073 7:4.62364192900241 8:9.89345205336008 9:4.99260589853032 10:1.33428928888685 13:0.844904909906825 27:0.184010991918219
+2 1:9.74014127639101 2:0.831316510923738 3:2.23834842900684 4:0.811565522087296 5:0.602938143864796 6:0.994936468325406 7:8.7137867123507 8:10.6429559967965 9:2.26033401376248 10:2.12813666767943 13:0.844904909906825 47:1.05184741228156
+2 1:10.154757657535 2:0.218767502874668 3:1.711678210417 4:1.79499197826367 5:0.206721649325073 6:1.99308448109344 7:7.57565946828857 8:10.592989067234 9:3.30356509703747 10:4.4948186068187 11:0.884425570049315 43:0.715678085420547
+1 1:11.258172220257 2:1.75889072311233 3:3.02835375689161 4:2.63042707453 5:2.99746391521356 6:0.443835441970856 7:7.21999470451915 8:12.6416331792934 9:4.32195734499639 10:0.681222726037775 11:0.884425570049315 36:0.258530551913103
+2 1:10.6195292460755 2:2.24892992955158 3:0.395002663942384 4:1.67564410736848 5:0.706298968527332 6:0.238296597642818 7:7.54009299191163 8:12.0420300245443 9:4.14808549778389 10:2.23685074221359 13:0.844904909906825 45:0.433012701892219
+2 1:9.61976877863953 2:0.0350028004599468 3:3.02835375689161 4:3.09827072843915 5:5.25417525367894 6:0.827936157308876 7:6.50866517698032 8:9.44374968729826 9:3.40292043830176 10:0.63820636561059 13:0.844904909906825 47:1.05184741228156
+1 1:10.3821279310656 2:0.446285705864322 3:1.711678210417 4:1.59926146999555 5:0.981927834294096 6:1.17670988377801 7:8.03802366118881 8:10.5430221376716 9:2.90614373198033 10:2.70220955047131 13:0.844904909906825 38:0.217872335165298
+2 1:9.35561801968488 2:2.7652212363358 3:3.68669153012892 4:2.754548860261 5:0.740752576748178 6:0.635885799639866 7:4.73034135813324 8:10.1432867011722 9:5.04228356916246 10:0.992504752401763 13:0.844904909906825 42:0.0567961834247065
+2 1:10.8201500756613 2:1.55762462046763 3:1.58001065576954 4:2.23896605799378 5:0.292855669877187 6:0.542751010803724 7:8.00245718481187 8:12.3418316019189 9:3.77550296804283 10:1.71439749193433 13:0.844904909906825 47:1.05184741228156
+2 1:9.47264683694327 2:1.98640892610198 3:2.37001598365431 4:0.572869780296915 5:0.447896906870991 6:1.04182501718774 7:6.8287634643728 8:12.6916001088559 9:4.81873405131782 10:0.730496011618004 13:0.844904909906825 27:0.184010991918219
+1 1:9.93741842548373 2:0.58629690770411 3:1.58001065576954 4:1.83318329695013 5:0.757979380858601 6:1.27241390816826 7:8.25142251945046 8:10.8428237150461 9:2.88130489666426 10:0.677312147817121 13:0.844904909906825 45:0.433012701892219
+2 1:9.6465182225843 2:1.18134451552321 3:1.84334576506446 4:2.85480107181296 5:3.66930927552004 6:0.597347266328359 7:8.57152080684294 8:11.6422945880449 9:2.90614373198033 10:0.370722815317916 13:0.844904909906825 46:0.674199862463242
+2 1:9.55623884927069 2:0.262521003449601 3:3.29168886618654 4:2.16735733545666 5:1.77436082337354 6:0.912720930594191 7:7.21999470451915 8:8.79417960298674 9:2.40936702565891 10:0.634295787389937 13:0.844904909906825 42:0.0567961834247065
+2 1:9.39908586609514 2:2.58145653392108 3:0.92167288253223 4:0.286434890148457 5:0.18949484521465 6:1.80617259453263 7:7.14886175176527 8:11.8921292358571 9:4.39647385094461 10:3.45225845319258 11:0.884425570049315 34:0.169841555121689
+3 1:7.1287268112824 2:2.82647613714071 3:1.97501331971192 6:0.802243801767871 7:6.43753222422644 8:11.1925922219831 9:4.52066802752496 10:0.46301246132533 14:0.296673189340406 18:0.154303349962092
+1 1:9.36564906116417 2:1.3826106181679 3:1.31667554647461 4:0.716087225371144 5:0.516804123312682 6:2.22110413651985 7:8.21585604307352 8:12.0919969541068 9:3.50227577956604 10:2.48947409526778 11:0.884425570049315 44:0.445904036039959
+7 1:10.8502432000992 2:0.875070011498671 3:1.44834310112208 4:1.52287883262263 5:-0.585711339754373 6:2.02905377885084 7:8.46482137771211 8:11.292526081108 9:2.9309825672964 10:1.64244285267431 13:0.844904909906825 45:0.433012701892219
+1 1:10.3687532090932 2:0.507540606669229 3:1.05334043717969 4:3.43721868178149 5:0.809659793189869 6:1.49272585693237 7:8.03802366118881 8:11.1925922219831 9:3.2787262617214 10:1.79182694070326 13:0.844904909906825 46:0.674199862463242
+2 1:10.3854716115587 2:0.0437535005749336 3:0.790005327884769 4:0.405782761043648 5:0.068907216441691 6:0.926851726141744 7:7.57565946828857 8:11.4424268697952 9:3.82518063867497 10:1.04177803798199 12:0.260796291926003 37:0.418600747852556
+1 1:10.0009483548526 2:2.02141172656193 3:1.711678210417 4:0.835435096266334 5:0.396216494539723 6:3.5596758602062 7:7.07772879901139 8:12.591666249731 9:4.66970103942139 10:1.65026400911562 11:0.884425570049315 43:0.715678085420547
+2 1:9.97754259140089 2:1.45261621908779 3:1.18500799182715 4:2.24373997282958 5:0.895793813741983 6:1.22680997708297 7:8.1091566139427 8:12.1419638836692 9:3.67614762677854 10:1.93182564100264 13:0.844904909906825 46:0.674199862463242
+1 1:10.6629970924857 2:0.393781505174402 3:0.658337773237307 4:0.429652335222686 5:0.0516804123312682 6:0.839497717302328 7:7.8601912793041 8:11.4424268697952 9:3.55195345019819 10:0.18770775459135 13:0.844904909906825 37:0.418600747852556
+2 1:9.7535159983634 2:0.358778704714455 3:2.10668087435938 4:1.49423534360779 5:0.826886597300292 6:1.34692173923717 7:7.8601912793041 8:10.1932536307346 9:2.85646606134819 10:1.6447891996067 13:0.844904909906825 45:0.433012701892219
+3 1:8.61332095021739 2:3.07149574036034 3:2.23834842900684 4:2.29147912118766 5:1.53318556582762 6:0.539539466361098 7:6.68649755886503 8:10.4430882785468 9:3.89969714462318 10:0.868148364984994 14:0.296673189340406 24:0.280975743474508
+3 1:8.18867352759409 2:2.72146773576087 3:3.16002131153908 4:2.26283563217281 5:3.75544329607216 6:0.524124053036496 7:5.19270555103348 8:10.6929229263589 9:5.0919612397946 10:0.235416808883318 14:0.296673189340406 24:0.280975743474508
+2 1:9.32552489524701 2:2.58145653392108 3:3.95002663942384 4:0.572869780296915 5:0.671845360306487 6:0.799674566213771 7:4.37467659436382 8:10.7928567854837 9:5.6135767814321 10:1.07697324196787 13:0.844904909906825 27:0.184010991918219
+3 1:8.55313470134165 2:2.16142292840172 3:3.95002663942384 4:1.80931372277109 5:1.20587628772959 6:0.531831759698797 7:5.08600612190266 8:12.241897742794 9:5.68809328738031 10:0.854070283390643 13:0.844904909906825 16:0.125988157669742
+2 1:9.77357808132198 2:0.577546207589123 3:2.10668087435938 4:0.639704587998222 5:0.671845360306487 6:0.940982521689297 7:8.32255547220435 8:10.3431544194219 9:2.50872236692319 10:0.868148364984994 13:0.844904909906825 45:0.433012701892219
+3 1:7.92452276863945 2:1.11133891460331 3:0.658337773237307 4:0.716087225371144 5:0.516804123312682 6:0.915932475036817 7:8.1091566139427 8:11.8421623062946 9:3.55195345019819 10:0.365248005809002 14:0.296673189340406 20:0.129459555600631
+2 1:9.21518343897482 2:0.201266102644694 3:1.58001065576954 4:1.14573956059383 5:1.32646391650255 6:0.723239808479282 7:7.54009299191163 8:10.6929229263589 9:3.37808160298569 10:1.64244285267431 13:0.844904909906825 47:1.05184741228156
+1 1:10.2851611967658 2:2.29268343012652 3:2.23834842900684 4:1.14573956059383 5:0.327309278098032 6:0.967959495007351 7:6.22413336596479 8:12.2918646723565 9:5.19131658105889 10:1.23026790821747 13:0.844904909906825 37:0.418600747852556
+2 1:8.72700608698268 2:1.28635291690305 3:1.58001065576954 4:0.286434890148457 5:-0.241175257545918 6:1.66614925683415 7:8.39368842495823 8:11.9420961654195 9:3.2787262617214 10:1.51652223396928 13:0.844904909906825 25:0.157785504911465
+2 1:9.05468677530617 2:0.971327712763525 3:0.395002663942384 4:0.907043818803449 5:0.223948453435496 6:1.33022170813552 7:8.00245718481187 8:11.7921953767322 9:3.60163112083033 10:3.30365648080776 11:0.884425570049315 37:0.418600747852556
+1 1:11.3852320789946 2:3.01024083955543 3:4.60836441266115 4:1.01206994519122 5:1.86049484392566 6:0.773982210672766 7:4.65920840537936 8:8.24454337780007 9:3.94937481525532 10:1.23808906465878 12:0.260796291926003 53:1
+2 1:9.61976877863953 2:0.743809509773871 3:2.10668087435938 4:1.57539189581652 5:1.39537113294424 6:0.561377968570952 7:8.57152080684294 8:10.5430221376716 9:2.38452819034284 10:0.601446930336451 11:0.884425570049315 44:0.445904036039959
+2 1:10.2751301552865 2:0.157512602069761 3:1.97501331971192 4:1.15528739026545 5:0.068907216441691 6:2.18963100098212 7:7.36226061002692 8:10.2931874898595 9:3.30356509703747 10:3.99973940408402 11:0.884425570049315 43:0.715678085420547
+2 1:9.4392100320123 2:2.70396633553089 3:1.58001065576954 4:0.716087225371144 6:2.04254226550987 7:6.65093108248809 8:11.5923276584825 9:4.59518453347318 10:2.15160013700335 11:0.884425570049315 26:0.228914278114955
+2 1:9.47264683694327 2:0.752560209888857 3:0.790005327884769 6:0.723882117367807 7:8.14472309031964 8:11.4923937993577 9:3.32840393235354 10:1.059766697797 13:0.844904909906825 37:0.418600747852556
+2 1:9.31883753426082 2:0.708806709313924 3:0.395002663942384 4:0.907043818803449 5:0.620164947975219 6:1.15422907267964 7:7.93132423205799 8:11.6922615176074 9:3.6264699561464 10:2.14456109620617 11:0.884425570049315 43:0.715678085420547
+2 1:9.6498619030774 2:1.73263862276737 3:0.395002663942384 4:1.74725282990559 5:1.01638144251494 6:0.698189761826802 7:7.75349185017328 8:12.0919969541068 9:3.9742136505714 10:2.01785836185701 13:0.844904909906825 47:1.05184741228156
+1 1:10.5894361216376 2:0.367529404829442 3:1.711678210417 4:2.67339230805227 5:0.430670102760569 6:1.38160641921753 7:7.89575775568105 8:10.4930552081092 9:3.00549907324462 10:0.878315868358692 13:0.844904909906825 45:0.433012701892219
+2 1:9.74014127639101 2:2.82647613714071 3:4.08169419407131 4:1.08845258256414 5:1.55041236993805 6:1.67899543460466 7:4.48137602349465 8:9.49371661686068 9:4.84357288663389 10:0.540441910094262 13:0.844904909906825 47:1.05184741228156
+2 1:10.4891257068447 2:2.57270583380609 3:1.711678210417 4:1.47513968426456 5:0.103360824662536 6:2.15815786544439 7:6.50866517698032 8:11.7921953767322 9:4.81873405131782 10:0.608485971133626 11:0.884425570049315 43:0.715678085420547
+2 1:9.24193288291959 2:3.12399994105026 3:1.18500799182715 4:0.429652335222686 5:0.292855669877187 6:1.43877191029626 7:7.32669413364998 8:11.1925922219831 9:3.87485830930711 10:0.728931780329743 13:0.844904909906825 47:1.05184741228156
+2 1:10.0678219647145 2:0.393781505174402 3:1.31667554647461 4:1.15528739026545 5:0.895793813741983 6:2.84735530283184 7:7.93132423205799 8:10.8927906446086 9:3.20420975577319 10:1.8489213827248 11:0.884425570049315 43:0.715678085420547
+7 1:11.1077065980676 2:0.122509801609814 3:2.10668087435938 4:1.54197449196586 5:1.42982474116509 6:2.16008479210997 7:7.21999470451915 8:10.1932536307346 9:3.35324276766962 10:1.72847557352868 13:0.844904909906825 53:1
+6 1:9.04799941431997 2:0.157512602069761 3:1.44834310112208 4:1.54197449196586 5:0.482350515091837 6:1.5010758724832 7:7.50452651553469 8:10.7928567854837 9:3.50227577956604 10:1.38434469011121 13:0.844904909906825 46:0.674199862463242
+2 1:8.58657150627261 2:0.341277304484482 3:0.395002663942384 4:0.143217445074229 6:0.231873508757567 7:7.82462480292716 8:11.5923276584825 9:3.70098646209461 10:4.47213725313892 11:0.884425570049315 43:0.715678085420547
+2 1:9.80367120575985 2:0.980078412878512 3:2.63335109294923 4:0.515582802267224 5:0.396216494539723 6:2.56602400965784 7:8.89161909423541 8:10.7428898559213 9:2.08646216654998 10:1.94199314437634 11:0.884425570049315 43:0.715678085420547
+2 1:9.11821670467501 2:0.262521003449601 3:1.97501331971192 4:0.835435096266334 5:0.49957731920226 6:1.44455269029299 7:7.61122594466551 8:10.2931874898595 9:3.08001557919283 10:1.69171613825454 11:0.884425570049315 43:0.715678085420547
+1 1:10.6596534119926 2:0.0787563010348804 3:1.44834310112208 4:2.22941822832216 5:-0.327309278098032 6:2.4754584563758 7:7.39782708640386 8:10.942757574171 9:3.65130879146247 10:3.02209484892074 11:0.884425570049315 37:0.418600747852556
+2 1:10.4322831384621 2:2.81772543702572 3:2.37001598365431 4:0.453521909401724 5:0.430670102760569 6:1.28204854149613 7:6.08186746045702 8:10.942757574171 9:4.62002336878925 10:1.48601972384819 13:0.844904909906825 37:0.418600747852556
+3 1:8.61666463071048 2:1.36510921793793 3:3.81835908477638 4:1.63267887384621 5:0.275628865766764 6:0.859409292846607 7:8.46482137771211 8:11.3924599402328 9:2.43420586097498 10:0.861109324187818 13:0.844904909906825 18:0.154303349962092
+2 1:10.5827487606514 2:2.01266102644694 3:1.05334043717969 4:2.754548860261 5:0.981927834294096 6:3.51535654689797 7:7.39782708640386 8:12.3418316019189 9:4.37163501562854 10:0.9627843579248 11:0.884425570049315 43:0.715678085420547
+2 1:9.00453156790972 2:1.69763582230742 3:4.21336174871877 4:0.143217445074229 5:0.241175257545918 6:1.17028679489276 7:7.04216232263445 8:12.2918646723565 9:3.9742136505714 10:0.876751637070431 13:0.844904909906825 27:0.184010991918219
+1 1:10.7164959803753 2:3.10649854082028 3:1.44834310112208 4:2.71635754157454 5:1.05083505073579 6:3.93606886888192 7:7.18442822814221 8:11.0426914332958 9:3.87485830930711 10:0.9627843579248 11:0.884425570049315 43:0.715678085420547
+2 1:8.67016351860003 2:1.7763921233423 3:0.263335109294923 4:1.49423534360779 5:1.20587628772959 6:0.597347266328359 7:7.75349185017328 8:11.9920630949819 9:3.94937481525532 10:0.093853877295675 11:0.884425570049315 43:0.715678085420547
+1 1:10.5860924411445 2:0.201266102644694 3:1.97501331971192 4:2.0050442310392 6:0.280688984285476 7:7.46896003915775 8:10.2931874898595 9:3.20420975577319 10:1.54389628151385 12:0.260796291926003 47:1.05184741228156
+2 1:9.74014127639101 2:0.148761901954774 3:1.31667554647461 4:0.286434890148457 5:0.223948453435496 6:3.04197489605495 7:7.54009299191163 8:10.942757574171 9:3.57679228551426 10:1.23417848643813 11:0.884425570049315 44:0.445904036039959
+1 1:10.7198396608684 2:3.13275064116524 3:2.23834842900684 4:0.835435096266334 5:0.930247421962828 6:2.15558862989029 7:6.8287634643728 8:10.3431544194219 9:3.75066413272675 10:1.945903722597 13:0.844904909906825 45:0.433012701892219
+2 1:10.1213208526041 2:3.11524924093527 3:1.58001065576954 4:0.716087225371144 5:0.740752576748178 6:0.817659215092474 7:7.14886175176527 8:10.942757574171 9:3.85001947399104 10:1.05350977264395 13:0.844904909906825 46:0.674199862463242
+1 1:10.4356268189552 2:0.315025204139522 3:0.790005327884769 4:2.00981814587501 5:0.223948453435496 6:1.29489471926664 7:7.82462480292716 8:11.292526081108 9:3.55195345019819 10:0.829824698422593 13:0.844904909906825 45:0.433012701892219
+2 1:8.51635421591758 2:0.910072811958618 3:1.18500799182715 4:1.08845258256414 5:0.757979380858601 6:0.599916501882459 7:8.35812194858129 8:11.4424268697952 9:3.12969324982497 10:1.13015710576875 13:0.844904909906825 18:0.154303349962092
+1 1:11.0843008346159 2:0.918823512073605 3:2.76501864759669 4:0.773374203400835 5:0.568484535643951 6:1.20625609265017 7:8.89161909423541 8:10.4430882785468 9:1.93742915465356 10:2.27439229313186 11:0.884425570049315 53:1
+1 1:11.0441766686988 2:1.40011201839787 3:2.23834842900684 4:0.429652335222686 5:0.103360824662536 6:0.953828699459799 7:8.35812194858129 8:12.0420300245443 9:3.25388742640533 10:2.40344137441341 11:0.884425570049315 36:0.258530551913103
+2 1:9.84379537167702 2:2.77397193645079 3:1.05334043717969 4:0.916591648475064 5:0.292855669877187 6:1.2454369348502 7:7.04216232263445 8:11.6422945880449 9:4.32195734499639 10:1.38590892139947 13:0.844904909906825 46:0.674199862463242
+3 1:6.75089091556246 2:2.43269463196631 3:4.08169419407131 4:0.143217445074229 5:0.223948453435496 6:0.112404055491895 7:4.33911011798688 8:11.3424930106704 9:5.86196513459281 10:0.183015060726566 14:0.296673189340406 31:0.127293769304329
+1 1:9.1249040656612 2:1.04133331368342 3:0.790005327884769 6:2.24101571206413 7:8.18028956669658 8:11.7422284471698 9:3.42775927361783 10:1.11764325546266 11:0.884425570049315 43:0.715678085420547
+2 1:9.82707696921153 2:0.805064410578777 3:1.05334043717969 4:1.01206994519122 5:0.551257731533528 6:2.52877009412339 7:8.28698899582741 8:11.3924599402328 9:3.17937092045712 10:4.03962730193468 11:0.884425570049315 44:0.445904036039959
+1 1:10.2350059893693 2:2.21392712909164 3:2.10668087435938 4:1.59926146999555 5:0.913020617852405 6:2.16136940988702 7:6.50866517698032 8:12.4417654610437 9:5.04228356916246 10:1.24903868367661 13:0.844904909906825 27:0.184010991918219
+2 1:9.5462078077914 2:2.85272823748567 3:2.10668087435938 4:1.14573956059383 5:0.981927834294096 6:2.10741546325091 7:6.36639927147256 8:11.0426914332958 9:4.49582919220889 10:0.378543971759223 13:0.844904909906825 24:0.280975743474508
+2 1:10.2650991138072 2:1.26010081655809 3:1.05334043717969 4:0.916591648475064 5:0.568484535643951 6:0.931990197249945 7:8.25142251945046 8:11.9420961654195 9:3.42775927361783 10:2.07260645694616 11:0.884425570049315 43:0.715678085420547
+1 1:10.1079461306317 2:2.99273943932546 3:3.16002131153908 4:0.405782761043648 5:0.223948453435496 6:0.487512446390564 7:5.83290212581843 8:9.84348512379766 9:4.14808549778389 10:1.50870107752798 11:0.884425570049315 43:0.715678085420547
+1 1:10.8268374366475 2:0.971327712763525 3:1.58001065576954 4:0.572869780296915 5:-0.18949484521465 6:2.90709002946468 7:8.57152080684294 8:11.3424930106704 9:2.83162722603212 10:1.69249825389867 11:0.884425570049315 37:0.418600747852556
+1 1:10.8335247976337 2:2.29268343012652 3:0.92167288253223 4:2.40127916241124 5:0.981927834294096 6:3.71447230234075 7:7.2555611808961 8:12.1919308132316 9:4.44615152157675 10:1.56344917261712 11:0.884425570049315 43:0.715678085420547
+1 1:11.1645491664503 2:2.7652212363358 3:1.97501331971192 4:1.49423534360779 5:1.10251546306706 6:1.67835312571613 7:6.43753222422644 8:11.3424930106704 9:4.62002336878925 10:0.710161004870608 13:0.844904909906825 36:0.258530551913103
+3 1:7.52328110946783 2:2.36268903104641 3:3.423356420834 4:0.716087225371144 5:1.30923711239213 6:0.451543148633157 7:5.08600612190266 8:11.8921292358571 9:5.68809328738031 10:0.432509951204236 14:0.296673189340406 20:0.129459555600631
+2 1:9.83376433019773 2:0.630050408279043 3:1.58001065576954 4:1.54674840680167 5:0.826886597300292 6:2.20890026763788 7:8.28698899582741 8:10.8428237150461 9:2.83162722603212 10:1.74724634898782 11:0.884425570049315 26:0.228914278114955
+1 1:9.26868232686436 2:1.5138711198927 3:1.18500799182715 6:0.551743335243076 7:8.03802366118881 8:12.241897742794 9:3.75066413272675 10:2.41830157165189 13:0.844904909906825 34:0.169841555121689
+1 1:10.6496223705133 2:0.376280104944429 3:1.05334043717969 4:3.15555770646884 5:0.999154638404519 6:1.51327974136518 7:7.89575775568105 8:11.0926583628583 9:3.35324276766962 10:2.55360757808649 13:0.844904909906825 45:0.433012701892219
+1 1:11.0843008346159 2:0.0262521003449601 3:2.10668087435938 4:2.81183583829069 5:1.84326803981523 6:0.672497406285798 7:6.97102936988056 8:10.3431544194219 9:3.6264699561464 10:0.409828597524448 11:0.884425570049315 52:0.77919372247398
+3 1:8.35585755224893 2:1.85514842437718 3:3.55502397548146 4:0.716087225371144 5:1.3609175247234 6:0.987228761663105 7:6.61536460611115 8:12.6416331792934 9:4.69453987473746 10:0.503682474820123 13:0.844904909906825 18:0.154303349962092
+1 1:10.5626866776928 2:0.577546207589123 3:0.790005327884769 4:1.23167002763837 5:0.913020617852405 6:2.21789259207723 7:8.07359013756576 8:11.3424930106704 9:3.35324276766962 10:3.41393478663018 11:0.884425570049315 44:0.445904036039959
+2 1:9.59301933469476 2:2.88773103794561 3:2.89668620224415 4:1.67087019253267 5:1.94662886447777 6:1.61604916352919 7:5.83290212581843 8:10.3931213489843 9:4.49582919220889 10:0.796975841369107 13:0.844904909906825 38:0.217872335165298
+2 1:10.0577909232352 2:1.9076526250671 3:1.05334043717969 4:4.30607118189848 5:1.70545360693185 6:3.75429545342931 7:7.50452651553469 8:12.3917985314813 9:4.29711850968032 10:4.41582492676151 11:0.884425570049315 34:0.169841555121689
+2 1:9.70670447146005 2:2.79147333668076 3:1.84334576506446 4:0.286434890148457 5:0.275628865766764 6:0.828578466197401 7:6.47309870060338 8:11.292526081108 9:4.54550686284103 10:0.535749216229478 13:0.844904909906825 45:0.433012701892219
+2 1:9.3322122562332 2:1.96890752587201 3:0.395002663942384 4:1.01206994519122 5:0.327309278098032 6:1.90573047225402 7:7.64679242104245 8:12.0919969541068 9:4.09840782715175 10:5.06498091138993 11:0.884425570049315 44:0.445904036039959
+1 1:9.84713905217011 2:0.621299708164057 3:3.423356420834 4:0.907043818803449 5:1.18864948361917 6:0.192692666557535 7:8.46482137771211 8:8.99404732123644 9:1.41581361301606 10:1.03004630332003 11:0.884425570049315 43:0.715678085420547
+2 1:11.1478307639848 2:1.65388232173249 3:1.84334576506446 4:3.35606212957276 5:2.06721649325073 6:0.724524426256332 7:7.82462480292716 8:12.4917323906062 9:3.9742136505714 10:1.88098812413415 13:0.844904909906825 46:0.674199862463242
+2 1:9.00118788741662 2:0.393781505174402 3:2.23834842900684 4:1.21734828313094 5:1.49873195760678 6:0.572297219675879 7:7.89575775568105 8:10.0433528420474 9:2.68259421413569 10:1.47976279869514 13:0.844904909906825 45:0.433012701892219
+1 1:10.3319727236691 2:0.157512602069761 3:0.395002663942384 4:0.143217445074229 5:0.0172268041104227 6:2.54354319855946 7:7.71792537379634 8:11.6422945880449 9:3.8003418033589 10:0.91272895670044 11:0.884425570049315 36:0.258530551913103
+7 1:11.1846112494088 2:1.00633051322347 3:1.711678210417 4:1.32237440951871 5:1.06806185484621 6:1.60898376575542 7:8.60708728321988 8:11.3424930106704 9:2.80678839071605 10:1.99752335510962 11:0.884425570049315 53:1
+7 1:11.3952631204739 2:0.0437535005749336 3:1.05334043717969 4:1.74725282990559 5:1.18864948361917 6:1.02448267719756 7:7.46896003915775 8:11.2425591515455 9:3.77550296804283 10:0.942449351177403 13:0.844904909906825 52:0.77919372247398
+2 1:10.9639283368644 2:2.1089187277118 3:1.18500799182715 4:1.54197449196586 5:1.20587628772959 6:3.20062519152066 7:7.2555611808961 8:12.3917985314813 9:4.49582919220889 10:0.82513200455781 11:0.884425570049315 43:0.715678085420547
+2 1:10.8134627146751 2:1.72388792265238 3:1.711678210417 4:3.20329685482692 5:0.344536082208455 6:0.354554506465865 7:7.6823588974194 8:12.5416993201686 9:4.12324666246782 10:1.98735585173592 13:0.844904909906825 27:0.184010991918219
+1 1:10.362065848107 2:1.10258821448833 3:1.711678210417 4:0.572869780296915 5:0.0172268041104227 6:1.27048698150268 7:8.57152080684294 8:11.5423607289201 9:2.90614373198033 10:1.71517960757846 11:0.884425570049315 44:0.445904036039959
+1 1:10.569374038679 2:2.65146213484097 3:1.58001065576954 4:0.606287184147568 6:2.32001970535272 7:6.68649755886503 8:11.6922615176074 9:4.64486220410532 10:1.4813270299834 11:0.884425570049315 38:0.217872335165298
+2 1:8.8105980993101 2:0.551294107244163 3:2.10668087435938 6:0.827936157308876 7:8.25142251945046 8:10.2931874898595 9:2.50872236692319 10:1.45942779194775 13:0.844904909906825 25:0.157785504911465
+6 1:7.89108596370848 2:2.66896353507095 3:3.16002131153908 4:0.572869780296915 5:0.930247421962828 6:0.749574472908812 7:5.15713907465654 8:10.8927906446086 9:5.19131658105889 10:1.17317346619594 14:0.296673189340406 24:0.280975743474508
+2 1:9.81704592773224 2:0.498789906554243 3:2.10668087435938 4:1.08845258256414 5:0.930247421962828 6:2.29753889425434 7:8.14472309031964 8:10.2931874898595 9:2.60807770818748 10:2.26500690540229 11:0.884425570049315 43:0.715678085420547
+2 1:9.18174663404385 2:0.253770303334615 3:1.711678210417 4:1.0025221155196 5:0.327309278098032 6:1.21524841708952 7:7.64679242104245 8:10.4930552081092 9:3.20420975577319 10:1.03864957540547 11:0.884425570049315 43:0.715678085420547
+4 1:7.48315694355067 2:1.16384311529323 3:2.63335109294923 4:0.286434890148457 5:0.223948453435496 6:0.347489108692088 7:8.78491966510459 8:11.292526081108 9:2.43420586097498 10:1.37965199624642 14:0.296673189340406 17:0.119629720910916
+7 1:11.5156356182254 2:0.936324912303578 3:3.423356420834 4:1.91911376399467 5:3.54872164674708 6:2.39709677197574 7:8.99831852336624 8:9.94341898292251 9:1.44065244833213 10:2.63494760507608 13:0.844904909906825 53:1
+2 1:9.58633197370856 2:2.69521563541591 3:3.16002131153908 4:1.32237440951871 5:0.534030927423105 6:1.6494492257325 7:5.26383850378736 8:10.8428237150461 9:5.11680007511067 10:1.05429188828808 13:0.844904909906825 38:0.217872335165298
+1 1:10.7465891048132 2:1.19884591575318 3:1.44834310112208 4:1.59926146999555 5:0.913020617852405 6:0.689839746275976 7:8.42925490133517 8:11.7921953767322 9:3.17937092045712 10:1.54780685973451 12:0.260796291926003 37:0.418600747852556
+1 1:9.03128101185449 2:0.0350028004599468 3:1.05334043717969 4:1.15528739026545 5:-1.53318556582762 6:0.155438751023078 7:7.46896003915775 8:11.2425591515455 9:3.8003418033589 10:0.142345047231774 11:0.884425570049315 44:0.445904036039959
+2 1:10.1413829355626 2:0.271271703564588 3:0.790005327884769 4:2.506305288799 5:0.913020617852405 6:0.835643863971177 7:7.78905832655022 8:11.3924599402328 9:3.60163112083033 10:1.91305486554351 11:0.884425570049315 43:0.715678085420547
+2 1:8.86075330670655 2:1.04133331368342 3:1.58001065576954 4:0.143217445074229 5:0.0344536082208455 6:0.212604242101814 7:8.57152080684294 8:11.4424268697952 9:2.88130489666426 10:0.448152264086848 11:0.884425570049315 44:0.445904036039959
+2 1:9.38236746362966 2:0.350028004599468 3:1.58001065576954 4:1.43217445074229 5:0.516804123312682 6:1.38417565477163 7:7.8601912793041 8:10.6429559967965 9:3.08001557919283 10:1.92478660020547 11:0.884425570049315 37:0.418600747852556
+1 1:10.6496223705133 2:2.72146773576087 3:0.526670218589846 4:0.835435096266334 6:0.828578466197401 7:7.39782708640386 8:11.8421623062946 9:4.17292433309997 10:0.493514971446424 12:0.260796291926003 46:0.674199862463242
+2 1:8.4929484524659 2:1.89890192495212 3:2.23834842900684 4:1.0025221155196 5:1.22310309184001 6:0.497147079718441 7:7.11329527538833 8:12.6916001088559 9:4.62002336878925 10:0.78837256928367 13:0.844904909906825 16:0.125988157669742
+2 1:10.1313518940833 2:2.78272263656577 3:1.44834310112208 4:2.37263567339639 5:-1.55041236993805 6:1.21524841708952 7:6.75763051161891 8:11.4923937993577 9:4.44615152157675 10:1.75115692720847 13:0.844904909906825 45:0.433012701892219
+2 1:9.49270891990185 2:2.81772543702572 3:1.44834310112208 4:0.143217445074229 5:0.103360824662536 6:1.92692666557535 7:6.8287634643728 8:11.4424268697952 9:4.39647385094461 10:1.78478789990609 11:0.884425570049315 43:0.715678085420547
+2 1:9.32886857574011 2:3.00149013944044 3:1.44834310112208 4:0.20050442310392 5:0.172268041104227 6:1.31287936814534 7:7.0065958462575 8:11.1426252924207 9:4.07356899183568 10:1.20680443889355 11:0.884425570049315 43:0.715678085420547
+2 1:9.14830982911288 2:3.14150134128023 3:1.58001065576954 4:0.286434890148457 5:0.344536082208455 6:1.50043356359467 7:7.18442822814221 8:10.942757574171 9:3.8003418033589 10:5.02743936047166 11:0.884425570049315 43:0.715678085420547
+2 1:10.3085669602175 2:2.20517642897665 3:0.658337773237307 4:1.59926146999555 5:-0.430670102760569 6:3.91808422000321 7:7.46896003915775 8:12.1419638836692 9:4.24744083904818 10:2.12579032074704 11:0.884425570049315 43:0.715678085420547
+1 1:10.1681323795074 2:0.481288506324269 3:2.23834842900684 4:0.143217445074229 5:0.120587628772959 6:2.78055517842523 7:8.1091566139427 8:10.1432867011722 9:2.53356120223927 10:2.1171870486616 11:0.884425570049315 43:0.715678085420547
+2 1:9.02793733136139 2:0.271271703564588 3:0.395002663942384 4:1.86182678596497 5:-0.206721649325073 6:0.659651228515295 7:7.78905832655022 8:11.6422945880449 9:3.75066413272675 10:1.33741775146337 11:0.884425570049315 26:0.228914278114955
+2 1:10.6094982045962 2:1.54012322023766 3:1.44834310112208 4:0.716087225371144 5:0.602938143864796 6:2.14916554100504 7:8.03802366118881 8:12.2918646723565 9:3.77550296804283 10:1.13797826221006 13:0.844904909906825 46:0.674199862463242
+2 1:9.62311245913263 2:0.393781505174402 3:1.97501331971192 4:1.47513968426456 5:-0.844113401410714 6:0.396946893108522 7:7.93132423205799 8:10.2432205602971 9:2.78194955539998 10:1.66981690021888 11:0.884425570049315 43:0.715678085420547
+6 1:8.18867352759409 2:0.113759101494827 3:1.97501331971192 4:1.77112240408463 5:3.08359793576567 6:0.531831759698797 7:7.2555611808961 8:10.3931213489843 9:3.42775927361783 10:0.654630794137333 14:0.296673189340406 20:0.129459555600631
+2 1:9.95748050844231 2:1.67138372196246 3:0.92167288253223 4:2.382183503068 5:0.981927834294096 6:1.34884866590275 7:7.82462480292716 8:12.2918646723565 9:3.99905248588747 10:1.72612922659629 13:0.844904909906825 46:0.674199862463242
+1 1:10.2885048772589 2:3.07149574036034 3:0.92167288253223 4:2.24373997282958 5:0.740752576748178 6:2.48252385414958 7:7.36226061002692 8:11.3424930106704 9:3.94937481525532 10:3.42097382742735 11:0.884425570049315 43:0.715678085420547
+2 1:9.36899274165727 2:0.420033605519362 3:0.92167288253223 4:1.11709607157898 5:0.18949484521465 6:1.78818794565393 7:7.93132423205799 8:11.1925922219831 9:3.37808160298569 10:1.88880928057546 11:0.884425570049315 26:0.228914278114955
+1 1:11.1478307639848 2:1.44386551897281 3:1.05334043717969 4:1.46081793975713 5:2.30839175079665 6:1.92692666557535 7:8.1091566139427 8:12.1419638836692 9:3.67614762677854 10:0.390275706421182 13:0.844904909906825 46:0.674199862463242
+1 1:10.6763718144581 2:3.01024083955543 3:1.31667554647461 4:1.63267887384621 5:1.15419587539832 6:0.347489108692088 7:7.07772879901139 8:11.1925922219831 9:4.04873015651961 10:1.38512680575534 12:0.260796291926003 36:0.258530551913103
+1 1:10.8602742415784 2:2.84397753737068 3:1.31667554647461 6:1.18570220821737 7:6.97102936988056 8:11.4923937993577 9:4.29711850968032 10:1.61585092077387 13:0.844904909906825 37:0.418600747852556
+1 1:10.1681323795074 2:2.9664873389805 3:1.58001065576954 4:0.143217445074229 5:0.120587628772959 6:2.54803936077914 7:6.93546289350362 8:11.1426252924207 9:4.14808549778389 10:3.01583792376769 11:0.884425570049315 43:0.715678085420547
+3 1:8.57654046479332 2:1.08508681425835 3:2.89668620224415 4:1.36056572820517 5:2.22225773024453 6:0.18948112211491 7:8.89161909423541 8:10.8927906446086 9:2.11130100186605 10:0.189271985879611 13:0.844904909906825 18:0.154303349962092
+3 1:6.53689536400427 2:2.64271143472599 3:5.135034631251 4:0.405782761043648 5:0.947474226073251 6:0.0796463021771145 7:3.09428344479392 8:9.49371661686068 9:5.66325445206424 10:0.273740475445719 14:0.296673189340406 24:0.280975743474508
+2 1:9.81704592773224 2:1.99515962621697 3:3.423356420834 4:0.515582802267224 5:0.981927834294096 6:1.00970957276148 7:6.15300041321091 8:12.6416331792934 9:5.14163891042674 10:0.854070283390643 13:0.844904909906825 47:1.05184741228156
+2 1:10.5158751507895 2:1.93390472541206 3:2.10668087435938 4:1.11709607157898 5:1.39537113294424 6:1.6571569323948 7:7.07772879901139 8:12.6416331792934 9:4.66970103942139 10:0.746920440144747 13:0.844904909906825 37:0.418600747852556
+1 1:10.9171168099611 2:0.787563010348804 3:4.34502930336623 4:1.04071343420606 5:1.06806185484621 6:3.03940566050085 7:8.82048614148153 8:8.39444416648734 9:0.521615541637496 10:0.189271985879611 11:0.884425570049315 36:0.258530551913103
+7 1:10.6663407729788 2:0.577546207589123 3:1.44834310112208 4:0.453521909401724 6:0.956397935013899 7:8.21585604307352 8:10.8428237150461 9:2.90614373198033 10:0.580329807944924 13:0.844904909906825 53:1
+4 1:7.29925451643034 2:1.31260501724801 3:4.08169419407131 4:0.20050442310392 5:0.430670102760569 6:0.926851726141744 7:8.57152080684294 8:11.0426914332958 9:2.06162333123391 10:0.664798297511031 14:0.296673189340406 17:0.119629720910916
+1 1:10.7198396608684 2:2.48519883265623 3:2.23834842900684 4:0.859304670445373 5:0.775206184969023 6:0.387954568669171 7:6.08186746045702 8:11.8921292358571 9:5.11680007511067 10:1.93495410357917 12:0.260796291926003 47:1.05184741228156
+1 1:10.6195292460755 2:0.630050408279043 3:2.63335109294923 4:1.03116560453445 5:0.275628865766764 6:0.951901772794223 7:8.46482137771211 8:9.79351819423523 9:1.9871068252857 10:1.87316696769285 13:0.844904909906825 53:1
+2 1:9.30880649278153 2:0.350028004599468 3:0.92167288253223 4:1.22212219796675 5:0.568484535643951 6:1.37903718366343 7:7.8601912793041 8:11.1925922219831 9:3.4525981089339 10:1.9920485456007 11:0.884425570049315 26:0.228914278114955
+2 1:10.2717864747934 2:0.393781505174402 3:0.92167288253223 4:1.59926146999555 5:0.258402061656341 6:2.02584223440822 7:7.89575775568105 8:11.1925922219831 9:3.40292043830176 10:1.16926288797528 13:0.844904909906825 46:0.674199862463242
+3 1:7.84427443680512 2:2.82647613714071 3:3.68669153012892 4:1.03116560453445 5:2.82519587410933 6:0.831147701751502 7:4.90817374001795 8:9.94341898292251 9:4.81873405131782 10:0.923678575718268 14:0.296673189340406 24:0.280975743474508
+2 1:10.1781634209867 2:2.32768623058647 3:3.423356420834 4:1.08845258256414 5:2.15335051380284 6:1.6211876346374 7:5.19270555103348 8:12.0420300245443 9:5.66325445206424 10:2.13908628669726 13:0.844904909906825 47:1.05184741228156
+1 1:10.5626866776928 2:1.18134451552321 3:0.395002663942384 4:1.43217445074229 5:0.292855669877187 6:2.03483455884757 7:7.96689070843493 8:11.8921292358571 9:3.70098646209461 10:3.25829377344818 11:0.884425570049315 37:0.418600747852556
+3 1:8.51301053542448 2:1.61012882115755 3:2.89668620224415 4:1.91911376399467 5:2.96301030699271 6:0.518985581928295 7:7.78905832655022 8:12.3917985314813 9:3.75066413272675 10:0.732842358550396 13:0.844904909906825 17:0.119629720910916
+1 1:10.2985359187382 2:2.53770303334615 3:0.790005327884769 4:0.959556881997333 5:0.637391752085641 6:0.198473446554261 7:7.2555611808961 8:11.9420961654195 9:4.32195734499639 10:0.472397849054898 12:0.260796291926003 36:0.258530551913103
+2 1:9.74014127639101 2:2.41519323173633 3:1.31667554647461 4:0.716087225371144 5:0.49957731920226 6:2.05731536994595 7:6.89989641712668 8:12.0919969541068 9:4.64486220410532 10:1.33194294195445 11:0.884425570049315 43:0.715678085420547
+1 1:10.6262166070617 2:2.75647053622081 3:1.44834310112208 4:3.12691421745399 5:0.0516804123312682 6:2.54739705189061 7:6.75763051161891 8:11.5423607289201 9:4.49582919220889 10:3.17617163081447 11:0.884425570049315 43:0.715678085420547
+2 1:9.62311245913263 2:0.472537806209282 3:0.263335109294923 4:1.01206994519122 5:0.396216494539723 6:1.93784591668028 7:7.82462480292716 8:11.6922615176074 9:3.72582529741068 10:3.00488830474986 11:0.884425570049315 44:0.445904036039959
+2 1:8.96106372149946 2:0.647551808509017 3:2.10668087435938 4:0.319852293999111 5:0.18949484521465 6:1.26791774594858 7:8.42925490133517 8:10.3431544194219 9:2.35968935502677 10:0.308935679431597 13:0.844904909906825 24:0.280975743474508
+3 1:8.87747170917204 2:1.05883471391339 3:0.131667554647461 4:1.88569636014401 5:1.84326803981523 6:0.382173788672445 7:7.8601912793041 8:11.8421623062946 9:3.77550296804283 10:1.01831456865807 13:0.844904909906825 16:0.125988157669742
+2 1:9.85382641315631 2:2.24892992955158 3:1.84334576506446 4:1.0025221155196 5:1.11974226717748 6:1.86911886560809 7:6.5797981297342 8:12.3917985314813 9:4.96776706321424 10:1.84501080450414 11:0.884425570049315 43:0.715678085420547
+1 1:9.87388849611489 2:0.297523803909548 3:0.92167288253223 4:0.286434890148457 5:0.120587628772959 6:1.20047531265344 7:7.78905832655022 8:11.2425591515455 9:3.52711461488211 10:1.9920485456007 13:0.844904909906825 37:0.418600747852556
+2 1:9.59301933469476 2:0.761310910003844 3:2.23834842900684 4:0.959556881997333 5:1.11974226717748 6:0.134884866590275 7:8.60708728321988 8:10.4930552081092 9:2.28517284907855 10:0.994068983690025 11:0.884425570049315 43:0.715678085420547
+6 1:8.6032899087381 2:0.472537806209282 3:1.31667554647461 4:2.0050442310392 5:0.775206184969023 6:0.400800746439673 7:8.03802366118881 8:10.8927906446086 9:3.08001557919283 10:0.947142045042187 13:0.844904909906825 16:0.125988157669742
+2 1:9.2319018414403 2:0.253770303334615 3:1.711678210417 4:1.35101789853356 5:0.534030927423105 6:1.78883025454245 7:7.64679242104245 8:10.5430221376716 9:3.22904859108926 10:1.78869847812674 11:0.884425570049315 26:0.228914278114955
+1 1:9.30211913179533 2:1.23384871621313 3:2.23834842900684 4:0.319852293999111 5:0.327309278098032 6:2.12283087657551 7:8.64265375959682 8:11.6422945880449 9:2.83162722603212 10:2.44958619741712 11:0.884425570049315 44:0.445904036039959
+6 1:8.88415907015823 2:0.428784305634349 3:1.97501331971192 4:1.01206994519122 5:0.706298968527332 6:1.47602582583072 7:8.00245718481187 8:10.2931874898595 9:2.75711072008391 10:1.78557001555022 13:0.844904909906825 24:0.280975743474508
+1 1:10.1112898111248 2:3.05399434013036 3:1.05334043717969 4:1.86660070080078 5:0.87856700963156 6:1.61990301686035 7:7.32669413364998 8:11.3424930106704 9:3.9742136505714 10:0.281561631887025 11:0.884425570049315 43:0.715678085420547
+2 1:8.97109476297875 2:0.866319311383684 3:1.18500799182715 4:2.24373997282958 5:1.22310309184001 6:0.526050979702071 7:8.35812194858129 8:11.3924599402328 9:3.1048544145089 10:1.11529690853027 11:0.884425570049315 44:0.445904036039959
+2 1:9.05803045579927 2:1.22509801609814 3:0.92167288253223 4:0.319852293999111 5:0.103360824662536 6:1.16386370600751 7:8.21585604307352 8:11.8921292358571 9:3.47743694424997 10:0.80088641958976 11:0.884425570049315 26:0.228914278114955
+2 1:9.34558697820559 2:3.08899714059031 3:0.790005327884769 4:0.143217445074229 6:2.11961933213289 7:7.46896003915775 8:11.4923937993577 9:3.92453597993925 10:4.66688404852744 11:0.884425570049315 34:0.169841555121689
+1 1:10.0109793963319 2:2.45894673231127 3:1.84334576506446 4:0.143217445074229 5:0.172268041104227 6:1.73873016123749 7:6.4019657478495 8:11.9920630949819 9:4.96776706321424 10:0.685133304258428 11:0.884425570049315 37:0.418600747852556
+1 1:10.1413829355626 2:2.44144533208129 3:0.790005327884769 4:0.572869780296915 5:0.275628865766764 6:2.10291930103123 7:7.2555611808961 8:12.0420300245443 9:4.37163501562854 10:0.774294487689319 13:0.844904909906825 46:0.674199862463242
+2 1:9.84713905217011 2:3.05399434013036 3:1.05334043717969 4:1.82363546727851 5:0.895793813741983 6:2.77991286953671 7:7.32669413364998 8:11.3424930106704 9:3.9742136505714 10:4.51046091970132 11:0.884425570049315 26:0.228914278114955
+2 1:9.68329870800837 2:0.796313710463791 3:1.44834310112208 4:3.02188809106623 5:1.10251546306706 6:0.270412042069074 7:8.42925490133517 8:11.1426252924207 9:2.85646606134819 10:0.945577813753926 13:0.844904909906825 25:0.157785504911465
+2 1:9.81704592773224 3:1.58001065576954 4:0.319852293999111 5:-0.0344536082208455 6:2.25835805205431 7:7.18442822814221 8:10.8428237150461 9:3.77550296804283 10:1.3765235336699 11:0.884425570049315 43:0.715678085420547
+1 1:10.8535868805923 2:2.12642012794177 3:0.92167288253223 4:3.26535774769242 5:1.75713401926312 6:1.3655486970044 7:7.36226061002692 8:12.2918646723565 9:4.37163501562854 10:1.57752725421147 13:0.844904909906825 45:0.433012701892219
+2 1:10.0745093257007 2:3.08899714059031 3:2.89668620224415 4:0.20050442310392 5:0.155041236993805 6:1.03604423719101 7:6.25969984234173 8:9.74355126467281 9:3.8003418033589 10:1.17239135055181 13:0.844904909906825 45:0.433012701892219
+2 1:10.154757657535 2:1.5138711198927 3:2.37001598365431 4:0.716087225371144 5:0.568484535643951 6:4.06324602880989 7:8.14472309031964 8:12.2918646723565 9:3.52711461488211 10:2.63181914249955 11:0.884425570049315 44:0.445904036039959
+3 1:8.87412802867894 2:0.700056009198937 3:0.92167288253223 4:2.02413989038243 5:0.620164947975219 6:0.646162741856268 7:8.14472309031964 8:11.3924599402328 9:3.30356509703747 10:0.756305827874315 13:0.844904909906825 25:0.157785504911465
+1 1:9.61308141765334 2:0.997579813108485 3:2.76501864759669 6:0.140023337698476 7:8.92718557061235 8:10.6429559967965 9:1.9871068252857 10:0.808707576031066 11:0.884425570049315 43:0.715678085420547
+2 1:11.1779238884226 2:1.69763582230742 3:2.50168353830177 4:3.14123596196142 5:3.39368040975328 6:0.776551446226867 7:7.61122594466551 8:12.591666249731 9:4.07356899183568 10:3.34119803172603 12:0.260796291926003 47:1.05184741228156
+1 1:10.0444162012628 2:3.01899153967042 3:0.658337773237307 4:1.47513968426456 5:0.49957731920226 6:1.99372678998196 7:7.50452651553469 8:11.5923276584825 9:3.9742136505714 10:4.71146464024289 11:0.884425570049315 43:0.715678085420547
+2 1:8.78050497487223 2:0.603798307934083 3:1.84334576506446 4:0.515582802267224 5:0.3789896904293 6:1.04054039941069 7:8.32255547220435 8:10.4930552081092 9:2.58323887287141 10:1.60099072353539 13:0.844904909906825 25:0.157785504911465
+1 1:10.7633075072786 2:0.428784305634349 3:1.18500799182715 4:0.20050442310392 5:0.0861340205521137 6:1.55695674578488 7:7.96689070843493 8:10.9927245037334 9:3.20420975577319 10:0.933846079091966 11:0.884425570049315 37:0.418600747852556
+2 1:9.11487302418191 2:0.210016802759681 3:2.89668620224415 4:0.20050442310392 5:0.327309278098032 6:0.944836375020447 7:7.18442822814221 8:9.29384889861099 9:2.80678839071605 10:0.802450650878021 13:0.844904909906825 45:0.433012701892219
+1 1:10.8669616025646 2:0.857568611268698 3:0.658337773237307 4:2.95027936852911 5:0.49957731920226 6:2.39838138975279 7:8.1091566139427 8:11.6422945880449 9:3.42775927361783 10:2.35182174190079 11:0.884425570049315 37:0.418600747852556
+2 1:10.7633075072786 2:0.0962577012648538 3:2.76501864759669 4:1.86660070080078 5:0.757979380858601 6:2.09585390325746 7:6.8287634643728 8:9.59365047598553 9:3.25388742640533 10:2.4261227280932 13:0.844904909906825 38:0.217872335165298
+1 1:9.93407474499063 2:0.218767502874668 3:0.92167288253223 4:1.91911376399467 5:0.292855669877187 6:3.14089046488782 7:7.71792537379634 8:11.2425591515455 9:3.60163112083033 10:1.93886468179982 11:0.884425570049315 37:0.418600747852556
+1 1:10.2249749478901 2:0.58629690770411 3:1.711678210417 4:0.286434890148457 5:0.258402061656341 6:3.16272896709768 7:8.28698899582741 8:10.6429559967965 9:2.73227188476783 10:0.527145944144041 11:0.884425570049315 44:0.445904036039959
+2 1:9.20849607798862 2:0.271271703564588 3:0.526670218589846 4:2.63520098936581 5:0.654618556196064 6:1.14459443935176 7:7.78905832655022 8:11.4923937993577 9:3.67614762677854 10:1.59395168273821 11:0.884425570049315 26:0.228914278114955
+2 1:8.13183095921145 2:0.122509801609814 3:0.92167288253223 6:0.155438751023078 7:7.57565946828857 8:11.2425591515455 9:3.70098646209461 10:0.119663693551986 14:0.296673189340406 24:0.280975743474508
+2 1:9.79364016428056 2:0.866319311383684 3:1.84334576506446 4:0.591965439640145 5:0.310082473987609 6:2.50628928302501 7:8.64265375959682 8:10.9927245037334 9:2.55840003755534 10:3.97080112525118 11:0.884425570049315 44:0.445904036039959
+2 1:9.77023440082889 2:0.682554608968963 3:1.84334576506446 4:1.01206994519122 5:0.637391752085641 6:2.21917720985428 7:8.42925490133517 8:10.6929229263589 9:2.60807770818748 10:2.29316306859099 11:0.884425570049315 43:0.715678085420547
+3 1:7.71052721708125 2:2.99273943932546 3:2.10668087435938 4:0.405782761043648 5:0.3789896904293 6:0.342992946472413 7:6.5797981297342 8:10.6929229263589 9:4.14808549778389 10:0.631949440457545 14:0.296673189340406 24:0.280975743474508
+2 1:9.66323662504979 2:3.12399994105026 3:0.658337773237307 6:2.69898194958254 7:7.54009299191163 8:11.5423607289201 9:3.87485830930711 10:2.13830417105313 11:0.884425570049315 37:0.418600747852556
+3 1:8.22545401301816 2:2.61645933438103 3:2.89668620224415 4:1.82363546727851 5:3.27309278098032 6:0.755997561794063 7:5.40610440929513 8:11.2425591515455 9:5.24099425169103 10:0.501336127887731 14:0.296673189340406 24:0.280975743474508
+2 1:9.10484198270262 2:0.66505320873899 3:1.18500799182715 4:2.1291660167702 5:1.32646391650255 6:1.59485297020787 7:8.25142251945046 8:11.1426252924207 9:3.08001557919283 10:1.73082192046107 13:0.844904909906825 24:0.280975743474508
+1 1:10.4824383458585 2:0.787563010348804 3:1.05334043717969 4:1.22212219796675 5:0.0861340205521137 6:0.427777719757728 7:8.28698899582741 8:11.3424930106704 9:3.15453208514105 10:1.84813926708067 12:0.260796291926003 33:0.0483368244522832
+2 1:10.2985359187382 2:0.542543407129176 3:1.97501331971192 4:2.14826167611343 5:-0.0861340205521137 6:2.51014313635616 7:8.21585604307352 8:10.4430882785468 9:2.63291654350355 10:2.78980650261394 11:0.884425570049315 43:0.715678085420547
+2 1:9.75017231787031 2:0.577546207589123 3:2.37001598365431 4:0.143217445074229 5:0.241175257545918 6:3.66244528237022 7:8.35812194858129 8:10.0433528420474 9:2.26033401376248 10:0.929935500871313 11:0.884425570049315 37:0.418600747852556
+1 1:9.04465573382688 2:3.14150134128023 3:1.31667554647461 4:0.143217445074229 5:0.0516804123312682 6:1.37197178588965 7:7.29112765727304 8:11.0926583628583 9:3.82518063867497 10:5.33950350247978 11:0.884425570049315 26:0.228914278114955
+2 1:9.66658030554288 2:2.90523243817559 3:2.76501864759669 4:0.143217445074229 5:0.068907216441691 6:1.11697515714518 7:5.9751680313262 8:10.4430882785468 9:4.42131268626068 10:2.1093658922203 13:0.844904909906825 47:1.05184741228156
+2 1:10.0276977987973 2:1.00633051322347 3:1.05334043717969 4:1.03116560453445 5:-0.0172268041104227 6:2.83515143394987 7:8.32255547220435 8:11.6422945880449 9:3.22904859108926 10:0.527145944144041 11:0.884425570049315 44:0.445904036039959
+1 1:10.6897465364305 2:1.01508121333846 3:0.790005327884769 4:2.03368772005405 5:0.981927834294096 6:0.387954568669171 7:8.21585604307352 8:11.6922615176074 9:3.40292043830176 10:1.9740598857857 11:0.884425570049315 36:0.258530551913103
+2 1:9.72007919343243 2:0.350028004599468 3:2.10668087435938 4:0.868852500116988 5:0.637391752085641 6:1.17606757488949 7:7.82462480292716 8:10.0933197716098 9:2.78194955539998 10:2.2728280618436 13:0.844904909906825 47:1.05184741228156
+2 1:9.50942732236734 2:0.61254900804907 3:1.44834310112208 4:1.67564410736848 5:1.68822680282143 6:0.809951508430173 7:8.25142251945046 8:10.8927906446086 9:2.90614373198033 10:2.17662783761553 13:0.844904909906825 25:0.157785504911465
+1 1:10.6462786900203 2:2.94023523863554 3:0.658337773237307 4:0.959556881997333 5:0.327309278098032 6:1.78112254788015 7:7.4333935627808 8:11.6422945880449 9:4.02389132120354 10:0.965130704857191 13:0.844904909906825 37:0.418600747852556
+2 1:9.9641678694285 2:0.787563010348804 3:0.395002663942384 4:0.143217445074229 6:1.00200186609918 7:8.00245718481187 8:11.6922615176074 9:3.60163112083033 10:1.13484979963354 11:0.884425570049315 37:0.418600747852556
+2 1:9.41914794905372 2:0.743809509773871 3:1.44834310112208 4:1.0025221155196 5:0.068907216441691 6:2.10356160991976 7:8.39368842495823 8:11.0926583628583 9:2.88130489666426 10:2.03428279038376 11:0.884425570049315 26:0.228914278114955
+2 1:8.79053601635152 2:2.74771983610583 3:3.423356420834 4:0.286434890148457 5:0.534030927423105 6:1.5036451080373 7:5.08600612190266 8:10.5430221376716 9:5.04228356916246 10:1.82780426033327 13:0.844904909906825 38:0.217872335165298
+1 1:9.92070002301824 2:2.47644813254124 3:2.23834842900684 4:1.0025221155196 5:0.568484535643951 6:2.54868166966766 7:6.08186746045702 8:11.8921292358571 9:5.11680007511067 10:0.507593053040776 11:0.884425570049315 43:0.715678085420547
+3 1:8.64007039416216 2:1.41761341862785 3:1.58001065576954 4:1.4369483655781 5:1.37814432883382 6:0.567158748567678 7:8.25142251945046 8:12.1419638836692 9:3.50227577956604 10:1.11920748675092 13:0.844904909906825 16:0.125988157669742
+6 1:8.1819861666079 2:0.157512602069761 3:1.31667554647461 6:0.225450419872316 7:7.54009299191163 8:10.942757574171 9:3.55195345019819 10:0.990158405469372 14:0.296673189340406 20:0.129459555600631
+2 1:10.0377288402766 2:0.778812310233817 3:1.711678210417 4:0.907043818803449 5:0.344536082208455 6:2.58336634964802 7:8.535954330466 8:10.8927906446086 9:2.63291654350355 10:2.05148933455463 11:0.884425570049315 43:0.715678085420547
+2 1:9.84713905217011 2:3.07149574036034 3:1.31667554647461 4:2.89776630533523 5:0.671845360306487 6:3.58472590685868 7:7.21999470451915 8:11.1925922219831 9:3.94937481525532 10:1.50244415237493 11:0.884425570049315 43:0.715678085420547
+2 1:10.4523452214206 2:1.06758541402838 3:2.23834842900684 4:3.97189714339194 5:1.34369072061297 6:1.87682657227039 7:8.78491966510459 8:11.1925922219831 9:2.48388353160712 10:2.13048301461182 13:0.844904909906825 47:1.05184741228156
+1 1:11.1612054859572 2:0.848817911153711 3:2.63335109294923 4:2.22464431348635 5:0.913020617852405 6:1.04310963496479 7:8.82048614148153 8:10.3431544194219 9:1.96226798996963 10:1.616633036418 11:0.884425570049315 52:0.77919372247398
+2 1:11.050864029685 2:1.47886831943275 3:2.63335109294923 4:3.81435795381029 5:2.04998968914031 6:1.57815293910621 7:8.21585604307352 8:12.1919308132316 9:3.37808160298569 10:1.36479179900794 13:0.844904909906825 47:1.05184741228156
+1 1:10.1112898111248 2:2.633960734611 3:3.81835908477638 4:1.46081793975713 5:-1.3609175247234 6:0.685985892944825 7:4.55250897624853 8:10.6429559967965 9:5.46454376953567 10:2.19696284436293 11:0.884425570049315 43:0.715678085420547
+2 1:10.1146334916179 2:0.192515402529708 3:0.526670218589846 4:0.606287184147568 5:0.0344536082208455 6:2.91865158945813 7:7.71792537379634 8:11.4923937993577 9:3.72582529741068 10:0.57485499843601 11:0.884425570049315 43:0.715678085420547
+1 1:10.395502653038 2:1.26010081655809 3:1.97501331971192 4:1.90956593432305 5:1.46427834938593 6:2.24936572761496 7:8.535954330466 8:11.7921953767322 9:2.98066023792855 10:2.1758457219714 11:0.884425570049315 44:0.445904036039959
+2 1:9.90398162055276 2:3.0277422397854 3:0.790005327884769 4:2.47288788494835 5:0.775206184969023 6:3.56417202242587 7:7.4333935627808 8:11.5423607289201 9:3.9742136505714 10:1.96623872934439 11:0.884425570049315 44:0.445904036039959
+1 1:10.154757657535 2:2.51145093300119 3:1.44834310112208 4:0.143217445074229 5:-0.0344536082208455 6:2.14788092322799 7:6.68649755886503 8:11.9420961654195 9:4.7442175453696 10:0.865802018052602 13:0.844904909906825 46:0.674199862463242
+2 1:9.87388849611489 2:1.30385431713302 3:1.97501331971192 4:0.572869780296915 5:0.18949484521465 6:0.991724923882781 7:8.46482137771211 8:11.8921292358571 9:3.12969324982497 10:0.757087943518445 11:0.884425570049315 43:0.715678085420547
+1 1:11.1478307639848 2:1.07633611414337 3:0.92167288253223 4:2.23896605799378 5:2.13612370969242 6:0.975667201669653 7:8.21585604307352 8:11.7422284471698 9:3.40292043830176 10:2.18444899405684 11:0.884425570049315 43:0.715678085420547
+2 1:10.6663407729788 2:2.61645933438103 3:3.02835375689161 4:1.71860934089075 5:2.23948453435496 6:1.00842495498443 7:5.37053793291819 8:11.2425591515455 9:5.2658330870071 10:1.77383828088826 13:0.844904909906825 46:0.674199862463242
+2 1:9.95079314745611 2:2.46769743242625 3:1.44834310112208 4:1.63267887384621 5:1.55041236993805 6:2.43948915861839 7:6.72206403524197 8:12.0420300245443 9:4.7442175453696 10:0.714853698735391 11:0.884425570049315 43:0.715678085420547
+1 1:9.53952044680521 2:2.7652212363358 3:3.95002663942384 4:0.730408969878567 5:1.37814432883382 6:0.423923866426577 7:4.55250897624853 8:9.94341898292251 9:5.06712240447853 10:0.860327208543688 13:0.844904909906825 47:1.05184741228156
+2 1:9.28205704883675 2:2.03016242667692 3:2.37001598365431 4:1.47513968426456 5:1.15419587539832 6:2.39260060975606 7:6.72206403524197 8:12.6416331792934 9:4.9180893925821 10:1.41093662201165 13:0.844904909906825 40:0.0798086884467622
+1 1:10.0343851597835 2:2.98398873921047 3:1.58001065576954 4:1.72815717056236 5:1.10251546306706 6:0.138738719921425 7:6.89989641712668 8:11.0926583628583 9:4.12324666246782 10:0.613960780642541 13:0.844904909906825 47:1.05184741228156
+1 1:9.87388849611489 2:1.21634731598315 3:2.63335109294923 4:1.11709607157898 5:0.654618556196064 6:1.2428676992961 7:8.74935318872765 8:11.4424268697952 9:2.50872236692319 10:1.20524020760529 13:0.844904909906825 45:0.433012701892219
+1 1:9.98088627189398 2:0.0700056009198937 3:2.63335109294923 4:3.46586217079634 5:3.66930927552004 6:0.509350948600418 7:6.8287634643728 8:9.74355126467281 9:3.37808160298569 10:1.05429188828808 13:0.844904909906825 38:0.217872335165298
+2 1:10.8569305610853 2:1.27760221678806 3:0.92167288253223 4:0.405782761043648 5:0.103360824662536 6:3.50700653134714 7:8.18028956669658 8:11.9420961654195 9:3.52711461488211 10:0.535749216229478 11:0.884425570049315 52:0.77919372247398
+2 1:10.5392809142412 2:2.29268343012652 3:0.658337773237307 4:1.82363546727851 5:0.671845360306487 6:0.599916501882459 7:7.36226061002692 8:12.0919969541068 9:4.29711850968032 10:0.93853877295675 13:0.844904909906825 37:0.418600747852556
+3 1:8.57988414528642 2:1.67138372196246 3:2.50168353830177 4:0.319852293999111 5:0.327309278098032 6:0.958324861679475 7:7.6823588974194 8:12.5416993201686 9:4.02389132120354 10:0.620217705795586 13:0.844904909906825 17:0.119629720910916
+2 1:9.8605137741425 2:3.00149013944044 3:2.63335109294923 4:0.286434890148457 5:0.344536082208455 6:2.79340135619573 7:6.25969984234173 8:10.2432205602971 9:4.12324666246782 10:4.32275316510997 11:0.884425570049315 34:0.169841555121689
+1 1:10.3219416821899 2:2.83522683725569 3:1.05334043717969 4:0.959556881997333 5:0.0344536082208455 6:0.245361995416595 7:7.11329527538833 8:11.5423607289201 9:4.24744083904818 10:0.557648454265136 12:0.260796291926003 37:0.418600747852556
+2 1:9.83376433019773 2:0.218767502874668 3:2.10668087435938 4:2.71635754157454 5:2.51511340012172 6:1.9025189278114 7:7.46896003915775 8:10.1932536307346 9:3.12969324982497 10:0.872841058849778 13:0.844904909906825 24:0.280975743474508
+1 1:11.6794759623872 2:0.288773103794562 3:2.10668087435938 4:3.03620983557365 5:1.39537113294424 6:1.73808785234897 7:7.64679242104245 8:10.2432205602971 9:3.00549907324462 10:1.41719354716469 11:0.884425570049315
+1 1:11.3451079130775 2:0.787563010348804 3:1.18500799182715 4:1.90956593432305 5:0.516804123312682 6:0.449616221967582 7:8.28698899582741 8:11.3424930106704 9:3.1048544145089 10:0.527145944144041 12:0.260796291926003
+1 1:10.3286290431761 2:2.41519323173633 3:1.711678210417 4:0.907043818803449 5:-0.0344536082208455 6:1.14459443935176 7:6.54423165335726 8:12.0919969541068 9:4.9180893925821 10:0.793847378792585 13:0.844904909906825 37:0.418600747852556
+1 1:11.4955735352668 2:0.805064410578777 3:2.23834842900684 4:2.37263567339639 5:2.4978865960113 6:1.52484130135863 7:8.67822023597376 8:10.592989067234 9:2.28517284907855 10:1.86299946431915 11:0.884425570049315
+2 1:9.94744946696302 2:1.02383191345345 3:1.58001065576954 4:1.74725282990559 5:0.172268041104227 6:3.65281064904234 7:8.535954330466 8:11.4424268697952 9:2.9309825672964 10:2.95952559739029 11:0.884425570049315 43:0.715678085420547
+1 1:10.3052232797244 2:2.71271703564588 3:2.50168353830177 4:0.716087225371144 5:0.49957731920226 6:2.3116696898019 7:5.86846860219537 8:11.1925922219831 9:4.89325055726603 10:0.520889018990996 11:0.884425570049315 43:0.715678085420547
+2 1:9.45927211497088 2:1.03258261356843 3:1.44834310112208 4:1.15528739026545 5:0.568484535643951 6:0.535685613029948 7:8.535954330466 8:11.4923937993577 9:2.9309825672964 10:0.43798476071315 11:0.884425570049315 44:0.445904036039959
+2 1:9.39239850510895 2:2.8964817380606 3:0.658337773237307 4:0.907043818803449 5:0.0861340205521137 6:1.47538351694219 7:7.39782708640386 8:11.6922615176074 9:4.07356899183568 10:1.88646293364307 11:0.884425570049315 26:0.228914278114955
+2 1:9.9675115499216 2:3.07149574036034 3:2.37001598365431 4:3.97189714339194 5:3.15250515220736 6:1.91729203224747 7:6.54423165335726 8:10.2931874898595 9:3.92453597993925 10:0.736752936771049 13:0.844904909906825 24:0.280975743474508
+2 1:9.17171559256456 2:0.393781505174402 3:2.50168353830177 4:0.572869780296915 5:0.3789896904293 6:1.59999144131607 7:7.89575775568105 8:9.79351819423523 9:2.53356120223927 10:3.31929879369037 11:0.884425570049315 26:0.228914278114955
+1 1:9.53283308581901 2:2.24892992955158 3:3.02835375689161 4:0.405782761043648 5:0.516804123312682 6:0.439981588639705 7:5.69063622031066 8:12.2918646723565 9:5.46454376953567 10:1.36400968336381 13:0.844904909906825 27:0.184010991918219
+1 1:10.362065848107 2:0.297523803909548 3:1.18500799182715 4:0.143217445074229 6:1.52098744802748 7:7.78905832655022 8:11.0426914332958 9:3.40292043830176 10:1.00814706528438 11:0.884425570049315 43:0.715678085420547
+3 1:8.97109476297875 2:1.20759661586817 3:0.790005327884769 4:0.572869780296915 5:-0.155041236993805 6:1.17670988377801 7:8.14472309031964 8:11.8921292358571 9:3.55195345019819 10:0.140780815943513 13:0.844904909906825 18:0.154303349962092
+2 1:10.4222520969828 2:3.00149013944044 3:3.29168886618654 4:3.93370582470548 5:5.99492783042711 6:0.63138963742019 7:5.69063622031066 8:9.64361740554796 9:4.12324666246782 10:1.27641273122118 13:0.844904909906825 47:1.05184741228156
+1 1:10.3888152920518 2:2.85272823748567 3:0.395002663942384 4:1.77112240408463 5:0.3789896904293 6:0.847847732853155 7:7.50452651553469 8:11.7422284471698 9:4.04873015651961 10:1.03239265025243 12:0.260796291926003 37:0.418600747852556
+6 1:8.11511255674596 2:0.175014002299734 3:3.81835908477638 4:1.57539189581652 5:2.70460824533637 6:0.497147079718441 7:6.5797981297342 8:8.24454337780007 9:2.53356120223927 10:0.557648454265136 14:0.296673189340406 24:0.280975743474508
+2 1:9.61976877863953 2:1.08508681425835 3:1.711678210417 4:0.716087225371144 5:0.292855669877187 6:1.97381521443768 7:8.57152080684294 8:11.5423607289201 9:2.90614373198033 10:2.09137723240529 11:0.884425570049315 43:0.715678085420547
+7 1:11.5825092280874 2:0.997579813108485 3:3.16002131153908 4:2.05278337939728 5:1.15419587539832 6:1.46446426583727 7:8.99831852336624 8:10.3931213489843 9:1.68904080149284 10:2.73896898574545 11:0.884425570049315
+2 1:10.4590325824068 2:2.80897473691073 3:1.84334576506446 4:0.916591648475064 5:0.310082473987609 6:1.240298463742 7:6.54423165335726 8:11.292526081108 9:4.52066802752496 10:2.11093012350856 13:0.844904909906825 46:0.674199862463242
+1 1:9.67326766652908 2:3.07149574036034 3:1.18500799182715 4:2.0050442310392 5:1.67099999871101 6:0.714889792928455 7:7.29112765727304 8:11.292526081108 9:3.94937481525532 10:2.22746535448402 13:0.844904909906825 46:0.674199862463242
+1 1:11.465480410829 2:2.88773103794561 3:1.84334576506446 4:3.93847973954129 5:0.585711339754373 6:1.54154133246028 7:6.65093108248809 8:11.0926583628583 9:4.34679618031246 10:1.0699342011707 13:0.844904909906825 46:0.674199862463242
+2 1:9.80367120575985 2:1.34760781770795 3:2.10668087435938 4:1.03116560453445 5:0.844113401410714 6:3.53334119577667 7:8.42925490133517 8:11.9420961654195 9:3.15453208514105 10:3.14097642682859 11:0.884425570049315 43:0.715678085420547
+1 1:10.395502653038 2:0.787563010348804 3:0.131667554647461 4:3.0075663465588 5:0.947474226073251 6:1.51713359469633 7:7.8601912793041 8:11.7921953767322 9:3.75066413272675 10:1.74411788641129 13:0.844904909906825 46:0.674199862463242
+2 1:8.67016351860003 2:1.03258261356843 3:3.423356420834 4:0.859304670445373 5:1.82604123570481 6:0.499716315272541 7:8.99831852336624 8:10.2931874898595 9:1.56484662491249 10:0.822785657625418 14:0.296673189340406 18:0.154303349962092
+2 1:10.6496223705133 2:2.94023523863554 3:2.10668087435938 4:1.04071343420606 5:0.723525772637755 6:0.462462399738084 7:6.54423165335726 8:10.8428237150461 9:4.27227967436425 10:1.43596432262383 11:0.884425570049315 43:0.715678085420547
+2 1:9.74014127639101 2:0.980078412878512 3:1.44834310112208 4:0.405782761043648 5:0.292855669877187 6:2.89295923391713 7:8.50038785408906 8:11.3924599402328 9:2.95582140261248 10:4.90542931998728 11:0.884425570049315 43:0.715678085420547
+2 1:9.34893065869869 2:1.89890192495212 3:3.02835375689161 4:1.29850483533967 5:1.7399072151527 6:0.951901772794223 7:6.72206403524197 8:12.6916001088559 9:4.79389521600175 10:1.06133092908526 13:0.844904909906825 47:1.05184741228156
+1 1:11.1010192370814 3:0.92167288253223 4:2.00981814587501 5:1.17142267950875 6:2.97453246275982 7:7.46896003915775 8:11.3924599402328 9:3.85001947399104 10:0.748484671433008 13:0.844904909906825 53:1
+2 1:9.66323662504979 2:2.66021283495596 3:2.89668620224415 4:0.639704587998222 5:0.861340205521137 6:3.7080492134555 7:5.51280383842596 8:11.1426252924207 9:5.11680007511067 10:3.64622313293697 11:0.884425570049315 38:0.217872335165298
+2 1:10.6161855655824 2:0.743809509773871 3:0.395002663942384 4:0.429652335222686 6:3.34514469143881 7:7.93132423205799 8:11.6922615176074 9:3.65130879146247 10:2.24780036123142 11:0.884425570049315 37:0.418600747852556
+1 1:10.7465891048132 2:0.061254900804907 3:1.44834310112208 4:4.92668011055347 5:3.37645360564286 6:2.62511642740215 7:7.36226061002692 8:10.8927906446086 9:3.67614762677854 10:1.83640753241871 11:0.884425570049315 37:0.418600747852556
+1 1:11.1846112494088 2:2.8964817380606 3:2.37001598365431 4:2.24373997282958 5:2.03276288502988 6:1.18313297266327 7:6.25969984234173 8:10.7428898559213 9:4.42131268626068 10:2.33774366030644 11:0.884425570049315 53:1
+2 1:9.31549385376772 2:0.568795507474136 3:3.68669153012892 4:1.27940917599644 5:0.930247421962828 6:0.738655221803885 7:8.28698899582741 8:8.49437802561219 9:1.26678060111963 10:1.47819856740688 13:0.844904909906825 47:1.05184741228156
+2 1:9.5462078077914 2:0.805064410578777 3:3.423356420834 4:0.143217445074229 5:0.18949484521465 6:0.542751010803724 7:8.85605261785847 8:9.54368354642311 9:1.34129710706785 10:1.29831196925684 13:0.844904909906825 47:1.05184741228156
+1 1:9.07140517777165 2:0.971327712763525 3:1.31667554647461 4:0.515582802267224 5:0.241175257545918 6:1.39573721476508 7:8.42925490133517 8:11.4424268697952 9:3.03033790856069 10:5.45916719603176 11:0.884425570049315 26:0.228914278114955
+1 1:10.569374038679 2:1.45261621908779 3:2.10668087435938 4:0.286434890148457 5:0.206721649325073 6:0.93006327058437 7:8.25142251945046 8:12.1919308132316 9:3.4525981089339 10:0.51228574690556 13:0.844904909906825 49:0.210818510677892
+2 1:9.98422995238708 2:2.8964817380606 3:2.63335109294923 4:0.515582802267224 5:0.637391752085641 6:0.925567108364694 7:6.04630098408008 8:10.592989067234 9:4.44615152157675 10:1.00267225577546 13:0.844904909906825 46:0.674199862463242
+2 1:9.90398162055276 3:1.31667554647461 4:0.286434890148457 5:0.172268041104227 6:2.90066694057943 7:7.29112765727304 8:11.0426914332958 9:3.8003418033589 10:4.21716755315233 11:0.884425570049315 34:0.169841555121689
+2 1:8.66013247712074 2:1.47011761931777 3:0.790005327884769 4:1.03116560453445 5:-0.068907216441691 6:0.104054039941069 7:8.00245718481187 8:12.0919969541068 9:3.77550296804283 10:4.72476060619311 11:0.884425570049315 43:0.715678085420547
+1 1:10.739901743827 2:0.472537806209282 3:0.263335109294923 4:0.143217445074229 5:0.0172268041104227 6:3.42992946472413 7:7.82462480292716 8:11.6922615176074 9:3.72582529741068 10:0.629603093525153 11:0.884425570049315 36:0.258530551913103
+6 1:7.57677999735738 2:2.74771983610583 3:4.21336174871877 4:0.773374203400835 5:1.7399072151527 6:0.87867855950236 7:4.30354364160994 8:9.89345205336008 9:5.16647774574281 10:0.577201345368401 14:0.296673189340406 24:0.280975743474508
+1 1:10.8870236855232 2:0.236268903104641 3:1.711678210417 4:0.453521909401724 5:0.3789896904293 6:1.1099097593714 7:7.61122594466551 8:10.592989067234 9:3.25388742640533 10:1.82467579775675 11:0.884425570049315 53:1
+2 1:10.5860924411445 2:1.78514282345729 3:2.10668087435938 4:2.22464431348635 5:1.41259793705466 6:0.177919562121457 7:7.46896003915775 8:12.6416331792934 9:4.32195734499639 10:1.67920228794845 13:0.844904909906825 37:0.418600747852556
+2 1:9.15834087059217 2:0.061254900804907 3:1.44834310112208 4:1.86182678596497 5:-0.137814432883382 6:0.978878746112278 7:7.32669413364998 8:10.8428237150461 9:3.67614762677854 10:1.53685724071668 11:0.884425570049315 44:0.445904036039959
+2 1:9.87723217660798 2:0.393781505174402 3:1.18500799182715 4:0.319852293999111 5:0.155041236993805 6:2.52106238746108 7:7.93132423205799 8:10.9927245037334 9:3.2787262617214 10:1.61976149899452 11:0.884425570049315 37:0.418600747852556
+2 1:9.15834087059217 2:0.446285705864322 3:0.395002663942384 6:0.887028575053187 7:7.8601912793041 8:11.5923276584825 9:3.67614762677854 10:2.00456239590679 11:0.884425570049315 37:0.418600747852556
+1 1:11.398606800967 2:2.22267782920662 3:2.76501864759669 4:1.67564410736848 5:1.70545360693185 6:2.34121589867405 7:5.9751680313262 8:12.3917985314813 9:5.34034959295531 10:0.69999350149691 11:0.884425570049315 53:1
+2 1:10.947209934399 2:2.17892432863169 3:1.58001065576954 4:3.04575766524526 5:2.61847422478426 6:2.34956591422488 7:6.89989641712668 8:12.4417654610437 9:4.79389521600175 10:1.60724764868843 13:0.844904909906825 47:1.05184741228156
+1 1:10.8769926440439 2:1.89015122483713 3:1.711678210417 4:1.72338325572655 5:0.18949484521465 6:2.05795767883448 7:7.32669413364998 8:12.591666249731 9:4.49582919220889 10:1.23496060208226 13:0.844904909906825 37:0.418600747852556
+2 1:9.46595947595708 2:0.848817911153711 3:1.711678210417 4:1.01206994519122 5:1.30923711239213 6:2.37911212309703 7:8.57152080684294 8:10.9927245037334 9:2.63291654350355 10:4.42677454577934 11:0.884425570049315 26:0.228914278114955
+2 1:10.2450370308486 2:1.94265542552705 3:0.790005327884769 4:0.716087225371144 5:0.430670102760569 6:2.04254226550987 7:7.57565946828857 8:12.2918646723565 9:4.22260200373211 10:1.02848207203177 13:0.844904909906825 46:0.674199862463242
+1 1:10.739901743827 2:0.980078412878512 3:0.526670218589846 4:0.20050442310392 5:-0.0516804123312682 6:3.02912871828445 7:8.07359013756576 8:11.7422284471698 9:3.52711461488211 10:1.40780815943513 11:0.884425570049315 36:0.258530551913103
+2 1:9.66323662504979 2:0.297523803909548 3:1.84334576506446 6:1.13688673268946 7:7.71792537379634 8:10.3431544194219 9:3.03033790856069 10:1.08010170454439 13:0.844904909906825 45:0.433012701892219
+1 1:10.7800259097441 2:0.341277304484482 3:1.18500799182715 4:4.12466241813779 5:0.964701030183674 6:2.52491624079224 7:7.8601912793041 8:10.9927245037334 9:3.32840393235354 10:1.78478789990609 11:0.884425570049315 37:0.418600747852556
+2 1:8.58991518676571 2:0.0787563010348804 3:2.23834842900684 4:0.572869780296915 5:0.310082473987609 6:0.956397935013899 7:7.04216232263445 8:10.1432867011722 9:3.4525981089339 10:1.14188884043071 13:0.844904909906825 24:0.280975743474508
+1 1:10.9271478514404 2:2.79147333668076 3:0.526670218589846 4:2.32967043987412 5:0.551257731533528 6:3.85963411114743 7:7.39782708640386 8:11.7422284471698 9:4.12324666246782 10:0.653848678493203 11:0.884425570049315 36:0.258530551913103
+1 1:11.1478307639848 2:1.37385991805291 3:3.29168886618654 4:2.86434890148458 5:2.99746391521356 6:1.03540192830249 7:8.46482137771211 8:11.6922615176074 9:2.75711072008391 10:0.936974541668489 12:0.260796291926003 47:1.05184741228156
+2 1:9.49270891990185 2:0.883820711613658 3:1.31667554647461 4:0.716087225371144 5:0.310082473987609 6:1.65330307906365 7:8.39368842495823 8:11.3424930106704 9:3.00549907324462 10:2.18132053148031 11:0.884425570049315 43:0.715678085420547
+2 1:9.16168455108527 2:0.210016802759681 3:1.97501331971192 4:1.57539189581652 5:1.55041236993805 6:0.797747639548195 7:7.50452651553469 8:10.3931213489843 9:3.22904859108926 10:1.71517960757846 11:0.884425570049315 26:0.228914278114955
+2 1:10.2650991138072 2:2.33643693070145 3:1.31667554647461 4:0.515582802267224 5:0.172268041104227 6:3.59564515796361 7:6.86432994074974 8:12.1919308132316 9:4.71937871005353 10:1.68233075052497 11:0.884425570049315 36:0.258530551913103
+5 1:9.15499719009907 2:0.971327712763525 3:3.02835375689161 4:1.47513968426456 5:2.10167010147157 6:0.965390259453251 7:8.9627520469893 8:10.3931213489843 9:1.73871847212499 10:0.645245406407766 11:0.884425570049315 44:0.445904036039959
+2 1:10.2784738357796 2:1.5138711198927 3:1.18500799182715 4:1.0025221155196 5:0.413443298650146 6:0.198473446554261 7:8.03802366118881 8:12.241897742794 9:3.75066413272675 10:0.945577813753926 13:0.844904909906825 36:0.258530551913103
+2 1:10.7633075072786 2:1.42636411874283 3:1.18500799182715 4:3.6281752752138 5:0.602938143864796 6:0.791966859551469 7:8.14472309031964 8:12.1419638836692 9:3.6264699561464 10:1.7417715394789 13:0.844904909906825 46:0.674199862463242
+2 1:10.1681323795074 2:2.39769183150636 3:1.31667554647461 4:2.56359226682869 5:0.861340205521137 6:3.79026475118672 7:6.86432994074974 8:12.1419638836692 9:4.69453987473746 10:3.53359848018216 11:0.884425570049315 43:0.715678085420547
+1 1:10.1781634209867 2:2.84397753737068 3:1.711678210417 4:0.453521909401724 5:0.241175257545918 6:2.23009646095921 7:6.65093108248809 8:11.2425591515455 9:4.42131268626068 10:0.296421829125507 11:0.884425570049315 33:0.0483368244522832
+2 1:9.90398162055276 2:0.157512602069761 3:0.658337773237307 4:1.67087019253267 5:0.740752576748178 6:3.05160952938283 7:7.6823588974194 8:11.4923937993577 9:3.75066413272675 10:4.32275316510997 11:0.884425570049315 26:0.228914278114955
+2 1:9.90732530104586 2:2.87022963771564 3:1.58001065576954 4:0.143217445074229 5:0.120587628772959 6:1.41115262808968 7:6.8287634643728 8:11.292526081108 9:4.32195734499639 10:0.740663514991702 11:0.884425570049315 34:0.169841555121689
+1 1:10.1447266160557 2:2.62521003449601 3:1.84334576506446 4:0.20050442310392 5:0.0172268041104227 6:1.85563037894906 7:6.4019657478495 8:11.6922615176074 9:4.81873405131782 10:1.34367467661641 13:0.844904909906825 38:0.217872335165298
+2 1:8.72031872599649 2:2.95773663886551 3:4.74003196730861 4:1.28895700566806 5:2.96301030699271 6:0.551743335243076 7:4.30354364160994 8:8.29451030736249 9:4.22260200373211 10:1.29596562232445 13:0.844904909906825 27:0.184010991918219
+1 1:11.0241145857402 2:2.84397753737068 3:1.97501331971192 4:1.15528739026545 5:-0.585711339754373 6:0.934559432804045 7:6.47309870060338 8:11.1426252924207 9:4.47099035689282 10:1.49931568979841 12:0.260796291926003 37:0.418600747852556
+2 1:9.93407474499063 2:0.56004480735915 3:1.711678210417 4:0.916591648475064 5:-0.3789896904293 6:0.368042993124892 7:8.25142251945046 8:10.592989067234 9:2.73227188476783 10:1.6752917097278 11:0.884425570049315 43:0.715678085420547
+6 1:6.99832327205163 2:2.62521003449601 3:3.29168886618654 4:0.572869780296915 5:0.930247421962828 6:0.293535162055979 7:5.05043964552571 8:10.9927245037334 9:5.31551075763924 10:0.497425549667078 14:0.296673189340406 24:0.280975743474508
+3 1:8.01145846145996 2:1.93390472541206 3:2.76501864759669 4:0.143217445074229 5:0.103360824662536 6:0.363546830905216 7:6.75763051161891 8:12.6916001088559 9:4.81873405131782 10:0.430945719915974 13:0.844904909906825 28:0.0475651494154494
+2 1:9.55958252976379 2:1.05008401379841 3:2.89668620224415 4:0.716087225371144 5:1.01638144251494 6:1.55952598133898 7:8.92718557061235 8:10.7428898559213 9:2.01194566060177 10:1.35384217999011 13:0.844904909906825 27:0.184010991918219
+3 1:7.94792853209112 2:2.61645933438103 3:2.63335109294923 4:1.35101789853356 5:1.49873195760678 6:0.518343273039769 7:5.69063622031066 8:11.3924599402328 9:5.14163891042674 10:0.341784536485083 14:0.296673189340406 20:0.129459555600631
+2 1:10.5259061922688 2:2.45894673231127 3:1.58001065576954 4:2.86434890148458 5:1.84326803981523 6:0.620470386315263 7:6.5797981297342 8:12.0420300245443 9:4.84357288663389 10:0.957309548415885 13:0.844904909906825 46:0.674199862463242
+6 1:8.32242074731797 2:2.33643693070145 3:1.05334043717969 6:0.758566797348163 7:7.11329527538833 8:12.1919308132316 9:4.54550686284103 10:0.808707576031066 13:0.844904909906825 18:0.154303349962092
+5 1:9.40911690757443 2:0.420033605519362 3:2.23834842900684 4:0.572869780296915 5:0.49957731920226 6:1.30774089703714 7:7.96689070843493 8:10.0433528420474 9:2.60807770818748 10:1.60099072353539 13:0.844904909906825 47:1.05184741228156
+2 1:9.9675115499216 2:0.577546207589123 3:1.05334043717969 4:1.23167002763837 5:0.620164947975219 6:2.64374338516938 7:8.14472309031964 8:11.1925922219831 9:3.17937092045712 10:1.50791896188385 11:0.884425570049315 43:0.715678085420547
+2 1:9.36899274165727 2:1.58387672081259 3:2.63335109294923 4:0.591965439640145 5:0.413443298650146 6:2.40480447863804 7:7.93132423205799 8:12.3917985314813 9:3.70098646209461 10:1.06054881344113 11:0.884425570049315 44:0.445904036039959
+2 1:9.53617676631211 2:1.40011201839787 3:0.658337773237307 4:0.959556881997333 5:0.155041236993805 6:1.97253059666063 7:8.00245718481187 8:12.0420300245443 9:3.72582529741068 10:1.66199574377758 11:0.884425570049315 26:0.228914278114955
+3 1:9.02793733136139 2:1.43511481885782 3:0.92167288253223 4:0.959556881997333 5:0.275628865766764 6:0.616616532984112 7:8.07359013756576 8:12.0919969541068 9:3.70098646209461 10:0.352734155502912 13:0.844904909906825 16:0.125988157669742
+1 1:10.6128418850893 2:2.28393273001153 3:3.16002131153908 4:0.405782761043648 5:0.310082473987609 6:0.449616221967582 7:5.51280383842596 8:12.1919308132316 9:5.56389911079995 10:1.67920228794845 12:0.260796291926003 37:0.418600747852556
+7 1:11.3785447180085 2:1.06758541402838 3:1.31667554647461 4:0.907043818803449 5:0.568484535643951 6:1.64045690129315 7:8.46482137771211 8:11.5923276584825 9:3.08001557919283 10:0.894740296885435 13:0.844904909906825 53:1
+2 1:9.07809253875785 2:0.69130530908395 3:0.263335109294923 4:0.835435096266334 5:0.585711339754373 6:1.4907989302668 7:7.89575775568105 8:11.6922615176074 9:3.67614762677854 10:3.81594222771332 11:0.884425570049315 26:0.228914278114955
+2 1:10.0042920353457 2:0.787563010348804 3:1.58001065576954 4:0.916591648475064 5:0.981927834294096 6:2.45554688083152 7:8.50038785408906 8:10.9927245037334 9:2.73227188476783 10:0.824349888913679 11:0.884425570049315 43:0.715678085420547
+2 1:8.36254491323513 3:0.790005327884769 4:1.08845258256414 5:0.534030927423105 6:0.650016595187418 7:7.50452651553469 8:11.3924599402328 9:3.85001947399104 10:0.727367549041481 13:0.844904909906825 18:0.154303349962092
+1 1:9.80032752526676 2:1.22509801609814 3:0.526670218589846 4:0.515582802267224 5:0.275628865766764 6:0.738655221803885 7:8.03802366118881 8:11.8921292358571 9:3.65130879146247 10:0.267483550292674 13:0.844904909906825 46:0.674199862463242
+6 1:7.85430547828441 2:2.55520443357612 3:4.34502930336623 4:0.20050442310392 5:0.292855669877187 6:0.150300279914877 7:4.01901183059441 8:10.6929229263589 9:5.76260979332852 10:0.201785836185701 13:0.844904909906825 28:0.0475651494154494
+2 1:9.9608241889354 2:2.87022963771564 3:1.18500799182715 4:0.143217445074229 5:0.206721649325073 6:2.7208204517924 7:7.04216232263445 8:11.4923937993577 9:4.24744083904818 10:0.86267355547608 11:0.884425570049315 43:0.715678085420547
+1 1:10.8569305610853 2:0.245019603219628 3:2.10668087435938 4:3.67114050873606 5:1.91217525625692 6:1.44904885251266 7:7.54009299191163 8:10.1932536307346 9:3.08001557919283 10:1.78557001555022 13:0.844904909906825 52:0.77919372247398
+2 1:9.79364016428056 2:0.883820711613658 3:0.526670218589846 4:0.286434890148457 5:0.0516804123312682 6:2.56602400965784 7:8.03802366118881 8:11.6922615176074 9:3.57679228551426 10:3.95124823414792 11:0.884425570049315 43:0.715678085420547
+1 1:10.4924693873378 2:0.516291306784216 3:1.711678210417 4:2.34876609921735 5:0.981927834294096 6:0.810593817318698 7:8.14472309031964 8:10.6429559967965 9:2.85646606134819 10:2.01081932105984 13:0.844904909906825 46:0.674199862463242
+2 1:10.6496223705133 2:1.99515962621697 3:1.84334576506446 4:2.6924879673955 5:1.79158762748397 6:3.84486100671135 7:7.07772879901139 8:12.591666249731 9:4.66970103942139 10:1.86847427382806 11:0.884425570049315 44:0.445904036039959
+2 1:9.97085523041469 2:1.52262182000769 3:0.92167288253223 4:1.63267887384621 5:0.964701030183674 6:3.19548672041246 7:8.00245718481187 8:12.1919308132316 9:3.8003418033589 10:5.00241165985948 11:0.884425570049315 26:0.228914278114955
+2 1:10.1112898111248 2:1.78514282345729 3:1.97501331971192 4:1.22212219796675 5:0.223948453435496 6:3.71639922900633 7:7.50452651553469 8:12.591666249731 9:4.29711850968032 10:1.80590502229761 11:0.884425570049315 43:0.715678085420547
+1 1:10.6663407729788 2:0.708806709313924 3:1.18500799182715 4:1.0025221155196 5:0.49957731920226 6:0.710393630708779 7:8.25142251945046 8:11.2425591515455 9:3.1048544145089 10:1.60959399562083 12:0.260796291926003 37:0.418600747852556
+1 1:10.8937110465094 2:2.16142292840172 3:2.89668620224415 4:3.84777535766095 5:2.82519587410933 6:2.37011979865768 7:6.04630098408008 8:12.4917323906062 9:5.31551075763924 10:1.70422998856063 13:0.844904909906825 45:0.433012701892219
+2 1:9.55623884927069 2:0.910072811958618 3:1.97501331971192 4:1.28895700566806 5:1.06806185484621 6:0.529904833033222 7:8.7137867123507 8:10.942757574171 9:2.45904469629105 10:0.563905379418181 11:0.884425570049315 44:0.445904036039959
+2 1:9.98422995238708 2:2.92273383840556 3:1.44834310112208 4:0.572869780296915 5:0.344536082208455 6:2.68742038958909 7:6.89989641712668 8:11.2425591515455 9:4.22260200373211 10:0.936974541668489 11:0.884425570049315 43:0.715678085420547
+1 1:11.050864029685 2:1.27760221678806 3:1.18500799182715 4:2.0671051239047 5:1.22310309184001 6:0.901159370600739 7:8.28698899582741 8:11.9420961654195 9:3.42775927361783 10:1.69015190696628 13:0.844904909906825 46:0.674199862463242
+2 1:10.4222520969828 2:2.11766942782678 3:1.05334043717969 4:0.959556881997333 5:0.568484535643951 6:3.60206824684886 7:7.29112765727304 8:12.3418316019189 9:4.47099035689282 10:2.17662783761553 11:0.884425570049315 36:0.258530551913103
+1 1:10.8234937561544 2:1.50512041977771 3:2.37001598365431 4:1.72338325572655 5:1.1369690712879 6:2.50757390080206 7:8.14472309031964 8:12.2918646723565 9:3.50227577956604 10:0.557648454265136 13:0.844904909906825 47:1.05184741228156
+2 1:9.47264683694327 2:0.245019603219628 3:1.84334576506446 4:0.835435096266334 5:0.654618556196064 6:2.15815786544439 7:7.61122594466551 8:10.4430882785468 9:3.17937092045712 10:0.682004841681905 13:0.844904909906825 38:0.217872335165298
+4 1:7.63696624623312 2:0.962577012648538 3:1.711678210417 6:0.35519681535439 7:8.60708728321988 8:11.292526081108 9:2.75711072008391 10:0.640552712542982 14:0.296673189340406 18:0.154303349962092
+2 1:8.82062914078939 2:0.568795507474136 3:2.37001598365431 4:0.716087225371144 5:-0.0516804123312682 6:0.234442744311668 7:8.32255547220435 8:10.0433528420474 9:2.31001168439462 10:0.986247827248718 11:0.884425570049315 43:0.715678085420547
+1 1:9.08143621925094 2:1.83764702414721 3:0.658337773237307 4:1.74247891506978 5:0.120587628772959 6:0.599916501882459 7:7.6823588974194 8:12.241897742794 9:4.09840782715175 10:1.4813270299834 11:0.884425570049315 26:0.228914278114955
+1 1:10.3152543212037 2:0.428784305634349 3:1.84334576506446 4:2.02413989038243 5:0.706298968527332 6:2.23908878539856 7:8.00245718481187 8:10.3931213489843 9:2.83162722603212 10:0.531056522364694 11:0.884425570049315 43:0.715678085420547
+1 1:10.051103562249 2:2.42394393185132 3:1.44834310112208 4:0.429652335222686 5:0.241175257545918 6:1.20625609265017 7:6.72206403524197 8:12.0919969541068 9:4.79389521600175 10:1.08166593583265 13:0.844904909906825 37:0.418600747852556
+2 1:10.4122210555035 2:2.93148453852055 3:2.63335109294923 4:0.429652335222686 5:0.602938143864796 6:1.26791774594858 7:6.08186746045702 8:10.4430882785468 9:4.34679618031246 10:1.46412048581253 13:0.844904909906825 37:0.418600747852556
+2 1:8.40266907915229 2:2.633960734611 3:1.84334576506446 4:1.03116560453445 5:0.861340205521137 6:0.122038688819772 7:6.43753222422644 8:11.6422945880449 9:4.76905638068567 10:0.305025101210944 14:0.296673189340406 20:0.129459555600631
+3 1:8.56985310380713 2:0.280022403679575 3:1.58001065576954 4:1.72815717056236 5:-0.534030927423105 6:0.779120681780967 7:7.71792537379634 8:10.6429559967965 9:3.20420975577319 10:0.902561453326741 13:0.844904909906825 18:0.154303349962092
+6 1:7.92452276863945 2:2.65146213484097 3:2.89668620224415 4:1.72815717056236 5:2.56679381245299 6:0.640381961859542 7:5.47723736204901 8:11.1426252924207 9:5.14163891042674 10:0.755523712230184 14:0.296673189340406 24:0.280975743474508
+1 1:10.5225625117757 2:0.437535005749336 3:0.92167288253223 4:0.639704587998222 5:0.206721649325073 6:1.82672647896543 7:7.96689070843493 8:11.1925922219831 9:3.35324276766962 10:0.859545092899557 11:0.884425570049315 37:0.418600747852556
+1 1:10.2851611967658 2:2.64271143472599 3:2.76501864759669 4:0.453521909401724 5:0.155041236993805 6:1.29874857259779 7:5.51280383842596 8:11.2425591515455 9:5.14163891042674 10:2.59584182286955 11:0.884425570049315 43:0.715678085420547
+2 1:10.2851611967658 2:1.41761341862785 3:1.31667554647461 4:0.515582802267224 5:0.310082473987609 6:2.37140441643473 7:8.18028956669658 8:12.1419638836692 9:3.57679228551426 10:0.432509951204236 11:0.884425570049315 43:0.715678085420547
+3 1:6.82779556690369 2:0.306274504024535 3:3.29168886618654 4:1.01206994519122 5:0.465123710981414 6:0.269769733180549 7:7.4333935627808 8:8.89411346211159 9:2.28517284907855 10:0.370722815317916 14:0.296673189340406 20:0.129459555600631
+7 1:11.4387309668842 2:0.822565810808751 3:1.711678210417 4:3.14123596196142 5:4.5478762851516 6:1.03283269274839 7:8.535954330466 8:10.9927245037334 9:2.65775537881962 10:0.703904079717563 13:0.844904909906825
+1 1:10.2450370308486 2:0.603798307934083 3:1.05334043717969 4:3.43721868178149 5:-1.8949484521465 6:0.774624519561291 7:8.14472309031964 8:11.1925922219831 9:3.17937092045712 10:0.657759256713856 11:0.884425570049315 43:0.715678085420547
+2 1:10.6964338974167 2:2.31018483035649 3:2.89668620224415 4:2.24373997282958 5:1.56763917404847 6:3.78769551563262 7:5.69063622031066 8:12.1919308132316 9:5.46454376953567 10:2.21025881031315 11:0.884425570049315 43:0.715678085420547
+2 1:10.2182875869039 2:2.36268903104641 3:3.423356420834 4:1.29850483533967 5:2.23948453435496 6:1.662295403503 7:5.08600612190266 8:11.8921292358571 9:5.68809328738031 10:2.10467319835551 13:0.844904909906825 45:0.433012701892219
+1 1:10.8669616025646 2:0.367529404829442 3:1.58001065576954 4:2.382183503068 5:3.16973195631778 6:0.637170417416916 7:7.89575775568105 8:10.6429559967965 9:3.08001557919283 10:0.423124563474668 11:0.884425570049315 36:0.258530551913103
+7 1:10.8234937561544 2:0.490039206439256 3:0.395002663942384 6:1.99950756997869 7:7.89575775568105 8:11.5923276584825 9:3.6264699561464 10:2.22902958577228 13:0.844904909906825 53:1
+2 1:8.496292132959 2:1.12884031483329 3:1.31667554647461 4:2.86912281632038 5:-0.068907216441691 6:0.585785706334907 7:8.42925490133517 8:11.6922615176074 9:3.15453208514105 10:3.00097772652921 11:0.884425570049315 32:0.0836242010007091
+1 1:10.3720968895863 2:1.05883471391339 3:3.55502397548146 4:0.319852293999111 5:0.327309278098032 6:0.567158748567678 7:8.99831852336624 8:10.3431544194219 9:1.58968546022856 10:0.78837256928367 11:0.884425570049315 43:0.715678085420547
+2 1:10.5927798021307 2:1.8463977242622 3:1.97501331971192 4:1.04071343420606 5:0.740752576748178 6:0.150300279914877 7:7.36226061002692 8:12.6416331792934 9:4.44615152157675 10:2.329140388221 13:0.844904909906825 45:0.433012701892219
+2 1:9.86720113512869 2:2.85272823748567 3:1.31667554647461 4:1.28895700566806 5:0.895793813741983 6:2.10805777213943 7:6.93546289350362 8:11.4424268697952 9:4.29711850968032 10:1.65808516555693 11:0.884425570049315 43:0.715678085420547
+1 1:10.7164959803753 2:0.393781505174402 3:0.790005327884769 4:0.143217445074229 6:1.84920729006381 7:7.89575775568105 8:11.292526081108 9:3.4525981089339 10:2.18288476276858 13:0.844904909906825 53:1
+2 1:8.61666463071048 2:0.350028004599468 3:1.711678210417 4:2.0050442310392 5:-0.723525772637755 6:0.60248573743656 7:7.8601912793041 8:10.592989067234 9:3.08001557919283 10:0.258880278207237 11:0.884425570049315 36:0.258530551913103
+2 1:9.05803045579927 2:1.02383191345345 3:1.97501331971192 4:0.453521909401724 5:0.49957731920226 6:1.3449948125716 7:8.7137867123507 8:11.2425591515455 9:2.60807770818748 10:4.18275446481058 11:0.884425570049315 43:0.715678085420547
+2 1:9.8638574546356 2:1.5138711198927 3:2.76501864759669 4:1.63267887384621 5:0.482350515091837 6:2.98224016942212 7:8.1091566139427 8:12.241897742794 9:3.4525981089339 10:0.355080502435304 11:0.884425570049315 44:0.445904036039959
+2 1:9.26868232686436 2:0.533792707014189 3:2.76501864759669 4:1.01206994519122 5:1.1369690712879 6:1.2428676992961 7:8.25142251945046 8:9.59365047598553 9:2.06162333123391 10:0.962002242280669 13:0.844904909906825 24:0.280975743474508
+1 1:10.2751301552865 2:0.69130530908395 3:1.711678210417 4:0.143217445074229 5:0.103360824662536 6:2.29818120314287 7:8.42925490133517 8:10.7928567854837 9:2.65775537881962 10:2.24388978301076 11:0.884425570049315 37:0.418600747852556
+1 1:10.7934006317165 2:1.15509241517825 3:2.23834842900684 4:2.1291660167702 5:1.11974226717748 6:3.34964085365849 7:8.7137867123507 8:11.4424268697952 9:2.63291654350355 10:1.29205504410379 11:0.884425570049315 44:0.445904036039959
+2 1:9.55289516877759 2:2.93148453852055 3:1.711678210417 4:0.143217445074229 5:0.120587628772959 6:3.8384379178261 7:6.79319698799585 8:11.1426252924207 9:4.24744083904818 10:3.51717405165542 11:0.884425570049315 38:0.217872335165298
+2 1:9.97419891090779 2:1.14634171506326 3:0.526670218589846 4:1.52287883262263 5:0.602938143864796 6:2.50179312080533 7:8.07359013756576 8:11.8421623062946 9:3.60163112083033 10:1.84266445757175 11:0.884425570049315 43:0.715678085420547
+2 1:10.0444162012628 2:2.98398873921047 3:1.44834310112208 4:2.70203579706712 5:0.241175257545918 6:2.55060859633324 7:7.0065958462575 8:11.1925922219831 9:4.09840782715175 10:3.58912869091544 11:0.884425570049315 43:0.715678085420547
+2 1:10.3687532090932 2:0.490039206439256 3:1.44834310112208 4:4.1294363329736 5:4.51342267693076 6:0.566516439679153 7:8.07359013756576 8:10.8927906446086 9:3.05517674387676 10:1.11451479288614 11:0.884425570049315 44:0.445904036039959
+1 1:10.221631267397 2:0.350028004599468 3:2.10668087435938 4:0.143217445074229 5:0.0516804123312682 6:2.30524660091665 7:7.82462480292716 8:10.0933197716098 9:2.78194955539998 10:4.13504541051862 11:0.884425570049315 44:0.445904036039959
+2 1:9.59970669568095 2:0.927574212188591 3:2.10668087435938 4:0.639704587998222 5:0.344536082208455 6:1.16322139711899 7:8.7137867123507 8:10.942757574171 9:2.43420586097498 10:1.33116082631032 13:0.844904909906825 27:0.184010991918219
+2 1:8.84069122374797 2:0.656302508624003 3:3.68669153012892 4:0.429652335222686 5:0.671845360306487 6:0.76691681289899 7:8.535954330466 8:8.79417960298674 9:1.16742525985535 10:0.997979561910678 13:0.844904909906825 47:1.05184741228156
+2 1:9.50942732236734 2:0.595047607819096 3:1.18500799182715 4:1.54197449196586 5:0.844113401410714 6:2.16329633655259 7:8.14472309031964 8:11.1426252924207 9:3.12969324982497 10:5.02118243531861 11:0.884425570049315 44:0.445904036039959
+1 1:10.5392809142412 2:0.568795507474136 3:1.18500799182715 4:0.572869780296915 5:0.223948453435496 6:1.88068042560154 7:8.14472309031964 8:11.0926583628583 9:3.12969324982497 10:2.75773976120458 11:0.884425570049315 53:1
+2 1:9.67661134702218 2:2.62521003449601 3:2.37001598365431 4:0.773374203400835 5:0.0516804123312682 6:1.73680323457192 7:5.90403507857231 8:11.4424268697952 9:5.01744473384639 10:1.12155383368332 13:0.844904909906825 38:0.217872335165298
+2 1:10.3420037651484 2:1.44386551897281 3:1.05334043717969 4:0.916591648475064 5:0.620164947975219 6:2.35085053200193 7:8.1091566139427 8:12.1419638836692 9:3.67614762677854 10:0.497425549667078 11:0.884425570049315 43:0.715678085420547
+3 1:7.11869576980311 2:0.997579813108485 3:3.68669153012892 4:0.591965439640145 5:0.585711339754373 6:0.286469764282202 7:9.03388499974318 8:9.89345205336008 9:1.26678060111963 10:0.557648454265136 14:0.296673189340406 15:0.0931694990624912
+2 1:10.2985359187382 2:1.35635851782294 3:2.23834842900684 4:0.811565522087296 5:0.447896906870991 6:3.86541489114415 7:8.46482137771211 8:11.9420961654195 9:3.12969324982497 10:1.77070981831174 11:0.884425570049315 43:0.715678085420547
+1 1:10.6462786900203 2:2.20517642897665 3:1.31667554647461 6:0.424566175315102 7:7.07772879901139 8:12.3418316019189 9:4.64486220410532 10:1.17317346619594 13:0.844904909906825 37:0.418600747852556
+2 1:10.5058441093102 2:0.0350028004599468 3:3.68669153012892 4:1.86660070080078 5:1.39537113294424 6:0.905655532820415 7:6.08186746045702 8:8.64427881429947 9:3.20420975577319 10:1.29205504410379 13:0.844904909906825 47:1.05184741228156
+2 1:10.395502653038 2:1.06758541402838 3:1.58001065576954 4:1.40830487656325 5:-0.275628865766764 6:0.725166735144857 7:8.535954330466 8:11.5423607289201 9:2.95582140261248 10:0.78837256928367 11:0.884425570049315 43:0.715678085420547
+2 1:9.64317454209121 2:0.56004480735915 3:1.58001065576954 4:0.835435096266334 5:0.602938143864796 6:1.66293771239153 7:8.21585604307352 8:10.7428898559213 9:2.85646606134819 10:2.01316566799223 11:0.884425570049315 43:0.715678085420547
+2 1:9.97085523041469 2:1.26010081655809 3:1.84334576506446 4:1.71860934089075 5:-0.206721649325073 6:2.84799761172037 7:8.50038785408906 8:11.8421623062946 9:3.08001557919283 10:1.77540251217652 11:0.884425570049315 43:0.715678085420547
+3 1:7.29256715544415 2:1.01508121333846 3:0.92167288253223 4:0.143217445074229 5:0.0344536082208455 6:0.138738719921425 7:8.28698899582741 8:11.6422945880449 9:3.30356509703747 10:0.315974720228773 14:0.296673189340406 16:0.125988157669742
+2 1:10.0310414792904 2:1.65388232173249 3:0.790005327884769 4:0.916591648475064 5:0.241175257545918 6:2.5852932763136 7:7.8601912793041 8:12.241897742794 9:3.94937481525532 10:0.656977141069725 11:0.884425570049315 43:0.715678085420547
+2 1:9.55958252976379 2:0.0437535005749336 3:1.84334576506446 4:0.639704587998222 5:0.792432989079446 6:0.651943521852994 7:7.14886175176527 8:10.5430221376716 9:3.65130879146247 10:0.352734155502912 13:0.844904909906825 46:0.674199862463242
+2 1:8.80391073832391 2:0.411282905404375 3:1.44834310112208 4:1.03116560453445 5:0.275628865766764 6:0.696262835161227 7:7.96689070843493 8:10.8428237150461 9:3.12969324982497 10:1.12781075883636 13:0.844904909906825 25:0.157785504911465
+1 1:9.88726321808727 2:0.183764702414721 3:0.526670218589846 4:0.773374203400835 5:0.310082473987609 6:1.42271418808313 7:7.71792537379634 8:11.5423607289201 9:3.75066413272675 10:1.50635473059558 11:0.884425570049315 43:0.715678085420547
+3 1:7.10866472832382 2:2.46769743242625 3:4.08169419407131 4:0.453521909401724 5:0.861340205521137 6:0.482373975282363 7:4.33911011798688 8:11.2425591515455 9:5.81228746396067 10:0.168936979132215 14:0.296673189340406 24:0.280975743474508
+6 1:7.53999951193331 2:0.140011201839787 3:4.47669685801369 4:0.606287184147568 5:1.01638144251494 6:0.423281557538052 7:6.04630098408008 8:7.44507250480127 9:2.40936702565891 10:0.366812237097263 14:0.296673189340406 24:0.280975743474508
+6 1:8.14186200069074 2:2.80022403679575 3:2.10668087435938 4:1.04071343420606 5:0.981927834294096 6:0.463104708626609 7:6.29526631871867 8:11.1426252924207 9:4.59518453347318 10:0.402007441083141 14:0.296673189340406 24:0.280975743474508
+1 1:10.6997775779098 3:0.395002663942384 4:0.143217445074229 5:0.0172268041104227 6:2.63924722294971 7:7.64679242104245 8:11.6922615176074 9:3.87485830930711 10:1.32333966986902 11:0.884425570049315 37:0.418600747852556
+6 1:8.19201720808719 2:2.51145093300119 3:1.58001065576954 4:0.405782761043648 5:0.344536082208455 6:0.777836064003917 7:6.61536460611115 8:11.9420961654195 9:4.79389521600175 10:0.676530032172991 14:0.296673189340406 24:0.280975743474508
+4 1:7.8676802002568 2:1.02383191345345 3:1.18500799182715 4:1.08845258256414 5:1.01638144251494 6:0.616616532984112 7:8.39368842495823 8:11.5923276584825 9:3.17937092045712 10:0.448152264086848 14:0.296673189340406 20:0.129459555600631
+1 1:10.7298707023477 2:0.201266102644694 3:1.84334576506446 4:3.53747089333345 5:1.44705154527551 6:1.34692173923717 7:7.50452651553469 8:10.4430882785468 9:3.2787262617214 10:1.85361407658958 13:0.844904909906825 38:0.217872335165298
+1 1:10.2751301552865 2:0.288773103794562 3:1.44834310112208 4:0.429652335222686 5:0.447896906870991 6:1.94940747667373 7:7.75349185017328 8:10.7428898559213 9:3.2787262617214 10:4.63090672889743 11:0.884425570049315 43:0.715678085420547
+1 1:10.7031212584029 2:0.280022403679575 3:1.31667554647461 4:1.91911376399467 5:1.01638144251494 6:1.84728036339824 7:7.75349185017328 8:10.8927906446086 9:3.32840393235354 10:3.57583272496522 11:0.884425570049315 53:1
+1 1:11.017427224754 2:0.105008401379841 3:1.05334043717969 4:3.34174038506534 5:1.08528865895663 6:0.413646924210175 7:7.54009299191163 8:11.1925922219831 9:3.70098646209461 10:1.03552111282895 12:0.260796291926003 37:0.418600747852556
+2 1:8.65678879662765 2:1.00633051322347 3:1.58001065576954 4:1.01206994519122 5:0.999154638404519 6:0.558808733016852 7:8.57152080684294 8:11.3424930106704 9:2.83162722603212 10:0.0844684895661075 11:0.884425570049315 43:0.715678085420547
+2 1:9.80367120575985 2:0.0175014002299734 3:2.89668620224415 4:0.286434890148457 5:-0.103360824662536 6:2.79211673841868 7:6.54423165335726 8:9.69358433511038 9:3.52711461488211 10:1.50087992108667 11:0.884425570049315 44:0.445904036039959
+1 1:10.5593429971997 2:0.0875070011498671 3:2.10668087435938 4:0.716087225371144 5:0.568484535643951 6:1.3758256392208 7:7.11329527538833 8:10.2432205602971 9:3.4525981089339 10:2.24154343607837 13:0.844904909906825 38:0.217872335165298
+2 1:9.80367120575985 2:0.113759101494827 3:1.18500799182715 4:3.35606212957276 5:2.30839175079665 6:2.05795767883448 7:7.54009299191163 8:11.0926583628583 9:3.67614762677854 10:0.593625773895144 13:0.844904909906825 24:0.280975743474508
+2 1:10.0444162012628 2:0.848817911153711 3:1.31667554647461 4:0.773374203400835 5:0.103360824662536 6:2.67971268292679 7:8.42925490133517 8:11.2425591515455 9:2.95582140261248 10:0.567815957638834 11:0.884425570049315 43:0.715678085420547
+2 1:9.92404370351134 2:2.59895793415105 3:0.526670218589846 4:1.52287883262263 5:1.01638144251494 6:2.68870500736614 7:7.39782708640386 8:11.8921292358571 9:4.19776316841604 10:1.7621065462263 11:0.884425570049315 44:0.445904036039959
+2 1:10.913773129468 2:1.69763582230742 3:1.58001065576954 4:2.506305288799 5:1.06806185484621 6:1.64623768128988 7:7.75349185017328 8:12.4917323906062 9:4.07356899183568 10:1.09965459564766 13:0.844904909906825 47:1.05184741228156
+2 1:10.6195292460755 2:3.07149574036034 3:1.31667554647461 4:1.14573956059383 5:0.0172268041104227 6:0.138738719921425 7:7.18442822814221 8:11.1426252924207 9:3.94937481525532 10:1.08010170454439 12:0.260796291926003 37:0.418600747852556
+1 1:10.0611346037283 2:2.75647053622081 3:0.526670218589846 4:0.835435096266334 5:0.465123710981414 6:1.72138782124731 7:7.4333935627808 8:11.7921953767322 9:4.12324666246782 10:0.579547692300793 13:0.844904909906825 46:0.674199862463242
+1 1:10.7332143828408 2:0.332526604369495 3:1.05334043717969 4:0.286434890148457 5:-0.137814432883382 6:1.92178819446715 7:7.82462480292716 8:11.1426252924207 9:3.42775927361783 10:1.48758395513645 11:0.884425570049315 36:0.258530551913103
+2 1:9.92404370351134 2:0.271271703564588 3:3.81835908477638 4:1.17915696444448 5:1.15419587539832 6:1.27048698150268 7:7.04216232263445 8:8.19457644823764 9:2.13613983718213 10:1.45238875115057 13:0.844904909906825 47:1.05184741228156
+1 1:10.7833695902372 2:0.892571411728645 3:1.97501331971192 4:0.572869780296915 5:0.465123710981414 6:1.05145965051562 7:8.67822023597376 8:10.942757574171 9:2.45904469629105 10:2.23528651092533 11:0.884425570049315 43:0.715678085420547
+1 1:11.050864029685 2:3.07149574036034 3:1.05334043717969 4:1.80931372277109 5:1.49873195760678 6:2.12026164102141 7:7.32669413364998 8:11.3424930106704 9:3.94937481525532 10:1.5783093698556 11:0.884425570049315 43:0.715678085420547
+2 1:10.7934006317165 2:2.14392152817174 3:1.05334043717969 4:3.66636659390026 5:2.77351546177806 6:4.02342287772133 7:7.2555611808961 8:12.2918646723565 9:4.47099035689282 10:1.22479309870856 11:0.884425570049315 43:0.715678085420547
+2 1:10.4255957774759 2:0.980078412878512 3:1.18500799182715 4:0.143217445074229 5:-0.0861340205521137 6:2.03098070551642 7:8.42925490133517 8:11.4923937993577 9:3.08001557919283 10:0.644463290763635 13:0.844904909906825 37:0.418600747852556
+2 1:10.0544472427421 2:3.08899714059031 3:1.05334043717969 4:3.48495783013957 5:2.08444329736115 6:0.915290166148292 7:7.32669413364998 8:11.292526081108 9:3.92453597993925 10:1.58456629500865 13:0.844904909906825 46:0.674199862463242
+2 1:10.8535868805923 2:1.49636971966273 3:0.658337773237307 4:1.83318329695013 5:0.551257731533528 6:3.00857483385165 7:7.93132423205799 8:12.0919969541068 9:3.82518063867497 10:0.592061542606883 11:0.884425570049315 43:0.715678085420547
+2 1:10.5559993167066 2:0.936324912303578 3:1.711678210417 4:2.878670645992 5:3.80712370840343 6:0.942909448354872 7:8.57152080684294 8:11.1925922219831 9:2.73227188476783 10:2.04992510326637 13:0.844904909906825 47:1.05184741228156
+2 1:10.0176667573181 2:2.94898593875052 3:1.18500799182715 4:1.67564410736848 5:0.981927834294096 6:1.02576729497461 7:7.11329527538833 8:11.3924599402328 9:4.12324666246782 10:1.89193774315198 13:0.844904909906825 37:0.418600747852556
+2 1:11.0207709052471 2:1.96890752587201 3:1.18500799182715 4:1.99549640136759 5:1.37814432883382 6:0.342992946472413 7:7.39782708640386 8:12.4417654610437 9:4.42131268626068 10:0.594407889539275 12:0.260796291926003
+2 1:9.39908586609514 2:3.00149013944044 3:2.10668087435938 4:0.515582802267224 5:0.516804123312682 6:2.47224691193318 7:6.5797981297342 8:10.6429559967965 9:4.12324666246782 10:4.27269776388561 11:0.884425570049315 43:0.715678085420547
+1 1:8.52304157690378 2:0.306274504024535 3:1.05334043717969 4:0.639704587998222 5:0.0172268041104227 6:0.640381961859542 7:7.78905832655022 8:11.1426252924207 9:3.4525981089339 10:0.48804016193751 11:0.884425570049315 23:0.0750234484920533
+1 1:10.9706156978506 2:2.97523803909548 3:1.31667554647461 4:2.1291660167702 5:1.75713401926312 6:1.68991468570958 7:7.04216232263445 8:11.2425591515455 9:4.12324666246782 10:1.86299946431915 13:0.844904909906825 38:0.217872335165298
+2 1:9.30211913179533 2:3.01024083955543 3:1.18500799182715 4:1.01206994519122 5:0.430670102760569 6:1.39059874365688 7:7.21999470451915 8:11.292526081108 9:4.02389132120354 10:2.08277396031985 11:0.884425570049315 26:0.228914278114955
+6 1:8.2822965814008 2:0.428784305634349 3:1.31667554647461 4:0.319852293999111 5:0.120587628772959 6:0.640381961859542 7:7.96689070843493 8:10.8927906446086 9:3.12969324982497 10:0.686697535546689 13:0.844904909906825 24:0.280975743474508
+1 1:11.2347664568053 2:2.74771983610583 3:2.10668087435938 4:1.04071343420606 5:0.482350515091837 6:0.994936468325406 7:6.25969984234173 8:11.292526081108 9:4.69453987473746 10:1.55562801617581 12:0.260796291926003 52:0.77919372247398
+2 1:9.34224329771249 2:0.175014002299734 3:0.790005327884769 4:0.143217445074229 6:2.91800928056961 7:7.6823588974194 8:11.3924599402328 9:3.70098646209461 10:3.8613049350729 11:0.884425570049315 44:0.445904036039959
+2 1:10.7332143828408 2:0.551294107244163 3:0.131667554647461 4:1.88569636014401 5:0.49957731920226 6:3.74273389343586 7:7.82462480292716 8:11.7921953767322 9:3.8003418033589 10:1.79573751892392 11:0.884425570049315 36:0.258530551913103
+1 1:9.93073106449753 2:2.22267782920662 3:1.58001065576954 4:1.01206994519122 5:0.516804123312682 6:3.64189139793741 7:6.79319698799585 8:12.3917985314813 9:4.84357288663389 10:1.5501532066669 11:0.884425570049315 37:0.418600747852556
+2 1:10.0778530061938 2:0.813815110693764 3:1.97501331971192 4:2.11484427226278 5:0.723525772637755 6:2.73752048289405 7:8.60708728321988 8:10.7428898559213 9:2.45904469629105 10:3.31538821546972 11:0.884425570049315 43:0.715678085420547
+3 1:8.54979102084855 2:1.31260501724801 3:1.711678210417 4:0.959556881997333 5:1.01638144251494 6:0.662220464069396 7:8.39368842495823 8:11.9420961654195 9:3.22904859108926 10:1.21384347969073 13:0.844904909906825 18:0.154303349962092
+2 1:10.117977172111 2:2.75647053622081 3:0.131667554647461 4:1.54674840680167 5:0.103360824662536 6:0.963463332787676 7:7.64679242104245 8:11.8421623062946 9:3.9742136505714 10:1.0112755278609 13:0.844904909906825 46:0.674199862463242
+6 1:7.92452276863945 2:3.00149013944044 3:4.34502930336623 4:0.606287184147568 5:1.01638144251494 6:0.594778030774258 7:4.87260726364101 8:8.54434495517462 9:3.99905248588747 10:0.742227746279963 14:0.296673189340406 24:0.280975743474508
+2 1:9.55289516877759 2:0.542543407129176 3:0.790005327884769 4:0.959556881997333 5:0.68907216441691 6:1.52997977246683 7:8.00245718481187 8:11.3924599402328 9:3.42775927361783 10:1.68624132874563 11:0.884425570049315 43:0.715678085420547
+2 1:10.4757509848723 2:1.89890192495212 3:1.44834310112208 4:0.835435096266334 5:-0.155041236993805 6:1.70789933458829 7:7.39782708640386 8:12.5416993201686 9:4.42131268626068 10:0.557648454265136 13:0.844904909906825 46:0.674199862463242
+1 1:10.258411752821 2:0.918823512073605 3:0.92167288253223 4:0.286434890148457 5:-0.0344536082208455 6:2.1864194565395 7:8.28698899582741 8:11.5423607289201 9:3.22904859108926 10:1.88255235542241 11:0.884425570049315 43:0.715678085420547
+2 1:10.4155647359966 2:0.113759101494827 3:1.84334576506446 4:2.11484427226278 5:1.86049484392566 6:1.7695609878867 7:7.32669413364998 8:10.5430221376716 9:3.50227577956604 10:2.06009260664007 13:0.844904909906825 46:0.674199862463242
+2 1:9.15834087059217 2:3.03649293990039 3:3.16002131153908 4:1.29850483533967 5:1.98108247269862 6:0.973097966115552 7:5.90403507857231 8:9.64361740554796 9:3.9742136505714 10:0.962002242280669 13:0.844904909906825 47:1.05184741228156
+1 1:9.81704592773224 2:0.0175014002299734 3:1.97501331971192 4:0.515582802267224 5:0.292855669877187 6:1.79461103453918 7:7.04216232263445 8:10.5430221376716 9:3.70098646209461 10:0.93853877295675 13:0.844904909906825 47:1.05184741228156
+2 1:9.70336079096695 2:2.90523243817559 3:0.526670218589846 4:1.28895700566806 5:0.3789896904293 6:2.35727362088718 7:7.50452651553469 8:11.7422284471698 9:4.02389132120354 10:3.00645253603812 11:0.884425570049315 37:0.418600747852556
+1 1:10.9940214613023 2:1.82014562391724 3:2.23834842900684 4:1.94775725300951 5:3.01469071932398 6:0.680847421836624 7:7.32669413364998 8:12.6416331792934 9:4.42131268626068 10:1.49696934286602 11:0.884425570049315 43:0.715678085420547
+2 1:10.1146334916179 2:1.96890752587201 3:2.23834842900684 4:0.639704587998222 5:0.258402061656341 6:1.04503656163037 7:6.93546289350362 8:12.6916001088559 9:4.7442175453696 10:0.331617033111385 13:0.844904909906825 45:0.433012701892219
+2 1:9.90398162055276 2:0.927574212188591 3:3.95002663942384 4:1.08845258256414 5:1.63654639049016 6:4.03626905549184 7:9.03388499974318 8:9.44374968729826 9:0.993553412642849 10:3.21449529737687 11:0.884425570049315 43:0.715678085420547
+2 1:10.3654095286001 2:1.61012882115755 3:1.58001065576954 4:1.90956593432305 5:0.706298968527332 6:0.27233896873465 7:7.93132423205799 8:12.3917985314813 9:3.87485830930711 10:1.03864957540547 13:0.844904909906825 46:0.674199862463242
+1 1:10.9906777808092 2:2.94023523863554 3:0.790005327884769 4:2.57791401133612 5:0.206721649325073 6:1.56594907022424 7:7.36226061002692 8:11.5923276584825 9:4.07356899183568 10:0.567815957638834 13:0.844904909906825 46:0.674199862463242
+1 1:10.3854716115587 2:2.45894673231127 3:2.10668087435938 4:1.54197449196586 5:0.068907216441691 6:2.39003137420196 7:6.15300041321091 8:11.9920630949819 9:5.0919612397946 10:1.18099462263724 13:0.844904909906825 36:0.258530551913103
+1 1:11.0943318760952 2:1.49636971966273 3:3.55502397548146 4:0.319852293999111 5:0.292855669877187 6:0.984017217220479 7:8.07359013756576 8:11.9920630949819 9:3.15453208514105 10:1.05194554135569 11:0.884425570049315 53:1
+2 1:10.776682229251 2:1.06758541402838 3:0.790005327884769 4:3.79048837963125 5:0.671845360306487 6:0.804813037321972 7:8.18028956669658 8:11.7422284471698 9:3.42775927361783 10:1.76367077751456 13:0.844904909906825 46:0.674199862463242
+1 1:10.8903673660163 2:2.86147893760065 3:1.05334043717969 4:2.63520098936581 5:-0.292855669877187 6:1.64752229906693 7:7.14886175176527 8:11.5423607289201 9:4.22260200373211 10:0.355080502435304 13:0.844904909906825 46:0.674199862463242
+7 1:11.2916090251879 2:2.30143413024151 3:1.31667554647461 4:0.835435096266334 5:0.361762886318878 6:3.16722512931735 7:6.97102936988056 8:12.241897742794 9:4.66970103942139 10:2.96265405996681 13:0.844904909906825 52:0.77919372247398
+2 1:9.91401266203205 2:1.18134451552321 3:1.44834310112208 4:1.49423534360779 5:0.792432989079446 6:3.57059511131113 7:8.42925490133517 8:11.7921953767322 9:3.17937092045712 10:3.041647740024 11:0.884425570049315 43:0.715678085420547
+2 1:8.88081538966513 2:0.140011201839787 3:3.95002663942384 4:0.429652335222686 5:0.18949484521465 6:0.621112695203788 7:6.36639927147256 8:8.19457644823764 9:2.65775537881962 10:1.34367467661641 11:0.884425570049315 43:0.715678085420547
+6 1:8.93765795804778 2:1.49636971966273 3:0.92167288253223 4:0.572869780296915 5:0.447896906870991 6:1.2248830504174 7:8.03802366118881 8:12.1919308132316 9:3.75066413272675 10:1.45942779194775 13:0.844904909906825 18:0.154303349962092
+7 1:11.2849216642017 2:2.75647053622081 3:1.05334043717969 4:1.72338325572655 5:0.671845360306487 6:0.975024892781128 7:7.07772879901139 8:11.6922615176074 9:4.32195734499639 10:0.629603093525153 13:0.844904909906825 52:0.77919372247398
+2 1:9.29543177080914 2:0.420033605519362 3:0.790005327884769 4:2.08620078324793 5:1.08528865895663 6:0.430989264200354 7:7.93132423205799 8:11.292526081108 9:3.4525981089339 10:2.00925508977158 11:0.884425570049315 43:0.715678085420547
+1 1:10.6964338974167 2:0.420033605519362 3:0.92167288253223 4:0.319852293999111 5:-0.241175257545918 6:1.59934913242754 7:7.93132423205799 8:11.1925922219831 9:3.37808160298569 10:2.12579032074704 11:0.884425570049315 37:0.418600747852556
+2 1:9.40911690757443 2:1.22509801609814 3:2.10668087435938 4:0.572869780296915 5:-0.0861340205521137 6:0.790682241774419 7:8.60708728321988 8:11.6922615176074 9:2.90614373198033 10:1.29049081281553 13:0.844904909906825 24:0.280975743474508
+3 1:7.7573387439846 2:2.8964817380606 3:2.63335109294923 4:0.405782761043648 5:0.585711339754373 6:0.888313192830237 7:6.04630098408008 8:10.592989067234 9:4.44615152157675 10:0.657759256713856 14:0.296673189340406 24:0.280975743474508
+1 1:10.7031212584029 2:0.980078412878512 3:1.58001065576954 4:0.515582802267224 5:0.327309278098032 6:1.83571880340478 7:8.535954330466 8:11.3424930106704 9:2.85646606134819 10:4.02007441083141 11:0.884425570049315 43:0.715678085420547
+1 1:10.8970547270025 2:0.157512602069761 3:0.395002663942384 4:0.143217445074229 6:4.08958069323942 7:7.71792537379634 8:11.6422945880449 9:3.8003418033589 10:0.104803496313504 11:0.884425570049315 37:0.418600747852556
+1 1:8.97109476297875 2:0.0437535005749336 3:0.395002663942384 4:0.716087225371144 5:0.49957731920226 6:1.08999818382712 7:7.6823588974194 8:11.6922615176074 9:3.85001947399104 10:5.22296827150431 11:0.884425570049315 26:0.228914278114955
+1 1:9.80701488625295 2:0.227518202989654 3:0.790005327884769 4:0.143217445074229 5:-0.0172268041104227 6:0.967959495007351 7:7.71792537379634 8:11.3424930106704 9:3.6264699561464 10:2.62008740783759 11:0.884425570049315 37:0.418600747852556
+6 1:8.33579546929035 2:0.656302508624003 3:1.58001065576954 4:0.20050442310392 5:0.103360824662536 6:0.294819779833029 7:8.32255547220435 8:10.8428237150461 9:2.80678839071605 10:0.997979561910678 14:0.296673189340406 20:0.129459555600631
+1 1:10.1447266160557 2:2.91398313829057 3:1.31667554647461 6:2.42664298084789 7:7.04216232263445 8:11.3924599402328 9:4.19776316841604 10:2.09685204191421 11:0.884425570049315 37:0.418600747852556
+2 1:9.75017231787031 2:2.98398873921047 3:1.44834310112208 4:0.20050442310392 5:0.103360824662536 6:1.99950756997869 7:6.97102936988056 8:11.1426252924207 9:4.12324666246782 10:1.78087732168543 11:0.884425570049315 43:0.715678085420547
+2 1:9.24862024390578 2:3.08024644047532 3:1.31667554647461 4:0.143217445074229 5:0.0344536082208455 6:1.96674981666391 7:7.18442822814221 8:11.0926583628583 9:3.92453597993925 10:3.82610973108702 11:0.884425570049315 34:0.169841555121689
+2 1:8.96440740199255 2:0.927574212188591 3:1.05334043717969 4:1.74725282990559 5:0.585711339754373 6:0.589639559666058 7:8.28698899582741 8:11.5423607289201 9:3.22904859108926 10:1.49931568979841 11:0.884425570049315 43:0.715678085420547
+6 1:8.57319678430023 2:0.420033605519362 3:2.76501864759669 4:0.959556881997333 5:-0.0172268041104227 6:0.33143138647896 7:7.93132423205799 8:9.49371661686068 9:2.31001168439462 10:0.966694936145453 13:0.844904909906825 24:0.280975743474508
+3 1:8.86409698719965 2:0.892571411728645 3:3.423356420834 4:0.591965439640145 5:0.87856700963156 6:1.00842495498443 7:8.9627520469893 8:9.79351819423523 9:1.39097477769999 10:0.965912820501322 13:0.844904909906825 25:0.157785504911465
+2 1:10.291848557752 2:0.0525042006899203 3:1.18500799182715 4:0.319852293999111 5:0.120587628772959 6:1.14138289490913 7:7.4333935627808 8:11.0926583628583 9:3.75066413272675 10:1.4148472002323 11:0.884425570049315 43:0.715678085420547
+2 1:9.98757363288018 2:1.02383191345345 3:1.18500799182715 4:1.40830487656325 5:0.223948453435496 6:1.1124789949255 7:8.39368842495823 8:11.5923276584825 9:3.17937092045712 10:1.05663823522047 13:0.844904909906825 46:0.674199862463242
+7 1:11.3651699960361 2:0.901322111843631 3:1.711678210417 4:0.143217445074229 5:-0.0861340205521137 6:1.82287262563428 7:8.57152080684294 8:11.1925922219831 9:2.73227188476783 10:0.57485499843601 13:0.844904909906825 49:0.210818510677892
+2 1:9.09146726073023 2:0.183764702414721 3:2.63335109294923 4:1.57539189581652 5:1.98108247269862 6:1.04310963496479 7:7.21999470451915 8:9.64361740554796 9:3.00549907324462 10:2.02098682443354 13:0.844904909906825 24:0.280975743474508
+1 1:10.0711656452076 2:0.647551808509017 3:4.21336174871877 4:0.730408969878567 5:-0.0172268041104227 6:1.81195337452936 7:8.50038785408906 8:8.14460951867522 9:0.745165059482137 10:0.994068983690025 13:0.844904909906825 38:0.217872335165298
+2 1:9.5495514882845 2:0.525042006899203 3:4.47669685801369 4:0.405782761043648 5:0.723525772637755 6:0.886386266164662 7:7.96689070843493 8:7.4950394343637 9:0.794842730114279 10:0.724239086464959 13:0.844904909906825 47:1.05184741228156
+1 1:11.3584826350499 2:2.65146213484097 3:1.97501331971192 4:4.1294363329736 5:2.53234020423214 6:0.71553210181698 7:6.36639927147256 8:11.5923276584825 9:4.79389521600175 10:1.55562801617581 13:0.844904909906825 46:0.674199862463242
+2 1:9.97754259140089 3:0.658337773237307 4:0.959556881997333 5:0.241175257545918 6:2.37076210754621 7:7.54009299191163 8:11.4923937993577 9:3.87485830930711 10:0.736752936771049 11:0.884425570049315 43:0.715678085420547
+2 1:10.2617554333141 2:2.71271703564588 3:1.05334043717969 4:2.1912269096357 5:0.447896906870991 6:0.348773726469139 7:7.0065958462575 8:11.6922615176074 9:4.39647385094461 10:0.483347468072726 12:0.260796291926003 37:0.418600747852556
+1 1:10.0912277281662 2:0.0350028004599468 3:3.02835375689161 4:0.405782761043648 5:0.396216494539723 6:2.90965926501878 7:6.50866517698032 8:9.44374968729826 9:3.40292043830176 10:2.05774625970767 11:0.884425570049315 43:0.715678085420547
+2 1:10.2116002259177 2:0.621299708164057 3:1.58001065576954 4:2.4394704810977 5:0.344536082208455 6:2.70026656735959 7:8.28698899582741 8:10.7928567854837 9:2.80678839071605 10:2.45662523821429 11:0.884425570049315 43:0.715678085420547
+1 1:10.0276977987973 2:0.69130530908395 3:1.97501331971192 4:2.18645299479989 5:1.10251546306706 6:0.204896535439512 7:8.50038785408906 8:10.5430221376716 9:2.45904469629105 10:0.60066481469232 13:0.844904909906825 47:1.05184741228156
+3 1:7.36612812629228 2:1.36510921793793 3:3.29168886618654 4:0.591965439640145 5:1.15419587539832 6:0.150300279914877 7:8.50038785408906 8:11.6922615176074 9:2.70743304945176 10:0.341784536485083 14:0.296673189340406 16:0.125988157669742
+2 1:10.2283186283831 2:0.71755740942891 3:0.92167288253223 4:0.286434890148457 5:0.0861340205521137 6:0.829863083974451 7:8.18028956669658 8:11.3924599402328 9:3.22904859108926 10:1.54937109102277 11:0.884425570049315 37:0.418600747852556
+2 1:10.2650991138072 2:1.10258821448833 3:0.92167288253223 4:1.63267887384621 5:0.18949484521465 6:0.224808110983791 7:8.25142251945046 8:11.7921953767322 9:3.40292043830176 10:1.15753115331333 13:0.844904909906825 37:0.418600747852556
+2 1:9.73011023491172 2:1.03258261356843 3:3.02835375689161 4:1.17915696444448 5:1.7399072151527 6:2.77734363398261 7:8.9627520469893 8:10.592989067234 9:1.86291264870534 10:0.451280726663371 11:0.884425570049315 44:0.445904036039959
+2 1:10.1948818234522 2:0.393781505174402 3:0.658337773237307 4:0.907043818803449 5:0.155041236993805 6:0.655155066295619 7:7.8601912793041 8:11.4424268697952 9:3.55195345019819 10:1.43909278520035 11:0.884425570049315 43:0.715678085420547
+6 1:8.55313470134165 2:0.297523803909548 3:2.50168353830177 4:1.36056572820517 5:1.17142267950875 6:0.949332537240123 7:7.61122594466551 8:9.69358433511038 9:2.70743304945176 10:0.871276827561516 13:0.844904909906825 24:0.280975743474508
+2 1:10.9304915319335 2:0.323775904254508 3:0.92167288253223 4:0.835435096266334 5:-0.0172268041104227 6:0.698189761826802 7:7.82462480292716 8:11.1925922219831 9:3.47743694424997 10:2.44958619741712 12:0.260796291926003 37:0.418600747852556
+6 1:8.41938748161777 2:0.0787563010348804 3:1.84334576506446 4:0.515582802267224 5:0.430670102760569 6:0.183058033229658 7:7.21999470451915 8:10.5430221376716 9:3.57679228551426 10:1.09183343920635 13:0.844904909906825 24:0.280975743474508
+1 1:10.4623762628999 2:1.5138711198927 3:2.23834842900684 4:1.41785270623486 5:-0.18949484521465 6:1.32701016369289 7:8.1091566139427 8:12.2918646723565 9:3.55195345019819 10:0.170501210420476 13:0.844904909906825 46:0.674199862463242
+1 1:11.154518124971 2:0.358778704714455 3:2.10668087435938 4:1.01206994519122 5:0.172268041104227 6:1.14716367490586 7:7.8601912793041 8:10.1932536307346 9:2.85646606134819 10:3.87616513231138 12:0.260796291926003 36:0.258530551913103
+1 1:10.7800259097441 2:2.20517642897665 3:0.395002663942384 4:1.61835712933878 5:0.49957731920226 6:3.81852634228182 7:7.57565946828857 8:12.0420300245443 9:4.12324666246782 10:1.3765235336699 11:0.884425570049315 36:0.258530551913103
+2 1:9.49605260039495 2:0.061254900804907 3:1.97501331971192 4:1.01206994519122 5:0.775206184969023 6:2.13182320101486 7:7.14886175176527 8:10.4430882785468 9:3.57679228551426 10:0.784461991063017 13:0.844904909906825 38:0.217872335165298
+2 1:10.0678219647145 2:0.945075612418565 3:0.92167288253223 4:2.66384447838065 5:3.04914432754483 6:1.26149465706333 7:8.25142251945046 8:11.5923276584825 9:3.30356509703747 10:2.24467189865489 13:0.844904909906825 46:0.674199862463242
+7 1:11.3083274276534 2:3.11524924093527 3:1.58001065576954 4:1.46081793975713 5:1.42982474116509 6:2.76835130954325 7:7.11329527538833 8:10.8927906446086 9:3.85001947399104 10:2.9931565700879 11:0.884425570049315
+2 1:9.97085523041469 2:0.997579813108485 3:0.658337773237307 4:1.03116560453445 5:0.68907216441691 6:2.27698500982154 7:8.1091566139427 8:11.7422284471698 9:3.50227577956604 10:1.22948579257334 11:0.884425570049315 43:0.715678085420547
+1 1:9.95079314745611 2:1.23384871621313 3:1.58001065576954 4:0.286434890148457 5:0.0516804123312682 6:1.73423399901782 7:8.46482137771211 8:11.7921953767322 9:3.12969324982497 10:1.30144043183336 13:0.844904909906825 47:1.05184741228156
+2 1:10.0109793963319 2:2.99273943932546 3:1.58001065576954 4:1.67564410736848 5:1.3609175247234 6:1.83443418562773 7:6.97102936988056 8:11.0926583628583 9:4.09840782715175 10:1.1442351873631 13:0.844904909906825 46:0.674199862463242
+1 1:11.2213917348329 2:3.04524364001538 3:5.00336707660354 4:0.811565522087296 5:1.10251546306706 6:0.737370604026834 7:4.41024307074076 8:7.54500636392612 9:3.65130879146247 10:1.19194424165507 12:0.260796291926003 53:1
+1 1:9.90732530104586 2:3.08899714059031 3:1.44834310112208 4:0.20050442310392 5:0.0516804123312682 6:2.33671973645438 7:7.14886175176527 8:11.0426914332958 9:3.92453597993925 10:0.861109324187818 11:0.884425570049315 37:0.418600747852556
+2 1:10.2149439064108 2:0.210016802759681 3:1.31667554647461 4:4.85984530285216 5:4.06552577005977 6:0.816374597315424 7:7.64679242104245 8:10.8927906446086 9:3.4525981089339 10:1.95450699468243 13:0.844904909906825 46:0.674199862463242
+2 1:10.2617554333141 2:0.551294107244163 3:0.395002663942384 4:0.319852293999111 5:0.0344536082208455 6:2.10870008102796 7:7.89575775568105 8:11.6422945880449 9:3.6264699561464 10:0.979208786451543 11:0.884425570049315 37:0.418600747852556
+2 1:11.1311123615193 2:0.0962577012648538 3:0.92167288253223 4:0.143217445074229 5:-0.0172268041104227 6:0.901159370600739 7:7.57565946828857 8:11.2425591515455 9:3.72582529741068 10:2.73975110138958 12:0.260796291926003 49:0.210818510677892
+2 1:9.67995502751527 2:1.13759101494827 3:0.92167288253223 4:0.916591648475064 5:0.3789896904293 6:1.37132947700113 7:8.28698899582741 8:11.7921953767322 9:3.37808160298569 10:1.94825006952939 11:0.884425570049315 43:0.715678085420547
+2 1:10.2015691844384 2:0.551294107244163 3:0.395002663942384 4:0.730408969878567 5:0.0516804123312682 6:1.72524167457846 7:7.89575775568105 8:11.6422945880449 9:3.6264699561464 10:0.534967100585348 11:0.884425570049315 37:0.418600747852556
+1 1:10.6763718144581 2:2.66021283495596 3:2.89668620224415 4:1.08845258256414 5:0.0344536082208455 6:2.57630095187424 7:5.51280383842596 8:11.1426252924207 9:5.11680007511067 10:1.32099332293663 13:0.844904909906825 36:0.258530551913103
+2 1:9.92404370351134 2:0.656302508624003 3:1.44834310112208 4:2.14826167611343 5:0.947474226073251 6:2.85698993615972 7:8.32255547220435 8:10.942757574171 9:2.88130489666426 10:3.26064012038058 11:0.884425570049315 43:0.715678085420547
+2 1:9.53617676631211 2:1.33010641747798 3:1.84334576506446 4:1.14573956059383 5:1.24032989595044 6:0.540824084138149 7:8.42925490133517 8:11.9420961654195 9:3.22904859108926 10:2.33148673515339 13:0.844904909906825 25:0.157785504911465
+2 1:9.3388996172194 2:2.81772543702572 3:3.29168886618654 4:2.14826167611343 5:3.20418556453863 6:0.944194066131922 7:5.22827202741042 8:10.2432205602971 9:4.79389521600175 10:0.923678575718268 13:0.844904909906825 47:1.05184741228156
+2 1:10.0945714086593 2:0.656302508624003 3:0.92167288253223 4:0.811565522087296 5:0.068907216441691 6:2.00464604108689 7:8.14472309031964 8:11.292526081108 9:3.22904859108926 10:1.32255755422489 11:0.884425570049315 43:0.715678085420547
+2 1:9.95748050844231 2:0.393781505174402 3:1.44834310112208 4:1.94775725300951 5:-0.0516804123312682 6:2.99123249386147 7:7.93132423205799 8:10.7928567854837 9:3.12969324982497 10:3.98487920684554 11:0.884425570049315 43:0.715678085420547
+1 1:10.1514139770419 2:2.70396633553089 3:1.711678210417 4:2.4394704810977 5:1.56763917404847 6:1.79139949009655 7:6.50866517698032 8:11.5423607289201 9:4.66970103942139 10:1.36400968336381 13:0.844904909906825 46:0.674199862463242
+3 1:8.34248283027655 2:2.65146213484097 3:4.47669685801369 4:0.429652335222686 5:1.06806185484621 6:0.259492790964147 7:3.80561297233276 8:10.0433528420474 9:5.56389911079995 10:0.769601793824535 14:0.296673189340406 24:0.280975743474508
+3 1:7.43634541664731 2:2.82647613714071 3:2.23834842900684 4:0.835435096266334 5:0.706298968527332 6:0.817659215092474 7:6.25969984234173 8:11.0426914332958 9:4.57034569815711 10:0.78837256928367 14:0.296673189340406 24:0.280975743474508
+2 1:8.42941852309706 2:3.00149013944044 3:2.50168353830177 6:0.668001244066122 7:6.36639927147256 8:10.3931213489843 9:4.12324666246782 10:3.97001900960705 11:0.884425570049315 30:0.0826662747682189
+1 1:10.5626866776928 2:1.57512602069761 3:0.790005327884769 4:0.859304670445373 5:-0.0344536082208455 6:2.37140441643473 7:7.89575775568105 8:12.1919308132316 9:3.87485830930711 10:3.65091582680176 11:0.884425570049315 43:0.715678085420547
+1 1:10.3587221676139 2:0.56004480735915 3:3.423356420834 4:1.28895700566806 5:0.981927834294096 6:0.763705268456364 7:8.28698899582741 8:8.84414653254916 9:1.49033011896427 10:1.01362187479329 13:0.844904909906825 47:1.05184741228156
+2 1:10.8769926440439 2:1.6451316216175 3:2.50168353830177 4:0.773374203400835 5:0.241175257545918 6:2.15815786544439 7:7.75349185017328 8:12.4917323906062 9:3.94937481525532 10:0.976862439519151 13:0.844904909906825 46:0.674199862463242
+2 1:10.0678219647145 2:0.507540606669229 3:3.16002131153908 4:1.03116560453445 5:0.844113401410714 6:1.36362177033882 7:8.14472309031964 8:9.04401425079886 9:1.78839614275713 10:2.30020210938817 13:0.844904909906825 45:0.433012701892219
+1 1:10.947209934399 2:0.735058809658884 3:0.658337773237307 4:0.286434890148457 5:0.0172268041104227 6:2.58336634964802 7:8.07359013756576 8:11.5423607289201 9:3.4525981089339 10:0.777422950265841 11:0.884425570049315 52:0.77919372247398
+2 1:10.6395913290341 2:0.936324912303578 3:2.10668087435938 4:2.0050442310392 5:0.757979380858601 6:0.332716004256011 7:8.74935318872765 8:10.942757574171 9:2.43420586097498 10:1.58300206372039 11:0.884425570049315 36:0.258530551913103
+7 1:11.4420746473773 2:0.262521003449601 3:1.18500799182715 4:1.17915696444448 5:1.42982474116509 6:1.1227559371419 7:7.75349185017328 8:10.9927245037334 9:3.40292043830176 10:0.91351107234457 13:0.844904909906825 52:0.77919372247398
+1 1:10.6997775779098 2:2.1089187277118 3:1.58001065576954 6:1.97381521443768 7:7.0065958462575 8:12.4917323906062 9:4.71937871005353 10:0.319103182805295 13:0.844904909906825 46:0.674199862463242
+2 1:9.31883753426082 2:2.75647053622081 3:3.16002131153908 4:0.868852500116988 5:1.24032989595044 6:0.752786017351437 7:5.29940498016431 8:10.592989067234 9:4.96776706321424 10:1.90992640296699 13:0.844904909906825 47:1.05184741228156
+2 1:9.25196392439888 2:3.01024083955543 3:2.23834842900684 4:0.639704587998222 5:0.861340205521137 6:1.11183668603698 7:6.54423165335726 8:10.592989067234 9:4.09840782715175 10:2.52466929925366 11:0.884425570049315 44:0.445904036039959
+2 1:9.51945836384662 2:0.61254900804907 3:1.97501331971192 4:0.286434890148457 5:0.137814432883382 6:2.12668472990666 7:8.35812194858129 8:10.4430882785468 9:2.50872236692319 10:1.42892528182665 11:0.884425570049315 43:0.715678085420547
+2 1:8.52304157690378 2:0.105008401379841 3:2.50168353830177 4:1.79499197826367 5:2.32561855490707 6:0.616616532984112 7:7.0065958462575 8:9.84348512379766 9:3.2787262617214 10:1.28658023459488 13:0.844904909906825 47:1.05184741228156
+2 1:9.31883753426082 2:0.892571411728645 3:1.711678210417 4:1.91911376399467 5:2.29116494668622 6:1.08036355049925 7:8.57152080684294 8:11.1426252924207 9:2.73227188476783 10:0.779769297198233 11:0.884425570049315 43:0.715678085420547
+2 1:10.5660303581859 2:0.201266102644694 3:1.84334576506446 4:2.58268792617192 5:2.04998968914031 6:1.44391038140446 7:7.54009299191163 8:10.4930552081092 9:3.30356509703747 10:1.66668843764236 13:0.844904909906825 47:1.05184741228156
+2 1:10.5392809142412 2:1.26885151667307 3:1.84334576506446 4:2.05278337939728 5:1.91217525625692 6:0.578077999672605 7:8.50038785408906 8:11.8421623062946 9:3.1048544145089 10:1.1645701941105 13:0.844904909906825 46:0.674199862463242
+1 1:9.94744946696302 2:0.805064410578777 3:4.47669685801369 4:2.754548860261 5:2.60124742067383 6:0.347489108692088 7:8.85605261785847 8:8.39444416648734 9:0.471937871005353 10:0.703121964073432 13:0.844904909906825 47:1.05184741228156
+2 1:9.29877545130224 2:1.18134451552321 3:0.131667554647461 4:0.515582802267224 5:0.120587628772959 6:1.72845321902109 7:7.82462480292716 8:11.8921292358571 9:3.85001947399104 10:1.64869977782736 11:0.884425570049315 26:0.228914278114955
+1 1:10.7566201462924 2:2.80897473691073 3:2.23834842900684 4:0.405782761043648 5:0.327309278098032 6:1.79846488787033 7:6.22413336596479 8:11.0926583628583 9:4.62002336878925 10:0.98781205853698 13:0.844904909906825 37:0.418600747852556
+2 1:10.4958130678309 2:0.778812310233817 3:1.18500799182715 4:1.91911376399467 5:0.706298968527332 6:3.22310600261904 7:8.32255547220435 8:11.2425591515455 9:3.03033790856069 10:0.201785836185701 11:0.884425570049315 44:0.445904036039959
+2 1:10.3587221676139 2:0.595047607819096 3:1.44834310112208 4:6.40659370965383 5:3.37645360564286 6:1.94748055000816 7:8.25142251945046 8:10.8927906446086 9:2.9309825672964 10:1.0292641876759 13:0.844904909906825 46:0.674199862463242
+2 1:9.99091731337328 2:2.82647613714071 3:1.31667554647461 4:0.515582802267224 5:0.327309278098032 6:2.08300772548695 7:6.93546289350362 8:11.4923937993577 9:4.32195734499639 10:1.53216454685189 11:0.884425570049315 43:0.715678085420547
+1 1:11.1745802079295 2:2.36268903104641 3:2.23834842900684 4:2.0050442310392 5:1.27478350417128 6:2.05988460550005 7:6.18856688958785 8:12.1919308132316 9:5.16647774574281 10:1.37965199624642 11:0.884425570049315 53:1
+1 1:10.7900569512234 2:1.55762462046763 3:3.423356420834 4:0.835435096266334 5:0.87856700963156 6:2.21789259207723 7:7.8601912793041 8:12.1919308132316 9:3.4525981089339 10:2.38388848331015 11:0.884425570049315 36:0.258530551913103
+1 1:9.89060689858037 2:2.68646493530092 3:3.55502397548146 4:1.91911376399467 5:3.39368040975328 6:0.38410071533802 7:4.90817374001795 8:10.6429559967965 9:5.24099425169103 10:0.9627843579248 13:0.844904909906825 47:1.05184741228156
+3 1:8.14520568118384 2:0.883820711613658 3:3.68669153012892 4:0.429652335222686 5:0.068907216441691 6:0.529262524144697 7:8.99831852336624 8:9.54368354642311 9:1.16742525985535 10:0.939320888600881 13:0.844904909906825 18:0.154303349962092
+2 1:9.49939628088804 2:2.67771423518593 3:1.05334043717969 4:0.959556881997333 5:0.0516804123312682 6:0.971813348338502 7:7.04216232263445 8:11.7921953767322 9:4.42131268626068 10:1.03630322847308 13:0.844904909906825 46:0.674199862463242
+7 1:11.5858529085805 2:1.23384871621313 3:2.37001598365431 4:0.907043818803449 5:0.999154638404519 6:2.64053184072676 7:8.64265375959682 8:11.6422945880449 9:2.78194955539998 10:3.2637685829571 13:0.844904909906825
+1 1:11.0341456272195 2:2.61645933438103 3:1.58001065576954 4:4.7595930913002 5:3.27309278098032 6:0.982732599443429 7:6.61536460611115 8:11.7422284471698 9:4.69453987473746 10:2.16724244988596 13:0.844904909906825 45:0.433012701892219
+3 1:8.67685087958623 2:1.75889072311233 3:2.76501864759669 4:0.405782761043648 5:0.447896906870991 6:0.888955501718762 7:7.29112765727304 8:12.6416331792934 9:4.29711850968032 10:1.13484979963354 13:0.844904909906825 17:0.119629720910916
+1 1:9.87054481562179 2:0.857568611268698 3:1.31667554647461 4:0.730408969878567 5:0.413443298650146 6:0.250500466524796 7:8.42925490133517 8:11.2425591515455 9:2.9309825672964 10:0.567815957638834 11:0.884425570049315 43:0.715678085420547
+1 1:10.2517243918348 2:1.72388792265238 3:0.790005327884769 4:0.429652335222686 5:-0.137814432883382 6:1.40665646587001 7:7.78905832655022 8:12.241897742794 9:4.02389132120354 10:2.91963769953962 11:0.884425570049315 37:0.418600747852556
+2 1:9.91401266203205 2:0.787563010348804 3:1.18500799182715 4:1.27940917599644 5:0.447896906870991 6:3.02848640939593 7:8.35812194858129 8:11.2425591515455 9:3.00549907324462 10:2.10467319835551 11:0.884425570049315 43:0.715678085420547
+2 1:10.6329039680479 2:0.463787106094296 3:2.50168353830177 4:0.859304670445373 5:-0.292855669877187 6:1.04310963496479 7:8.07359013756576 8:9.84348512379766 9:2.38452819034284 10:1.17864827570485 11:0.884425570049315 43:0.715678085420547
+2 1:10.880336324537 2:1.02383191345345 3:2.10668087435938 4:1.54197449196586 5:0.999154638404519 6:0.0963463332787676 7:8.7137867123507 8:11.1925922219831 9:2.55840003755534 10:0.445805917154456 12:0.260796291926003 46:0.674199862463242
+1 1:10.5927798021307 2:0.542543407129176 3:3.29168886618654 4:1.92866159366628 5:1.39537113294424 6:3.20062519152066 7:8.25142251945046 8:8.99404732123644 9:1.6393631308607 10:2.61226625139629 11:0.884425570049315 44:0.445904036039959
+2 1:8.85072226522726 2:2.04766382690689 3:0.263335109294923 4:1.54197449196586 5:0.310082473987609 6:0.466316253069235 7:7.6823588974194 8:12.0420300245443 9:4.02389132120354 10:1.01596822172568 11:0.884425570049315 43:0.715678085420547
+3 1:7.42297069467492 2:1.61887952127254 3:1.58001065576954 4:0.639704587998222 5:0.620164947975219 6:0.19076573989196 7:7.89575775568105 8:12.3917985314813 9:3.89969714462318 10:0.267483550292674 14:0.296673189340406 16:0.125988157669742
+2 1:9.81704592773224 2:2.20517642897665 3:2.10668087435938 4:0.639704587998222 5:0.465123710981414 6:3.23852141594364 7:6.50866517698032 8:12.4417654610437 9:5.04228356916246 10:1.13484979963354 11:0.884425570049315 44:0.445904036039959
+2 1:9.15499719009907 2:1.42636411874283 3:0.790005327884769 4:1.47513968426456 5:0.430670102760569 6:1.48116429693892 7:8.03802366118881 8:12.0919969541068 9:3.70098646209461 10:1.27641273122118 11:0.884425570049315 26:0.228914278114955
+2 1:10.188194462466 2:3.01024083955543 3:1.05334043717969 4:3.0075663465588 5:2.77351546177806 6:3.76071854231456 7:7.21999470451915 8:11.3424930106704 9:4.04873015651961 10:4.06778346512338 11:0.884425570049315 26:0.228914278114955
+2 1:10.0343851597835 2:0.341277304484482 3:1.18500799182715 4:1.63267887384621 5:0.327309278098032 6:3.77163779341949 7:7.8601912793041 8:10.942757574171 9:3.30356509703747 10:2.88757095813027 11:0.884425570049315 43:0.715678085420547
+1 1:11.1846112494088 2:1.21634731598315 3:0.658337773237307 4:3.04575766524526 5:1.68822680282143 6:0.763705268456364 7:8.1091566139427 8:11.8921292358571 9:3.57679228551426 10:1.80903348487414 13:0.844904909906825 46:0.674199862463242
+2 1:9.74682863737721 2:0.306274504024535 3:1.31667554647461 4:3.54224480816926 5:2.67015463711552 6:0.650016595187418 7:7.78905832655022 8:10.8927906446086 9:3.32840393235354 10:1.93182564100264 13:0.844904909906825 25:0.157785504911465
+3 1:8.88415907015823 2:1.977658225987 3:1.84334576506446 4:0.20050442310392 5:0.172268041104227 6:1.27562545261088 7:7.07772879901139 8:12.591666249731 9:4.66970103942139 10:1.50322626801906 13:0.844904909906825 31:0.127293769304329
+1 1:10.947209934399 2:2.68646493530092 3:0.658337773237307 4:0.143217445074229 6:1.14009827713208 7:7.32669413364998 8:11.8421623062946 9:4.22260200373211 10:1.10278305822418 13:0.844904909906825 52:0.77919372247398
+3 1:8.64007039416216 2:0.875070011498671 3:1.31667554647461 6:0.956397935013899 7:8.42925490133517 8:11.3424930106704 9:2.98066023792855 10:0.915075303632832 13:0.844904909906825 16:0.125988157669742
+3 1:8.68019456007933 2:1.8463977242622 3:3.02835375689161 4:1.59926146999555 5:3.0319175234344 6:1.01741727942379 7:6.93546289350362 8:12.6916001088559 9:4.59518453347318 10:0.603011161624712 13:0.844904909906825 18:0.154303349962092
+1 1:10.0979150891524 2:1.49636971966273 3:2.63335109294923 4:1.43217445074229 5:0.671845360306487 6:1.17542526600096 7:8.18028956669658 8:12.241897742794 9:3.42775927361783 10:1.14188884043071 11:0.884425570049315 43:0.715678085420547
+2 1:9.22521448045411 2:2.61645933438103 3:0.790005327884769 4:0.143217445074229 6:1.41757571697493 7:7.18442822814221 8:11.8921292358571 9:4.34679618031246 10:0.748484671433008 13:0.844904909906825 45:0.433012701892219
+2 1:10.0343851597835 2:0.393781505174402 3:1.31667554647461 4:0.515582802267224 5:0.103360824662536 6:2.88846307169745 7:7.93132423205799 8:10.8927906446086 9:3.20420975577319 10:2.10780166093203 11:0.884425570049315 43:0.715678085420547
+1 1:9.55623884927069 2:0.210016802759681 3:1.44834310112208 4:0.907043818803449 5:0.585711339754373 6:0.562020277459477 7:7.61122594466551 8:10.7428898559213 9:3.37808160298569 10:2.03193644345136 13:0.844904909906825 25:0.157785504911465
+1 1:11.0675824321504 2:2.66896353507095 3:1.44834310112208 4:1.77112240408463 5:1.3609175247234 6:2.58336634964802 7:6.72206403524197 8:11.6922615176074 9:4.59518453347318 10:1.00892918092851 11:0.884425570049315
+1 1:10.9605846563714 2:2.66021283495596 3:1.58001065576954 4:2.5015313739632 5:0.792432989079446 6:0.453470075298733 7:6.61536460611115 8:11.6922615176074 9:4.66970103942139 10:1.13484979963354 12:0.260796291926003 37:0.418600747852556
+1 1:10.2383496698624 2:0.577546207589123 3:1.31667554647461 4:0.730408969878567 5:-0.0861340205521137 6:1.09899050826648 7:8.18028956669658 8:10.942757574171 9:3.00549907324462 10:0.745356208856486 13:0.844904909906825 45:0.433012701892219
+1 1:11.0241145857402 2:0.315025204139522 3:1.05334043717969 4:0.716087225371144 5:0.120587628772959 6:2.10613084547386 7:7.82462480292716 8:11.0426914332958 9:3.40292043830176 10:1.49462299593362 11:0.884425570049315 43:0.715678085420547
+1 1:10.3787842505725 2:1.12884031483329 3:0.790005327884769 4:2.14826167611343 5:0.137814432883382 6:3.32587542478306 7:8.21585604307352 8:11.7921953767322 9:3.42775927361783 10:1.12859287448049 11:0.884425570049315 43:0.715678085420547
+2 1:9.60305037617404 2:1.03258261356843 3:0.526670218589846 6:1.07715200605662 7:8.03802366118881 8:11.7921953767322 9:3.60163112083033 10:1.97797046400635 13:0.844904909906825 30:0.0826662747682189
+7 1:10.6295602875548 2:1.28635291690305 3:3.95002663942384 4:0.572869780296915 5:0.3789896904293 6:0.801601492879346 7:8.67822023597376 8:10.9927245037334 9:2.03678449591784 10:0.67574791652886 13:0.844904909906825 53:1
+7 1:10.8736489635508 2:0.542543407129176 3:1.711678210417 4:0.515582802267224 5:-0.0344536082208455 6:1.08036355049925 7:8.18028956669658 8:10.6429559967965 9:2.80678839071605 10:0.736752936771049 13:0.844904909906825 53:1
+1 1:10.3687532090932 3:0.395002663942384 4:1.72338325572655 5:0.0516804123312682 6:1.56081059911603 7:7.64679242104245 8:11.6422945880449 9:3.87485830930711 10:1.65886728120106 13:0.844904909906825 46:0.674199862463242
+2 1:10.0210104378111 2:2.59895793415105 3:1.31667554647461 4:2.98847068721557 5:-0.637391752085641 6:1.04310963496479 7:6.8287634643728 8:11.8421623062946 9:4.57034569815711 10:1.58769475758517 13:0.844904909906825 45:0.433012701892219
+1 1:9.7535159983634 2:1.54012322023766 3:2.10668087435938 4:0.286434890148457 5:0.103360824662536 6:2.34314282533963 7:8.07359013756576 8:12.3418316019189 9:3.67614762677854 10:1.50244415237493 11:0.884425570049315 26:0.228914278114955
+1 1:10.8870236855232 2:0.603798307934083 3:0.92167288253223 4:1.23167002763837 5:0.809659793189869 6:3.47424877803236 7:8.1091566139427 8:11.292526081108 9:3.25388742640533 10:0.348823577282259 11:0.884425570049315 36:0.258530551913103
+2 1:10.5626866776928 3:0.131667554647461 4:1.74247891506978 5:-0.0344536082208455 6:2.52491624079224 7:7.71792537379634 8:11.7921953767322 9:3.87485830930711 10:3.56488310594739 11:0.884425570049315 43:0.715678085420547
+1 1:10.4189084164897 2:2.40644253162135 3:1.18500799182715 4:2.63997490420162 5:-0.551257731533528 6:3.94506119332127 7:7.0065958462575 8:12.0919969541068 9:4.59518453347318 10:1.17551981312833 11:0.884425570049315 43:0.715678085420547
+2 1:9.84713905217011 2:1.61887952127254 3:1.18500799182715 4:2.74977494542519 5:0.844113401410714 6:3.86991105336383 7:7.89575775568105 8:12.2918646723565 9:3.92453597993925 10:4.44319897430608 11:0.884425570049315 43:0.715678085420547
+1 1:9.28874440982294 2:2.58145653392108 3:2.37001598365431 4:0.143217445074229 5:0.18949484521465 6:1.31930245703059 7:5.9751680313262 8:11.6422945880449 9:5.06712240447853 10:2.52701564618605 11:0.884425570049315 34:0.169841555121689
+3 1:6.59373793238691 2:3.15025204139522 3:3.423356420834 4:0.515582802267224 5:0.826886597300292 6:0.0963463332787676 7:6.15300041321091 8:9.14394810992371 9:3.47743694424997 10:0.417649753965754 14:0.296673189340406 24:0.280975743474508
+2 1:9.01121892889591 2:0.533792707014189 3:1.44834310112208 4:1.92866159366628 5:0.206721649325073 6:1.12339824603043 7:8.14472309031964 8:10.8428237150461 9:2.98066023792855 10:4.73179964699028 11:0.884425570049315 26:0.228914278114955
+1 1:10.8736489635508 2:1.11133891460331 3:2.63335109294923 4:2.77841843444004 5:2.34284535901749 6:1.69248392126368 7:8.85605261785847 8:11.0926583628583 9:2.28517284907855 10:2.11405858608508 13:0.844904909906825 47:1.05184741228156
+1 1:10.4724073043792 2:3.05399434013036 3:1.711678210417 4:1.94775725300951 5:0.87856700963156 6:0.751501399574387 7:6.93546289350362 8:10.8927906446086 9:3.99905248588747 10:2.01472989928049 13:0.844904909906825 45:0.433012701892219
+7 1:11.4621367303359 2:0.848817911153711 3:3.423356420834 4:1.71860934089075 5:3.27309278098032 6:2.50243542969386 7:8.92718557061235 8:9.69358433511038 9:1.34129710706785 10:2.76008610813698 13:0.844904909906825 53:1
+1 1:9.79698384477366 2:0.866319311383684 3:1.84334576506446 4:0.286434890148457 5:-0.275628865766764 6:0.426493101980678 7:8.64265375959682 8:10.9927245037334 9:2.55840003755534 10:0.544352488314915 11:0.884425570049315 36:0.258530551913103
+2 1:9.36899274165727 2:3.00149013944044 3:2.37001598365431 4:1.49423534360779 5:2.17057731791327 6:1.49208354804385 7:6.43753222422644 8:10.4930552081092 9:4.09840782715175 10:1.81216194745066 11:0.884425570049315 43:0.715678085420547
+2 1:9.9675115499216 2:0.945075612418565 3:1.97501331971192 4:2.86434890148458 5:-1.18864948361917 6:0.585143397446382 7:8.7137867123507 8:11.0426914332958 9:2.50872236692319 10:1.06289516037352 11:0.884425570049315 43:0.715678085420547
+1 1:9.59636301518785 2:2.97523803909548 3:0.92167288253223 6:3.25393682926824 7:7.29112765727304 8:11.4923937993577 9:4.04873015651961 10:3.44209094981888 11:0.884425570049315 30:0.0826662747682189
+1 1:9.93741842548373 3:1.44834310112208 4:0.959556881997333 5:0.516804123312682 6:2.21596566541165 7:7.2555611808961 8:10.9927245037334 9:3.8003418033589 10:5.10017611537581 11:0.884425570049315 43:0.715678085420547
+6 1:7.28922347495105 2:0.288773103794562 3:4.08169419407131 4:0.639704587998222 5:0.930247421962828 6:0.341708328695362 7:7.0065958462575 8:7.74487408217582 9:1.88775148402141 10:0.249494890477669 14:0.296673189340406 24:0.280975743474508
+1 1:11.0207709052471 2:2.47644813254124 3:1.711678210417 4:2.9407315388575 5:2.25671133846538 6:2.736235865117 7:6.5797981297342 8:11.9920630949819 9:4.84357288663389 10:1.91461909683177 13:0.844904909906825 52:0.77919372247398
+2 1:9.93741842548373 2:0.63880110839403 3:1.44834310112208 4:0.606287184147568 5:0.396216494539723 6:2.84350144950069 7:8.28698899582741 8:10.8927906446086 9:2.85646606134819 10:3.02209484892074 11:0.884425570049315 43:0.715678085420547
+2 1:9.9675115499216 2:0.56004480735915 3:2.89668620224415 4:0.606287184147568 5:0.516804123312682 6:3.31881002700928 7:8.32255547220435 8:9.49371661686068 9:1.93742915465356 10:0.423124563474668 11:0.884425570049315 44:0.445904036039959
+1 1:10.6094982045962 2:1.89015122483713 3:0.790005327884769 4:1.22212219796675 5:0.413443298650146 6:0.673139715174323 7:7.61122594466551 8:12.2918646723565 9:4.17292433309997 10:1.59551591402648 12:0.260796291926003 33:0.0483368244522832
+1 1:10.8067753536889 2:1.57512602069761 3:3.423356420834 4:0.730408969878567 5:0.706298968527332 6:1.30260242592894 7:7.78905832655022 8:12.2918646723565 9:3.55195345019819 10:1.16769865668702 13:0.844904909906825 47:1.05184741228156
+2 1:9.91066898153895 2:1.30385431713302 3:1.44834310112208 4:1.46081793975713 5:1.53318556582762 6:2.64053184072676 7:8.35812194858129 8:11.9420961654195 9:3.32840393235354 10:1.26780945913574 11:0.884425570049315 26:0.228914278114955
+1 1:10.6496223705133 2:2.98398873921047 3:1.84334576506446 4:0.143217445074229 5:0.0516804123312682 6:2.68677808070056 7:6.79319698799585 8:10.942757574171 9:4.14808549778389 10:1.55562801617581 13:0.844904909906825 36:0.258530551913103
+2 1:8.98112580445804 2:0.140011201839787 3:1.97501331971192 4:1.11709607157898 5:0.155041236993805 6:1.71496473236206 7:7.32669413364998 8:10.3931213489843 9:3.40292043830176 10:1.89193774315198 13:0.844904909906825 24:0.280975743474508
+2 1:10.8970547270025 2:2.70396633553089 3:1.31667554647461 4:0.515582802267224 5:0.0861340205521137 6:0.380246862006869 7:6.8287634643728 8:11.6422945880449 9:4.52066802752496 10:0.814182385539981 12:0.260796291926003 46:0.674199862463242
+2 1:9.38905482461585 2:1.07633611414337 3:1.44834310112208 4:0.716087225371144 5:0.292855669877187 6:2.05538844328037 7:8.50038785408906 8:11.5423607289201 9:3.00549907324462 10:4.70286136815745 11:0.884425570049315 26:0.228914278114955
+5 1:9.1282477461543 2:2.94898593875052 3:2.76501864759669 4:0.405782761043648 5:0.310082473987609 6:0.821513068423625 7:6.04630098408008 8:10.3431544194219 9:4.29711850968032 10:1.74411788641129 11:0.884425570049315 43:0.715678085420547
+5 1:9.81704592773224 2:0.988829112993498 3:3.02835375689161 4:1.54197449196586 5:1.87772164803608 6:0.734801368472734 7:8.9627520469893 8:10.4930552081092 9:1.8132349780732 10:0.329270686178993 11:0.884425570049315 44:0.445904036039959
+2 1:9.62979982011882 2:3.05399434013036 3:1.58001065576954 4:1.36056572820517 5:0.206721649325073 6:0.434843117531504 7:7.0065958462575 8:10.942757574171 9:3.9742136505714 10:0.645245406407766 13:0.844904909906825 46:0.674199862463242
+1 1:11.1612054859572 2:2.46769743242625 3:1.58001065576954 4:3.71410574225833 5:2.39452577134876 6:0.554954879685701 7:6.68649755886503 8:12.0420300245443 9:4.79389521600175 10:0.748484671433008 12:0.260796291926003 37:0.418600747852556
+1 1:9.97085523041469 2:0.0700056009198937 3:1.84334576506446 4:1.01206994519122 5:0.292855669877187 6:1.51777590358485 7:7.18442822814221 8:10.5430221376716 9:3.57679228551426 10:1.64791766218323 13:0.844904909906825 38:0.217872335165298
+2 1:9.6532055835705 2:1.19884591575318 3:2.89668620224415 4:3.84300144282514 5:1.8949484521465 6:1.495937401375 7:8.78491966510459 8:11.292526081108 9:2.38452819034284 10:1.24903868367661 13:0.844904909906825 27:0.184010991918219
+1 1:9.98088627189398 2:0.315025204139522 3:1.05334043717969 4:1.49423534360779 5:-0.0172268041104227 6:1.66293771239153 7:7.82462480292716 8:11.0926583628583 9:3.42775927361783 10:1.09574401742701 11:0.884425570049315 43:0.715678085420547
+2 1:8.61666463071048 2:1.28635291690305 3:1.84334576506446 4:0.591965439640145 5:0.654618556196064 6:0.0963463332787676 7:8.46482137771211 8:11.8921292358571 9:3.15453208514105 10:1.28423388766249 11:0.884425570049315 44:0.445904036039959
+7 1:10.9639283368644 2:0.58629690770411 3:2.89668620224415 4:0.286434890148457 5:-0.0861340205521137 6:2.46967767637908 7:8.35812194858129 8:9.54368354642311 9:1.88775148402141 10:1.616633036418 11:0.884425570049315 52:0.77919372247398
+2 1:8.03152054441854 2:2.94898593875052 3:1.711678210417 4:0.20050442310392 5:0.0516804123312682 6:0.368042993124892 7:6.8287634643728 8:11.0926583628583 9:4.19776316841604 10:0.9627843579248 13:0.844904909906825 24:0.280975743474508
+1 1:10.1079461306317 2:0.901322111843631 3:1.05334043717969 4:0.319852293999111 5:0.0861340205521137 6:1.14074058602061 7:8.28698899582741 8:11.4923937993577 9:3.22904859108926 10:1.33898198275163 11:0.884425570049315 37:0.418600747852556
+1 1:11.6761322818941 2:2.62521003449601 3:2.23834842900684 4:0.730408969878567 5:1.34369072061297 6:1.9359189900147 7:6.01073450770314 8:11.5423607289201 9:4.99260589853032 10:1.53763935636081 11:0.884425570049315
+2 1:9.0245936508683 2:0.542543407129176 3:2.23834842900684 4:1.94775725300951 5:1.70545360693185 6:0.882532412833511 7:8.25142251945046 8:10.1432867011722 9:2.43420586097498 10:1.85830677045437 11:0.884425570049315 44:0.445904036039959
+2 1:9.90732530104586 2:2.35393833093143 3:1.711678210417 4:4.17717548133167 5:10.1293608169286 6:0.612120370764437 7:6.61536460611115 8:12.1919308132316 9:4.89325055726603 10:1.68467709745737 13:0.844904909906825 46:0.674199862463242
+1 1:10.2751301552865 2:0.428784305634349 3:2.10668087435938 4:2.43469656626189 5:0.068907216441691 6:2.35085053200193 7:8.00245718481187 8:10.1432867011722 9:2.68259421413569 10:3.69393218722894 11:0.884425570049315 43:0.715678085420547
+2 1:10.3654095286001 2:3.12399994105026 3:1.18500799182715 4:0.811565522087296 5:0.310082473987609 6:0.405296908659349 7:7.36226061002692 8:11.2425591515455 9:3.87485830930711 10:1.29049081281553 11:0.884425570049315 37:0.418600747852556
+2 1:9.83710801069082 2:0.481288506324269 3:1.84334576506446 4:0.773374203400835 5:0.103360824662536 6:2.5775855696513 7:8.1091566139427 8:10.4930552081092 9:2.78194955539998 10:3.83002030930767 11:0.884425570049315 43:0.715678085420547
+1 1:9.84045169118392 2:0.350028004599468 3:1.44834310112208 4:0.20050442310392 5:-0.0172268041104227 6:0.518985581928295 7:7.8601912793041 8:10.7928567854837 9:3.17937092045712 10:1.73082192046107 13:0.844904909906825 38:0.217872335165298
+1 1:10.1447266160557 2:0.892571411728645 3:2.76501864759669 4:0.515582802267224 5:0.344536082208455 6:2.99059018497295 7:8.89161909423541 8:10.3431544194219 9:1.83807381338927 10:1.5501532066669 11:0.884425570049315 43:0.715678085420547
+1 1:10.0444162012628 2:0.323775904254508 3:1.31667554647461 4:2.754548860261 5:1.46427834938593 6:3.34771392699291 7:7.82462480292716 8:10.942757574171 9:3.30356509703747 10:4.32588162768649 11:0.884425570049315 34:0.169841555121689
+1 1:10.7900569512234 2:2.56395513369111 3:2.50168353830177 4:3.3799317037518 5:0.413443298650146 6:0.935201741692571 7:5.83290212581843 8:11.5923276584825 9:5.16647774574281 10:1.08714074534157 13:0.844904909906825 47:1.05184741228156
+3 1:8.05826998836332 2:1.85514842437718 3:0.395002663942384 4:0.319852293999111 5:-0.0516804123312682 6:0.472097033065961 7:7.71792537379634 8:12.0919969541068 9:4.02389132120354 10:0.814182385539981 13:0.844904909906825 16:0.125988157669742
+7 1:11.3551389545568 2:3.01899153967042 3:1.44834310112208 4:4.86461921768797 5:2.15335051380284 6:0.8234399950892 7:7.07772879901139 8:11.1426252924207 9:4.04873015651961 10:1.42892528182665 13:0.844904909906825 52:0.77919372247398
+1 1:10.2450370308486 2:0.630050408279043 3:1.44834310112208 4:3.43721868178149 5:3.39368040975328 6:4.05104215992791 7:8.28698899582741 8:10.8927906446086 9:2.88130489666426 10:2.82578382224395 11:0.884425570049315 43:0.715678085420547
+1 1:10.4189084164897 2:0.647551808509017 3:2.10668087435938 4:2.88344456082781 5:-0.723525772637755 6:2.68870500736614 7:8.46482137771211 8:10.3931213489843 9:2.38452819034284 10:3.49762116055216 11:0.884425570049315 37:0.418600747852556
+2 1:8.65678879662765 2:2.32768623058647 3:0.395002663942384 4:0.859304670445373 5:1.08528865895663 6:0.791966859551469 7:7.50452651553469 8:12.0420300245443 9:4.14808549778389 10:1.31082581956293 13:0.844904909906825 16:0.125988157669742
+2 1:9.03128101185449 2:1.08508681425835 3:1.18500799182715 4:2.26283563217281 5:0.516804123312682 6:0.790039932885894 7:8.35812194858129 8:11.6922615176074 9:3.20420975577319 10:2.18992380356575 11:0.884425570049315 26:0.228914278114955
+3 1:8.33245178879726 2:2.56395513369111 3:1.84334576506446 4:1.21734828313094 5:0.861340205521137 6:0.181773415452608 7:6.4019657478495 8:11.7921953767322 9:4.86841172194996 10:1.54389628151385 14:0.296673189340406 24:0.280975743474508
+1 1:10.08454036718 2:0.525042006899203 3:2.50168353830177 4:0.429652335222686 5:0.0861340205521137 6:0.647447359633318 7:8.21585604307352 8:9.79351819423523 9:2.21065634313034 10:0.802450650878021 11:0.884425570049315 43:0.715678085420547
+2 1:9.39574218560204 2:1.31260501724801 3:3.02835375689161 4:1.94775725300951 5:3.22141236864905 6:1.0790789327222 7:8.60708728321988 8:11.5923276584825 9:2.63291654350355 10:1.1262465275481 13:0.844904909906825 18:0.154303349962092
+1 1:11.0107398637678 2:0.61254900804907 3:2.50168353830177 4:0.916591648475064 5:0.172268041104227 6:1.42207187919461 7:8.42925490133517 8:9.89345205336008 9:2.11130100186605 10:3.53985540533521 12:0.260796291926003 53:1
+1 1:10.8268374366475 2:0.183764702414721 3:1.58001065576954 4:1.43217445074229 5:0.396216494539723 6:0.951259463905698 7:7.54009299191163 8:10.7428898559213 9:3.42775927361783 10:1.83249695419805 11:0.884425570049315 43:0.715678085420547
+3 1:7.77405714645009 2:2.44144533208129 3:1.44834310112208 4:1.28895700566806 5:1.7399072151527 6:0.556239497462751 7:6.68649755886503 8:12.0420300245443 9:4.79389521600175 10:0.0234634693239188 14:0.296673189340406 20:0.129459555600631
+2 1:9.45258475398469 2:2.77397193645079 3:2.23834842900684 4:1.43217445074229 5:1.18864948361917 6:1.91086894336222 7:6.11743393683396 8:11.0926583628583 9:4.69453987473746 10:2.34009000723883 11:0.884425570049315 26:0.228914278114955
+2 1:9.67995502751527 2:0.901322111843631 3:2.23834842900684 4:0.515582802267224 5:0.637391752085641 6:3.55903355131767 7:8.78491966510459 8:10.7428898559213 9:2.26033401376248 10:0.567815957638834 11:0.884425570049315 44:0.445904036039959
+6 1:8.24885977646984 2:0.288773103794562 3:1.05334043717969 4:0.20050442310392 5:0.0861340205521137 6:0.0610193444098861 7:7.78905832655022 8:11.1426252924207 9:3.47743694424997 10:0.939320888600881 13:0.844904909906825 24:0.280975743474508
+5 1:9.8605137741425 2:0.866319311383684 3:2.89668620224415 4:1.47513968426456 5:3.51426803852624 6:1.30838320592566 7:8.89161909423541 8:10.1932536307346 9:1.76355730744106 10:0.520889018990996 13:0.844904909906825 27:0.184010991918219
+2 1:10.2049128649315 2:1.56637532058262 3:1.58001065576954 4:1.43217445074229 5:0.895793813741983 6:1.43877191029626 7:8.00245718481187 8:12.3418316019189 9:3.8003418033589 10:1.09574401742701 13:0.844904909906825 46:0.674199862463242
+1 1:10.9405225734128 3:1.18500799182715 4:2.47288788494835 5:1.96385566858819 6:3.36698319364866 7:7.39782708640386 8:11.1925922219831 9:3.82518063867497 10:1.39529430912904 11:0.884425570049315 43:0.715678085420547
+1 1:9.09146726073023 2:3.06274504024535 3:1.84334576506446 4:0.572869780296915 5:0.482350515091837 6:1.11890208381075 7:6.86432994074974 8:10.7428898559213 9:3.9742136505714 10:0.965130704857191 11:0.884425570049315 43:0.715678085420547
+2 1:10.258411752821 2:0.122509801609814 3:0.526670218589846 4:0.20050442310392 5:0.0344536082208455 6:1.05467119495824 7:7.6823588974194 8:11.5423607289201 9:3.8003418033589 10:1.39373007784077 11:0.884425570049315 37:0.418600747852556
+1 1:10.5894361216376 2:3.00149013944044 3:0.790005327884769 4:0.859304670445373 5:-0.18949484521465 6:0.502285550826642 7:7.39782708640386 8:11.5423607289201 9:3.99905248588747 10:0.823567773269548 12:0.260796291926003 36:0.258530551913103
+1 1:10.4222520969828 2:2.88773103794561 3:1.711678210417 4:0.835435096266334 5:0.534030927423105 6:3.36698319364866 7:6.72206403524197 8:11.1925922219831 9:4.32195734499639 10:0.294075482193115 11:0.884425570049315 43:0.715678085420547
+6 1:7.90446068568086 2:0.796313710463791 3:3.68669153012892 4:0.20050442310392 5:0.241175257545918 6:0.304454413160905 7:8.85605261785847 8:9.24388196904856 9:1.14258642453928 10:0.689825998123211 13:0.844904909906825 18:0.154303349962092
+2 1:9.90063794005966 2:0.542543407129176 3:0.658337773237307 4:1.08845258256414 5:0.3789896904293 6:1.54667980356848 7:7.96689070843493 8:11.4923937993577 9:3.52711461488211 10:1.68936979132215 11:0.884425570049315 43:0.715678085420547
+2 1:10.1346955745764 2:0.490039206439256 3:1.31667554647461 4:1.0025221155196 5:0.68907216441691 6:3.57637589130785 7:8.07359013756576 8:10.8927906446086 9:3.08001557919283 10:3.736166432012 11:0.884425570049315 43:0.715678085420547
+2 1:9.84713905217011 2:2.16142292840172 3:0.658337773237307 4:2.11484427226278 5:0.895793813741983 6:3.78319935341294 7:7.4333935627808 8:12.1919308132316 9:4.29711850968032 10:4.75057042244942 11:0.884425570049315 43:0.715678085420547
+1 1:10.5493119557204 2:0.113759101494827 3:0.526670218589846 4:0.143217445074229 5:0.068907216441691 6:0.833716937305602 7:7.64679242104245 8:11.5423607289201 9:3.77550296804283 10:0.30033240734616 13:0.844904909906825 35:0.0490880693673816
+1 1:10.5158751507895 2:2.56395513369111 3:1.711678210417 4:1.11709607157898 5:1.67099999871101 6:2.02391530774264 7:6.47309870060338 8:11.8421623062946 9:4.81873405131782 10:2.30333057196469 13:0.844904909906825 38:0.217872335165298
+2 1:9.11821670467501 2:1.52262182000769 3:1.18500799182715 4:0.143217445074229 5:-0.068907216441691 6:1.42656804141429 7:8.03802366118881 8:12.241897742794 9:3.77550296804283 10:0.634295787389937 13:0.844904909906825 24:0.280975743474508
+2 1:9.82707696921153 2:2.42394393185132 3:1.58001065576954 4:0.773374203400835 5:0.620164947975219 6:3.27192147814695 7:6.61536460611115 8:12.0919969541068 9:4.84357288663389 10:1.17864827570485 11:0.884425570049315 43:0.715678085420547
+2 1:9.09815462171643 2:1.11133891460331 3:0.658337773237307 4:0.716087225371144 5:0.602938143864796 6:1.6211876346374 7:8.14472309031964 8:11.8421623062946 9:3.52711461488211 10:3.81828857464571 11:0.884425570049315 26:0.228914278114955
+1 1:9.52948940532591 2:2.27518202989654 3:4.47669685801369 4:0.639704587998222 5:1.41259793705466 6:1.42464111474871 7:4.30354364160994 8:11.7422284471698 9:5.96132047585709 10:1.18568731650203 13:0.844904909906825 27:0.184010991918219
+2 1:8.88750275065133 2:0.210016802759681 3:3.16002131153908 4:0.572869780296915 5:0.465123710981414 6:0.671212788508747 7:7.07772879901139 8:8.99404732123644 9:2.65775537881962 10:1.3945121934849 13:0.844904909906825 47:1.05184741228156
+7 1:11.0107398637678 2:0.69130530908395 3:5.66170484984084 4:0.319852293999111 5:0.654618556196064 6:1.11183668603698 7:8.28698899582741 8:6.39576698399036 10:0.586586733097969 13:0.844904909906825
+1 1:11.0441766686988 2:2.94898593875052 3:1.58001065576954 4:2.34876609921735 5:1.11974226717748 6:0.524124053036496 7:6.89989641712668 8:11.1925922219831 9:4.19776316841604 10:1.05820246650874 12:0.260796291926003 37:0.418600747852556
+1 1:10.5158751507895 2:2.36268903104641 3:1.44834310112208 4:4.67366262425567 5:6.46005154140853 6:0.79453609510557 7:6.8287634643728 8:12.1919308132316 9:4.76905638068567 10:1.04647073184678 13:0.844904909906825 45:0.433012701892219
+2 1:9.94744946696302 2:2.10016802759681 3:2.89668620224415 4:1.11709607157898 5:1.3609175247234 6:1.99244217220491 7:6.15300041321091 8:12.591666249731 9:5.24099425169103 10:1.5298181999195 13:0.844904909906825 27:0.184010991918219
+3 1:8.76378657240675 2:1.20759661586817 3:0.92167288253223 4:0.811565522087296 5:0.292855669877187 6:1.03604423719101 7:8.21585604307352 8:11.8921292358571 9:3.47743694424997 10:0.707032542294085 13:0.844904909906825 16:0.125988157669742
+3 1:8.22545401301816 2:2.56395513369111 3:2.63335109294923 4:0.730408969878567 5:0.792432989079446 6:0.16443107546243 7:5.72620269668761 8:11.5923276584825 9:5.19131658105889 10:0.631167324813415 14:0.296673189340406 24:0.280975743474508
+2 1:10.3687532090932 2:0.953826312533552 3:1.18500799182715 4:2.43469656626189 5:0.723525772637755 6:0.346846799803563 7:8.35812194858129 8:11.5423607289201 9:3.15453208514105 10:0.915075303632832 13:0.844904909906825 46:0.674199862463242
+2 1:9.42917899053301 2:0.341277304484482 3:1.18500799182715 4:0.20050442310392 5:0.0516804123312682 6:1.89352660337205 7:7.8601912793041 8:10.9927245037334 9:3.32840393235354 10:3.49840327619629 11:0.884425570049315 34:0.169841555121689
+2 1:9.71339183244624 2:0.245019603219628 3:3.29168886618654 4:0.20050442310392 5:0.361762886318878 6:0.938413286135196 7:7.18442822814221 8:8.89411346211159 9:2.50872236692319 10:0.830606814066724 13:0.844904909906825 45:0.433012701892219
+2 1:10.1781634209867 2:2.75647053622081 3:0.131667554647461 4:1.32237440951871 5:1.46427834938593 6:2.62062026518248 7:7.6823588974194 8:11.8421623062946 9:3.94937481525532 10:1.71439749193433 11:0.884425570049315 44:0.445904036039959
+1 1:10.0945714086593 2:0.175014002299734 3:0.790005327884769 6:3.29761383368795 7:7.6823588974194 8:11.3924599402328 9:3.70098646209461 10:1.95294276339417 11:0.884425570049315 37:0.418600747852556
+1 1:10.6596534119926 2:0.315025204139522 3:1.711678210417 4:2.18645299479989 5:0.620164947975219 6:3.8487148600425 7:7.78905832655022 8:10.5430221376716 9:3.1048544145089 10:0.844684895661075 11:0.884425570049315 43:0.715678085420547
+2 1:8.85072226522726 2:2.26643132978156 3:0.131667554647461 4:0.716087225371144 6:0.33143138647896 7:7.6823588974194 8:11.9420961654195 9:3.99905248588747 10:1.19194424165507 11:0.884425570049315 26:0.228914278114955
+2 1:10.9773030588368 2:2.38894113139137 3:1.31667554647461 4:4.10079284395875 5:3.73821649196174 6:4.06774219102957 7:6.8287634643728 8:12.1419638836692 9:4.71937871005353 10:1.44065701648861 11:0.884425570049315 43:0.715678085420547
+2 1:10.0343851597835 2:0.376280104944429 3:1.05334043717969 4:3.89551450601902 5:3.13527834809694 6:0.732232132918634 7:7.89575775568105 8:11.0926583628583 9:3.37808160298569 10:1.91227274989938 13:0.844904909906825 46:0.674199862463242
+1 1:9.83710801069082 2:0.428784305634349 3:0.526670218589846 6:3.37147935586834 7:7.89575775568105 8:11.4923937993577 9:3.57679228551426 10:2.13048301461182 11:0.884425570049315 30:0.0826662747682189
+2 1:8.62000831120358 2:0.708806709313924 3:1.44834310112208 4:1.57539189581652 5:-0.706298968527332 6:0.664147390734971 7:8.35812194858129 8:11.0426914332958 9:2.90614373198033 10:0.267483550292674 11:0.884425570049315 36:0.258530551913103
+2 1:9.34893065869869 2:0.647551808509017 3:2.10668087435938 4:0.286434890148457 5:0.292855669877187 6:0.347489108692088 7:8.46482137771211 8:10.3931213489843 9:2.38452819034284 10:0.727367549041481 11:0.884425570049315 37:0.418600747852556
+2 1:9.49605260039495 2:0.210016802759681 3:1.31667554647461 4:0.429652335222686 5:0.206721649325073 6:2.03868841217872 7:7.64679242104245 8:10.8927906446086 9:3.47743694424997 10:3.7744900985744 11:0.884425570049315 38:0.217872335165298
+1 1:10.6897465364305 2:1.10258821448833 3:1.18500799182715 4:0.405782761043648 5:-0.0344536082208455 6:1.5036451080373 7:8.35812194858129 8:11.6922615176074 9:3.22904859108926 10:0.793847378792585 11:0.884425570049315 36:0.258530551913103
+2 1:9.66323662504979 2:0.551294107244163 3:2.37001598365431 4:0.405782761043648 5:0.068907216441691 6:0.378319935341294 7:8.28698899582741 8:9.99338591248493 9:2.28517284907855 10:0.104803496313504 13:0.844904909906825 47:1.05184741228156
+1 1:10.6797154949512 2:1.3826106181679 3:0.658337773237307 6:0.608266517433286 7:8.03802366118881 8:12.0420300245443 9:3.70098646209461 10:1.08166593583265 11:0.884425570049315 37:0.418600747852556
+2 1:10.3420037651484 2:1.61887952127254 3:2.37001598365431 4:1.74725282990559 5:0.775206184969023 6:1.58907219021114 7:7.82462480292716 8:12.4917323906062 9:3.85001947399104 10:2.48790986397952 13:0.844904909906825 47:1.05184741228156
+2 1:10.7867132707303 2:1.57512602069761 3:0.263335109294923 4:2.31057478053089 5:0.723525772637755 6:0.427777719757728 7:7.82462480292716 8:11.9920630949819 9:3.89969714462318 10:1.34054621403989 13:0.844904909906825 46:0.674199862463242
+1 1:10.7633075072786 2:1.1200896147183 3:1.44834310112208 4:2.37263567339639 5:1.3609175247234 6:0.513204801931569 7:8.46482137771211 8:11.6422945880449 9:3.08001557919283 10:2.01551201492462 11:0.884425570049315 36:0.258530551913103
+1 1:10.4891257068447 2:2.68646493530092 3:0.658337773237307 6:0.447046986413482 7:7.36226061002692 8:11.8421623062946 9:4.19776316841604 10:0.847813358237598 12:0.260796291926003 37:0.418600747852556
+1 1:10.0912277281662 2:0.997579813108485 3:1.97501331971192 4:0.319852293999111 5:0.172268041104227 6:2.33671973645438 7:8.67822023597376 8:11.1925922219831 9:2.63291654350355 10:2.04914298762224 11:0.884425570049315 44:0.445904036039959
+2 1:9.80367120575985 2:0.761310910003844 3:1.18500799182715 4:1.71860934089075 5:1.17142267950875 6:2.04768073661807 7:8.32255547220435 8:11.2425591515455 9:3.05517674387676 10:1.8489213827248 11:0.884425570049315 43:0.715678085420547
+5 1:8.68688192106552 2:1.48761901954774 3:1.18500799182715 4:0.405782761043648 5:0.103360824662536 6:1.90573047225402 7:8.07359013756576 8:12.1919308132316 9:3.70098646209461 10:1.64791766218323 13:0.844904909906825 16:0.125988157669742
+1 1:10.2316623088762 2:0.56004480735915 3:2.89668620224415 4:0.773374203400835 5:0.551257731533528 6:3.12290581600912 7:8.32255547220435 8:9.44374968729826 9:1.91259031933748 10:2.1578570621564 11:0.884425570049315 43:0.715678085420547
+4 1:7.48315694355067 2:1.21634731598315 3:3.29168886618654 4:1.54197449196586 5:1.86049484392566 6:0.791966859551469 7:8.82048614148153 8:11.0926583628583 9:2.1609786724982 10:0.524799597211649 14:0.296673189340406 17:0.119629720910916
+3 1:9.18509031453694 2:0.918823512073605 3:0.395002663942384 4:1.41785270623486 5:1.30923711239213 6:1.76827637010965 7:7.96689070843493 8:11.7921953767322 9:3.65130879146247 10:0.93853877295675 13:0.844904909906825 16:0.125988157669742
+2 1:9.40911690757443 2:1.03258261356843 3:2.23834842900684 4:0.429652335222686 5:0.310082473987609 6:0.430989264200354 7:8.74935318872765 8:11.1426252924207 9:2.48388353160712 10:0.516978440770343 11:0.884425570049315 37:0.418600747852556
+1 1:11.1411434029986 2:0.280022403679575 3:1.58001065576954 4:2.44901831076931 5:0.344536082208455 6:0.668001244066122 7:7.71792537379634 8:10.6429559967965 9:3.20420975577319 10:2.08355607596399 11:0.884425570049315 52:0.77919372247398
+2 1:9.85382641315631 2:0.752560209888857 3:1.31667554647461 4:0.606287184147568 5:0.413443298650146 6:2.39966600752984 7:8.35812194858129 8:11.1426252924207 9:2.95582140261248 10:1.09183343920635 11:0.884425570049315 44:0.445904036039959
+1 1:8.87412802867894 2:3.00149013944044 3:3.29168886618654 4:0.20050442310392 5:0.258402061656341 6:1.05274426829267 7:5.76176917306455 8:9.69358433511038 9:4.12324666246782 10:0.947142045042187 13:0.844904909906825 38:0.217872335165298
+1 1:10.8535868805923 2:2.36268903104641 3:0.526670218589846 4:0.143217445074229 5:0.0516804123312682 6:3.49287573579959 7:7.46896003915775 8:12.0420300245443 9:4.22260200373211 10:0.351952039858781 11:0.884425570049315 52:0.77919372247398
+1 1:11.4387309668842 2:0.708806709313924 3:1.31667554647461 4:1.59926146999555 5:1.58486597815889 6:0.708466704043204 7:8.32255547220435 8:11.0926583628583 9:2.9309825672964 10:3.1284625765225 12:0.260796291926003 49:0.210818510677892
+2 1:10.1714760600005 2:2.26643132978156 3:1.05334043717969 4:1.01206994519122 5:0.361762886318878 6:2.93920547389094 7:7.18442822814221 8:12.241897742794 9:4.52066802752496 10:0.799322188301499 11:0.884425570049315 43:0.715678085420547
+3 1:9.22187079996101 2:1.09383751437334 3:0.790005327884769 4:1.0025221155196 5:0.482350515091837 6:1.63531843018495 7:8.18028956669658 8:11.7921953767322 9:3.4525981089339 10:1.70814056678129 13:0.844904909906825 25:0.157785504911465
+5 1:9.3322122562332 2:0.446285705864322 3:1.18500799182715 6:0.668643552954647 7:8.00245718481187 8:10.9927245037334 9:3.17937092045712 10:1.67607382537193 13:0.844904909906825 31:0.127293769304329
+2 1:8.59660254775191 2:0.66505320873899 3:1.31667554647461 4:2.02413989038243 5:0.292855669877187 6:0.73801291291536 7:8.25142251945046 8:11.0926583628583 9:3.00549907324462 10:3.1589650866436 11:0.884425570049315 32:0.0836242010007091
+2 1:8.40266907915229 2:0.69130530908395 3:1.05334043717969 4:1.36056572820517 5:0.396216494539723 6:0.316015973154358 7:8.21585604307352 8:11.2425591515455 9:3.12969324982497 10:2.67796396550326 11:0.884425570049315 32:0.0836242010007091
+1 1:11.6426954769631 2:0.805064410578777 3:2.63335109294923 4:2.22464431348635 5:0.826886597300292 6:1.68092236127023 7:8.74935318872765 8:10.2931874898595 9:1.9871068252857 10:1.62758265543583 11:0.884425570049315
+2 1:9.46261579546398 2:2.08266662736684 3:0.790005327884769 4:2.97892285754396 5:1.68822680282143 6:0.038538533311507 7:7.4333935627808 8:12.241897742794 9:4.32195734499639 10:1.33350717324272 13:0.844904909906825 24:0.280975743474508
+3 1:8.8105980993101 2:1.47011761931777 3:2.76501864759669 4:1.71860934089075 5:1.30923711239213 6:1.03861347274511 7:8.21585604307352 8:12.0919969541068 9:3.25388742640533 10:1.78400578426196 13:0.844904909906825 18:0.154303349962092
+1 1:10.4356268189552 2:1.16384311529323 3:1.31667554647461 4:1.03116560453445 5:0.534030927423105 6:0.685985892944825 7:8.39368842495823 8:11.7422284471698 9:3.20420975577319 10:1.39373007784077 11:0.884425570049315 36:0.258530551913103
+1 1:10.6195292460755 2:0.787563010348804 3:1.44834310112208 4:1.03116560453445 5:0.620164947975219 6:0.495220153052865 7:8.42925490133517 8:11.0926583628583 9:2.83162722603212 10:1.8105977161624 11:0.884425570049315 36:0.258530551913103
+2 1:10.0009483548526 2:0.0700056009198937 3:1.84334576506446 4:0.639704587998222 5:0.396216494539723 6:2.58978943853327 7:7.18442822814221 8:10.4930552081092 9:3.55195345019819 10:1.75272115849673 11:0.884425570049315 44:0.445904036039959
+3 1:8.85740962621346 2:0.166263302184748 3:1.18500799182715 4:1.54197449196586 5:1.7399072151527 6:0.328219842036335 7:7.61122594466551 8:10.9927245037334 9:3.55195345019819 10:1.02848207203177 13:0.844904909906825 16:0.125988157669742
+2 1:9.77023440082889 2:0.595047607819096 3:0.395002663942384 4:2.63520098936581 5:0.671845360306487 6:2.92507467834338 7:7.89575775568105 8:11.6922615176074 9:3.67614762677854 10:4.2367204442556 11:0.884425570049315 26:0.228914278114955
+2 1:11.0274582662333 2:0.910072811958618 3:0.92167288253223 4:0.453521909401724 5:0.120587628772959 6:1.04503656163037 7:8.25142251945046 8:11.5423607289201 9:3.25388742640533 10:2.57628893176628 12:0.260796291926003 36:0.258530551913103
+1 1:10.6496223705133 2:0.656302508624003 3:2.50168353830177 4:1.80931372277109 5:1.3609175247234 6:3.21411367817969 7:8.50038785408906 8:10.0433528420474 9:2.08646216654998 10:2.45662523821429 11:0.884425570049315 44:0.445904036039959
+2 1:10.0678219647145 2:0.936324912303578 3:0.92167288253223 4:4.58295824237532 5:1.46427834938593 6:3.54554506465865 7:8.28698899582741 8:11.5923276584825 9:3.25388742640533 10:4.62073922552373 11:0.884425570049315 43:0.715678085420547
+1 1:11.0976755565883 2:2.62521003449601 3:2.50168353830177 4:0.916591648475064 5:0.361762886318878 6:2.39581215419869 7:5.76176917306455 8:11.3924599402328 9:5.0919612397946 10:1.10278305822418 11:0.884425570049315 43:0.715678085420547
+2 1:9.40242954658824 2:0.69130530908395 3:2.50168353830177 4:0.429652335222686 5:0.361762886318878 6:1.69248392126368 7:8.57152080684294 8:10.1432867011722 9:2.11130100186605 10:2.16333187166531 11:0.884425570049315 26:0.228914278114955
+1 1:9.99760467435947 2:0.122509801609814 3:0.526670218589846 4:1.58016581065232 5:0.292855669877187 6:1.79589565231623 7:7.6823588974194 8:11.5423607289201 9:3.8003418033589 10:0.0234634693239188 11:0.884425570049315 34:0.169841555121689
+2 1:9.90398162055276 2:1.98640892610198 3:1.58001065576954 4:0.716087225371144 5:0.534030927423105 6:1.19726376821082 7:7.18442822814221 8:12.5416993201686 9:4.57034569815711 10:1.11529690853027 13:0.844904909906825 46:0.674199862463242
+2 1:9.79364016428056 2:0.656302508624003 3:2.76501864759669 4:0.916591648475064 5:1.67099999871101 6:0.212604242101814 7:8.535954330466 8:9.79351819423523 9:1.91259031933748 10:0.189271985879611 13:0.844904909906825 46:0.674199862463242
+3 1:7.35609708481299 2:2.74771983610583 3:3.29168886618654 4:1.79499197826367 5:2.29116494668622 6:0.313446737600257 7:5.15713907465654 8:10.5430221376716 9:5.01744473384639 10:0.201785836185701 14:0.296673189340406 24:0.280975743474508
+2 1:8.64675775514836 2:0.332526604369495 3:1.84334576506446 4:0.916591648475064 5:1.27478350417128 6:0.819586141758049 7:7.78905832655022 8:10.3931213489843 9:3.00549907324462 10:0.471615733410767 13:0.844904909906825 25:0.157785504911465
+1 1:10.8870236855232 2:1.61012882115755 3:2.23834842900684 4:0.20050442310392 5:0.0861340205521137 6:2.23459262317888 7:7.89575775568105 8:12.4417654610437 9:3.85001947399104 10:0.478654774207943 13:0.844904909906825 47:1.05184741228156
+1 1:10.051103562249 2:1.2513501164431 3:1.18500799182715 4:0.319852293999111 5:0.0516804123312682 6:2.00528834997542 7:8.28698899582741 8:11.8921292358571 9:3.37808160298569 10:0.460666114392938 11:0.884425570049315 43:0.715678085420547
+2 1:9.05803045579927 2:0.0350028004599468 3:1.97501331971192 4:1.67564410736848 5:1.94662886447777 6:0.969244112784402 7:7.07772879901139 8:10.4930552081092 9:3.65130879146247 10:2.04757875633398 13:0.844904909906825 24:0.280975743474508
+1 1:10.843555839113 2:0.393781505174402 3:0.658337773237307 4:0.811565522087296 5:0.0516804123312682 6:1.72652629235551 7:7.8601912793041 8:11.4424268697952 9:3.57679228551426 10:0.806361229098675 11:0.884425570049315 36:0.258530551913103
+1 1:10.6395913290341 2:0.122509801609814 3:1.58001065576954 4:1.67087019253267 5:1.30923711239213 6:0.616616532984112 7:7.4333935627808 8:10.7928567854837 9:3.55195345019819 10:1.69953729469585 13:0.844904909906825 36:0.258530551913103
+2 1:10.2249749478901 2:1.95140612564204 3:2.50168353830177 4:1.67087019253267 5:2.58402061656341 6:1.27562545261088 7:6.86432994074974 8:12.6916001088559 9:4.79389521600175 10:1.58300206372039 13:0.844904909906825 37:0.418600747852556
+2 1:10.2985359187382 2:2.06516522713686 3:1.97501331971192 4:2.63042707453 5:1.25755670006086 6:3.85578025781628 7:6.8287634643728 8:12.591666249731 9:4.86841172194996 10:1.27641273122118 11:0.884425570049315 44:0.445904036039959
+2 1:8.88081538966513 2:1.19884591575318 3:3.02835375689161 4:0.716087225371144 5:0.310082473987609 6:0.963463332787676 7:8.82048614148153 8:11.2425591515455 9:2.31001168439462 10:0.631949440457545 11:0.884425570049315 44:0.445904036039959
+1 1:10.6797154949512 2:2.73896913599084 3:2.37001598365431 4:1.14573956059383 5:0.947474226073251 6:1.57237215910949 7:6.04630098408008 8:11.1925922219831 9:4.79389521600175 10:0.241673734036363 13:0.844904909906825 47:1.05184741228156
+2 1:9.80701488625295 2:0.0962577012648538 3:2.76501864759669 4:1.59926146999555 6:0.408508453101974 7:6.86432994074974 8:9.64361740554796 9:3.25388742640533 10:0.170501210420476 13:0.844904909906825 47:1.05184741228156
+2 1:9.25196392439888 2:2.24892992955158 3:3.95002663942384 4:1.14573956059383 5:2.03276288502988 6:1.17028679489276 7:4.87260726364101 8:12.0420300245443 9:5.81228746396067 10:1.09183343920635 13:0.844904909906825 27:0.184010991918219
+1 1:9.10484198270262 2:0.437535005749336 3:1.58001065576954 4:0.143217445074229 6:1.30774089703714 7:8.00245718481187 8:10.6929229263589 9:3.03033790856069 10:0.221338727288967 13:0.844904909906825 47:1.05184741228156
+2 1:8.7102876845172 2:0.131260501724801 3:2.50168353830177 4:1.63267887384621 5:0.172268041104227 6:0.683416657390725 7:7.11329527538833 8:9.84348512379766 9:3.20420975577319 10:1.34445679226054 11:0.884425570049315 44:0.445904036039959
+2 1:9.43252267102611 2:1.98640892610198 3:2.89668620224415 4:0.286434890148457 5:0.137814432883382 6:0.812520743984273 7:6.47309870060338 8:12.6916001088559 9:4.99260589853032 10:0.273740475445719 13:0.844904909906825 27:0.184010991918219
+2 1:9.52948940532591 2:0.183764702414721 3:2.76501864759669 4:0.286434890148457 5:0.430670102760569 6:1.01998651497789 7:7.18442822814221 8:9.54368354642311 9:2.95582140261248 10:2.137522055409 13:0.844904909906825 47:1.05184741228156
+2 1:10.4958130678309 2:1.08508681425835 3:1.84334576506446 4:1.04071343420606 5:0.223948453435496 6:0.251142775413321 7:8.64265375959682 8:11.4424268697952 9:2.78194955539998 10:1.64244285267431 11:0.884425570049315 37:0.418600747852556
+1 1:11.224735415326 2:0.533792707014189 3:2.89668620224415 4:1.15528739026545 5:1.24032989595044 6:1.17285603044686 7:8.25142251945046 8:9.39378275773583 9:1.91259031933748 10:1.40233334992621 11:0.884425570049315
+2 1:10.2450370308486 2:2.77397193645079 3:2.10668087435938 4:1.28895700566806 5:0.413443298650146 6:3.09335960713696 7:6.25969984234173 8:11.1925922219831 9:4.64486220410532 10:0.285472210107678 11:0.884425570049315 44:0.445904036039959
+1 1:10.1681323795074 2:2.28393273001153 3:1.18500799182715 6:0.609551135210336 7:7.04216232263445 8:12.241897742794 9:4.62002336878925 10:1.22010040484378 13:0.844904909906825 37:0.418600747852556
+2 1:10.4155647359966 2:2.78272263656577 3:1.58001065576954 4:1.27940917599644 5:0.792432989079446 6:0.231873508757567 7:6.68649755886503 8:11.4424268697952 9:4.47099035689282 10:1.05663823522047 11:0.884425570049315 36:0.258530551913103
+2 1:10.0778530061938 2:1.74138932288236 3:1.31667554647461 4:3.78094054995964 5:1.63654639049016 6:3.79797245784902 7:7.71792537379634 8:12.4417654610437 9:4.12324666246782 10:2.55595392501888 11:0.884425570049315 34:0.169841555121689
+2 1:9.56961357124308 2:1.59262742092758 3:1.58001065576954 4:0.515582802267224 5:0.155041236993805 6:1.86398039449989 7:7.93132423205799 8:12.3917985314813 9:3.85001947399104 10:1.95841757290309 11:0.884425570049315 43:0.715678085420547
+2 1:10.1915381429591 2:0.446285705864322 3:1.31667554647461 4:6.12015881950537 5:3.08359793576567 6:1.81773415452608 7:8.00245718481187 8:10.942757574171 9:3.15453208514105 10:0.883008562223476 13:0.844904909906825 45:0.433012701892219
+2 1:9.85382641315631 2:0.262521003449601 3:0.526670218589846 4:1.82363546727851 5:0.18949484521465 6:2.55189321411029 7:7.75349185017328 8:11.5423607289201 9:3.70098646209461 10:3.68298256821111 11:0.884425570049315 26:0.228914278114955
+2 1:9.83710801069082 2:2.00391032633196 3:1.711678210417 4:1.08845258256414 5:1.67099999871101 6:0.443193133082331 7:7.11329527538833 8:12.591666249731 9:4.64486220410532 10:1.32177543858076 13:0.844904909906825 46:0.674199862463242
+2 1:9.57630093222927 2:1.9076526250671 3:2.10668087435938 4:1.71860934089075 5:1.10251546306706 6:1.50171818137172 7:7.11329527538833 8:12.6916001088559 9:4.62002336878925 10:1.56188494132886 13:0.844904909906825 40:0.0798086884467622
+2 1:10.913773129468 2:0.936324912303578 3:0.658337773237307 4:0.811565522087296 5:0.327309278098032 6:3.49929882468484 7:8.14472309031964 8:11.6922615176074 9:3.4525981089339 10:0.63820636561059 11:0.884425570049315 43:0.715678085420547
+2 1:8.86409698719965 2:2.81772543702572 3:2.23834842900684 4:0.716087225371144 5:0.534030927423105 6:0.598631884105409 7:6.22413336596479 8:11.0426914332958 9:4.59518453347318 10:1.3866910370436 11:0.884425570049315 43:0.715678085420547
+2 1:8.68688192106552 2:0.437535005749336 3:3.423356420834 4:0.716087225371144 5:1.42982474116509 6:0.621112695203788 7:7.8601912793041 8:8.64427881429947 9:1.76355730744106 10:1.15518480638093 13:0.844904909906825 47:1.05184741228156
+1 1:10.7131522998822 2:0.122509801609814 3:1.97501331971192 4:2.86434890148458 5:0.292855669877187 6:1.18891375265999 7:7.2555611808961 8:10.3431544194219 9:3.40292043830176 10:1.54702474409038 13:0.844904909906825 47:1.05184741228156
+1 1:10.2350059893693 2:0.455036405979309 3:0.790005327884769 4:0.773374203400835 5:0.0861340205521137 6:2.48637770748073 7:7.93132423205799 8:11.3424930106704 9:3.47743694424997 10:0.462230345681199 11:0.884425570049315 36:0.258530551913103
+1 1:11.2682032617363 2:2.42394393185132 3:1.31667554647461 4:3.87164493183998 5:1.94662886447777 6:0.640381961859542 7:6.8287634643728 8:12.0919969541068 9:4.69453987473746 10:1.73707884561412 13:0.844904909906825 46:0.674199862463242
+1 1:10.9538972953852 2:3.03649293990039 3:1.18500799182715 4:1.86182678596497 5:1.41259793705466 6:2.24743880094938 7:7.2555611808961 8:11.292526081108 9:3.99905248588747 10:2.11796916430573 13:0.844904909906825 45:0.433012701892219
+3 1:8.54979102084855 2:1.96890752587201 3:1.05334043717969 4:3.0075663465588 5:1.49873195760678 6:0.491366299721715 7:7.4333935627808 8:12.3917985314813 9:4.34679618031246 10:0.745356208856486 13:0.844904909906825 16:0.125988157669742
+2 1:10.8168063951682 2:1.26885151667307 3:2.89668620224415 4:2.4394704810977 5:2.34284535901749 6:0.262062026518248 7:8.7137867123507 8:11.4923937993577 9:2.53356120223927 10:3.34980130381147 12:0.260796291926003
+1 1:10.6429350095272 2:0.262521003449601 3:1.711678210417 4:0.907043818803449 5:-0.172268041104227 6:1.17221372155834 7:7.6823588974194 8:10.592989067234 9:3.22904859108926 10:0.590497311318622 13:0.844904909906825 45:0.433012701892219
+2 1:9.79364016428056 2:1.18134451552321 3:2.89668620224415 4:0.835435096266334 5:1.53318556582762 6:3.68942225568827 7:8.82048614148153 8:11.1925922219831 9:2.26033401376248 10:3.43114133080105 11:0.884425570049315 44:0.445904036039959
+2 1:9.57295725173617 2:2.87022963771564 3:2.76501864759669 6:0.537612539695523 7:5.90403507857231 8:10.592989067234 9:4.54550686284103 10:0.966694936145453 13:0.844904909906825 38:0.217872335165298
+2 1:10.499156748324 2:1.80264422368726 3:0.790005327884769 4:0.639704587998222 6:1.55567212800783 7:7.6823588974194 8:12.2918646723565 9:4.09840782715175 10:0.712507351803 13:0.844904909906825 46:0.674199862463242
+2 1:10.0009483548526 2:0.297523803909548 3:0.92167288253223 4:2.42992265142608 5:-0.0516804123312682 6:2.82358987395641 7:7.78905832655022 8:11.2425591515455 9:3.52711461488211 10:2.38388848331015 11:0.884425570049315 43:0.715678085420547
+1 1:10.1848507819729 2:0.245019603219628 3:1.31667554647461 4:0.916591648475064 5:0.103360824662536 6:0.855555439515456 7:7.6823588974194 8:10.8927906446086 9:3.40292043830176 10:1.36557391465207 13:0.844904909906825 46:0.674199862463242
+2 1:9.55289516877759 2:1.22509801609814 3:3.29168886618654 4:0.143217445074229 5:0.172268041104227 6:3.4318563913897 7:8.82048614148153 8:11.1426252924207 9:2.1609786724982 10:0.436420529424889 11:0.884425570049315 44:0.445904036039959
+5 1:9.70001711047385 2:0.796313710463791 3:5.135034631251 4:1.23167002763837 5:2.70460824533637 6:1.33664479702077 7:8.7137867123507 8:7.44507250480127 10:0.47474419598729 13:0.844904909906825 27:0.184010991918219
+1 1:10.6128418850893 2:2.91398313829057 3:0.395002663942384 4:0.143217445074229 5:0.0172268041104227 6:0.341066019806837 7:7.54009299191163 8:11.7422284471698 9:3.99905248588747 10:0.92602492265066 12:0.260796291926003 37:0.418600747852556
+1 1:10.9405225734128 2:0.350028004599468 3:1.97501331971192 4:1.52287883262263 5:1.08528865895663 6:2.78697826731048 7:7.82462480292716 8:10.3431544194219 9:2.9309825672964 10:1.55093532231103 13:0.844904909906825 53:1
+2 1:9.52948940532591 2:3.06274504024535 3:2.23834842900684 4:0.716087225371144 5:1.06806185484621 6:0.951901772794223 7:6.65093108248809 8:10.4930552081092 9:3.94937481525532 10:1.92791506278199 13:0.844904909906825 47:1.05184741228156
+1 1:10.7164959803753 2:0.122509801609814 3:1.97501331971192 4:2.63520098936581 5:1.30923711239213 6:1.52612591913568 7:7.29112765727304 8:10.4430882785468 9:3.42775927361783 10:2.64980780231456 13:0.844904909906825 45:0.433012701892219
+2 1:8.72031872599649 2:0.962577012648538 3:1.18500799182715 6:0.400800746439673 7:8.39368842495823 8:11.4923937993577 9:3.12969324982497 10:4.64263846355939 11:0.884425570049315 32:0.0836242010007091
+1 1:9.74682863737721 2:0.883820711613658 3:3.68669153012892 4:2.81183583829069 5:1.8949484521465 6:0.33143138647896 7:8.9627520469893 8:9.54368354642311 9:1.19226409517142 10:0.527145944144041 13:0.844904909906825 47:1.05184741228156
+1 1:9.9608241889354 2:1.62763022138753 3:0.92167288253223 4:0.429652335222686 5:0.068907216441691 6:1.15422907267964 7:7.89575775568105 8:12.2918646723565 9:3.92453597993925 10:2.91729135260723 11:0.884425570049315 37:0.418600747852556
+2 1:8.81728546029629 2:0.980078412878512 3:1.05334043717969 6:1.18955606154852 7:8.35812194858129 8:11.5423607289201 9:3.17937092045712 10:1.19741905116399 11:0.884425570049315 30:0.0826662747682189
+1 1:9.39574218560204 2:0.630050408279043 3:2.37001598365431 4:1.77112240408463 5:1.67099999871101 6:1.65523000572923 7:8.42925490133517 8:10.1932536307346 9:2.26033401376248 10:0.189271985879611 13:0.844904909906825 24:0.280975743474508
+7 1:11.5591034646357 2:2.52020163311617 3:0.395002663942384 4:3.85732318733256 5:2.03276288502988 6:1.05980966606644 7:7.50452651553469 8:11.9420961654195 9:4.12324666246782 10:1.13406768398941 13:0.844904909906825
+6 1:8.38595067668681 2:3.12399994105026 3:1.711678210417 4:0.591965439640145 5:0.430670102760569 6:0.115615599934521 7:7.04216232263445 8:10.7428898559213 9:3.82518063867497 10:1.33585352017511 14:0.296673189340406
+2 1:8.2822965814008 2:3.08024644047532 3:2.76501864759669 4:1.0025221155196 5:1.92940206036735 6:0.477235504174162 7:6.33083279509561 8:9.89345205336008 9:3.85001947399104 10:1.07619112632374 14:0.296673189340406 24:0.280975743474508
+1 1:9.75017231787031 2:0.411282905404375 3:1.05334043717969 4:2.18167907996408 5:0.0516804123312682 6:3.08757882714024 7:7.93132423205799 8:11.1426252924207 9:3.35324276766962 10:2.33383308208579 11:0.884425570049315 37:0.418600747852556
+1 1:10.3353164041622 2:2.27518202989654 3:1.711678210417 4:0.143217445074229 5:0.120587628772959 6:0.869043926174483 7:6.72206403524197 8:12.3418316019189 9:4.86841172194996 10:1.26077041833857 13:0.844904909906825 35:0.0490880693673816
+2 1:9.67995502751527 2:1.27760221678806 3:2.89668620224415 4:4.74527134679278 5:2.04998968914031 6:1.58457602799146 7:8.67822023597376 8:11.4923937993577 9:2.55840003755534 10:1.1262465275481 13:0.844904909906825 27:0.184010991918219
+1 1:10.9204604904542 2:0.428784305634349 3:1.31667554647461 4:0.143217445074229 5:0.120587628772959 6:2.71311274513009 7:7.96689070843493 8:10.8927906446086 9:3.12969324982497 10:0.586586733097969 11:0.884425570049315 52:0.77919372247398
+2 1:10.0878840476731 2:2.58145653392108 3:2.23834842900684 4:1.57539189581652 5:1.5159587617172 6:3.79604553118344 7:6.04630098408008 8:11.6422945880449 9:5.04228356916246 10:1.12077171803919 11:0.884425570049315 43:0.715678085420547
+1 1:10.9271478514404 2:0.988829112993498 3:1.84334576506446 4:1.27940917599644 5:0.585711339754373 6:1.00970957276148 7:8.64265375959682 8:11.2425591515455 9:2.68259421413569 10:1.62523630850344 13:0.844904909906825 46:0.674199862463242
+1 1:11.0308019467264 2:2.97523803909548 3:1.44834310112208 4:0.773374203400835 6:2.67778575626121 7:7.0065958462575 8:11.1925922219831 9:4.12324666246782 10:1.1950727042316 11:0.884425570049315 37:0.418600747852556
+3 1:8.66013247712074 2:1.27760221678806 3:1.18500799182715 4:1.29850483533967 5:1.17142267950875 6:0.793893786217045 7:8.25142251945046 8:11.9420961654195 9:3.4525981089339 10:1.3280323637338 13:0.844904909906825 18:0.154303349962092
+2 1:10.5459682752273 2:1.87264982460716 3:1.31667554647461 4:0.916591648475064 5:0.3789896904293 6:0.363546830905216 7:7.50452651553469 8:12.4917323906062 9:4.32195734499639 10:3.96689054703053 12:0.260796291926003 36:0.258530551913103
+2 1:10.1413829355626 2:0.980078412878512 3:1.44834310112208 4:1.71860934089075 5:0.913020617852405 6:0.870328543951534 7:8.50038785408906 8:11.3924599402328 9:2.9309825672964 10:1.99752335510962 11:0.884425570049315 43:0.715678085420547
+1 1:10.9940214613023 2:2.01266102644694 3:1.44834310112208 4:1.83318329695013 5:1.22310309184001 6:2.18449252987392 7:7.18442822814221 8:12.5416993201686 9:4.57034569815711 10:1.48758395513645 11:0.884425570049315 43:0.715678085420547
+7 1:11.2046733323674 2:0.0175014002299734 3:0.790005327884769 4:2.18167907996408 5:0.568484535643951 6:0.483016284170888 7:7.54009299191163 8:11.4424268697952 9:3.82518063867497 10:1.62054361463866 13:0.844904909906825 46:0.674199862463242
+2 1:9.73345391540482 2:0.945075612418565 3:1.97501331971192 4:0.773374203400835 5:0.895793813741983 6:2.25129265428054 7:8.7137867123507 8:11.0426914332958 9:2.50872236692319 10:3.98878978506619 11:0.884425570049315 44:0.445904036039959
+2 1:9.97085523041469 2:1.96015682575702 3:1.84334576506446 4:1.61835712933878 5:1.08528865895663 6:3.51856809134059 7:7.14886175176527 8:12.591666249731 9:4.62002336878925 10:2.53170834005083 11:0.884425570049315 43:0.715678085420547
+1 1:9.06471781678546 2:0.341277304484482 3:0.92167288253223 4:1.27940917599644 5:0.172268041104227 6:0.434843117531504 7:7.8601912793041 8:11.2425591515455 9:3.47743694424997 10:1.38199834317881 11:0.884425570049315 26:0.228914278114955
+2 1:8.84069122374797 2:0.71755740942891 3:2.23834842900684 4:0.716087225371144 5:0.206721649325073 6:0.779120681780967 7:8.57152080684294 8:10.3431544194219 9:2.23549517844641 10:0.341784536485083 11:0.884425570049315 43:0.715678085420547
+1 1:9.6465182225843 2:2.21392712909164 3:4.08169419407131 4:0.907043818803449 5:1.96385566858819 6:1.45996810361759 7:4.80147431088712 8:12.0919969541068 9:5.81228746396067 10:1.16535230975463 13:0.844904909906825 27:0.184010991918219
+2 1:10.2249749478901 2:0.0875070011498671 3:2.63335109294923 4:4.58295824237532 5:3.2558659768699 6:1.67899543460466 7:6.86432994074974 8:9.69358433511038 9:3.30356509703747 10:1.17708404441659 13:0.844904909906825 38:0.217872335165298
+4 1:7.12203945029621 2:0.271271703564588 3:1.97501331971192 6:0.750216781797337 7:7.64679242104245 8:10.2931874898595 9:3.08001557919283 10:1.12781075883636 14:0.296673189340406 31:0.127293769304329
+1 1:10.1380392550695 2:2.83522683725569 3:1.84334576506446 4:0.639704587998222 5:0.430670102760569 6:1.73423399901782 7:6.50866517698032 8:11.1925922219831 9:4.47099035689282 10:1.78244155297369 13:0.844904909906825 38:0.217872335165298
+1 1:10.7633075072786 2:1.28635291690305 3:3.423356420834 4:1.67087019253267 5:2.08444329736115 6:2.51849315190698 7:8.67822023597376 8:11.3424930106704 9:2.35968935502677 10:2.20009130693945 13:0.844904909906825 47:1.05184741228156
+3 1:8.45951164753494 2:0.0875070011498671 3:2.89668620224415 4:2.40127916241124 5:-1.18864948361917 6:0.63138963742019 7:6.79319698799585 8:9.49371661686068 9:3.25388742640533 10:0.764126984315621 13:0.844904909906825 24:0.280975743474508
+1 1:10.9405225734128 2:1.78514282345729 3:2.63335109294923 4:1.35101789853356 5:-0.826886597300292 6:1.91729203224747 7:7.32669413364998 8:12.6416331792934 9:4.34679618031246 10:0.333181264399646 13:0.844904909906825 47:1.05184741228156
+2 1:9.88057585710108 2:0.455036405979309 3:1.05334043717969 4:1.94775725300951 5:0.620164947975219 6:3.05096722049431 7:8.00245718481187 8:11.1426252924207 9:3.2787262617214 10:4.2828652672593 11:0.884425570049315 26:0.228914278114955
+2 1:8.99784420692352 2:0.166263302184748 3:1.97501331971192 4:0.405782761043648 5:0.206721649325073 6:1.35848329923062 7:7.39782708640386 8:10.3431544194219 9:3.30356509703747 10:4.00130363537228 11:0.884425570049315 26:0.228914278114955
+1 1:11.0441766686988 2:0.393781505174402 3:0.395002663942384 4:1.23167002763837 5:0.826886597300292 6:3.78255704452441 7:7.82462480292716 8:11.6422945880449 9:3.72582529741068 10:0.336309726976169 11:0.884425570049315 36:0.258530551913103
+1 1:9.78360912280127 2:0.201266102644694 3:1.18500799182715 4:2.66384447838065 5:1.44705154527551 6:1.72781091013256 7:7.64679242104245 8:11.0426914332958 9:3.52711461488211 10:1.0112755278609 13:0.844904909906825 45:0.433012701892219
+1 1:9.87054481562179 2:1.50512041977771 3:0.395002663942384 6:2.75036666066455 7:7.89575775568105 8:12.0420300245443 9:3.85001947399104 10:1.7034478729165 11:0.884425570049315 33:0.0483368244522832
+2 1:10.0477598817559 2:1.33010641747798 3:2.10668087435938 4:1.41785270623486 5:0.826886597300292 6:3.1736482182026 7:8.46482137771211 8:11.9420961654195 9:3.15453208514105 10:1.17630192877246 11:0.884425570049315 44:0.445904036039959
+1 1:10.1046024501386 2:2.87898033783063 3:1.05334043717969 4:1.57539189581652 5:-0.292855669877187 6:1.97702675888031 7:7.11329527538833 8:11.4923937993577 9:4.19776316841604 10:0.664798297511031 13:0.844904909906825 46:0.674199862463242
+2 1:9.28205704883675 2:2.52020163311617 3:3.29168886618654 4:0.572869780296915 5:0.947474226073251 6:0.751501399574387 7:5.08600612190266 8:11.3924599402328 9:5.48938260485174 10:1.21149713275834 13:0.844904909906825 27:0.184010991918219
+1 1:10.4356268189552 2:0.253770303334615 3:0.92167288253223 4:1.22212219796675 5:0.654618556196064 6:1.20689840153869 7:7.75349185017328 8:11.1925922219831 9:3.52711461488211 10:1.30847947263054 11:0.884425570049315 43:0.715678085420547
+2 1:9.91735634252515 2:2.27518202989654 3:3.95002663942384 4:0.959556881997333 5:1.10251546306706 6:0.558808733016852 7:4.80147431088712 8:11.9920630949819 9:5.81228746396067 10:0.799322188301499 13:0.844904909906825 27:0.184010991918219
+1 1:9.92404370351134 2:1.18134451552321 3:0.395002663942384 4:1.67087019253267 5:-0.671845360306487 6:2.41186987641181 7:8.00245718481187 8:11.8921292358571 9:3.67614762677854 10:4.48074052522435 11:0.884425570049315 34:0.169841555121689
+2 1:9.24193288291959 2:1.43511481885782 3:0.790005327884769 4:1.71860934089075 5:0.137814432883382 6:1.31031013259124 7:8.03802366118881 8:12.0919969541068 9:3.72582529741068 10:1.02457149381112 11:0.884425570049315 43:0.715678085420547
+2 1:9.92404370351134 2:1.59262742092758 3:1.711678210417 4:2.22464431348635 5:1.41259793705466 6:1.01420573498116 7:7.93132423205799 8:12.3917985314813 9:3.85001947399104 10:1.3968585404173 13:0.844904909906825 47:1.05184741228156
+1 1:10.7934006317165 2:0.315025204139522 3:0.790005327884769 4:4.17717548133167 5:1.03360824662536 6:2.50821620969058 7:7.82462480292716 8:11.292526081108 9:3.55195345019819 10:1.80825136923001 11:0.884425570049315 37:0.418600747852556
+1 1:9.59301933469476 2:3.07149574036034 3:1.58001065576954 4:0.143217445074229 5:0.120587628772959 6:1.82736878785396 7:7.07772879901139 8:10.9927245037334 9:3.94937481525532 10:1.80903348487414 13:0.844904909906825 36:0.258530551913103
+2 1:9.00787524840281 2:0.0962577012648538 3:5.39836974054592 4:0.859304670445373 5:0.87856700963156 6:0.749574472908812 7:5.15713907465654 8:6.29583312486551 9:2.26033401376248 10:1.43205374440317 13:0.844904909906825 47:1.05184741228156
+1 1:10.2049128649315 2:0.288773103794562 3:2.37001598365431 4:1.94775725300951 5:0.103360824662536 6:1.95647287444751 7:7.61122594466551 8:9.89345205336008 9:2.83162722603212 10:0.178322366861783 11:0.884425570049315 43:0.715678085420547
+5 1:9.73011023491172 2:2.52020163311617 3:0.263335109294923 4:1.08845258256414 5:0.465123710981414 6:1.2582831126207 7:7.64679242104245 8:11.8921292358571 9:3.99905248588747 10:1.08323016712092 13:0.844904909906825 46:0.674199862463242
+2 1:8.7069440040241 2:0.131260501724801 3:1.44834310112208 4:1.15528739026545 5:0.930247421962828 6:0.136169484367325 7:7.46896003915775 8:10.8428237150461 9:3.55195345019819 10:0.902561453326741 11:0.884425570049315 26:0.228914278114955
+1 1:10.2450370308486 2:0.0875070011498671 3:1.711678210417 4:0.286434890148457 5:0.292855669877187 6:2.00336142330984 7:7.29112765727304 8:10.6429559967965 9:3.55195345019819 10:4.63247096018569 11:0.884425570049315 43:0.715678085420547
+3 1:7.71052721708125 2:0.166263302184748 3:1.711678210417 4:0.319852293999111 5:0.292855669877187 6:0.642951197413642 7:7.46896003915775 8:10.592989067234 9:3.40292043830176 10:0.230724115018534 14:0.296673189340406 20:0.129459555600631
+2 1:10.7499327853063 2:2.42394393185132 3:0.790005327884769 4:2.86434890148458 5:0.68907216441691 6:0.414931541987226 7:7.2555611808961 8:12.0420300245443 9:4.37163501562854 10:0.703121964073432 13:0.844904909906825 46:0.674199862463242
+1 1:9.94076210597682 2:2.90523243817559 3:2.63335109294923 4:2.1291660167702 5:1.46427834938593 6:2.07337309215908 7:6.08186746045702 8:10.5430221376716 9:4.42131268626068 10:1.37730564931403 13:0.844904909906825 38:0.217872335165298
+2 1:9.74014127639101 2:3.05399434013036 3:1.58001065576954 4:0.515582802267224 5:0.344536082208455 6:2.65915879849398 7:7.0065958462575 8:10.942757574171 9:3.9742136505714 10:3.16756835872903 11:0.884425570049315 43:0.715678085420547
+2 1:9.9641678694285 2:0.350028004599468 3:0.92167288253223 4:2.24373997282958 5:0.361762886318878 6:0.62882040186609 7:7.8601912793041 8:11.1925922219831 9:3.42775927361783 10:1.65964939684519 11:0.884425570049315 43:0.715678085420547
+2 1:8.9175958750892 2:0.56004480735915 3:2.50168353830177 4:0.286434890148457 5:0.430670102760569 6:1.07843662383367 7:8.32255547220435 8:9.89345205336008 9:2.21065634313034 10:0.987029942892849 13:0.844904909906825 47:1.05184741228156
+1 1:10.4523452214206 2:0.157512602069761 3:1.84334576506446 4:2.44901831076931 5:0.482350515091837 6:1.13752904157798 7:7.39782708640386 8:10.4430882785468 9:3.35324276766962 10:2.69204204709761 13:0.844904909906825 45:0.433012701892219
+2 1:9.84379537167702 2:2.69521563541591 3:1.711678210417 4:0.453521909401724 5:0.0344536082208455 6:2.35470438533308 7:6.5797981297342 8:11.5923276584825 9:4.64486220410532 10:1.23965329594704 11:0.884425570049315 43:0.715678085420547
+2 1:9.58633197370856 2:3.0977478407053 3:1.84334576506446 4:0.959556881997333 5:0.792432989079446 6:2.72274737845797 7:6.97102936988056 8:10.6929229263589 9:3.87485830930711 10:4.00677844488119 11:0.884425570049315 26:0.228914278114955
+2 1:9.93407474499063 2:0.455036405979309 3:2.23834842900684 4:0.515582802267224 5:0.585711339754373 6:1.26791774594858 7:8.03802366118881 8:10.0933197716098 9:2.55840003755534 10:2.07417068823442 13:0.844904909906825 47:1.05184741228156
+2 1:9.39574218560204 2:0.201266102644694 3:1.84334576506446 4:1.0025221155196 5:0.447896906870991 6:1.56659137911276 7:7.54009299191163 8:10.4930552081092 9:3.30356509703747 10:1.08479439840918 11:0.884425570049315 43:0.715678085420547
+1 1:9.19846503650933 2:1.6451316216175 3:1.05334043717969 6:0.921070946145018 7:7.8601912793041 8:12.3418316019189 9:3.94937481525532 10:0.793847378792585 13:0.844904909906825 37:0.418600747852556
+1 1:10.6763718144581 2:1.10258821448833 3:2.10668087435938 4:0.773374203400835 5:0.447896906870991 6:1.70533009903419 7:8.7137867123507 8:11.3424930106704 9:2.63291654350355 10:0.619435590151455 13:0.844904909906825 45:0.433012701892219
+6 1:9.20849607798862 2:2.93148453852055 3:3.55502397548146 4:0.773374203400835 5:0.0172268041104227 6:0.858766983958082 7:5.33497145654125 8:9.69358433511038 9:4.39647385094461 10:1.49931568979841 13:0.844904909906825 27:0.184010991918219
+3 1:7.87771124173609 2:0.0175014002299734 3:0.790005327884769 4:0.730408969878567 5:0.809659793189869 6:0.850416968407255 7:7.54009299191163 8:11.4424268697952 9:3.82518063867497 10:0.253405468698323 14:0.296673189340406 20:0.129459555600631
+2 1:9.50273996138114 2:0.201266102644694 3:2.76501864759669 4:1.14573956059383 5:0.930247421962828 6:1.02769422164019 7:7.21999470451915 8:9.54368354642311 9:2.90614373198033 10:1.85517830787784 13:0.844904909906825 47:1.05184741228156
+2 1:9.14830982911288 2:0.56004480735915 3:1.84334576506446 4:1.86182678596497 5:0.103360824662536 6:1.67193003683088 7:8.25142251945046 8:10.5430221376716 9:2.68259421413569 10:1.73082192046107 13:0.844904909906825 24:0.280975743474508
+1 1:10.014323076825 2:0.726308109543897 3:1.05334043717969 4:0.319852293999111 6:0.700758997380903 7:8.25142251945046 8:11.292526081108 9:3.15453208514105 10:1.03864957540547 13:0.844904909906825 46:0.674199862463242
+5 1:9.16168455108527 2:3.12399994105026 3:1.18500799182715 4:0.143217445074229 5:0.0344536082208455 6:1.03668654607954 7:7.36226061002692 8:11.2425591515455 9:3.87485830930711 10:2.00925508977158 11:0.884425570049315 43:0.715678085420547
+1 1:10.9371788929197 2:2.82647613714071 3:1.84334576506446 4:2.43469656626189 5:1.67099999871101 6:0.382173788672445 7:6.50866517698032 8:11.1925922219831 9:4.49582919220889 10:0.338656073908561 12:0.260796291926003 38:0.217872335165298
+2 1:8.72366240648958 3:3.95002663942384 4:0.572869780296915 5:0.585711339754373 6:1.10348667048615 7:5.72620269668761 8:8.39444416648734 9:3.2787262617214 10:1.05898458215287 13:0.844904909906825 24:0.280975743474508
+2 1:10.2350059893693 2:1.02383191345345 3:0.526670218589846 4:2.34876609921735 5:-0.155041236993805 6:0.991082614994256 7:8.07359013756576 8:11.7921953767322 9:3.55195345019819 10:1.03317476589656 11:0.884425570049315 37:0.418600747852556
+2 1:10.1413829355626 2:1.18134451552321 3:0.526670218589846 4:0.453521909401724 5:0.120587628772959 6:1.31031013259124 7:8.03802366118881 8:11.8921292358571 9:3.6264699561464 10:1.3663560302962 13:0.844904909906825 46:0.674199862463242
+5 1:9.52280204433972 2:1.47886831943275 3:2.10668087435938 4:4.12466241813779 5:1.20587628772959 6:1.4882296947127 7:8.18028956669658 8:12.241897742794 9:3.50227577956604 10:1.24356387416769 13:0.844904909906825 27:0.184010991918219
+2 1:9.81370224723914 2:1.06758541402838 3:0.790005327884769 4:1.11709607157898 5:0.430670102760569 6:2.50950082746763 7:8.21585604307352 8:11.7422284471698 9:3.40292043830176 10:1.28423388766249 11:0.884425570049315 26:0.228914278114955
+1 1:10.6329039680479 2:0.962577012648538 3:0.92167288253223 4:0.143217445074229 5:-0.0861340205521137 6:1.07972124161072 7:8.28698899582741 8:11.5923276584825 9:3.2787262617214 10:1.28032330944183 11:0.884425570049315 43:0.715678085420547
+2 1:10.5259061922688 2:1.33885711759297 3:1.97501331971192 4:0.859304670445373 5:0.534030927423105 6:0.336569857587161 7:8.42925490133517 8:11.9420961654195 9:3.20420975577319 10:1.29127292845966 13:0.844904909906825 46:0.674199862463242
+1 1:10.9940214613023 2:0.175014002299734 3:1.18500799182715 4:1.28895700566806 5:0.551257731533528 6:3.52049501800617 7:7.61122594466551 8:11.0426914332958 9:3.55195345019819 10:0.445023801510326 11:0.884425570049315 52:0.77919372247398
+2 1:10.9204604904542 2:1.43511481885782 3:3.68669153012892 4:0.859304670445373 5:1.08528865895663 6:1.58457602799146 7:8.28698899582741 8:11.7422284471698 9:2.80678839071605 10:2.4441113879082 11:0.884425570049315 43:0.715678085420547
+1 1:10.154757657535 2:0.0962577012648538 3:1.31667554647461 4:3.32264472572211 5:2.60124742067383 6:3.6977722712391 7:7.46896003915775 8:11.0426914332958 9:3.65130879146247 10:4.06700134947925 11:0.884425570049315 26:0.228914278114955
+2 1:10.2517243918348 2:1.6451316216175 3:1.84334576506446 4:2.73545320091777 5:1.1369690712879 6:1.60641453020132 7:7.8601912793041 8:12.4917323906062 9:3.94937481525532 10:1.07462689503548 13:0.844904909906825 46:0.674199862463242
+2 1:10.7131522998822 2:0.157512602069761 3:1.44834310112208 4:0.716087225371144 5:0.447896906870991 6:0.402085364216723 7:7.50452651553469 8:10.8428237150461 9:3.52711461488211 10:0.883790677867606 12:0.260796291926003 38:0.217872335165298
+1 1:10.3553784871208 2:0.630050408279043 3:0.263335109294923 4:1.57539189581652 5:0.206721649325073 6:0.845278497299054 7:7.89575775568105 8:11.6922615176074 9:3.70098646209461 10:1.059766697797 12:0.260796291926003 37:0.418600747852556
+2 1:9.15499719009907 2:2.52895233323116 3:2.76501864759669 4:1.14573956059383 5:1.22310309184001 6:1.24864847929283 7:5.5483703148029 8:11.5923276584825 9:5.31551075763924 10:0.338656073908561 13:0.844904909906825 45:0.433012701892219
+2 1:10.3854716115587 2:0.0962577012648538 3:0.790005327884769 4:0.515582802267224 5:0.103360824662536 6:0.940982521689297 7:7.61122594466551 8:11.3924599402328 9:3.75066413272675 10:1.03552111282895 12:0.260796291926003 37:0.418600747852556
+3 1:7.05850952092737 2:0.901322111843631 3:4.08169419407131 4:1.63267887384621 5:1.44705154527551 6:0.251142775413321 7:8.99831852336624 8:9.19391503948614 9:0.81968156543035 10:0.401225325439011 14:0.296673189340406 15:0.0931694990624912
+2 1:9.73345391540482 2:0.822565810808751 3:1.84334576506446 4:0.429652335222686 5:-0.103360824662536 6:0.79453609510557 7:8.57152080684294 8:10.8927906446086 9:2.55840003755534 10:1.25998830269444 11:0.884425570049315 44:0.445904036039959
+2 1:9.42249162954682 2:1.96890752587201 3:4.08169419407131 4:0.515582802267224 5:0.516804123312682 6:1.67064541905383 7:5.79733564944149 8:12.4917323906062 9:5.16647774574281 10:1.22010040484378 13:0.844904909906825 27:0.184010991918219
+2 1:9.61976877863953 2:1.27760221678806 3:3.81835908477638 4:0.639704587998222 5:0.723525772637755 6:1.02448267719756 7:8.7137867123507 8:11.0926583628583 9:2.11130100186605 10:1.59551591402648 13:0.844904909906825 18:0.154303349962092
+1 1:9.94744946696302 2:2.59020723403607 3:1.05334043717969 4:0.773374203400835 5:0.241175257545918 6:1.04953272385004 7:7.0065958462575 8:11.8921292358571 9:4.47099035689282 10:2.6560647274676 11:0.884425570049315 37:0.418600747852556
+2 1:9.72007919343243 2:1.49636971966273 3:3.16002131153908 4:0.907043818803449 5:1.03360824662536 6:2.57822787853982 7:8.14472309031964 8:12.0919969541068 9:3.2787262617214 10:1.13797826221006 11:0.884425570049315 44:0.445904036039959
+7 1:11.0140835442609 2:0.918823512073605 3:2.50168353830177 4:2.47288788494835 5:2.36007216312792 6:0.738655221803885 7:8.85605261785847 8:10.6429559967965 9:2.11130100186605 10:0.886919140444129 13:0.844904909906825
+4 1:6.99163591106543 2:0.901322111843631 3:2.76501864759669 4:0.143217445074229 5:0.223948453435496 6:0.495220153052865 7:8.85605261785847 8:10.4430882785468 9:1.93742915465356 10:0.0969823398721975 14:0.296673189340406 17:0.119629720910916
+1 1:9.98088627189398 2:3.07149574036034 3:1.18500799182715 4:2.56359226682869 5:-0.068907216441691 6:2.11576547880174 7:7.29112765727304 8:11.292526081108 9:3.94937481525532 10:4.51593572921023 11:0.884425570049315 34:0.169841555121689
+1 1:9.78695280329437 2:0.883820711613658 3:1.31667554647461 4:0.515582802267224 5:0.0861340205521137 6:2.93984778277946 7:8.39368842495823 8:11.3424930106704 9:3.00549907324462 10:3.37326477313539 11:0.884425570049315 43:0.715678085420547
+1 1:10.6830591754443 2:0.568795507474136 3:1.44834310112208 4:0.716087225371144 5:-0.0861340205521137 6:2.0611692232771 7:8.18028956669658 8:10.8927906446086 9:2.98066023792855 10:3.83158454059593 11:0.884425570049315 43:0.715678085420547
+1 1:10.3353164041622 2:0.770061610118831 3:2.37001598365431 4:3.14123596196142 5:3.85880412073469 6:1.28654470371581 7:8.67822023597376 8:10.3431544194219 9:2.13613983718213 10:2.21495150417793 13:0.844904909906825 47:1.05184741228156
+1 1:10.6262166070617 2:0.481288506324269 3:1.44834310112208 4:0.811565522087296 5:0.327309278098032 6:3.25779068259939 7:8.07359013756576 8:10.7428898559213 9:2.98066023792855 10:0.942449351177403 11:0.884425570049315 43:0.715678085420547
+1 1:10.4055336945173 2:0.175014002299734 3:1.31667554647461 4:0.319852293999111 5:0.0516804123312682 6:3.29504459813385 7:7.57565946828857 8:10.8927906446086 9:3.50227577956604 10:1.77383828088826 11:0.884425570049315 37:0.418600747852556
+1 1:10.291848557752 2:1.50512041977771 3:1.05334043717969 4:0.606287184147568 5:0.258402061656341 6:1.15230214601406 7:8.03802366118881 8:12.1919308132316 9:3.75066413272675 10:1.5783093698556 13:0.844904909906825 37:0.418600747852556
+2 1:8.35920123274203 2:2.70396633553089 3:1.31667554647461 4:0.286434890148457 5:0.137814432883382 6:0.217742713210015 7:6.86432994074974 8:11.6922615176074 9:4.47099035689282 10:0.448152264086848 14:0.296673189340406 24:0.280975743474508
+2 1:10.5894361216376 2:1.66263302184748 3:3.81835908477638 4:1.72338325572655 5:1.53318556582762 6:0.10919251104927 7:7.32669413364998 8:12.3418316019189 9:3.87485830930711 10:2.56690354403671 12:0.260796291926003
+2 1:10.1815071014798 2:1.54012322023766 3:1.31667554647461 4:1.79499197826367 5:1.37814432883382 6:0.870328543951534 7:8.03802366118881 8:12.2918646723565 9:3.77550296804283 10:0.445805917154456 13:0.844904909906825 27:0.184010991918219
+2 1:10.2149439064108 2:0.787563010348804 3:0.263335109294923 4:2.5015313739632 5:0.206721649325073 6:1.09513665493532 7:7.89575775568105 8:11.7921953767322 9:3.72582529741068 10:2.01785836185701 11:0.884425570049315 43:0.715678085420547
+1 1:11.8332852650696 2:0.910072811958618 3:3.68669153012892 4:4.0721493549439 5:4.37560824404738 6:1.53704517024061 7:8.99831852336624 8:9.59365047598553 9:1.16742525985535 10:1.00971129657264 11:0.884425570049315
+2 1:8.95103268002017 2:1.89890192495212 3:3.16002131153908 4:1.28895700566806 5:-0.310082473987609 6:1.49657971026352 7:6.68649755886503 8:12.6916001088559 9:4.79389521600175 10:1.47898068305101 13:0.844904909906825 18:0.154303349962092
+2 1:9.08477989974404 2:2.90523243817559 3:1.31667554647461 4:0.907043818803449 5:0.068907216441691 6:1.27048698150268 7:6.97102936988056 8:11.3424930106704 9:4.24744083904818 10:3.0314802366503 11:0.884425570049315 26:0.228914278114955
+1 1:10.4389704994482 2:2.60770863426604 3:1.711678210417 4:3.09349681360334 5:5.59871133588739 6:1.57237215910949 7:6.54423165335726 8:11.7422284471698 9:4.7442175453696 10:1.05663823522047 13:0.844904909906825 47:1.05184741228156
+1 1:11.1110502785607 2:1.68888512219244 3:2.10668087435938 4:2.63042707453 5:1.56763917404847 6:2.83964759616954 7:7.6823588974194 8:12.5416993201686 9:4.07356899183568 10:1.86299946431915 13:0.844904909906825 47:1.05184741228156
+2 1:9.26868232686436 2:0.428784305634349 3:1.31667554647461 4:0.716087225371144 5:0.344536082208455 6:1.36362177033882 7:7.96689070843493 8:10.942757574171 9:3.17937092045712 10:2.73349417623654 11:0.884425570049315 26:0.228914278114955
+1 1:10.5727177191721 2:1.23384871621313 3:1.58001065576954 4:0.143217445074229 5:0.172268041104227 6:2.52812778523486 7:8.46482137771211 8:11.8421623062946 9:3.15453208514105 10:2.50668063943865 11:0.884425570049315 37:0.418600747852556
+2 1:9.28205704883675 2:1.93390472541206 3:3.68669153012892 4:0.20050442310392 5:0.327309278098032 6:1.95647287444751 7:6.22413336596479 8:12.6416331792934 9:4.99260589853032 10:1.07149843245896 13:0.844904909906825 18:0.154303349962092
+1 1:10.7733385487579 2:2.7652212363358 3:2.76501864759669 4:1.59926146999555 5:0.87856700963156 6:1.29361010148959 7:5.65506974393372 8:10.8428237150461 9:4.86841172194996 10:2.5309262244067 11:0.884425570049315 43:0.715678085420547
+2 1:9.44589739299849 2:0.201266102644694 3:1.31667554647461 4:0.429652335222686 5:0.103360824662536 6:1.18570220821737 7:7.61122594466551 8:10.942757574171 9:3.47743694424997 10:2.01081932105984 13:0.844904909906825 40:0.0798086884467622
+1 1:10.4122210555035 2:1.05008401379841 3:0.658337773237307 4:0.143217445074229 5:0.0172268041104227 6:1.18120604599769 7:8.14472309031964 8:11.7422284471698 9:3.47743694424997 10:2.43081542195798 13:0.844904909906825 37:0.418600747852556
+2 1:9.28874440982294 2:2.97523803909548 3:3.02835375689161 4:0.859304670445373 5:1.24032989595044 6:1.92371512113273 7:5.86846860219537 8:9.94341898292251 9:4.19776316841604 10:1.41641143152056 11:0.884425570049315 43:0.715678085420547
+3 1:7.04179111846189 2:0.533792707014189 3:0.263335109294923 4:1.72338325572655 5:1.68822680282143 6:0.30124286871828 7:7.8601912793041 8:11.6922615176074 9:3.70098646209461 10:0.258880278207237 14:0.296673189340406
+2 1:10.2249749478901 2:2.3714397311614 3:3.423356420834 4:2.0050442310392 5:2.53234020423214 6:3.51728347356354 7:5.1215725982796 8:11.8921292358571 9:5.66325445206424 10:0.75004890272127 11:0.884425570049315 43:0.715678085420547
+2 1:9.32886857574011 2:0.58629690770411 3:3.02835375689161 4:2.1291660167702 5:1.75713401926312 6:0.293535162055979 7:8.39368842495823 8:9.39378275773583 9:1.78839614275713 10:1.9154012124759 11:0.884425570049315 38:0.217872335165298
+2 1:9.23858920242649 2:0.280022403679575 3:2.50168353830177 4:1.28895700566806 5:2.2739381425758 6:0.836286172859702 7:7.54009299191163 8:9.69358433511038 9:2.75711072008391 10:1.58221994807625 13:0.844904909906825 47:1.05184741228156
+2 1:9.25196392439888 2:0.306274504024535 3:1.97501331971192 4:2.97892285754396 5:1.63654639049016 6:0.408508453101974 7:7.71792537379634 8:10.2931874898595 9:3.00549907324462 10:1.02457149381112 13:0.844904909906825 25:0.157785504911465
+6 1:8.61666463071048 2:0.140011201839787 3:2.37001598365431 4:0.572869780296915 5:0.49957731920226 6:0.243435068751019 7:7.14886175176527 8:9.94341898292251 9:3.22904859108926 10:0.965130704857191 13:0.844904909906825 24:0.280975743474508
+2 1:9.31549385376772 2:0.63880110839403 3:2.10668087435938 4:1.74247891506978 5:0.964701030183674 6:1.74964941234242 7:8.42925490133517 8:10.4430882785468 9:2.45904469629105 10:1.5016620367308 13:0.844904909906825 25:0.157785504911465
+1 1:10.7164959803753 2:2.27518202989654 3:1.58001065576954 4:1.59926146999555 5:0.981927834294096 6:0.30124286871828 7:6.75763051161891 8:12.3418316019189 9:4.84357288663389 10:0.582676154877316 12:0.260796291926003 46:0.674199862463242
+1 1:10.3486911261346 2:1.89015122483713 3:1.97501331971192 4:0.286434890148457 5:-0.0344536082208455 6:1.43877191029626 7:7.21999470451915 8:12.6416331792934 9:4.54550686284103 10:0.157205244470256 13:0.844904909906825 45:0.433012701892219
+2 1:9.6465182225843 2:2.94898593875052 3:2.50168353830177 4:0.286434890148457 5:0.3789896904293 6:1.85498807006054 7:6.25969984234173 8:10.5430221376716 9:4.29711850968032 10:1.49462299593362 11:0.884425570049315 37:0.418600747852556
+1 1:11.1946422908881 2:2.633960734611 3:1.31667554647461 4:0.453521909401724 5:-0.0172268041104227 6:2.14466937878537 7:6.8287634643728 8:11.7921953767322 9:4.54550686284103 10:1.71439749193433 13:0.844904909906825 52:0.77919372247398
+1 1:11.3183584691327 2:1.67138372196246 3:1.97501331971192 4:3.30832298121468 5:3.08359793576567 6:1.19148298821409 7:7.75349185017328 8:12.4917323906062 9:4.02389132120354 10:1.05585611957634 13:0.844904909906825 52:0.77919372247398
+2 1:10.3888152920518 2:0.315025204139522 3:0.790005327884769 4:1.15528739026545 5:0.516804123312682 6:1.27048698150268 7:7.82462480292716 8:11.292526081108 9:3.52711461488211 10:1.64244285267431 11:0.884425570049315 43:0.715678085420547
+2 1:8.97109476297875 2:0.061254900804907 3:2.23834842900684 4:1.11709607157898 5:1.7399072151527 6:0.558808733016852 7:7.0065958462575 8:10.1932536307346 9:3.50227577956604 10:1.40780815943513 13:0.844904909906825 47:1.05184741228156
+1 1:10.5292498727619 2:2.64271143472599 3:0.526670218589846 4:1.61835712933878 5:0.516804123312682 6:2.27762731871007 7:7.36226061002692 8:11.8921292358571 9:4.19776316841604 10:3.00488830474986 11:0.884425570049315 43:0.715678085420547
+1 1:10.6061545241031 2:0.498789906554243 3:2.10668087435938 4:1.32237440951871 5:0.516804123312682 6:1.93656129890323 7:8.14472309031964 8:10.2931874898595 9:2.60807770818748 10:3.52812367067325 11:0.884425570049315 43:0.715678085420547
+1 1:10.6563097314995 2:0.997579813108485 3:1.31667554647461 4:1.86660070080078 5:0.671845360306487 6:3.66822606236694 7:8.46482137771211 8:11.4923937993577 9:3.00549907324462 10:1.35462429563424 11:0.884425570049315 43:0.715678085420547
+6 1:7.80415027088796 2:2.8964817380606 3:1.97501331971192 4:0.606287184147568 5:0.844113401410714 6:0.771412975118666 7:6.47309870060338 8:10.942757574171 9:4.37163501562854 10:0.308935679431597 14:0.296673189340406
+6 1:6.83782660838298 2:0.140011201839787 3:3.68669153012892 4:0.907043818803449 5:1.03360824662536 6:0.347489108692088 7:6.5797981297342 8:8.49437802561219 9:2.73227188476783 10:0.448152264086848 14:0.296673189340406 24:0.280975743474508
+5 1:8.71363136501029 2:0.393781505174402 3:0.92167288253223 4:1.28895700566806 5:0.0861340205521137 6:0.406581526436399 7:7.89575775568105 8:11.2425591515455 9:3.42775927361783 10:4.89291546968119 11:0.884425570049315 43:0.715678085420547
+1 1:11.2615159007501 2:2.90523243817559 3:1.58001065576954 4:3.98144497306356 5:1.30923711239213 6:1.47281428138809 7:6.79319698799585 8:11.1925922219831 9:4.27227967436425 10:0.839210086152161 13:0.844904909906825 46:0.674199862463242
+2 1:9.84045169118392 2:2.25768062966657 3:1.31667554647461 4:1.40830487656325 5:0.516804123312682 6:3.3168831003437 7:6.93546289350362 8:12.2918646723565 9:4.69453987473746 10:1.33428928888685 11:0.884425570049315 43:0.715678085420547
+1 1:10.6930902169236 2:1.85514842437718 3:0.790005327884769 4:0.319852293999111 5:0.0172268041104227 6:3.52306425356027 7:7.64679242104245 8:12.2918646723565 9:4.14808549778389 10:0.829824698422593 11:0.884425570049315 33:0.0483368244522832
+1 1:10.5158751507895 2:0.446285705864322 3:3.02835375689161 4:1.79499197826367 5:0.482350515091837 6:3.09335960713696 7:7.96689070843493 8:9.19391503948614 9:2.06162333123391 10:2.03741125296028 11:0.884425570049315 43:0.715678085420547
+2 1:9.80701488625295 2:1.32135571736299 3:1.711678210417 4:4.07692326977971 5:2.44620618368003 6:1.58714526354556 7:8.42925490133517 8:11.9420961654195 9:3.22904859108926 10:1.17317346619594 13:0.844904909906825 27:0.184010991918219
+2 1:10.1246645330971 2:2.74771983610583 3:1.97501331971192 4:1.63267887384621 5:1.34369072061297 6:0.4117199975446 7:6.33083279509561 8:11.3424930106704 9:4.66970103942139 10:0.703121964073432 12:0.260796291926003 36:0.258530551913103
+1 1:10.6262166070617 2:1.00633051322347 3:2.89668620224415 4:0.716087225371144 5:-0.275628865766764 6:1.41436417253231 7:8.92718557061235 8:10.6429559967965 9:1.96226798996963 10:1.70814056678129 11:0.884425570049315 43:0.715678085420547
+1 1:9.39574218560204 2:0.708806709313924 3:0.658337773237307 4:1.77112240408463 6:1.19919069487639 7:8.03802366118881 8:11.5423607289201 9:3.47743694424997 10:1.76523500880282 11:0.884425570049315 26:0.228914278114955
+1 1:10.3654095286001 2:2.91398313829057 3:0.92167288253223 4:0.143217445074229 5:-0.0172268041104227 6:3.11005963823862 7:7.29112765727304 8:11.5923276584825 9:4.12324666246782 10:0.986247827248718 11:0.884425570049315 36:0.258530551913103
+2 1:8.99450052643042 2:1.68013442207745 3:4.08169419407131 4:0.606287184147568 5:0.87856700963156 6:1.15230214601406 7:7.14886175176527 8:12.2918646723565 9:3.92453597993925 10:1.08557651405331 13:0.844904909906825 17:0.119629720910916
+1 1:9.50273996138114 2:2.1701736285167 3:5.00336707660354 4:0.405782761043648 5:1.05083505073579 6:1.55374520134226 7:4.16127773610217 8:11.7921953767322 9:5.93648164054102 10:1.40311546557034 13:0.844904909906825 27:0.184010991918219
+1 1:10.014323076825 2:0.341277304484482 3:2.37001598365431 6:2.87240534948432 7:7.75349185017328 8:9.89345205336008 9:2.70743304945176 10:2.0405397155368 11:0.884425570049315 37:0.418600747852556
+1 1:9.74682863737721 2:1.15509241517825 3:0.790005327884769 4:0.319852293999111 5:0.068907216441691 6:1.0816481682763 7:8.18028956669658 8:11.8421623062946 9:3.47743694424997 10:1.43361797569144 11:0.884425570049315 43:0.715678085420547
+3 1:7.33603500185441 2:2.69521563541591 3:3.423356420834 4:0.591965439640145 5:0.775206184969023 6:0.668001244066122 7:4.94374021639489 8:10.6429559967965 9:5.19131658105889 10:0.63742424996646 14:0.296673189340406 24:0.280975743474508
+2 1:10.325285362683 2:2.85272823748567 3:0.263335109294923 4:2.0050442310392 5:1.60209278226932 6:1.73616092568339 7:7.64679242104245 8:11.8421623062946 9:3.9742136505714 10:1.18803366343442 13:0.844904909906825 46:0.674199862463242
+1 1:10.8000879927027 2:3.00149013944044 3:2.23834842900684 4:0.20050442310392 5:0.172268041104227 6:1.86141115894579 7:6.47309870060338 8:10.5430221376716 9:4.12324666246782 10:2.07808126645507 13:0.844904909906825 37:0.418600747852556
+2 1:10.4423141799413 2:1.75014002299734 3:2.50168353830177 4:1.61835712933878 5:0.913020617852405 6:3.96497276886555 7:7.4333935627808 8:12.6416331792934 9:4.24744083904818 10:1.6268005397917 11:0.884425570049315 43:0.715678085420547
+2 1:10.1982255039453 2:2.40644253162135 3:1.18500799182715 4:3.58043612685572 5:0.87856700963156 6:3.64831448682267 7:7.0065958462575 8:12.0919969541068 9:4.59518453347318 10:2.62556221734651 11:0.884425570049315 43:0.715678085420547
+2 1:9.68329870800837 2:1.68888512219244 3:2.10668087435938 4:0.286434890148457 5:-0.3789896904293 6:0.982090290554904 7:7.71792537379634 8:12.5416993201686 9:4.04873015651961 10:2.00847297412745 13:0.844904909906825 27:0.184010991918219
+2 1:11.2514848592708 2:0.533792707014189 3:1.44834310112208 4:1.99549640136759 5:2.32561855490707 6:1.37775256588638 7:8.14472309031964 8:10.8927906446086 9:3.00549907324462 10:1.84422868886001 12:0.260796291926003 46:0.674199862463242
+1 1:10.2283186283831 2:2.83522683725569 3:2.23834842900684 4:1.40830487656325 5:0.930247421962828 6:1.67835312571613 7:6.22413336596479 8:10.9927245037334 9:4.57034569815711 10:0.686697535546689 11:0.884425570049315 43:0.715678085420547
+7 1:11.3785447180085 2:0.262521003449601 3:2.10668087435938 4:0.515582802267224 5:0.137814432883382 6:2.13246550990339 7:7.57565946828857 8:10.1432867011722 9:3.00549907324462 10:1.83797176370697 11:0.884425570049315 49:0.210818510677892
+2 1:9.78360912280127 2:1.18134451552321 3:1.58001065576954 4:2.59223575584354 5:0.223948453435496 6:2.43884684972987 7:8.50038785408906 8:11.6922615176074 9:3.05517674387676 10:3.30365648080776 11:0.884425570049315 26:0.228914278114955
+1 1:10.6329039680479 2:2.74771983610583 3:3.29168886618654 4:0.429652335222686 5:0.637391752085641 6:1.43941421918479 7:5.19270555103348 8:10.592989067234 9:5.01744473384639 10:2.38545271459841 11:0.884425570049315 43:0.715678085420547
+1 1:11.4253562449118 2:1.14634171506326 3:1.97501331971192 4:1.14573956059383 5:-0.809659793189869 6:1.240298463742 7:8.64265375959682 8:11.5423607289201 9:2.78194955539998 10:2.36355347656275 12:0.260796291926003 53:1
+2 1:8.76378657240675 2:3.07149574036034 3:1.44834310112208 4:0.143217445074229 5:0.068907216441691 6:0.427777719757728 7:7.14886175176527 8:11.0926583628583 9:3.94937481525532 10:1.12859287448049 11:0.884425570049315 34:0.169841555121689
+1 1:11.12108132004 2:0.00875070011498671 3:1.58001065576954 4:1.82363546727851 5:1.49873195760678 6:1.90829970780812 7:7.18442822814221 8:10.7928567854837 9:3.75066413272675 10:1.78478789990609 13:0.844904909906825 52:0.77919372247398
+7 1:10.8034316731958 2:0.201266102644694 3:3.423356420834 4:0.405782761043648 5:0.49957731920226 6:2.66365496071366 7:6.93546289350362 8:8.79417960298674 9:2.65775537881962 10:1.03864957540547 11:0.884425570049315 52:0.77919372247398
+1 1:10.4623762628999 2:0.883820711613658 3:1.05334043717969 4:0.319852293999111 5:0.0344536082208455 6:0.198473446554261 7:8.35812194858129 8:11.4424268697952 9:3.12969324982497 10:4.18510081174298 12:0.260796291926003 37:0.418600747852556
+2 1:8.90422115311681 2:0.490039206439256 3:2.37001598365431 6:0.673139715174323 7:8.14472309031964 8:9.89345205336008 9:2.35968935502677 10:1.3663560302962 11:0.884425570049315 34:0.169841555121689
+1 1:10.7198396608684 2:3.07149574036034 3:1.31667554647461 4:0.591965439640145 5:0.206721649325073 6:3.49929882468484 7:7.21999470451915 8:11.1925922219831 9:3.94937481525532 10:0.728931780329743 11:0.884425570049315 36:0.258530551913103
+2 1:10.4857820263516 2:0.393781505174402 3:0.131667554647461 4:1.27940917599644 5:0.465123710981414 6:2.65466263627431 7:7.78905832655022 8:11.7422284471698 9:3.8003418033589 10:1.40311546557034 11:0.884425570049315 43:0.715678085420547
+2 1:9.5428641272983 2:2.00391032633196 3:3.68669153012892 4:1.40830487656325 5:2.82519587410933 6:1.10926745048288 7:5.93960155494926 8:12.591666249731 9:5.24099425169103 10:1.29127292845966 13:0.844904909906825 18:0.154303349962092
+1 1:10.0243541183042 2:0.140011201839787 3:2.10668087435938 4:1.4369483655781 5:-0.206721649325073 6:2.33029664756912 7:7.2555611808961 8:10.2432205602971 9:3.32840393235354 10:4.51358938227784 11:0.884425570049315 43:0.715678085420547
+2 1:9.77023440082889 2:0.201266102644694 3:0.790005327884769 4:2.00981814587501 5:-0.155041236993805 6:2.40416216974951 7:7.6823588974194 8:11.3424930106704 9:3.65130879146247 10:4.58476190589372 11:0.884425570049315 30:0.0826662747682189
+1 1:11.087644515109 2:0.866319311383684 3:1.18500799182715 4:2.0050442310392 5:-0.223948453435496 6:0.966674877230301 7:8.35812194858129 8:11.3924599402328 9:3.1048544145089 10:1.65417458733627 11:0.884425570049315 52:0.77919372247398
+2 1:10.4724073043792 2:2.99273943932546 3:0.526670218589846 4:0.716087225371144 5:0.223948453435496 6:1.43170651252249 7:7.54009299191163 8:11.6922615176074 9:3.9742136505714 10:1.70501210420476 13:0.844904909906825 46:0.674199862463242
+2 1:9.66658030554288 2:0.577546207589123 3:2.10668087435938 4:0.835435096266334 5:-0.0172268041104227 6:0.256923555410047 7:8.32255547220435 8:10.3431544194219 9:2.50872236692319 10:0.384800896912268 13:0.844904909906825 36:0.258530551913103
+1 1:9.82707696921153 2:0.525042006899203 3:2.50168353830177 4:0.20050442310392 5:0.206721649325073 6:1.49272585693237 7:8.21585604307352 8:9.89345205336008 9:2.28517284907855 10:2.06634953179311 13:0.844904909906825 47:1.05184741228156
+2 1:9.38571114412275 2:0.813815110693764 3:2.23834842900684 4:1.36056572820517 5:0.895793813741983 6:1.15230214601406 7:8.7137867123507 8:10.592989067234 9:2.23549517844641 10:2.1453432118503 11:0.884425570049315 43:0.715678085420547
+1 1:10.5626866776928 2:0.428784305634349 3:1.84334576506446 4:0.716087225371144 5:0.292855669877187 6:2.01042682108362 7:8.00245718481187 8:10.4430882785468 9:2.85646606134819 10:3.40845997712126 11:0.884425570049315 37:0.418600747852556
+1 1:10.6864028559374 2:0.971327712763525 3:1.44834310112208 4:0.143217445074229 5:-0.120587628772959 6:1.4856604591586 7:8.535954330466 8:11.3924599402328 9:2.90614373198033 10:3.19885298449426 12:0.260796291926003 37:0.418600747852556
+1 1:10.8168063951682 2:0.61254900804907 3:1.84334576506446 4:0.405782761043648 5:0.155041236993805 6:2.95397857832701 7:8.35812194858129 8:10.592989067234 9:2.63291654350355 10:1.04256015362612 11:0.884425570049315 37:0.418600747852556
+1 1:9.37568010264346 2:2.30143413024151 3:0.790005327884769 4:0.286434890148457 5:0.103360824662536 6:1.41436417253231 7:7.29112765727304 8:12.1419638836692 9:4.37163501562854 10:1.59551591402648 13:0.844904909906825 37:0.418600747852556
+1 1:10.5058441093102 2:0.910072811958618 3:1.31667554647461 4:0.515582802267224 5:0.447896906870991 6:2.18770407431655 7:8.46482137771211 8:11.3424930106704 9:2.95582140261248 10:3.32399148755516 11:0.884425570049315 43:0.715678085420547
+3 1:8.76713025289984 2:2.33643693070145 3:1.58001065576954 4:1.63267887384621 5:0.310082473987609 6:1.2094676370928 7:6.72206403524197 8:12.241897742794 9:4.84357288663389 10:0.547480950891438 13:0.844904909906825 16:0.125988157669742
+3 1:6.81107716443821 2:2.75647053622081 3:3.423356420834 4:1.15528739026545 5:0.723525772637755 6:0.192692666557535 7:5.08600612190266 8:10.4430882785468 9:5.01744473384639 10:0.136870237722859 14:0.296673189340406
+1 1:9.92404370351134 2:0.315025204139522 3:3.29168886618654 4:1.03116560453445 5:1.15419587539832 6:1.44134114585036 7:7.4333935627808 8:8.84414653254916 9:2.26033401376248 10:1.40780815943513 13:0.844904909906825 47:1.05184741228156
+1 1:10.2951922382451 2:2.84397753737068 3:1.31667554647461 4:0.716087225371144 5:0.068907216441691 6:1.3732564036667 7:6.97102936988056 8:11.4923937993577 9:4.29711850968032 10:0.962002242280669 13:0.844904909906825 37:0.418600747852556
+1 1:10.6930902169236 2:0.901322111843631 3:0.395002663942384 4:2.86434890148458 5:2.70460824533637 6:0.389881495334746 7:8.00245718481187 8:11.7422284471698 9:3.60163112083033 10:0.629603093525153 12:0.260796291926003 46:0.674199862463242
+2 1:9.6465182225843 2:0.122509801609814 3:0.92167288253223 4:1.22212219796675 5:0.413443298650146 6:1.97188828777211 7:7.57565946828857 8:11.2425591515455 9:3.70098646209461 10:2.96891098511985 11:0.884425570049315 26:0.228914278114955
+3 1:7.88105492222919 2:2.54645373346113 3:3.81835908477638 4:1.47513968426456 5:1.98108247269862 6:0.483016284170888 7:4.51694249987159 8:11.0426914332958 9:5.63841561674817 10:0.267483550292674 14:0.296673189340406 24:0.280975743474508
+1 1:10.810119034182 2:0.061254900804907 3:1.05334043717969 4:0.639704587998222 5:0.310082473987609 6:3.55903355131767 7:7.50452651553469 8:11.2425591515455 9:3.75066413272675 10:0.547480950891438 11:0.884425570049315 36:0.258530551913103
+2 1:9.40577322708133 2:1.54012322023766 3:0.526670218589846 4:1.14573956059383 5:0.0516804123312682 6:1.32251400147322 7:7.8601912793041 8:12.0420300245443 9:3.87485830930711 10:1.8105977161624 11:0.884425570049315 44:0.445904036039959
+2 1:9.1249040656612 2:2.9664873389805 3:1.58001065576954 4:1.14573956059383 5:0.930247421962828 6:1.29489471926664 7:6.93546289350362 8:11.1426252924207 9:4.14808549778389 10:1.53920358764907 11:0.884425570049315 43:0.715678085420547
+2 1:9.58967565420166 2:0.962577012648538 3:2.50168353830177 4:0.405782761043648 5:0.413443298650146 6:2.07337309215908 7:8.85605261785847 8:10.7928567854837 9:2.18581750781427 10:1.99439489253309 11:0.884425570049315 43:0.715678085420547
+1 1:9.29208809031604 2:2.87022963771564 3:2.89668620224415 4:0.20050442310392 5:0.18949484521465 6:0.483016284170888 7:5.69063622031066 8:10.3931213489843 9:4.57034569815711 10:1.62054361463866 11:0.884425570049315 44:0.445904036039959
+1 1:9.00453156790972 2:0.122509801609814 3:1.31667554647461 4:0.20050442310392 5:0.068907216441691 6:1.28911393926991 7:7.46896003915775 8:10.8927906446086 9:3.57679228551426 10:5.3144758018676 11:0.884425570049315 26:0.228914278114955
+3 1:9.13159142664739 2:0.58629690770411 3:1.05334043717969 4:2.44901831076931 5:1.82604123570481 6:0.365473757570792 7:8.1091566139427 8:11.1925922219831 9:3.20420975577319 10:0.262008740783759 13:0.844904909906825 24:0.280975743474508
+7 1:11.191298610395 2:0.822565810808751 3:2.37001598365431 4:0.716087225371144 5:0.49957731920226 6:1.4805219880504 7:8.74935318872765 8:10.4430882785468 9:2.13613983718213 10:2.10310896706725 11:0.884425570049315 53:1
+1 1:9.53283308581901 3:0.395002663942384 6:0.912720930594191 7:7.64679242104245 8:11.6422945880449 9:3.87485830930711 10:1.06680573859417 13:0.844904909906825 37:0.418600747852556
+1 1:10.7031212584029 2:0.227518202989654 3:0.790005327884769 4:0.453521909401724 5:-0.206721649325073 6:1.69954931903746 7:7.71792537379634 8:11.3424930106704 9:3.6264699561464 10:1.9255687158496 11:0.884425570049315 37:0.418600747852556
+1 1:11.0040525027816 2:0.58629690770411 3:1.58001065576954 4:3.71887965709414 5:3.70376288374089 6:0.370612228678993 7:8.25142251945046 8:10.8428237150461 9:2.88130489666426 10:0.878315868358692 11:0.884425570049315 36:0.258530551913103
+1 1:10.2650991138072 2:2.16142292840172 3:1.18500799182715 6:1.25378695040103 7:7.14886175176527 8:12.3418316019189 9:4.57034569815711 10:0.387147243844659 13:0.844904909906825 37:0.418600747852556
+2 1:9.73011023491172 2:0.262521003449601 3:2.37001598365431 4:1.4369483655781 5:0.637391752085641 6:0.474023959731536 7:7.54009299191163 8:9.89345205336008 9:2.90614373198033 10:1.4633383701684 13:0.844904909906825 38:0.217872335165298
+2 1:10.1213208526041 2:1.04133331368342 3:2.37001598365431 4:3.48973174497537 5:1.7399072151527 6:3.75750699787194 7:8.82048614148153 8:11.0926583628583 9:2.38452819034284 10:2.52545141489779 11:0.884425570049315 43:0.715678085420547
+6 1:8.02483318343235 3:2.10668087435938 4:0.916591648475064 5:0.3789896904293 6:0.752786017351437 7:6.89989641712668 8:10.3931213489843 9:3.70098646209461 10:0.140780815943513 14:0.296673189340406 24:0.280975743474508
+1 1:10.6161855655824 2:0.148761901954774 3:2.37001598365431 4:0.20050442310392 5:-0.120587628772959 6:1.89352660337205 7:7.18442822814221 8:9.94341898292251 9:3.20420975577319 10:3.13941219554033 11:0.884425570049315 36:0.258530551913103
+2 1:10.4958130678309 2:1.92515402529708 3:1.44834310112208 4:0.716087225371144 5:0.275628865766764 6:1.52612591913568 7:7.36226061002692 8:12.5416993201686 9:4.44615152157675 10:0.684351188614297 13:0.844904909906825 46:0.674199862463242
+3 1:9.15165350960597 2:0.813815110693764 3:1.31667554647461 4:1.21734828313094 5:1.56763917404847 6:1.70725702569976 7:8.42925490133517 8:11.1925922219831 9:2.9309825672964 10:0.868148364984994 13:0.844904909906825 16:0.125988157669742
+2 1:8.90756483360991 2:1.70638652242241 3:3.55502397548146 4:1.08845258256414 5:1.03360824662536 6:1.21845996153215 7:7.21999470451915 8:12.4917323906062 9:4.07356899183568 10:1.20524020760529 13:0.844904909906825 24:0.280975743474508
+1 1:10.428939457969 2:0.901322111843631 3:0.790005327884769 4:1.17915696444448 5:-0.223948453435496 6:0.711035939597305 7:8.21585604307352 8:11.5923276584825 9:3.32840393235354 10:1.39998700299382 11:0.884425570049315 36:0.258530551913103
+7 1:11.3885757594877 2:0.105008401379841 3:2.37001598365431 4:1.94775725300951 5:3.34199999742201 6:2.81973602062526 7:7.07772879901139 8:10.0433528420474 9:3.35324276766962 10:2.99550291702029 13:0.844904909906825 53:1
+2 1:9.30880649278153 2:1.65388232173249 3:2.89668620224415 4:2.0050442310392 5:-0.620164947975219 6:0.863905455066282 7:7.64679242104245 8:12.4917323906062 9:3.92453597993925 10:0.654630794137333 13:0.844904909906825 27:0.184010991918219
+7 1:11.3818883985015 2:1.7763921233423 3:1.97501331971192 4:3.01234026139461 5:2.03276288502988 6:2.75486282288423 7:7.50452651553469 8:12.591666249731 9:4.27227967436425 10:2.15316436829161 13:0.844904909906825
+1 1:9.87054481562179 3:0.92167288253223 4:1.67087019253267 5:0.981927834294096 6:0.488154755279089 7:7.46896003915775 8:11.3924599402328 9:3.85001947399104 10:1.43674643826796 13:0.844904909906825 46:0.674199862463242
+2 1:9.77357808132198 2:0.551294107244163 3:0.790005327884769 4:1.54674840680167 5:0.792432989079446 6:1.94041515223438 7:8.03802366118881 8:11.3424930106704 9:3.35324276766962 10:1.5196506965458 11:0.884425570049315 43:0.715678085420547
+2 1:9.5428641272983 2:1.27760221678806 3:1.58001065576954 4:0.572869780296915 5:0.292855669877187 6:3.01114406940575 7:8.42925490133517 8:11.8921292358571 9:3.22904859108926 10:3.61650273846001 11:0.884425570049315 44:0.445904036039959
+2 1:9.57630093222927 2:2.59895793415105 3:2.10668087435938 4:0.606287184147568 5:0.155041236993805 6:1.74964941234242 7:6.15300041321091 8:11.6422945880449 9:4.96776706321424 10:1.84735715143654 11:0.884425570049315 43:0.715678085420547
+3 1:8.82397282128249 2:1.47886831943275 3:2.76501864759669 6:1.31352167703386 7:8.18028956669658 8:12.1419638836692 9:3.32840393235354 10:1.57674513856734 13:0.844904909906825 31:0.127293769304329
+2 1:9.89395057907347 2:2.75647053622081 3:1.44834310112208 4:0.286434890148457 5:0.172268041104227 6:3.05803261826808 7:6.79319698799585 8:11.5423607289201 9:4.47099035689282 10:4.65280596693309 11:0.884425570049315 26:0.228914278114955
+3 1:7.35944076530608 2:0.061254900804907 3:4.47669685801369 4:1.0025221155196 5:2.63570102889468 6:0.232515817646092 7:5.69063622031066 8:7.64494022305097 9:2.83162722603212 10:0.326142223602471 14:0.296673189340406 24:0.280975743474508
+2 1:10.1346955745764 2:0.376280104944429 3:3.02835375689161 4:1.59926146999555 5:1.3609175247234 6:2.56859324521194 7:7.71792537379634 8:9.14394810992371 9:2.23549517844641 10:1.80434079100935 11:0.884425570049315 43:0.715678085420547
+2 1:9.27871336834365 2:3.01024083955543 3:1.711678210417 4:0.20050442310392 5:0.120587628772959 6:1.83314956785068 7:6.89989641712668 8:10.942757574171 9:4.07356899183568 10:4.83112833379487 11:0.884425570049315 43:0.715678085420547
+2 1:8.96775108248565 2:1.03258261356843 3:1.31667554647461 4:0.606287184147568 5:0.654618556196064 6:1.19726376821082 7:8.46482137771211 8:11.5423607289201 9:3.05517674387676 10:4.09515751266795 11:0.884425570049315 43:0.715678085420547
+2 1:9.69667342998076 2:0.0350028004599468 3:1.711678210417 4:0.143217445074229 6:3.53398350466519 7:7.18442822814221 8:10.6929229263589 9:3.67614762677854 10:3.29427109307819 11:0.884425570049315 38:0.217872335165298
+1 1:10.1213208526041 2:2.80022403679575 3:0.92167288253223 4:0.20050442310392 5:0.0861340205521137 6:2.05667306105742 7:7.14886175176527 8:11.6422945880449 9:4.24744083904818 10:0.235416808883318 11:0.884425570049315 37:0.418600747852556
+1 1:11.6560701989355 2:1.02383191345345 3:2.50168353830177 4:3.48495783013957 5:3.46258762619497 6:1.46382195694874 7:8.85605261785847 8:10.942757574171 9:2.26033401376248 10:1.08088382018852 11:0.884425570049315
+2 1:10.8034316731958 2:0.568795507474136 3:1.31667554647461 4:0.716087225371144 5:0.172268041104227 6:3.67143760680957 7:8.18028956669658 8:10.9927245037334 9:3.05517674387676 10:0.860327208543688 11:0.884425570049315 36:0.258530551913103
+1 1:10.7566201462924 2:2.81772543702572 3:1.05334043717969 4:2.73545320091777 5:0.568484535643951 6:0.52348174414797 7:7.11329527538833 8:11.5923276584825 9:4.27227967436425 10:1.45786356065949 13:0.844904909906825 45:0.433012701892219
+2 1:9.64317454209121 2:3.10649854082028 3:1.711678210417 4:0.286434890148457 5:0.068907216441691 6:2.26349652316251 7:7.0065958462575 8:10.7928567854837 9:3.85001947399104 10:3.86286916636116 11:0.884425570049315 43:0.715678085420547
+1 1:8.90756483360991 2:1.8463977242622 3:1.97501331971192 6:1.099632817155 7:7.32669413364998 8:12.6416331792934 9:4.44615152157675 10:0.915075303632832 13:0.844904909906825 18:0.154303349962092
+1 1:10.7198396608684 2:0.183764702414721 3:0.790005327884769 4:0.405782761043648 5:0.120587628772959 6:3.71768384678338 7:7.6823588974194 8:11.3424930106704 9:3.67614762677854 10:0.644463290763635 11:0.884425570049315 33:0.0483368244522832
+6 1:8.30904602534558 2:1.26010081655809 3:0.92167288253223 6:0.744436001800611 7:8.18028956669658 8:11.9420961654195 9:3.52711461488211 10:1.05194554135569 13:0.844904909906825 31:0.127293769304329
+7 1:10.8769926440439 2:1.40011201839787 3:1.84334576506446 4:1.0025221155196 5:0.602938143864796 6:2.01941914552297 7:8.32255547220435 8:12.0919969541068 9:3.35324276766962 10:1.69093402261041 11:0.884425570049315 43:0.715678085420547
+2 1:9.85048273266321 2:3.11524924093527 3:3.02835375689161 4:0.591965439640145 5:0.981927834294096 6:0.751501399574387 7:6.22413336596479 8:9.54368354642311 9:3.67614762677854 10:0.672619453952338 13:0.844904909906825 45:0.433012701892219
+2 1:8.55313470134165 2:0.262521003449601 3:1.18500799182715 4:0.907043818803449 5:0.223948453435496 6:0.35519681535439 7:7.75349185017328 8:10.9927245037334 9:3.40292043830176 10:1.05820246650874 11:0.884425570049315 23:0.0750234484920533
+2 1:8.88750275065133 2:2.94023523863554 3:2.23834842900684 4:0.286434890148457 5:0.120587628772959 6:1.67835312571613 7:6.36639927147256 8:10.6929229263589 9:4.29711850968032 10:0.872841058849778 13:0.844904909906825 38:0.217872335165298
+2 1:9.87054481562179 2:2.73896913599084 3:1.31667554647461 4:1.01206994519122 5:0.551257731533528 6:3.12033658045502 7:6.86432994074974 8:11.6422945880449 9:4.44615152157675 10:1.56892398212603 11:0.884425570049315 43:0.715678085420547
+2 1:10.4088773750104 2:0.350028004599468 3:1.97501331971192 4:1.86182678596497 5:0.120587628772959 6:1.42849496807986 7:7.82462480292716 8:10.3431544194219 9:2.9309825672964 10:1.28188754073009 13:0.844904909906825 46:0.674199862463242
+1 1:10.4222520969828 2:0.00875070011498671 3:1.97501331971192 4:1.63267887384621 5:0.68907216441691 6:2.37846981420851 7:7.04216232263445 8:10.5430221376716 9:3.72582529741068 10:0.689825998123211 11:0.884425570049315 43:0.715678085420547
+1 1:10.8970547270025 2:2.84397753737068 3:1.711678210417 4:3.29877515154307 5:3.23863917275948 6:2.15558862989029 7:6.61536460611115 8:11.2425591515455 9:4.42131268626068 10:1.52121492783407 13:0.844904909906825 45:0.433012701892219
+1 1:10.465719943393 2:0.551294107244163 3:1.44834310112208 4:1.01206994519122 5:0.516804123312682 6:1.54282595023733 7:8.18028956669658 8:10.8927906446086 9:3.00549907324462 10:1.25920618705031 11:0.884425570049315 43:0.715678085420547
+2 1:10.0745093257007 2:2.98398873921047 3:2.10668087435938 4:0.405782761043648 5:0.361762886318878 6:0.115615599934521 7:6.61536460611115 8:10.7428898559213 9:4.14808549778389 10:1.06133092908526 13:0.844904909906825 45:0.433012701892219
+2 1:10.0243541183042 2:2.20517642897665 3:1.58001065576954 4:2.63997490420162 5:1.53318556582762 6:3.8153147978392 7:6.86432994074974 8:12.3917985314813 9:4.79389521600175 10:2.55830027195127 11:0.884425570049315 43:0.715678085420547
+2 1:8.71363136501029 2:3.08024644047532 3:1.711678210417 4:0.916591648475064 5:0.895793813741983 6:0.258208173187097 7:7.04216232263445 8:10.8927906446086 9:3.92453597993925 10:1.41093662201165 11:0.884425570049315 43:0.715678085420547
+2 1:10.8402121586199 2:0.227518202989654 3:1.18500799182715 4:2.82615758279811 5:1.61931958637974 6:3.73181464233093 7:7.6823588974194 8:10.9927245037334 9:3.47743694424997 10:1.98813796738005 11:0.884425570049315 43:0.715678085420547
+2 1:10.0778530061938 2:0.63880110839403 3:1.711678210417 4:1.15528739026545 5:0.775206184969023 6:3.37147935586834 7:8.35812194858129 8:10.6929229263589 9:2.68259421413569 10:0.652284447204941 11:0.884425570049315 44:0.445904036039959
+1 1:10.8000879927027 2:0.0262521003449601 3:1.05334043717969 4:2.82615758279811 5:-0.137814432883382 6:1.44455269029299 7:7.4333935627808 8:11.2425591515455 9:3.8003418033589 10:0.922114344430007 13:0.844904909906825 45:0.433012701892219
+2 1:8.67685087958623 2:2.95773663886551 3:2.23834842900684 4:0.319852293999111 5:0.310082473987609 6:0.858766983958082 7:6.47309870060338 8:10.6929229263589 9:4.24744083904818 10:0.722674855176698 11:0.884425570049315 43:0.715678085420547
+1 1:9.50608364187424 2:0.0875070011498671 3:1.711678210417 4:0.405782761043648 5:0.258402061656341 6:0.732232132918634 7:7.29112765727304 8:10.6429559967965 9:3.55195345019819 10:1.82624002904501 13:0.844904909906825 38:0.217872335165298
+2 1:9.24862024390578 2:1.1200896147183 3:1.05334043717969 4:0.859304670445373 5:0.120587628772959 6:1.26470620150596 7:8.32255547220435 8:11.7422284471698 9:3.30356509703747 10:0.684351188614297 11:0.884425570049315 26:0.228914278114955
+1 1:9.86720113512869 2:1.10258821448833 3:1.84334576506446 4:0.453521909401724 5:0.241175257545918 6:0.583216470780806 7:8.64265375959682 8:11.4424268697952 9:2.78194955539998 10:0.945577813753926 13:0.844904909906825 47:1.05184741228156
+1 1:10.5961234826238 2:2.15267222828673 3:1.18500799182715 4:0.716087225371144 5:0.344536082208455 6:1.6674338746112 7:7.21999470451915 8:12.3418316019189 9:4.52066802752496 10:0.821221426337156 13:0.844904909906825 37:0.418600747852556
+5 1:9.59636301518785 2:1.87264982460716 3:1.44834310112208 4:4.54954083852467 5:3.27309278098032 6:1.50300279914877 7:7.46896003915775 8:12.4917323906062 9:4.34679618031246 10:1.2310500238616 13:0.844904909906825 31:0.127293769304329
+2 1:8.41938748161777 2:2.66896353507095 3:2.50168353830177 4:0.835435096266334 5:0.861340205521137 6:0.38153147978392 7:5.86846860219537 8:11.292526081108 9:4.99260589853032 10:0.497425549667078 14:0.296673189340406 24:0.280975743474508
+1 1:9.5462078077914 2:0.542543407129176 3:3.16002131153908 4:0.453521909401724 5:0.706298968527332 6:1.55567212800783 7:8.25142251945046 8:9.09398118036129 9:1.71387963680891 10:1.70110152598411 13:0.844904909906825 47:1.05184741228156
+1 1:10.2885048772589 2:2.68646493530092 3:2.23834842900684 4:0.143217445074229 5:0.206721649325073 6:1.99244217220491 7:6.08186746045702 8:11.3424930106704 9:4.86841172194996 10:0.430945719915974 11:0.884425570049315 37:0.418600747852556
+2 1:10.0377288402766 2:2.73896913599084 3:1.05334043717969 4:1.0025221155196 5:0.310082473987609 6:2.57052017187752 7:7.04216232263445 8:11.6922615176074 9:4.37163501562854 10:1.22401098306443 11:0.884425570049315 37:0.418600747852556
+2 1:9.34224329771249 2:1.46136691920278 3:2.10668087435938 4:0.515582802267224 5:0.103360824662536 6:1.91857665002452 7:8.21585604307352 8:12.1919308132316 9:3.4525981089339 10:1.85361407658958 11:0.884425570049315 26:0.228914278114955
+1 1:10.4356268189552 2:0.0350028004599468 3:2.37001598365431 4:2.6924879673955 5:0.396216494539723 6:1.16386370600751 7:6.89989641712668 8:10.1432867011722 9:3.57679228551426 10:2.6482435710263 13:0.844904909906825 45:0.433012701892219
+6 1:8.78719233585842 2:0.367529404829442 3:1.58001065576954 4:0.591965439640145 5:0.482350515091837 6:0.402085364216723 7:7.89575775568105 8:10.6429559967965 9:3.08001557919283 10:0.995633214978286 13:0.844904909906825 24:0.280975743474508
+2 1:10.0076357158388 2:1.94265542552705 3:3.81835908477638 4:1.79499197826367 5:3.10082473987609 6:1.02576729497461 7:6.11743393683396 8:12.591666249731 9:5.04228356916246 10:0.358991080655957 13:0.844904909906825 27:0.184010991918219
+1 1:10.9304915319335 2:0.831316510923738 3:2.10668087435938 4:1.90956593432305 5:0.723525772637755 6:1.00392879276476 7:8.67822023597376 8:10.6929229263589 9:2.3348505197107 10:2.10310896706725 11:0.884425570049315 43:0.715678085420547
+1 1:10.0444162012628 2:0.385030805059415 3:2.76501864759669 4:1.83318329695013 5:1.98108247269862 6:1.37454102144375 7:7.82462480292716 8:9.44374968729826 9:2.35968935502677 10:1.8105977161624 13:0.844904909906825 38:0.217872335165298
+1 1:10.983990419823 2:1.26010081655809 3:3.29168886618654 4:4.24878420386879 5:6.95962886061079 6:0.839497717302328 7:8.74935318872765 8:11.292526081108 9:2.3348505197107 10:2.24936459251968 11:0.884425570049315 43:0.715678085420547
+2 1:10.5994671631169 2:1.74138932288236 3:1.44834310112208 4:2.0050442310392 5:1.05083505073579 6:0.172138782124731 7:7.6823588974194 8:12.4917323906062 9:4.14808549778389 10:2.37919578944536 13:0.844904909906825 45:0.433012701892219
+1 1:9.8571700936494 2:2.92273383840556 3:3.29168886618654 4:1.47513968426456 5:0.482350515091837 6:1.86719193894252 7:5.5483703148029 8:9.94341898292251 9:4.42131268626068 10:0.314410488940511 13:0.844904909906825 47:1.05184741228156
+1 1:11.1110502785607 2:3.14150134128023 3:1.58001065576954 4:2.05278337939728 5:0.757979380858601 6:0.647447359633318 7:7.14886175176527 8:10.8428237150461 9:3.8003418033589 10:1.99830547075375 11:0.884425570049315 52:0.77919372247398
+7 1:10.9070857684818 2:0.962577012648538 3:3.02835375689161 4:1.22212219796675 5:0.465123710981414 6:1.04310963496479 7:8.9627520469893 8:10.3931213489843 9:1.76355730744106 10:2.0022160489744 11:0.884425570049315 44:0.445904036039959
+2 1:9.87054481562179 2:0.341277304484482 3:1.97501331971192 4:1.03116560453445 5:0.826886597300292 6:2.96040166721226 7:7.78905832655022 8:10.2432205602971 9:2.90614373198033 10:2.93371578113398 11:0.884425570049315 43:0.715678085420547
+1 1:10.5392809142412 2:0.210016802759681 3:0.790005327884769 4:1.63267887384621 5:0.172268041104227 6:2.14081552545422 7:7.71792537379634 8:11.3424930106704 9:3.65130879146247 10:3.11985930443706 11:0.884425570049315 43:0.715678085420547
+7 1:11.2447974982846 2:1.78514282345729 3:1.711678210417 4:0.143217445074229 5:0.120587628772959 6:1.6597261679489 7:7.54009299191163 8:12.591666249731 9:4.27227967436425 10:0.379326087403353 13:0.844904909906825 49:0.210818510677892
+2 1:9.73011023491172 2:0.061254900804907 3:1.84334576506446 4:2.76409668993261 5:1.98108247269862 6:1.94876516778521 7:7.14886175176527 8:10.5430221376716 9:3.60163112083033 10:1.06211304472939 13:0.844904909906825 46:0.674199862463242
+1 1:10.1380392550695 2:2.87022963771564 3:1.18500799182715 4:0.405782761043648 5:0.172268041104227 6:2.10934238991648 7:7.04216232263445 8:11.4923937993577 9:4.24744083904818 10:0.209606992627008 11:0.884425570049315 37:0.418600747852556
+2 1:10.2784738357796 2:2.61645933438103 3:1.18500799182715 4:0.20050442310392 5:0.068907216441691 6:1.57815293910621 7:6.97102936988056 8:11.8421623062946 9:4.49582919220889 10:1.56344917261712 13:0.844904909906825 46:0.674199862463242
+7 1:10.8769926440439 2:0.988829112993498 3:2.76501864759669 4:0.319852293999111 5:0.344536082208455 6:2.50500466524796 7:8.89161909423541 8:10.6929229263589 9:2.03678449591784 10:3.18946759676469 11:0.884425570049315 53:1
+2 1:9.65989294455669 2:2.59020723403607 3:1.711678210417 4:1.27940917599644 5:-0.292855669877187 6:1.39830645031918 7:6.50866517698032 8:11.7921953767322 9:4.79389521600175 10:0.905689915903264 13:0.844904909906825 45:0.433012701892219
+2 1:9.26868232686436 2:1.10258821448833 3:1.05334043717969 4:0.143217445074229 5:-0.068907216441691 6:1.0790789327222 7:8.35812194858129 8:11.6922615176074 9:3.25388742640533 10:1.8669100425398 13:0.844904909906825 31:0.127293769304329
+2 1:8.66013247712074 2:0.743809509773871 3:1.44834310112208 4:0.515582802267224 5:0.361762886318878 6:0.910794003928616 7:8.39368842495823 8:11.0926583628583 9:2.88130489666426 10:1.13719614656593 13:0.844904909906825 25:0.157785504911465
+7 1:11.4253562449118 2:3.03649293990039 3:2.63335109294923 4:0.143217445074229 5:0.223948453435496 6:1.18313297266327 7:6.36639927147256 8:10.2432205602971 9:3.99905248588747 10:1.58613052629691 12:0.260796291926003 53:1
+2 1:9.06806149727855 2:0.857568611268698 3:0.92167288253223 4:0.716087225371144 5:0.465123710981414 6:1.2248830504174 7:8.21585604307352 8:11.5423607289201 9:3.2787262617214 10:4.92420009544642 11:0.884425570049315 26:0.228914278114955
+2 1:10.9104294489749 2:0.175014002299734 3:0.790005327884769 4:1.58016581065232 5:0.809659793189869 6:0.323081370928134 7:7.6823588974194 8:11.3924599402328 9:3.70098646209461 10:0.67574791652886 12:0.260796291926003 46:0.674199862463242
+1 1:11.328389510612 2:1.05883471391339 3:1.44834310112208 4:1.63267887384621 5:0.844113401410714 6:1.18955606154852 7:8.50038785408906 8:11.5423607289201 9:3.00549907324462 10:2.39249175539558 12:0.260796291926003 52:0.77919372247398
+1 1:9.95413682794921 2:0.962577012648538 3:1.31667554647461 6:1.68028005238171 7:8.42925490133517 8:11.4923937993577 9:3.05517674387676 10:0.282343747531156 11:0.884425570049315 34:0.169841555121689
+2 1:9.16502823157836 2:0.393781505174402 3:0.131667554647461 4:2.89776630533523 5:0.172268041104227 6:0.749574472908812 7:7.78905832655022 8:11.7921953767322 9:3.85001947399104 10:0.724239086464959 11:0.884425570049315 26:0.228914278114955
+2 1:10.6161855655824 2:0.66505320873899 3:1.58001065576954 4:0.835435096266334 5:0.947474226073251 6:3.43827948027495 7:8.32255547220435 8:10.8927906446086 9:2.83162722603212 10:1.97093142320918 11:0.884425570049315 36:0.258530551913103
+2 1:9.1282477461543 2:0.201266102644694 3:2.37001598365431 4:0.916591648475064 5:0.258402061656341 6:0.662862772957921 7:7.32669413364998 8:9.94341898292251 9:3.08001557919283 10:1.6447891996067 13:0.844904909906825 45:0.433012701892219
+2 1:8.93431427755468 2:0.288773103794562 3:1.31667554647461 4:2.11484427226278 5:1.41259793705466 6:0.647447359633318 7:7.75349185017328 8:10.942757574171 9:3.37808160298569 10:0.928371269583052 11:0.884425570049315 26:0.228914278114955
+1 1:10.673028133965 2:1.32135571736299 3:0.790005327884769 4:1.72338325572655 5:0.49957731920226 6:1.70340317236861 7:8.1091566139427 8:11.9920630949819 9:3.60163112083033 10:0.69999350149691 13:0.844904909906825 38:0.217872335165298
+2 1:9.91401266203205 2:3.13275064116524 3:2.23834842900684 4:1.47513968426456 5:0.620164947975219 6:0.231873508757567 7:6.79319698799585 8:10.2931874898595 9:3.75066413272675 10:1.09183343920635 13:0.844904909906825 38:0.217872335165298
+1 1:9.88391953759418 2:1.2513501164431 3:2.23834842900684 4:0.453521909401724 5:0.361762886318878 6:0.914005548371242 7:8.60708728321988 8:11.6922615176074 9:2.83162722603212 10:2.61852317654933 11:0.884425570049315 36:0.258530551913103
+1 1:10.2784738357796 2:0.315025204139522 3:0.263335109294923 4:1.03116560453445 5:0.637391752085641 6:0.888313192830237 7:7.78905832655022 8:11.6922615176074 9:3.77550296804283 10:2.11014800786443 11:0.884425570049315 43:0.715678085420547
+2 1:10.6696844534719 2:0.866319311383684 3:1.58001065576954 4:1.36056572820517 5:0.861340205521137 6:1.50300279914877 7:8.535954330466 8:11.0926583628583 9:2.73227188476783 10:1.14579941865137 13:0.844904909906825 46:0.674199862463242
+2 1:10.8368684781268 2:1.11133891460331 3:3.29168886618654 4:1.29850483533967 5:-1.37814432883382 6:0.313446737600257 7:8.9627520469893 8:10.7428898559213 9:1.88775148402141 10:3.05416159033009 12:0.260796291926003
+2 1:9.70670447146005 2:0.341277304484482 3:2.10668087435938 4:0.143217445074229 5:0.223948453435496 6:1.30581397037156 7:7.78905832655022 8:10.1432867011722 9:2.83162722603212 10:1.1262465275481 13:0.844904909906825 45:0.433012701892219
+2 1:10.0912277281662 2:1.70638652242241 3:0.395002663942384 4:2.22941822832216 5:1.75713401926312 6:3.53012965133404 7:7.78905832655022 8:12.0420300245443 9:3.94937481525532 10:1.25607772447378 11:0.884425570049315 43:0.715678085420547
+2 1:10.0912277281662 2:0.201266102644694 3:1.58001065576954 4:1.01206994519122 5:0.292855669877187 6:4.07737682435744 7:7.57565946828857 8:10.6929229263589 9:3.37808160298569 10:2.40735195263406 11:0.884425570049315 43:0.715678085420547
+1 1:9.79364016428056 2:0.787563010348804 3:0.658337773237307 4:0.591965439640145 5:0.0516804123312682 6:2.96618244720899 7:8.07359013756576 8:11.5923276584825 9:3.4525981089339 10:2.97438579462877 11:0.884425570049315 37:0.418600747852556
+2 1:10.8201500756613 2:0.568795507474136 3:1.97501331971192 4:1.40830487656325 5:0.482350515091837 6:2.13953090767717 7:8.28698899582741 8:10.3431544194219 9:2.53356120223927 10:2.31349807533839 13:0.844904909906825 46:0.674199862463242
+1 1:10.7599638267855 2:1.35635851782294 3:0.658337773237307 4:0.319852293999111 5:0.0172268041104227 6:3.75493776231783 7:8.03802366118881 8:11.9920630949819 9:3.70098646209461 10:0.483347468072726 11:0.884425570049315 37:0.418600747852556
+1 1:10.8870236855232 2:0.682554608968963 3:2.63335109294923 4:2.22941822832216 5:2.10167010147157 6:0.590924177443108 7:8.57152080684294 8:9.99338591248493 9:2.01194566060177 10:4.18040811787819 12:0.260796291926003 36:0.258530551913103
+2 1:9.83710801069082 2:2.78272263656577 3:2.10668087435938 4:1.86660070080078 5:1.5159587617172 6:3.26678300703875 7:6.22413336596479 8:11.1426252924207 9:4.64486220410532 10:0.388711475132921 11:0.884425570049315 43:0.715678085420547
+1 1:10.3720968895863 2:0.0787563010348804 3:1.31667554647461 4:2.08620078324793 5:1.46427834938593 6:0.934559432804045 7:7.4333935627808 8:10.942757574171 9:3.67614762677854 10:2.00143393333027 13:0.844904909906825 45:0.433012701892219
+2 1:9.50608364187424 2:0.525042006899203 3:1.44834310112208 4:1.04071343420606 5:1.58486597815889 6:0.892809355049913 7:8.14472309031964 8:10.7928567854837 9:2.95582140261248 10:1.03630322847308 13:0.844904909906825 46:0.674199862463242
+2 1:8.96440740199255 2:0.752560209888857 3:1.44834310112208 4:0.405782761043648 5:0.310082473987609 6:1.25635618595513 7:8.39368842495823 8:11.0426914332958 9:2.85646606134819 10:5.40832967916327 11:0.884425570049315 43:0.715678085420547
+2 1:9.30211913179533 2:0.866319311383684 3:1.84334576506446 4:1.15528739026545 5:1.29201030828171 6:0.948047919463073 7:8.64265375959682 8:10.9927245037334 9:2.55840003755534 10:0.714853698735391 13:0.844904909906825 46:0.674199862463242
+2 1:10.0745093257007 2:0.148761901954774 3:1.711678210417 4:4.6927582835989 5:3.70376288374089 6:1.88581889670974 7:7.39782708640386 8:10.5430221376716 9:3.42775927361783 10:0.660887719290378 13:0.844904909906825 46:0.674199862463242
+1 1:10.1915381429591 2:0.813815110693764 3:1.18500799182715 4:2.29625303602347 5:-0.103360824662536 6:0.395662275331472 7:8.32255547220435 8:11.3424930106704 9:3.1048544145089 10:0.861109324187818 13:0.844904909906825 47:1.05184741228156
+2 1:9.71339183244624 2:0.61254900804907 3:0.790005327884769 4:0.319852293999111 6:1.36490638811587 7:8.07359013756576 8:11.3924599402328 9:3.35324276766962 10:1.80199444407696 11:0.884425570049315 43:0.715678085420547
+6 1:7.46309486059209 3:3.68669153012892 4:0.591965439640145 5:0.947474226073251 6:1.01741727942379 7:5.93960155494926 8:8.74421267342431 9:3.35324276766962 10:0.249494890477669 14:0.296673189340406 24:0.280975743474508
+1 1:10.7833695902372 2:2.95773663886551 3:2.23834842900684 4:1.59926146999555 5:1.27478350417128 6:1.85370345228349 7:6.47309870060338 8:10.6929229263589 9:4.24744083904818 10:0.467705155190114 13:0.844904909906825 38:0.217872335165298
+2 1:9.59301933469476 2:2.11766942782678 3:3.16002131153908 4:1.0025221155196 5:1.5159587617172 6:0.738655221803885 7:5.90403507857231 8:12.5416993201686 9:5.36518842827138 10:1.3663560302962 13:0.844904909906825 18:0.154303349962092
+2 1:10.739901743827 2:2.01266102644694 3:1.711678210417 4:2.71635754157454 5:2.44620618368003 6:3.85321102226218 7:7.11329527538833 8:12.5416993201686 9:4.64486220410532 10:1.69797306340759 11:0.884425570049315 44:0.445904036039959
+1 1:10.5493119557204 2:1.03258261356843 3:1.05334043717969 4:1.15528739026545 5:0.947474226073251 6:2.13696167212306 7:8.32255547220435 8:11.6422945880449 9:3.22904859108926 10:2.51919448974474 11:0.884425570049315 43:0.715678085420547
+7 1:10.7432454243201 2:1.30385431713302 3:3.81835908477638 4:0.453521909401724 5:0.49957731920226 6:1.099632817155 7:8.64265375959682 8:11.1925922219831 9:2.21065634313034 10:0.314410488940511 13:0.844904909906825 53:1
+3 1:7.81752499286035 2:2.633960734611 3:0.92167288253223 4:1.35101789853356 5:1.06806185484621 6:0.35391219757734 7:7.14886175176527 8:11.8421623062946 9:4.37163501562854 10:0.524799597211649 14:0.296673189340406 24:0.280975743474508
+2 1:9.90063794005966 2:1.67138372196246 3:1.84334576506446 4:2.6924879673955 5:1.37814432883382 6:1.75543019233915 7:7.78905832655022 8:12.4917323906062 9:4.02389132120354 10:1.55406378488755 13:0.844904909906825 47:1.05184741228156
+1 1:10.4623762628999 2:0.297523803909548 3:1.44834310112208 4:2.86434890148458 5:-0.775206184969023 6:2.6264010451792 7:7.78905832655022 8:10.7928567854837 9:3.2787262617214 10:3.34745495687908 11:0.884425570049315 37:0.418600747852556
+3 1:8.29567130337319 2:1.29510361701803 3:3.55502397548146 4:1.86182678596497 5:1.25755670006086 6:0.238296597642818 7:8.64265375959682 8:11.292526081108 9:2.31001168439462 10:0.916639534921093 13:0.844904909906825 16:0.125988157669742
+2 1:9.5462078077914 2:0.743809509773871 3:1.97501331971192 4:1.04071343420606 5:0.482350515091837 6:0.597989575216884 7:8.535954330466 8:10.6929229263589 9:2.48388353160712 10:0.168936979132215 11:0.884425570049315 43:0.715678085420547
+2 1:10.8502432000992 2:2.79147333668076 3:1.18500799182715 6:0.430989264200354 7:7.0065958462575 8:11.5923276584825 9:4.34679618031246 10:0.944013582465665 12:0.260796291926003 38:0.217872335165298
+1 1:10.0444162012628 2:0.568795507474136 3:1.31667554647461 4:3.02188809106623 5:1.91217525625692 6:0.136169484367325 7:8.18028956669658 8:10.9927245037334 9:3.05517674387676 10:0.534967100585348 13:0.844904909906825 46:0.674199862463242
+2 1:10.0009483548526 2:2.75647053622081 3:0.92167288253223 4:2.05278337939728 5:0.103360824662536 6:1.19469453265672 7:7.18442822814221 8:11.7422284471698 9:4.27227967436425 10:0.872841058849778 13:0.844904909906825 46:0.674199862463242
+2 1:9.13159142664739 2:0.962577012648538 3:4.60836441266115 4:0.515582802267224 5:1.22310309184001 6:0.926851726141744 7:9.03388499974318 8:8.89411346211159 9:0.496776706321424 10:0.786808337995409 13:0.844904909906825 27:0.184010991918219
+2 1:9.26533864637127 2:0.630050408279043 3:1.31667554647461 4:1.88569636014401 5:0.706298968527332 6:1.71881858569321 7:8.21585604307352 8:11.0426914332958 9:3.03033790856069 10:1.61819726770626 13:0.844904909906825 24:0.280975743474508
+2 1:9.3388996172194 2:0.358778704714455 3:1.31667554647461 4:0.572869780296915 5:0.137814432883382 6:0.258208173187097 7:7.8601912793041 8:10.8927906446086 9:3.25388742640533 10:0.631949440457545 11:0.884425570049315 37:0.418600747852556
+2 1:9.8571700936494 2:0.288773103794562 3:3.02835375689161 4:3.14123596196142 5:2.17057731791327 6:0.951259463905698 7:7.4333935627808 8:9.14394810992371 9:2.50872236692319 10:2.15863917780053 13:0.844904909906825 47:1.05184741228156
+2 1:9.92404370351134 2:1.56637532058262 3:1.58001065576954 4:2.77841843444004 5:0.482350515091837 6:1.84085727451299 7:8.00245718481187 8:12.3418316019189 9:3.8003418033589 10:1.81607252567131 13:0.844904909906825 40:0.0798086884467622
+1 1:10.5559993167066 3:0.92167288253223 4:0.20050442310392 5:0.0516804123312682 6:2.8743322761499 7:7.46896003915775 8:11.3924599402328 9:3.85001947399104 10:1.43205374440317 11:0.884425570049315 37:0.418600747852556
+2 1:9.35896170017798 2:2.86147893760065 3:2.89668620224415 4:1.15528739026545 5:1.79158762748397 6:0.681489730725149 7:5.76176917306455 8:10.4930552081092 9:4.59518453347318 10:0.285472210107678 13:0.844904909906825 47:1.05184741228156
+1 1:11.9335956798625 2:0.315025204139522 3:2.23834842900684 4:3.7570709757806 5:2.70460824533637 6:1.73038014568667 7:7.71792537379634 8:9.99338591248493 9:2.80678839071605 10:1.21775405791138 11:0.884425570049315
+2 1:9.16837191207146 2:0.918823512073605 3:2.89668620224415 4:0.286434890148457 5:0.361762886318878 6:1.41629109919788 7:8.89161909423541 8:10.3431544194219 9:1.83807381338927 10:0.244802196612886 13:0.844904909906825 27:0.184010991918219
+2 1:9.94744946696302 2:1.03258261356843 3:2.37001598365431 4:1.71860934089075 5:2.22225773024453 6:1.49272585693237 7:8.82048614148153 8:11.0426914332958 9:2.35968935502677 10:1.17239135055181 13:0.844904909906825 27:0.184010991918219
+2 1:10.3921589725449 2:1.02383191345345 3:3.423356420834 4:1.11709607157898 5:0.792432989079446 6:2.4780276919299 7:8.99831852336624 8:10.2931874898595 9:1.58968546022856 10:0.567815957638834 11:0.884425570049315 43:0.715678085420547
+1 1:10.6161855655824 2:1.1200896147183 3:3.55502397548146 4:1.27940917599644 5:1.32646391650255 6:2.44591224750365 7:8.9627520469893 8:10.592989067234 9:1.71387963680891 10:2.21338727288967 13:0.844904909906825 47:1.05184741228156
+7 1:10.8970547270025 2:0.69130530908395 3:1.18500799182715 4:0.319852293999111 6:1.76827637010965 7:8.25142251945046 8:11.1925922219831 9:3.08001557919283 10:1.32099332293663 13:0.844904909906825 52:0.77919372247398
+1 1:10.4824383458585 2:2.66021283495596 3:0.658337773237307 4:0.143217445074229 6:0.445120059747906 7:7.32669413364998 8:11.8421623062946 9:4.24744083904818 10:0.846249126949336 12:0.260796291926003 37:0.418600747852556
+2 1:9.84713905217011 2:2.32768623058647 3:1.58001065576954 4:3.24626208834919 5:2.56679381245299 6:1.55695674578488 7:6.72206403524197 8:12.241897742794 9:4.86841172194996 10:1.29909408490097 13:0.844904909906825 47:1.05184741228156
+2 1:9.95413682794921 2:0.936324912303578 3:2.10668087435938 4:1.72815717056236 5:1.08528865895663 6:2.91800928056961 7:8.74935318872765 8:10.942757574171 9:2.43420586097498 10:1.32568601680141 11:0.884425570049315 43:0.715678085420547
+2 1:11.2615159007501 2:1.49636971966273 3:1.84334576506446 4:2.32967043987412 5:0.671845360306487 6:0.63138963742019 7:8.14472309031964 8:12.2918646723565 9:3.60163112083033 10:3.32399148755516 12:0.260796291926003 52:0.77919372247398
+1 1:10.8000879927027 2:1.96890752587201 3:1.97501331971192 4:1.21734828313094 5:0.413443298650146 6:1.82351493452281 7:7.07772879901139 8:12.6416331792934 9:4.66970103942139 10:0.597536352115798 11:0.884425570049315 43:0.715678085420547
+2 1:9.34558697820559 2:1.66263302184748 3:3.29168886618654 4:0.811565522087296 5:1.08528865895663 6:0.987228761663105 7:7.50452651553469 8:12.4417654610437 9:3.92453597993925 10:1.85361407658958 13:0.844904909906825 18:0.154303349962092
+1 1:10.9873341003161 2:1.62763022138753 3:1.18500799182715 4:2.45379222560512 5:1.8949484521465 6:2.22110413651985 7:7.89575775568105 8:12.3418316019189 9:3.92453597993925 10:2.17819206890379 11:0.884425570049315 37:0.418600747852556
+1 1:10.4088773750104 2:2.2401792294366 3:1.18500799182715 4:0.716087225371144 5:0.137814432883382 6:0.951901772794223 7:7.11329527538833 8:12.2918646723565 9:4.57034569815711 10:1.68936979132215 13:0.844904909906825 37:0.418600747852556
+2 1:10.8502432000992 2:2.5027002328862 3:1.05334043717969 4:2.47288788494835 5:0.18949484521465 6:0.215173477655914 7:7.07772879901139 8:11.9920630949819 9:4.49582919220889 10:0.707032542294085 13:0.844904909906825 46:0.674199862463242
+1 1:10.8402121586199 2:0.393781505174402 3:0.395002663942384 4:2.31057478053089 5:1.08528865895663 6:2.83258219839577 7:7.82462480292716 8:11.6422945880449 9:3.72582529741068 10:2.13361147718835 11:0.884425570049315 36:0.258530551913103
+2 1:9.69332974948766 2:0.332526604369495 3:1.05334043717969 4:2.36308784372477 5:2.15335051380284 6:0.449616221967582 7:7.82462480292716 8:11.1426252924207 9:3.42775927361783 10:1.75819596800565 11:0.884425570049315 26:0.228914278114955
+1 1:10.6195292460755 2:2.83522683725569 3:2.37001598365431 4:0.515582802267224 5:0.103360824662536 6:0.664147390734971 7:6.11743393683396 8:10.8927906446086 9:4.57034569815711 10:1.01831456865807 11:0.884425570049315 43:0.715678085420547
+2 1:9.73345391540482 2:2.52895233323116 3:2.50168353830177 4:0.429652335222686 5:0.602938143864796 6:1.97509983221474 7:5.86846860219537 8:11.7422284471698 9:5.16647774574281 10:2.00299816461853 11:0.884425570049315 43:0.715678085420547
+4 1:7.39287757023705 2:1.14634171506326 3:3.81835908477638 4:0.20050442310392 5:0.292855669877187 6:0.572297219675879 7:8.9627520469893 8:10.4930552081092 9:1.58968546022856 10:1.09496190178288 14:0.296673189340406 17:0.119629720910916
+2 1:10.1413829355626 2:0.507540606669229 3:2.76501864759669 4:3.93370582470548 5:3.22141236864905 6:0.991724923882781 7:8.18028956669658 8:9.54368354642311 9:2.08646216654998 10:2.15394648393574 13:0.844904909906825 47:1.05184741228156
+2 1:8.85072226522726 2:1.10258821448833 3:0.790005327884769 4:0.143217445074229 5:0.068907216441691 6:0.706539777377629 7:8.21585604307352 8:11.7921953767322 9:3.42775927361783 10:4.75682734760246 11:0.884425570049315 26:0.228914278114955
+2 1:10.4924693873378 2:2.08266662736684 3:2.50168353830177 4:2.89776630533523 5:3.91048453306596 6:3.59692977574066 7:6.50866517698032 8:12.6416331792934 9:5.04228356916246 10:0.948706276330448 11:0.884425570049315 43:0.715678085420547
+2 1:9.45927211497088 2:0.770061610118831 3:0.92167288253223 4:2.14826167611343 5:0.465123710981414 6:0.585143397446382 7:8.21585604307352 8:11.4424268697952 9:3.25388742640533 10:1.85439619223371 11:0.884425570049315 43:0.715678085420547
+2 1:9.90398162055276 2:1.30385431713302 3:1.44834310112208 4:1.03116560453445 5:0.430670102760569 6:2.37076210754621 7:8.35812194858129 8:11.9420961654195 9:3.32840393235354 10:1.6932803695428 11:0.884425570049315 26:0.228914278114955
+1 1:10.3921589725449 2:3.08024644047532 3:1.711678210417 4:0.773374203400835 5:0.275628865766764 6:2.53455087412011 7:6.97102936988056 8:10.8428237150461 9:3.92453597993925 10:0.882226446579345 11:0.884425570049315 43:0.715678085420547
+2 1:8.66013247712074 2:2.22267782920662 3:2.76501864759669 4:1.22212219796675 5:1.98108247269862 6:0.946120992797498 7:5.9751680313262 8:12.3917985314813 9:5.34034959295531 10:1.06211304472939 13:0.844904909906825 17:0.119629720910916
+2 1:9.69667342998076 2:2.36268903104641 3:1.18500799182715 4:0.716087225371144 5:0.275628865766764 6:1.40537184809296 7:7.04216232263445 8:12.1419638836692 9:4.59518453347318 10:1.12155383368332 13:0.844904909906825 45:0.433012701892219
+1 1:10.7298707023477 2:0.673803908853977 3:0.658337773237307 6:1.53897209690618 7:8.07359013756576 8:11.4923937993577 9:3.42775927361783 10:0.882226446579345 11:0.884425570049315 37:0.418600747852556
+1 1:9.65654926406359 2:1.98640892610198 3:2.23834842900684 4:0.515582802267224 5:0.430670102760569 6:2.67393190293006 7:6.86432994074974 8:12.6916001088559 9:4.81873405131782 10:2.88131403297722 11:0.884425570049315 44:0.445904036039959
+2 1:9.47933419792946 2:1.99515962621697 3:2.63335109294923 4:2.9407315388575 5:1.61931958637974 6:2.51785084301846 7:6.65093108248809 8:12.6916001088559 9:4.9180893925821 10:1.22010040484378 13:0.844904909906825 27:0.184010991918219
+1 1:10.2617554333141 2:0.358778704714455 3:0.526670218589846 4:0.143217445074229 6:0.885743957276137 7:7.82462480292716 8:11.4923937993577 9:3.6264699561464 10:2.46913908852038 13:0.844904909906825 37:0.418600747852556
+2 1:11.0207709052471 2:2.9664873389805 3:2.37001598365431 4:1.86182678596497 5:1.82604123570481 6:1.20754071042722 7:6.36639927147256 8:10.592989067234 9:4.22260200373211 10:1.62601842414757 12:0.260796291926003 47:1.05184741228156
+2 1:9.43252267102611 2:0.446285705864322 3:0.92167288253223 4:2.63042707453 5:1.41259793705466 6:2.05988460550005 7:7.96689070843493 8:11.2425591515455 9:3.40292043830176 10:4.96095953072056 11:0.884425570049315 26:0.228914278114955
+1 1:11.3651699960361 2:3.08899714059031 3:1.44834310112208 4:2.1912269096357 5:1.55041236993805 6:1.04503656163037 7:7.11329527538833 8:10.9927245037334 9:3.92453597993925 10:1.66434209070997 13:0.844904909906825 46:0.674199862463242
+1 1:10.6696844534719 2:2.52020163311617 3:2.10668087435938 4:0.835435096266334 5:0.275628865766764 6:0.354554506465865 7:6.15300041321091 8:11.8421623062946 9:5.04228356916246 10:1.01283975914916 13:0.844904909906825 37:0.418600747852556
+2 1:9.0179062898821 2:0.56004480735915 3:1.18500799182715 4:1.59926146999555 5:0.792432989079446 6:0.351342962023239 7:8.14472309031964 8:11.0426914332958 9:3.1048544145089 10:1.36088122078729 11:0.884425570049315 26:0.228914278114955
+2 1:9.56961357124308 2:0.358778704714455 3:1.31667554647461 4:1.27940917599644 5:0.292855669877187 6:1.86141115894579 7:7.89575775568105 8:10.8428237150461 9:3.22904859108926 10:3.00175984217334 11:0.884425570049315 43:0.715678085420547
+2 1:9.92070002301824 2:1.80264422368726 3:1.05334043717969 4:0.515582802267224 5:-0.0861340205521137 6:0.780405299558017 7:7.64679242104245 8:12.3917985314813 9:4.17292433309997 10:0.605357508557104 13:0.844904909906825 46:0.674199862463242
+2 1:10.7098086193891 2:1.17259381540822 3:3.29168886618654 4:0.606287184147568 5:0.654618556196064 6:1.00200186609918 7:8.89161909423541 8:10.942757574171 9:2.03678449591784 10:2.08746665418464 11:0.884425570049315 44:0.445904036039959
+1 1:10.9003984074956 2:3.01899153967042 3:1.58001065576954 4:3.03620983557365 5:0.585711339754373 6:1.2248830504174 7:6.97102936988056 8:11.0426914332958 9:4.04873015651961 10:0.483347468072726 13:0.844904909906825 36:0.258530551913103
+3 1:8.36254491323513 2:0.673803908853977 3:2.10668087435938 4:0.639704587998222 5:0.447896906870991 6:0.688555128498926 7:8.46482137771211 8:10.4930552081092 9:2.43420586097498 10:0.753959480941923 13:0.844904909906825 18:0.154303349962092
+1 1:9.72342287392553 2:2.78272263656577 3:4.08169419407131 4:1.29850483533967 5:2.37729896723834 6:0.427777719757728 7:4.44580954711771 8:9.74355126467281 9:4.99260589853032 10:0.905689915903264 13:0.844904909906825 47:1.05184741228156
+5 1:9.47599051743637 2:1.54012322023766 3:3.423356420834 4:0.572869780296915 5:0.87856700963156 6:0.693693599607127 7:7.93132423205799 8:12.1419638836692 9:3.35324276766962 10:2.33148673515339 13:0.844904909906825 18:0.154303349962092
+2 1:9.81704592773224 2:2.04766382690689 3:2.37001598365431 4:0.515582802267224 5:0.465123710981414 6:3.78512628007852 7:6.61536460611115 8:12.6416331792934 9:4.99260589853032 10:3.92230995531509 11:0.884425570049315 44:0.445904036039959
+2 1:9.3322122562332 2:0.69130530908395 3:1.44834310112208 4:1.61835712933878 5:0.602938143864796 6:1.36233715256177 7:8.32255547220435 8:10.9927245037334 9:2.90614373198033 10:1.44065701648861 11:0.884425570049315 26:0.228914278114955
+2 1:9.73011023491172 2:0.726308109543897 3:2.50168353830177 4:1.67564410736848 5:1.80881443159439 6:0.243435068751019 7:8.64265375959682 8:10.1432867011722 9:2.01194566060177 10:1.09965459564766 11:0.884425570049315 43:0.715678085420547
+2 1:9.60305037617404 2:0.201266102644694 3:2.63335109294923 4:0.716087225371144 5:0.568484535643951 6:0.29995825094123 7:7.21999470451915 8:9.59365047598553 9:2.95582140261248 10:0.31284625765225 13:0.844904909906825 45:0.433012701892219
+1 1:10.6930902169236 2:0.472537806209282 3:1.31667554647461 4:3.89551450601902 5:2.01553608091946 6:0.817659215092474 7:8.03802366118881 8:10.8927906446086 9:3.08001557919283 10:1.83953599499523 13:0.844904909906825 46:0.674199862463242
+3 1:8.79722337733771 2:0.831316510923738 3:0.395002663942384 4:1.04071343420606 5:0.465123710981414 6:1.16386370600751 7:7.96689070843493 8:11.7422284471698 9:3.65130879146247 10:0.63742424996646 13:0.844904909906825 16:0.125988157669742
+2 1:8.87412802867894 2:1.45261621908779 3:1.97501331971192 4:0.143217445074229 5:0.120587628772959 6:1.29874857259779 7:8.25142251945046 8:12.1919308132316 9:3.4525981089339 10:1.8950662057285 13:0.844904909906825 31:0.127293769304329
+2 1:9.83710801069082 2:2.05641452702188 3:2.76501864759669 4:1.83318329695013 5:2.22225773024453 6:1.12211362825338 7:6.4019657478495 8:12.6416331792934 9:5.0919612397946 10:0.58815096438623 13:0.844904909906825 45:0.433012701892219
+2 1:9.0245936508683 2:0.385030805059415 3:1.711678210417 4:1.80931372277109 5:0.723525772637755 6:0.268485115403499 7:7.89575775568105 8:10.4930552081092 9:2.98066023792855 10:0.652284447204941 13:0.844904909906825 25:0.157785504911465
+2 1:10.2015691844384 2:1.19009521563819 3:3.423356420834 4:1.28895700566806 5:1.34369072061297 6:1.77341484121785 7:8.85605261785847 8:10.9927245037334 9:2.03678449591784 10:1.15518480638093 13:0.844904909906825 47:1.05184741228156
+2 1:10.3185980016968 2:0.0175014002299734 3:0.92167288253223 4:1.91911376399467 5:0.930247421962828 6:0.640381961859542 7:7.46896003915775 8:11.292526081108 9:3.82518063867497 10:0.911164725412178 12:0.260796291926003 37:0.418600747852556
+7 1:11.4922298547737 2:0.332526604369495 3:1.44834310112208 4:1.91911376399467 5:1.5159587617172 6:2.02519992551969 7:7.82462480292716 8:10.7928567854837 9:3.20420975577319 10:1.05038131006743 13:0.844904909906825
+2 1:9.63648718110501 2:1.27760221678806 3:0.658337773237307 4:0.143217445074229 5:-0.0344536082208455 6:1.48244891471597 7:8.07359013756576 8:11.9420961654195 9:3.6264699561464 10:2.10310896706725 13:0.844904909906825 31:0.127293769304329
+2 1:9.21852711946791 2:1.48761901954774 3:2.37001598365431 4:1.11709607157898 5:0.172268041104227 6:1.40794108364706 7:8.18028956669658 8:12.241897742794 9:3.47743694424997 10:2.13361147718835 11:0.884425570049315 44:0.445904036039959
+2 1:10.3520348066277 2:1.89890192495212 3:0.658337773237307 4:2.45379222560512 5:0.568484535643951 6:0.215173477655914 7:7.64679242104245 8:12.1919308132316 9:4.12324666246782 10:1.04647073184678 13:0.844904909906825 46:0.674199862463242
+2 1:10.117977172111 2:1.57512602069761 3:0.395002663942384 4:0.405782761043648 5:0.068907216441691 6:2.13631936323454 7:7.82462480292716 8:12.0420300245443 9:3.87485830930711 10:0.126702734349161 11:0.884425570049315 43:0.715678085420547
+2 1:10.1346955745764 2:0.297523803909548 3:2.10668087435938 4:4.29652335222686 5:3.65208247140962 6:0.786186079554743 7:7.6823588974194 8:10.1932536307346 9:2.95582140261248 10:1.94746795388526 13:0.844904909906825 46:0.674199862463242
+1 1:11.1344560420124 2:2.9664873389805 3:2.50168353830177 4:3.21761859933434 5:3.06637113165525 6:2.66237034293661 7:6.25969984234173 8:10.4430882785468 9:4.22260200373211 10:1.87316696769285 13:0.844904909906825 47:1.05184741228156
+3 1:8.62000831120358 2:0.218767502874668 3:2.89668620224415 4:1.22212219796675 5:1.53318556582762 6:0.889597810607287 7:7.21999470451915 8:9.34381582817341 9:2.78194955539998 10:0.448152264086848 13:0.844904909906825 24:0.280975743474508
+2 1:10.2450370308486 2:2.34518763081644 3:0.790005327884769 4:0.453521909401724 5:0.172268041104227 6:1.7849764012113 7:7.2555611808961 8:12.1419638836692 9:4.42131268626068 10:1.35384217999011 13:0.844904909906825 34:0.169841555121689
+1 1:10.7699948682648 2:0.297523803909548 3:2.50168353830177 4:3.02188809106623 5:0.792432989079446 6:2.3039619831396 7:7.61122594466551 8:9.79351819423523 9:2.78194955539998 10:3.27471820197493 11:0.884425570049315 43:0.715678085420547
+1 1:10.1346955745764 2:2.81772543702572 3:2.23834842900684 4:0.639704587998222 5:0.0172268041104227 6:1.61347992797509 7:6.25969984234173 8:11.0926583628583 9:4.59518453347318 10:1.11216844595375 13:0.844904909906825 47:1.05184741228156
+1 1:9.90398162055276 3:0.658337773237307 4:1.86182678596497 5:0.844113401410714 6:2.99508634719262 7:7.57565946828857 8:11.5423607289201 9:3.87485830930711 10:2.24701824558729 11:0.884425570049315 37:0.418600747852556
+2 1:10.1948818234522 2:0.385030805059415 3:1.711678210417 4:3.16987945097626 5:-0.430670102760569 6:0.984659526109005 7:7.89575775568105 8:10.4930552081092 9:2.98066023792855 10:2.32835827257687 13:0.844904909906825 47:1.05184741228156
+2 1:9.8571700936494 2:2.28393273001153 3:1.44834310112208 4:0.515582802267224 5:0.275628865766764 6:1.6263261057456 7:6.8287634643728 8:12.2918646723565 9:4.79389521600175 10:0.570944420215356 13:0.844904909906825 36:0.258530551913103
+2 1:10.258411752821 2:2.08266662736684 3:1.18500799182715 4:0.606287184147568 5:0.241175257545918 6:1.94876516778521 7:7.2555611808961 8:12.3917985314813 9:4.52066802752496 10:1.15909538460159 13:0.844904909906825 46:0.674199862463242
+1 1:10.2450370308486 2:0.393781505174402 3:0.395002663942384 4:0.20050442310392 5:-0.068907216441691 6:2.72981277623175 7:7.82462480292716 8:11.5923276584825 9:3.67614762677854 10:0.664798297511031 11:0.884425570049315 33:0.0483368244522832
+1 1:10.7867132707303 2:0.358778704714455 3:2.76501864759669 4:0.859304670445373 5:0.826886597300292 6:0.484943210836463 7:7.71792537379634 8:9.39378275773583 9:2.40936702565891 10:1.25764195576205 11:0.884425570049315 36:0.258530551913103
+2 1:9.2285581609472 2:0.988829112993498 3:2.89668620224415 4:1.23167002763837 5:1.01638144251494 6:1.41821802586346 7:8.92718557061235 8:10.592989067234 9:1.91259031933748 10:0.415303407033362 13:0.844904909906825 24:0.280975743474508
+1 1:9.99091731337328 2:1.81139492380225 3:0.92167288253223 4:0.286434890148457 5:0.275628865766764 6:0.481731666393838 7:7.64679242104245 8:12.3418316019189 9:4.14808549778389 10:0.982337249028065 12:0.260796291926003 37:0.418600747852556
+2 1:10.221631267397 2:0.472537806209282 3:0.92167288253223 4:1.0025221155196 5:0.172268041104227 6:2.43563530528724 7:7.96689070843493 8:11.2425591515455 9:3.37808160298569 10:1.5118295401045 11:0.884425570049315 43:0.715678085420547
+2 1:9.83710801069082 2:2.19642572886166 3:4.08169419407131 4:1.74725282990559 5:1.70545360693185 6:1.77534176788342 7:4.94374021639489 8:12.1419638836692 9:5.76260979332852 10:0.493514971446424 13:0.844904909906825 27:0.184010991918219
+1 1:9.31215017327462 2:2.70396633553089 3:1.58001065576954 4:0.143217445074229 5:0.0172268041104227 6:1.36490638811587 7:6.61536460611115 8:11.5923276584825 9:4.62002336878925 10:2.50042371428561 11:0.884425570049315 34:0.169841555121689
+1 1:10.6195292460755 2:0.455036405979309 3:1.58001065576954 4:3.98144497306356 5:0.844113401410714 6:1.53576055246355 7:8.03802366118881 8:10.7428898559213 9:3.00549907324462 10:2.41986580294015 13:0.844904909906825 45:0.433012701892219
+1 1:10.1915381429591 2:0.945075612418565 3:2.50168353830177 4:1.28895700566806 5:0.103360824662536 6:0.463104708626609 7:8.85605261785847 8:10.6929229263589 9:2.13613983718213 10:0.564687495062311 11:0.884425570049315 43:0.715678085420547
+2 1:9.32886857574011 2:3.07149574036034 3:1.44834310112208 4:0.916591648475064 5:0.775206184969023 6:1.76891867899817 7:7.07772879901139 8:11.0426914332958 9:3.94937481525532 10:2.11249435479682 11:0.884425570049315 43:0.715678085420547
+3 1:8.88081538966513 2:1.2513501164431 3:2.63335109294923 4:0.591965439640145 5:0.3789896904293 6:1.51777590358485 7:8.67822023597376 8:11.5423607289201 9:2.65775537881962 10:1.87551331462524 13:0.844904909906825 18:0.154303349962092
+2 1:9.15165350960597 2:0.813815110693764 3:3.68669153012892 4:0.572869780296915 5:0.68907216441691 6:0.708466704043204 7:8.89161909423541 8:9.29384889861099 9:1.11774758922321 10:0.957309548415885 13:0.844904909906825 27:0.184010991918219
+2 1:9.21518343897482 2:0.997579813108485 3:0.658337773237307 4:0.286434890148457 6:1.84406881895561 7:8.1091566139427 8:11.7422284471698 9:3.50227577956604 10:1.71674383886672 11:0.884425570049315 26:0.228914278114955
+2 1:9.11821670467501 2:0.761310910003844 3:1.31667554647461 4:0.319852293999111 5:0.241175257545918 6:1.3681179325585 7:8.35812194858129 8:11.1925922219831 9:2.95582140261248 10:1.07619112632374 11:0.884425570049315 26:0.228914278114955
+2 1:10.3185980016968 2:0.945075612418565 3:0.263335109294923 4:2.1291660167702 5:0.654618556196064 6:1.11312130381403 7:7.93132423205799 8:11.7921953767322 9:3.70098646209461 10:1.80277655972109 11:0.884425570049315 43:0.715678085420547
+3 1:8.18867352759409 2:1.10258821448833 3:0.526670218589846 4:1.29850483533967 5:0.292855669877187 6:0.567158748567678 7:8.07359013756576 8:11.8421623062946 9:3.57679228551426 10:0.917421650565223 13:0.844904909906825 16:0.125988157669742
+1 1:10.362065848107 2:2.81772543702572 3:0.658337773237307 6:2.83900528728102 7:7.32669413364998 8:11.6922615176074 9:4.14808549778389 10:2.64902568667043 11:0.884425570049315 36:0.258530551913103
+1 1:10.8736489635508 2:2.75647053622081 3:1.84334576506446 4:1.35101789853356 5:0.585711339754373 6:2.57951249631687 7:6.50866517698032 8:11.3924599402328 9:4.59518453347318 10:1.31551851342771 13:0.844904909906825 36:0.258530551913103
+2 1:9.04799941431997 2:1.73263862276737 3:0.263335109294923 4:0.773374203400835 5:0.241175257545918 6:1.2531446415125 7:7.75349185017328 8:12.0420300245443 9:3.94937481525532 10:3.2356124197684 11:0.884425570049315 37:0.418600747852556
+1 1:10.8234937561544 2:2.57270583380609 3:2.23834842900684 4:1.72815717056236 5:1.3609175247234 6:0.845278497299054 7:6.01073450770314 8:11.6922615176074 9:5.04228356916246 10:1.6932803695428 11:0.884425570049315 43:0.715678085420547
+1 1:9.82707696921153 2:2.33643693070145 3:3.02835375689161 4:0.515582802267224 5:0.602938143864796 6:2.0380461032902 7:5.47723736204901 8:12.0919969541068 9:5.53906027548388 10:1.54858897537864 13:0.844904909906825 38:0.217872335165298
+2 1:9.94410578646992 2:2.68646493530092 3:1.58001065576954 4:1.57539189581652 5:1.01638144251494 6:1.86462270338841 7:6.61536460611115 8:11.5923276584825 9:4.64486220410532 10:1.20758655453769 13:0.844904909906825 45:0.433012701892219
+2 1:9.92070002301824 2:0.577546207589123 3:0.395002663942384 4:1.40830487656325 5:0.757979380858601 6:1.00970957276148 7:7.89575775568105 8:11.6422945880449 9:3.65130879146247 10:0.570944420215356 13:0.844904909906825 46:0.674199862463242
+1 1:10.8000879927027 2:0.0700056009198937 3:1.711678210417 4:2.83570541246973 5:0.327309278098032 6:1.43620267474216 7:7.2555611808961 8:10.6429559967965 9:3.60163112083033 10:0.911164725412178 13:0.844904909906825 52:0.77919372247398
+2 1:10.0343851597835 2:0.490039206439256 3:0.658337773237307 4:3.72365357192995 5:1.29201030828171 6:3.54040659355045 7:7.93132423205799 8:11.4424268697952 9:3.50227577956604 10:4.82878198686248 11:0.884425570049315 43:0.715678085420547
+1 1:10.0377288402766 2:2.60770863426604 3:3.16002131153908 4:2.72113145641035 5:3.49704123441582 6:1.32765247258142 7:5.15713907465654 8:11.1426252924207 9:5.34034959295531 10:0.831388929710855 13:0.844904909906825 47:1.05184741228156
+3 1:8.93765795804778 2:0.490039206439256 3:1.31667554647461 4:1.72815717056236 5:0.516804123312682 6:0.627535784089039 7:8.07359013756576 8:10.8927906446086 9:3.08001557919283 10:0.819657195048895 13:0.844904909906825 25:0.157785504911465
+1 1:10.8836800050301 2:0.393781505174402 3:0.658337773237307 4:0.868852500116988 5:0.0516804123312682 6:4.06645757325252 7:7.8601912793041 8:11.4424268697952 9:3.55195345019819 10:0.31284625765225 11:0.884425570049315 37:0.418600747852556
+2 1:9.80367120575985 2:1.13759101494827 3:1.97501331971192 6:0.578077999672605 7:8.64265375959682 8:11.4923937993577 9:2.78194955539998 10:1.29831196925684 13:0.844904909906825 47:1.05184741228156
+2 1:10.0979150891524 2:2.75647053622081 3:0.131667554647461 4:0.286434890148457 5:0.0172268041104227 6:2.72660123178912 7:7.6823588974194 8:11.8421623062946 9:3.94937481525532 10:0.767255446892143 11:0.884425570049315 43:0.715678085420547
+1 1:9.24527656341269 2:3.0277422397854 3:1.84334576506446 4:0.572869780296915 5:-0.551257731533528 6:0.0770770666230141 7:6.8287634643728 8:10.8428237150461 9:4.02389132120354 10:0.6256925153045 11:0.884425570049315 44:0.445904036039959
+2 1:9.50273996138114 2:0.857568611268698 3:2.76501864759669 4:0.405782761043648 5:0.361762886318878 6:0.347489108692088 7:8.85605261785847 8:10.2931874898595 9:1.88775148402141 10:0.401225325439011 13:0.844904909906825 47:1.05184741228156
+1 1:10.6864028559374 2:2.87022963771564 3:0.92167288253223 4:2.43469656626189 5:1.72268041104227 6:0.956397935013899 7:7.21999470451915 8:11.5923276584825 9:4.17292433309997 10:1.89115562750785 13:0.844904909906825 46:0.674199862463242
+2 1:10.8903673660163 2:0.525042006899203 3:2.63335109294923 4:0.319852293999111 5:0.258402061656341 6:0.426493101980678 7:8.21585604307352 8:9.74355126467281 9:2.18581750781427 10:0.893176065597174 12:0.260796291926003 38:0.217872335165298
+5 1:9.45927211497088 2:0.630050408279043 3:1.97501331971192 6:0.556239497462751 7:8.39368842495823 8:10.4430882785468 9:2.48388353160712 10:0.15016620367308 11:0.884425570049315 44:0.445904036039959
+2 1:9.37568010264346 2:0.210016802759681 3:1.05334043717969 4:2.77841843444004 5:0.275628865766764 6:0.511920184154518 7:7.6823588974194 8:11.1925922219831 9:3.57679228551426 10:1.00814706528438 13:0.844904909906825 25:0.157785504911465
+1 1:10.6395913290341 2:0.971327712763525 3:0.790005327884769 6:1.09834819937795 7:8.18028956669658 8:11.6922615176074 9:3.40292043830176 10:1.28658023459488 11:0.884425570049315 43:0.715678085420547
+2 1:10.2517243918348 2:3.08024644047532 3:0.658337773237307 4:1.11709607157898 5:0.068907216441691 6:2.14788092322799 7:7.50452651553469 8:11.5423607289201 9:3.92453597993925 10:1.11295056159788 11:0.884425570049315 37:0.418600747852556
+1 1:10.3018795992313 2:0.0262521003449601 3:0.658337773237307 4:0.453521909401724 5:0.137814432883382 6:2.98802094941884 7:7.61122594466551 8:11.5423607289201 9:3.85001947399104 10:2.4081340682782 11:0.884425570049315 36:0.258530551913103
+5 1:9.42249162954682 2:0.770061610118831 3:1.97501331971192 4:0.907043818803449 5:0.68907216441691 6:1.19919069487639 7:8.57152080684294 8:10.6929229263589 9:2.45904469629105 10:1.4735058735421 13:0.844904909906825 47:1.05184741228156
+2 1:10.3486911261346 2:0.700056009198937 3:1.44834310112208 4:0.405782761043648 5:0.103360824662536 6:3.29761383368795 7:8.32255547220435 8:11.0426914332958 9:2.9309825672964 10:1.62758265543583 11:0.884425570049315 43:0.715678085420547
+1 1:9.76689072033579 2:0.306274504024535 3:2.23834842900684 4:1.63267887384621 5:1.86049484392566 6:0.497147079718441 7:7.6823588974194 8:10.0433528420474 9:2.88130489666426 10:0.736752936771049 13:0.844904909906825 47:1.05184741228156
+2 1:8.82397282128249 2:1.21634731598315 3:1.31667554647461 4:0.143217445074229 5:-0.068907216441691 6:2.14852323211652 7:8.35812194858129 8:11.8421623062946 9:3.2787262617214 10:1.68233075052497 13:0.844904909906825 34:0.169841555121689
+2 1:10.6395913290341 2:0.0787563010348804 3:1.58001065576954 4:1.72815717056236 5:0.809659793189869 6:0.395662275331472 7:7.32669413364998 8:10.7928567854837 9:3.6264699561464 10:2.09841627320247 12:0.260796291926003 37:0.418600747852556
+1 1:10.9271478514404 2:1.87264982460716 3:0.395002663942384 4:4.74527134679278 5:2.36007216312792 6:1.35976791700767 7:7.6823588974194 8:12.1419638836692 9:4.04873015651961 10:1.78478789990609 13:0.844904909906825 45:0.433012701892219
+1 1:11.5557597841426 2:0.743809509773871 3:2.50168353830177 4:2.40127916241124 5:2.80796906999891 6:1.56723368800129 7:8.64265375959682 8:10.2432205602971 9:2.08646216654998 10:1.82780426033327 11:0.884425570049315
+1 1:10.6997775779098 2:0.866319311383684 3:0.790005327884769 4:4.17717548133167 5:2.04998968914031 6:0.84849004174168 7:8.18028956669658 8:11.5923276584825 9:3.37808160298569 10:1.85752465481023 13:0.844904909906825 46:0.674199862463242
+2 1:9.73679759589792 2:2.23142852932161 3:2.10668087435938 4:2.42992265142608 5:1.98108247269862 6:1.46446426583727 7:6.47309870060338 8:12.3917985314813 9:5.04228356916246 10:1.43361797569144 13:0.844904909906825 47:1.05184741228156
+2 1:9.74014127639101 2:1.74138932288236 3:2.10668087435938 4:3.04575766524526 5:4.80627834680794 6:0.646162741856268 7:7.54009299191163 8:12.591666249731 9:4.22260200373211 10:1.36166333643142 13:0.844904909906825 46:0.674199862463242
+1 1:10.2015691844384 2:0.700056009198937 3:2.37001598365431 4:0.859304670445373 5:0.68907216441691 6:0.706539777377629 7:8.57152080684294 8:10.1932536307346 9:2.13613983718213 10:0.799322188301499 11:0.884425570049315 43:0.715678085420547
+2 1:10.6262166070617 2:1.04133331368342 3:1.97501331971192 4:2.43469656626189 5:2.2739381425758 6:0.289038999836303 7:8.7137867123507 8:11.2425591515455 9:2.60807770818748 10:1.46959529532144 11:0.884425570049315 37:0.418600747852556
+2 1:9.41580426856062 2:0.58629690770411 3:1.05334043717969 4:1.23167002763837 5:1.01638144251494 6:0.701401306269428 7:8.1091566139427 8:11.1925922219831 9:3.20420975577319 10:0.365248005809002 13:0.844904909906825 46:0.674199862463242
+1 1:11.1678928469434 2:0.542543407129176 3:2.10668087435938 4:3.15555770646884 5:2.15335051380284 6:1.46317964806022 7:8.25142251945046 8:10.2931874898595 9:2.53356120223927 10:1.63853227445366 11:0.884425570049315
+2 1:9.07140517777165 2:2.87022963771564 3:1.58001065576954 4:0.319852293999111 5:0.120587628772959 6:0.832432319528552 7:6.75763051161891 8:11.292526081108 9:4.34679618031246 10:1.84813926708067 13:0.844904909906825 25:0.157785504911465
+2 1:9.94744946696302 2:1.41761341862785 3:0.263335109294923 4:2.1291660167702 5:1.80881443159439 6:1.88068042560154 7:7.82462480292716 8:11.9420961654195 9:3.85001947399104 10:1.31942909164836 11:0.884425570049315 26:0.228914278114955
+7 1:11.2782343032155 2:0.323775904254508 3:1.31667554647461 4:1.27940917599644 5:-0.0344536082208455 6:2.77027823620883 7:7.82462480292716 8:10.942757574171 9:3.30356509703747 10:3.04555831824465 11:0.884425570049315
+2 1:10.0912277281662 2:1.35635851782294 3:1.31667554647461 4:3.48973174497537 5:1.70545360693185 6:3.35670625143226 7:8.21585604307352 8:12.0420300245443 9:3.50227577956604 10:4.67157674239222 11:0.884425570049315 26:0.228914278114955
+2 1:9.50273996138114 2:3.06274504024535 3:2.23834842900684 4:0.319852293999111 5:0.223948453435496 6:0.593493412997208 7:6.65093108248809 8:10.4430882785468 9:3.94937481525532 10:1.53372877814016 13:0.844904909906825 38:0.217872335165298
+2 1:8.56650942331403 2:0.507540606669229 3:2.23834842900684 4:1.79499197826367 5:2.04998968914031 6:0.668001244066122 7:8.18028956669658 8:10.1432867011722 9:2.48388353160712 10:0.869712596273255 13:0.844904909906825 24:0.280975743474508
+2 1:9.93073106449753 2:2.61645933438103 3:3.16002131153908 4:1.72338325572655 5:2.73906185355722 6:3.02720179161888 7:5.22827202741042 8:11.1426252924207 9:5.31551075763924 10:0.209606992627008 11:0.884425570049315 43:0.715678085420547
+2 1:10.6964338974167 2:1.37385991805291 3:1.711678210417 4:0.716087225371144 5:0.447896906870991 6:0.571654910787354 7:8.32255547220435 8:12.0420300245443 9:3.37808160298569 10:2.03741125296028 11:0.884425570049315 36:0.258530551913103
+2 1:10.9104294489749 2:0.577546207589123 3:2.23834842900684 4:1.40830487656325 5:1.25755670006086 6:3.54490275577012 7:8.32255547220435 8:10.1432867011722 9:2.35968935502677 10:0.957309548415885 11:0.884425570049315 43:0.715678085420547
+3 1:7.4497201386197 2:3.0277422397854 3:4.21336174871877 4:1.01206994519122 5:2.06721649325073 6:0.378319935341294 7:5.08600612190266 8:8.59431188473704 9:3.87485830930711 10:0.21273545520353 14:0.296673189340406 24:0.280975743474508
+2 1:10.6195292460755 2:0.463787106094296 3:0.658337773237307 4:0.859304670445373 5:0.275628865766764 6:3.37404859142244 7:7.93132423205799 8:11.4424268697952 9:3.52711461488211 10:2.311151728406 11:0.884425570049315 37:0.418600747852556
+1 1:11.0107398637678 2:0.148761901954774 3:1.711678210417 4:1.54674840680167 5:1.03360824662536 6:1.96546519888686 7:7.39782708640386 8:10.592989067234 9:3.4525981089339 10:1.77149193395587 11:0.884425570049315 43:0.715678085420547
+2 1:10.8502432000992 2:1.89890192495212 3:1.31667554647461 4:0.319852293999111 5:0.068907216441691 6:1.51327974136518 7:7.46896003915775 8:12.4917323906062 9:4.34679618031246 10:2.29785576245578 11:0.884425570049315 43:0.715678085420547
+1 1:10.6228729265686 2:0.980078412878512 3:1.31667554647461 4:1.72815717056236 5:0.49957731920226 6:3.62968752905544 7:8.46482137771211 8:11.4424268697952 9:3.00549907324462 10:1.3663560302962 11:0.884425570049315 34:0.169841555121689
+2 1:10.0343851597835 2:1.33885711759297 3:2.37001598365431 4:0.907043818803449 5:0.0516804123312682 6:2.454904571943 7:8.50038785408906 8:11.8921292358571 9:3.03033790856069 10:4.35481990651932 11:0.884425570049315 44:0.445904036039959
+1 1:10.8234937561544 2:0.463787106094296 3:1.84334576506446 4:0.143217445074229 5:0.068907216441691 6:1.85370345228349 7:8.07359013756576 8:10.4430882785468 9:2.78194955539998 10:1.80277655972109 11:0.884425570049315 43:0.715678085420547
+1 1:10.9037420879887 2:2.8964817380606 3:1.58001065576954 4:0.907043818803449 5:0.68907216441691 6:2.94305932722209 7:6.8287634643728 8:11.2425591515455 9:4.27227967436425 10:2.04132183118093 13:0.844904909906825 46:0.674199862463242
+2 1:9.47933419792946 2:0.551294107244163 3:1.44834310112208 4:1.49423534360779 5:2.68738144122595 6:0.212604242101814 7:8.18028956669658 8:10.8927906446086 9:2.98066023792855 10:1.30769735698641 11:0.884425570049315 43:0.715678085420547
+1 1:9.61642509814643 2:0.437535005749336 3:2.50168353830177 4:0.730408969878567 5:0.981927834294096 6:1.52997977246683 7:8.00245718481187 8:9.79351819423523 9:2.40936702565891 10:1.68233075052497 13:0.844904909906825 47:1.05184741228156
+1 1:9.37568010264346 2:2.24892992955158 3:2.50168353830177 4:1.0025221155196 5:0.241175257545918 6:1.63724535685052 7:6.11743393683396 8:12.3917985314813 9:5.2658330870071 10:0.183015060726566 13:0.844904909906825 47:1.05184741228156
+2 1:9.27536968785056 2:1.7763921233423 3:2.89668620224415 4:0.143217445074229 5:0.0516804123312682 6:1.99950756997869 7:7.2555611808961 8:12.6416331792934 9:4.34679618031246 10:1.12390018061571 13:0.844904909906825 18:0.154303349962092
+2 1:10.154757657535 2:0.743809509773871 3:1.18500799182715 4:1.90956593432305 5:0.172268041104227 6:4.2475886798166 7:8.28698899582741 8:11.2425591515455 9:3.08001557919283 10:2.19696284436293 11:0.884425570049315 43:0.715678085420547
+2 1:9.71673551293934 2:0.787563010348804 3:1.97501331971192 4:0.20050442310392 5:0.103360824662536 6:2.93214007611716 7:8.60708728321988 8:10.6929229263589 9:2.43420586097498 10:4.87727315679858 11:0.884425570049315 43:0.715678085420547
+2 1:9.2319018414403 2:0.647551808509017 3:1.05334043717969 4:0.143217445074229 6:0.799674566213771 7:8.18028956669658 8:11.292526081108 9:3.20420975577319 10:0.767255446892143 13:0.844904909906825 25:0.157785504911465
+2 1:10.2316623088762 2:2.03016242667692 3:1.05334043717969 4:3.4419925966173 5:0.447896906870991 6:3.98231510885573 7:7.36226061002692 8:12.3917985314813 9:4.42131268626068 10:2.62869067992303 11:0.884425570049315 43:0.715678085420547
+3 1:8.19536088858029 2:2.52020163311617 3:2.37001598365431 4:0.606287184147568 5:0.68907216441691 6:0.373823773121618 7:5.90403507857231 8:11.7921953767322 9:5.19131658105889 10:1.32725024808967 14:0.296673189340406 24:0.280975743474508
+2 1:9.88057585710108 2:2.87898033783063 3:0.131667554647461 4:0.916591648475064 5:0.155041236993805 6:0.915932475036817 7:7.64679242104245 8:11.8421623062946 9:3.94937481525532 10:0.222902958577228 13:0.844904909906825 46:0.674199862463242
+6 1:7.95461589307732 2:2.3714397311614 3:3.95002663942384 4:0.286434890148457 5:0.447896906870991 6:0.894093972826963 7:4.58807545262547 8:11.6422945880449 9:5.83712629927674 10:0.534967100585348 14:0.296673189340406 24:0.280975743474508
+6 1:8.45616796704184 2:1.22509801609814 3:0.526670218589846 6:1.55117596578816 7:8.03802366118881 8:11.8921292358571 9:3.65130879146247 10:0.6256925153045 13:0.844904909906825 24:0.280975743474508
+2 1:10.4222520969828 2:2.75647053622081 3:0.658337773237307 4:1.32237440951871 5:0.620164947975219 6:0.736085986249784 7:7.32669413364998 8:11.7921953767322 9:4.17292433309997 10:2.13908628669726 13:0.844904909906825 45:0.433012701892219
+2 1:11.2347664568053 2:0.787563010348804 4:2.53972269264966 5:2.39452577134876 6:1.24158308151905 7:7.78905832655022 8:11.8421623062946 9:3.85001947399104 10:1.82780426033327 12:0.260796291926003 47:1.05184741228156
+2 1:9.6465182225843 2:1.07633611414337 3:2.37001598365431 4:0.319852293999111 5:0.206721649325073 6:0.938413286135196 7:8.82048614148153 8:11.1426252924207 9:2.38452819034284 10:2.06634953179311 13:0.844904909906825 47:1.05184741228156
+2 1:10.8602742415784 2:1.3826106181679 3:1.31667554647461 4:2.3153486953667 5:0.981927834294096 6:3.79219167785229 7:8.21585604307352 8:12.0919969541068 9:3.50227577956604 10:2.38154213637775 11:0.884425570049315 43:0.715678085420547
+1 1:10.291848557752 2:0.0525042006899203 3:2.50168353830177 4:2.22941822832216 5:0.585711339754373 6:0.817659215092474 7:6.89989641712668 8:10.0433528420474 9:3.50227577956604 10:1.54702474409038 13:0.844904909906825 38:0.217872335165298
+3 1:7.7606824244777 2:3.08024644047532 3:3.423356420834 4:0.20050442310392 5:0.206721649325073 6:0.775909137338341 7:5.86846860219537 8:9.24388196904856 9:3.77550296804283 10:0.216646033424183 14:0.296673189340406 24:0.280975743474508
+2 1:9.28874440982294 2:1.07633611414337 3:2.10668087435938 4:1.01206994519122 5:1.3609175247234 6:2.20890026763788 7:8.74935318872765 8:11.292526081108 9:2.55840003755534 10:4.60353268135286 11:0.884425570049315 44:0.445904036039959
+1 1:10.2985359187382 2:0.708806709313924 3:1.05334043717969 4:1.90956593432305 5:-0.0516804123312682 6:3.24558681371742 7:8.21585604307352 8:11.292526081108 9:3.17937092045712 10:1.05429188828808 11:0.884425570049315 43:0.715678085420547
+5 1:9.37233642215037 2:0.568795507474136 3:2.10668087435938 4:0.286434890148457 5:0.241175257545918 6:1.34884866590275 7:8.28698899582741 8:10.2432205602971 9:2.43420586097498 10:1.63383958058888 13:0.844904909906825 37:0.418600747852556
+1 1:10.9773030588368 2:1.16384311529323 3:2.76501864759669 4:1.35101789853356 5:0.0861340205521137 6:0.777836064003917 7:8.82048614148153 8:11.2425591515455 9:2.38452819034284 10:2.26578902104642 11:0.884425570049315 36:0.258530551913103
+2 1:9.77023440082889 2:0.0437535005749336 3:1.18500799182715 4:1.47513968426456 5:0.155041236993805 6:2.97967093386802 7:7.4333935627808 8:11.1426252924207 9:3.77550296804283 10:3.21449529737687 11:0.884425570049315 37:0.418600747852556
+2 1:9.29543177080914 2:0.787563010348804 3:1.31667554647461 4:0.515582802267224 5:0.361762886318878 6:0.506781713046317 7:8.39368842495823 8:11.1925922219831 9:2.9309825672964 10:1.76367077751456 13:0.844904909906825 25:0.157785504911465
+2 1:10.1346955745764 2:1.42636411874283 3:1.84334576506446 4:1.40830487656325 5:1.1369690712879 6:0.892809355049913 7:8.25142251945046 8:12.1419638836692 9:3.4525981089339 10:0.483347468072726 13:0.844904909906825 27:0.184010991918219
+2 1:9.81704592773224 2:1.94265542552705 3:3.02835375689161 6:0.944836375020447 7:6.61536460611115 8:12.6916001088559 9:4.89325055726603 10:2.01316566799223 13:0.844904909906825 27:0.184010991918219
+2 1:9.73345391540482 2:0.420033605519362 3:1.84334576506446 4:3.40380127793084 5:2.2739381425758 6:0.698189761826802 7:7.96689070843493 8:10.3931213489843 9:2.85646606134819 10:1.94746795388526 13:0.844904909906825 25:0.157785504911465
+6 1:8.29232762288009 2:0.105008401379841 3:1.97501331971192 4:2.40127916241124 5:2.34284535901749 6:0.559451041905377 7:7.21999470451915 8:10.3431544194219 9:3.4525981089339 10:1.1544026907368 14:0.296673189340406 20:0.129459555600631
+1 1:9.4358663515192 2:1.24259941632811 3:2.63335109294923 4:0.286434890148457 5:0.0172268041104227 6:2.70668965624484 7:8.7137867123507 8:11.5423607289201 9:2.63291654350355 10:0.481783236784465 11:0.884425570049315 36:0.258530551913103
+2 1:10.6395913290341 2:1.05883471391339 3:1.44834310112208 4:2.26283563217281 5:1.91217525625692 6:0.123323306596822 7:8.50038785408906 8:11.5423607289201 9:2.98066023792855 10:0.736752936771049 13:0.844904909906825 46:0.674199862463242
+2 1:10.4155647359966 2:1.27760221678806 3:1.58001065576954 4:0.811565522087296 5:0.396216494539723 6:0.054596255524635 7:8.42925490133517 8:11.8921292358571 9:3.22904859108926 10:3.14957969891403 12:0.260796291926003 36:0.258530551913103
+2 1:9.58967565420166 2:0.183764702414721 3:3.16002131153908 4:2.43469656626189 5:2.99746391521356 6:0.721955190702232 7:7.0065958462575 8:9.09398118036129 9:2.80678839071605 10:1.76523500880282 13:0.844904909906825 47:1.05184741228156
+2 1:8.83734754325488 2:0.227518202989654 3:1.97501331971192 4:0.639704587998222 5:0.671845360306487 6:0.915932475036817 7:7.54009299191163 8:10.2931874898595 9:3.17937092045712 10:1.56657763519364 13:0.844904909906825 25:0.157785504911465
+1 1:10.5192188312826 2:0.69130530908395 3:0.526670218589846 4:0.959556881997333 5:-0.0344536082208455 6:3.98745357996393 7:7.96689070843493 8:11.6422945880449 9:3.57679228551426 10:0.83842797050803 11:0.884425570049315 43:0.715678085420547
+3 1:8.01480214195306 2:0.201266102644694 3:2.37001598365431 4:0.730408969878567 5:0.792432989079446 6:0.35391219757734 7:7.36226061002692 8:9.99338591248493 9:3.08001557919283 10:0.860327208543688 14:0.296673189340406 24:0.280975743474508
+2 1:9.61642509814643 2:3.08024644047532 3:0.658337773237307 4:0.143217445074229 5:-0.0172268041104227 6:2.43563530528724 7:7.50452651553469 8:11.5423607289201 9:3.92453597993925 10:2.93762635935463 11:0.884425570049315 37:0.418600747852556
+1 1:11.3752010375154 2:2.41519323173633 3:2.76501864759669 4:2.73545320091777 5:3.35922680153243 6:0.545320246357824 7:5.61950326755678 8:11.9420961654195 9:5.41486609890353 10:0.902561453326741 12:0.260796291926003 47:1.05184741228156
+2 1:9.34224329771249 2:0.297523803909548 3:1.84334576506446 4:1.59926146999555 5:1.03360824662536 6:0.0770770666230141 7:7.71792537379634 8:10.3431544194219 9:3.03033790856069 10:0.601446930336451 13:0.844904909906825 25:0.157785504911465
+3 1:8.63003935268287 2:1.6451316216175 3:0.92167288253223 4:0.319852293999111 5:0.0516804123312682 6:0.501000933049591 7:7.8601912793041 8:12.2918646723565 9:3.94937481525532 10:1.03630322847308 13:0.844904909906825 25:0.157785504911465
+2 1:9.51945836384662 2:2.80897473691073 3:2.63335109294923 4:0.716087225371144 5:0.981927834294096 6:2.00657296775247 7:5.79733564944149 8:10.7428898559213 9:4.71937871005353 10:0.351952039858781 13:0.844904909906825 24:0.280975743474508
+5 1:9.07809253875785 2:0.516291306784216 3:2.89668620224415 4:0.453521909401724 5:0.706298968527332 6:0.0796463021771145 7:8.21585604307352 8:9.39378275773583 9:1.96226798996963 10:1.24669233674422 11:0.884425570049315 43:0.715678085420547
+2 1:8.83066018226868 2:0.393781505174402 3:0.790005327884769 4:0.319852293999111 5:0.120587628772959 6:0.0796463021771145 7:7.89575775568105 8:11.3424930106704 9:3.50227577956604 10:0.460666114392938 13:0.844904909906825 25:0.157785504911465
+3 1:7.95461589307732 2:1.12884031483329 3:1.31667554647461 4:0.835435096266334 5:0.344536082208455 6:0.810593817318698 7:8.39368842495823 8:11.6922615176074 9:3.17937092045712 10:0.514632093837951 14:0.296673189340406 20:0.129459555600631
+1 1:10.3553784871208 2:2.73896913599084 3:1.31667554647461 4:0.959556881997333 5:0.361762886318878 6:1.43234882141101 7:6.86432994074974 8:11.6422945880449 9:4.44615152157675 10:1.7417715394789 13:0.844904909906825 34:0.169841555121689
+1 1:11.1411434029986 2:3.0277422397854 3:3.29168886618654 4:1.47513968426456 5:0.861340205521137 6:1.3938102880995 7:5.79733564944149 8:9.54368354642311 9:3.99905248588747 10:2.35025751061253 11:0.884425570049315 53:1
+2 1:10.1915381429591 2:1.82014562391724 3:2.50168353830177 4:5.509097720522 5:2.91132989466144 6:2.05538844328037 7:7.18442822814221 8:12.6916001088559 9:4.47099035689282 10:1.05585611957634 13:0.844904909906825 47:1.05184741228156
+7 1:11.4688240913221 2:0.0350028004599468 3:2.50168353830177 4:2.9407315388575 5:3.99661855361808 6:2.7233896873465 7:6.8287634643728 8:10.0433528420474 9:3.55195345019819 10:2.82500170659982 13:0.844904909906825 53:1
+2 1:9.9641678694285 2:0.481288506324269 3:1.44834310112208 4:0.453521909401724 5:-0.0516804123312682 6:2.37846981420851 7:8.07359013756576 8:10.7928567854837 9:3.00549907324462 10:1.11764325546266 11:0.884425570049315 44:0.445904036039959
+3 1:7.67040305116409 2:1.19009521563819 3:1.97501331971192 4:0.143217445074229 5:-0.0172268041104227 6:0.0693693599607127 7:8.60708728321988 8:11.6422945880449 9:2.90614373198033 10:0.298768176057899 14:0.296673189340406 25:0.157785504911465
+1 1:9.06471781678546 2:0.463787106094296 3:0.658337773237307 4:0.515582802267224 5:0.155041236993805 6:1.34178326812897 7:7.93132423205799 8:11.4424268697952 9:3.52711461488211 10:5.27302367272867 11:0.884425570049315 26:0.228914278114955
+2 1:9.20849607798862 2:0.131260501724801 3:1.84334576506446 4:2.57791401133612 5:2.23948453435496 6:0.991724923882781 7:7.36226061002692 8:10.5430221376716 9:3.4525981089339 10:0.540441910094262 11:0.884425570049315 37:0.418600747852556
+1 1:9.97085523041469 2:0.341277304484482 3:2.63335109294923 4:1.11709607157898 5:1.03360824662536 6:3.20126750040918 7:7.6823588974194 8:9.54368354642311 9:2.55840003755534 10:2.43394388453451 11:0.884425570049315 43:0.715678085420547
+3 1:6.90470021824492 2:0.402532205289389 3:3.423356420834 4:2.00981814587501 5:1.79158762748397 6:0.32757753314781 7:7.75349185017328 8:8.69424574386189 9:1.88775148402141 10:0.183015060726566 14:0.296673189340406
+2 1:9.23858920242649 2:0.507540606669229 3:0.92167288253223 4:0.20050442310392 5:0.103360824662536 6:1.26149465706333 7:8.03802366118881 8:11.2425591515455 9:3.30356509703747 10:2.23528651092533 11:0.884425570049315 26:0.228914278114955
+2 1:9.62979982011882 2:1.47886831943275 3:0.526670218589846 4:0.319852293999111 5:0.0172268041104227 6:1.13560211491241 7:7.89575775568105 8:12.0420300245443 9:3.82518063867497 10:1.8590888860985 13:0.844904909906825 30:0.0826662747682189
+2 1:10.0979150891524 2:2.13517082805676 3:1.58001065576954 4:2.22941822832216 5:0.534030927423105 6:0.784901461777693 7:6.93546289350362 8:12.4917323906062 9:4.76905638068567 10:1.30065831618923 13:0.844904909906825 46:0.674199862463242
+2 1:10.221631267397 2:1.47886831943275 3:1.58001065576954 4:2.15303559094924 5:0.844113401410714 6:3.65024141348824 7:8.14472309031964 8:12.241897742794 9:3.60163112083033 10:1.31160793520706 11:0.884425570049315 43:0.715678085420547
+3 1:8.36923227422132 2:0.708806709313924 3:2.10668087435938 4:1.27940917599644 5:1.87772164803608 6:0.566516439679153 7:8.535954330466 8:10.4430882785468 9:2.35968935502677 10:1.03473899718482 13:0.844904909906825 18:0.154303349962092
+2 1:9.83376433019773 2:0.428784305634349 3:1.18500799182715 4:0.429652335222686 5:-0.103360824662536 6:1.12147131936485 7:7.96689070843493 8:11.0426914332958 9:3.25388742640533 10:1.22010040484378 11:0.884425570049315 43:0.715678085420547
+2 1:8.80056705783081 2:0.271271703564588 3:2.23834842900684 4:1.03116560453445 5:0.482350515091837 6:1.09834819937795 7:7.61122594466551 8:10.0933197716098 9:2.95582140261248 10:1.62836477107996 13:0.844904909906825 25:0.157785504911465
+2 1:10.188194462466 2:1.06758541402838 3:1.97501331971192 4:1.71860934089075 5:0.223948453435496 6:4.25722331314448 7:8.67822023597376 8:11.3424930106704 9:2.65775537881962 10:2.66153953697652 11:0.884425570049315 43:0.715678085420547
+2 1:9.92404370351134 2:1.83764702414721 3:1.18500799182715 4:3.24626208834919 5:1.41259793705466 6:3.92450730888847 7:7.57565946828857 8:12.4417654610437 9:4.24744083904818 10:4.55113093319611 11:0.884425570049315 43:0.715678085420547
+1 1:10.3921589725449 2:2.83522683725569 3:0.526670218589846 4:0.639704587998222 5:0.482350515091837 6:1.30517166148304 7:7.4333935627808 8:11.7422284471698 9:4.09840782715175 10:1.55953859439647 11:0.884425570049315 43:0.715678085420547
+2 1:8.79722337733771 2:0.910072811958618 3:0.526670218589846 6:0.517700964151244 7:8.03802366118881 8:11.6922615176074 9:3.55195345019819 10:1.37730564931403 11:0.884425570049315 44:0.445904036039959
+2 1:9.11821670467501 2:1.15509241517825 3:0.790005327884769 4:0.515582802267224 5:0.396216494539723 6:1.47795275249629 7:8.18028956669658 8:11.8421623062946 9:3.47743694424997 10:4.21403909057581 11:0.884425570049315 43:0.715678085420547
+2 1:9.50608364187424 2:0.131260501724801 3:2.10668087435938 4:1.61835712933878 5:0.895793813741983 6:1.17670988377801 7:7.2555611808961 8:10.2432205602971 9:3.35324276766962 10:1.09183343920635 13:0.844904909906825 25:0.157785504911465
+1 1:10.325285362683 2:0.315025204139522 3:0.790005327884769 4:0.429652335222686 5:0.0516804123312682 6:3.10299424046484 7:7.82462480292716 8:11.292526081108 9:3.55195345019819 10:1.13015710576875 11:0.884425570049315 36:0.258530551913103
+2 1:10.3587221676139 2:2.71271703564588 3:2.23834842900684 4:0.859304670445373 5:0.775206184969023 6:2.30075043869697 7:6.04630098408008 8:11.292526081108 9:4.84357288663389 10:0.547480950891438 11:0.884425570049315 43:0.715678085420547
+1 1:10.1280082135902 2:0.0262521003449601 3:1.31667554647461 4:0.591965439640145 5:-0.18949484521465 6:0.54596255524635 7:7.32669413364998 8:10.9927245037334 9:3.77550296804283 10:1.10356517386831 13:0.844904909906825 37:0.418600747852556
+2 1:11.0843008346159 2:0.341277304484482 3:3.55502397548146 4:0.716087225371144 5:0.3789896904293 6:3.23723679816659 7:7.46896003915775 8:8.54434495517462 9:2.03678449591784 10:0.132959659502206 11:0.884425570049315 43:0.715678085420547
+2 1:10.0410725207697 2:0.280022403679575 3:1.18500799182715 4:1.03116560453445 5:0.327309278098032 6:2.41700834752002 7:7.75349185017328 8:11.0426914332958 9:3.42775927361783 10:3.85974070378464 11:0.884425570049315 43:0.715678085420547
+1 1:10.4523452214206 2:0.988829112993498 3:1.58001065576954 4:0.20050442310392 5:0.155041236993805 6:0.416216159764276 7:8.57152080684294 8:11.3424930106704 9:2.83162722603212 10:1.41719354716469 13:0.844904909906825 46:0.674199862463242
+2 1:9.87723217660798 2:1.05008401379841 3:2.23834842900684 4:1.01206994519122 5:0.999154638404519 6:2.52491624079224 7:8.78491966510459 8:11.1925922219831 9:2.48388353160712 10:1.92478660020547 11:0.884425570049315 43:0.715678085420547
+2 1:9.79029648378747 2:0.945075612418565 3:2.37001598365431 4:1.15528739026545 5:1.82604123570481 6:1.48373353249302 7:8.82048614148153 8:10.7428898559213 9:2.18581750781427 10:1.37965199624642 13:0.844904909906825 45:0.433012701892219
+1 1:11.0475203491919 2:2.64271143472599 3:3.68669153012892 4:1.91911376399467 5:1.61931958637974 6:0.430989264200354 7:4.65920840537936 8:10.6929229263589 9:5.41486609890353 10:0.83842797050803 12:0.260796291926003 47:1.05184741228156
+1 1:10.5292498727619 2:1.10258821448833 3:0.790005327884769 4:2.5015313739632 5:0.620164947975219 6:2.35855823866423 7:8.21585604307352 8:11.7921953767322 9:3.42775927361783 10:2.73896898574545 11:0.884425570049315 43:0.715678085420547
+1 1:9.75017231787031 2:2.07391592725185 3:1.44834310112208 4:1.46081793975713 5:0.310082473987609 6:3.5493989179898 7:7.11329527538833 8:12.4917323906062 9:4.62002336878925 10:4.51671784485436 11:0.884425570049315 37:0.418600747852556
+2 1:8.66681983810694 2:3.13275064116524 3:2.76501864759669 4:1.86182678596497 5:2.10167010147157 6:0.413646924210175 7:6.54423165335726 8:9.84348512379766 9:3.65130879146247 10:0.370722815317916 13:0.844904909906825 47:1.05184741228156
+2 1:9.66658030554288 2:3.0977478407053 3:3.16002131153908 4:1.01206994519122 5:1.08528865895663 6:0.599274192993934 7:6.11743393683396 8:9.49371661686068 9:3.72582529741068 10:1.51652223396928 13:0.844904909906825 38:0.217872335165298
+2 1:10.5459682752273 2:3.07149574036034 3:0.790005327884769 4:0.606287184147568 5:0.396216494539723 6:1.97188828777211 7:7.46896003915775 8:11.4923937993577 9:3.94937481525532 10:0.615525011930802 11:0.884425570049315 43:0.715678085420547
+2 1:9.63648718110501 2:2.20517642897665 3:2.89668620224415 4:0.453521909401724 5:0.49957731920226 6:2.10805777213943 7:5.90403507857231 8:12.4417654610437 9:5.39002726358746 10:1.43283586004731 13:0.844904909906825 18:0.154303349962092
+1 1:10.2383496698624 2:0.708806709313924 3:1.31667554647461 4:1.23167002763837 5:0.482350515091837 6:3.16658282042883 7:8.32255547220435 8:11.0926583628583 9:2.9309825672964 10:1.4633383701684 11:0.884425570049315 43:0.715678085420547
+1 1:10.428939457969 2:1.28635291690305 3:2.23834842900684 4:0.286434890148457 5:0.0516804123312682 6:4.06131910214432 7:8.535954330466 8:11.7921953767322 9:2.95582140261248 10:1.76132443058217 11:0.884425570049315 43:0.715678085420547
+2 1:9.58967565420166 2:0.997579813108485 3:4.47669685801369 4:0.20050442310392 5:0.413443298650146 6:0.60377035521361 7:9.03388499974318 8:9.24388196904856 9:0.720326224166066 10:1.26859157477987 13:0.844904909906825 47:1.05184741228156
+2 1:9.4358663515192 2:0.630050408279043 3:1.711678210417 4:1.57539189581652 5:1.22310309184001 6:0.790039932885894 7:8.35812194858129 8:10.6929229263589 9:2.68259421413569 10:1.93964679744395 13:0.844904909906825 24:0.280975743474508
+1 1:9.9641678694285 2:3.01024083955543 3:4.47669685801369 4:0.916591648475064 5:1.17142267950875 6:1.66614925683415 7:4.80147431088712 8:8.39444416648734 9:3.94937481525532 10:1.56970609777016 13:0.844904909906825 47:1.05184741228156
+2 1:9.8571700936494 2:1.14634171506326 3:4.60836441266115 4:3.09349681360334 5:2.06721649325073 6:2.79404366508426 7:8.92718557061235 8:9.84348512379766 9:1.04323108327499 10:1.26389888091509 13:0.844904909906825 27:0.184010991918219
+2 1:9.36564906116417 2:2.36268903104641 3:5.135034631251 4:1.15528739026545 5:2.8768762864406 6:0.790682241774419 7:3.34324877943251 8:10.9927245037334 9:6.16003115838566 10:1.1544026907368 13:0.844904909906825 27:0.184010991918219
+2 1:10.188194462466 2:1.87264982460716 3:0.658337773237307 4:3.0075663465588 5:2.77351546177806 6:3.78063011785884 7:7.64679242104245 8:12.241897742794 9:4.12324666246782 10:4.09437539702382 11:0.884425570049315 26:0.228914278114955
+3 1:8.51635421591758 2:1.56637532058262 3:1.84334576506446 4:0.319852293999111 5:0.275628865766764 6:0.728378279587483 7:8.00245718481187 8:12.3917985314813 9:3.77550296804283 10:1.46568471710079 13:0.844904909906825 18:0.154303349962092
+3 1:9.09815462171643 2:1.26885151667307 3:1.31667554647461 4:2.36308784372477 5:-0.292855669877187 6:0.393093039777372 7:8.32255547220435 8:11.9420961654195 9:3.35324276766962 10:0.20022160489744 13:0.844904909906825 18:0.154303349962092
+4 1:7.00166695254473 2:0.385030805059415 3:2.63335109294923 6:0.38538533311507 7:7.82462480292716 8:9.54368354642311 9:2.40936702565891 10:0.51228574690556 14:0.296673189340406
+1 1:10.5459682752273 2:0.831316510923738 3:2.63335109294923 4:0.811565522087296 5:0.654618556196064 6:0.908867077263041 7:8.82048614148153 8:10.2931874898595 9:1.93742915465356 10:1.95919968854722 11:0.884425570049315 43:0.715678085420547
+1 1:11.0843008346159 2:1.13759101494827 3:3.16002131153908 4:2.58268792617192 5:2.30839175079665 6:1.02705191275166 7:8.92718557061235 8:10.8927906446086 9:1.9871068252857 10:0.897868759461958 12:0.260796291926003 47:1.05184741228156
+1 1:9.81704592773224 2:0.0175014002299734 3:1.44834310112208 4:3.58043612685572 5:1.05083505073579 6:0.477235504174162 7:7.2555611808961 8:10.8927906446086 9:3.75066413272675 10:0.905689915903264 13:0.844904909906825 45:0.433012701892219
+2 1:9.36564906116417 2:0.630050408279043 3:0.658337773237307 4:1.0025221155196 5:0.482350515091837 6:1.44455269029299 7:8.00245718481187 8:11.5423607289201 9:3.50227577956604 10:2.16098552473292 11:0.884425570049315 26:0.228914278114955
+2 1:9.30211913179533 2:1.68013442207745 3:2.50168353830177 4:0.319852293999111 5:0.327309278098032 6:2.41893527418559 7:7.64679242104245 8:12.5416993201686 9:4.02389132120354 10:1.01753245301394 11:0.884425570049315 44:0.445904036039959
+2 1:9.81370224723914 3:1.18500799182715 4:1.27940917599644 5:1.72268041104227 6:0.405296908659349 7:7.36226061002692 8:11.1426252924207 9:3.82518063867497 10:1.38512680575534 13:0.844904909906825 38:0.217872335165298
+2 1:9.70670447146005 2:0.140011201839787 3:1.05334043717969 4:0.143217445074229 5:-0.0344536082208455 6:2.93856316500241 7:7.57565946828857 8:11.1426252924207 9:3.6264699561464 10:1.32255755422489 11:0.884425570049315 44:0.445904036039959
+6 1:8.84069122374797 2:3.0277422397854 3:2.50168353830177 4:0.405782761043648 5:0.3789896904293 6:1.31801783925354 7:6.43753222422644 8:10.3431544194219 9:4.04873015651961 10:1.82780426033327 13:0.844904909906825 24:0.280975743474508
+1 1:11.7965047796456 2:0.210016802759681 3:2.76501864759669 4:3.46586217079634 5:1.99830927680904 6:1.71881858569321 7:7.21999470451915 8:9.49371661686068 9:2.88130489666426 10:1.31239005085119 11:0.884425570049315
+3 1:6.74420355457627 2:0.533792707014189 3:4.34502930336623 4:1.14573956059383 5:0.964701030183674 6:0.181773415452608 7:8.00245718481187 8:7.59497329348855 9:0.844520400746422 10:0.216646033424183 14:0.296673189340406
+1 1:10.4724073043792 2:2.40644253162135 3:3.423356420834 4:1.27940917599644 5:0.447896906870991 6:0.797747639548195 7:5.05043964552571 8:11.7422284471698 9:5.66325445206424 10:2.04132183118093 13:0.844904909906825 47:1.05184741228156
+1 1:9.47599051743637 2:2.21392712909164 3:0.658337773237307 4:0.405782761043648 5:0.18949484521465 6:0.38410071533802 7:7.4333935627808 8:12.1419638836692 9:4.29711850968032 10:0.399661094150749 13:0.844904909906825 46:0.674199862463242
+2 1:10.3219416821899 2:0.367529404829442 3:2.23834842900684 4:0.319852293999111 5:0.18949484521465 6:0.597989575216884 7:7.82462480292716 8:10.0433528420474 9:2.75711072008391 10:1.12781075883636 13:0.844904909906825 47:1.05184741228156
+1 1:9.73679759589792 2:2.95773663886551 3:3.68669153012892 4:0.286434890148457 5:0.344536082208455 6:1.25250233262398 7:5.29940498016431 8:9.44374968729826 9:4.27227967436425 10:1.73082192046107 13:0.844904909906825 37:0.418600747852556
+2 1:10.428939457969 2:1.47011761931777 3:3.02835375689161 4:2.43469656626189 5:1.41259793705466 6:1.56145290800456 7:8.21585604307352 8:12.0420300245443 9:3.17937092045712 10:0.97608032387502 13:0.844904909906825 27:0.184010991918219
+2 1:9.77357808132198 2:0.183764702414721 3:1.44834310112208 4:2.58268792617192 5:-0.361762886318878 6:0.389881495334746 7:7.57565946828857 8:10.8428237150461 9:3.47743694424997 10:1.36009910514316 11:0.884425570049315 43:0.715678085420547
+2 1:9.77692176181508 2:1.03258261356843 3:1.97501331971192 4:1.35101789853356 5:1.24032989595044 6:1.72010320347026 7:8.67822023597376 8:11.292526081108 9:2.63291654350355 10:1.54233205022559 11:0.884425570049315 43:0.715678085420547
+1 1:10.0410725207697 2:0.0787563010348804 3:0.790005327884769 4:0.453521909401724 5:0.223948453435496 6:2.4523353363889 7:7.61122594466551 8:11.3924599402328 9:3.77550296804283 10:1.83562541677458 11:0.884425570049315 43:0.715678085420547
+2 1:9.44589739299849 2:2.9664873389805 3:2.23834842900684 4:0.859304670445373 5:0.482350515091837 6:1.10605590604025 7:6.47309870060338 8:10.6929229263589 9:4.22260200373211 10:1.86456369560741 13:0.844904909906825 47:1.05184741228156
+3 1:6.7141104301384 2:2.05641452702188 3:4.08169419407131 6:0.0693693599607127 7:5.44167088567207 8:12.4417654610437 9:5.46454376953567 10:0.20022160489744 14:0.296673189340406
+1 1:11.398606800967 2:1.68888512219244 3:1.18500799182715 4:2.15303559094924 5:0.275628865766764 6:2.05474613439185 7:7.82462480292716 8:12.3418316019189 9:4.02389132120354 10:0.0993286868045894 13:0.844904909906825 52:0.77919372247398
+2 1:10.7131522998822 2:0.455036405979309 3:2.23834842900684 6:1.17670988377801 7:8.03802366118881 8:10.0433528420474 9:2.53356120223927 10:1.30144043183336 12:0.260796291926003 37:0.418600747852556
+2 1:10.0577909232352 2:1.72388792265238 3:1.44834310112208 4:2.63997490420162 5:1.41259793705466 6:3.63932216238331 7:7.71792537379634 8:12.4917323906062 9:4.12324666246782 10:2.55438969373062 11:0.884425570049315 43:0.715678085420547
+2 1:10.0009483548526 2:0.822565810808751 3:1.58001065576954 4:1.17915696444448 5:0.447896906870991 6:3.30853308479288 7:8.46482137771211 8:11.0926583628583 9:2.80678839071605 10:4.67314097368049 11:0.884425570049315 26:0.228914278114955
+1 1:9.6498619030774 2:2.86147893760065 3:1.44834310112208 4:0.907043818803449 5:-0.0516804123312682 6:1.78433409232278 7:6.86432994074974 8:11.3924599402328 9:4.32195734499639 10:0.258880278207237 13:0.844904909906825 47:1.05184741228156
+2 1:10.947209934399 2:0.061254900804907 3:0.526670218589846 4:1.21734828313094 5:-0.155041236993805 6:0.930705579472895 7:7.64679242104245 8:11.5923276584825 9:3.82518063867497 10:2.49573102042083 12:0.260796291926003 37:0.418600747852556
+2 1:9.95748050844231 2:0.568795507474136 3:0.92167288253223 6:2.36176978310686 7:8.07359013756576 8:11.292526081108 9:3.32840393235354 10:4.01538171696663 11:0.884425570049315 43:0.715678085420547
+2 1:10.1447266160557 2:2.69521563541591 3:0.658337773237307 4:1.46081793975713 5:1.41259793705466 6:0.773982210672766 7:7.29112765727304 8:11.8421623062946 9:4.24744083904818 10:1.57205244470256 13:0.844904909906825 46:0.674199862463242
+2 1:8.67350719909313 2:2.633960734611 3:0.92167288253223 4:1.67087019253267 5:1.46427834938593 6:0.196546519888686 7:7.14886175176527 8:11.8421623062946 9:4.37163501562854 10:0.765691215603882 14:0.296673189340406 20:0.129459555600631
+2 1:9.90398162055276 2:1.48761901954774 3:3.02835375689161 4:0.515582802267224 5:0.396216494539723 6:3.75750699787194 7:8.18028956669658 8:12.1419638836692 9:3.2787262617214 10:3.02913388971791 11:0.884425570049315 44:0.445904036039959
+2 1:10.2951922382451 2:2.04766382690689 3:0.790005327884769 6:1.19148298821409 7:7.46896003915775 8:12.2918646723565 9:4.29711850968032 10:0.336309726976169 13:0.844904909906825 37:0.418600747852556
+2 1:9.81704592773224 2:0.883820711613658 3:3.68669153012892 4:0.916591648475064 5:1.53318556582762 6:3.95019966442947 7:8.99831852336624 8:9.44374968729826 9:1.09290875390713 10:3.30756705902841 11:0.884425570049315 44:0.445904036039959
+1 1:10.5927798021307 2:1.45261621908779 3:1.44834310112208 4:1.32237440951871 5:0.551257731533528 6:0.341708328695362 7:8.14472309031964 8:12.1919308132316 9:3.60163112083033 10:2.04601452504572 12:0.260796291926003 46:0.674199862463242
+1 1:11.0374893077126 2:2.86147893760065 3:2.10668087435938 4:1.54674840680167 5:1.17142267950875 6:3.11455580045829 7:6.43753222422644 8:11.0426914332958 9:4.44615152157675 10:2.2524930550962 13:0.844904909906825 46:0.674199862463242
+7 1:11.432043605898 2:1.47886831943275 3:1.44834310112208 4:4.98396708858316 5:1.20587628772959 6:2.15815786544439 7:8.1091566139427 8:12.241897742794 9:3.65130879146247 10:0.797757957013238 13:0.844904909906825
+2 1:10.6094982045962 2:1.26885151667307 3:3.423356420834 4:2.0671051239047 5:1.63654639049016 6:0.181773415452608 7:8.7137867123507 8:11.2425591515455 9:2.28517284907855 10:2.67561761857087 12:0.260796291926003
+2 1:9.45927211497088 2:0.00875070011498671 3:1.84334576506446 4:2.29147912118766 5:1.61931958637974 6:1.18313297266327 7:7.07772879901139 8:10.592989067234 9:3.72582529741068 10:2.16880668117422 11:0.884425570049315 37:0.418600747852556
+2 1:10.0042920353457 2:2.43269463196631 3:1.31667554647461 4:1.67564410736848 5:0.999154638404519 6:0.755355252905538 7:6.86432994074974 8:12.0919969541068 9:4.69453987473746 10:0.470051502122506 13:0.844904909906825 27:0.184010991918219
+2 1:9.06806149727855 2:1.33010641747798 3:3.81835908477638 4:0.143217445074229 5:-0.275628865766764 6:1.76506482566702 7:8.57152080684294 8:11.292526081108 9:2.28517284907855 10:1.25764195576205 13:0.844904909906825 27:0.184010991918219
+1 1:10.4790946653654 2:1.68013442207745 3:3.02835375689161 4:0.515582802267224 5:0.534030927423105 6:1.81901877230313 7:7.54009299191163 8:12.5416993201686 9:3.99905248588747 10:0.891611834308913 13:0.844904909906825 47:1.05184741228156
+2 1:10.1413829355626 2:1.73263862276737 3:0.658337773237307 4:2.58268792617192 5:2.118896905582 6:1.38931412587983 7:7.75349185017328 8:12.1919308132316 9:3.99905248588747 10:2.06165683792833 13:0.844904909906825 46:0.674199862463242
+1 1:9.60639405666714 2:2.68646493530092 3:1.58001065576954 6:0.773982210672766 7:6.61536460611115 8:11.6422945880449 9:4.62002336878925 10:1.6471355465391 13:0.844904909906825 45:0.433012701892219
+4 1:7.40290861171634 2:1.21634731598315 3:2.76501864759669 4:0.405782761043648 5:0.516804123312682 6:0.681489730725149 7:8.74935318872765 8:11.3924599402328 9:2.45904469629105 10:0.9627843579248 14:0.296673189340406 17:0.119629720910916
+2 1:9.34893065869869 2:1.62763022138753 3:1.97501331971192 4:1.72338325572655 5:1.08528865895663 6:0.0192692666557535 7:7.8601912793041 8:12.4917323906062 9:3.92453597993925 10:1.55328166924342 13:0.844904909906825 24:0.280975743474508
+1 1:10.2684427943003 2:1.02383191345345 3:1.44834310112208 4:1.94775725300951 6:1.00970957276148 7:8.46482137771211 8:11.4923937993577 9:3.00549907324462 10:1.09965459564766 11:0.884425570049315 43:0.715678085420547
+1 1:10.6563097314995 2:0.201266102644694 3:0.658337773237307 4:0.143217445074229 5:0.0516804123312682 6:2.43884684972987 7:7.71792537379634 8:11.3924599402328 9:3.67614762677854 10:1.20758655453769 11:0.884425570049315 36:0.258530551913103
+1 1:10.0310414792904 2:2.73896913599084 3:1.58001065576954 4:1.88569636014401 5:0.792432989079446 6:0.155438751023078 7:6.72206403524197 8:11.5423607289201 9:4.52066802752496 10:0.684351188614297 13:0.844904909906825 33:0.0483368244522832
+2 1:9.99760467435947 2:1.54887392035265 3:1.31667554647461 4:1.52287883262263 5:0.241175257545918 6:3.26357146259612 7:8.00245718481187 8:12.2918646723565 9:3.8003418033589 10:1.1645701941105 11:0.884425570049315 44:0.445904036039959
+1 1:10.7699948682648 2:1.33010641747798 3:1.711678210417 4:2.85480107181296 5:0.792432989079446 6:2.68677808070056 7:8.39368842495823 8:11.9920630949819 9:3.2787262617214 10:2.1070195452879 11:0.884425570049315 43:0.715678085420547
+2 1:9.39239850510895 2:1.76764142322732 3:1.05334043717969 4:2.42992265142608 5:0.809659793189869 6:2.66686650515629 7:7.71792537379634 8:12.3418316019189 9:4.09840782715175 10:1.3483673704812 13:0.844904909906825 40:0.0798086884467622
+2 1:9.88391953759418 2:0.192515402529708 3:1.05334043717969 4:1.35101789853356 5:0.344536082208455 6:2.65723187182841 7:7.64679242104245 8:11.0926583628583 9:3.57679228551426 10:3.81907069028984 11:0.884425570049315 26:0.228914278114955
+2 1:9.07140517777165 2:0.201266102644694 3:2.76501864759669 4:0.959556881997333 5:0.430670102760569 6:1.099632817155 7:7.21999470451915 8:9.54368354642311 9:2.9309825672964 10:0.85015970516999 11:0.884425570049315 43:0.715678085420547
+2 1:9.66658030554288 3:0.658337773237307 4:0.730408969878567 5:0.241175257545918 6:2.40801602308066 7:7.54009299191163 8:11.4923937993577 9:3.87485830930711 10:2.81639843451438 11:0.884425570049315 43:0.715678085420547
+3 1:6.75423459605556 2:3.10649854082028 3:3.55502397548146 4:0.959556881997333 5:1.48150515349636 6:0.155438751023078 7:5.86846860219537 8:9.04401425079886 9:3.6264699561464 10:0.448152264086848 14:0.296673189340406 24:0.280975743474508
+5 1:9.08812358023714 2:0.787563010348804 3:2.37001598365431 4:0.143217445074229 5:-0.0344536082208455 6:1.74643786789979 7:8.67822023597376 8:10.4430882785468 9:2.1609786724982 10:1.72612922659629 11:0.884425570049315 43:0.715678085420547
+1 1:10.2951922382451 2:1.04133331368342 3:1.31667554647461 4:0.515582802267224 5:0.0516804123312682 6:2.26670806760514 7:8.42925490133517 8:11.5923276584825 9:3.1048544145089 10:0.326142223602471 13:0.844904909906825 47:1.05184741228156
+2 1:9.80701488625295 2:0.551294107244163 3:2.37001598365431 4:2.63520098936581 5:2.92855669877187 6:1.08357509494187 7:8.28698899582741 8:10.0933197716098 9:2.3348505197107 10:1.52590762169885 13:0.844904909906825 46:0.674199862463242
+1 1:9.62645613962572 2:2.57270583380609 3:1.31667554647461 4:0.143217445074229 5:0.0516804123312682 6:1.9307805189065 7:6.8287634643728 8:11.8921292358571 9:4.62002336878925 10:1.38981949962012 11:0.884425570049315 37:0.418600747852556
+2 1:9.58298829321546 2:1.23384871621313 3:2.50168353830177 4:0.453521909401724 5:0.585711339754373 6:0.63138963742019 7:8.7137867123507 8:11.5423607289201 9:2.65775537881962 10:1.53216454685189 13:0.844904909906825 47:1.05184741228156
+2 1:8.96775108248565 2:0.472537806209282 3:0.526670218589846 4:1.21734828313094 5:0.258402061656341 6:0.192692666557535 7:7.89575775568105 8:11.5423607289201 9:3.57679228551426 10:0.872841058849778 13:0.844904909906825 25:0.157785504911465
+2 1:9.82707696921153 2:1.18134451552321 3:1.18500799182715 4:1.59926146999555 5:-0.327309278098032 6:2.64310107628086 7:8.35812194858129 8:11.7921953767322 9:3.2787262617214 10:4.51124303534545 11:0.884425570049315 43:0.715678085420547
+5 1:9.57295725173617 2:1.70638652242241 3:1.05334043717969 4:0.811565522087296 5:0.585711339754373 6:0.539539466361098 7:7.78905832655022 8:12.3418316019189 9:4.04873015651961 10:0.282343747531156 11:0.884425570049315 44:0.445904036039959
+1 1:9.98422995238708 2:0.122509801609814 3:1.18500799182715 4:0.319852293999111 5:0.0516804123312682 6:0.68405896627925 7:7.54009299191163 8:11.0926583628583 9:3.65130879146247 10:1.13250345270115 13:0.844904909906825 46:0.674199862463242
+2 1:9.72007919343243 2:0.708806709313924 3:0.790005327884769 4:0.916591648475064 5:1.01638144251494 6:0.313446737600257 7:8.14472309031964 8:11.4424268697952 9:3.32840393235354 10:0.216646033424183 13:0.844904909906825 45:0.433012701892219
+6 1:8.3892943571799 2:3.08899714059031 3:1.84334576506446 6:0.43933927975118 7:6.97102936988056 8:10.7428898559213 9:3.89969714462318 10:0.716417930023653 13:0.844904909906825 34:0.169841555121689
+2 1:8.48291741098661 2:2.73896913599084 3:2.50168353830177 4:1.08845258256414 5:1.27478350417128 6:0.463104708626609 7:5.86846860219537 8:11.0926583628583 9:4.84357288663389 10:0.547480950891438 14:0.296673189340406 24:0.280975743474508
+2 1:9.63648718110501 2:0.577546207589123 3:1.58001065576954 4:1.35101789853356 5:0.620164947975219 6:1.21781765264362 7:8.25142251945046 8:10.7428898559213 9:2.83162722603212 10:2.19227015049814 13:0.844904909906825 40:0.0798086884467622
+1 1:10.6897465364305 2:0.358778704714455 3:0.658337773237307 4:2.22464431348635 5:2.34284535901749 6:1.96610750777538 7:7.82462480292716 8:11.4424268697952 9:3.60163112083033 10:0.777422950265841 13:0.844904909906825 38:0.217872335165298
+2 1:9.89060689858037 2:1.00633051322347 3:0.526670218589846 4:0.453521909401724 5:0.155041236993805 6:1.23387537485675 7:8.07359013756576 8:11.7921953767322 9:3.57679228551426 10:0.148601972384819 13:0.844904909906825 46:0.674199862463242
+2 1:9.59636301518785 2:0.061254900804907 3:1.97501331971192 4:1.57539189581652 5:0.87856700963156 6:0.57486645522998 7:7.11329527538833 8:10.3931213489843 9:3.55195345019819 10:0.934628194736097 13:0.844904909906825 47:1.05184741228156
+2 1:8.83066018226868 2:0.708806709313924 3:2.10668087435938 4:0.319852293999111 5:0.0172268041104227 6:1.26213696595186 7:8.535954330466 8:10.4930552081092 9:2.38452819034284 10:0.735188705482788 13:0.844904909906825 24:0.280975743474508
+1 1:10.3988463335311 2:0.122509801609814 3:1.97501331971192 4:2.37263567339639 5:0.327309278098032 6:1.05980966606644 7:7.2555611808961 8:10.3431544194219 9:3.40292043830176 10:2.72098032593044 13:0.844904909906825 45:0.433012701892219
+3 1:8.52638525739687 2:2.17892432863169 3:2.76501864759669 4:0.20050442310392 5:0.137814432883382 6:0.882532412833511 7:6.11743393683396 8:12.4917323906062 9:5.29067192232317 10:0.966694936145453 13:0.844904909906825 18:0.154303349962092
+1 1:10.3888152920518 2:0.236268903104641 3:1.97501331971192 4:1.54197449196586 5:-0.223948453435496 6:0.808666890653122 7:7.54009299191163 8:10.2931874898595 9:3.12969324982497 10:0.148601972384819 13:0.844904909906825 38:0.217872335165298
+2 1:9.53617676631211 2:2.70396633553089 3:2.89668620224415 4:1.43217445074229 5:2.25671133846538 6:0.816374597315424 7:5.51280383842596 8:10.9927245037334 9:5.04228356916246 10:1.94903218517352 13:0.844904909906825 47:1.05184741228156
+1 1:10.6797154949512 2:0.385030805059415 3:1.84334576506446 4:2.83570541246973 5:1.34369072061297 6:1.21010994598132 7:7.89575775568105 8:10.4930552081092 9:2.95582140261248 10:2.32288346306796 13:0.844904909906825 38:0.217872335165298
+2 1:8.48960477197281 2:0.525042006899203 3:1.31667554647461 4:1.01206994519122 5:0.534030927423105 6:0.359692977574066 7:8.1091566139427 8:10.8927906446086 9:3.03033790856069 10:0.157205244470256 11:0.884425570049315 43:0.715678085420547
+1 1:10.9940214613023 2:1.47011761931777 3:2.10668087435938 4:0.859304670445373 5:0.516804123312682 6:1.03411731052544 7:8.21585604307352 8:12.241897742794 9:3.47743694424997 10:2.21025881031315 11:0.884425570049315 36:0.258530551913103
+2 1:9.74014127639101 2:0.822565810808751 3:0.395002663942384 4:0.453521909401724 5:-0.0172268041104227 6:2.57630095187424 7:7.96689070843493 8:11.6922615176074 9:3.60163112083033 10:4.293032770633 11:0.884425570049315 34:0.169841555121689
+2 1:8.50632317443829 2:0.061254900804907 3:0.526670218589846 4:1.23167002763837 5:0.551257731533528 6:0.207465770993613 7:7.64679242104245 8:11.5923276584825 9:3.82518063867497 10:1.03004630332003 11:0.884425570049315 26:0.228914278114955
+2 1:11.0073961832747 2:0.988829112993498 3:2.63335109294923 4:1.23167002763837 5:-0.68907216441691 6:0.490723990833189 7:8.89161909423541 8:10.7428898559213 9:2.11130100186605 10:2.77729265230785 12:0.260796291926003 46:0.674199862463242
+1 1:11.0843008346159 2:2.32768623058647 3:1.31667554647461 4:0.773374203400835 5:0.447896906870991 6:1.10605590604025 7:6.93546289350362 8:12.241897742794 9:4.66970103942139 10:1.29049081281553 13:0.844904909906825 46:0.674199862463242
+2 1:9.20180871700243 2:1.21634731598315 3:4.08169419407131 4:0.591965439640145 5:1.3609175247234 6:0.965390259453251 7:8.82048614148153 8:10.592989067234 9:1.6393631308607 10:1.23652483337052 13:0.844904909906825 27:0.184010991918219
+2 1:9.27871336834365 2:0.236268903104641 3:2.63335109294923 4:1.63267887384621 5:1.30923711239213 6:0.899874752823689 7:7.36226061002692 8:9.64361740554796 9:2.85646606134819 10:1.61741515206213 13:0.844904909906825 47:1.05184741228156
+2 1:10.9104294489749 2:1.81139492380225 3:2.50168353830177 4:1.22212219796675 5:0.637391752085641 6:2.13696167212306 7:7.2555611808961 8:12.6916001088559 9:4.44615152157675 10:0.891611834308913 13:0.844904909906825 46:0.674199862463242
+1 1:10.8970547270025 2:2.52020163311617 3:0.395002663942384 4:0.716087225371144 5:0.223948453435496 6:2.7670666917662 7:7.50452651553469 8:11.9420961654195 9:4.12324666246782 10:0.527145944144041 11:0.884425570049315 52:0.77919372247398
+2 1:10.2851611967658 2:1.89890192495212 3:0.658337773237307 4:1.86182678596497 5:0.241175257545918 6:0.177919562121457 7:7.64679242104245 8:12.241897742794 9:4.14808549778389 10:1.10356517386831 13:0.844904909906825 33:0.0483368244522832
+2 1:9.5495514882845 2:0.490039206439256 3:0.395002663942384 4:2.05278337939728 5:0.0172268041104227 6:1.30003319037484 7:7.89575775568105 8:11.5923276584825 9:3.6264699561464 10:1.64244285267431 11:0.884425570049315 43:0.715678085420547
+2 1:9.25865128538507 2:0.525042006899203 3:2.89668620224415 4:1.15528739026545 5:2.15335051380284 6:0.158650295465704 7:8.21585604307352 8:9.44374968729826 9:1.96226798996963 10:1.26859157477987 11:0.884425570049315 44:0.445904036039959
+2 1:10.1781634209867 2:1.88140052472214 3:2.10668087435938 4:2.11484427226278 5:0.568484535643951 6:3.74787236454406 7:7.18442822814221 8:12.6916001088559 9:4.54550686284103 10:1.63931439009779 11:0.884425570049315 43:0.715678085420547
+2 1:9.11821670467501 2:1.08508681425835 3:1.44834310112208 4:2.74977494542519 5:0.637391752085641 6:0.865832381731858 7:8.46482137771211 8:11.5923276584825 9:3.08001557919283 10:2.11249435479682 11:0.884425570049315 26:0.228914278114955
+7 1:11.2113606933536 2:0.490039206439256 3:1.58001065576954 4:0.143217445074229 5:0.068907216441691 6:1.85306114339496 7:8.1091566139427 8:10.6929229263589 9:2.90614373198033 10:1.30456889440988 13:0.844904909906825 52:0.77919372247398
+2 1:9.78360912280127 2:0.927574212188591 3:1.18500799182715 4:1.72815717056236 5:-0.430670102760569 6:2.68420884514646 7:8.35812194858129 8:11.4424268697952 9:3.1048544145089 10:4.54722035497545 11:0.884425570049315 43:0.715678085420547
+2 1:9.93741842548373 2:1.7151372225374 3:2.10668087435938 4:1.32237440951871 5:0.964701030183674 6:3.48709495580286 7:7.61122594466551 8:12.591666249731 9:4.14808549778389 10:2.52466929925366 11:0.884425570049315 43:0.715678085420547
+2 1:10.0377288402766 2:0.822565810808751 3:0.526670218589846 4:1.61835712933878 5:0.981927834294096 6:2.54354319855946 7:8.00245718481187 8:11.6922615176074 9:3.57679228551426 10:1.09887248000353 11:0.884425570049315 43:0.715678085420547
+3 1:7.40959597270254 2:2.03016242667692 3:4.47669685801369 4:2.54927052232127 5:2.82519587410933 6:0.369969919790467 7:5.22827202741042 8:12.3418316019189 9:5.4397049342196 10:0.709378889226477 14:0.296673189340406 15:0.0931694990624912
+2 1:8.92428323607539 2:1.2513501164431 3:0.92167288253223 4:0.515582802267224 5:0.534030927423105 6:0.903086297266315 7:8.21585604307352 8:11.9420961654195 9:3.47743694424997 10:5.06498091138993 11:0.884425570049315 43:0.715678085420547
+2 1:9.88726321808727 2:1.89015122483713 3:1.05334043717969 4:1.82363546727851 5:0.18949484521465 6:1.26663312817153 7:7.54009299191163 8:12.3917985314813 9:4.29711850968032 10:1.64948189347149 13:0.844904909906825 46:0.674199862463242
+5 1:9.28874440982294 2:0.385030805059415 3:3.16002131153908 4:1.47513968426456 5:1.70545360693185 6:0.207465770993613 7:7.71792537379634 8:8.94408039167401 9:2.06162333123391 10:1.54389628151385 11:0.884425570049315 43:0.715678085420547
+3 1:7.92786644913254 2:2.71271703564588 3:2.37001598365431 4:0.730408969878567 5:0.654618556196064 6:0.0192692666557535 7:5.9751680313262 8:11.2425591515455 9:4.86841172194996 10:0.469269386478375 14:0.296673189340406 24:0.280975743474508
+2 1:10.1346955745764 2:1.22509801609814 3:1.44834310112208 4:1.79499197826367 5:3.04914432754483 6:4.04397676215414 7:8.42925490133517 8:11.8421623062946 9:3.20420975577319 10:3.16365778050838 11:0.884425570049315 43:0.715678085420547
+2 1:9.49270891990185 2:0.603798307934083 3:2.23834842900684 4:0.286434890148457 6:2.10805777213943 7:8.39368842495823 8:10.2432205602971 9:2.35968935502677 10:1.44065701648861 11:0.884425570049315 43:0.715678085420547
+1 1:11.191298610395 2:1.17259381540822 3:3.68669153012892 4:1.86660070080078 5:-0.258402061656341 6:0.294177470944504 7:8.92718557061235 8:10.6929229263589 9:1.76355730744106 10:0.667144644443423 12:0.260796291926003 46:0.674199862463242
+1 1:10.6295602875548 2:0.350028004599468 3:2.23834842900684 4:0.143217445074229 5:0.0344536082208455 6:1.06109428384349 7:7.78905832655022 8:9.94341898292251 9:2.73227188476783 10:0.355080502435304 13:0.844904909906825 49:0.210818510677892
+1 1:10.1346955745764 2:0.131260501724801 3:2.10668087435938 4:0.639704587998222 5:0.516804123312682 6:0.0860693910623657 7:7.2555611808961 8:10.2931874898595 9:3.37808160298569 10:0.598318467759928 11:0.884425570049315 36:0.258530551913103
+2 1:9.77023440082889 2:1.00633051322347 3:4.47669685801369 4:0.716087225371144 5:1.17142267950875 6:3.97268047552785 7:9.03388499974318 8:9.24388196904856 9:0.695487388849994 10:3.34510860994668 11:0.884425570049315 44:0.445904036039959
+2 1:8.52638525739687 2:2.00391032633196 3:2.50168353830177 4:0.143217445074229 5:-0.0516804123312682 6:0.995578777213932 7:6.68649755886503 8:12.6916001088559 9:4.9180893925821 10:0.947142045042187 13:0.844904909906825 17:0.119629720910916
+1 1:10.5259061922688 2:2.17892432863169 3:0.92167288253223 4:1.35101789853356 5:0.620164947975219 6:1.02448267719756 7:7.32669413364998 8:12.241897742794 9:4.39647385094461 10:1.87864177720176 13:0.844904909906825 46:0.674199862463242
+1 1:11.4353872863911 2:0.157512602069761 3:3.423356420834 4:1.03116560453445 5:1.77436082337354 6:2.63282413406445 7:6.72206403524197 8:8.74421267342431 9:2.75711072008391 10:0.660887719290378 11:0.884425570049315
+3 1:7.46643854108518 2:2.38019043127639 3:3.29168886618654 4:1.03116560453445 5:1.60209278226932 6:0.542751010803724 7:5.15713907465654 8:11.8921292358571 9:5.63841561674817 10:0.346477230349867 14:0.296673189340406 15:0.0931694990624912
+2 1:10.1681323795074 2:0.726308109543897 3:2.50168353830177 4:1.11709607157898 5:1.1369690712879 6:2.58978943853327 7:8.64265375959682 8:10.1932536307346 9:2.06162333123391 10:3.99817517279576 11:0.884425570049315 43:0.715678085420547
+1 1:10.7532764657993 2:0.253770303334615 3:0.92167288253223 4:0.916591648475064 5:-0.0516804123312682 6:1.2094676370928 7:7.75349185017328 8:11.1925922219831 9:3.52711461488211 10:0.682004841681905 13:0.844904909906825 45:0.433012701892219
+3 1:8.22879769351126 2:0.0175014002299734 3:2.10668087435938 4:2.382183503068 5:4.22056700705357 6:0.627535784089039 7:6.97102936988056 8:10.3931213489843 9:3.65130879146247 10:0.735188705482788 14:0.296673189340406 20:0.129459555600631
+1 1:10.1079461306317 2:0.253770303334615 3:2.23834842900684 4:3.95280148404871 5:4.32392783171611 6:0.585785706334907 7:7.54009299191163 8:10.0433528420474 9:2.98066023792855 10:1.12390018061571 13:0.844904909906825 38:0.217872335165298
+2 1:10.2416933503555 2:2.83522683725569 3:2.10668087435938 4:1.15528739026545 5:0.396216494539723 6:3.06574032493038 7:6.33083279509561 8:11.0426914332958 9:4.52066802752496 10:0.267483550292674 11:0.884425570049315 44:0.445904036039959
+2 1:8.63338303317597 2:0.358778704714455 3:1.711678210417 4:0.835435096266334 5:0.516804123312682 6:0.74058214846946 7:7.8601912793041 8:10.5430221376716 9:3.05517674387676 10:1.00892918092851 13:0.844904909906825 25:0.157785504911465
+1 1:10.9271478514404 2:0.245019603219628 3:1.18500799182715 4:1.52287883262263 5:1.10251546306706 6:0.862620837289232 7:7.71792537379634 8:10.9927245037334 9:3.42775927361783 10:0.315974720228773 11:0.884425570049315 37:0.418600747852556
+1 1:10.6462786900203 2:3.08024644047532 3:1.31667554647461 4:0.143217445074229 5:0.0344536082208455 6:1.74772248567684 7:7.18442822814221 8:11.0926583628583 9:3.92453597993925 10:2.17819206890379 13:0.844904909906825 37:0.418600747852556
+2 1:10.7298707023477 2:0.358778704714455 3:1.31667554647461 4:0.773374203400835 5:0.258402061656341 6:3.69199149124237 7:7.8601912793041 8:10.942757574171 9:3.2787262617214 10:0.989376289825241 11:0.884425570049315 43:0.715678085420547
+2 1:10.0343851597835 2:2.15267222828673 3:3.95002663942384 4:0.730408969878567 5:1.46427834938593 6:1.79653796120475 7:5.15713907465654 8:12.2918646723565 9:5.66325445206424 10:1.74724634898782 13:0.844904909906825 47:1.05184741228156
+3 1:8.33579546929035 2:2.75647053622081 3:2.23834842900684 4:1.57539189581652 5:2.8768762864406 6:0.054596255524635 7:6.15300041321091 8:11.1925922219831 9:4.71937871005353 10:1.22792156128508 14:0.296673189340406 24:0.280975743474508
+3 1:8.74372448944816 2:1.8463977242622 3:2.10668087435938 4:1.40830487656325 5:1.46427834938593 6:0.531831759698797 7:7.29112765727304 8:12.6416331792934 9:4.47099035689282 10:1.06367727601765 13:0.844904909906825 16:0.125988157669742
+2 1:8.95772004100636 2:3.13275064116524 3:1.18500799182715 4:1.23167002763837 6:0.420712321983952 7:7.36226061002692 8:11.1925922219831 9:3.85001947399104 10:0.854070283390643 11:0.884425570049315 26:0.228914278114955
+3 1:9.2319018414403 2:1.67138372196246 3:4.60836441266115 4:1.54197449196586 5:2.29116494668622 6:1.94426900556553 7:6.97102936988056 8:12.0420300245443 9:3.77550296804283 10:1.15049211251615 13:0.844904909906825 18:0.154303349962092
+1 1:9.62645613962572 2:2.46769743242625 3:0.790005327884769 4:2.08620078324793 5:0.413443298650146 6:1.83186495007363 7:7.2555611808961 8:11.9920630949819 9:4.34679618031246 10:2.82734805353221 11:0.884425570049315 43:0.715678085420547
+2 1:9.51945836384662 2:3.06274504024535 3:2.89668620224415 4:0.835435096266334 5:1.15419587539832 6:1.98537677443114 7:6.25969984234173 8:9.89345205336008 9:3.89969714462318 10:0.378543971759223 13:0.844904909906825 24:0.280975743474508
+2 1:9.99091731337328 2:1.86389912449217 3:1.31667554647461 4:2.5015313739632 5:1.15419587539832 6:1.30131780815189 7:7.50452651553469 8:12.4917323906062 9:4.32195734499639 10:1.69484460083106 13:0.844904909906825 46:0.674199862463242
+7 1:11.6560701989355 2:2.97523803909548 3:1.84334576506446 4:2.22941822832216 5:2.48065979190087 6:0.8234399950892 7:6.75763051161891 8:10.942757574171 9:4.14808549778389 10:1.30769735698641 12:0.260796291926003
+1 1:10.6161855655824 2:2.59895793415105 3:1.84334576506446 4:1.63267887384621 5:1.70545360693185 6:1.91086894336222 7:6.43753222422644 8:11.7422284471698 9:4.81873405131782 10:0.879097984002823 13:0.844904909906825 46:0.674199862463242
+1 1:10.8602742415784 2:1.82889632403222 3:3.16002131153908 4:0.515582802267224 5:0.292855669877187 6:1.43106420363396 7:6.89989641712668 8:12.6916001088559 9:4.57034569815711 10:2.96265405996681 12:0.260796291926003 36:0.258530551913103
+1 1:10.7566201462924 2:1.19009521563819 3:2.63335109294923 4:1.03116560453445 5:0.620164947975219 6:1.18698682599442 7:8.78491966510459 8:11.3424930106704 9:2.48388353160712 10:1.15909538460159 12:0.260796291926003 37:0.418600747852556
+2 1:9.72676655441863 2:2.26643132978156 3:1.711678210417 4:0.959556881997333 5:1.01638144251494 6:2.45297764527742 7:6.68649755886503 8:12.3418316019189 9:4.89325055726603 10:4.58085132767307 11:0.884425570049315 43:0.715678085420547
+2 1:9.26868232686436 2:0.393781505174402 3:0.92167288253223 4:1.58016581065232 5:0.223948453435496 6:1.17542526600096 7:7.89575775568105 8:11.2425591515455 9:3.42775927361783 10:0.67574791652886 11:0.884425570049315 26:0.228914278114955
+1 1:10.5626866776928 2:2.91398313829057 3:1.31667554647461 4:1.15528739026545 5:-0.447896906870991 6:0.829863083974451 7:7.04216232263445 8:11.3924599402328 9:4.19776316841604 10:0.664016181866901 12:0.260796291926003 38:0.217872335165298
+3 1:7.32266027988202 2:2.17892432863169 3:2.89668620224415 4:1.04071343420606 5:0.895793813741983 6:0.443835441970856 7:5.9751680313262 8:12.4917323906062 9:5.36518842827138 10:1.22401098306443 14:0.296673189340406 15:0.0931694990624912
+3 1:7.84761811729822 2:0.061254900804907 3:2.23834842900684 4:1.27940917599644 5:3.20418556453863 6:0.552385644131601 7:6.97102936988056 8:10.1432867011722 9:3.50227577956604 10:0.415303407033362 14:0.296673189340406 20:0.129459555600631
+1 1:10.2116002259177 2:0.516291306784216 3:0.131667554647461 4:0.143217445074229 6:2.17164635210342 7:7.82462480292716 8:11.7422284471698 9:3.77550296804283 10:0.516978440770343 11:0.884425570049315 33:0.0483368244522832
+2 1:10.188194462466 2:1.81139492380225 3:3.02835375689161 4:2.95027936852911 5:3.97939174950765 6:0.953186390571274 7:7.04216232263445 8:12.6916001088559 9:4.47099035689282 10:0.30033240734616 13:0.844904909906825 27:0.184010991918219
+2 1:9.68329870800837 2:0.700056009198937 3:2.37001598365431 4:0.143217445074229 5:0.172268041104227 6:2.05153458994922 7:8.57152080684294 8:10.1932536307346 9:2.13613983718213 10:1.96623872934439 11:0.884425570049315 43:0.715678085420547
+2 1:8.78719233585842 2:0.288773103794562 3:2.89668620224415 4:1.28895700566806 5:1.32646391650255 6:1.03475961941396 7:7.46896003915775 8:9.34381582817341 9:2.58323887287141 10:1.2615525339827 13:0.844904909906825 24:0.280975743474508
+2 1:10.0210104378111 2:0.0700056009198937 3:2.76501864759669 4:0.716087225371144 5:0.534030927423105 6:1.49272585693237 7:6.79319698799585 8:9.69358433511038 9:3.37808160298569 10:1.57674513856734 13:0.844904909906825 46:0.674199862463242
+2 1:10.0711656452076 2:0.603798307934083 3:1.711678210417 4:1.32237440951871 5:0.068907216441691 6:2.85313608282857 7:8.28698899582741 8:10.6929229263589 9:2.73227188476783 10:0.599882699048189 11:0.884425570049315 43:0.715678085420547
+3 1:9.3388996172194 2:0.892571411728645 3:1.58001065576954 4:1.67087019253267 5:1.08528865895663 6:1.63017995907675 7:8.50038785408906 8:11.2425591515455 9:2.83162722603212 10:1.64009650574192 13:0.844904909906825 46:0.674199862463242
+2 1:8.56316574282094 2:0.69130530908395 3:1.58001065576954 4:1.29850483533967 5:0.447896906870991 6:0.373823773121618 7:8.39368842495823 8:10.8428237150461 9:2.73227188476783 10:0.462230345681199 11:0.884425570049315 26:0.228914278114955
+1 1:12.2077774802965 2:0.0437535005749336 3:2.23834842900684 4:4.3824538192714 5:4.11720618239104 6:1.76056866344735 7:6.93546289350362 8:10.1932536307346 9:3.55195345019819 10:0.982337249028065 11:0.884425570049315
+7 1:11.2414538177915 2:1.5138711198927 3:1.05334043717969 4:0.143217445074229 5:0.0344536082208455 6:1.62761072352265 7:8.00245718481187 8:12.1919308132316 9:3.77550296804283 10:0.346477230349867 13:0.844904909906825 49:0.210818510677892
+2 1:8.95772004100636 2:2.45894673231127 3:1.05334043717969 4:0.868852500116988 5:0.637391752085641 6:0.529904833033222 7:7.07772879901139 8:12.0420300245443 9:4.52066802752496 10:1.14188884043071 11:0.884425570049315 43:0.715678085420547
+1 1:11.050864029685 2:0.516291306784216 3:2.63335109294923 4:2.5015313739632 5:0.430670102760569 6:1.88903044115237 7:8.21585604307352 8:9.64361740554796 9:2.13613983718213 10:0.879097984002823 13:0.844904909906825 38:0.217872335165298
+1 1:10.5259061922688 2:2.61645933438103 3:1.58001065576954 4:0.515582802267224 5:0.155041236993805 6:2.92122082501223 7:6.65093108248809 8:11.7921953767322 9:4.69453987473746 10:2.71785186335392 11:0.884425570049315 43:0.715678085420547
+1 1:10.7967443122096 2:3.12399994105026 3:1.711678210417 4:2.02413989038243 5:1.11974226717748 6:1.18249066377474 7:7.07772879901139 8:10.7928567854837 9:3.82518063867497 10:1.88959139621959 13:0.844904909906825 46:0.674199862463242
+2 1:10.1514139770419 2:0.568795507474136 3:2.63335109294923 4:2.72590537124615 5:3.51426803852624 6:0.38538533311507 7:8.35812194858129 8:9.69358433511038 9:2.06162333123391 10:0.722674855176698 11:0.884425570049315 43:0.715678085420547
+3 1:7.68043409264338 2:2.81772543702572 3:2.63335109294923 6:0.387312259780646 7:5.90403507857231 8:10.7928567854837 9:4.66970103942139 10:0.527145944144041 14:0.296673189340406 24:0.280975743474508
+2 1:10.1647886990143 2:2.9664873389805 3:1.05334043717969 4:0.286434890148457 5:0.103360824662536 6:2.63988953183823 7:7.21999470451915 8:11.3924599402328 9:4.07356899183568 10:1.84501080450414 11:0.884425570049315 43:0.715678085420547
+1 1:10.1213208526041 2:0.796313710463791 3:1.44834310112208 4:2.08620078324793 5:0.947474226073251 6:3.50636422245861 7:8.42925490133517 8:11.1426252924207 9:2.90614373198033 10:3.15505450842294 11:0.884425570049315 43:0.715678085420547
+2 1:11.361826315543 2:2.65146213484097 3:2.50168353830177 4:5.45181074249231 5:5.08190721257471 6:2.53455087412011 7:5.83290212581843 8:11.3424930106704 9:5.01744473384639 10:1.98970219866831 13:0.844904909906825 41:0.0982155906707477
+1 1:11.0107398637678 2:1.60137812104257 3:3.16002131153908 4:0.515582802267224 5:-0.327309278098032 6:1.80617259453263 7:7.78905832655022 8:12.3418316019189 9:3.70098646209461 10:0.341784536485083 13:0.844904909906825 47:1.05184741228156
+2 1:9.55958252976379 2:1.89015122483713 3:4.47669685801369 4:0.572869780296915 5:-0.0344536082208455 6:1.62439917908002 7:5.90403507857231 8:12.3917985314813 9:4.89325055726603 10:1.19898328245225 13:0.844904909906825 27:0.184010991918219
+2 1:9.94744946696302 2:2.18767502874668 3:1.711678210417 4:2.58268792617192 5:1.29201030828171 6:3.65666450237349 7:6.79319698799585 8:12.4417654610437 9:4.86841172194996 10:4.04431999579946 11:0.884425570049315 43:0.715678085420547
+2 1:9.75017231787031 2:1.18134451552321 3:0.395002663942384 4:1.47513968426456 5:0.275628865766764 6:3.04711336716316 7:8.00245718481187 8:11.8921292358571 9:3.67614762677854 10:3.63370928263088 11:0.884425570049315
+1 1:10.4690636238861 2:0.0437535005749336 3:0.395002663942384 4:3.48973174497537 5:1.32646391650255 6:1.26213696595186 7:7.6823588974194 8:11.6922615176074 9:3.85001947399104 10:2.01864047750114 13:0.844904909906825 46:0.674199862463242
+1 1:10.2082565454246 2:1.08508681425835 3:1.44834310112208 4:1.61835712933878 5:0.430670102760569 6:0.201042682108362 7:8.50038785408906 8:11.5923276584825 9:3.05517674387676 10:1.33116082631032 11:0.884425570049315 36:0.258530551913103
+1 1:10.9204604904542 2:1.08508681425835 3:0.395002663942384 4:0.811565522087296 5:0.137814432883382 6:4.00864977328526 7:8.00245718481187 8:11.8421623062946 9:3.6264699561464 10:0.239327387103971 11:0.884425570049315 36:0.258530551913103
+1 1:10.5760613996652 2:3.01899153967042 3:0.92167288253223 4:0.286434890148457 5:0.068907216441691 6:0.459893164183984 7:7.32669413364998 8:11.4424268697952 9:3.99905248588747 10:0.972169745654367 12:0.260796291926003 37:0.418600747852556
+2 1:8.96106372149946 2:0.533792707014189 3:1.31667554647461 4:2.58268792617192 5:-0.568484535643951 6:0.481731666393838 7:8.1091566139427 8:10.9927245037334 9:3.08001557919283 10:1.40780815943513 11:0.884425570049315 43:0.715678085420547
+1 1:10.2617554333141 2:0.297523803909548 3:0.92167288253223 4:0.143217445074229 5:0.103360824662536 6:3.10427885824189 7:7.78905832655022 8:11.1925922219831 9:3.50227577956604 10:1.77070981831174 11:0.884425570049315 43:0.715678085420547
+1 1:10.0912277281662 2:3.08024644047532 3:1.31667554647461 4:0.319852293999111 5:0.206721649325073 6:2.22945415207068 7:7.21999470451915 8:11.1426252924207 9:3.92453597993925 10:0.647591753340158 13:0.844904909906825 36:0.258530551913103
+2 1:8.88415907015823 2:0.0350028004599468 3:1.18500799182715 4:0.143217445074229 5:0.0344536082208455 6:1.04824810607299 7:7.39782708640386 8:11.0926583628583 9:3.75066413272675 10:5.01727185709796 11:0.884425570049315 30:0.0826662747682189
+2 1:9.39908586609514 2:3.08899714059031 3:1.44834310112208 4:1.21734828313094 5:0.49957731920226 6:1.32893709035847 7:7.11329527538833 8:10.9927245037334 9:3.92453597993925 10:2.3494753949684 11:0.884425570049315 26:0.228914278114955
+1 1:10.5626866776928 2:0.262521003449601 3:1.05334043717969 6:1.46446426583727 7:7.75349185017328 8:11.1426252924207 9:3.50227577956604 10:1.15205634380441 13:0.844904909906825 37:0.418600747852556
+1 1:10.7265270218546 2:0.385030805059415 3:1.711678210417 4:1.52287883262263 5:0.516804123312682 6:0.899232443935164 7:7.89575775568105 8:10.4930552081092 9:2.98066023792855 10:0.903343568970872 13:0.844904909906825 53:1
+1 1:11.432043605898 2:0.58629690770411 3:1.84334576506446 4:0.429652335222686 5:0.172268041104227 6:1.15808292601079 7:8.28698899582741 8:10.5430221376716 9:2.63291654350355 10:2.62712644863477 12:0.260796291926003 49:0.210818510677892
+2 1:10.673028133965 2:0.498789906554243 3:0.658337773237307 4:1.27940917599644 5:-0.241175257545918 6:0.46567394418071 7:7.93132423205799 8:11.4424268697952 9:3.52711461488211 10:1.77149193395587 13:0.844904909906825 37:0.418600747852556
+2 1:8.72031872599649 2:1.18134451552321 3:0.658337773237307 4:1.21734828313094 5:0.671845360306487 6:0.931990197249945 7:8.14472309031964 8:11.8921292358571 9:3.55195345019819 10:1.11216844595375 13:0.844904909906825 25:0.157785504911465
+1 1:10.6061545241031 2:0.498789906554243 3:1.97501331971192 4:0.429652335222686 5:-0.0172268041104227 6:1.21653303486657 7:8.14472309031964 8:10.3431544194219 9:2.68259421413569 10:3.45851537834562 12:0.260796291926003 36:0.258530551913103
+2 1:10.2015691844384 2:0.971327712763525 3:3.55502397548146 4:3.79048837963125 5:4.11720618239104 6:0.513847110820094 7:9.03388499974318 8:9.94341898292251 9:1.34129710706785 10:0.945577813753926 11:0.884425570049315 43:0.715678085420547
+5 1:9.58298829321546 2:0.481288506324269 3:3.423356420834 4:1.83318329695013 5:3.01469071932398 6:0.251142775413321 7:8.03802366118881 8:8.79417960298674 9:1.68904080149284 10:1.17630192877246 11:0.884425570049315 44:0.445904036039959
+6 1:8.27560922041461 2:1.40011201839787 3:0.790005327884769 4:1.08845258256414 5:0.706298968527332 6:0.389881495334746 7:8.07359013756576 8:12.0420300245443 9:3.67614762677854 10:1.0394316910496 14:0.296673189340406 20:0.129459555600631
+2 1:9.86720113512869 2:2.13517082805676 3:4.47669685801369 4:4.1294363329736 5:3.2558659768699 6:2.61805102962838 7:4.6947748817563 8:12.0919969541068 9:5.76260979332852 10:1.07149843245896 13:0.844904909906825 27:0.184010991918219
+1 1:10.810119034182 2:2.40644253162135 3:2.63335109294923 4:1.32237440951871 5:0.844113401410714 6:2.63539336961856 7:5.76176917306455 8:11.9920630949819 9:5.36518842827138 10:1.20132962938464 13:0.844904909906825 53:1
+2 1:9.75017231787031 2:0.0175014002299734 3:0.790005327884769 4:2.03368772005405 5:0.206721649325073 6:2.94370163611061 7:7.54009299191163 8:11.4424268697952 9:3.82518063867497 10:3.83314877188419 11:0.884425570049315
+2 1:10.2885048772589 2:0.0262521003449601 3:2.10668087435938 4:2.61133141518677 5:0.396216494539723 6:2.29753889425434 7:7.0065958462575 8:10.4430882785468 9:3.65130879146247 10:2.21495150417793 11:0.884425570049315 43:0.715678085420547
+3 1:7.86099283927061 2:1.00633051322347 3:3.29168886618654 4:0.319852293999111 5:0.292855669877187 6:0.624324239646414 7:8.99831852336624 8:10.2931874898595 9:1.61452429554463 10:0.742227746279963 14:0.296673189340406
+2 1:9.81035856674605 3:1.711678210417 4:1.32237440951871 5:1.03360824662536 6:0.578077999672605 7:7.14886175176527 8:10.7928567854837 9:3.77550296804283 10:1.52825396863124 13:0.844904909906825 45:0.433012701892219
+2 1:10.2483807113417 2:1.26885151667307 3:0.790005327884769 4:1.72338325572655 5:0.0344536082208455 6:0.204896535439512 7:8.1091566139427 8:11.9420961654195 9:3.57679228551426 10:1.16691654104289 13:0.844904909906825 37:0.418600747852556
+2 1:8.69022560155862 2:0.525042006899203 3:2.89668620224415 4:0.143217445074229 5:0.120587628772959 6:0.654512757407094 7:8.21585604307352 8:9.44374968729826 9:1.96226798996963 10:2.55830027195127 11:0.884425570049315 43:0.715678085420547
+1 1:11.1879549299019 2:2.46769743242625 3:5.7933724044883 4:1.04071343420606 5:1.17142267950875 6:2.14338476100832 7:2.38295391725509 8:9.89345205336008 9:6.16003115838566 10:1.3968585404173 11:0.884425570049315 53:1
+1 1:9.10149830220952 2:1.65388232173249 3:2.23834842900684 4:0.143217445074229 5:0.0344536082208455 6:0.946120992797498 7:7.78905832655022 8:12.4917323906062 9:3.94937481525532 10:1.73551461432586 11:0.884425570049315 26:0.228914278114955
+2 1:9.51277100286043 2:0.183764702414721 3:1.05334043717969 4:1.43217445074229 5:0.809659793189869 6:1.28333315927318 7:7.64679242104245 8:11.1426252924207 9:3.60163112083033 10:1.29361927539205 11:0.884425570049315 26:0.228914278114955
+2 1:10.2383496698624 2:2.62521003449601 3:3.68669153012892 4:2.92163587951427 5:3.96216494539723 6:0.396946893108522 7:4.62364192900241 8:10.7428898559213 9:5.46454376953567 10:0.897868759461958 11:0.884425570049315 44:0.445904036039959
+2 1:10.4958130678309 2:2.81772543702572 3:2.10668087435938 4:0.716087225371144 5:0.775206184969023 6:1.04054039941069 7:6.29526631871867 8:11.0926583628583 9:4.57034569815711 10:1.78713424683848 13:0.844904909906825 46:0.674199862463242
+1 1:10.0577909232352 2:2.22267782920662 3:0.92167288253223 4:0.319852293999111 5:0.0861340205521137 6:3.50186806023894 7:7.2555611808961 8:12.241897742794 9:4.44615152157675 10:1.70422998856063 11:0.884425570049315 37:0.418600747852556
+1 1:11.2481411787777 2:1.29510361701803 3:2.89668620224415 4:1.03116560453445 5:0.895793813741983 6:2.82423218284494 7:8.64265375959682 8:11.5923276584825 9:2.65775537881962 10:2.46992120416451 13:0.844904909906825 47:1.05184741228156
+1 1:9.30546281228843 2:0.56004480735915 3:1.58001065576954 6:0.79582071288262 7:8.21585604307352 8:10.7428898559213 9:2.85646606134819 10:1.68936979132215 13:0.844904909906825 34:0.169841555121689
+1 1:10.8669616025646 2:0.393781505174402 3:1.44834310112208 4:1.04071343420606 5:1.24032989595044 6:0.545320246357824 7:7.93132423205799 8:10.7428898559213 9:3.1048544145089 10:1.29909408490097 11:0.884425570049315 36:0.258530551913103
+6 1:8.63672671366907 2:0.63880110839403 3:2.10668087435938 4:0.572869780296915 5:0.0172268041104227 6:1.87233041005072 7:8.42925490133517 8:10.4430882785468 9:2.45904469629105 10:0.786808337995409 13:0.844904909906825 24:0.280975743474508
+2 1:9.8605137741425 2:3.06274504024535 3:1.18500799182715 4:1.52287883262263 5:0.68907216441691 6:2.90965926501878 7:7.21999470451915 8:11.1925922219831 9:3.9742136505714 10:4.85068122489814 11:0.884425570049315 26:0.228914278114955
+1 1:9.58633197370856 2:1.94265542552705 3:2.63335109294923 4:0.716087225371144 5:0.568484535643951 6:0.463104708626609 7:6.79319698799585 8:12.6916001088559 9:4.81873405131782 10:0.455191304884024 13:0.844904909906825 27:0.184010991918219
+2 1:10.2483807113417 2:0.927574212188591 3:1.18500799182715 4:1.11709607157898 5:0.327309278098032 6:1.99244217220491 7:8.35812194858129 8:11.4424268697952 9:3.1048544145089 10:0.664016181866901 11:0.884425570049315 37:0.418600747852556
+2 1:9.92404370351134 2:0.980078412878512 3:1.44834310112208 4:1.01206994519122 5:0.792432989079446 6:2.66943574071039 7:8.50038785408906 8:11.3924599402328 9:2.95582140261248 10:4.08186154671773 11:0.884425570049315 44:0.445904036039959
+1 1:10.188194462466 2:1.22509801609814 3:3.16002131153908 4:0.286434890148457 5:0.0516804123312682 6:2.38553521198229 7:8.78491966510459 8:11.1925922219831 9:2.23549517844641 10:4.09750385960035 11:0.884425570049315 44:0.445904036039959
+2 1:9.70670447146005 2:1.89015122483713 3:1.711678210417 4:3.14600987679722 5:4.53064948104118 6:0.724524426256332 7:7.36226061002692 8:12.591666249731 9:4.44615152157675 10:1.43596432262383 13:0.844904909906825 37:0.418600747852556
diff --git a/data/example4_test.mat b/data/example4_test.mat
new file mode 100644
index 0000000..1b2aeb4
Binary files /dev/null and b/data/example4_test.mat differ
diff --git a/data/example4_train.light b/data/example4_train.light
new file mode 100644
index 0000000..d7d422a
--- /dev/null
+++ b/data/example4_train.light
@@ -0,0 +1,300 @@
+7 1:11.1678928469434 2:2.56395513369111 3:1.58001065576954 4:2.56359226682869 5:1.7399072151527 6:2.10291930103123 7:6.65093108248809 8:11.8921292358571 9:4.71937871005353 10:2.68109242807978 13:0.844904909906825 46:0.674199862463242
+1 1:10.8535868805923 2:0.533792707014189 3:1.97501331971192 4:2.14826167611343 5:1.37814432883382 6:0.566516439679153 7:8.21585604307352 8:10.3431544194219 9:2.60807770818748 10:1.44065701648861 12:0.260796291926003 47:1.05184741228156
+2 1:9.73345391540482 2:0.288773103794562 3:1.44834310112208 4:3.15555770646884 5:2.70460824533637 6:0.936486359469621 7:7.75349185017328 8:10.7928567854837 9:3.30356509703747 10:0.768819678180405 13:0.844904909906825 46:0.674199862463242
+2 1:10.7499327853063 2:2.20517642897665 3:2.23834842900684 4:2.67339230805227 5:2.56679381245299 6:3.8666995089212 7:6.36639927147256 8:12.4417654610437 9:5.11680007511067 10:1.63383958058888 11:0.884425570049315 44:0.445904036039959
+2 1:10.5459682752273 2:2.44144533208129 3:1.18500799182715 4:1.99072248653178 5:0.723525772637755 6:0.562020277459477 7:6.97102936988056 8:12.0420300245443 9:4.57034569815711 10:0.911164725412178 13:0.844904909906825 37:0.418600747852556
+2 1:8.86744066769275 2:0.498789906554243 3:1.711678210417 4:0.143217445074229 6:0.590924177443108 7:8.1091566139427 8:10.6429559967965 9:2.88130489666426 10:1.616633036418 11:0.884425570049315 44:0.445904036039959
+7 1:11.0007088222885 2:0.822565810808751 3:1.18500799182715 4:1.17915696444448 5:0.981927834294096 6:1.35334482812242 7:8.35812194858129 8:11.292526081108 9:3.03033790856069 10:0.995633214978286 11:0.884425570049315 43:0.715678085420547
+1 1:10.8569305610853 2:2.85272823748567 3:1.84334576506446 4:0.405782761043648 5:0.0172268041104227 6:0.382173788672445 7:6.5797981297342 8:11.1925922219831 9:4.42131268626068 10:0.85015970516999 12:0.260796291926003 46:0.674199862463242
+1 1:10.7867132707303 2:0.358778704714455 3:2.63335109294923 4:3.49450565981118 5:1.8949484521465 6:1.2197445793092 7:7.75349185017328 8:9.64361740554796 9:2.50872236692319 10:2.19461649743053 13:0.844904909906825 47:1.05184741228156
+2 1:9.51611468335353 2:1.32135571736299 3:2.23834842900684 4:0.286434890148457 5:0.137814432883382 6:0.696262835161227 7:8.50038785408906 8:11.8921292358571 9:3.00549907324462 10:1.78322366861783 13:0.844904909906825 47:1.05184741228156
+1 1:10.2951922382451 2:1.82014562391724 3:1.97501331971192 4:0.405782761043648 5:0.0516804123312682 6:1.1022020527091 7:7.4333935627808 8:12.6416331792934 9:4.37163501562854 10:0.495079202734686 13:0.844904909906825 45:0.433012701892219
+7 1:11.1478307639848 2:0.805064410578777 3:2.89668620224415 4:2.29147912118766 5:3.04914432754483 6:0.813163052872798 7:8.78491966510459 8:10.0433528420474 9:1.78839614275713 10:0.799322188301499 13:0.844904909906825
+7 1:11.2849216642017 2:0.341277304484482 3:1.97501331971192 4:0.143217445074229 5:0.103360824662536 6:1.10091743493205 7:7.78905832655022 8:10.3431544194219 9:2.95582140261248 10:1.46959529532144 12:0.260796291926003 52:0.77919372247398
+2 1:10.5994671631169 2:1.05008401379841 3:0.92167288253223 4:2.5015313739632 5:0.620164947975219 6:2.88846307169745 7:8.25142251945046 8:11.7422284471698 9:3.37808160298569 10:1.65652093426866 11:0.884425570049315 43:0.715678085420547
+1 1:10.1815071014798 2:2.81772543702572 3:2.37001598365431 4:0.606287184147568 5:0.292855669877187 6:1.59549527909639 7:6.11743393683396 8:10.942757574171 9:4.62002336878925 10:2.33461519772992 11:0.884425570049315 36:0.258530551913103
+2 1:10.2885048772589 2:2.45894673231127 3:0.790005327884769 4:2.754548860261 5:0.775206184969023 6:0.615974224095587 7:7.21999470451915 8:12.0420300245443 9:4.37163501562854 10:0.824349888913679 12:0.260796291926003 37:0.418600747852556
+1 1:10.8937110465094 2:0.245019603219628 3:1.31667554647461 4:1.28895700566806 5:0.792432989079446 6:3.31110232034698 7:7.6823588974194 8:10.8428237150461 9:3.37808160298569 10:0.15016620367308 11:0.884425570049315 36:0.258530551913103
+1 1:10.6429350095272 2:0.761310910003844 3:1.97501331971192 4:0.515582802267224 5:0.310082473987609 6:2.0817231077099 7:8.57152080684294 8:10.6929229263589 9:2.43420586097498 10:2.87662133911244 11:0.884425570049315 37:0.418600747852556
+1 1:11.4788551328014 2:0.708806709313924 3:1.97501331971192 4:2.82615758279811 5:2.54956700834257 6:1.40280261253886 7:8.50038785408906 8:10.592989067234 9:2.45904469629105 10:1.13797826221006 11:0.884425570049315
+1 1:10.5626866776928 2:1.61012882115755 3:1.31667554647461 4:1.72338325572655 5:1.48150515349636 6:3.5648143313144 7:7.93132423205799 8:12.3418316019189 9:3.89969714462318 10:1.14579941865137 11:0.884425570049315 43:0.715678085420547
+2 1:10.499156748324 2:2.70396633553089 3:1.31667554647461 4:0.835435096266334 5:0.396216494539723 6:2.99894020052377 7:6.86432994074974 8:11.6922615176074 9:4.47099035689282 10:2.02489740265419 11:0.884425570049315 43:0.715678085420547
+2 1:8.54310365986236 2:0.183764702414721 3:1.05334043717969 6:0.90629784170894 7:7.64679242104245 8:11.1426252924207 9:3.60163112083033 10:1.43048951311491 13:0.844904909906825 24:0.280975743474508
+2 1:10.2885048772589 2:2.65146213484097 3:1.58001065576954 4:0.515582802267224 5:0.482350515091837 6:1.08357509494187 7:6.68649755886503 8:11.6922615176074 9:4.64486220410532 10:0.286254325751809 13:0.844904909906825 46:0.674199862463242
+2 1:9.27536968785056 2:0.901322111843631 3:1.44834310112208 4:2.31057478053089 5:-0.223948453435496 6:0.492650917498765 7:8.46482137771211 8:11.292526081108 9:2.9309825672964 10:0.810271807319328 13:0.844904909906825 25:0.157785504911465
+1 1:10.3754405700794 2:0.58629690770411 3:1.31667554647461 4:0.143217445074229 5:-0.0344536082208455 6:1.10926745048288 7:8.18028956669658 8:11.0426914332958 9:3.05517674387676 10:0.230724115018534 11:0.884425570049315 37:0.418600747852556
+2 1:9.66658030554288 2:1.14634171506326 3:0.658337773237307 4:1.54197449196586 5:0.706298968527332 6:1.96674981666391 7:8.1091566139427 8:11.8421623062946 9:3.57679228551426 10:1.87864177720176 11:0.884425570049315 26:0.228914278114955
+2 1:9.70670447146005 2:2.8964817380606 3:1.97501331971192 4:3.12691421745399 5:0.327309278098032 6:0.817659215092474 7:6.50866517698032 8:10.9927245037334 9:4.34679618031246 10:0.922896460074138 13:0.844904909906825 46:0.674199862463242
+1 1:10.8067753536889 2:0.805064410578777 3:1.18500799182715 4:1.03116560453445 5:0.120587628772959 6:2.97067860942867 7:8.32255547220435 8:11.3424930106704 9:3.08001557919283 10:1.71283326064607 11:0.884425570049315 37:0.418600747852556
+2 1:11.2314227763122 2:0.787563010348804 3:0.395002663942384 4:2.67339230805227 5:2.37729896723834 6:1.2274522859715 7:7.96689070843493 8:11.6922615176074 9:3.6264699561464 10:1.84344657321588 12:0.260796291926003 47:1.05184741228156
+2 1:9.4358663515192 2:0.0437535005749336 3:1.31667554647461 4:1.15528739026545 5:0.964701030183674 6:1.44776423473561 7:7.39782708640386 8:11.0426914332958 9:3.72582529741068 10:0.442677454577934 13:0.844904909906825 24:0.280975743474508
+2 1:10.3921589725449 2:2.94023523863554 3:0.790005327884769 4:3.21761859933434 5:-1.18864948361917 6:0.529904833033222 7:7.36226061002692 8:11.5923276584825 9:4.07356899183568 10:0.799322188301499 12:0.260796291926003 36:0.258530551913103
+2 1:9.73345391540482 2:0.69130530908395 3:2.10668087435938 4:0.319852293999111 5:0.344536082208455 6:0.369969919790467 7:8.50038785408906 8:10.4930552081092 9:2.38452819034284 10:1.29909408490097 13:0.844904909906825 47:1.05184741228156
+2 1:10.1681323795074 2:0.516291306784216 3:2.37001598365431 4:0.639704587998222 5:0.740752576748178 6:3.580229744639 7:8.21585604307352 8:9.99338591248493 9:2.38452819034284 10:3.52655943938499 11:0.884425570049315 43:0.715678085420547
+1 1:10.8836800050301 2:0.603798307934083 3:0.790005327884769 4:1.28895700566806 6:0.529262524144697 7:8.03802366118881 8:11.3924599402328 9:3.37808160298569 10:1.42266835667361 11:0.884425570049315 37:0.418600747852556
+2 1:9.31215017327462 2:3.06274504024535 3:2.10668087435938 4:0.143217445074229 5:0.137814432883382 6:2.02776916107379 7:6.72206403524197 8:10.5430221376716 9:3.94937481525532 10:3.84722685347855 11:0.884425570049315 34:0.169841555121689
+2 1:10.3687532090932 2:1.44386551897281 3:3.423356420834 4:0.835435096266334 5:0.447896906870991 6:2.17999636765425 7:8.25142251945046 8:11.8421623062946 9:2.95582140261248 10:0.872841058849778 13:0.844904909906825 47:1.05184741228156
+2 1:9.08143621925094 2:2.82647613714071 3:3.02835375689161 4:1.35101789853356 5:1.87772164803608 6:0.967959495007351 7:5.47723736204901 8:10.4430882785468 9:4.7442175453696 10:0.883790677867606 13:0.844904909906825 47:1.05184741228156
+7 1:11.7831300576732 2:0.708806709313924 3:2.50168353830177 4:0.716087225371144 5:0.534030927423105 6:0.883817030610561 7:8.60708728321988 8:10.1932536307346 9:2.11130100186605 10:0.817310848116503 12:0.260796291926003
+7 1:11.3651699960361 2:1.32135571736299 3:1.58001065576954 4:2.24373997282958 5:0.602938143864796 6:1.45418732362087 7:8.35812194858129 8:11.9920630949819 9:3.32840393235354 10:0.338656073908561 13:0.844904909906825 52:0.77919372247398
+4 1:7.6570283291917 2:1.75889072311233 3:3.423356420834 4:2.18167907996408 5:2.58402061656341 6:0.858766983958082 7:7.11329527538833 8:12.591666249731 9:4.29711850968032 10:0.645245406407766 14:0.296673189340406 16:0.125988157669742
+7 1:11.224735415326 2:1.13759101494827 3:3.81835908477638 4:2.18167907996408 5:2.13612370969242 6:1.19469453265672 7:8.9627520469893 8:10.4430882785468 9:1.54000778959642 10:1.31473639778358 11:0.884425570049315 53:1
+1 1:10.0444162012628 2:1.18134451552321 3:0.790005327884769 4:0.716087225371144 5:0.3789896904293 6:3.39845632918639 7:8.18028956669658 8:11.8421623062946 9:3.47743694424997 10:3.92543841789161 11:0.884425570049315 43:0.715678085420547
+1 1:10.0811966866869 2:2.94023523863554 3:1.58001065576954 4:0.319852293999111 5:0.258402061656341 6:0.259492790964147 7:6.86432994074974 8:11.1426252924207 9:4.22260200373211 10:1.39373007784077 13:0.844904909906825 36:0.258530551913103
+3 1:8.33913914978345 2:0.183764702414721 3:0.526670218589846 4:1.08845258256414 5:0.361762886318878 6:0.366116066459317 7:7.71792537379634 8:11.5423607289201 9:3.75066413272675 10:1.13015710576875 14:0.296673189340406 20:0.129459555600631
+1 1:10.9973651417954 2:1.18134451552321 3:3.16002131153908 4:1.08845258256414 5:0.895793813741983 6:1.45354501473234 7:8.85605261785847 8:11.0926583628583 9:2.18581750781427 10:1.49931568979841 13:0.844904909906825 46:0.674199862463242
+4 1:7.1354141722686 2:0.997579813108485 3:1.44834310112208 6:0.876751632836785 7:8.50038785408906 8:11.4424268697952 9:2.95582140261248 10:0.281561631887025 14:0.296673189340406 17:0.119629720910916
+1 1:10.0243541183042 2:0.315025204139522 3:2.50168353830177 4:1.32237440951871 5:1.30923711239213 6:3.17814438042228 7:7.64679242104245 8:9.74355126467281 9:2.68259421413569 10:2.44880408177299 11:0.884425570049315 43:0.715678085420547
+1 1:10.7633075072786 2:2.41519323173633 3:1.18500799182715 4:0.773374203400835 5:0.68907216441691 6:2.84671299394332 7:7.0065958462575 8:12.0919969541068 9:4.57034569815711 10:2.41439099343124 11:0.884425570049315 43:0.715678085420547
+2 1:9.19177767552314 2:0.69130530908395 3:1.18500799182715 4:2.37263567339639 5:1.06806185484621 6:1.04696348829594 7:8.25142251945046 8:11.1925922219831 9:3.08001557919283 10:0.524799597211649 11:0.884425570049315 37:0.418600747852556
+2 1:9.10484198270262 2:0.58629690770411 3:0.790005327884769 4:0.515582802267224 5:0.292855669877187 6:1.44840654362414 7:8.07359013756576 8:11.3924599402328 9:3.35324276766962 10:3.3020922495195 11:0.884425570049315 26:0.228914278114955
+1 1:11.1043629175745 2:0.568795507474136 3:1.44834310112208 4:2.29147912118766 5:0.775206184969023 6:0.62882040186609 7:8.18028956669658 8:10.8927906446086 9:2.98066023792855 10:2.01394778363636 11:0.884425570049315 52:0.77919372247398
+1 1:9.8571700936494 2:2.73896913599084 3:2.63335109294923 4:1.14573956059383 5:0.465123710981414 6:1.37004485922407 7:5.79733564944149 8:11.0426914332958 9:4.86841172194996 10:0.305025101210944 13:0.844904909906825 46:0.674199862463242
+1 1:10.8034316731958 2:0.472537806209282 3:1.44834310112208 4:1.22212219796675 5:1.24032989595044 6:0.457966237518408 7:8.03802366118881 8:10.8428237150461 9:3.05517674387676 10:1.31630062907184 11:0.884425570049315 36:0.258530551913103
+2 1:10.1246645330971 2:1.78514282345729 3:1.84334576506446 4:1.80931372277109 5:1.84326803981523 6:0.931990197249945 7:7.50452651553469 8:12.591666249731 9:4.29711850968032 10:0.840774317440422 11:0.884425570049315 43:0.715678085420547
+1 1:11.0274582662333 2:0.953826312533552 3:3.29168886618654 4:1.11709607157898 5:1.1369690712879 6:1.64623768128988 7:8.99831852336624 8:10.1432867011722 9:1.56484662491249 10:2.07729915081094 11:0.884425570049315 44:0.445904036039959
+2 1:10.6061545241031 2:2.29268343012652 3:1.58001065576954 4:1.03116560453445 5:0.568484535643951 6:1.71881858569321 7:6.79319698799585 8:12.2918646723565 9:4.81873405131782 10:0.497425549667078 13:0.844904909906825 45:0.433012701892219
+2 1:11.1244250005331 2:0.918823512073605 3:1.711678210417 4:0.20050442310392 5:-0.0516804123312682 6:0.475950886397112 7:8.60708728321988 8:11.1426252924207 9:2.68259421413569 10:2.90399538665701 12:0.260796291926003 46:0.674199862463242
+2 1:8.51635421591758 2:0.140011201839787 3:0.395002663942384 4:0.572869780296915 5:0.310082473987609 6:0.646162741856268 7:7.71792537379634 8:11.5923276584825 9:3.8003418033589 10:3.93482380562118 11:0.884425570049315 32:0.0836242010007091
+2 1:9.03796837284068 2:0.980078412878512 3:1.44834310112208 4:0.319852293999111 5:0.137814432883382 6:1.31095244147976 7:8.50038785408906 8:11.3924599402328 9:2.95582140261248 10:3.22309856946231 11:0.884425570049315 37:0.418600747852556
+2 1:8.76378657240675 2:0.385030805059415 3:2.50168353830177 4:1.94775725300951 5:0.18949484521465 6:0.4117199975446 7:7.8601912793041 8:9.79351819423523 9:2.55840003755534 10:0.727367549041481 11:0.884425570049315 23:0.0750234484920533
+2 1:9.44924107349159 2:0.568795507474136 3:0.658337773237307 4:2.15303559094924 5:0.430670102760569 6:1.59164142576524 7:8.00245718481187 8:11.4923937993577 9:3.47743694424997 10:2.19305226614227 11:0.884425570049315 44:0.445904036039959
+2 1:10.3353164041622 2:1.57512602069761 3:2.23834842900684 4:1.08845258256414 5:0.551257731533528 6:0.310877502046157 7:7.96689070843493 8:12.3917985314813 9:3.75066413272675 10:1.16769865668702 13:0.844904909906825 46:0.674199862463242
+7 1:11.4554493693497 2:1.18134451552321 3:1.58001065576954 4:0.591965439640145 5:-0.223948453435496 6:1.92756897446388 7:8.50038785408906 8:11.7422284471698 9:3.08001557919283 10:0.707032542294085 13:0.844904909906825 49:0.210818510677892
+5 1:9.14496614861978 2:0.743809509773871 3:3.95002663942384 4:0.773374203400835 5:1.61931958637974 6:0.115615599934521 7:8.74935318872765 8:8.69424574386189 9:0.844520400746422 10:1.43987490084448 11:0.884425570049315 44:0.445904036039959
+2 1:9.39574218560204 2:1.03258261356843 3:2.37001598365431 4:0.143217445074229 5:0.0861340205521137 6:1.85049190784086 7:8.82048614148153 8:11.0426914332958 9:2.3348505197107 10:1.64635343089497 13:0.844904909906825 38:0.217872335165298
+2 1:10.0343851597835 2:1.11133891460331 3:2.10668087435938 4:1.71860934089075 5:-0.671845360306487 6:2.80175137174656 7:8.7137867123507 8:11.3924599402328 9:2.65775537881962 10:1.84501080450414 11:0.884425570049315 43:0.715678085420547
+1 1:10.6864028559374 2:1.50512041977771 3:1.18500799182715 4:1.80931372277109 5:0.964701030183674 6:0.534400995252897 7:8.03802366118881 8:12.241897742794 9:3.75066413272675 10:1.91696544376416 11:0.884425570049315 36:0.258530551913103
+1 1:11.3217021496258 2:0.787563010348804 3:1.05334043717969 4:3.35606212957276 5:3.37645360564286 6:0.824082303977725 7:8.25142251945046 8:11.3924599402328 9:3.20420975577319 10:0.71328946744713 12:0.260796291926003 45:0.433012701892219
+2 1:10.9271478514404 2:2.69521563541591 3:0.395002663942384 4:0.773374203400835 5:0.0516804123312682 6:0.707182086266154 7:7.54009299191163 8:11.8421623062946 9:4.07356899183568 10:2.47304966674104 12:0.260796291926003 37:0.418600747852556
+2 1:9.27202600735746 2:1.52262182000769 3:2.37001598365431 4:0.591965439640145 5:0.447896906870991 6:0.887028575053187 7:8.1091566139427 8:12.2918646723565 9:3.52711461488211 10:1.17317346619594 13:0.844904909906825 18:0.154303349962092
+1 1:10.4724073043792 2:1.35635851782294 3:2.63335109294923 4:1.0025221155196 5:-0.0172268041104227 6:1.13110595269273 7:8.50038785408906 8:11.8421623062946 9:2.95582140261248 10:1.65417458733627 13:0.844904909906825 47:1.05184741228156
+1 1:10.5727177191721 2:0.376280104944429 3:2.10668087435938 4:2.43469656626189 5:0.981927834294096 6:0.759209106236688 7:7.8601912793041 8:10.0933197716098 9:2.75711072008391 10:1.11295056159788 13:0.844904909906825 36:0.258530551913103
+1 1:10.117977172111 2:0.56004480735915 3:1.05334043717969 4:0.286434890148457 5:-0.137814432883382 6:0.535685613029948 7:8.1091566139427 8:11.1925922219831 9:3.20420975577319 10:1.07931958890026 13:0.844904909906825 37:0.418600747852556
+2 1:8.496292132959 2:0.525042006899203 3:0.658337773237307 4:1.08845258256414 5:-0.068907216441691 6:0.396946893108522 7:7.96689070843493 8:11.4424268697952 9:3.47743694424997 10:4.25705545100299 11:0.884425570049315 32:0.0836242010007091
+2 1:9.35227433919178 2:0.490039206439256 3:2.89668620224415 4:0.143217445074229 5:0.292855669877187 6:1.51777590358485 7:8.1091566139427 8:9.39378275773583 9:2.03678449591784 10:1.48993030206884 13:0.844904909906825 27:0.184010991918219
+1 1:9.81370224723914 2:0.166263302184748 3:2.37001598365431 4:0.716087225371144 5:0.361762886318878 6:1.24094077263053 7:7.2555611808961 8:9.99338591248493 9:3.17937092045712 10:0.71328946744713 11:0.884425570049315 43:0.715678085420547
+7 1:11.2414538177915 2:2.47644813254124 3:2.23834842900684 4:0.286434890148457 5:0.223948453435496 6:1.47088735472252 7:6.08186746045702 8:11.9420961654195 9:5.14163891042674 10:1.8770775459135 13:0.844904909906825 52:0.77919372247398
+2 1:10.0678219647145 2:1.18134451552321 3:1.58001065576954 4:2.4394704810977 5:0.206721649325073 6:3.39267554918967 7:8.50038785408906 8:11.6922615176074 9:3.05517674387676 10:2.36355347656275 11:0.884425570049315 44:0.445904036039959
+2 1:9.14496614861978 2:0.726308109543897 3:3.68669153012892 4:1.15528739026545 5:1.75713401926312 6:0.710393630708779 7:8.74935318872765 8:8.89411346211159 9:1.04323108327499 10:0.684351188614297 13:0.844904909906825 27:0.184010991918219
+3 1:7.16216361621337 2:2.59020723403607 3:4.60836441266115 4:1.46081793975713 5:4.27224741938484 6:0.21966963987559 7:3.66334706682499 8:10.2931874898595 9:5.73777095801245 10:0.274522591089849 14:0.296673189340406 24:0.280975743474508
+1 1:9.90732530104586 2:2.72146773576087 3:0.658337773237307 4:0.286434890148457 5:0.0172268041104227 6:3.37083704697981 7:7.36226061002692 8:11.7921953767322 9:4.17292433309997 10:1.96311026676787 11:0.884425570049315 33:0.0483368244522832
+2 1:10.8000879927027 2:2.15267222828673 3:2.50168353830177 4:2.3153486953667 5:1.99830927680904 6:3.79668784007197 7:6.29526631871867 8:12.5416993201686 9:5.19131658105889 10:2.34712904803601 11:0.884425570049315 43:0.715678085420547
+1 1:10.9304915319335 2:0.411282905404375 3:1.18500799182715 4:1.15528739026545 5:1.91217525625692 6:3.20319442707476 7:7.93132423205799 8:11.0426914332958 9:3.2787262617214 10:1.25764195576205 11:0.884425570049315 43:0.715678085420547
+2 1:10.1714760600005 2:0.437535005749336 3:2.50168353830177 4:1.83318329695013 5:0.87856700963156 6:0.0815732288426899 7:8.00245718481187 8:9.74355126467281 9:2.38452819034284 10:0.902561453326741 13:0.844904909906825 38:0.217872335165298
+2 1:9.73679759589792 2:0.210016802759681 3:0.790005327884769 4:3.14123596196142 5:0.482350515091837 6:0.872255470617109 7:7.71792537379634 8:11.292526081108 9:3.6264699561464 10:0.856416630323035 13:0.844904909906825 46:0.674199862463242
+2 1:10.0979150891524 2:0.621299708164057 3:2.37001598365431 4:1.15528739026545 5:0.568484535643951 6:1.52355668358158 7:8.42925490133517 8:10.1432867011722 9:2.23549517844641 10:1.51730434961341 13:0.844904909906825 45:0.433012701892219
+2 1:10.5158751507895 2:2.32768623058647 3:1.97501331971192 4:3.02188809106623 5:1.75713401926312 6:3.88596877557696 7:6.4019657478495 8:12.241897742794 9:5.06712240447853 10:1.26311676527096 11:0.884425570049315 44:0.445904036039959
+2 1:9.81035856674605 2:2.8964817380606 3:3.16002131153908 4:1.74725282990559 5:0.826886597300292 6:0.562020277459477 7:5.5483703148029 8:10.0933197716098 9:4.49582919220889 10:1.19663693551986 13:0.844904909906825 47:1.05184741228156
+2 1:10.1146334916179 2:2.5027002328862 3:1.97501331971192 4:0.730408969878567 5:0.775206184969023 6:0.246646613193645 7:6.29526631871867 8:11.8921292358571 9:4.99260589853032 10:1.27015580606814 13:0.844904909906825 38:0.217872335165298
+2 1:9.58298829321546 2:0.0962577012648538 3:1.97501331971192 4:2.03368772005405 5:2.84242267821975 6:1.82801109674248 7:7.18442822814221 8:10.3931213489843 9:3.47743694424997 10:1.42657893489426 11:0.884425570049315 43:0.715678085420547
+1 1:11.709569086825 2:2.53770303334615 3:3.95002663942384 4:0.591965439640145 5:1.17142267950875 6:1.85370345228349 7:4.33911011798688 8:10.942757574171 9:5.71293212269638 10:1.6471355465391 11:0.884425570049315
+1 1:10.8234937561544 2:0.787563010348804 3:0.131667554647461 4:2.72590537124615 5:1.18864948361917 6:2.65466263627431 7:7.8601912793041 8:11.7921953767322 9:3.75066413272675 10:1.50635473059558 11:0.884425570049315 43:0.715678085420547
+1 1:9.78360912280127 2:2.93148453852055 3:4.60836441266115 4:1.63267887384621 5:0.258402061656341 6:1.83443418562773 7:4.30354364160994 8:8.49437802561219 9:4.34679618031246 10:0.273740475445719 13:0.844904909906825 47:1.05184741228156
+3 1:8.65010143564145 2:1.40886271851286 3:1.84334576506446 4:0.143217445074229 5:0.068907216441691 6:1.1073405238173 7:8.28698899582741 8:12.1419638836692 9:3.40292043830176 10:2.25874998024925 13:0.844904909906825 18:0.154303349962092
+2 1:10.2116002259177 2:3.06274504024535 3:3.423356420834 4:0.907043818803449 5:0.654618556196064 6:0.871613161728584 7:5.83290212581843 8:9.29384889861099 9:3.82518063867497 10:1.10669363644483 13:0.844904909906825 45:0.433012701892219
+2 1:9.41580426856062 2:1.15509241517825 3:0.92167288253223 4:1.86660070080078 5:0.964701030183674 6:1.21524841708952 7:8.25142251945046 8:11.8421623062946 9:3.40292043830176 10:2.1938343817864 11:0.884425570049315 43:0.715678085420547
+1 1:10.6596534119926 2:2.67771423518593 3:1.97501331971192 4:0.606287184147568 5:0.275628865766764 6:3.08500959158614 7:6.29526631871867 8:11.4923937993577 9:4.79389521600175 10:1.06836996988243 11:0.884425570049315 43:0.715678085420547
+6 1:8.13851832019764 2:2.14392152817174 3:1.31667554647461 4:0.143217445074229 5:0.103360824662536 6:0.542751010803724 7:7.11329527538833 8:12.3917985314813 9:4.59518453347318 10:0.80088641958976 13:0.844904909906825 24:0.280975743474508
+7 1:11.1177376395469 2:0.971327712763525 3:4.47669685801369 4:1.67087019253267 5:1.58486597815889 6:1.32058707480764 7:9.03388499974318 8:9.09398118036129 9:0.645809718217852 10:1.10747575208897 11:0.884425570049315 53:1
+2 1:8.599946228245 2:1.70638652242241 3:1.44834310112208 4:0.143217445074229 5:-0.0516804123312682 6:1.5087835791455 7:7.75349185017328 8:12.4917323906062 9:4.09840782715175 10:1.65573881862453 13:0.844904909906825 16:0.125988157669742
+1 1:10.0912277281662 2:0.393781505174402 3:1.44834310112208 4:1.67087019253267 5:0.740752576748178 6:2.66815112293334 7:7.93132423205799 8:10.8428237150461 9:3.15453208514105 10:3.89337167648225 11:0.884425570049315 34:0.169841555121689
+2 1:9.58967565420166 2:1.16384311529323 3:2.89668620224415 4:0.835435096266334 5:1.17142267950875 6:0.18948112211491 7:8.85605261785847 8:11.1426252924207 9:2.23549517844641 10:1.21540771097899 11:0.884425570049315 44:0.445904036039959
+2 1:9.62979982011882 2:0.376280104944429 3:3.02835375689161 4:1.15528739026545 5:0.895793813741983 6:2.21917720985428 7:7.71792537379634 8:9.14394810992371 9:2.23549517844641 10:4.05996230868208 11:0.884425570049315 43:0.715678085420547
+2 1:8.32910810830416 2:2.42394393185132 3:1.44834310112208 4:0.143217445074229 5:-0.0516804123312682 6:0.719385955148131 7:6.75763051161891 8:12.0919969541068 9:4.7442175453696 10:0.75004890272127 14:0.296673189340406 20:0.129459555600631
+1 1:10.6094982045962 2:0.918823512073605 3:2.89668620224415 4:0.859304670445373 5:1.03360824662536 6:0.608266517433286 7:8.92718557061235 8:10.3431544194219 9:1.78839614275713 10:1.425014703606 11:0.884425570049315 43:0.715678085420547
+2 1:8.79053601635152 2:0.227518202989654 3:2.50168353830177 4:1.43217445074229 5:1.34369072061297 6:1.27562545261088 7:7.39782708640386 8:9.74355126467281 9:2.90614373198033 10:1.75506750542912 13:0.844904909906825 25:0.157785504911465
+2 1:9.98422995238708 2:2.97523803909548 3:2.10668087435938 4:0.859304670445373 5:0.792432989079446 6:1.19662145932229 7:6.5797981297342 8:10.7928567854837 9:4.17292433309997 10:0.559994801197528 13:0.844904909906825 38:0.217872335165298
+1 1:10.6864028559374 2:0.253770303334615 3:1.711678210417 4:0.716087225371144 5:0.155041236993805 6:0.87739394172531 7:7.64679242104245 8:10.5430221376716 9:3.22904859108926 10:0.21273545520353 13:0.844904909906825 37:0.418600747852556
+4 1:7.05850952092737 2:0.0875070011498671 3:0.92167288253223 6:0.786186079554743 7:7.57565946828857 8:11.292526081108 9:3.75066413272675 10:0.902561453326741 14:0.296673189340406 31:0.127293769304329
+1 1:10.2383496698624 2:3.03649293990039 3:3.02835375689161 4:0.907043818803449 5:0.826886597300292 6:2.28918887870352 7:6.08186746045702 8:9.84348512379766 9:3.99905248588747 10:1.61115822690909 13:0.844904909906825 38:0.217872335165298
+1 1:10.7265270218546 2:1.96890752587201 3:0.131667554647461 4:2.878670645992 5:1.1369690712879 6:1.73937247012602 7:7.71792537379634 8:11.9420961654195 9:3.94937481525532 10:3.92074572402682 11:0.884425570049315 43:0.715678085420547
+2 1:9.49270891990185 2:0.551294107244163 3:1.58001065576954 4:1.14573956059383 5:0.310082473987609 6:1.7592840456703 7:8.18028956669658 8:10.7428898559213 9:2.88130489666426 10:2.99237445444377 11:0.884425570049315 43:0.715678085420547
+2 1:10.1915381429591 2:2.05641452702188 3:2.10668087435938 4:1.14573956059383 5:0.223948453435496 6:1.77277253232932 7:6.8287634643728 8:12.591666249731 9:4.86841172194996 10:1.15909538460159 13:0.844904909906825 37:0.418600747852556
+1 1:10.6429350095272 2:0.866319311383684 3:1.97501331971192 4:0.143217445074229 5:0.155041236993805 6:1.46510657472579 7:8.67822023597376 8:10.8927906446086 9:2.45904469629105 10:2.19070591920988 11:0.884425570049315 37:0.418600747852556
+2 1:9.53283308581901 2:0.595047607819096 3:0.92167288253223 4:1.08845258256414 5:0.930247421962828 6:1.58971449909966 7:8.07359013756576 8:11.292526081108 9:3.30356509703747 10:2.40422349005754 11:0.884425570049315 26:0.228914278114955
+1 1:10.3219416821899 2:0.831316510923738 3:1.44834310112208 4:1.28895700566806 5:0.551257731533528 6:0.409793070879025 7:8.46482137771211 8:11.1426252924207 9:2.83162722603212 10:1.09965459564766 13:0.844904909906825 46:0.674199862463242
+2 1:10.6329039680479 2:0.682554608968963 3:0.790005327884769 4:0.20050442310392 5:0.0516804123312682 6:3.40102556474049 7:8.07359013756576 8:11.4923937993577 9:3.40292043830176 10:2.26891748362294 11:0.884425570049315 37:0.418600747852556
+2 1:9.67326766652908 3:3.68669153012892 4:1.32237440951871 5:0.757979380858601 6:1.52484130135863 7:5.9751680313262 8:8.79417960298674 9:3.37808160298569 10:0.958873779704146 13:0.844904909906825 47:1.05184741228156
+2 1:9.92404370351134 2:1.00633051322347 3:1.84334576506446 4:0.811565522087296 5:0.740752576748178 6:1.00970957276148 7:8.67822023597376 8:11.2425591515455 9:2.65775537881962 10:2.05696414406354 13:0.844904909906825 47:1.05184741228156
+1 1:10.362065848107 2:1.33885711759297 3:1.44834310112208 4:0.916591648475064 5:0.516804123312682 6:0.865832381731858 7:8.28698899582741 8:12.0420300245443 9:3.40292043830176 10:2.65215414924695 13:0.844904909906825 47:1.05184741228156
+1 1:10.9672720173575 2:1.89015122483713 3:0.790005327884769 4:1.99549640136759 5:2.10167010147157 6:3.32651773367158 7:7.61122594466551 8:12.2918646723565 9:4.17292433309997 10:1.3866910370436 11:0.884425570049315 43:0.715678085420547
+1 1:10.8201500756613 2:1.02383191345345 3:0.131667554647461 4:2.73545320091777 5:0.981927834294096 6:2.94948241610734 7:7.82462480292716 8:11.8421623062946 9:3.8003418033589 10:2.08824876982877 11:0.884425570049315 52:0.77919372247398
+2 1:9.74014127639101 2:2.20517642897665 3:1.31667554647461 4:1.03116560453445 5:0.292855669877187 6:3.43827948027495 7:7.07772879901139 8:12.3418316019189 9:4.64486220410532 10:4.23046351910255 11:0.884425570049315 30:0.0826662747682189
+7 1:11.6426954769631 2:0.0525042006899203 3:1.31667554647461 4:2.14826167611343 5:3.61762886318878 6:0.770770666230141 7:7.39782708640386 8:11.0926583628583 9:3.72582529741068 10:1.35931698949903 12:0.260796291926003
+2 1:10.6830591754443 2:2.36268903104641 3:1.05334043717969 4:2.1291660167702 5:1.03360824662536 6:0.294819779833029 7:7.07772879901139 8:12.1419638836692 9:4.54550686284103 10:2.13517570847661 13:0.844904909906825 45:0.433012701892219
+1 1:9.62645613962572 3:1.44834310112208 4:1.67087019253267 5:0.87856700963156 6:0.640381961859542 7:7.21999470451915 8:10.942757574171 9:3.8003418033589 10:2.16724244988596 13:0.844904909906825 46:0.674199862463242
+1 1:10.3988463335311 2:2.52895233323116 3:1.18500799182715 4:0.591965439640145 5:0.0861340205521137 6:1.05338657718119 7:6.89989641712668 8:11.9420961654195 9:4.59518453347318 10:0.662451950578639 13:0.844904909906825 37:0.418600747852556
+1 1:10.4021900140242 2:1.43511481885782 3:0.92167288253223 4:0.286434890148457 5:0.0172268041104227 6:2.59878176297262 7:8.07359013756576 8:12.0919969541068 9:3.70098646209461 10:1.07931958890026 11:0.884425570049315 43:0.715678085420547
+5 1:9.52280204433972 2:2.32768623058647 3:1.97501331971192 4:3.90983625052644 5:1.56763917404847 6:1.40665646587001 7:6.43753222422644 8:12.241897742794 9:5.04228356916246 10:1.34289256097228 13:0.844904909906825 31:0.127293769304329
+3 1:7.19225674065124 2:3.07149574036034 3:3.423356420834 4:0.286434890148457 5:0.447896906870991 6:0.589639559666058 7:5.86846860219537 8:9.34381582817341 9:3.82518063867497 10:0.472397849054898 14:0.296673189340406 24:0.280975743474508
+2 1:8.41938748161777 2:2.2401792294366 3:1.18500799182715 4:0.959556881997333 5:0.568484535643951 6:0.784259152889168 7:7.07772879901139 8:12.2918646723565 9:4.59518453347318 10:0.686697535546689 14:0.296673189340406 20:0.129459555600631
+1 1:11.3551389545568 2:1.89015122483713 3:1.711678210417 4:3.33219255539372 5:0.310082473987609 6:0.899232443935164 7:7.36226061002692 8:12.591666249731 9:4.44615152157675 10:3.17069682130555 12:0.260796291926003 47:1.05184741228156
+5 1:9.40577322708133 2:0.568795507474136 3:2.50168353830177 4:1.08845258256414 5:2.51511340012172 6:0.155438751023078 7:8.32255547220435 8:9.89345205336008 9:2.18581750781427 10:1.23808906465878 11:0.884425570049315 43:0.715678085420547
+2 1:8.97778212396494 2:0.980078412878512 3:1.97501331971192 4:0.286434890148457 5:-0.068907216441691 6:1.07329815272547 7:8.7137867123507 8:11.1426252924207 9:2.55840003755534 10:1.87003850511632 13:0.844904909906825 18:0.154303349962092
+3 1:7.61690416327454 2:0.061254900804907 3:4.74003196730861 4:1.01206994519122 5:2.30839175079665 6:0.764347577344889 7:5.44167088567207 8:7.24520478655157 9:2.73227188476783 10:1.08323016712092 14:0.296673189340406 24:0.280975743474508
+1 1:11.3718573570223 2:2.81772543702572 3:1.97501331971192 4:3.65204484939283 5:2.20503092613411 6:1.42656804141429 7:6.4019657478495 8:11.1426252924207 9:4.54550686284103 10:0.995633214978286 13:0.844904909906825 46:0.674199862463242
+3 1:7.45640749960589 2:2.51145093300119 3:4.21336174871877 4:1.17915696444448 5:2.56679381245299 6:0.940982521689297 7:4.05457830697135 8:10.8927906446086 9:5.83712629927674 10:0.599882699048189 14:0.296673189340406 24:0.280975743474508
+2 1:8.87747170917204 2:1.72388792265238 3:3.81835908477638 4:1.80931372277109 5:3.75544329607216 6:0.238296597642818 7:7.04216232263445 8:12.4417654610437 9:4.12324666246782 10:0.71328946744713 13:0.844904909906825 17:0.119629720910916
+1 1:9.82373328871843 2:1.89015122483713 3:0.790005327884769 4:1.29850483533967 5:0.292855669877187 6:1.28333315927318 7:7.61122594466551 8:12.2918646723565 9:4.17292433309997 10:1.46177413888014 13:0.844904909906825 46:0.674199862463242
+1 1:10.5727177191721 2:0.166263302184748 3:1.18500799182715 4:1.27940917599644 5:0.671845360306487 6:1.98601908331966 7:7.61122594466551 8:10.9927245037334 9:3.55195345019819 10:2.52075872103301 11:0.884425570049315 43:0.715678085420547
+3 1:8.27895290090771 2:2.60770863426604 3:1.31667554647461 4:1.17915696444448 5:0.757979380858601 6:0.393093039777372 7:6.79319698799585 8:11.7921953767322 9:4.62002336878925 10:1.17786616006072 14:0.296673189340406 20:0.129459555600631
+2 1:9.08143621925094 2:1.47011761931777 3:0.790005327884769 4:0.143217445074229 5:-0.068907216441691 6:0.84849004174168 7:8.00245718481187 8:12.0919969541068 9:3.77550296804283 10:1.97562411707396 13:0.844904909906825 31:0.127293769304329
+2 1:9.39239850510895 2:0.673803908853977 3:2.89668620224415 4:1.08845258256414 5:0.568484535643951 6:0.84977465951873 7:8.57152080684294 8:9.74355126467281 9:1.83807381338927 10:1.85361407658958 13:0.844904909906825 47:1.05184741228156
+2 1:9.10818566319572 2:1.43511481885782 3:1.84334576506446 4:0.591965439640145 5:0.3789896904293 6:1.1201867015878 7:8.25142251945046 8:12.1919308132316 9:3.47743694424997 10:0.764126984315621 11:0.884425570049315 43:0.715678085420547
+2 1:9.63648718110501 2:1.58387672081259 3:1.44834310112208 4:0.20050442310392 5:-0.103360824662536 6:0.953186390571274 7:7.96689070843493 8:12.3418316019189 9:3.85001947399104 10:2.05774625970767 13:0.844904909906825 27:0.184010991918219
+1 1:11.0542077101781 2:0.402532205289389 3:3.16002131153908 4:1.21734828313094 5:1.70545360693185 6:1.30838320592566 7:7.78905832655022 8:9.04401425079886 9:2.08646216654998 10:1.68936979132215 13:0.844904909906825 47:1.05184741228156
+2 1:9.62979982011882 2:2.60770863426604 3:1.31667554647461 4:0.319852293999111 5:0.120587628772959 6:0.758566797348163 7:6.8287634643728 8:11.8421623062946 9:4.59518453347318 10:1.68936979132215 13:0.844904909906825 45:0.433012701892219
+1 1:10.0276977987973 2:2.69521563541591 3:0.395002663942384 4:1.35101789853356 5:0.361762886318878 6:1.86911886560809 7:7.54009299191163 8:11.8421623062946 9:4.07356899183568 10:0.514632093837951 13:0.844904909906825 46:0.674199862463242
+2 1:8.93097059706159 2:2.82647613714071 3:1.18500799182715 4:1.46081793975713 5:1.30923711239213 6:0.759209106236688 7:6.97102936988056 8:11.4923937993577 9:4.32195734499639 10:0.91351107234457 11:0.884425570049315 43:0.715678085420547
+1 1:10.428939457969 2:0.708806709313924 3:1.58001065576954 4:1.41785270623486 5:-1.08528865895663 6:1.22359843264035 7:8.42925490133517 8:10.8927906446086 9:2.73227188476783 10:1.18568731650203 11:0.884425570049315 43:0.715678085420547
+2 1:9.9608241889354 2:2.62521003449601 3:1.97501331971192 4:0.20050442310392 5:0.120587628772959 6:1.61476454575214 7:6.25969984234173 8:11.5923276584825 9:4.86841172194996 10:0.610832318066018 13:0.844904909906825 35:0.0490880693673816
+2 1:9.30546281228843 2:1.62763022138753 3:1.18500799182715 4:0.286434890148457 5:0.0861340205521137 6:1.17799450155506 7:7.89575775568105 8:12.3418316019189 9:3.94937481525532 10:1.81294406309479 13:0.844904909906825 40:0.0798086884467622
+2 1:10.2082565454246 2:1.36510921793793 3:2.10668087435938 4:0.319852293999111 5:0.310082473987609 6:0.506781713046317 7:8.39368842495823 8:11.9920630949819 9:3.20420975577319 10:0.222902958577228 13:0.844904909906825 47:1.05184741228156
+2 1:10.8034316731958 2:2.14392152817174 3:0.92167288253223 4:0.639704587998222 5:0.568484535643951 6:0.542751010803724 7:7.32669413364998 8:12.2918646723565 9:4.39647385094461 10:0.972169745654367 12:0.260796291926003 38:0.217872335165298
+1 1:11.12108132004 2:0.140011201839787 3:0.92167288253223 4:1.83318329695013 5:1.3609175247234 6:0.616616532984112 7:7.61122594466551 8:11.292526081108 9:3.67614762677854 10:1.05663823522047 12:0.260796291926003 37:0.418600747852556
+2 1:9.56961357124308 2:0.393781505174402 3:0.526670218589846 4:1.91911376399467 5:1.01638144251494 6:1.42142957030608 7:7.8601912793041 8:11.4923937993577 9:3.60163112083033 10:1.50791896188385 11:0.884425570049315 26:0.228914278114955
+1 1:10.2316623088762 2:0.245019603219628 3:0.658337773237307 4:1.27940917599644 5:0.18949484521465 6:2.03868841217872 7:7.75349185017328 8:11.4923937993577 9:3.67614762677854 10:0.290164903972462 11:0.884425570049315 36:0.258530551913103
+1 1:10.9706156978506 2:0.280022403679575 3:2.23834842900684 4:3.0648533245885 5:3.60040205907835 6:0.542751010803724 7:7.57565946828857 8:9.94341898292251 9:2.88130489666426 10:0.514632093837951 11:0.884425570049315 36:0.258530551913103
+2 1:9.77692176181508 2:0.752560209888857 3:2.10668087435938 4:0.868852500116988 5:0.671845360306487 6:2.21275412096903 7:8.57152080684294 8:10.592989067234 9:2.40936702565891 10:2.27048171491121 11:0.884425570049315 43:0.715678085420547
+1 1:10.7599638267855 2:2.95773663886551 3:1.44834310112208 4:0.716087225371144 5:0.585711339754373 6:0.0430346955311828 7:6.93546289350362 8:11.1925922219831 9:4.17292433309997 10:1.30144043183336 12:0.260796291926003 37:0.418600747852556
+2 1:8.54979102084855 2:1.91640332518209 3:3.29168886618654 4:0.859304670445373 5:-1.94662886447777 6:0.43933927975118 7:6.47309870060338 8:12.6916001088559 9:4.89325055726603 10:0.768819678180405 13:0.844904909906825 17:0.119629720910916
+3 1:8.82731650177558 2:1.1200896147183 3:2.89668620224415 4:0.859304670445373 5:1.05083505073579 6:1.05852504828939 7:8.89161909423541 8:10.9927245037334 9:2.1609786724982 10:0.872058943205647 13:0.844904909906825 18:0.154303349962092
+2 1:9.44589739299849 2:0.061254900804907 3:1.84334576506446 4:2.26283563217281 5:1.63654639049016 6:0.038538533311507 7:7.18442822814221 8:10.592989067234 9:3.60163112083033 10:0.81340026989585 13:0.844904909906825 25:0.157785504911465
+2 1:10.9438662539059 2:2.98398873921047 3:2.23834842900684 4:0.143217445074229 5:0.155041236993805 6:1.34884866590275 7:6.47309870060338 8:10.592989067234 9:4.17292433309997 10:1.54937109102277 12:0.260796291926003 37:0.418600747852556
+2 1:9.76354703984269 2:1.00633051322347 3:1.31667554647461 4:1.23167002763837 5:0.68907216441691 6:2.18770407431655 7:8.42925490133517 8:11.5423607289201 9:3.05517674387676 10:3.60789946637457 11:0.884425570049315 26:0.228914278114955
+1 1:10.5025004288171 2:1.30385431713302 3:2.37001598365431 4:1.43217445074229 5:1.3609175247234 6:1.47088735472252 7:8.57152080684294 8:11.7921953767322 9:2.90614373198033 10:1.29361927539205 13:0.844904909906825 41:0.0982155906707477
+1 1:10.6161855655824 2:1.30385431713302 3:1.44834310112208 4:0.572869780296915 5:-0.120587628772959 6:1.46703350139137 7:8.35812194858129 8:11.9420961654195 9:3.32840393235354 10:1.20915078582595 13:0.844904909906825 41:0.0982155906707477
+2 1:10.6696844534719 2:0.350028004599468 3:1.05334043717969 4:1.17915696444448 5:-0.3789896904293 6:1.90444585447697 7:7.8601912793041 8:11.0926583628583 9:3.35324276766962 10:1.09574401742701 11:0.884425570049315 43:0.715678085420547
+2 1:10.0678219647145 2:0.140011201839787 3:1.58001065576954 4:2.44901831076931 5:1.58486597815889 6:3.24558681371742 7:7.46896003915775 8:10.7428898559213 9:3.50227577956604 10:4.63090672889743 11:0.884425570049315 26:0.228914278114955
+1 1:11.3484515935706 2:2.68646493530092 3:4.60836441266115 4:0.716087225371144 5:0.740752576748178 6:2.25900036094284 7:3.69891354320193 8:9.74355126467281 9:5.4397049342196 10:1.07228054810309 11:0.884425570049315 53:1
+2 1:8.96775108248565 2:1.88140052472214 3:2.37001598365431 4:0.286434890148457 5:0.18949484521465 6:0.813163052872798 7:7.07772879901139 8:12.6916001088559 9:4.59518453347318 10:2.64198664587325 11:0.884425570049315 26:0.228914278114955
+1 1:10.5894361216376 2:3.11524924093527 3:2.76501864759669 4:0.20050442310392 5:0.18949484521465 6:0.957040243902424 7:6.43753222422644 8:9.84348512379766 9:3.72582529741068 10:2.03741125296028 13:0.844904909906825 38:0.217872335165298
+2 1:8.52972893788997 2:0.813815110693764 3:1.18500799182715 4:1.54674840680167 5:-0.516804123312682 6:0.63010501964314 7:8.35812194858129 8:11.292526081108 9:3.00549907324462 10:0.366812237097263 11:0.884425570049315 23:0.0750234484920533
+2 1:9.24193288291959 2:1.36510921793793 3:1.84334576506446 4:0.20050442310392 5:0.068907216441691 6:1.62054532574887 7:8.35812194858129 8:12.0420300245443 9:3.2787262617214 10:1.36792026158446 11:0.884425570049315 26:0.228914278114955
+1 1:10.9505536148921 2:2.42394393185132 3:1.58001065576954 4:0.143217445074229 5:0.155041236993805 6:2.20504641430673 7:6.61536460611115 8:12.0919969541068 9:4.84357288663389 10:1.2717200373564 13:0.844904909906825 46:0.674199862463242
+1 1:10.7332143828408 2:2.29268343012652 3:1.97501331971192 4:2.43469656626189 5:1.72268041104227 6:0.776551446226867 7:6.47309870060338 8:12.2918646723565 9:5.01744473384639 10:2.10780166093203 13:0.844904909906825 45:0.433012701892219
+5 1:9.23858920242649 2:0.866319311383684 3:0.658337773237307 4:1.08845258256414 5:0.568484535643951 6:1.68541852348991 7:8.1091566139427 8:11.6422945880449 9:3.47743694424997 10:1.59473379838234 13:0.844904909906825 25:0.157785504911465
+1 1:10.2985359187382 2:0.936324912303578 3:1.711678210417 4:0.20050442310392 5:0.137814432883382 6:2.3347928097888 7:8.57152080684294 8:11.1925922219831 9:2.73227188476783 10:1.79886598150044 11:0.884425570049315 37:0.418600747852556
+2 1:10.7298707023477 2:0.131260501724801 3:2.63335109294923 4:2.58268792617192 5:2.29116494668622 6:0.509993257488943 7:7.07772879901139 8:9.74355126467281 9:3.17937092045712 10:1.51495800268102 13:0.844904909906825 47:1.05184741228156
+1 1:10.8535868805923 2:2.90523243817559 3:2.10668087435938 4:0.286434890148457 5:0.344536082208455 6:0.990440306105731 7:6.43753222422644 8:10.8927906446086 9:4.37163501562854 10:0.47474419598729 11:0.884425570049315 37:0.418600747852556
+2 1:8.99450052643042 2:0.271271703564588 3:0.92167288253223 4:2.57791401133612 5:1.34369072061297 6:0.54853179080045 7:7.75349185017328 8:11.2425591515455 9:3.55195345019819 10:1.17317346619594 11:0.884425570049315 26:0.228914278114955
+2 1:9.99426099386637 2:1.61887952127254 3:1.84334576506446 4:2.58268792617192 5:1.77436082337354 6:1.02640960386314 7:7.89575775568105 8:12.4417654610437 9:3.89969714462318 10:1.49305876464536 13:0.844904909906825 46:0.674199862463242
+1 1:10.9037420879887 2:2.34518763081644 3:3.81835908477638 4:0.453521909401724 5:0.637391752085641 6:0.90758245948599 7:4.80147431088712 8:11.8421623062946 9:5.81228746396067 10:2.02880798087484 11:0.884425570049315 53:1
+2 1:9.91066898153895 2:0.857568611268698 3:2.37001598365431 4:1.47513968426456 5:-0.0516804123312682 6:2.902593867245 7:8.74935318872765 8:10.6429559967965 9:2.21065634313034 10:2.71550551642153 11:0.884425570049315 43:0.715678085420547
+1 1:10.7298707023477 2:1.96890752587201 3:1.18500799182715 4:1.40830487656325 5:0.723525772637755 6:0.57486645522998 7:7.39782708640386 8:12.4417654610437 9:4.39647385094461 10:0.140780815943513 13:0.844904909906825 37:0.418600747852556
+2 1:9.82373328871843 2:2.61645933438103 3:1.711678210417 4:0.716087225371144 5:0.327309278098032 6:2.54611243411356 7:6.47309870060338 8:11.6922615176074 9:4.79389521600175 10:0.527145944144041 11:0.884425570049315 43:0.715678085420547
+2 1:9.26868232686436 2:2.77397193645079 3:3.95002663942384 4:2.44901831076931 5:0.292855669877187 6:0.601843428548035 7:4.55250897624853 8:9.89345205336008 9:5.01744473384639 10:0.979990902095673 13:0.844904909906825 45:0.433012701892219
+2 1:10.1046024501386 2:0.437535005749336 3:1.58001065576954 4:0.835435096266334 5:0.292855669877187 6:2.92186313390076 7:8.00245718481187 8:10.6929229263589 9:3.00549907324462 10:0.417649753965754 11:0.884425570049315 44:0.445904036039959
+1 1:9.84045169118392 2:1.35635851782294 3:0.658337773237307 4:0.143217445074229 5:0.0344536082208455 6:1.31930245703059 7:8.03802366118881 8:11.9920630949819 9:3.70098646209461 10:0.31284625765225 13:0.844904909906825 46:0.674199862463242
+2 1:9.55958252976379 2:2.73021843587585 3:2.63335109294923 4:1.08845258256414 5:1.68822680282143 6:2.4754584563758 7:5.76176917306455 8:11.0426914332958 9:4.89325055726603 10:0.755523712230184 11:0.884425570049315 43:0.715678085420547
+2 1:9.58633197370856 2:1.32135571736299 3:3.55502397548146 4:0.20050442310392 5:0.344536082208455 6:3.44791411360283 7:8.60708728321988 8:11.3424930106704 9:2.38452819034284 10:0.45049861101924 11:0.884425570049315 44:0.445904036039959
+1 1:11.2715469422294 2:1.96890752587201 3:0.131667554647461 4:2.05278337939728 5:0.551257731533528 6:0.693693599607127 7:7.71792537379634 8:11.9420961654195 9:3.94937481525532 10:1.81607252567131 13:0.844904909906825 46:0.674199862463242
+6 1:8.35920123274203 2:0.157512602069761 3:3.29168886618654 4:0.286434890148457 5:0.430670102760569 6:1.37004485922407 7:6.8287634643728 8:8.89411346211159 9:2.80678839071605 10:0.605357508557104 13:0.844904909906825 24:0.280975743474508
+2 1:10.1915381429591 2:2.42394393185132 3:1.31667554647461 4:2.29625303602347 5:2.36007216312792 6:3.42029483139625 7:6.8287634643728 8:12.0919969541068 9:4.69453987473746 10:0.610050202421888 11:0.884425570049315 43:0.715678085420547
+6 1:6.49677119808711 2:2.95773663886551 3:2.23834842900684 4:0.639704587998222 5:0.964701030183674 6:0.0693693599607127 7:6.43753222422644 8:10.6929229263589 9:4.24744083904818 10:0.47474419598729 14:0.296673189340406 15:0.0931694990624912
+2 1:9.87388849611489 2:2.85272823748567 3:3.29168886618654 4:1.35101789853356 5:-0.396216494539723 6:2.89167461614008 7:5.29940498016431 8:10.0933197716098 9:4.66970103942139 10:0.222902958577228 11:0.884425570049315 43:0.715678085420547
+3 1:6.73417251309698 2:0.157512602069761 3:4.34502930336623 4:0.716087225371144 5:1.46427834938593 6:0.122038688819772 7:6.25969984234173 8:7.64494022305097 9:2.35968935502677 10:0.465358808257722 14:0.296673189340406 24:0.280975743474508
+7 1:11.3183584691327 2:2.52020163311617 3:1.31667554647461 4:1.0025221155196 5:0.620164947975219 6:1.42656804141429 7:6.86432994074974 8:11.9420961654195 9:4.62002336878925 10:1.945903722597 13:0.844904909906825 52:0.77919372247398
+2 1:9.72342287392553 2:1.05883471391339 3:3.95002663942384 4:0.606287184147568 5:1.15419587539832 6:3.34000622033061 7:9.03388499974318 8:10.0433528420474 9:1.2916194364357 10:0.30033240734616 11:0.884425570049315 44:0.445904036039959
+3 1:6.75757827654866 2:0.682554608968963 3:2.50168353830177 4:0.319852293999111 5:0.103360824662536 6:0.280688984285476 7:8.57152080684294 8:10.0933197716098 9:2.08646216654998 10:0.448152264086848 14:0.296673189340406 20:0.129459555600631
+1 1:10.6797154949512 2:0.656302508624003 3:1.44834310112208 4:1.63267887384621 5:1.03360824662536 6:0.655155066295619 7:8.32255547220435 8:10.942757574171 9:2.88130489666426 10:1.5783093698556 12:0.260796291926003 47:1.05184741228156
+2 1:9.50942732236734 3:1.18500799182715 6:2.47160460304465 7:7.32669413364998 8:11.0926583628583 9:3.82518063867497 10:4.92028951722576 11:0.884425570049315 34:0.169841555121689
+4 1:7.41293965319563 2:1.88140052472214 3:1.05334043717969 4:0.143217445074229 5:0.0516804123312682 6:0.71553210181698 7:7.57565946828857 8:12.3418316019189 9:4.22260200373211 10:0.222902958577228 14:0.296673189340406 15:0.0931694990624912
+1 1:10.3654095286001 2:0.533792707014189 3:1.31667554647461 4:0.429652335222686 5:0.413443298650146 6:3.37276397364539 7:8.1091566139427 8:10.9927245037334 9:3.08001557919283 10:0.664016181866901 11:0.884425570049315 43:0.715678085420547
+1 1:9.69667342998076 2:0.726308109543897 3:2.50168353830177 4:1.43217445074229 5:1.63654639049016 6:0.211961933213289 7:8.64265375959682 8:10.1432867011722 9:2.01194566060177 10:1.059766697797 11:0.884425570049315 43:0.715678085420547
+1 1:10.7231833413615 2:1.89015122483713 3:1.31667554647461 4:0.591965439640145 5:0.430670102760569 6:0.688555128498926 7:7.46896003915775 8:12.4917323906062 9:4.37163501562854 10:0.0969823398721975 13:0.844904909906825 46:0.674199862463242
+3 1:8.64341407465526 2:1.61012882115755 3:2.89668620224415 4:0.143217445074229 5:0.18949484521465 6:1.09834819937795 7:7.78905832655022 8:12.4417654610437 9:3.75066413272675 10:0.972169745654367 13:0.844904909906825 18:0.154303349962092
+1 1:10.2082565454246 2:0.761310910003844 3:3.68669153012892 4:1.32237440951871 5:2.22225773024453 6:1.38417565477163 7:8.78491966510459 8:9.04401425079886 9:1.06806991859106 10:2.04836087197811 13:0.844904909906825 47:1.05184741228156
+2 1:10.1714760600005 2:0.507540606669229 3:1.84334576506446 4:2.72113145641035 5:1.67099999871101 6:1.03154807497134 7:8.18028956669658 8:10.4430882785468 9:2.70743304945176 10:2.43081542195798 13:0.844904909906825 47:1.05184741228156
+2 1:9.58967565420166 2:3.0277422397854 3:1.31667554647461 4:0.429652335222686 5:0.516804123312682 6:1.07458277050252 7:7.14886175176527 8:11.2425591515455 9:4.02389132120354 10:1.02457149381112 13:0.844904909906825 46:0.674199862463242
+1 1:10.7298707023477 2:3.08024644047532 3:2.50168353830177 4:1.99072248653178 5:1.27478350417128 6:0.380246862006869 7:6.50866517698032 8:10.1432867011722 9:3.85001947399104 10:1.30926158827467 12:0.260796291926003 36:0.258530551913103
+2 1:10.0577909232352 2:1.27760221678806 3:1.58001065576954 4:2.14826167611343 5:0.155041236993805 6:3.35477932476669 7:8.42925490133517 8:11.8921292358571 9:3.22904859108926 10:2.36589982349514 11:0.884425570049315 44:0.445904036039959
+2 1:9.6465182225843 2:2.52020163311617 3:0.658337773237307 4:1.86182678596497 5:1.49873195760678 6:1.28975624815844 7:7.29112765727304 8:11.9420961654195 9:4.29711850968032 10:0.660887719290378 13:0.844904909906825 45:0.433012701892219
+3 1:7.45306381911279 2:3.11524924093527 3:4.47669685801369 4:0.405782761043648 5:0.551257731533528 6:0.732232132918634 7:5.15713907465654 8:7.89477487086309 9:3.35324276766962 10:0.451280726663371 14:0.296673189340406 24:0.280975743474508
+2 1:9.01121892889591 2:0.218767502874668 3:1.44834310112208 4:0.515582802267224 5:0.137814432883382 6:1.06815968161727 7:7.64679242104245 8:10.7928567854837 9:3.40292043830176 10:0.905689915903264 11:0.884425570049315 43:0.715678085420547
+2 1:9.70336079096695 2:0.105008401379841 3:2.89668620224415 4:0.606287184147568 5:0.396216494539723 6:1.6545876968407 7:6.8287634643728 8:9.49371661686068 9:3.17937092045712 10:0.911164725412178 13:0.844904909906825 47:1.05184741228156
+2 1:9.2352455219334 2:3.08024644047532 3:1.18500799182715 4:1.21734828313094 5:0.861340205521137 6:1.89609583892615 7:7.29112765727304 8:11.2425591515455 9:3.92453597993925 10:0.916639534921093 13:0.844904909906825 46:0.674199862463242
+2 1:10.0009483548526 2:0.595047607819096 3:0.395002663942384 4:1.27940917599644 5:0.551257731533528 6:3.0304133360615 7:7.89575775568105 8:11.6922615176074 9:3.67614762677854 10:4.49638283810696 11:0.884425570049315 26:0.228914278114955
+2 1:9.88726321808727 2:2.85272823748567 3:2.63335109294923 4:1.15528739026545 5:0.68907216441691 6:2.31231199869042 7:5.90403507857231 8:10.6429559967965 9:4.57034569815711 10:1.16300596282224 11:0.884425570049315 43:0.715678085420547
+1 1:11.0809571541228 2:1.44386551897281 3:3.81835908477638 4:2.53972269264966 5:2.91132989466144 6:0.928136343918794 7:8.21585604307352 8:11.6922615176074 9:2.78194955539998 10:1.24278175852356 12:0.260796291926003 47:1.05184741228156
+7 1:11.502260896253 2:2.66896353507095 3:1.711678210417 4:0.907043818803449 5:0.396216494539723 6:3.33229851366831 7:6.47309870060338 8:11.5923276584825 9:4.71937871005353 10:3.12064142008119 13:0.844904909906825 52:0.77919372247398
+2 1:9.32218121475391 2:0.236268903104641 3:1.05334043717969 4:0.286434890148457 5:0.068907216441691 6:2.04125764773282 7:7.71792537379634 8:11.1426252924207 9:3.52711461488211 10:1.95137853210591 11:0.884425570049315 34:0.169841555121689
+2 1:9.79029648378747 2:2.7652212363358 3:2.23834842900684 4:0.916591648475064 5:0.68907216441691 6:2.058599987723 7:6.15300041321091 8:11.1426252924207 9:4.71937871005353 10:1.47741645176275 11:0.884425570049315 43:0.715678085420547
+3 1:7.11535208931002 2:2.92273383840556 3:4.08169419407131 4:0.143217445074229 5:0.310082473987609 6:0.231231199869042 7:4.76590783451018 8:9.09398118036129 9:4.42131268626068 10:0.445023801510326 14:0.296673189340406 24:0.280975743474508
+2 1:8.94768899952707 2:1.19884591575318 3:1.58001065576954 4:0.143217445074229 5:0.0172268041104227 6:1.45033347028971 7:8.50038785408906 8:11.7422284471698 9:3.08001557919283 10:1.55406378488755 11:0.884425570049315 44:0.445904036039959
+2 1:9.37902378313656 2:0.700056009198937 3:1.18500799182715 4:0.907043818803449 5:0.120587628772959 6:1.38481796366015 7:8.28698899582741 8:11.1426252924207 9:3.03033790856069 10:1.8285863759774 11:0.884425570049315 26:0.228914278114955
+2 1:10.0979150891524 2:0.332526604369495 3:0.790005327884769 4:1.11709607157898 5:0.155041236993805 6:2.02327299885412 7:7.82462480292716 8:11.3424930106704 9:3.55195345019819 10:1.37495930238164 11:0.884425570049315 43:0.715678085420547
+3 1:7.64699728771241 2:2.57270583380609 3:4.87169952195607 4:0.959556881997333 5:2.04998968914031 6:0.787470697331794 7:3.34324877943251 8:10.1432867011722 9:5.83712629927674 10:0.514632093837951 14:0.296673189340406 24:0.280975743474508
+2 1:9.50273996138114 2:0.603798307934083 3:2.37001598365431 4:1.90956593432305 5:1.61931958637974 6:0.308950575380581 7:8.39368842495823 8:10.0933197716098 9:2.26033401376248 10:1.17708404441659 11:0.884425570049315 44:0.445904036039959
+1 1:10.6529660510064 2:2.57270583380609 3:2.89668620224415 4:1.72338325572655 5:1.87772164803608 6:2.83129758061872 7:5.47723736204901 8:11.4424268697952 9:5.29067192232317 10:0.987029942892849 11:0.884425570049315 43:0.715678085420547
+2 1:9.67661134702218 2:2.81772543702572 3:2.10668087435938 4:0.20050442310392 5:0.206721649325073 6:3.1736482182026 7:6.33083279509561 8:11.0926583628583 9:4.57034569815711 10:1.16222384717811 11:0.884425570049315 37:0.418600747852556
+2 1:10.2818175162727 2:2.14392152817174 3:1.31667554647461 4:0.515582802267224 5:0.137814432883382 6:3.59307592240951 7:7.11329527538833 8:12.3917985314813 9:4.59518453347318 10:1.72143653273151 11:0.884425570049315 37:0.418600747852556
+2 1:9.48267787842256 2:0.393781505174402 3:1.58001065576954 4:3.33219255539372 5:1.70545360693185 6:1.98473446554261 7:7.93132423205799 8:10.6929229263589 9:3.05517674387676 10:1.21775405791138 13:0.844904909906825 46:0.674199862463242
+1 1:10.6930902169236 2:0.367529404829442 3:0.92167288253223 4:2.86434890148458 5:0.396216494539723 6:2.56602400965784 7:7.8601912793041 8:11.2425591515455 9:3.4525981089339 10:3.23952299798905 11:0.884425570049315 43:0.715678085420547
+2 1:10.6830591754443 2:0.787563010348804 3:1.05334043717969 4:1.79499197826367 5:1.29201030828171 6:3.3091753936814 7:8.25142251945046 8:11.3924599402328 9:3.20420975577319 10:1.92947929407025 11:0.884425570049315 36:0.258530551913103
+2 1:10.9338352124266 2:2.1701736285167 3:1.05334043717969 4:3.62340136037799 5:3.44536082208455 6:3.99516128662623 7:7.2555611808961 8:12.2918646723565 9:4.47099035689282 10:1.5399857032932 11:0.884425570049315 43:0.715678085420547
+2 1:8.31907706682487 2:0.647551808509017 3:3.81835908477638 4:1.52287883262263 5:2.42897937956961 6:0.370612228678993 7:8.50038785408906 8:8.54434495517462 9:1.04323108327499 10:0.619435590151455 13:0.844904909906825 24:0.280975743474508
+1 1:11.1946422908881 2:0.682554608968963 3:2.76501864759669 4:0.959556881997333 5:1.08528865895663 6:1.15744061712226 7:8.60708728321988 8:9.84348512379766 9:1.88775148402141 10:1.42266835667361 11:0.884425570049315 53:1
+1 1:10.7733385487579 2:0.385030805059415 3:1.84334576506446 4:1.77112240408463 5:1.42982474116509 6:3.09400191602549 7:7.89575775568105 8:10.4930552081092 9:2.95582140261248 10:2.55438969373062 11:0.884425570049315 43:0.715678085420547
+2 1:10.5727177191721 2:0.796313710463791 3:2.50168353830177 4:2.45379222560512 5:0.930247421962828 6:3.40680634473722 7:8.74935318872765 8:10.3431544194219 9:2.06162333123391 10:0.879097984002823 11:0.884425570049315 43:0.715678085420547
+2 1:9.92070002301824 2:1.16384311529323 3:2.63335109294923 4:1.99549640136759 5:2.8768762864406 6:0.269769733180549 7:8.78491966510459 8:11.292526081108 9:2.43420586097498 10:0.891611834308913 11:0.884425570049315 43:0.715678085420547
+2 1:10.0109793963319 2:0.577546207589123 3:2.37001598365431 4:2.11484427226278 5:2.99746391521356 6:0.246646613193645 7:8.35812194858129 8:10.0433528420474 9:2.28517284907855 10:0.540441910094262 13:0.844904909906825 47:1.05184741228156
+2 1:9.89060689858037 2:2.66896353507095 3:1.05334043717969 4:1.41785270623486 5:0.465123710981414 6:2.4471968652807 7:7.07772879901139 8:11.7921953767322 9:4.37163501562854 10:0.634295787389937 11:0.884425570049315 43:0.715678085420547
+1 1:10.8937110465094 2:0.455036405979309 3:2.37001598365431 4:1.21734828313094 5:1.20587628772959 6:1.14909060157143 7:8.03802366118881 8:9.84348512379766 9:2.43420586097498 10:1.74411788641129 11:0.884425570049315 53:1
+1 1:10.6395913290341 2:2.66896353507095 3:1.31667554647461 4:0.868852500116988 5:0.120587628772959 6:0.38410071533802 7:6.89989641712668 8:11.7422284471698 9:4.49582919220889 10:1.00267225577546 13:0.844904909906825 37:0.418600747852556
+1 1:10.9873341003161 2:2.97523803909548 3:1.58001065576954 4:1.03116560453445 5:1.42982474116509 6:3.16208665820915 7:6.93546289350362 8:11.1426252924207 9:4.12324666246782 10:0.0743009861924094 11:0.884425570049315 52:0.77919372247398
+2 1:9.17840295355075 2:2.64271143472599 3:3.02835375689161 4:0.143217445074229 5:0.172268041104227 6:0.816374597315424 7:5.29940498016431 8:11.0926583628583 9:5.24099425169103 10:1.14579941865137 13:0.844904909906825 27:0.184010991918219
+1 1:10.6997775779098 2:0.236268903104641 3:1.58001065576954 4:0.319852293999111 6:0.835643863971177 7:7.64679242104245 8:10.7428898559213 9:3.35324276766962 10:1.18959789472268 11:0.884425570049315 43:0.715678085420547
+2 1:9.81704592773224 2:1.56637532058262 3:2.10668087435938 4:0.319852293999111 5:0.223948453435496 6:2.37333134310031 7:8.00245718481187 8:12.3917985314813 9:3.75066413272675 10:1.53685724071668 11:0.884425570049315 26:0.228914278114955
+1 1:10.636247648541 2:2.66021283495596 3:0.658337773237307 4:0.429652335222686 5:0.155041236993805 6:1.74451094123422 7:7.32669413364998 8:11.8421623062946 9:4.24744083904818 10:0.95027050761871 13:0.844904909906825 37:0.418600747852556
+2 1:9.10484198270262 2:0.71755740942891 3:1.31667554647461 4:1.28895700566806 5:0.258402061656341 6:0.680847421836624 7:8.32255547220435 8:11.0926583628583 9:2.95582140261248 10:1.71439749193433 11:0.884425570049315 43:0.715678085420547
+7 1:11.432043605898 2:2.69521563541591 3:1.58001065576954 4:1.27940917599644 5:0.430670102760569 6:3.23659448927806 7:6.68649755886503 8:11.5923276584825 9:4.59518453347318 10:3.12298776701359 13:0.844904909906825 52:0.77919372247398
+1 1:10.6496223705133 2:0.805064410578777 3:2.63335109294923 4:0.907043818803449 5:1.03360824662536 6:0.962178715010625 7:8.74935318872765 8:10.2931874898595 9:1.9871068252857 10:2.00143393333027 11:0.884425570049315 43:0.715678085420547
+1 1:10.9906777808092 2:2.97523803909548 3:1.44834310112208 4:0.716087225371144 5:0.3789896904293 6:1.33664479702077 7:7.0065958462575 8:11.1925922219831 9:4.12324666246782 10:2.08120972903159 11:0.884425570049315 43:0.715678085420547
+2 1:9.32552489524701 2:0.962577012648538 3:1.31667554647461 4:0.716087225371144 5:0.172268041104227 6:1.38738719921425 7:8.42925490133517 8:11.4923937993577 9:3.05517674387676 10:1.11295056159788 11:0.884425570049315 26:0.228914278114955
+2 1:9.13493510714049 2:1.16384311529323 3:1.18500799182715 4:0.606287184147568 5:0.327309278098032 6:1.29874857259779 7:8.35812194858129 8:11.7921953767322 9:3.2787262617214 10:2.20634823209249 11:0.884425570049315 44:0.445904036039959
+2 1:9.99091731337328 2:2.99273943932546 3:1.05334043717969 4:0.453521909401724 5:0.206721649325073 6:2.42021989196264 7:7.21999470451915 8:11.3924599402328 9:4.07356899183568 10:0.791501031860193 11:0.884425570049315 43:0.715678085420547
+1 1:10.2818175162727 2:1.01508121333846 3:3.68669153012892 4:1.0025221155196 5:0.861340205521137 6:1.56851830577834 7:9.03388499974318 8:10.0933197716098 9:1.36613594238392 10:1.27484849993292 13:0.844904909906825 41:0.0982155906707477
+1 1:10.6262166070617 2:0.271271703564588 3:0.526670218589846 4:0.453521909401724 5:0.327309278098032 6:2.89552846947123 7:7.78905832655022 8:11.4923937993577 9:3.67614762677854 10:2.47930659189408 11:0.884425570049315 37:0.418600747852556
+1 1:10.8569305610853 2:0.411282905404375 3:1.31667554647461 4:3.16987945097626 5:0.964701030183674 6:2.36626594532653 7:7.96689070843493 8:10.942757574171 9:3.20420975577319 10:1.9255687158496 11:0.884425570049315 37:0.418600747852556
+1 1:9.57630093222927 2:2.85272823748567 3:0.658337773237307 4:0.143217445074229 6:1.64623768128988 7:7.32669413364998 8:11.6922615176074 9:4.12324666246782 10:0.241673734036363 13:0.844904909906825 37:0.418600747852556
+2 1:9.11487302418191 2:0.0787563010348804 3:1.97501331971192 6:2.23395031429036 7:7.18442822814221 8:10.4430882785468 9:3.52711461488211 10:4.61839287859134 11:0.884425570049315 44:0.445904036039959
+2 1:10.9070857684818 2:1.57512602069761 3:2.23834842900684 4:0.716087225371144 5:0.223948453435496 6:2.15109246767062 7:7.96689070843493 8:12.3917985314813 9:3.75066413272675 10:1.04256015362612 13:0.844904909906825 46:0.674199862463242
+2 1:9.83376433019773 2:0.463787106094296 3:1.44834310112208 4:1.47513968426456 5:1.94662886447777 6:2.28533502537237 7:8.07359013756576 8:10.7428898559213 9:3.00549907324462 10:1.80434079100935 11:0.884425570049315 43:0.715678085420547
+1 1:10.5192188312826 2:2.82647613714071 3:3.16002131153908 4:1.01206994519122 5:1.27478350417128 6:2.78055517842523 7:5.40610440929513 8:10.3431544194219 9:4.7442175453696 10:0.846249126949336 11:0.884425570049315 36:0.258530551913103
+2 1:10.0611346037283 2:1.89890192495212 3:1.84334576506446 4:0.515582802267224 5:0.430670102760569 6:1.86911886560809 7:7.2555611808961 8:12.6416331792934 9:4.52066802752496 10:0.336309726976169 13:0.844904909906825 46:0.674199862463242
+1 1:10.7332143828408 2:2.05641452702188 3:0.526670218589846 4:2.29625303602347 5:0.49957731920226 6:3.76842624897686 7:7.57565946828857 8:12.1419638836692 9:4.14808549778389 10:1.8669100425398 11:0.884425570049315 36:0.258530551913103
+2 1:10.4857820263516 2:2.03016242667692 3:1.711678210417 4:1.86660070080078 5:1.20587628772959 6:0.215173477655914 7:7.04216232263445 8:12.5416993201686 9:4.69453987473746 10:0.515414209482082 13:0.844904909906825 46:0.674199862463242
+6 1:7.60687312179525 2:0.498789906554243 3:4.08169419407131 4:0.515582802267224 5:1.01638144251494 6:0.373823773121618 7:7.96689070843493 8:7.99470872998794 9:1.16742525985535 10:0.771948140756927 14:0.296673189340406 15:0.0931694990624912
+1 1:10.5927798021307 2:0.551294107244163 3:1.44834310112208 4:1.32237440951871 5:0.947474226073251 6:2.38553521198229 7:8.18028956669658 8:10.8927906446086 9:3.00549907324462 10:2.54735065293345 11:0.884425570049315 43:0.715678085420547
+3 1:8.23548505449745 2:1.60137812104257 3:2.63335109294923 4:1.14573956059383 5:-1.48150515349636 6:0.809309199541648 7:7.8601912793041 8:12.4417654610437 9:3.8003418033589 10:1.24747445238835 13:0.844904909906825 18:0.154303349962092
+3 1:8.36923227422132 2:1.21634731598315 3:1.97501331971192 4:0.143217445074229 5:-0.120587628772959 6:0.856197748403981 7:8.60708728321988 8:11.6922615176074 9:2.90614373198033 10:0.615525011930802 13:0.844904909906825 17:0.119629720910916
+1 1:9.75017231787031 2:1.96890752587201 3:0.395002663942384 6:3.25008297593709 7:7.64679242104245 8:12.0919969541068 9:4.07356899183568 10:2.73036571366001 11:0.884425570049315 30:0.0826662747682189
+2 1:11.0140835442609 2:1.47886831943275 3:3.02835375689161 4:2.86434890148458 5:0.413443298650146 6:2.4934431052545 7:8.18028956669658 8:12.0919969541068 9:3.22904859108926 10:1.11295056159788 13:0.844904909906825 47:1.05184741228156
+3 1:7.58681103883667 2:2.84397753737068 3:3.29168886618654 4:0.20050442310392 5:0.223948453435496 6:0.579362617449656 7:5.37053793291819 8:10.1932536307346 9:4.69453987473746 10:0.410610713168578 14:0.296673189340406 24:0.280975743474508
+2 1:9.05803045579927 2:0.621299708164057 3:3.95002663942384 4:1.59926146999555 5:3.13527834809694 6:0.640381961859542 7:8.39368842495823 8:8.29451030736249 9:0.943875742010707 10:0.72502120210909 13:0.844904909906825 27:0.184010991918219
+2 1:10.8134627146751 2:0.682554608968963 3:2.23834842900684 4:1.14573956059383 5:0.0172268041104227 6:1.18955606154852 7:8.535954330466 8:10.2931874898595 9:2.26033401376248 10:1.17630192877246 11:0.884425570049315 43:0.715678085420547
+2 1:9.30546281228843 2:1.23384871621313 3:0.395002663942384 6:1.45033347028971 7:8.00245718481187 8:11.8921292358571 9:3.70098646209461 10:1.08088382018852 11:0.884425570049315 37:0.418600747852556
+2 1:10.2851611967658 2:0.358778704714455 3:0.658337773237307 4:1.49423534360779 5:0.482350515091837 6:1.82158800785723 7:7.8601912793041 8:11.4424268697952 9:3.57679228551426 10:1.2615525339827 13:0.844904909906825 46:0.674199862463242
+3 1:7.95461589307732 2:0.910072811958618 3:2.23834842900684 4:0.143217445074229 5:0.155041236993805 6:0.673139715174323 7:8.78491966510459 8:10.7928567854837 9:2.28517284907855 10:0.644463290763635 14:0.296673189340406 20:0.129459555600631
+2 1:10.9171168099611 2:2.38019043127639 3:1.05334043717969 4:3.58998395652733 5:2.70460824533637 6:3.92900347110814 7:7.07772879901139 8:12.1419638836692 9:4.52066802752496 10:2.04132183118093 11:0.884425570049315 43:0.715678085420547
+1 1:10.9906777808092 2:2.18767502874668 3:0.92167288253223 4:0.286434890148457 5:0.465123710981414 6:3.67207991569809 7:7.29112765727304 8:12.241897742794 9:4.44615152157675 10:0.640552712542982 11:0.884425570049315 52:0.77919372247398
+2 1:10.6529660510064 2:2.18767502874668 3:0.658337773237307 4:0.606287184147568 5:0.0172268041104227 6:2.16650788099522 7:7.4333935627808 8:12.1419638836692 9:4.27227967436425 10:1.10903998337723 13:0.844904909906825 46:0.674199862463242
+1 1:10.4490015409275 2:0.288773103794562 3:1.31667554647461 4:0.143217445074229 5:0.0516804123312682 6:2.50050850302828 7:7.75349185017328 8:10.8927906446086 9:3.35324276766962 10:0.0664798297511031 13:0.844904909906825 37:0.418600747852556
+1 1:9.81704592773224 2:0.735058809658884 3:1.18500799182715 6:2.91287080946141 7:8.28698899582741 8:11.2425591515455 9:3.1048544145089 10:2.91025231181006 11:0.884425570049315 37:0.418600747852556
+2 1:9.19846503650933 2:1.09383751437334 3:4.08169419407131 4:0.606287184147568 5:1.37814432883382 6:0.991082614994256 7:8.99831852336624 8:10.0433528420474 9:1.24194176580356 10:1.20367597631703 13:0.844904909906825 27:0.184010991918219
+1 1:10.3754405700794 3:2.63335109294923 4:0.811565522087296 5:0.792432989079446 6:2.83450912506134 7:6.65093108248809 8:9.94341898292251 9:3.6264699561464 10:2.25640363331685 11:0.884425570049315 43:0.715678085420547
+2 1:9.53283308581901 2:0.323775904254508 3:2.23834842900684 4:1.88569636014401 5:1.06806185484621 6:0.995578777213932 7:7.71792537379634 8:10.0933197716098 9:2.85646606134819 10:2.17271725939488 13:0.844904909906825 47:1.05184741228156
+2 1:9.91401266203205 2:1.33010641747798 3:0.92167288253223 4:0.716087225371144 6:1.08357509494187 7:8.14472309031964 8:11.9920630949819 9:3.57679228551426 10:0.922114344430007 11:0.884425570049315 43:0.715678085420547
+2 1:10.1514139770419 2:2.49394953277121 3:2.50168353830177 4:2.82138366796231 5:3.08359793576567 6:1.9076573989196 7:5.86846860219537 8:11.7921953767322 9:5.21615541637496 10:0.441113223289673 13:0.844904909906825 46:0.674199862463242
+2 1:10.2450370308486 2:0.69130530908395 3:0.790005327884769 4:1.32237440951871 5:0.602938143864796 6:0.828578466197401 7:8.1091566139427 8:11.4424268697952 9:3.35324276766962 10:2.18288476276858 11:0.884425570049315 43:0.715678085420547
+1 1:10.4891257068447 2:0.551294107244163 3:1.58001065576954 4:0.716087225371144 5:0.0861340205521137 6:1.39573721476508 7:8.18028956669658 8:10.7428898559213 9:2.88130489666426 10:2.03193644345136 11:0.884425570049315 43:0.715678085420547
+2 1:9.42249162954682 2:0.0962577012648538 3:1.97501331971192 4:0.453521909401724 5:0.465123710981414 6:2.53133932967749 7:7.18442822814221 8:10.3931213489843 9:3.47743694424997 10:4.20308947155798 11:0.884425570049315 43:0.715678085420547
+2 1:9.73345391540482 2:2.09141732748182 3:3.55502397548146 4:0.143217445074229 5:0.206721649325073 6:3.64124908904889 7:5.69063622031066 8:12.4917323906062 9:5.41486609890353 10:0.829824698422593 11:0.884425570049315 43:0.715678085420547
+1 1:10.1046024501386 2:0.472537806209282 3:3.29168886618654 4:2.26283563217281 5:3.91048453306596 6:0.310877502046157 7:8.03802366118881 8:8.89411346211159 9:1.78839614275713 10:1.13484979963354 11:0.884425570049315 44:0.445904036039959
+1 1:9.83710801069082 2:0.140011201839787 3:1.18500799182715 4:0.143217445074229 5:0.068907216441691 6:1.18313297266327 7:7.54009299191163 8:11.0926583628583 9:3.6264699561464 10:1.97484200142983 13:0.844904909906825 37:0.418600747852556
+2 1:9.91066898153895 2:2.95773663886551 3:2.63335109294923 4:0.286434890148457 5:0.3789896904293 6:0.965390259453251 7:6.11743393683396 8:10.3431544194219 9:4.24744083904818 10:1.04177803798199 13:0.844904909906825 37:0.418600747852556
+3 1:7.72055825856054 2:3.12399994105026 3:3.68669153012892 4:0.773374203400835 5:1.41259793705466 6:0.813163052872798 7:5.83290212581843 8:8.79417960298674 9:3.47743694424997 10:0.518542672058604 14:0.296673189340406 24:0.280975743474508
+2 1:10.0678219647145 2:0.0175014002299734 3:0.790005327884769 4:3.07440115426011 5:2.94578350288229 6:3.5468296824357 7:7.54009299191163 8:11.4424268697952 9:3.82518063867497 10:4.08029731542947 11:0.884425570049315 26:0.228914278114955
+1 1:11.0608950711643 2:2.80022403679575 3:0.92167288253223 4:0.453521909401724 5:0.654618556196064 6:3.84678793337693 7:7.14886175176527 8:11.6422945880449 9:4.24744083904818 10:0.471615733410767 11:0.884425570049315 52:0.77919372247398
diff --git a/data/example4_train.mat b/data/example4_train.mat
new file mode 100644
index 0000000..2898852
Binary files /dev/null and b/data/example4_train.mat differ
diff --git a/data/gender_images.mat b/data/gender_images.mat
new file mode 100644
index 0000000..5d9fc00
Binary files /dev/null and b/data/gender_images.mat differ
diff --git a/data/lena.jpg b/data/lena.jpg
new file mode 100644
index 0000000..d758101
Binary files /dev/null and b/data/lena.jpg differ
diff --git a/data/refernce_solution.mat b/data/refernce_solution.mat
new file mode 100644
index 0000000..ad939e0
Binary files /dev/null and b/data/refernce_solution.mat differ
diff --git a/data/riply_trn.light b/data/riply_trn.light
new file mode 100644
index 0000000..7988c07
--- /dev/null
+++ b/data/riply_trn.light
@@ -0,0 +1,250 @@
++1 1:0.051008 2:0.160862
++1 1:-0.748074 2:0.089040
++1 1:-0.772934 2:0.263172
++1 1:0.218374 2:0.127061
++1 1:0.372683 2:0.496562
++1 1:-0.629315 2:0.632022
++1 1:-0.433072 2:0.144792
++1 1:-0.841520 2:-0.191313
++1 1:0.475256 2:0.224837
++1 1:0.320830 2:0.327213
++1 1:0.320613 2:0.334075
++1 1:-0.890775 2:0.411688
++1 1:0.178501 2:0.446914
++1 1:0.315580 2:0.388534
++1 1:0.557772 2:0.472727
++1 1:0.031919 2:0.012230
++1 1:0.250906 2:0.307167
++1 1:0.235715 2:0.224938
++1 1:-0.072362 2:0.333765
++1 1:0.504402 2:0.080546
++1 1:-0.632234 2:0.445525
++1 1:-0.767847 2:0.236147
++1 1:-0.700176 2:0.210388
++1 1:-0.647135 2:0.159214
++1 1:-0.767392 2:0.092590
++1 1:-0.517887 2:0.032881
++1 1:0.175166 2:0.345349
++1 1:-0.680312 2:0.476122
++1 1:0.015952 2:0.321675
++1 1:-0.714811 2:0.514214
++1 1:0.078379 2:0.322850
++1 1:-0.808723 2:0.470366
++1 1:-0.842112 2:0.092942
++1 1:-0.985916 2:0.483093
++1 1:0.291041 2:0.342760
++1 1:0.243215 2:0.514883
++1 1:-0.601044 2:0.050601
++1 1:-1.246525 2:0.459232
++1 1:-0.827690 2:0.361875
++1 1:-0.621173 2:-0.109122
++1 1:-0.705841 2:0.659077
++1 1:0.067189 2:0.605749
++1 1:0.305051 2:0.474180
++1 1:0.607881 2:0.393616
++1 1:-0.789375 2:0.175917
++1 1:-0.531232 2:0.426528
++1 1:0.252021 2:0.170297
++1 1:-0.578804 2:0.265537
++1 1:-0.831767 2:0.544474
++1 1:-0.698592 2:0.385669
++1 1:-0.736426 2:0.118575
++1 1:-0.934962 2:0.113707
++1 1:0.439593 2:0.414306
++1 1:-0.546909 2:0.249563
++1 1:-0.084056 2:0.365211
++1 1:0.322115 2:0.690871
++1 1:0.107647 2:0.579469
++1 1:-0.718640 2:0.256458
++1 1:-0.878778 2:0.450648
++1 1:-0.698460 2:0.950539
++1 1:0.397574 2:0.118102
++1 1:-0.504514 2:0.571964
++1 1:0.250236 2:0.397839
++1 1:0.617092 2:0.101858
++1 1:0.318329 2:0.087906
++1 1:-0.574534 2:0.186242
++1 1:0.097619 2:0.551768
++1 1:0.484493 2:0.353730
++1 1:0.524007 2:0.466169
++1 1:-0.781385 2:-0.075347
++1 1:-0.497046 2:0.599481
++1 1:-0.969845 2:0.466249
++1 1:0.435414 2:0.121924
++1 1:-0.679425 2:0.307539
++1 1:-0.625290 2:0.070990
++1 1:-0.023181 2:0.404426
++1 1:0.232001 2:0.710668
++1 1:0.093844 2:0.466744
++1 1:0.142343 2:0.178987
++1 1:-0.616864 2:0.255078
++1 1:0.236363 2:0.515438
++1 1:0.389142 2:0.404296
++1 1:-0.951787 2:-0.037722
++1 1:0.240878 2:0.719489
++1 1:0.124463 2:0.451788
++1 1:-0.605664 2:0.269065
++1 1:-0.713972 2:0.308718
++1 1:0.310084 2:0.346753
++1 1:0.180188 2:0.462046
++1 1:-0.426639 2:0.647232
++1 1:0.061432 2:0.324912
++1 1:0.077370 2:0.321833
++1 1:0.428150 2:0.134460
++1 1:-0.802508 2:0.668790
++1 1:0.401426 2:0.425164
++1 1:0.370848 2:0.264071
++1 1:-0.807747 2:0.414859
++1 1:0.501636 2:0.239349
++1 1:0.582383 2:0.228427
++1 1:-0.591361 2:0.302303
++1 1:-0.870372 2:0.269414
++1 1:-0.720868 2:0.196767
++1 1:0.277784 2:0.217923
++1 1:0.332408 2:0.273499
++1 1:-0.140921 2:0.392474
++1 1:-0.597595 2:0.147903
++1 1:-0.855815 2:0.145140
++1 1:-0.889122 2:0.268960
++1 1:0.213457 2:0.436118
++1 1:-0.534679 2:0.579012
++1 1:0.316868 2:0.397059
++1 1:-0.681217 2:0.042098
++1 1:-0.975861 2:0.459648
++1 1:0.414572 2:0.271412
++1 1:0.327513 2:0.367801
++1 1:-0.932092 2:0.093620
++1 1:0.583953 2:0.471473
++1 1:-0.444373 2:0.230101
++1 1:0.291094 2:0.193656
++1 1:-0.510807 2:0.414960
++1 1:-0.965975 2:0.179311
++1 1:0.187413 2:0.297471
++1 1:0.179654 2:0.451754
++1 1:-0.726896 2:0.357284
++1 1:-0.543399 2:0.410120
+-1 1:-0.598234 2:0.987014
+-1 1:-0.201947 2:0.621017
+-1 1:0.471461 2:0.482211
+-1 1:-0.098220 2:0.587556
+-1 1:-0.356577 2:0.637097
+-1 1:0.638814 2:0.421121
+-1 1:0.629806 2:0.281461
+-1 1:-0.462233 2:0.616610
+-1 1:-0.073316 2:0.558217
+-1 1:-0.554055 2:0.512531
+-1 1:-0.437618 2:0.878118
+-1 1:-0.222378 2:0.888508
+-1 1:0.093462 2:0.673105
+-1 1:0.531747 2:0.543727
+-1 1:0.402075 2:0.516385
+-1 1:0.475552 2:0.650563
+-1 1:-0.233833 2:0.636426
+-1 1:-0.315793 2:0.750313
+-1 1:-0.473517 2:0.638541
+-1 1:0.592395 2:0.892570
+-1 1:-0.226053 2:0.797895
+-1 1:-0.439950 2:0.520993
+-1 1:-0.546450 2:0.745772
+-1 1:0.464043 2:0.510652
+-1 1:-0.151943 2:0.812184
+-1 1:0.485364 2:0.820181
+-1 1:0.347256 2:0.708138
+-1 1:0.438970 2:0.628172
+-1 1:-0.214159 2:0.643640
+-1 1:0.573802 2:0.637135
+-1 1:0.387174 2:0.585784
+-1 1:0.320383 2:0.535291
+-1 1:-0.207815 2:0.651325
+-1 1:-0.186513 2:0.817548
+-1 1:0.247527 2:0.390819
+-1 1:0.660499 2:0.899192
+-1 1:-0.286588 2:0.733759
+-1 1:-0.325881 2:0.398655
+-1 1:-0.252046 2:0.673583
+-1 1:0.372590 2:0.497859
+-1 1:-0.290966 2:1.043721
+-1 1:-0.304698 2:0.868583
+-1 1:-0.213900 2:1.093178
+-1 1:-0.368300 2:0.756395
+-1 1:-0.469282 2:0.887751
+-1 1:0.393501 2:0.779752
+-1 1:-0.456400 2:0.805235
+-1 1:0.511282 2:0.766061
+-1 1:0.225505 2:0.464512
+-1 1:0.014630 2:0.401909
+-1 1:-0.191728 2:0.809433
+-1 1:0.383235 2:0.756017
+-1 1:0.497916 2:0.613344
+-1 1:0.353352 2:0.773243
+-1 1:-0.347226 2:0.701779
+-1 1:0.583805 2:0.763575
+-1 1:-0.137278 2:0.712464
+-1 1:0.388273 2:0.449771
+-1 1:-0.531727 2:0.619343
+-1 1:-0.116846 2:0.878512
+-1 1:0.543359 2:0.411749
+-1 1:-0.453993 2:0.665130
+-1 1:-0.219132 2:0.834849
+-1 1:0.304857 2:0.980288
+-1 1:0.656768 2:0.757660
+-1 1:0.614204 2:0.750390
+-1 1:-0.458100 2:0.779686
+-1 1:-0.216175 2:0.886263
+-1 1:-0.260161 2:0.810086
+-1 1:0.318845 2:0.845177
+-1 1:-0.237274 2:0.801788
+-1 1:0.583103 2:0.777098
+-1 1:0.028413 2:0.757926
+-1 1:-0.418401 2:0.680414
+-1 1:0.674129 2:0.602455
+-1 1:-0.252783 2:0.705261
+-1 1:0.516098 2:0.620924
+-1 1:0.203923 2:0.916415
+-1 1:-0.172071 2:1.008841
+-1 1:0.272745 2:0.293470
+-1 1:0.076348 2:0.562222
+-1 1:-0.366535 2:0.648310
+-1 1:0.442907 2:0.800877
+-1 1:-0.199764 2:0.542952
+-1 1:-0.540757 2:0.652930
+-1 1:-0.070603 2:1.002969
+-1 1:0.507151 2:0.350458
+-1 1:-0.060486 2:0.629827
+-1 1:0.215329 2:0.602602
+-1 1:0.468091 2:0.871824
+-1 1:-0.298885 2:0.736699
+-1 1:0.861296 2:0.472893
+-1 1:0.701209 2:0.745729
+-1 1:-0.113428 2:0.600671
+-1 1:0.312344 2:0.907563
+-1 1:-0.121725 2:0.841129
+-1 1:0.368679 2:0.370526
+-1 1:0.573115 2:0.409497
+-1 1:-0.258412 2:0.671923
+-1 1:0.309372 2:0.508233
+-1 1:0.433193 2:0.770170
+-1 1:-0.304480 2:0.578201
+-1 1:0.442763 2:0.580234
+-1 1:-0.194421 2:0.898768
+-1 1:-0.061052 2:0.741849
+-1 1:0.076193 2:0.353862
+-1 1:0.858270 2:0.958195
+-1 1:0.370392 2:0.723424
+-1 1:0.514815 2:0.762040
+-1 1:0.431275 2:0.542592
+-1 1:0.422861 2:0.652422
+-1 1:0.298150 2:0.934537
+-1 1:0.371283 2:0.700892
+-1 1:-0.515287 2:0.764735
+-1 1:0.385258 2:0.655282
+-1 1:-0.348254 2:0.505300
+-1 1:0.685105 2:0.780674
+-1 1:-0.365289 2:0.457033
+-1 1:-0.409036 2:0.742304
+-1 1:0.435744 2:0.446898
+-1 1:0.268878 2:0.445592
+-1 1:-0.492549 2:1.014434
+-1 1:0.076160 2:0.637952
+-1 1:0.492262 2:0.468762
+-1 1:-0.402496 2:0.713011
diff --git a/data/riply_trn.mat b/data/riply_trn.mat
new file mode 100644
index 0000000..dfb1502
Binary files /dev/null and b/data/riply_trn.mat differ
diff --git a/data/riply_tst.light b/data/riply_tst.light
new file mode 100644
index 0000000..c8bb1b1
--- /dev/null
+++ b/data/riply_tst.light
@@ -0,0 +1,1000 @@
++1 1:-0.970990 2:0.429425
++1 1:-0.631997 2:0.251953
++1 1:-0.773606 2:0.690751
++1 1:-0.606212 2:0.175678
++1 1:-0.539409 2:0.376744
++1 1:-0.960326 2:0.110041
++1 1:-1.041376 2:0.328508
++1 1:-0.822601 2:0.175874
++1 1:-0.943715 2:-0.180633
++1 1:-0.968763 2:0.296070
++1 1:-0.853638 2:0.644011
++1 1:-0.771995 2:0.476345
++1 1:-0.718953 2:0.090458
++1 1:-0.539521 2:0.447838
++1 1:-0.540093 2:0.551067
++1 1:-0.792923 2:0.531236
++1 1:-0.861473 2:0.287353
++1 1:-0.470132 2:0.544251
++1 1:-0.770684 2:0.482733
++1 1:-0.803031 2:0.228632
++1 1:-0.962521 2:0.367760
++1 1:-0.681960 2:0.495355
++1 1:-0.433008 2:0.213646
++1 1:-0.336832 2:0.293615
++1 1:-0.696425 2:0.315194
++1 1:-0.355767 2:0.269795
++1 1:-0.547898 2:0.277055
++1 1:-0.799664 2:0.292931
++1 1:-0.780012 2:0.038438
++1 1:-0.853938 2:0.198424
++1 1:-0.896295 2:0.286916
++1 1:-0.824028 2:0.295232
++1 1:-0.901076 2:0.321018
++1 1:-0.556719 2:0.358145
++1 1:-0.871005 2:0.258993
++1 1:-0.800820 2:0.363123
++1 1:-0.699003 2:0.417050
++1 1:-0.759409 2:0.366156
++1 1:-0.775268 2:0.306717
++1 1:-0.893577 2:-0.096908
++1 1:-0.284857 2:0.307321
++1 1:-0.665572 2:0.365821
++1 1:-0.741374 2:0.298498
++1 1:-0.767733 2:0.245811
++1 1:-0.779306 2:0.319093
++1 1:-0.892191 2:0.201460
++1 1:-0.122812 2:0.516497
++1 1:-0.731731 2:0.055993
++1 1:-1.011976 2:0.344692
++1 1:-0.573762 2:0.059677
++1 1:-0.641425 2:0.333731
++1 1:-0.985902 2:0.162021
++1 1:-0.661141 2:0.136840
++1 1:-0.749218 2:0.185149
++1 1:-0.540330 2:0.387397
++1 1:-0.592093 2:0.447510
++1 1:-0.860077 2:0.218918
++1 1:-0.867517 2:-0.137492
++1 1:-0.590056 2:0.466005
++1 1:-0.775966 2:0.403400
++1 1:-0.849687 2:0.315467
++1 1:-0.746283 2:0.256243
++1 1:-0.700855 2:0.518361
++1 1:-0.923680 2:0.449453
++1 1:-0.912093 2:0.407980
++1 1:-0.650766 2:0.412201
++1 1:-0.980330 2:0.299282
++1 1:-0.744409 2:0.203087
++1 1:-0.604171 2:0.326157
++1 1:-0.735903 2:0.655288
++1 1:-0.643608 2:0.513819
++1 1:-0.963377 2:0.249001
++1 1:-0.426981 2:0.282178
++1 1:-0.654763 2:0.562181
++1 1:-0.843492 2:0.345422
++1 1:-0.553968 2:0.538960
++1 1:-0.716946 2:0.122102
++1 1:-0.775329 2:0.498892
++1 1:-0.640290 2:0.435762
++1 1:-0.516879 2:0.182337
++1 1:-0.952125 2:0.298281
++1 1:-0.723018 2:0.256183
++1 1:-0.658805 2:0.269147
++1 1:-0.464553 2:0.218324
++1 1:-0.564517 2:0.196511
++1 1:-0.814097 2:0.228304
++1 1:-0.396184 2:0.511766
++1 1:-0.996637 2:0.209223
++1 1:-0.815951 2:0.235967
++1 1:-0.526627 2:0.418687
++1 1:-0.667764 2:0.428834
++1 1:-0.658898 2:0.031828
++1 1:-0.923936 2:0.530254
++1 1:-0.909974 2:0.451785
++1 1:-0.410551 2:0.252160
++1 1:-0.462064 2:0.230674
++1 1:-0.366147 2:-0.036140
++1 1:-0.595861 2:0.400289
++1 1:-0.704392 2:0.238984
++1 1:-0.841226 2:0.577096
++1 1:-0.969829 2:0.155360
++1 1:-0.557037 2:0.314190
++1 1:-0.671104 2:0.361767
++1 1:-0.503286 2:0.566417
++1 1:-0.950326 2:0.078493
++1 1:-0.675813 2:0.319308
++1 1:-0.831562 2:0.143582
++1 1:-0.435074 2:0.492856
++1 1:-0.793021 2:0.118141
++1 1:-0.848628 2:0.082763
++1 1:-0.820270 2:0.395714
++1 1:-0.422093 2:0.477761
++1 1:-0.408676 2:0.374918
++1 1:-0.546954 2:0.473748
++1 1:-0.735444 2:0.266139
++1 1:-0.582205 2:0.271991
++1 1:-0.338347 2:0.242427
++1 1:-0.535046 2:0.118044
++1 1:-0.493744 2:0.717856
++1 1:-0.760933 2:0.416246
++1 1:-0.515677 2:0.184243
++1 1:-0.673505 2:0.296239
++1 1:-0.459706 2:0.186931
++1 1:-0.694881 2:0.381841
++1 1:-0.387448 2:0.080891
++1 1:-0.596036 2:0.184975
++1 1:-0.664373 2:0.423941
++1 1:-0.883743 2:0.614943
++1 1:-0.509345 2:0.290034
++1 1:-0.925125 2:0.604748
++1 1:-0.841008 2:0.290327
++1 1:-0.894120 2:0.157170
++1 1:-0.646573 2:0.609448
++1 1:-1.017873 2:0.148721
++1 1:-0.582529 2:0.184941
++1 1:-0.897329 2:0.532092
++1 1:-0.465017 2:0.285520
++1 1:-0.726509 2:0.181867
++1 1:-0.514353 2:0.156961
++1 1:-0.739246 2:0.408845
++1 1:-0.537049 2:0.307417
++1 1:-0.923408 2:0.492250
++1 1:-0.663217 2:0.241276
++1 1:-0.871901 2:0.191787
++1 1:-0.574765 2:0.216700
++1 1:-0.778723 2:0.417127
++1 1:-0.717491 2:0.169912
++1 1:-0.293985 2:0.341693
++1 1:-0.732183 2:0.611673
++1 1:-0.672452 2:0.290330
++1 1:-0.392906 2:0.314508
++1 1:-0.821497 2:0.383502
++1 1:-0.441650 2:0.131553
++1 1:-0.734149 2:0.138367
++1 1:-0.353467 2:0.403726
++1 1:-0.756729 2:0.140927
++1 1:-0.985272 2:0.307051
++1 1:-0.734363 2:0.131916
++1 1:-0.843814 2:0.508798
++1 1:-0.871471 2:0.409534
++1 1:-0.643774 2:0.386073
++1 1:-0.617659 2:0.067340
++1 1:-0.282069 2:0.693923
++1 1:-0.402555 2:0.204386
++1 1:-0.458584 2:0.420739
++1 1:-0.846297 2:0.277152
++1 1:-1.048542 2:0.338823
++1 1:-0.799795 2:0.309431
++1 1:-0.852041 2:0.307282
++1 1:-0.616475 2:0.252953
++1 1:-0.691690 2:0.272750
++1 1:-0.809142 2:0.441902
++1 1:-0.837140 2:0.269172
++1 1:-0.743520 2:0.247418
++1 1:-0.660650 2:-0.028489
++1 1:-0.594816 2:0.109165
++1 1:-0.597128 2:-0.037465
++1 1:-0.921420 2:-0.069844
++1 1:-0.877567 2:0.304297
++1 1:-0.765372 2:0.596974
++1 1:-0.699841 2:0.167127
++1 1:-0.523435 2:-0.064743
++1 1:-0.656388 2:0.012460
++1 1:-1.036968 2:0.141451
++1 1:-0.715165 2:0.217240
++1 1:-0.747858 2:0.569995
++1 1:-0.625685 2:0.320122
++1 1:-0.756700 2:0.174519
++1 1:-0.679691 2:0.438411
++1 1:-0.612004 2:-0.134270
++1 1:-0.647907 2:0.239639
++1 1:-0.691066 2:0.255635
++1 1:-0.675113 2:0.550170
++1 1:-0.851073 2:0.474956
++1 1:-0.837051 2:0.408051
++1 1:-0.961406 2:0.588208
++1 1:-0.642775 2:0.163487
++1 1:-0.892076 2:0.064133
++1 1:-0.927799 2:0.072240
++1 1:-0.751801 2:0.409259
++1 1:-0.805341 2:0.064157
++1 1:-0.692838 2:0.171715
++1 1:-0.703944 2:0.476730
++1 1:-0.694804 2:0.268655
++1 1:-0.567759 2:0.207117
++1 1:-0.822380 2:0.268404
++1 1:-0.565083 2:0.327015
++1 1:-0.724182 2:0.625764
++1 1:-0.916358 2:0.236125
++1 1:-0.430183 2:0.268034
++1 1:-0.632646 2:0.522383
++1 1:-0.850973 2:0.345169
++1 1:-0.609691 2:0.501872
++1 1:-0.705661 2:0.220695
++1 1:-0.693162 2:0.100244
++1 1:-0.633923 2:0.390701
++1 1:-0.710407 2:0.015180
++1 1:-1.055052 2:0.517833
++1 1:-0.621276 2:0.167383
++1 1:-0.613423 2:0.266135
++1 1:-0.989565 2:0.166694
++1 1:-0.923580 2:0.412607
++1 1:-0.889581 2:0.426761
++1 1:-0.930040 2:0.240534
++1 1:-0.691421 2:0.006340
++1 1:-1.031412 2:0.482278
++1 1:-0.701395 2:0.462356
++1 1:-0.627721 2:0.243813
++1 1:-0.829380 2:0.487867
++1 1:-0.612201 2:0.121715
++1 1:-0.528140 2:0.449963
++1 1:-0.616674 2:0.058254
++1 1:-0.649203 2:0.263910
++1 1:-0.655384 2:0.225794
++1 1:-0.750085 2:0.119545
++1 1:-0.471921 2:0.278831
++1 1:-0.219906 2:0.315053
++1 1:-0.871701 2:0.240570
++1 1:-0.730198 2:0.295505
++1 1:-0.620676 2:0.046384
++1 1:-0.657831 2:0.265900
++1 1:-0.475352 2:0.279851
++1 1:-0.734795 2:0.365236
++1 1:-0.772674 2:0.355478
++1 1:-0.620710 2:0.770797
++1 1:-0.529626 2:0.091068
++1 1:-0.730846 2:0.642803
++1 1:-0.938694 2:0.324275
++1 1:-0.723706 2:-0.018000
++1 1:-0.979569 2:-0.003034
++1 1:0.448754 2:0.015050
++1 1:-0.077907 2:0.245842
++1 1:0.316787 2:0.252918
++1 1:0.229597 2:0.067682
++1 1:0.197949 2:0.310004
++1 1:0.048405 2:-0.037865
++1 1:0.270601 2:0.260199
++1 1:0.516192 2:0.258256
++1 1:0.154719 2:0.040307
++1 1:-0.005611 2:0.223658
++1 1:0.365076 2:-0.001957
++1 1:0.086616 2:0.138483
++1 1:0.198646 2:0.047612
++1 1:0.131871 2:0.402255
++1 1:0.585895 2:0.433203
++1 1:-0.023499 2:0.379920
++1 1:0.394174 2:0.533937
++1 1:0.595984 2:0.680517
++1 1:0.388420 2:0.321932
++1 1:0.270452 2:0.360310
++1 1:0.336910 2:0.176263
++1 1:0.481432 2:0.326028
++1 1:0.246865 2:0.532700
++1 1:-0.020440 2:0.132155
++1 1:0.389941 2:0.309223
++1 1:0.048115 2:0.104763
++1 1:0.284816 2:-0.048776
++1 1:0.529167 2:0.285315
++1 1:0.349208 2:0.063167
++1 1:0.323888 2:0.192358
++1 1:0.321214 2:0.101190
++1 1:0.303366 2:0.286689
++1 1:-0.075980 2:0.312196
++1 1:0.317894 2:0.110579
++1 1:0.136145 2:0.223510
++1 1:0.086777 2:0.397316
++1 1:0.330555 2:-0.018831
++1 1:0.202260 2:0.212062
++1 1:0.276704 2:0.541792
++1 1:0.244815 2:-0.033435
++1 1:0.429044 2:0.183967
++1 1:0.340413 2:0.237474
++1 1:0.382064 2:0.123295
++1 1:0.381833 2:0.085810
++1 1:0.424418 2:0.321955
++1 1:0.206306 2:0.348958
++1 1:0.091615 2:0.309132
++1 1:0.627598 2:0.472189
++1 1:0.270245 2:0.361936
++1 1:0.127928 2:0.368238
++1 1:0.399193 2:0.120051
++1 1:0.450618 2:0.452329
++1 1:0.254900 2:0.410220
++1 1:0.259523 2:0.124427
++1 1:0.417005 2:0.300806
++1 1:0.346581 2:0.283479
++1 1:0.748855 2:0.246813
++1 1:0.428530 2:0.636260
++1 1:0.127370 2:0.321732
++1 1:0.528722 2:0.227076
++1 1:0.618168 2:0.327309
++1 1:0.286029 2:0.215643
++1 1:0.142578 2:0.112956
++1 1:0.282765 2:0.091628
++1 1:0.788220 2:0.464545
++1 1:0.119165 2:0.239568
++1 1:0.244773 2:0.014907
++1 1:0.160443 2:0.455259
++1 1:0.454067 2:0.332583
++1 1:-0.057868 2:0.498676
++1 1:-0.111365 2:0.079756
++1 1:0.198825 2:0.476018
++1 1:0.595468 2:0.162120
++1 1:0.085627 2:0.315262
++1 1:0.465261 2:0.123331
++1 1:0.359674 2:0.364504
++1 1:0.111822 2:0.296370
++1 1:0.509269 2:0.464037
++1 1:0.470888 2:0.285557
++1 1:0.393263 2:0.093782
++1 1:0.311898 2:0.286626
++1 1:0.151595 2:0.268411
++1 1:0.084423 2:0.319282
++1 1:0.208642 2:0.230226
++1 1:0.361231 2:0.506867
++1 1:0.425668 2:0.239049
++1 1:0.399549 2:0.136827
++1 1:0.279616 2:0.310403
++1 1:0.109050 2:0.630255
++1 1:0.102930 2:0.446153
++1 1:0.551085 2:0.313984
++1 1:0.579201 2:0.179354
++1 1:0.356515 2:0.178397
++1 1:0.259861 2:0.096918
++1 1:0.545481 2:0.272731
++1 1:0.398790 2:0.149344
++1 1:0.383441 2:0.243298
++1 1:0.405415 2:0.351024
++1 1:0.249092 2:0.423059
++1 1:0.293536 2:0.133961
++1 1:0.149869 2:0.305675
++1 1:0.224987 2:0.464865
++1 1:0.240826 2:0.233973
++1 1:0.122918 2:0.406179
++1 1:0.301232 2:0.178774
++1 1:0.257699 2:0.537312
++1 1:0.446289 2:0.206483
++1 1:0.511215 2:0.156331
++1 1:0.474675 2:0.454212
++1 1:0.373402 2:0.107532
++1 1:0.453575 2:0.013564
++1 1:0.363709 2:0.324210
++1 1:0.323172 2:0.308234
++1 1:0.263568 2:0.097322
++1 1:0.375989 2:0.511128
++1 1:0.483417 2:-0.027607
++1 1:0.412709 2:0.353260
++1 1:0.294591 2:0.338632
++1 1:0.148425 2:0.313998
++1 1:0.476237 2:0.009139
++1 1:0.051022 2:0.518229
++1 1:0.488030 2:0.492206
++1 1:0.193703 2:0.356127
++1 1:0.390386 2:0.402549
++1 1:0.166515 2:0.077487
++1 1:0.378346 2:0.205554
++1 1:0.059891 2:0.615482
++1 1:-0.077253 2:0.325973
++1 1:0.519326 2:0.352902
++1 1:0.271955 2:0.031010
++1 1:0.027255 2:0.289395
++1 1:0.437438 2:-0.027211
++1 1:0.028371 2:0.166305
++1 1:0.433657 2:0.604909
++1 1:0.280505 2:0.022916
++1 1:0.300736 2:0.188024
++1 1:0.182032 2:0.292355
++1 1:0.316159 2:0.423974
++1 1:0.530601 2:0.287109
++1 1:0.210238 2:0.384357
++1 1:0.399445 2:0.496883
++1 1:0.272113 2:0.437262
++1 1:0.418146 2:0.145522
++1 1:0.504825 2:0.154106
++1 1:0.166974 2:0.180641
++1 1:0.106527 2:0.500371
++1 1:0.607349 2:0.184680
++1 1:0.517848 2:0.396858
++1 1:0.231554 2:0.403087
++1 1:0.255029 2:0.430592
++1 1:0.287511 2:0.219413
++1 1:0.200852 2:0.272097
++1 1:0.226548 2:0.244596
++1 1:0.011878 2:0.352803
++1 1:0.380570 2:0.434089
++1 1:0.519215 2:0.072765
++1 1:0.623855 2:0.338984
++1 1:0.183173 2:0.255322
++1 1:0.226420 2:0.075342
++1 1:0.455357 2:0.367957
++1 1:0.332301 2:-0.011059
++1 1:0.376306 2:0.188461
++1 1:0.428170 2:0.054583
++1 1:0.145830 2:0.368253
++1 1:0.493758 2:0.376064
++1 1:0.529392 2:0.074699
++1 1:0.409826 2:0.280323
++1 1:0.612355 2:0.120927
++1 1:0.221568 2:0.273458
++1 1:0.427546 2:0.106201
++1 1:0.533326 2:0.591671
++1 1:0.462110 2:0.357956
++1 1:0.182362 2:0.298521
++1 1:0.310108 2:0.301510
++1 1:0.159800 2:0.257640
++1 1:0.254288 2:0.374308
++1 1:0.316374 2:0.029412
++1 1:0.285942 2:0.338774
++1 1:0.552542 2:-0.016858
++1 1:-0.004090 2:0.399012
++1 1:0.060484 2:0.277593
++1 1:0.545098 2:0.218461
++1 1:0.268285 2:0.267903
++1 1:0.159023 2:0.531382
++1 1:0.492658 2:0.486286
++1 1:-0.128240 2:0.533334
++1 1:0.447760 2:0.284865
++1 1:0.239375 2:0.462387
++1 1:0.138635 2:0.395550
++1 1:0.417284 2:0.200022
++1 1:0.178304 2:0.306720
++1 1:0.221553 2:0.396535
++1 1:-0.009120 2:0.724739
++1 1:0.292749 2:0.414433
++1 1:0.300564 2:0.214325
++1 1:0.242507 2:0.232690
++1 1:0.234494 2:0.247006
++1 1:0.352550 2:0.351581
++1 1:0.185994 2:0.269915
++1 1:0.409680 2:0.212371
++1 1:0.163920 2:0.026130
++1 1:0.169756 2:0.104359
++1 1:0.354399 2:0.227524
++1 1:0.388870 2:0.042378
++1 1:0.344788 2:0.246054
++1 1:0.193145 2:0.271353
++1 1:0.430800 2:0.263194
++1 1:0.232809 2:0.445517
++1 1:0.326059 2:0.563887
++1 1:0.330837 2:0.256040
++1 1:0.323691 2:0.356873
++1 1:0.367737 2:-0.088858
++1 1:0.530751 2:0.327390
++1 1:0.089596 2:0.338424
++1 1:0.432193 2:0.394261
++1 1:0.186694 2:0.438187
++1 1:0.458275 2:0.324648
++1 1:0.480078 2:0.374810
++1 1:0.582758 2:0.390434
++1 1:0.437808 2:0.389266
++1 1:0.208831 2:0.010096
++1 1:0.377797 2:0.474572
++1 1:0.183803 2:-0.090084
++1 1:0.155683 2:0.537563
++1 1:0.071927 2:0.572783
++1 1:0.364436 2:-0.123842
++1 1:0.408214 2:0.254483
++1 1:0.466074 2:0.398618
++1 1:0.614282 2:0.283302
++1 1:-0.047152 2:0.214579
++1 1:0.326917 2:0.468066
++1 1:0.458841 2:0.443470
++1 1:0.109538 2:0.189506
++1 1:0.161896 2:0.123705
++1 1:0.450055 2:0.501519
++1 1:0.368869 2:0.557191
++1 1:0.334209 2:0.413960
++1 1:-0.031121 2:0.228014
++1 1:0.176754 2:0.430200
++1 1:0.552528 2:0.224903
++1 1:0.304266 2:0.220287
++1 1:0.210463 2:0.415337
++1 1:0.063954 2:0.045543
++1 1:-0.063150 2:0.351389
++1 1:0.073536 2:0.252144
++1 1:0.665454 2:0.203720
++1 1:0.539643 2:0.279987
++1 1:0.250982 2:0.069570
++1 1:0.392680 2:0.090262
++1 1:0.431409 2:0.288456
+-1 1:-0.516452 2:0.501256
+-1 1:-0.116775 2:0.483405
+-1 1:-0.327961 2:0.546240
+-1 1:-0.394572 2:0.755244
+-1 1:-0.110202 2:0.553402
+-1 1:-0.160539 2:0.579526
+-1 1:-0.124742 2:0.323662
+-1 1:-0.109743 2:0.696515
+-1 1:-0.687328 2:0.807033
+-1 1:-0.358374 2:0.807266
+-1 1:-0.335837 2:0.392482
+-1 1:-0.321604 2:0.591913
+-1 1:-0.091546 2:0.562483
+-1 1:-0.660891 2:0.611049
+-1 1:-0.561938 2:0.907495
+-1 1:-0.244434 2:0.451367
+-1 1:-0.392885 2:0.550605
+-1 1:-0.429609 2:0.644153
+-1 1:-0.090463 2:0.522252
+-1 1:-0.436485 2:0.520039
+-1 1:-0.519966 2:0.940831
+-1 1:-0.418391 2:1.011277
+-1 1:-0.405808 2:0.738999
+-1 1:-0.085688 2:0.847932
+-1 1:-0.210347 2:0.416697
+-1 1:-0.531897 2:0.452619
+-1 1:-0.294588 2:0.846013
+-1 1:-0.092754 2:0.693083
+-1 1:-0.314550 2:0.797237
+-1 1:-0.262918 2:0.787475
+-1 1:-0.389819 2:0.579881
+-1 1:-0.162163 2:0.315021
+-1 1:-0.418250 2:0.684350
+-1 1:-0.356533 2:0.896022
+-1 1:-0.461800 2:0.782143
+-1 1:-0.149067 2:0.837865
+-1 1:-0.376621 2:0.553207
+-1 1:-0.235808 2:0.642938
+-1 1:-0.433816 2:0.568683
+-1 1:0.003602 2:0.804353
+-1 1:-0.286855 2:0.710633
+-1 1:-0.424067 2:0.994872
+-1 1:-0.270030 2:0.833427
+-1 1:-0.239212 2:0.378268
+-1 1:-0.255305 2:0.822105
+-1 1:-0.196569 2:0.703183
+-1 1:-0.125203 2:0.844726
+-1 1:-0.338351 2:0.680964
+-1 1:-0.383184 2:0.839384
+-1 1:-0.398514 2:0.750284
+-1 1:0.027845 2:0.537770
+-1 1:-0.295483 2:0.846722
+-1 1:-0.552989 2:0.794817
+-1 1:-0.004902 2:0.608282
+-1 1:-0.029384 2:0.614073
+-1 1:-0.444695 2:0.779043
+-1 1:-0.338928 2:0.789726
+-1 1:0.122196 2:0.784475
+-1 1:-0.186585 2:0.560615
+-1 1:-0.295016 2:0.840559
+-1 1:-0.102631 2:0.675938
+-1 1:-0.430786 2:0.645618
+-1 1:-0.099298 2:0.894435
+-1 1:-0.009264 2:1.012595
+-1 1:-0.560974 2:0.807423
+-1 1:-0.536294 2:0.529433
+-1 1:-0.563297 2:0.646381
+-1 1:-0.292902 2:0.620925
+-1 1:-0.107464 2:0.615870
+-1 1:-0.261216 2:0.699646
+-1 1:-0.105101 2:0.868086
+-1 1:-0.362473 2:0.683246
+-1 1:-0.548222 2:0.726740
+-1 1:-0.522717 2:0.636324
+-1 1:-0.406753 2:0.858976
+-1 1:-0.272150 2:1.009788
+-1 1:-0.058505 2:0.722038
+-1 1:-0.286284 2:0.564831
+-1 1:-0.145642 2:0.527786
+-1 1:-0.254952 2:0.909735
+-1 1:-0.200911 2:0.911648
+-1 1:-0.397770 2:0.398117
+-1 1:-0.547436 2:0.779496
+-1 1:-0.231129 2:0.491140
+-1 1:-0.473895 2:0.682466
+-1 1:-0.231075 2:0.453157
+-1 1:-0.268777 2:0.676814
+-1 1:-0.180890 2:0.880462
+-1 1:-0.326238 2:0.599734
+-1 1:-0.252657 2:0.575832
+-1 1:-0.294967 2:0.707617
+-1 1:-0.441715 2:0.649258
+-1 1:-0.434337 2:0.859635
+-1 1:-0.080951 2:0.608363
+-1 1:-0.256057 2:0.465280
+-1 1:-0.767972 2:0.818894
+-1 1:-0.250930 2:0.807765
+-1 1:-0.233532 2:0.536107
+-1 1:-0.166252 2:0.578022
+-1 1:-0.399390 2:0.961981
+-1 1:-0.383257 2:0.918197
+-1 1:-0.246208 2:0.728269
+-1 1:-0.112874 2:0.825689
+-1 1:-0.096666 2:0.707307
+-1 1:-0.457949 2:0.704015
+-1 1:-0.255004 2:0.504258
+-1 1:-0.073435 2:0.722784
+-1 1:-0.409375 2:0.526063
+-1 1:-0.363348 2:0.881713
+-1 1:-0.257218 2:0.607598
+-1 1:-0.349331 2:0.703112
+-1 1:-0.151880 2:0.492886
+-1 1:-0.404171 2:0.737140
+-1 1:-0.462321 2:0.423673
+-1 1:-0.546143 2:0.835222
+-1 1:-0.229963 2:0.611219
+-1 1:-0.246561 2:0.550748
+-1 1:-0.392636 2:0.396902
+-1 1:-0.175983 2:0.659236
+-1 1:-0.160444 2:0.856989
+-1 1:-0.341236 2:0.536421
+-1 1:-0.333234 2:0.558946
+-1 1:-0.274226 2:0.677337
+-1 1:-0.394218 2:1.084966
+-1 1:-0.177111 2:1.174991
+-1 1:-0.403972 2:0.705580
+-1 1:-0.387046 2:0.654499
+-1 1:-0.044039 2:0.753839
+-1 1:-0.278390 2:0.349432
+-1 1:-0.272249 2:0.234623
+-1 1:-0.191592 2:0.380899
+-1 1:-0.590368 2:0.698332
+-1 1:-0.374189 2:0.819242
+-1 1:-0.351704 2:0.730362
+-1 1:-0.281959 2:0.469288
+-1 1:-0.751945 2:0.885220
+-1 1:-0.306930 2:0.574183
+-1 1:-0.762727 2:0.890353
+-1 1:-0.564448 2:0.729603
+-1 1:0.040324 2:0.779573
+-1 1:-0.462189 2:0.998869
+-1 1:-0.447916 2:0.843500
+-1 1:-0.217002 2:0.796624
+-1 1:-0.112509 2:0.611901
+-1 1:-0.131150 2:0.948976
+-1 1:-0.403055 2:0.786869
+-1 1:0.008849 2:0.652934
+-1 1:0.090648 2:0.654318
+-1 1:-0.358621 2:0.936462
+-1 1:-0.441265 2:0.326283
+-1 1:-0.479842 2:0.788088
+-1 1:-0.588844 2:0.648215
+-1 1:-0.562607 2:0.754763
+-1 1:-0.514270 2:0.324312
+-1 1:-0.392905 2:0.821042
+-1 1:-0.075132 2:0.685703
+-1 1:-0.196831 2:0.714113
+-1 1:-0.301482 2:0.552314
+-1 1:-0.181585 2:0.659989
+-1 1:-0.114373 2:0.736877
+-1 1:-0.331937 2:0.440210
+-1 1:-0.266808 2:0.545085
+-1 1:-0.475110 2:0.947484
+-1 1:-0.557038 2:0.778720
+-1 1:-0.193240 2:0.574512
+-1 1:-0.029349 2:0.829602
+-1 1:-0.383377 2:0.624386
+-1 1:-0.035071 2:0.812801
+-1 1:-0.060506 2:0.772167
+-1 1:-0.160711 2:0.530042
+-1 1:-0.210362 2:0.567447
+-1 1:-0.283272 2:0.798840
+-1 1:-0.520614 2:0.837373
+-1 1:-0.263870 2:0.687937
+-1 1:-0.060226 2:0.688229
+-1 1:-0.429474 2:0.654718
+-1 1:-0.325250 2:0.791106
+-1 1:0.094837 2:0.750573
+-1 1:-0.326849 2:0.823553
+-1 1:-0.537631 2:0.827069
+-1 1:-0.589458 2:0.897096
+-1 1:-0.255110 2:0.737443
+-1 1:-0.350723 2:0.739648
+-1 1:-0.111745 2:0.705988
+-1 1:-0.213436 2:0.466548
+-1 1:-0.272519 2:0.683481
+-1 1:-0.440414 2:0.974318
+-1 1:-0.303363 2:0.576265
+-1 1:-0.221200 2:0.987888
+-1 1:-0.286915 2:0.619578
+-1 1:0.096845 2:0.511673
+-1 1:-0.363111 2:0.661562
+-1 1:-0.211247 2:0.813172
+-1 1:-0.222053 2:0.686080
+-1 1:-0.321828 2:0.624358
+-1 1:-0.473738 2:0.506319
+-1 1:-0.212794 2:0.774693
+-1 1:0.008464 2:0.614591
+-1 1:-0.205693 2:0.644920
+-1 1:-0.378487 2:0.778361
+-1 1:-0.229443 2:0.594733
+-1 1:-0.162703 2:0.930991
+-1 1:-0.321297 2:0.828611
+-1 1:-0.400333 2:0.688297
+-1 1:-0.312051 2:0.618495
+-1 1:-0.039349 2:0.959791
+-1 1:-0.273915 2:0.599403
+-1 1:-0.348566 2:0.612607
+-1 1:-0.413758 2:0.696449
+-1 1:-0.098832 2:0.854519
+-1 1:-0.287691 2:0.883301
+-1 1:-0.383124 2:0.672368
+-1 1:-0.561271 2:1.067279
+-1 1:-0.166432 2:0.897152
+-1 1:-0.635115 2:0.688087
+-1 1:-0.332175 2:0.501477
+-1 1:-0.474806 2:0.711218
+-1 1:-0.116004 2:0.708364
+-1 1:-0.477937 2:0.702949
+-1 1:-0.126810 2:0.971410
+-1 1:-0.156823 2:0.457687
+-1 1:-0.293524 2:0.856487
+-1 1:-0.129616 2:0.891819
+-1 1:-0.108242 2:0.644814
+-1 1:-0.501980 2:0.370050
+-1 1:-0.138108 2:0.612928
+-1 1:-0.179323 2:0.366517
+-1 1:-0.458094 2:0.571371
+-1 1:-0.028566 2:0.486501
+-1 1:-0.426176 2:0.461765
+-1 1:-0.310681 2:0.544906
+-1 1:-0.180247 2:0.876337
+-1 1:-0.217871 2:0.390857
+-1 1:-0.315992 2:0.736173
+-1 1:0.236277 2:0.714180
+-1 1:-0.185456 2:0.702295
+-1 1:-0.203066 2:0.317910
+-1 1:-0.296143 2:0.648027
+-1 1:-0.448940 2:0.650604
+-1 1:0.077065 2:0.797884
+-1 1:0.034024 2:0.788213
+-1 1:-0.439519 2:0.946447
+-1 1:-0.471452 2:0.708541
+-1 1:-0.263821 2:0.565778
+-1 1:-0.676334 2:1.064999
+-1 1:-0.394630 2:0.732544
+-1 1:-0.334699 2:0.638314
+-1 1:0.043828 2:0.782971
+-1 1:0.073255 2:0.639406
+-1 1:-0.358306 2:0.638879
+-1 1:0.289825 2:0.645298
+-1 1:0.479141 2:0.769272
+-1 1:0.180670 2:0.518893
+-1 1:0.199826 2:0.747217
+-1 1:0.735249 2:0.833027
+-1 1:0.249992 2:0.350660
+-1 1:0.413138 2:0.854045
+-1 1:0.518581 2:0.386363
+-1 1:0.465359 2:0.854393
+-1 1:0.348309 2:0.680025
+-1 1:0.174782 2:0.544423
+-1 1:0.549912 2:0.472172
+-1 1:0.203934 2:0.410263
+-1 1:0.338644 2:1.028370
+-1 1:0.161322 2:0.950856
+-1 1:0.350961 2:0.686428
+-1 1:0.090257 2:0.846995
+-1 1:0.764374 2:0.615571
+-1 1:0.414757 2:0.893307
+-1 1:0.679361 2:0.659759
+-1 1:0.640286 2:0.804269
+-1 1:0.630876 2:0.710029
+-1 1:0.366370 2:0.772543
+-1 1:0.314611 2:0.755071
+-1 1:0.745924 2:0.706346
+-1 1:0.489768 2:0.684198
+-1 1:0.075248 2:0.621422
+-1 1:0.499573 2:0.679632
+-1 1:0.350405 2:0.443981
+-1 1:0.636928 2:0.603843
+-1 1:0.224909 2:0.840918
+-1 1:-0.032262 2:0.655727
+-1 1:0.627052 2:0.808689
+-1 1:0.263349 2:0.455435
+-1 1:0.520257 2:0.762965
+-1 1:0.151883 2:0.966544
+-1 1:0.098483 2:0.517323
+-1 1:0.201212 2:0.549827
+-1 1:0.371298 2:0.761390
+-1 1:0.497766 2:0.769076
+-1 1:0.409493 2:0.305119
+-1 1:0.340850 2:0.766678
+-1 1:0.391676 2:0.489774
+-1 1:0.516132 2:0.412662
+-1 1:0.522761 2:0.520845
+-1 1:0.446359 2:0.869775
+-1 1:0.224401 2:0.559200
+-1 1:0.583150 2:0.871729
+-1 1:0.420184 2:0.768544
+-1 1:0.340884 2:0.582415
+-1 1:0.407626 2:1.016275
+-1 1:0.226805 2:0.997357
+-1 1:0.461550 2:0.728403
+-1 1:0.275762 2:0.773039
+-1 1:0.304760 2:0.405070
+-1 1:0.636786 2:0.521154
+-1 1:0.544821 2:0.902598
+-1 1:0.816099 2:0.643244
+-1 1:0.454637 2:0.627060
+-1 1:0.416887 2:0.498139
+-1 1:0.585814 2:0.472858
+-1 1:0.158973 2:0.877326
+-1 1:0.218197 2:0.791103
+-1 1:0.436714 2:0.582376
+-1 1:0.465359 2:0.619109
+-1 1:0.346902 2:0.776639
+-1 1:0.599207 2:0.605699
+-1 1:0.463003 2:0.972726
+-1 1:0.694264 2:0.550711
+-1 1:1.000278 2:0.669240
+-1 1:0.503660 2:0.451743
+-1 1:0.609419 2:0.560098
+-1 1:0.352924 2:0.639531
+-1 1:0.313798 2:0.428469
+-1 1:0.275594 2:0.624511
+-1 1:0.310311 2:0.757815
+-1 1:0.200770 2:1.068014
+-1 1:0.393611 2:0.489922
+-1 1:0.293284 2:0.564538
+-1 1:0.150904 2:0.874953
+-1 1:0.359648 2:0.984800
+-1 1:0.425437 2:0.605206
+-1 1:0.550057 2:0.953322
+-1 1:0.369378 2:0.717384
+-1 1:0.483824 2:0.776402
+-1 1:0.665202 2:0.609337
+-1 1:0.367663 2:0.432858
+-1 1:0.603654 2:0.439204
+-1 1:0.361993 2:0.607744
+-1 1:0.365320 2:0.193466
+-1 1:0.565587 2:0.766374
+-1 1:0.459979 2:0.421990
+-1 1:0.389662 2:0.697574
+-1 1:0.662029 2:0.545080
+-1 1:0.193287 2:0.660105
+-1 1:0.770581 2:0.678277
+-1 1:0.517729 2:0.709447
+-1 1:0.666759 2:0.738396
+-1 1:0.507358 2:0.504292
+-1 1:0.074898 2:0.726625
+-1 1:0.267420 2:0.669126
+-1 1:0.570998 2:0.905962
+-1 1:0.234076 2:0.680851
+-1 1:0.204728 2:0.915150
+-1 1:0.463601 2:0.831023
+-1 1:0.551695 2:0.877530
+-1 1:0.375065 2:0.706265
+-1 1:0.548113 2:0.683542
+-1 1:0.436411 2:0.523947
+-1 1:0.171669 2:0.706403
+-1 1:0.228628 2:0.696359
+-1 1:0.258176 2:0.750019
+-1 1:0.427636 2:0.726641
+-1 1:0.551129 2:1.041844
+-1 1:0.382357 2:0.485587
+-1 1:0.627188 2:0.857796
+-1 1:0.759430 2:0.897904
+-1 1:0.385966 2:0.649099
+-1 1:0.216206 2:0.886147
+-1 1:0.107422 2:0.525437
+-1 1:0.466620 2:0.649301
+-1 1:0.483553 2:0.519368
+-1 1:0.188288 2:0.704849
+-1 1:0.123112 2:0.618943
+-1 1:0.149201 2:0.674098
+-1 1:0.541125 2:0.641049
+-1 1:0.707585 2:1.048981
+-1 1:0.250260 2:0.738435
+-1 1:0.388929 2:0.980539
+-1 1:0.163560 2:0.768820
+-1 1:0.290939 2:0.858417
+-1 1:0.671327 2:0.887570
+-1 1:0.419646 2:0.833302
+-1 1:0.297576 2:0.815636
+-1 1:0.488205 2:0.928913
+-1 1:0.274956 2:0.622947
+-1 1:0.364636 2:0.552039
+-1 1:0.020766 2:0.400801
+-1 1:0.503582 2:0.462403
+-1 1:0.129744 2:0.478205
+-1 1:0.205738 2:0.652800
+-1 1:0.491663 2:0.919029
+-1 1:0.541929 2:0.592239
+-1 1:0.352448 2:0.438954
+-1 1:0.340547 2:0.610581
+-1 1:0.087363 2:0.722352
+-1 1:0.544510 2:0.310571
+-1 1:0.426834 2:0.697519
+-1 1:0.505027 2:0.203962
+-1 1:0.393952 2:0.701709
+-1 1:0.341212 2:0.487823
+-1 1:0.443882 2:0.515216
+-1 1:0.216624 2:0.641423
+-1 1:0.325422 2:0.565006
+-1 1:0.339954 2:0.500220
+-1 1:0.757953 2:0.646114
+-1 1:0.166512 2:0.675640
+-1 1:0.394924 2:0.795157
+-1 1:0.581373 2:0.769435
+-1 1:0.469451 2:0.686613
+-1 1:0.180075 2:0.917904
+-1 1:0.314961 2:0.919407
+-1 1:0.781475 2:1.074871
+-1 1:0.261044 2:0.883671
+-1 1:0.149151 2:0.475485
+-1 1:0.236372 2:0.975832
+-1 1:0.646324 2:0.522312
+-1 1:0.518348 2:0.876936
+-1 1:0.089471 2:0.658664
+-1 1:0.498070 2:0.902621
+-1 1:0.248060 2:0.746907
+-1 1:0.550195 2:0.737298
+-1 1:0.280603 2:0.603133
+-1 1:0.431834 2:0.533888
+-1 1:0.267800 2:0.603699
+-1 1:0.507751 2:0.826990
+-1 1:-0.064478 2:0.834070
+-1 1:0.342112 2:0.661644
+-1 1:0.332314 2:0.509084
+-1 1:0.665013 2:0.878513
+-1 1:0.382911 2:0.749229
+-1 1:0.361028 2:0.645112
+-1 1:0.571981 2:0.794214
+-1 1:0.536918 2:0.898473
+-1 1:0.331873 2:0.570368
+-1 1:0.044037 2:0.476642
+-1 1:0.410717 2:0.798925
+-1 1:0.455084 2:0.551831
+-1 1:0.474595 2:0.889946
+-1 1:0.413672 2:0.867650
+-1 1:0.682171 2:0.972182
+-1 1:0.425353 2:0.535316
+-1 1:0.262277 2:0.637458
+-1 1:0.007860 2:0.806598
+-1 1:0.381000 2:0.653581
+-1 1:0.538437 2:0.907997
+-1 1:0.180415 2:0.914335
+-1 1:0.237060 2:0.752505
+-1 1:0.829663 2:0.697895
+-1 1:0.307665 2:1.074702
+-1 1:0.239849 2:0.753987
+-1 1:0.275375 2:0.806554
+-1 1:0.416985 2:0.452953
+-1 1:0.476493 2:0.858473
+-1 1:0.564498 2:0.915315
+-1 1:0.198295 2:0.534935
+-1 1:0.294199 2:0.374101
+-1 1:0.684761 2:0.892746
+-1 1:0.168075 2:0.794231
+-1 1:0.502764 2:0.712130
+-1 1:0.129723 2:0.697110
+-1 1:0.285983 2:0.796122
+-1 1:0.097239 2:0.681160
+-1 1:0.210575 2:0.792653
+-1 1:0.593897 2:0.530407
+-1 1:0.358837 2:0.671401
+-1 1:0.197592 2:0.710585
+-1 1:0.540587 2:0.774780
+-1 1:0.175106 2:0.609394
+-1 1:0.448304 2:0.663333
+-1 1:0.289881 2:0.204722
+-1 1:0.300130 2:0.934826
+-1 1:0.152511 2:0.851596
+-1 1:0.495317 2:0.631047
+-1 1:0.072424 2:0.678667
+-1 1:0.500846 2:0.689707
+-1 1:0.159105 2:0.628206
+-1 1:0.710308 2:0.777810
+-1 1:0.750642 2:0.828037
+-1 1:0.559869 2:0.783081
+-1 1:0.400802 2:0.786167
+-1 1:0.356481 2:0.911824
+-1 1:0.844132 2:0.561510
+-1 1:0.426338 2:0.777438
+-1 1:0.461053 2:0.615764
+-1 1:0.205997 2:0.785370
+-1 1:0.118614 2:0.832647
+-1 1:0.444428 2:0.747146
+-1 1:0.278467 2:0.755944
+-1 1:0.329684 2:0.704523
+-1 1:0.338924 2:0.739419
+-1 1:0.427675 2:0.962589
+-1 1:0.324170 2:0.808411
+-1 1:0.526486 2:0.856427
+-1 1:0.664858 2:0.773954
+-1 1:0.327675 2:0.608014
+-1 1:0.247590 2:0.279270
+-1 1:0.418515 2:1.044157
+-1 1:0.232315 2:0.819643
+-1 1:0.762041 2:0.573218
diff --git a/data/riply_tst.mat b/data/riply_tst.mat
new file mode 100644
index 0000000..0d90aa8
Binary files /dev/null and b/data/riply_tst.mat differ
diff --git a/html/C_sc.png b/html/C_sc.png
new file mode 100644
index 0000000..15a22ea
Binary files /dev/null and b/html/C_sc.png differ
diff --git a/html/ChangeLog b/html/ChangeLog
new file mode 100644
index 0000000..5e762e3
--- /dev/null
+++ b/html/ChangeLog
@@ -0,0 +1,36 @@
+2010-06-11 Vojtech Franc
+ * Added functions which implement the COFFIN framework for training
+ * translation invariant image classifier from virtual example.
+ * Added functions:
+ * lbppyr.m, lbppyr_mex.c, liblbp.h, ocas_lbp_helper.h, svmocas_lbp.m
+ * lbpfilter_mex.c, lbppyr_features_mex.c, liblbp.c, ocas_lbp_helper.c
+ * svmocas_lbp_example.m, svmocas_lbp_mex.c
+2009-08-03 Vojtech Franc
+ * BUG FIX: OCAS solver was crashing on some data (reported by Alex Binder).
+ The problem was a bug in "qsort_data" function which did not expect a sequnce of length 1
+ as its input. The same bug was fixed also in "parallel_qsort_data".
+ * A new functionality added to the stand alone application "svmocas" (mex interface has it already).
+ Each examplean have a different regularization constant which is taken from specified text file.
+2009-07-31 Vojtech Franc
+ * BUG FIX: Fixed memory leak problem (missing "LIBQP_FREE( x_neq )") in libqp_splx.c (reported by Alex Binder)
+2009-02-24 Vojtech Franc
+ * Implemented version of binary SVMOCAS which supports using different C
+ * for each training example. Currently, this functionality is used in
+ * the Matlab's intefrace only.
+2008-12-10 Vojtech Franc
+ * Added stand alone implementaion of multi-class OCAS solver (msvmocas)
+ * Added stand alone implementation of linear classifier (linclass)
+ * old benchmarking and testing scripts for Matlab removed
+ * Added new (simpler) testing script for Matlab
+ * Data moved to ./data folder
+ * Updated HTML page, README and INSTALL files
+2008-12-02 Vojtech Franc
+ * Added multi-class version of OCAS solver including interface to Matlab (msvmocas_mex.c).
+ It supports sparse and full matrices and loading examples directly from SVM^light file.
+ The parallel version has not been implemented yet.
+ * Added new implementation of linear classifier (svmlight_linclass_mex.c).
+ * Added function which computes cls. error and AUC (compute_errors_mex.c).
+2008-11-10 Vojtech Franc
+ * Added support for represenation of SVMlight data as full matrix.
+ The representation (spare or full) which requires less memory is used.
+
diff --git a/html/formulas.tex b/html/formulas.tex
new file mode 100644
index 0000000..bf2ce83
--- /dev/null
+++ b/html/formulas.tex
@@ -0,0 +1,42 @@
+\documentclass[11pt]{article}
+
+\usepackage{times,latexsym,amsmath,amssymb,amsfonts,bbm,pifont}
+
+\input{makros}
+
+\begin{document}
+
+\pagestyle{empty}
+
+\[
+ \{\#w_y^* \mid y\in \SY\} = \argmin_{\{\#w_y\in\Re^n \mid y\in \SY\}} \Bigg [
+ \frac{1}{2} \sum_{y\in \SY} \|\#w_y\|^2 + C \sum_{i=1}^m
+ \max_{y\in \SY} \Big (\leftbb y \neq y_i\rightbb + \lz
+ \#w_{y}-\#w_{y_i}, \#x_i\pz \Big ) \Bigg ]
+\]
+
+\[
+ \{(\#x_1,y_1),\ldots,(\#x_m,y_m)\}\in (\Re^n\times \SY)^m
+\]
+
+\[
+ \SY=\{1,\ldots,Y\}
+\]
+
+\[
+ \{\#w_y^* \mid y\in \SY\}
+\]
+
+\[
+ f(\#x) = \sgn\left( \lz \#w^*,\#x\pz \right )
+\]
+
+\[
+ \lz \#w^*,\#x\pz
+\]
+
+$f(\#x) = \argmax_{y\in\SY} \lz \#w^*_y,\#x\pz$
+
+
+
+\end{document}
diff --git a/html/fx_sc.png b/html/fx_sc.png
new file mode 100644
index 0000000..cbb7a87
Binary files /dev/null and b/html/fx_sc.png differ
diff --git a/html/index.html b/html/index.html
new file mode 100644
index 0000000..13ee3c8
--- /dev/null
+++ b/html/index.html
@@ -0,0 +1,134 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
+<head>
+<title>LIBOCAS - Library implementing OCAS solver</title>
+</head>
+
+<BODY leftmargin="0" topmargin="0" marginwidth="25" marginheight="0">
+
+<div align="center">
+<H2>LIBOCAS - Library implementing OCAS solver <br>for training linear SVM
+classifiers from large-scale data</H2>
+<A href="http://cmp.felk.cvut.cz/~xfrancv/">Vojtech Franc</a>,
+<A href="http://ida.first.fraunhofer.de/homepages/sonne/first/">Soeren
+Sonnenburg</a>
+<p>
+Last Modified: 11-Jun-2010
+
+</div>
+
+<hr>
+
+<h4>Introduction</h4>
+
+<p>
+The library implements Optimized Cutting Plane Algorithm (OCAS)
+for training linear SVM classifiers from large-scale data.
+The computational effort of OCAS scales with O(m log m) where m is the sample size.
+In an extensive empirical evaluation OCAS significantly outperforms current
+state of the art SVM solvers, like SVM^light, SVM^perf and BMRM, achieving
+speedups of over 1,000 on some datasets over SVM^light and 20 over SVM^perf,
+while obtaining the same precise Support Vector solution. OCAS even in the early
+optimization steps shows often faster convergence than the so far in this domain
+prevailing approximative methods SGD and Pegasos. Effectively parallelizing
+OCAS we were able to train on a dataset of size 15 million examples
+(itself about 32GB in size) in just 671 seconds --- a competing string kernel SVM
+required 97,484 seconds to train on 10 million examples sub-sampled from this
+dataset.
+
+<p>
+<img align="top" border="0" src="new.gif">The library also implements COFFIN framework for
+efficient training of translation invariant image classifiers from virtual
+examples. As an example, we used the implemented framework to train a linear SVM
+on a gender classification dataset of almost 5 million images on a plain
+notebook with just 4GB of memory.
+
+
+<h4>Features</h4>
+
+<ul>
+ <li>SVM solvers for training linear classifiers from large scale-data.</li>
+ <li>Binary (two-class) and genuine multi-class SVM formulations.</li>
+ <li>Optimized code written in C.</li>
+ <li>A stand alone application and MEX interface for Matlab.</li>
+ <li>Reads examples from SVM^light format.</li>
+ <li>Optimized for both sparse and dense features.</li>
+ <li>Parallelized version of the binary solver.</li>
+ <li>Allows using different C for each training example (Matlab's interace to binary solver).</li>
+ <li>Tools for classification.</li>
+ <li><img align="top" border="0" src="new.gif"> Training translation invariant image classifiers from virtual examples.</li>
+ <li><img align="top" border="0" src="new.gif"> Functions for computing image features based on Local Binary Patterns (LBP).</li>
+
+</ul>
+
+<h4>Problem formulation</h4>
+
+OCAS solver is currently implemented for training binary (two-class) and multi-class
+SVM classifiers:
+
+<p><b>1. Binary classification problem:</b> OCAS solves the following unconstrained convex optimization task
+<div align="center">
+ <img align="top" vspace="2" src="linear_svm_sc.png">
+</div>
+where <img align="top" src="C_sc.png"> is the regularization constant and
+<img align="top" border="0" src="trn_set_sc.png"> are training examples. The result is
+the parameter vector <img align="top" border="0" src="w_sc.png"> of the linear rule
+<img align="top" border="0" src="lin_rule_sc.png">
+which assigns vector <img align="top" border="0" src="x_sc.png"> a class label +1 and/or -1.
+
+<p><b>2. Multi-class classification probem:</b> OCAS solves the following unconstrained convex optimization task
+<div align="center">
+ <img align="top" vspace="2" src="multi_linear_svm_sc.png">
+</div>
+where <img align="top" src="C_sc.png"> is the regularization constant,
+<img align="top" border="0" src="set_y_sc.png"> is a finite set of labels and
+<img align="top" border="0" src="multi_trn_set_sc.png"> are training
+examples. The result is a set of parameter vectors <img align="top"
+border="0" src="multi_w_sc.png"> of the linear rule
+<img align="top" border="0" src="multi_lin_rule_sc.png">
+which assigns vector <img align="top" border="0" src="x_sc.png"> a class label
+from <img align="top" border="0" src="set_y_sc.png">.
+
+<h4>Download</h4>
+
+LIBOCAS can be downloaded from here:
+<ul>
+ <li><img align="top" border="0" src="new.gif"> Version 0.93, 2010-06-11, <a
+ href="http://cmp.felk.cvut.cz/~xfrancv/ocas/libocas_v093.zip">libocas_v093.zip</a> </li>
+ <li>Version 0.92, 2008-08-03, <a
+ href="http://cmp.felk.cvut.cz/~xfrancv/ocas/libocas_v092.zip">libocas_v092.zip</a> </li>
+ <li>Version 0.91, 2008-07-14, <a
+ href="http://cmp.felk.cvut.cz/~xfrancv/ocas/libocas_v091.zip">libocas_v091.zip</a> </li>
+ <li>Version 0.90, 2008-10-12, <a
+ href="http://cmp.felk.cvut.cz/~xfrancv/ocas/libocas_v09.zip">libocas_v09.zip</a> </li>
+</ul>
+
+<h4><a href="ChangeLog">Change Log</a></h4>
+
+<h4>Platforms</h4>
+
+GNU/Linux.
+
+<h4>Licensing Information</h4>
+
+LIBOCAS is licensed under the GPL version 3.
+
+<h4>References</h4>
+
+<ul>
+<li>S. Sonnenburg, V. Franc. <b>COFFIN: A Computational Framework for Linear SVMs.</b>
+ <i> In Proceedings of ICML.</i> Haifa, 2010.
+ [<a href="http://cmp.felk.cvut.cz/~xfrancv/papers/Sonnenburg-COFFIN-ICML10.pdf">pdf</a>]</li>
+
+<li>V. Franc, S. Sonnenburg. <b>Optimized Cutting Plane Algorithm for Large-Scale
+ Risk Minimization. </b> <i>The Journal of Machine Learning Research (JMLR)</i>,
+ vol. 10, pp. 2157--2192. October 2009. [<a href="http://jmlr.csail.mit.edu/papers/volume10/franc09a/franc09a.pdf">pdf</a>]</li>
+
+<li>V. Franc, S. Sonnenburg. <b>OCAS optimized cutting plane algorithm for Support Vector
+ Machines</b>. <i>In Proceedings of ICML</i>. Helsinki, 2008.
+[<a href="http://cmp.felk.cvut.cz/~xfrancv/papers/Franc-OCAS-ICML08.pdf">pdf</a>]</li>
+
+</ul>
+
+</BODY>
+</HTML>
diff --git a/html/lin_rule_sc.png b/html/lin_rule_sc.png
new file mode 100644
index 0000000..ca6e2f6
Binary files /dev/null and b/html/lin_rule_sc.png differ
diff --git a/html/linear_svm_sc.png b/html/linear_svm_sc.png
new file mode 100644
index 0000000..360023a
Binary files /dev/null and b/html/linear_svm_sc.png differ
diff --git a/html/makros.tex b/html/makros.tex
new file mode 100644
index 0000000..1fbd235
--- /dev/null
+++ b/html/makros.tex
@@ -0,0 +1,144 @@
+%---------------------------------------------------------------------------
+% Title: TeX makros
+% Modifications:
+% 16-Mar-2005, VF
+% 16-May-2003, VF
+%---------------------------------------------------------------------------
+
+%\newtheorem{corrolary}[theorem]{Corrolary}
+%\newtheorem{theorem}{theorem}[section]
+
+\newcommand{\head}[1]{\par\medskip\noindent{\bf #1: }}
+\newcommand{\rem}[1]{{\it \color{red} #1}}
+
+
+\def\proof{\noindent\mbox{\sc proof: }}
+\def\eproof{\rm\hspace*{\fill}$\rule{7pt}{7pt}$\vspace{10pt}}
+
+%-- MMMakro ------------------
+\def\##1{\relax\ifmmode\mathchoice % italic bold vector, e.g. $\#{x}$
+{\mbox{\boldmath$\displaystyle#1$}}
+{\mbox{\boldmath$\textstyle#1$}}
+{\mbox{\boldmath$\scriptstyle#1$}}
+{\mbox{\boldmath$\scriptscriptstyle#1$}}\else
+\hbox{\boldmath$\textstyle#1$}\fi}
+\def\m#1{\mathbf{#1}} % bold matrix, e.g. $\m{A}$
+%---------------------------------------
+
+\def\dQ{\mathrm{d}Q}
+\def\bar#1{\overline{#1}}
+
+\def\Emph#1{\emph{#1}}
+\def\Const#1{\mathrm{#1}}
+
+\def\boxit#1{\vbox{\hrule\hbox{\vrule\vbox{\medskip\noindent#1
+ \medskip}\vrule}\hrule}}
+
+\newcommand{\enVert}[1]{\left\lVert#1\right\rVert}
+\let\norm=\enVert
+
+\renewcommand{\Re}{\mathbb{R}}
+\newcommand{\Ne}{\mathbb{N}}
+\newcommand{\Na}{\mathbb{N}}
+\newcommand{\FF}{\cal F}
+\newcommand{\FX}{\cal X}
+\newcommand{\FR}{\Re^n}
+%\newcommand{\FS}{{S}}
+%\newcommand{\dim}{\mathop dim}
+
+\newcommand{\transpose}{{\text{T}}}
+\newcommand{\w}{{\boldsymbol{w}}}
+\newcommand{\xib}{{\boldsymbol{\xi}}}
+\newcommand{\x}{{\boldsymbol{x}}}
+\newcommand{\SG}{{\cal G}}
+\newcommand{\SA}{{\cal A}}
+\newcommand{\SB}{{\cal B}}
+\newcommand{\SE}{{\cal E}}
+\newcommand{\SF}{{\cal F}}
+\newcommand{\SX}{{\cal X}}
+\newcommand{\SCX}{\overline{\cal X}}
+\newcommand{\SFX}{\tilde{\cal X}}
+\newcommand{\SIsv}{{{\cal I}_{\emptyset}}}
+\newcommand{\SY}{{\cal Y}}
+\newcommand{\SZ}{{\cal Z}}
+\newcommand{\ST}{{\cal T}}
+\newcommand{\SH}{{\cal H}}
+\newcommand{\SM}{{\cal M}}
+\newcommand{\SC}{{\cal C}}
+\newcommand{\SN}{{\cal N}}
+\newcommand{\SW}{{\cal W}}
+\newcommand{\Ssv}{{\cal S}}
+\newcommand{\Ss}{{\cal S}}
+\newcommand{\SQ}{{\cal Q}}
+\newcommand{\SR}{\Re^n}
+\newcommand{\SI}{{\cal I}}
+\newcommand{\SO}{{\cal O}}
+\newcommand{\SJ}{{\cal J}}
+\newcommand{\SL}{{\cal L}}
+\newcommand{\SD}{{\cal D}}
+\newcommand{\SV}{{\cal V}}
+\newcommand{\STheta}{\Theta}
+\newcommand{\SSV}{{\cal I_{SV}}}
+
+\newcommand{\eye}{\m{E}}
+\newcommand{\one}{{\cal \m{1}}}
+\newcommand{\nconst}{r}
+
+\def\M3N{M$^3$N}
+
+
+\def\kmse{\mathbb{\varepsilon}_{KMS}}
+\def\mse{\mathbb{\varepsilon}_{MS}}
+\def\qe{\mathbb{\varepsilon}_{QE}}
+\def\rerr{\mathbb{\varepsilon}_{R}}
+\def\tsterr{ \mathop{\rm TstErr}}
+\def\nsv{ nsv }
+\def\maxerr{\mathop{\rm \varepsilon_{max}}}
+%\def\keval{\mathop{\rm KerEval}}
+\def\keval{\mathop{\rm ker\_eval}}
+\def\cputime{\mathop{ \rm CPU_{time}}}
+\def\ls{\mathop{\rm \varepsilon_{LS}}}
+\def\Err{ \mathop{\rm Err}}
+\def\snr{\mathop{\rm SNR}}
+\def\dontknow{\mathop{\rm dont\_know}}
+
+\def\beq{\begin{equation}}
+\def\eeq{\end{equation}}
+\def\equ#1{(\ref{#1})}
+
+\def\veps{\varepsilon}
+\def\Veps{\Varepsilon}
+
+\def\lin{\mathop{\rm lin}}
+\def\argmax{\mathop{\rm argmax}}
+\def\argmin{\mathop{\rm argmin}}
+\def\Span{\mathop{\rm Span}}
+\def\Card{\mathop{\rm Card}}
+\def\Con{\mathop{\rm co}}
+\def\diag{\mathop{\rm diag}}
+\def\sgn{\mathop{\rm sgn}}
+
+\def\nm#1{\#\phi(#1)}
+\def\tnm#1{\tilde{\#\phi}(#1)}
+\def\tv#1{{\tilde{\##1}}}
+
+\def\lz{\langle}
+\def\pz{\rangle}
+
+\def\det#1{\mathop{\rm det} ({#1} )}
+
+\def\alphat{\#\alpha^{(t)}}
+\def\clip{\mathop{\rm clip}}
+\def\sgn{\mathop{\rm sgn}}
+
+\def\leftbb{\mathopen{\rlap{$[$}\hskip1.3pt[}}
+\def\rightbb{\mathclose{\rlap{$]$}\hskip1.3pt]}}
+\def\ass{\mathrel {:=}}
+\newcommand{\vphi}{\varphi}
+\newcommand{\boldvphi}{\#\varphi}
+
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "makros"
+%%% TeX-master: "disertace"
+%%% End:
diff --git a/html/multi_lin_rule_sc.png b/html/multi_lin_rule_sc.png
new file mode 100644
index 0000000..68e36fe
Binary files /dev/null and b/html/multi_lin_rule_sc.png differ
diff --git a/html/multi_linear_svm_sc.png b/html/multi_linear_svm_sc.png
new file mode 100644
index 0000000..2d03a9e
Binary files /dev/null and b/html/multi_linear_svm_sc.png differ
diff --git a/html/multi_trn_set_sc.png b/html/multi_trn_set_sc.png
new file mode 100644
index 0000000..68ed1ed
Binary files /dev/null and b/html/multi_trn_set_sc.png differ
diff --git a/html/multi_w_sc.png b/html/multi_w_sc.png
new file mode 100644
index 0000000..6b71da1
Binary files /dev/null and b/html/multi_w_sc.png differ
diff --git a/html/new.gif b/html/new.gif
new file mode 100644
index 0000000..cf0aa03
Binary files /dev/null and b/html/new.gif differ
diff --git a/html/set_y_sc.png b/html/set_y_sc.png
new file mode 100644
index 0000000..b2eebc4
Binary files /dev/null and b/html/set_y_sc.png differ
diff --git a/html/trn_set_sc.png b/html/trn_set_sc.png
new file mode 100644
index 0000000..d0bf1cb
Binary files /dev/null and b/html/trn_set_sc.png differ
diff --git a/html/w_sc.png b/html/w_sc.png
new file mode 100644
index 0000000..c64cc0d
Binary files /dev/null and b/html/w_sc.png differ
diff --git a/html/wx_sc.png b/html/wx_sc.png
new file mode 100644
index 0000000..ed0752b
Binary files /dev/null and b/html/wx_sc.png differ
diff --git a/html/x_sc.png b/html/x_sc.png
new file mode 100644
index 0000000..3bfc967
Binary files /dev/null and b/html/x_sc.png differ
diff --git a/lbpfilter_mex.c b/lbpfilter_mex.c
new file mode 100644
index 0000000..5681682
--- /dev/null
+++ b/lbpfilter_mex.c
@@ -0,0 +1,78 @@
+/*=================================================================
+ * LBPFILTER computes LBP for each 3x3 subwindow in input image.
+ *
+ * Synopsis:
+ * F = lbpfilter(I)
+ * where
+ * I [h x w (double)] is input image.
+ * F [h x w (double)] is image of LBP responses;
+ * the border colums and rows, for which LBP is not defined, are set 0.
+ *
+ *=================================================================*/
+
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+#include <mex.h>
+#include <time.h>
+#include <errno.h>
+
+#define MIN(A,B) ((A) > (B) ? (B) : (A))
+#define MAX(A,B) ((A) < (B) ? (B) : (A))
+#define ABS(A) ((A) < 0 ? -(A) : (A))
+#define INDEX(ROW,COL,NUM_ROWS) ((COL)*(NUM_ROWS)+(ROW))
+
+
+/*======================================================================
+ Main code plus interface to Matlab.
+========================================================================*/
+
+void mexFunction( int nlhs, mxArray *plhs[],int nrhs, const mxArray *prhs[] )
+{
+
+ double *I, *P;
+ int w,h, x,y;
+ double center;
+ unsigned char pattern;
+
+ if( nrhs != 1 )
+ mexErrMsgTxt("One input argument required.\n\n"
+ "LBPFILTER computes LBP for each 3x3 subwindow in input image.\n"
+ "\n"
+ "Synopsis:\n"
+ " F = lbpfilter(I)\n"
+ "where\n"
+ " I [h x w (double)] is input image.\n"
+ " F [h x w (double)] is image of LBP responses; \n"
+ " the border colums and rows, for which LBP is not defined, are set 0.\n"
+ );
+
+ I = (double*)mxGetPr(prhs[0]);
+ h = mxGetM(prhs[0]);
+ w = mxGetN(prhs[0]);
+
+ plhs[0] = mxCreateDoubleMatrix(h,w,mxREAL);
+ P = (double*)mxGetPr(plhs[0]);
+
+ for(x=1; x < w-1; x++)
+ {
+ for(y=1; y< h-1; y++)
+ {
+ pattern = 0;
+ center = I[INDEX(y,x,h)];
+ if(I[INDEX(y-1,x-1,h)] < center) pattern = pattern | 0x01;
+ if(I[INDEX(y-1,x,h)] < center) pattern = pattern | 0x02;
+ if(I[INDEX(y-1,x+1,h)] < center) pattern = pattern | 0x04;
+ if(I[INDEX(y,x-1,h)] < center) pattern = pattern | 0x08;
+ if(I[INDEX(y,x+1,h)] < center) pattern = pattern | 0x10;
+ if(I[INDEX(y+1,x-1,h)] < center) pattern = pattern | 0x20;
+ if(I[INDEX(y+1,x,h)] < center) pattern = pattern | 0x40;
+ if(I[INDEX(y+1,x+1,h)] < center) pattern = pattern | 0x80;
+
+ P[INDEX(y,x,h)] = (double)pattern;
+ }
+ }
+
+ return;
+}
+
diff --git a/lbppyr.m b/lbppyr.m
new file mode 100644
index 0000000..cfcba4b
--- /dev/null
+++ b/lbppyr.m
@@ -0,0 +1,59 @@
+function F = lbppyr(I, P)
+% LBPPYR computes LBP features on scale-pyramid of input image.
+%
+% Synopsis:
+% F = lbppyr(I, P)
+%
+% Description:
+% Local Binary Pattern (LBP) is 1 Byte number which encodes grey-scale
+% intensities of a given 3x3 window.
+%
+% For P = 1, LBPPYR computes LBP features for all 3x3 windows
+% in the input image I. The LBP features are stucked to a column
+% vector F.
+%
+% For P > 1, the input image I is down-scaled (P-1)-times to create
+% a scale-pyramid of height P. Each subsequent level of the pyramid is
+% obtained by downscaling the original image by 2. Having the pyramid,
+% the LBP features are computed on each leavel of the pyramid and
+% they are stucked to a column vector F.
+%
+% For more details on LBP see:
+% Ojala, et. al: Multiresolution gray-scale and rotation invariant
+% texture classification with local binary patterns. IEEE PAMI,
+% 24(7):971-987,2002.
+%
+% Input:
+% I [H x W (uint8)] Input image.
+% lbp_pyramid [1 x 1] Height of the LBP pyramids.
+%
+% Output:
+% F [nDim x 1] LBP features stucked to a column vector.
+%
+% Example:
+% I = imread('./data/lena.jpg');
+% F = lbppyr(I,4);
+%
+% Matlab code equivalent to LBPPYR_MEX.C:
+%
+% [h,w] = size(I);
+% I = uint32(I);
+% F = [];
+% k = 1;
+% while k <= P & min(w,h) >= 3
+% k = k + 1;
+% tmp = lbpfilter(double(I));
+% tmp = tmp(2:end-1,2:end-1);
+% F = [F; tmp(:)];
+% if mod(w,2) == 1
+% I = I(:,1:w-1);
+% w= w - 1;
+% end
+% if mod(h,2) == 1
+% I = I(1:h-1,:);
+% h = h - 1;
+% end
+% I = I(1:2:h,1:2:w)+I(1:2:h,2:2:w)+I(2:2:h,1:2:w)+I(2:2:h,2:2:w);
+% [h,w] = size(I);
+% end
+%
\ No newline at end of file
diff --git a/lbppyr_features_mex.c b/lbppyr_features_mex.c
new file mode 100644
index 0000000..e31ab8b
--- /dev/null
+++ b/lbppyr_features_mex.c
@@ -0,0 +1,160 @@
+/*=================================================================================
+ * LBPPYR_FEATURES computes pyramid of LBP features for each defined window in input images.
+ *
+ * Synopsis:
+ * [Feature,CroppedWin]= lbppyr_features(Images,imSize,Wins,winSize,height_of_pyramid,verb)
+ * Input:
+ * Images [(im_H*im_W) x nImages (uint8)]
+ * imSize [2 x 1 (double)] imSize = [im_H im_W]
+ * Wins [4 x nExamples (uint32)] [image_index; top_left_col; top_left_row; mirror]
+ * winSize [2 x 1 (double)] [win_H win_W]
+ * height_of_pyramid [1 x 1 (double)]
+ * Output:
+ * Features [nDims x nExamples (int8)]
+ * CroppedWin [(win_H*win_W) x nExamples]
+ *
+ *======================================================================================*/
+
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+#include <mex.h>
+
+#define INDEX(ROW,COL,NUM_ROWS) ((COL)*(NUM_ROWS)+(ROW))
+
+
+/*======================================================================
+ Main code plus interface to Matlab.
+========================================================================*/
+
+void mexFunction( int nlhs, mxArray *plhs[],int nrhs, const mxArray *prhs[] )
+{
+ uint32_t i, j;
+ double *tmp;
+ char *Features ;
+ uint8_t *CroppedWin;
+ int verb;
+
+ if(nrhs < 5 || nrhs > 6)
+ mexErrMsgTxt("Improper number of input arguments.\n\n"
+ "LBPPYR_FEATURES computes pyramid of LBP features for each defined window in input images.\n\n"
+ "Synopsis: \n"
+ " [Features,CroppedWin]= lbppyr_features(Images,imSize,Wins,winSize,height_of_pyramid,verb) \n"
+ "\n"
+ " Input: \n"
+ " Images [(im_H*im_W) x nImages (uint8)]\n"
+ " imSize [2 x 1 (double)] imSize = [im_H im_W]\n"
+ " Wins [3 x nExamples (uint32)] [image_idx; x1; y1;mirror] (1-based)\n"
+ " winSize [2 x 1 (double)] [win_H win_W]\n"
+ " height_of_pyramid [1 x 1 (double)]\n"
+ " verb [1x1] \n"
+ " Output: \n"
+ " Features [nDims x nExamples (char)]\n"
+ " CroppedWin [(win_H*win_W) x nExamples]\n");
+
+ if(nrhs == 6)
+ verb = (int)mxGetScalar(prhs[5]);
+ else
+ verb = 1;
+
+ uint8_t * Images = (uint8_t*)mxGetPr(prhs[0]);
+ uint32_t nImages = mxGetN(prhs[0]);
+
+ tmp = (double*)mxGetPr(prhs[1]);
+ uint32_t im_H = (uint32_t)tmp[0];
+ uint32_t im_W = (uint32_t)tmp[1];
+
+ if(mxGetM(prhs[0]) != im_H*im_W)
+ mexErrMsgTxt("Dimension of Images does not match to im_H*im_W.");
+
+ uint32_t *Wins = (uint32_t*)mxGetPr(prhs[2]);
+
+ tmp = (double*)mxGetPr(prhs[3]);
+ uint16_t win_H = (uint16_t)tmp[0];
+ uint16_t win_W = (uint16_t)tmp[1];
+
+ uint16_t nPyramids = (uint32_t)mxGetScalar(prhs[4]);
+ uint32_t nDim = liblbp_pyr_get_dim(win_H,win_W,nPyramids);
+
+ uint32_t nData = mxGetN(prhs[2]);
+
+ if(verb)
+ {
+ mexPrintf("Input data:\n"
+ " # of images : %d\n"
+ " image height : %d\n"
+ " image width : %d\n",
+ nImages, im_H, im_W);
+
+ mexPrintf("Feature represenation:\n"
+ " base window height : %d\n"
+ " base window width : %d\n"
+ " nPyramids : %d\n"
+ " # of virtual examples : %d\n"
+ " # of features per example : %d\n",
+ win_H, win_W, nPyramids, nData, nDim);
+ }
+
+ /* learned weight vector */
+/* plhs[0] = mxCreateNumericMatrix(nDim,nData, mxINT64_CLASS, mxREAL);*/
+/* Features = (int64_t*)mxGetPr(plhs[0]);*/
+ plhs[0] = mxCreateNumericMatrix(nDim,nData, mxINT8_CLASS, mxREAL);
+ Features = (char*)mxGetPr(plhs[0]);
+
+ plhs[1] = mxCreateNumericMatrix(win_H*win_W, nData, mxUINT8_CLASS, mxREAL);
+ CroppedWin = (uint8_t*)mxGetPr(plhs[1]);
+
+
+ uint32_t cnt, cnt0, mirror,x,x1,y,y1,idx;
+ uint32_t *win;
+ uint8_t *img_ptr;
+
+ win = (uint32_t*)mxCalloc(win_H*win_W,sizeof(uint32_t));
+ if(win == NULL)
+ mexErrMsgTxt("Not enough memory for croped_window.");
+
+ cnt=0;
+ for(i=0; i < nData; i++)
+ {
+
+ idx = Wins[INDEX(0,i,4)]-1;
+ x1 = Wins[INDEX(1,i,4)]-1;
+ y1 = Wins[INDEX(2,i,4)]-1;
+ mirror = Wins[INDEX(3,i,4)];
+
+ img_ptr = &Images[idx*im_H*im_W];
+
+ cnt0 = 0;
+ if(mirror==0)
+ {
+ for(x=x1; x < x1+win_W; x++)
+ for(y=y1; y < y1+win_H; y++)
+ {
+ CroppedWin[cnt++] = img_ptr[INDEX(y,x,im_H)];
+ win[cnt0++] = img_ptr[INDEX(y,x,im_H)];
+ }
+
+ }
+ else
+ {
+ for(x=x1+win_W-1; x >= x1; x--)
+ for(y=y1; y < y1+win_H; y++)
+ {
+ CroppedWin[cnt++] = img_ptr[INDEX(y,x,im_H)];
+ win[cnt0++] = img_ptr[INDEX(y,x,im_H)];
+ }
+ }
+
+/* lbppyr_features(uint32_t *vec, uint32_t *win);*/
+/* liblbp_pyr_features( &Features[nDim*i], win);*/
+/* mexPrintf("i=%d, nDim=%d, im_H=%d, im_W=%d\n", i,nDim,im_H,im_W);*/
+ liblbp_pyr_features(&Features[nDim*i], nDim, win, win_H, win_W);
+
+
+ }
+
+ mxFree(win);
+
+ return;
+}
+
diff --git a/lbppyr_mex.c b/lbppyr_mex.c
new file mode 100644
index 0000000..a005149
--- /dev/null
+++ b/lbppyr_mex.c
@@ -0,0 +1,134 @@
+/*=================================================================
+ * LBPPYR computes LBP features on scale-pyramid of input image.
+ *
+ * Synopsis:
+ * F = lbppyr_mat(I, P)
+ * where
+ * I [H x W (uint8)] is input image.
+ * P [1 x 1 (double)] is height of the scale-pyramid.
+ * F [N x 1 (uint8)] LBP features stucked to a column vector.
+ *
+ *=================================================================*/
+
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+#include <mex.h>
+#include <time.h>
+#include <errno.h>
+
+#define MIN(A,B) ((A) > (B) ? (B) : (A))
+#define MAX(A,B) ((A) < (B) ? (B) : (A))
+#define ABS(A) ((A) < 0 ? -(A) : (A))
+#define INDEX(ROW,COL,NUM_ROWS) ((COL)*(NUM_ROWS)+(ROW))
+
+
+/*======================================================================
+ Main code plus interface to Matlab.
+========================================================================*/
+
+void mexFunction( int nlhs, mxArray *plhs[],int nrhs, const mxArray *prhs[] )
+{
+
+ uint8_t *I, K;
+ uint32_t *P;
+ uint32_t *J;
+ int w,h,x,y,i,j,N;
+ int ww,hh;
+ uint32_t center;
+ uint32_t offset;
+ uint8_t pattern;
+
+ if( nrhs != 2 )
+ mexErrMsgTxt("Two input arguments required.\n\n"
+ "LBPPYR computes LBP features on scale-pyramid of input image.\n"
+ "Synopsis:\n"
+ " F = lbppyr(I, P)\n"
+ "where\n"
+ " I [H x W (uint8)] is input image.\n"
+ " P [1 x 1 (double)] is height of the scale-pyramid.\n"
+ " F [N x 1 (uint8)] LBP features stucked to a column vector. \n");
+
+ I = (uint8_t*)mxGetPr(prhs[0]);
+ K = (uint8_t)mxGetScalar(prhs[1]);
+
+ h = mxGetM(prhs[0]);
+ w = mxGetN(prhs[0]);
+
+ /* printf("h: %d\n", h);
+ printf("w: %d\n", w);
+ printf("K: %d\n", K);
+ */
+
+ /* count number of LBPs */
+ for(ww=w, hh=h, N=0, i=0; i < K && MIN(ww,hh) >= 3; i++)
+ {
+ N += (ww-2)*(hh-2);
+
+ if(ww % 2) ww--;
+ if(hh % 2) hh--;
+ ww = ww/2;
+ hh = hh/2;
+ }
+ K = i;
+ N = 256*N;
+
+/* printf("N: %d (=256*%d)\n", N,N/256);*/
+/* printf("K: %d\n",K);*/
+ /* printf("%d/%d = %d*%d + %d \n", b,a, a, b/a, b % a);*/
+
+ plhs[0] = mxCreateNumericMatrix(N, 1, mxUINT32_CLASS, mxREAL);
+ P = (uint32_t*)mxGetPr(plhs[0]);
+
+ J = mxCalloc(h*w, sizeof(uint32_t));
+ if(J ==NULL)
+ mexErrMsgTxt("Not enough memory.");
+
+ for(x=0; x < w; x++)
+ for(y=0; y < h; y++)
+ J[INDEX(y,x,h)] = I[INDEX(y,x,h)];
+
+ for(ww=w, hh=h, i=0, offset = 0; i < K; i++)
+ {
+ for(x=1; x < ww-1; x++)
+ {
+ for(y=1; y< hh-1; y++)
+ {
+ pattern = 0;
+ center = J[INDEX(y,x,h)];
+ if(J[INDEX(y-1,x-1,h)] < center) pattern = pattern | 0x01;
+ if(J[INDEX(y-1,x,h)] < center) pattern = pattern | 0x02;
+ if(J[INDEX(y-1,x+1,h)] < center) pattern = pattern | 0x04;
+ if(J[INDEX(y,x-1,h)] < center) pattern = pattern | 0x08;
+ if(J[INDEX(y,x+1,h)] < center) pattern = pattern | 0x10;
+ if(J[INDEX(y+1,x-1,h)] < center) pattern = pattern | 0x20;
+ if(J[INDEX(y+1,x,h)] < center) pattern = pattern | 0x40;
+ if(J[INDEX(y+1,x+1,h)] < center) pattern = pattern | 0x80;
+
+ /* P[cnt++] = pattern; */
+ P[offset+pattern] = 1;
+ offset += 256;
+ }
+ }
+
+ if( i < K-1 )
+ {
+ if(ww % 2 == 1) ww--;
+ if(hh % 2 == 1) hh--;
+
+ ww = ww/2;
+ for(x=0; x < ww; x++)
+ for(j=0; j < hh; j++)
+ J[INDEX(j,x,h)] = J[INDEX(j,2*x,h)] + J[INDEX(j,2*x+1,h)];
+
+ hh = hh/2;
+ for(y=0; y < hh; y++)
+ for(j=0; j < ww; j++)
+ J[INDEX(y,j,h)] = J[INDEX(2*y,j,h)] + J[INDEX(2*y+1,j,h)];
+ }
+
+ }
+
+ return;
+}
+
diff --git a/lib_svmlight_format.c b/lib_svmlight_format.c
new file mode 100644
index 0000000..135d33d
--- /dev/null
+++ b/lib_svmlight_format.c
@@ -0,0 +1,97 @@
+#include "lib_svmlight_format.h"
+
+static int32_t next_occurence(char *line, int32_t start, char what)
+{
+ int32_t i;
+ for(i=start; i < LIBSLF_MAXLINELEN && line[i] != '\0'; i++)
+ {
+ if(line[i] == what)
+ return(i);
+ }
+
+ return(-1);
+}
+
+int32_t svmlight_format_parse_line(char *line, int32_t *label, uint32_t *feat_idx, double *feat_val)
+{
+ int32_t beg, end, nnzf=0;
+
+ end = next_occurence(line,0,' ');
+ beg = end;
+ if(end == -1)
+ return(-1);
+
+ *label = (int32_t)atol(line);
+
+ int go = 1;
+ while(go) {
+ end = next_occurence(line,beg,':');
+
+ if(end == -1)
+ return(nnzf);
+
+ feat_idx[nnzf] = (uint32_t)atol(&line[beg]);
+
+ beg = end + 1;
+
+ end = next_occurence(line,beg,' ');
+ if(end == -1) {
+ end = next_occurence(line,beg,'\n');
+ if(end == -1)
+ return(-1);
+
+ go = 0;
+ }
+
+ feat_val[nnzf] = atof(&line[beg]);
+
+ beg = end;
+
+ nnzf++;
+ }
+
+ return(nnzf);
+}
+
+
+/* difference to svmlight_format_parse_line is that here the label is float */
+int32_t svmlight_format_parse_line_doubley(char *line, double *label, uint32_t *feat_idx, double *feat_val)
+{
+ int32_t beg, end, nnzf=0;
+
+ end = next_occurence(line,0,' ');
+ beg = end;
+ if(end == -1)
+ return(-1);
+
+ *label = (double)atof(line);
+
+ int go = 1;
+ while(go) {
+ end = next_occurence(line,beg,':');
+
+ if(end == -1)
+ return(nnzf);
+
+ feat_idx[nnzf] = (uint32_t)atol(&line[beg]);
+
+ beg = end + 1;
+
+ end = next_occurence(line,beg,' ');
+ if(end == -1) {
+ end = next_occurence(line,beg,'\n');
+ if(end == -1)
+ return(-1);
+
+ go = 0;
+ }
+
+ feat_val[nnzf] = atof(&line[beg]);
+
+ beg = end;
+
+ nnzf++;
+ }
+
+ return(nnzf);
+}
diff --git a/lib_svmlight_format.h b/lib_svmlight_format.h
new file mode 100644
index 0000000..952ed69
--- /dev/null
+++ b/lib_svmlight_format.h
@@ -0,0 +1,13 @@
+#ifndef lib_svmlight_format_h
+#define lib_svmlight_format_h
+
+#include <stdlib.h>
+#include <stdint.h>
+
+#define LIBSLF_MAXLINELEN 1000000
+
+int32_t svmlight_format_parse_line(char *line, int32_t *label, uint32_t *feat_idx, double *feat_val);
+int32_t svmlight_format_parse_line_doubley(char *line, double *label, uint32_t *feat_idx, double *feat_val);
+
+
+#endif
diff --git a/liblbp.c b/liblbp.c
new file mode 100644
index 0000000..4a8125d
--- /dev/null
+++ b/liblbp.c
@@ -0,0 +1,257 @@
+#include "liblbp.h"
+
+
+/*-----------------------------------------------------------------------
+ -----------------------------------------------------------------------*/
+void liblbp_pyr_features(char *vec, uint32_t vec_nDim, uint32_t *img, uint16_t img_nRows, uint16_t img_nCols )
+{
+ uint32_t offset, ww, hh, x, y,center,j ;
+ uint8_t pattern;
+
+ offset=0;
+/* ww=win_W;*/
+/* hh=win_H;*/
+ ww=img_nCols;
+ hh=img_nRows;
+ while(1)
+ {
+ for(x=1; x < ww-1; x++)
+ {
+ for(y=1; y< hh-1; y++)
+ {
+ pattern = 0;
+ center = img[LIBLBP_INDEX(y,x,img_nRows)];
+ if(img[LIBLBP_INDEX(y-1,x-1,img_nRows)] < center) pattern = pattern | 0x01;
+ if(img[LIBLBP_INDEX(y-1,x,img_nRows)] < center) pattern = pattern | 0x02;
+ if(img[LIBLBP_INDEX(y-1,x+1,img_nRows)] < center) pattern = pattern | 0x04;
+ if(img[LIBLBP_INDEX(y,x-1,img_nRows)] < center) pattern = pattern | 0x08;
+ if(img[LIBLBP_INDEX(y,x+1,img_nRows)] < center) pattern = pattern | 0x10;
+ if(img[LIBLBP_INDEX(y+1,x-1,img_nRows)] < center) pattern = pattern | 0x20;
+ if(img[LIBLBP_INDEX(y+1,x,img_nRows)] < center) pattern = pattern | 0x40;
+ if(img[LIBLBP_INDEX(y+1,x+1,img_nRows)] < center) pattern = pattern | 0x80;
+
+ vec[offset+pattern]++;
+ offset += 256;
+
+ }
+ }
+ if(vec_nDim <= offset)
+ return;
+
+ if(ww % 2 == 1) ww--;
+ if(hh % 2 == 1) hh--;
+
+ ww = ww/2;
+ for(x=0; x < ww; x++)
+ for(j=0; j < hh; j++)
+ img[LIBLBP_INDEX(j,x,img_nRows)] = img[LIBLBP_INDEX(j,2*x,img_nRows)] +
+ img[LIBLBP_INDEX(j,2*x+1,img_nRows)];
+
+ hh = hh/2;
+ for(y=0; y < hh; y++)
+ for(j=0; j < ww; j++)
+ img[LIBLBP_INDEX(y,j,img_nRows)] = img[LIBLBP_INDEX(2*y,j,img_nRows)] +
+ img[LIBLBP_INDEX(2*y+1,j,img_nRows)];
+
+ }
+
+ return;
+}
+
+
+/*-----------------------------------------------------------------------
+ -----------------------------------------------------------------------*/
+double liblbp_pyr_dotprod(double *vec, uint32_t vec_nDim, uint32_t *img, uint16_t img_nRows, uint16_t img_nCols)
+{
+ double dot_prod = 0;
+ uint32_t offset=0;
+ uint32_t ww, hh, center, x, y, j;
+ uint8_t pattern;
+
+/* ww=win_W;*/
+/* hh=win_H;*/
+ ww=img_nCols;
+ hh=img_nRows;
+ while(1)
+ {
+ for(x=1; x < ww-1; x++)
+ {
+ for(y=1; y< hh-1; y++)
+ {
+ pattern = 0;
+ center = img[LIBLBP_INDEX(y,x,img_nRows)];
+ if(img[LIBLBP_INDEX(y-1,x-1,img_nRows)] < center) pattern = pattern | 0x01;
+ if(img[LIBLBP_INDEX(y-1,x,img_nRows)] < center) pattern = pattern | 0x02;
+ if(img[LIBLBP_INDEX(y-1,x+1,img_nRows)] < center) pattern = pattern | 0x04;
+ if(img[LIBLBP_INDEX(y,x-1,img_nRows)] < center) pattern = pattern | 0x08;
+ if(img[LIBLBP_INDEX(y,x+1,img_nRows)] < center) pattern = pattern | 0x10;
+ if(img[LIBLBP_INDEX(y+1,x-1,img_nRows)] < center) pattern = pattern | 0x20;
+ if(img[LIBLBP_INDEX(y+1,x,img_nRows)] < center) pattern = pattern | 0x40;
+ if(img[LIBLBP_INDEX(y+1,x+1,img_nRows)] < center) pattern = pattern | 0x80;
+
+ dot_prod += vec[offset+pattern];
+ offset += 256;
+
+
+ }
+ }
+ if(vec_nDim <= offset)
+ return(dot_prod);
+
+
+ if(ww % 2 == 1) ww--;
+ if(hh % 2 == 1) hh--;
+
+ ww = ww/2;
+ for(x=0; x < ww; x++)
+ for(j=0; j < hh; j++)
+ img[LIBLBP_INDEX(j,x,img_nRows)] = img[LIBLBP_INDEX(j,2*x,img_nRows)] +
+ img[LIBLBP_INDEX(j,2*x+1,img_nRows)];
+
+ hh = hh/2;
+ for(y=0; y < hh; y++)
+ for(j=0; j < ww; j++)
+ img[LIBLBP_INDEX(y,j,img_nRows)] = img[LIBLBP_INDEX(2*y,j,img_nRows)] +
+ img[LIBLBP_INDEX(2*y+1,j,img_nRows)];
+ }
+
+
+}
+
+
+/*-----------------------------------------------------------------------
+ -----------------------------------------------------------------------*/
+void liblbp_pyr_addvec(int64_t *vec, uint32_t vec_nDim, uint32_t *img, uint16_t img_nRows, uint16_t img_nCols)
+{
+ uint32_t offset, ww, hh, x, y, center,j ;
+ uint8_t pattern;
+
+ offset=0;
+/* ww=win_W;*/
+/* hh=win_H;*/
+ ww=img_nCols;
+ hh=img_nRows;
+ while(1)
+ {
+ for(x=1; x < ww-1; x++)
+ {
+ for(y=1; y< hh-1; y++)
+ {
+ pattern = 0;
+ center = img[LIBLBP_INDEX(y,x,img_nRows)];
+ if(img[LIBLBP_INDEX(y-1,x-1,img_nRows)] < center) pattern = pattern | 0x01;
+ if(img[LIBLBP_INDEX(y-1,x,img_nRows)] < center) pattern = pattern | 0x02;
+ if(img[LIBLBP_INDEX(y-1,x+1,img_nRows)] < center) pattern = pattern | 0x04;
+ if(img[LIBLBP_INDEX(y,x-1,img_nRows)] < center) pattern = pattern | 0x08;
+ if(img[LIBLBP_INDEX(y,x+1,img_nRows)] < center) pattern = pattern | 0x10;
+ if(img[LIBLBP_INDEX(y+1,x-1,img_nRows)] < center) pattern = pattern | 0x20;
+ if(img[LIBLBP_INDEX(y+1,x,img_nRows)] < center) pattern = pattern | 0x40;
+ if(img[LIBLBP_INDEX(y+1,x+1,img_nRows)] < center) pattern = pattern | 0x80;
+
+ vec[offset+pattern]++;
+ offset += 256;
+
+ }
+ }
+ if(vec_nDim <= offset)
+ return;
+
+ if(ww % 2 == 1) ww--;
+ if(hh % 2 == 1) hh--;
+
+ ww = ww/2;
+ for(x=0; x < ww; x++)
+ for(j=0; j < hh; j++)
+ img[LIBLBP_INDEX(j,x,img_nRows)] = img[LIBLBP_INDEX(j,2*x,img_nRows)] +
+ img[LIBLBP_INDEX(j,2*x+1,img_nRows)];
+
+ hh = hh/2;
+ for(y=0; y < hh; y++)
+ for(j=0; j < ww; j++)
+ img[LIBLBP_INDEX(y,j,img_nRows)] = img[LIBLBP_INDEX(2*y,j,img_nRows)] +
+ img[LIBLBP_INDEX(2*y+1,j,img_nRows)];
+
+ }
+
+ return;
+}
+
+
+
+/*-----------------------------------------------------------------------
+ -----------------------------------------------------------------------*/
+void liblbp_pyr_subvec(int64_t *vec, uint32_t vec_nDim, uint32_t *img, uint16_t img_nRows, uint16_t img_nCols)
+{
+ uint32_t offset, ww, hh, x, y,center,j ;
+ uint8_t pattern;
+
+ offset=0;
+/* ww=win_W;*/
+/* hh=win_H;*/
+ ww=img_nCols;
+ hh=img_nRows;
+ while(1)
+ {
+ for(x=1; x < ww-1; x++)
+ {
+ for(y=1; y< hh-1; y++)
+ {
+ pattern = 0;
+ center = img[LIBLBP_INDEX(y,x,img_nRows)];
+ if(img[LIBLBP_INDEX(y-1,x-1,img_nRows)] < center) pattern = pattern | 0x01;
+ if(img[LIBLBP_INDEX(y-1,x,img_nRows)] < center) pattern = pattern | 0x02;
+ if(img[LIBLBP_INDEX(y-1,x+1,img_nRows)] < center) pattern = pattern | 0x04;
+ if(img[LIBLBP_INDEX(y,x-1,img_nRows)] < center) pattern = pattern | 0x08;
+ if(img[LIBLBP_INDEX(y,x+1,img_nRows)] < center) pattern = pattern | 0x10;
+ if(img[LIBLBP_INDEX(y+1,x-1,img_nRows)] < center) pattern = pattern | 0x20;
+ if(img[LIBLBP_INDEX(y+1,x,img_nRows)] < center) pattern = pattern | 0x40;
+ if(img[LIBLBP_INDEX(y+1,x+1,img_nRows)] < center) pattern = pattern | 0x80;
+
+ vec[offset+pattern]--;
+ offset += 256;
+
+ }
+ }
+ if(vec_nDim <= offset)
+ return;
+
+ if(ww % 2 == 1) ww--;
+ if(hh % 2 == 1) hh--;
+
+ ww = ww/2;
+ for(x=0; x < ww; x++)
+ for(j=0; j < hh; j++)
+ img[LIBLBP_INDEX(j,x,img_nRows)] = img[LIBLBP_INDEX(j,2*x,img_nRows)] +
+ img[LIBLBP_INDEX(j,2*x+1,img_nRows)];
+
+ hh = hh/2;
+ for(y=0; y < hh; y++)
+ for(j=0; j < ww; j++)
+ img[LIBLBP_INDEX(y,j,img_nRows)] = img[LIBLBP_INDEX(2*y,j,img_nRows)] +
+ img[LIBLBP_INDEX(2*y+1,j,img_nRows)];
+
+ }
+
+ return;
+}
+
+
+/*-----------------------------------------------------------------------
+ -----------------------------------------------------------------------*/
+
+uint32_t liblbp_pyr_get_dim(uint16_t img_nRows, uint16_t img_nCols, uint16_t nPyramids)
+{
+ uint32_t w, h, N, i;
+
+ for(w=img_nCols, h=img_nRows, N=0, i=0; i < nPyramids && LIBLBP_MIN(w,h) >= 3; i++)
+ {
+ N += (w-2)*(h-2);
+
+ if(w % 2) w--;
+ if(h % 2) h--;
+ w = w/2;
+ h = h/2;
+ }
+ return(256*N);
+}
+
diff --git a/liblbp.h b/liblbp.h
new file mode 100644
index 0000000..d144ed2
--- /dev/null
+++ b/liblbp.h
@@ -0,0 +1,15 @@
+#ifndef _liblbp_h
+#define _liblbp_h
+
+#include <stdint.h>
+
+#define LIBLBP_INDEX(ROW,COL,NUM_ROWS) ((COL)*(NUM_ROWS)+(ROW))
+#define LIBLBP_MIN(A,B) ((A) > (B) ? (B) : (A))
+
+extern void liblbp_pyr_features(char *vec, uint32_t vec_nDim, uint32_t *img, uint16_t img_nRows, uint16_t img_nCols );
+extern double liblbp_pyr_dotprod(double *vec, uint32_t vec_nDim, uint32_t *img, uint16_t img_nRows, uint16_t img_nCols);
+extern void liblbp_pyr_addvec(int64_t *vec, uint32_t vec_nDim, uint32_t *img, uint16_t img_nRows, uint16_t img_nCols);
+extern void liblbp_pyr_subvec(int64_t *vec, uint32_t vec_nDim, uint32_t *img, uint16_t img_nRows, uint16_t img_nCols);
+extern uint32_t liblbp_pyr_get_dim(uint16_t img_nRows, uint16_t img_nCols, uint16_t nPyramids);
+
+#endif
diff --git a/libocas.c b/libocas.c
new file mode 100644
index 0000000..b1d0182
--- /dev/null
+++ b/libocas.c
@@ -0,0 +1,1490 @@
+/*-----------------------------------------------------------------------
+ * libocas.c: Implementation of the OCAS solver for training
+ * linear SVM classifiers.
+ *
+ * Copyright (C) 2008 Vojtech Franc, xfrancv at cmp.felk.cvut.cz
+ * Soeren Sonnenburg, soeren.sonnenburg at first.fraunhofer.de
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation;
+ * Version 3, 29 June 2007
+ *-------------------------------------------------------------------- */
+
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <sys/time.h>
+#include <time.h>
+#include <stdio.h>
+#include <stdint.h>
+
+#include "libocas.h"
+#include "libqp.h"
+
+#define LAMBDA 0.1 /* must be from (0,1> 1..means that OCAS becomes equivalent to CPA */
+
+static const uint32_t QPSolverMaxIter = 10000000;
+
+static double *H;
+static uint32_t BufSize;
+
+/*----------------------------------------------------------------------
+ Returns pointer at i-th column of Hessian matrix.
+ ----------------------------------------------------------------------*/
+static const double *get_col( uint32_t i)
+{
+ return( &H[ BufSize*i ] );
+}
+
+/*----------------------------------------------------------------------
+ Returns time of the day in seconds.
+ ----------------------------------------------------------------------*/
+static double get_time()
+{
+ struct timeval tv;
+ if (gettimeofday(&tv, NULL)==0)
+ return tv.tv_sec+((double)(tv.tv_usec))/1e6;
+ else
+ return 0.0;
+}
+
+/*----------------------------------------------------------------------
+ Linear binary Ocas-SVM solver.
+ ----------------------------------------------------------------------*/
+ocas_return_value_T svm_ocas_solver(
+ double C,
+ uint32_t nData,
+ double TolRel,
+ double TolAbs,
+ double QPBound,
+ double MaxTime,
+ uint32_t _BufSize,
+ uint8_t Method,
+ void (*compute_W)(double*, double*, double*, uint32_t, void*),
+ double (*update_W)(double, void*),
+ int (*add_new_cut)(double*, uint32_t*, uint32_t, uint32_t, void*),
+ int (*compute_output)(double*, void* ),
+ int (*sort)(double*, double*, uint32_t),
+ void (*ocas_print)(ocas_return_value_T),
+ void* user_data)
+{
+ ocas_return_value_T ocas={0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+ double *b, *alpha, *diag_H;
+ double *output, *old_output;
+ double xi, sq_norm_W, QPSolverTolRel, dot_prod_WoldW, sq_norm_oldW;
+ double A0, B0, GradVal, t, t1, t2, *Ci, *Bi, *hpf, *hpb;
+ double start_time, ocas_start_time;
+ uint32_t cut_length;
+ uint32_t i, *new_cut;
+ uint32_t *I;
+ uint8_t S = 1;
+ libqp_state_T qp_exitflag;
+
+ ocas_start_time = get_time();
+ ocas.qp_solver_time = 0;
+ ocas.output_time = 0;
+ ocas.sort_time = 0;
+ ocas.add_time = 0;
+ ocas.w_time = 0;
+ ocas.print_time = 0;
+
+ BufSize = _BufSize;
+
+ QPSolverTolRel = TolRel*0.5;
+
+ H=NULL;
+ b=NULL;
+ alpha=NULL;
+ new_cut=NULL;
+ I=NULL;
+ diag_H=NULL;
+ output=NULL;
+ old_output=NULL;
+ hpf=NULL;
+ hpb = NULL;
+ Ci=NULL;
+ Bi=NULL;
+
+ /* Hessian matrix contains dot product of normal vectors of selected cutting planes */
+ H = (double*)LIBOCAS_CALLOC(BufSize*BufSize,sizeof(double));
+ if(H == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ /* bias of cutting planes */
+ b = (double*)LIBOCAS_CALLOC(BufSize,sizeof(double));
+ if(b == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ alpha = (double*)LIBOCAS_CALLOC(BufSize,sizeof(double));
+ if(alpha == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ /* indices of examples which define a new cut */
+ new_cut = (uint32_t*)LIBOCAS_CALLOC(nData,sizeof(uint32_t));
+ if(new_cut == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ I = (uint32_t*)LIBOCAS_CALLOC(BufSize,sizeof(uint32_t));
+ if(I == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ for(i=0; i< BufSize; i++) I[i] = 1;
+
+ diag_H = (double*)LIBOCAS_CALLOC(BufSize,sizeof(double));
+ if(diag_H == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ output = (double*)LIBOCAS_CALLOC(nData,sizeof(double));
+ if(output == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ old_output = (double*)LIBOCAS_CALLOC(nData,sizeof(double));
+ if(old_output == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ /* array of hinge points used in line-serach */
+ hpf = (double*) LIBOCAS_CALLOC(nData, sizeof(hpf[0]));
+ if(hpf == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ hpb = (double*) LIBOCAS_CALLOC(nData, sizeof(hpb[0]));
+ if(hpb == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ /* vectors Ci, Bi are used in the line search procedure */
+ Ci = (double*)LIBOCAS_CALLOC(nData,sizeof(double));
+ if(Ci == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ Bi = (double*)LIBOCAS_CALLOC(nData,sizeof(double));
+ if(Bi == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ ocas.nCutPlanes = 0;
+ ocas.exitflag = 0;
+ ocas.nIter = 0;
+
+ /* Compute initial value of Q_P assuming that W is zero vector.*/
+ sq_norm_W = 0;
+ xi = nData;
+ ocas.Q_P = 0.5*sq_norm_W + C*xi;
+ ocas.Q_D = 0;
+
+ /* Compute the initial cutting plane */
+ cut_length = nData;
+ for(i=0; i < nData; i++)
+ new_cut[i] = i;
+
+ ocas.trn_err = nData;
+ ocas.ocas_time = get_time() - ocas_start_time;
+ /* ocas_print("%4d: tim=%f, Q_P=%f, Q_D=%f, Q_P-Q_D=%f, Q_P-Q_D/abs(Q_P)=%f\n",
+ ocas.nIter,cur_time, ocas.Q_P,ocas.Q_D,ocas.Q_P-ocas.Q_D,(ocas.Q_P-ocas.Q_D)/LIBOCAS_ABS(ocas.Q_P));
+ */
+ ocas_print(ocas);
+
+ /* main loop */
+ while( ocas.exitflag == 0 )
+ {
+ ocas.nIter++;
+
+ /* append a new cut to the buffer and update H */
+ b[ocas.nCutPlanes] = -(double)cut_length;
+
+ start_time = get_time();
+
+ if(add_new_cut( &H[LIBOCAS_INDEX(0,ocas.nCutPlanes,BufSize)], new_cut, cut_length, ocas.nCutPlanes, user_data ) != 0)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ ocas.add_time += get_time() - start_time;
+
+ /* copy new added row: H(ocas.nCutPlanes,ocas.nCutPlanes,1:ocas.nCutPlanes-1) = H(1:ocas.nCutPlanes-1:ocas.nCutPlanes)' */
+ diag_H[ocas.nCutPlanes] = H[LIBOCAS_INDEX(ocas.nCutPlanes,ocas.nCutPlanes,BufSize)];
+ for(i=0; i < ocas.nCutPlanes; i++) {
+ H[LIBOCAS_INDEX(ocas.nCutPlanes,i,BufSize)] = H[LIBOCAS_INDEX(i,ocas.nCutPlanes,BufSize)];
+ }
+
+ ocas.nCutPlanes++;
+
+ /* call inner QP solver */
+ start_time = get_time();
+
+ qp_exitflag = libqp_splx_solver(&get_col, diag_H, b, &C, I, &S, alpha,
+ ocas.nCutPlanes, QPSolverMaxIter, 0.0, QPSolverTolRel, -LIBOCAS_PLUS_INF,0);
+
+ ocas.qp_exitflag = qp_exitflag.exitflag;
+
+ ocas.qp_solver_time += get_time() - start_time;
+ ocas.Q_D = -qp_exitflag.QP;
+
+ ocas.nNZAlpha = 0;
+ for(i=0; i < ocas.nCutPlanes; i++) {
+ if( alpha[i] != 0) ocas.nNZAlpha++;
+ }
+
+ sq_norm_oldW = sq_norm_W;
+ start_time = get_time();
+ compute_W( &sq_norm_W, &dot_prod_WoldW, alpha, ocas.nCutPlanes, user_data );
+ ocas.w_time += get_time() - start_time;
+
+ /* select a new cut */
+ switch( Method )
+ {
+ /* cutting plane algorithm implemented in SVMperf and BMRM */
+ case 0:
+
+ start_time = get_time();
+ if( compute_output( output, user_data ) != 0)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+ ocas.output_time += get_time()-start_time;
+
+ xi = 0;
+ cut_length = 0;
+ ocas.trn_err = 0;
+ for(i=0; i < nData; i++)
+ {
+ if(output[i] <= 0) ocas.trn_err++;
+
+ if(output[i] <= 1) {
+ xi += 1 - output[i];
+ new_cut[cut_length] = i;
+ cut_length++;
+ }
+ }
+ ocas.Q_P = 0.5*sq_norm_W + C*xi;
+
+ ocas.ocas_time = get_time() - ocas_start_time;
+
+ /* ocas_print("%4d: tim=%f, Q_P=%f, Q_D=%f, Q_P-Q_D=%f, 1-Q_D/Q_P=%f, nza=%4d, err=%.2f%%, qpf=%d\n",
+ ocas.nIter,cur_time, ocas.Q_P,ocas.Q_D,ocas.Q_P-ocas.Q_D,(ocas.Q_P-ocas.Q_D)/LIBOCAS_ABS(ocas.Q_P),
+ ocas.nNZAlpha, 100*(double)ocas.trn_err/(double)nData, ocas.qp_exitflag );
+ */
+
+ start_time = get_time();
+ ocas_print(ocas);
+ ocas.print_time += get_time() - start_time;
+
+ break;
+
+
+ /* Ocas strategy */
+ case 1:
+
+ /* Linesearch */
+ A0 = sq_norm_W -2*dot_prod_WoldW + sq_norm_oldW;
+ B0 = dot_prod_WoldW - sq_norm_oldW;
+
+ memcpy( old_output, output, sizeof(double)*nData );
+
+ start_time = get_time();
+ if( compute_output( output, user_data ) != 0)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+ ocas.output_time += get_time()-start_time;
+
+ uint32_t num_hp = 0;
+ GradVal = B0;
+ for(i=0; i< nData; i++) {
+
+ Ci[i] = C*(1-old_output[i]);
+ Bi[i] = C*(old_output[i] - output[i]);
+
+ double val;
+ if(Bi[i] != 0)
+ val = -Ci[i]/Bi[i];
+ else
+ val = -LIBOCAS_PLUS_INF;
+
+ if (val>0)
+ {
+/* hpi[num_hp] = i;*/
+ hpb[num_hp] = Bi[i];
+ hpf[num_hp] = val;
+ num_hp++;
+ }
+
+ if( (Bi[i] < 0 && val > 0) || (Bi[i] > 0 && val <= 0))
+ GradVal += Bi[i];
+
+ }
+
+ t = 0;
+ if( GradVal < 0 )
+ {
+ start_time = get_time();
+/* if( sort(hpf, hpi, num_hp) != 0)*/
+ if( sort(hpf, hpb, num_hp) != 0 )
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+ ocas.sort_time += get_time() - start_time;
+
+ double t_new, GradVal_new;
+ i = 0;
+ while( GradVal < 0 && i < num_hp )
+ {
+ t_new = hpf[i];
+ GradVal_new = GradVal + LIBOCAS_ABS(hpb[i]) + A0*(t_new-t);
+
+ if( GradVal_new >= 0 )
+ {
+ t = t + GradVal*(t-t_new)/(GradVal_new - GradVal);
+ }
+ else
+ {
+ t = t_new;
+ i++;
+ }
+
+ GradVal = GradVal_new;
+ }
+ }
+
+ /*
+ t = hpf[0] - 1;
+ i = 0;
+ GradVal = t*A0 + Bsum;
+ while( GradVal < 0 && i < num_hp && hpf[i] < LIBOCAS_PLUS_INF ) {
+ t = hpf[i];
+ Bsum = Bsum + LIBOCAS_ABS(Bi[hpi[i]]);
+ GradVal = t*A0 + Bsum;
+ i++;
+ }
+ */
+ t = LIBOCAS_MAX(t,0); /* just sanity check; t < 0 should not ocure */
+
+ t1 = t; /* new (best so far) W */
+ t2 = t+LAMBDA*(1.0-t); /* new cutting plane */
+ /* t2 = t+(1.0-t)/10.0; */
+
+ /* update W to be the best so far solution */
+ sq_norm_W = update_W( t1, user_data );
+
+ /* select a new cut */
+ xi = 0;
+ cut_length = 0;
+ ocas.trn_err = 0;
+ for(i=0; i < nData; i++ ) {
+
+ if( (old_output[i]*(1-t2) + t2*output[i]) <= 1 )
+ {
+ new_cut[cut_length] = i;
+ cut_length++;
+ }
+
+ output[i] = old_output[i]*(1-t1) + t1*output[i];
+
+ if( output[i] <= 1) xi += 1-output[i];
+ if( output[i] <= 0) ocas.trn_err++;
+
+ }
+
+ ocas.Q_P = 0.5*sq_norm_W + C*xi;
+
+ ocas.ocas_time = get_time() - ocas_start_time;
+
+ /* ocas_print("%4d: tim=%f, Q_P=%f, Q_D=%f, Q_P-Q_D=%f, 1-Q_D/Q_P=%f, nza=%4d, err=%.2f%%, qpf=%d\n",
+ ocas.nIter, cur_time, ocas.Q_P,ocas.Q_D,ocas.Q_P-ocas.Q_D,(ocas.Q_P-ocas.Q_D)/LIBOCAS_ABS(ocas.Q_P),
+ ocas.nNZAlpha, 100*(double)ocas.trn_err/(double)nData, ocas.qp_exitflag );
+ */
+
+ start_time = get_time();
+ ocas_print(ocas);
+ ocas.print_time += get_time() - start_time;
+
+ break;
+ }
+
+ /* Stopping conditions */
+ if( ocas.Q_P - ocas.Q_D <= TolRel*LIBOCAS_ABS(ocas.Q_P)) ocas.exitflag = 1;
+ if( ocas.Q_P - ocas.Q_D <= TolAbs) ocas.exitflag = 2;
+ if( ocas.Q_P <= QPBound) ocas.exitflag = 3;
+ if( ocas.ocas_time >= MaxTime) ocas.exitflag = 4;
+ if(ocas.nCutPlanes >= BufSize) ocas.exitflag = -1;
+
+ } /* end of the main loop */
+
+cleanup:
+
+ LIBOCAS_FREE(H);
+ LIBOCAS_FREE(b);
+ LIBOCAS_FREE(alpha);
+ LIBOCAS_FREE(new_cut);
+ LIBOCAS_FREE(I);
+ LIBOCAS_FREE(diag_H);
+ LIBOCAS_FREE(output);
+ LIBOCAS_FREE(old_output);
+ LIBOCAS_FREE(hpf);
+/* LIBOCAS_FREE(hpi);*/
+ LIBOCAS_FREE(hpb);
+ LIBOCAS_FREE(Ci);
+ LIBOCAS_FREE(Bi);
+
+ ocas.ocas_time = get_time() - ocas_start_time;
+
+ return(ocas);
+}
+
+
+/*----------------------------------------------------------------------
+ Binary linear Ocas-SVM solver which allows using different C for each
+ training example.
+ ----------------------------------------------------------------------*/
+ocas_return_value_T svm_ocas_solver_difC(
+ double *C,
+ uint32_t nData,
+ double TolRel,
+ double TolAbs,
+ double QPBound,
+ double MaxTime,
+ uint32_t _BufSize,
+ uint8_t Method,
+ void (*compute_W)(double*, double*, double*, uint32_t, void*),
+ double (*update_W)(double, void*),
+ int (*add_new_cut)(double*, uint32_t*, uint32_t, uint32_t, void*),
+ int (*compute_output)(double*, void* ),
+ int (*sort)(double*, double*, uint32_t),
+ void (*ocas_print)(ocas_return_value_T),
+ void* user_data)
+{
+ ocas_return_value_T ocas={0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+ double *b, *alpha, *diag_H;
+ double *output, *old_output;
+ double xi, sq_norm_W, QPSolverTolRel, dot_prod_WoldW, sq_norm_oldW;
+ double A0, B0, GradVal, t, t1, t2, *Ci, *Bi, *hpf, *hpb;
+ double start_time, ocas_start_time;
+ double qp_b = 1.0;
+ double new_b;
+ uint32_t cut_length;
+ uint32_t i, *new_cut;
+ uint32_t *I;
+ uint8_t S = 1;
+ libqp_state_T qp_exitflag;
+
+ ocas_start_time = get_time();
+ ocas.qp_solver_time = 0;
+ ocas.output_time = 0;
+ ocas.sort_time = 0;
+ ocas.add_time = 0;
+ ocas.w_time = 0;
+ ocas.print_time = 0;
+
+ BufSize = _BufSize;
+
+ QPSolverTolRel = TolRel*0.5;
+
+ H=NULL;
+ b=NULL;
+ alpha=NULL;
+ new_cut=NULL;
+ I=NULL;
+ diag_H=NULL;
+ output=NULL;
+ old_output=NULL;
+ hpf=NULL;
+ hpb = NULL;
+ Ci=NULL;
+ Bi=NULL;
+
+ /* Hessian matrix contains dot product of normal vectors of selected cutting planes */
+ H = (double*)LIBOCAS_CALLOC(BufSize*BufSize,sizeof(double));
+ if(H == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ /* bias of cutting planes */
+ b = (double*)LIBOCAS_CALLOC(BufSize,sizeof(double));
+ if(b == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ alpha = (double*)LIBOCAS_CALLOC(BufSize,sizeof(double));
+ if(alpha == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ /* indices of examples which define a new cut */
+ new_cut = (uint32_t*)LIBOCAS_CALLOC(nData,sizeof(uint32_t));
+ if(new_cut == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ I = (uint32_t*)LIBOCAS_CALLOC(BufSize,sizeof(uint32_t));
+ if(I == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ for(i=0; i< BufSize; i++) I[i] = 1;
+
+ diag_H = (double*)LIBOCAS_CALLOC(BufSize,sizeof(double));
+ if(diag_H == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ output = (double*)LIBOCAS_CALLOC(nData,sizeof(double));
+ if(output == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ old_output = (double*)LIBOCAS_CALLOC(nData,sizeof(double));
+ if(old_output == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ /* array of hinge points used in line-serach */
+ hpf = (double*) LIBOCAS_CALLOC(nData, sizeof(hpf[0]));
+ if(hpf == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ hpb = (double*) LIBOCAS_CALLOC(nData, sizeof(hpb[0]));
+ if(hpb == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ /* vectors Ci, Bi are used in the line search procedure */
+ Ci = (double*)LIBOCAS_CALLOC(nData,sizeof(double));
+ if(Ci == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ Bi = (double*)LIBOCAS_CALLOC(nData,sizeof(double));
+ if(Bi == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ ocas.nCutPlanes = 0;
+ ocas.exitflag = 0;
+ ocas.nIter = 0;
+
+ /* Compute initial value of Q_P assuming that W is zero vector.*/
+ sq_norm_W = 0;
+ xi = nData;
+/* ocas.Q_P = 0.5*sq_norm_W + C*xi;*/
+ ocas.Q_D = 0;
+
+ /* Compute the initial cutting plane */
+ cut_length = nData;
+ new_b = 0;
+ for(i=0; i < nData; i++)
+ {
+ new_cut[i] = i;
+ new_b += C[i];
+ }
+
+ ocas.Q_P = 0.5*sq_norm_W + new_b;
+
+
+ ocas.trn_err = nData;
+ ocas.ocas_time = get_time() - ocas_start_time;
+ /* ocas_print("%4d: tim=%f, Q_P=%f, Q_D=%f, Q_P-Q_D=%f, Q_P-Q_D/abs(Q_P)=%f\n",
+ ocas.nIter,cur_time, ocas.Q_P,ocas.Q_D,ocas.Q_P-ocas.Q_D,(ocas.Q_P-ocas.Q_D)/LIBOCAS_ABS(ocas.Q_P));
+ */
+ ocas_print(ocas);
+
+ /* main loop */
+ while( ocas.exitflag == 0 )
+ {
+ ocas.nIter++;
+
+ /* append a new cut to the buffer and update H */
+/* b[ocas.nCutPlanes] = -(double)cut_length*C;*/
+ b[ocas.nCutPlanes] = -new_b;
+
+ start_time = get_time();
+
+ if(add_new_cut( &H[LIBOCAS_INDEX(0,ocas.nCutPlanes,BufSize)], new_cut, cut_length, ocas.nCutPlanes, user_data ) != 0)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ ocas.add_time += get_time() - start_time;
+
+ /* copy new added row: H(ocas.nCutPlanes,ocas.nCutPlanes,1:ocas.nCutPlanes-1) = H(1:ocas.nCutPlanes-1:ocas.nCutPlanes)' */
+ diag_H[ocas.nCutPlanes] = H[LIBOCAS_INDEX(ocas.nCutPlanes,ocas.nCutPlanes,BufSize)];
+ for(i=0; i < ocas.nCutPlanes; i++) {
+ H[LIBOCAS_INDEX(ocas.nCutPlanes,i,BufSize)] = H[LIBOCAS_INDEX(i,ocas.nCutPlanes,BufSize)];
+ }
+
+ ocas.nCutPlanes++;
+
+ /* call inner QP solver */
+ start_time = get_time();
+
+/* qp_exitflag = libqp_splx_solver(&get_col, diag_H, b, &C, I, &S, alpha,*/
+/* ocas.nCutPlanes, QPSolverMaxIter, 0.0, QPSolverTolRel, -LIBOCAS_PLUS_INF,0);*/
+ qp_exitflag = libqp_splx_solver(&get_col, diag_H, b, &qp_b, I, &S, alpha,
+ ocas.nCutPlanes, QPSolverMaxIter, 0.0, QPSolverTolRel, -LIBOCAS_PLUS_INF,0);
+
+ ocas.qp_exitflag = qp_exitflag.exitflag;
+
+ ocas.qp_solver_time += get_time() - start_time;
+ ocas.Q_D = -qp_exitflag.QP;
+
+ ocas.nNZAlpha = 0;
+ for(i=0; i < ocas.nCutPlanes; i++) {
+ if( alpha[i] != 0) ocas.nNZAlpha++;
+ }
+
+ sq_norm_oldW = sq_norm_W;
+ start_time = get_time();
+ compute_W( &sq_norm_W, &dot_prod_WoldW, alpha, ocas.nCutPlanes, user_data );
+ ocas.w_time += get_time() - start_time;
+
+ /* select a new cut */
+ switch( Method )
+ {
+ /* cutting plane algorithm implemented in SVMperf and BMRM */
+ case 0:
+
+ start_time = get_time();
+ if( compute_output( output, user_data ) != 0)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+ ocas.output_time += get_time()-start_time;
+
+ xi = 0;
+ cut_length = 0;
+ ocas.trn_err = 0;
+ new_b = 0;
+ for(i=0; i < nData; i++)
+ {
+ if(output[i] <= 0) ocas.trn_err++;
+
+/* if(output[i] <= 1) {*/
+/* xi += 1 - output[i];*/
+ if(output[i] <= C[i]) {
+ xi += C[i] - output[i];
+ new_cut[cut_length] = i;
+ cut_length++;
+ new_b += C[i];
+ }
+ }
+/* ocas.Q_P = 0.5*sq_norm_W + C*xi;*/
+ ocas.Q_P = 0.5*sq_norm_W + xi;
+
+ ocas.ocas_time = get_time() - ocas_start_time;
+
+ /* ocas_print("%4d: tim=%f, Q_P=%f, Q_D=%f, Q_P-Q_D=%f, 1-Q_D/Q_P=%f, nza=%4d, err=%.2f%%, qpf=%d\n",
+ ocas.nIter,cur_time, ocas.Q_P,ocas.Q_D,ocas.Q_P-ocas.Q_D,(ocas.Q_P-ocas.Q_D)/LIBOCAS_ABS(ocas.Q_P),
+ ocas.nNZAlpha, 100*(double)ocas.trn_err/(double)nData, ocas.qp_exitflag );
+ */
+
+ start_time = get_time();
+ ocas_print(ocas);
+ ocas.print_time += get_time() - start_time;
+
+ break;
+
+
+ /* Ocas strategy */
+ case 1:
+
+ /* Linesearch */
+ A0 = sq_norm_W -2*dot_prod_WoldW + sq_norm_oldW;
+ B0 = dot_prod_WoldW - sq_norm_oldW;
+
+ memcpy( old_output, output, sizeof(double)*nData );
+
+ start_time = get_time();
+ if( compute_output( output, user_data ) != 0)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+ ocas.output_time += get_time()-start_time;
+
+ uint32_t num_hp = 0;
+ GradVal = B0;
+ for(i=0; i< nData; i++) {
+
+/* Ci[i] = C*(1-old_output[i]);*/
+/* Bi[i] = C*(old_output[i] - output[i]);*/
+ Ci[i] = (C[i]-old_output[i]);
+ Bi[i] = old_output[i] - output[i];
+
+ double val;
+ if(Bi[i] != 0)
+ val = -Ci[i]/Bi[i];
+ else
+ val = -LIBOCAS_PLUS_INF;
+
+ if (val>0)
+ {
+/* hpi[num_hp] = i;*/
+ hpb[num_hp] = Bi[i];
+ hpf[num_hp] = val;
+ num_hp++;
+ }
+
+ if( (Bi[i] < 0 && val > 0) || (Bi[i] > 0 && val <= 0))
+ GradVal += Bi[i];
+
+ }
+
+ t = 0;
+ if( GradVal < 0 )
+ {
+ start_time = get_time();
+/* if( sort(hpf, hpi, num_hp) != 0)*/
+ if( sort(hpf, hpb, num_hp) != 0 )
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+ ocas.sort_time += get_time() - start_time;
+
+ double t_new, GradVal_new;
+ i = 0;
+ while( GradVal < 0 && i < num_hp )
+ {
+ t_new = hpf[i];
+ GradVal_new = GradVal + LIBOCAS_ABS(hpb[i]) + A0*(t_new-t);
+
+ if( GradVal_new >= 0 )
+ {
+ t = t + GradVal*(t-t_new)/(GradVal_new - GradVal);
+ }
+ else
+ {
+ t = t_new;
+ i++;
+ }
+
+ GradVal = GradVal_new;
+ }
+ }
+
+ /*
+ t = hpf[0] - 1;
+ i = 0;
+ GradVal = t*A0 + Bsum;
+ while( GradVal < 0 && i < num_hp && hpf[i] < LIBOCAS_PLUS_INF ) {
+ t = hpf[i];
+ Bsum = Bsum + LIBOCAS_ABS(Bi[hpi[i]]);
+ GradVal = t*A0 + Bsum;
+ i++;
+ }
+ */
+ t = LIBOCAS_MAX(t,0); /* just sanity check; t < 0 should not ocure */
+
+ t1 = t; /* new (best so far) W */
+ t2 = t+(1.0-t)*LAMBDA; /* new cutting plane */
+ /* t2 = t+(1.0-t)/10.0; new cutting plane */
+
+ /* update W to be the best so far solution */
+ sq_norm_W = update_W( t1, user_data );
+
+ /* select a new cut */
+ xi = 0;
+ cut_length = 0;
+ ocas.trn_err = 0;
+ new_b = 0;
+ for(i=0; i < nData; i++ ) {
+
+/* if( (old_output[i]*(1-t2) + t2*output[i]) <= 1 ) */
+ if( (old_output[i]*(1-t2) + t2*output[i]) <= C[i] )
+ {
+ new_cut[cut_length] = i;
+ cut_length++;
+ new_b += C[i];
+ }
+
+ output[i] = old_output[i]*(1-t1) + t1*output[i];
+
+/* if( output[i] <= 1) xi += 1-output[i];*/
+ if( output[i] <= C[i]) xi += C[i]-output[i];
+ if( output[i] <= 0) ocas.trn_err++;
+
+ }
+
+/* ocas.Q_P = 0.5*sq_norm_W + C*xi;*/
+ ocas.Q_P = 0.5*sq_norm_W + xi;
+
+ ocas.ocas_time = get_time() - ocas_start_time;
+
+ /* ocas_print("%4d: tim=%f, Q_P=%f, Q_D=%f, Q_P-Q_D=%f, 1-Q_D/Q_P=%f, nza=%4d, err=%.2f%%, qpf=%d\n",
+ ocas.nIter, cur_time, ocas.Q_P,ocas.Q_D,ocas.Q_P-ocas.Q_D,(ocas.Q_P-ocas.Q_D)/LIBOCAS_ABS(ocas.Q_P),
+ ocas.nNZAlpha, 100*(double)ocas.trn_err/(double)nData, ocas.qp_exitflag );
+ */
+
+ start_time = get_time();
+ ocas_print(ocas);
+ ocas.print_time += get_time() - start_time;
+
+ break;
+ }
+
+ /* Stopping conditions */
+ if( ocas.Q_P - ocas.Q_D <= TolRel*LIBOCAS_ABS(ocas.Q_P)) ocas.exitflag = 1;
+ if( ocas.Q_P - ocas.Q_D <= TolAbs) ocas.exitflag = 2;
+ if( ocas.Q_P <= QPBound) ocas.exitflag = 3;
+ if( ocas.ocas_time >= MaxTime) ocas.exitflag = 4;
+ if(ocas.nCutPlanes >= BufSize) ocas.exitflag = -1;
+
+ } /* end of the main loop */
+
+cleanup:
+
+ LIBOCAS_FREE(H);
+ LIBOCAS_FREE(b);
+ LIBOCAS_FREE(alpha);
+ LIBOCAS_FREE(new_cut);
+ LIBOCAS_FREE(I);
+ LIBOCAS_FREE(diag_H);
+ LIBOCAS_FREE(output);
+ LIBOCAS_FREE(old_output);
+ LIBOCAS_FREE(hpf);
+/* LIBOCAS_FREE(hpi);*/
+ LIBOCAS_FREE(hpb);
+ LIBOCAS_FREE(Ci);
+ LIBOCAS_FREE(Bi);
+
+ ocas.ocas_time = get_time() - ocas_start_time;
+
+ return(ocas);
+}
+
+
+
+/*----------------------------------------------------------------------
+ Multiclass SVM-Ocas solver
+ ----------------------------------------------------------------------*/
+
+/* Helper function needed by the multi-class SVM linesearch.
+
+ - This function finds a simplified representation of a piece-wise linear function
+ by splitting the domain into intervals and fining active terms for these intevals */
+static void findactive(double *Theta, double *SortedA, uint32_t *nSortedA, double *A, double *B, int n,
+ int (*sort)(double*, double*, uint32_t))
+{
+ double tmp, theta;
+ uint32_t i, j, idx, idx2 = 0, start;
+
+ sort(A,B,n);
+
+ tmp = B[0];
+ idx = 0;
+ i = 0;
+ while( i < n-1 && A[i] == A[i+1])
+ {
+ if( B[i+1] > B[idx] )
+ {
+ idx = i+1;
+ tmp = B[i+1];
+ }
+ i++;
+ }
+
+ (*nSortedA) = 1;
+ SortedA[0] = A[idx];
+
+ while(1)
+ {
+ start = idx + 1;
+ while( start < n && A[idx] == A[start])
+ start++;
+
+ theta = LIBOCAS_PLUS_INF;
+ for(j=start; j < n; j++)
+ {
+ tmp = (B[j] - B[idx])/(A[idx]-A[j]);
+ if( tmp < theta)
+ {
+ theta = tmp;
+ idx2 = j;
+ }
+ }
+
+ if( theta < LIBOCAS_PLUS_INF)
+ {
+ Theta[(*nSortedA) - 1] = theta;
+ SortedA[(*nSortedA)] = A[idx2];
+ (*nSortedA)++;
+ idx = idx2;
+ }
+ else
+ return;
+ }
+}
+
+
+/*----------------------------------------------------------------------
+ Multiclass linear OCAS-SVM solver.
+ ----------------------------------------------------------------------*/
+ocas_return_value_T msvm_ocas_solver(
+ double C,
+ double *data_y,
+ uint32_t nY,
+ uint32_t nData,
+ double TolRel,
+ double TolAbs,
+ double QPBound,
+ double MaxTime,
+ uint32_t _BufSize,
+ uint8_t Method,
+ void (*compute_W)(double*, double*, double*, uint32_t, void*),
+ double (*update_W)(double, void*),
+ int (*add_new_cut)(double*, uint32_t*, uint32_t, void*),
+ int (*compute_output)(double*, void* ),
+ int (*sort)(double*, double*, uint32_t),
+ void (*ocas_print)(ocas_return_value_T),
+ void* user_data)
+{
+ ocas_return_value_T ocas={0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+ double *b, *alpha, *diag_H;
+ double *output, *old_output;
+ double xi, sq_norm_W, QPSolverTolRel, QPSolverTolAbs, dot_prod_WoldW, sq_norm_oldW;
+ double A0, B0, t, t1, t2, R, tmp, element_b, x;
+ double *A, *B, *theta, *Theta, *sortedA, *Add;
+ double start_time, ocas_start_time, grad_sum, grad, min_x = 0, old_x, old_grad;
+ uint32_t i, y, y2, ypred = 0, *new_cut, cnt1, cnt2, j, nSortedA, idx;
+ uint32_t *I;
+ uint8_t S = 1;
+ libqp_state_T qp_exitflag;
+
+ ocas_start_time = get_time();
+ ocas.qp_solver_time = 0;
+ ocas.output_time = 0;
+ ocas.sort_time = 0;
+ ocas.add_time = 0;
+ ocas.w_time = 0;
+ ocas.print_time = 0;
+
+ BufSize = _BufSize;
+
+ QPSolverTolRel = TolRel*0.5;
+ QPSolverTolAbs = TolAbs*0.5;
+
+ H=NULL;
+ b=NULL;
+ alpha=NULL;
+ new_cut=NULL;
+ I=NULL;
+ diag_H=NULL;
+ output=NULL;
+ old_output=NULL;
+ A = NULL;
+ B = NULL;
+ theta = NULL;
+ Theta = NULL;
+ sortedA = NULL;
+ Add = NULL;
+
+ /* Hessian matrix contains dot product of normal vectors of selected cutting planes */
+ H = (double*)LIBOCAS_CALLOC(BufSize*BufSize,sizeof(double));
+ if(H == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ /* bias of cutting planes */
+ b = (double*)LIBOCAS_CALLOC(BufSize,sizeof(double));
+ if(b == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ alpha = (double*)LIBOCAS_CALLOC(BufSize,sizeof(double));
+ if(alpha == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ /* indices of examples which define a new cut */
+ new_cut = (uint32_t*)LIBOCAS_CALLOC(nData,sizeof(uint32_t));
+ if(new_cut == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ I = (uint32_t*)LIBOCAS_CALLOC(BufSize,sizeof(uint32_t));
+ if(I == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ for(i=0; i< BufSize; i++)
+ I[i] = 1;
+
+ diag_H = (double*)LIBOCAS_CALLOC(BufSize,sizeof(double));
+ if(diag_H == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ output = (double*)LIBOCAS_CALLOC(nData*nY,sizeof(double));
+ if(output == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ old_output = (double*)LIBOCAS_CALLOC(nData*nY,sizeof(double));
+ if(old_output == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ /* auxciliary variables used in the linesearch */
+ A = (double*)LIBOCAS_CALLOC(nData*nY,sizeof(double));
+ if(A == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ B = (double*)LIBOCAS_CALLOC(nData*nY,sizeof(double));
+ if(B == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ theta = (double*)LIBOCAS_CALLOC(nY,sizeof(double));
+ if(theta == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ sortedA = (double*)LIBOCAS_CALLOC(nY,sizeof(double));
+ if(sortedA == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ Theta = (double*)LIBOCAS_CALLOC(nData*nY,sizeof(double));
+ if(Theta == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ Add = (double*)LIBOCAS_CALLOC(nData*nY,sizeof(double));
+ if(Add == NULL)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ /* Set initial values*/
+ ocas.nCutPlanes = 0;
+ ocas.exitflag = 0;
+ ocas.nIter = 0;
+ ocas.Q_D = 0;
+ ocas.trn_err = nData;
+ R = (double)nData;
+ sq_norm_W = 0;
+ element_b = (double)nData;
+ ocas.Q_P = 0.5*sq_norm_W + C*R;
+
+ /* initial cutting plane */
+ for(i=0; i < nData; i++)
+ {
+ y2 = (uint32_t)data_y[i]-1;
+
+ if(y2 > 0)
+ new_cut[i] = 0;
+ else
+ new_cut[i] = 1;
+
+ }
+
+ ocas.ocas_time = get_time() - ocas_start_time;
+
+ start_time = get_time();
+ ocas_print(ocas);
+ ocas.print_time += get_time() - start_time;
+
+ /* main loop of the OCAS */
+ while( ocas.exitflag == 0 )
+ {
+ ocas.nIter++;
+
+ /* append a new cut to the buffer and update H */
+ b[ocas.nCutPlanes] = -(double)element_b;
+
+ start_time = get_time();
+
+ if(add_new_cut( &H[LIBOCAS_INDEX(0,ocas.nCutPlanes,BufSize)], new_cut, ocas.nCutPlanes, user_data ) != 0)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+
+ ocas.add_time += get_time() - start_time;
+
+ /* copy newly appended row: H(ocas.nCutPlanes,ocas.nCutPlanes,1:ocas.nCutPlanes-1) = H(1:ocas.nCutPlanes-1:ocas.nCutPlanes)' */
+ diag_H[ocas.nCutPlanes] = H[LIBOCAS_INDEX(ocas.nCutPlanes,ocas.nCutPlanes,BufSize)];
+ for(i=0; i < ocas.nCutPlanes; i++)
+ {
+ H[LIBOCAS_INDEX(ocas.nCutPlanes,i,BufSize)] = H[LIBOCAS_INDEX(i,ocas.nCutPlanes,BufSize)];
+ }
+
+ ocas.nCutPlanes++;
+
+ /* call inner QP solver */
+ start_time = get_time();
+
+ qp_exitflag = libqp_splx_solver(&get_col, diag_H, b, &C, I, &S, alpha,
+ ocas.nCutPlanes, QPSolverMaxIter, QPSolverTolAbs, QPSolverTolRel, -LIBOCAS_PLUS_INF,0);
+
+ ocas.qp_exitflag = qp_exitflag.exitflag;
+
+ ocas.qp_solver_time += get_time() - start_time;
+ ocas.Q_D = -qp_exitflag.QP;
+
+ ocas.nNZAlpha = 0;
+ for(i=0; i < ocas.nCutPlanes; i++)
+ if( alpha[i] != 0) ocas.nNZAlpha++;
+
+ sq_norm_oldW = sq_norm_W;
+ start_time = get_time();
+ compute_W( &sq_norm_W, &dot_prod_WoldW, alpha, ocas.nCutPlanes, user_data );
+ ocas.w_time += get_time() - start_time;
+
+ /* select a new cut */
+ switch( Method )
+ {
+ /* cutting plane algorithm implemented in SVMperf and BMRM */
+ case 0:
+
+ start_time = get_time();
+ if( compute_output( output, user_data ) != 0)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+ ocas.output_time += get_time()-start_time;
+
+ /* the following loop computes: */
+ element_b = 0.0; /* element_b = R(old_W) - g'*old_W */
+ R = 0; /* R(W) = sum_i max_y ( [[y != y_i]] + (w_y- w_y_i)'*x_i ) */
+ ocas.trn_err = 0; /* trn_err = sum_i [[y != y_i ]] */
+ /* new_cut[i] = argmax_i ( [[y != y_i]] + (w_y- w_y_i)'*x_i ) */
+ for(i=0; i < nData; i++)
+ {
+ y2 = (uint32_t)data_y[i]-1;
+
+ for(xi=-LIBOCAS_PLUS_INF, y=0; y < nY; y++)
+ {
+ if(y2 != y && xi < output[LIBOCAS_INDEX(y,i,nY)])
+ {
+ xi = output[LIBOCAS_INDEX(y,i,nY)];
+ ypred = y;
+ }
+ }
+
+ if(xi >= output[LIBOCAS_INDEX(y2,i,nY)])
+ ocas.trn_err ++;
+
+ xi = LIBOCAS_MAX(0,xi+1-output[LIBOCAS_INDEX(y2,i,nY)]);
+ R += xi;
+ if(xi > 0)
+ {
+ element_b++;
+ new_cut[i] = ypred;
+ }
+ else
+ new_cut[i] = y2;
+ }
+
+ ocas.Q_P = 0.5*sq_norm_W + C*R;
+
+ ocas.ocas_time = get_time() - ocas_start_time;
+
+ start_time = get_time();
+ ocas_print(ocas);
+ ocas.print_time += get_time() - start_time;
+
+ break;
+
+ /* The OCAS solver */
+ case 1:
+ memcpy( old_output, output, sizeof(double)*nData*nY );
+
+ start_time = get_time();
+ if( compute_output( output, user_data ) != 0)
+ {
+ ocas.exitflag=-2;
+ goto cleanup;
+ }
+ ocas.output_time += get_time()-start_time;
+
+ A0 = sq_norm_W - 2*dot_prod_WoldW + sq_norm_oldW;
+ B0 = dot_prod_WoldW - sq_norm_oldW;
+
+ for(i=0; i < nData; i++)
+ {
+ y2 = (uint32_t)data_y[i]-1;
+
+ for(y=0; y < nY; y++)
+ {
+ A[LIBOCAS_INDEX(y,i,nY)] = C*(output[LIBOCAS_INDEX(y,i,nY)] - old_output[LIBOCAS_INDEX(y,i,nY)]
+ + old_output[LIBOCAS_INDEX(y2,i,nY)] - output[LIBOCAS_INDEX(y2,i,nY)]);
+ B[LIBOCAS_INDEX(y,i,nY)] = C*(old_output[LIBOCAS_INDEX(y,i,nY)] - old_output[LIBOCAS_INDEX(y2,i,nY)]
+ + (double)(y != y2));
+ }
+ }
+
+ /* linesearch */
+/* new_x = msvm_linesearch_mex(A0,B0,AA*C,BB*C);*/
+
+ grad_sum = B0;
+ cnt1 = 0;
+ cnt2 = 0;
+ for(i=0; i < nData; i++)
+ {
+ findactive(theta,sortedA,&nSortedA,&A[i*nY],&B[i*nY],nY,sort);
+
+ idx = 0;
+ while( idx < nSortedA-1 && theta[idx] < 0 )
+ idx++;
+
+ grad_sum += sortedA[idx];
+
+ for(j=idx; j < nSortedA-1; j++)
+ {
+ Theta[cnt1] = theta[j];
+ cnt1++;
+ }
+
+ for(j=idx+1; j < nSortedA; j++)
+ {
+ Add[cnt2] = -sortedA[j-1]+sortedA[j];
+ cnt2++;
+ }
+ }
+
+ start_time = get_time();
+ sort(Theta,Add,cnt1);
+ ocas.sort_time += get_time() - start_time;
+
+ grad = grad_sum;
+ if(grad >= 0)
+ {
+ min_x = 0;
+ }
+ else
+ {
+ old_x = 0;
+ old_grad = grad;
+
+ for(i=0; i < cnt1; i++)
+ {
+ x = Theta[i];
+
+ grad = x*A0 + grad_sum;
+
+ if(grad >=0)
+ {
+
+ min_x = (grad*old_x - old_grad*x)/(grad - old_grad);
+
+ break;
+ }
+ else
+ {
+ grad_sum = grad_sum + Add[i];
+
+ grad = x*A0 + grad_sum;
+ if( grad >= 0)
+ {
+ min_x = x;
+ break;
+ }
+ }
+
+ old_grad = grad;
+ old_x = x;
+ }
+ }
+ /* end of the linesearch which outputs min_x */
+
+ t = min_x;
+ t1 = t; /* new (best so far) W */
+ t2 = t+(1.0-t)*LAMBDA; /* new cutting plane */
+ /* t2 = t+(1.0-t)/10.0; */
+
+ /* update W to be the best so far solution */
+ sq_norm_W = update_W( t1, user_data );
+
+ /* the following code computes a new cutting plane: */
+ element_b = 0.0; /* element_b = R(old_W) - g'*old_W */
+ /* new_cut[i] = argmax_i ( [[y != y_i]] + (w_y- w_y_i)'*x_i ) */
+ for(i=0; i < nData; i++)
+ {
+ y2 = (uint32_t)data_y[i]-1;
+
+ for(xi=-LIBOCAS_PLUS_INF, y=0; y < nY; y++)
+ {
+ tmp = old_output[LIBOCAS_INDEX(y,i,nY)]*(1-t2) + t2*output[LIBOCAS_INDEX(y,i,nY)];
+ if(y2 != y && xi < tmp)
+ {
+ xi = tmp;
+ ypred = y;
+ }
+ }
+
+ tmp = old_output[LIBOCAS_INDEX(y2,i,nY)]*(1-t2) + t2*output[LIBOCAS_INDEX(y2,i,nY)];
+ xi = LIBOCAS_MAX(0,xi+1-tmp);
+ if(xi > 0)
+ {
+ element_b++;
+ new_cut[i] = ypred;
+ }
+ else
+ new_cut[i] = y2;
+ }
+
+ /* compute Risk, class. error and update outputs to correspond to the new W */
+ ocas.trn_err = 0; /* trn_err = sum_i [[y != y_i ]] */
+ R = 0;
+ for(i=0; i < nData; i++)
+ {
+ y2 = (uint32_t)data_y[i]-1;
+
+ for(tmp=-LIBOCAS_PLUS_INF, y=0; y < nY; y++)
+ {
+ output[LIBOCAS_INDEX(y,i,nY)] = old_output[LIBOCAS_INDEX(y,i,nY)]*(1-t1) + t1*output[LIBOCAS_INDEX(y,i,nY)];
+
+ if(y2 != y && tmp < output[LIBOCAS_INDEX(y,i,nY)])
+ {
+ ypred = y;
+ tmp = output[LIBOCAS_INDEX(y,i,nY)];
+ }
+ }
+
+ R += LIBOCAS_MAX(0,1+tmp - output[LIBOCAS_INDEX(y2,i,nY)]);
+ if( tmp >= output[LIBOCAS_INDEX(y2,i,nY)])
+ ocas.trn_err ++;
+ }
+
+ ocas.Q_P = 0.5*sq_norm_W + C*R;
+
+
+ /* get time and print status */
+ ocas.ocas_time = get_time() - ocas_start_time;
+
+ start_time = get_time();
+ ocas_print(ocas);
+ ocas.print_time += get_time() - start_time;
+
+ break;
+
+ }
+
+ /* Stopping conditions */
+ if( ocas.Q_P - ocas.Q_D <= TolRel*LIBOCAS_ABS(ocas.Q_P)) ocas.exitflag = 1;
+ if( ocas.Q_P - ocas.Q_D <= TolAbs) ocas.exitflag = 2;
+ if( ocas.Q_P <= QPBound) ocas.exitflag = 3;
+ if( ocas.ocas_time >= MaxTime) ocas.exitflag = 4;
+ if(ocas.nCutPlanes >= BufSize) ocas.exitflag = -1;
+
+ } /* end of the main loop */
+
+cleanup:
+
+ LIBOCAS_FREE(H);
+ LIBOCAS_FREE(b);
+ LIBOCAS_FREE(alpha);
+ LIBOCAS_FREE(new_cut);
+ LIBOCAS_FREE(I);
+ LIBOCAS_FREE(diag_H);
+ LIBOCAS_FREE(output);
+ LIBOCAS_FREE(old_output);
+ LIBOCAS_FREE(A);
+ LIBOCAS_FREE(B);
+ LIBOCAS_FREE(theta);
+ LIBOCAS_FREE(Theta);
+ LIBOCAS_FREE(sortedA);
+ LIBOCAS_FREE(Add);
+
+ ocas.ocas_time = get_time() - ocas_start_time;
+
+ return(ocas);
+}
+
+
+
diff --git a/libocas.h b/libocas.h
new file mode 100644
index 0000000..f1b45ed
--- /dev/null
+++ b/libocas.h
@@ -0,0 +1,123 @@
+/*-----------------------------------------------------------------------
+ * libocas.h: Implementation of the OCAS solver for training
+ * linear SVM classifiers.
+ *
+ * Copyright (C) 2008, 2009 Vojtech Franc, xfrancv at cmp.felk.cvut.cz
+ * Soeren Sonnenburg, soeren.sonnenburg at first.fraunhofer.de
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation;
+ *-------------------------------------------------------------------- */
+
+
+#ifndef libocas_h
+#define libocas_h
+
+#include <stdint.h>
+#include "libqp.h"
+
+#ifdef LIBOCAS_MATLAB
+
+#include "mex.h"
+#define LIBQP_MATLAB
+#define LIBOCAS_PLUS_INF mxGetInf()
+#define LIBOCAS_CALLOC(x,y) mxCalloc(x,y)
+#define LIBOCAS_FREE(x) mxFree(x)
+
+#else
+
+#define LIBOCAS_PLUS_INF (-log(0.0))
+#define LIBOCAS_CALLOC(x,y) calloc(x,y)
+#define LIBOCAS_FREE(x) free(x)
+
+#endif
+
+#define LIBOCAS_INDEX(ROW,COL,NUM_ROWS) ((COL)*(NUM_ROWS)+(ROW))
+#define LIBOCAS_MIN(A,B) ((A) > (B) ? (B) : (A))
+#define LIBOCAS_MAX(A,B) ((A) < (B) ? (B) : (A))
+#define LIBOCAS_ABS(A) ((A) < 0 ? -(A) : (A))
+
+
+
+typedef struct {
+ uint32_t nIter; /* number of iterations */
+ uint32_t nCutPlanes; /* number of cutitng buffered planes */
+ uint32_t nNZAlpha; /* number of non-zero Lagrangeans (effective number of CPs) */
+ uint32_t trn_err; /* number of training errors */
+ double Q_P; /* primal objective value */
+ double Q_D; /* dual objective value */
+ double output_time; /* time spent in computing outputs */
+ double sort_time; /* time spent in sorting */
+ double add_time; /* time spent in adding examples to compute cutting planes */
+ double w_time; /* time spent in computing parameter vector */
+ double qp_solver_time; /* time spent in inner QP solver */
+ double ocas_time; /* total time spent in svm_ocas_solver */
+ double print_time; /* time spent in ocas_print function */
+ int8_t qp_exitflag; /* exitflag from the last call of the inner QP solver */
+ int8_t exitflag; /* 1 .. ocas.Q_P - ocas.Q_D <= TolRel*ABS(ocas.Q_P)
+ 2 .. ocas.Q_P - ocas.Q_D <= TolAbs
+ 3 .. ocas.Q_P <= QPBound
+ 4 .. optimization time >= MaxTime
+ -1 .. ocas.nCutPlanes >= BufSize
+ -2 .. not enough memory for the solver */
+} ocas_return_value_T;
+
+/* binary linear SVM solver */
+ocas_return_value_T svm_ocas_solver(
+ double C, /* regularizarion constant */
+ uint32_t nData, /* number of exmaples */
+ double TolRel, /* halts if 1-Q_P/Q_D <= TolRel */
+ double TolAbs, /* halts if Q_P-Q_D <= TolRel */
+ double QPBound, /* halts if QP <= QPBound */
+ double MaxTime, /* maximal time in seconds spent in optmization */
+ uint32_t BufSize, /* maximal number of buffered cutting planes */
+ uint8_t Method, /* 0..standard CP (SVM-Perf,BMRM), 1..OCAS */
+ void (*compute_W)(double*, double*, double*, uint32_t, void*),
+ double (*update_W)(double, void*),
+ int (*add_new_cut)(double*, uint32_t*, uint32_t, uint32_t, void*),
+ int (*compute_output)( double*, void* ),
+ int (*sort)(double*, double*, uint32_t),
+ void (*ocas_print)(ocas_return_value_T),
+ void* user_data);
+
+/* binary linear SVM solver which allows using different C for each example*/
+ocas_return_value_T svm_ocas_solver_difC(
+ double *C, /* regularizarion constants for each example */
+ uint32_t nData, /* number of exmaples */
+ double TolRel, /* halts if 1-Q_P/Q_D <= TolRel */
+ double TolAbs, /* halts if Q_P-Q_D <= TolRel */
+ double QPBound, /* halts if QP <= QPBound */
+ double MaxTime, /* maximal time in seconds spent in optmization */
+ uint32_t BufSize, /* maximal number of buffered cutting planes */
+ uint8_t Method, /* 0..standard CP (SVM-Perf,BMRM), 1..OCAS */
+ void (*compute_W)(double*, double*, double*, uint32_t, void*),
+ double (*update_W)(double, void*),
+ int (*add_new_cut)(double*, uint32_t*, uint32_t, uint32_t, void*),
+ int (*compute_output)( double*, void* ),
+ int (*sort)(double*, double*, uint32_t),
+ void (*ocas_print)(ocas_return_value_T),
+ void* user_data);
+
+/* multi-class (Singer-Crammer formulation) linear SVM solver */
+ocas_return_value_T msvm_ocas_solver(
+ double C,
+ double *data_y,
+ uint32_t nY,
+ uint32_t nData,
+ double TolRel,
+ double TolAbs,
+ double QPBound,
+ double MaxTime,
+ uint32_t _BufSize,
+ uint8_t Method,
+ void (*compute_W)(double*, double*, double*, uint32_t, void*),
+ double (*update_W)(double, void*),
+ int (*add_new_cut)(double*, uint32_t*, uint32_t, void*),
+ int (*compute_output)(double*, void* ),
+ int (*sort)(double*, double*, uint32_t),
+ void (*ocas_print)(ocas_return_value_T),
+ void* user_data);
+
+#endif /* libocas_h */
+
diff --git a/libocas_test.m b/libocas_test.m
new file mode 100644
index 0000000..4e0847e
--- /dev/null
+++ b/libocas_test.m
@@ -0,0 +1,171 @@
+% This script tests functionality of SVMOCAS and MSVMOCAS solvers.
+%
+% It runs the solvers on example data and compares results to solutions
+% stored in reference files.
+%
+
+% two-class problem
+BinaryTrnFile = './data/riply_trn.light';
+
+% multi-class problem
+MulticlassTrnFile = './data/example4_train.light';
+
+% file to store/load reference solution
+ReferenceFile = './data/refernce_solution';
+
+% if 1 save results to reference files else compares the results to the
+% reference solutions
+CREATE_REFERNCE_FILES = 0;
+
+% Solver options
+opt.C = 1;
+opt.Method = 1;
+opt.TolRel = 0.01;
+opt.TolAbs = 0;
+opt.QPBound = 0;
+opt.BufSize = 2000;
+opt.MaxTime = inf;
+opt.X0 = 1;
+opt.verb = 0;
+
+fprintf('Training binary SVM classifier by SVMOCAS...');
+[bin.W,bin.W0,bin.stat] = svmocas(BinaryTrnFile,opt.X0,opt.C,opt.Method,opt.TolRel,...
+ opt.TolAbs,opt.QPBound,opt.BufSize,inf,opt.MaxTime,opt.verb);
+fprintf('done.\n');
+
+fprintf('Training multi-class SVM classifier by MSVMOCAS...');
+[multi.W,multi.stat] = msvmocas(MulticlassTrnFile,opt.C,opt.Method,opt.TolRel,...
+ opt.TolAbs,opt.QPBound,opt.BufSize,inf,opt.MaxTime,opt.verb);
+fprintf('done.\n');
+
+
+if CREATE_REFERNCE_FILES == 1,
+ fprintf('Saving reference solutions to %s\n', ReferenceFile);
+ save(ReferenceFile,'bin','multi');
+else
+ ref = load(ReferenceFile);
+
+ test(1).dif = sum(abs(bin.W - ref.bin.W)+abs(bin.W0-ref.bin.W0));
+ test(1).name = 'sum(|W-ref.W| + |W0-ref.W0])';
+ test(2).dif = abs(bin.stat.Q_P - ref.bin.stat.Q_P);
+ test(2).name = 'PrimalVal - ref.PrimalVal ';
+ test(3).dif = abs(bin.stat.Q_D - ref.bin.stat.Q_D);
+ test(3).name = 'DualVal - ref.DualVal ';
+
+ fprintf('\nSVMOCAS (solver for binary classifiation problems):\n');
+ for i=1:length(test)
+ fprintf(' %s = %.20f ... ',test(i).name,test(i).dif);
+ if test(i).dif == 0
+ fprintf('SOLUTIONS EQUAL - OK\n');
+ else
+ fprintf('SOLUTION DIFFERS\n');
+ end
+ end
+
+ test(1).dif = sum(sum(abs(multi.W - ref.multi.W)));
+ test(1).name = 'sum(|W-ref.W|) ';
+ test(2).dif = abs(multi.stat.Q_P - ref.multi.stat.Q_P);
+ test(2).name = 'PrimalVal - ref.PrimalVal';
+ test(3).dif = abs(multi.stat.Q_D - ref.multi.stat.Q_D);
+ test(3).name = 'DualVal - ref.DualVal ';
+
+ fprintf('\nMSVMOCAS: (solver for multi-class problems\n');
+ for i=1:length(test)
+ fprintf(' %s = %.20f ... ',test(i).name, test(i).dif);
+ if test(i).dif == 0
+ fprintf('SOLUTIONS EQUAL - OK\n');
+ else
+ fprintf('SOLUTION DIFFERS\n');
+ end
+ end
+
+
+end
+
+
+break;
+
+for i=1:length(DataSets)
+ fprintf('\nDataset: %s\n', DataSets{i});
+
+ [exp{i}.W,exp{i}.W0,exp{i}.stat] = svmocas(DataSets{i},opt.X0,opt.C,opt.Method,...
+ opt.TolRel,opt.TolAbs,opt.QPBound,opt.BufSize,inf,opt.MaxTime);
+end
+
+fprintf('\n\nRESULTS SUMMARY\n================================\n\n');
+for i=1:length(DataSets)
+ fprintf('\nDataset: %s\n--------------------------------\n', DataSets{i});
+
+ % remove suffix
+ sol_fname = DataSets{i};
+ idx = findstr(sol_fname,'.');
+ sol_fname = sol_fname(1:idx(end)-1);
+
+ sol_fname = [sol_fname '_ocas_C' num2str(opt.C) '_solution.mat'];
+ if SAVE_AS_REFERENCE,
+ if exist(sol_fname)
+ fprintf('Solution file %s already exists.\n', sol_fname);
+ error('Erase the file or set SAVE_AS_REFERENCE = 0 and run the test again.');
+ else
+ fprintf('Saving solution to %s ...', sol_fname);
+ ref_sol = exp{i};
+ ref_opt = opt;
+ save(sol_fname,'ref_sol','ref_opt');
+ fprintf('done.\n');
+ ref_sol = [];
+ end
+ else
+ if exist(sol_fname)
+ load(sol_fname,'ref_sol','ref_opt');
+
+ fprintf('\nReference solution\n');
+ fprintf('file: %s\n', sol_fname);
+ fprintf(['settings: C: %f, Method: %d, TolRel: %f, TolAbs: %f, ' ...
+ 'QPBound: %f, BufSize: %d, MaxTime: %f, X0: %f \n'], ...
+ ref_opt.C, ref_opt.Method, ref_opt.TolRel, ref_opt.TolAbs, ...
+ ref_opt.QPBound, ref_opt.BufSize, ref_opt.MaxTime, ref_opt.X0);
+ fprintf(['solution: QP: %.10f, QD: %.10f, nIter: %d, nCutPlanes: %d, '...
+ 'exitflag: %d, ocas_time: %f, total_time: %f\n'],...
+ ref_sol.stat.Q_P, ref_sol.stat.Q_D, ref_sol.stat.nIter, ref_sol.stat.nCutPlanes, ...
+ ref_sol.stat.exitflag, ref_sol.stat.ocas_time, ref_sol.stat.total_time);
+ end
+ end
+
+ fprintf('\nCurrent solution \n');
+ fprintf(['settings: C: %f, Method: %d, TolRel: %f, TolAbs: %f, ' ...
+ 'QPBound: %f, BufSize: %d, MaxTime: %f, X0: %f \n'], ...
+ opt.C, opt.Method, opt.TolRel, opt.TolAbs, ...
+ opt.QPBound, opt.BufSize, opt.MaxTime, opt.X0);
+ fprintf(['solution: QP: %.10f, QD: %.10f, nIter: %d, nCutPlanes: %d, '...
+ 'exitflag: %d, ocas_time: %f, total_time: %f\n'],...
+ exp{i}.stat.Q_P, exp{i}.stat.Q_D, exp{i}.stat.nIter, exp{i}.stat.nCutPlanes, ...
+ exp{i}.stat.exitflag, exp{i}.stat.ocas_time, exp{i}.stat.total_time);
+
+ if ~isempty(ref_sol)
+ opt_dif = any([opt.Method~=ref_opt.Method opt.C~=ref_opt.C opt.TolRel ~= ref_opt.TolRel ...
+ opt.TolAbs~=ref_opt.TolAbs opt.QPBound~=ref_opt.QPBound ...
+ opt.BufSize~=ref_opt.BufSize opt.MaxTime~=ref_opt.MaxTime opt.X0~=ref_opt.X0]);
+ sol_dif = max(max(abs(exp{i}.W-ref_sol.W)),abs(exp{i}.W0-ref_sol.W0));
+ fprintf('\nSolution difference: max(abs(ref.W-W)) = %f. Solutions are ', sol_dif);
+ if ~sol_dif
+ fprintf('EQUAL.\n');
+ else
+ fprintf('DIFFERENT.\n');
+ end
+ fprintf('Current and refrence settings are ');
+ if ~opt_dif
+ fprintf('EQUAL.\n');
+ else
+ fprintf('DIFFERENT.\n');
+ end
+ fprintf('Comparison result: ');
+ if sol_dif && ~opt_dif ,
+ fprintf('THIS IS NOT GOOD ... BUT DON''T PANIC.\n');
+ elseif ~sol_dif && ~opt_dif
+ fprintf('OK.\n');
+ elseif opt_dif
+ fprintf('UNDECIDED since options are different.\n');
+ end
+
+ end
+end
diff --git a/libqp.h b/libqp.h
new file mode 100644
index 0000000..e3c0bf2
--- /dev/null
+++ b/libqp.h
@@ -0,0 +1,86 @@
+/*-----------------------------------------------------------------------
+ * libqp.h: Library for Quadratic Programming optimization.
+ *
+ * The library provides two solvers:
+ * 1. Solver for QP task with simplex constraints.
+ * See function ./lib/libqp_splx.c for definition of the QP task.
+ *
+ * 2. Solver for QP task with box constraints and a single linear
+ * equality constraint.
+ * See function ./lib/libqp_gsmo.c for definiton of the QP task.
+ *
+ * Copyright (C) 2006-2008 Vojtech Franc, xfrancv at cmp.felk.cvut.cz
+ * Center for Machine Perception, CTU FEL Prague
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation;
+ * Version 3, 29 June 2007
+ *-------------------------------------------------------------------- */
+
+#ifndef libqp_h
+#define libqp_h
+
+#include <stdint.h>
+#include <math.h>
+
+#ifdef LIBQP_MATLAB
+#include "mex.h"
+#define LIBQP_PLUS_INF mxGetInf()
+#define LIBQP_CALLOC(x,y) mxCalloc(x,y)
+#define LIBQP_FREE(x) mxFree(x)
+#else
+#define LIBQP_PLUS_INF (-log(0.0))
+#define LIBQP_CALLOC(x,y) calloc(x,y)
+#define LIBQP_FREE(x) free(x)
+#endif
+
+#define LIBQP_INDEX(ROW,COL,NUM_ROWS) ((COL)*(NUM_ROWS)+(ROW))
+#define LIBQP_MIN(A,B) ((A) > (B) ? (B) : (A))
+#define LIBQP_MAX(A,B) ((A) < (B) ? (B) : (A))
+#define LIBQP_ABS(A) ((A) < 0 ? -(A) : (A))
+
+/* QP solver return value */
+typedef struct {
+ uint32_t nIter; /* number of iterations */
+ double QP; /* primal objective value */
+ double QD; /* dual objective value */
+ int8_t exitflag; /* -1 ... not enough memory
+ 0 ... nIter >= MaxIter
+ 1 ... QP - QD <= TolRel*ABS(QP)
+ 2 ... QP - QD <= TolAbs
+ 3 ... QP <= QP_TH
+ 4 ... eps-KKT conditions satisfied */
+} libqp_state_T;
+
+/* QP solver for tasks with simplex constraints */
+libqp_state_T libqp_splx_solver(const double* (*get_col)(uint32_t),
+ double *diag_H,
+ double *f,
+ double *b,
+ uint32_t *I,
+ uint8_t *S,
+ double *x,
+ uint32_t n,
+ uint32_t MaxIter,
+ double TolAbs,
+ double TolRel,
+ double QP_TH,
+ void (*print_state)(libqp_state_T state));
+
+/* Generalized SMO algorithm */
+libqp_state_T libqp_gsmo_solver(const double* (*get_col)(uint32_t),
+ double *diag_H,
+ double *f,
+ double *a,
+ double b,
+ double *LB,
+ double *UB,
+ double *x,
+ uint32_t n,
+ uint32_t MaxIter,
+ double TolKKT,
+ void (*print_state)(libqp_state_T state));
+
+
+#endif /* libqp_h */
diff --git a/libqp_splx.c b/libqp_splx.c
new file mode 100644
index 0000000..37a36eb
--- /dev/null
+++ b/libqp_splx.c
@@ -0,0 +1,407 @@
+/*-----------------------------------------------------------------------
+ * libqp_splx.c: solver for Quadratic Programming task with
+ * simplex constraints.
+ *
+ * DESCRIPTION
+ * The library provides function which solves the following instance of
+ * a convex Quadratic Programmin task:
+ *
+ * min QP(x):= 0.5*x'*H*x + f'*x
+ * x
+ *
+ * subject to:
+ * sum_{i in I_k} x[i] == b[k] for all k such that S[k] == 0
+ * sum_{i in I_k} x[i] <= b[k] for all k such that S[k] == 1
+ * x(i) >= 0 for all i=1:n
+ *
+ * where I_k = { i | I[i] == k}, k={1,...,m}.
+ *
+ * A precision of the found solution is controled by the input argumens
+ * MaxIter, TolAbs, QP_TH and MaxIter which define the stopping conditions:
+ *
+ * nIter >= MaxIter -> exitflag = 0 Number of iterations
+ * QP-QD <= TolAbs -> exitflag = 1 Abs. tolerance (duality gap)
+ * QP-QD <= QP*TolRel -> exitflag = 2 Relative tolerance
+ * QP <= QP_TH -> exitflag = 3 Threshold on objective value
+ *
+ * where QP and QD are primal respectively dual objective values.
+ *
+ * INPUT ARGUMENTS
+ * get_col function which returns pointer to the i-th column of H.
+ * diag_H [double n x 1] vector containing values on the diagonal of H.
+ * f [double n x 1] vector.
+ * b [double n x 1] vector of positive numbers.
+ * I [uint16_T n x 1] vector containing numbers 1...m.
+ * S [uint8_T n x 1] vector containing numbers 0 and 1.
+ * x [double n x 1] solution vector; must be feasible.
+ * n [uint32_t 1 x 1] dimension of H.
+ * MaxIter [uint32_t 1 x 1] max number of iterations.
+ * TolAbs [double 1 x 1] Absolute tolerance.
+ * TolRel [double 1 x 1] Relative tolerance.
+ * QP_TH [double 1 x 1] Threshold on the primal value.
+ * print_state print function; if == NULL it is not called.
+ *
+ * RETURN VALUE
+ * structure [libqp_state_T]
+ * .QP [1 x 1] Primal objective value.
+ * .QD [1 x 1] Dual objective value.
+ * .nIter [1 x 1] Number of iterations.
+ * .exitflag [1 x 1] Indicates which stopping condition was used:
+ * -1 ... Not enough memory.
+ * 0 ... Maximal number of iteations reached: nIter >= MaxIter.
+ * 1 ... Relarive tolerance reached: QP-QD <= abs(QP)*TolRel
+ * 2 ... Absolute tolerance reached: QP-QD <= TolAbs
+ * 3 ... Objective value reached threshold: QP <= QP_TH.
+ *
+ * REFERENCE
+ * The algorithm is described in:
+ * V. Franc, V. Hlavac. A Novel Algorithm for Learning Support Vector Machines
+ * with Structured Output Spaces. Research Report K333 22/06, CTU-CMP-2006-04.
+ * May, 2006. ftp://cmp.felk.cvut.cz/pub/cmp/articles/franc/Franc-TR-2006-04.ps
+ *
+ * Copyright (C) 2006-2008 Vojtech Franc, xfrancv at cmp.felk.cvut.cz
+ * Center for Machine Perception, CTU FEL Prague
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation;
+ * Version 3, 29 June 2007
+ *-------------------------------------------------------------------- */
+
+#include <math.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+#include <limits.h>
+
+#include "libqp.h"
+
+libqp_state_T libqp_splx_solver(const double* (*get_col)(uint32_t),
+ double *diag_H,
+ double *f,
+ double *b,
+ uint32_t *I,
+ uint8_t *S,
+ double *x,
+ uint32_t n,
+ uint32_t MaxIter,
+ double TolAbs,
+ double TolRel,
+ double QP_TH,
+ void (*print_state)(libqp_state_T state))
+{
+ double *d;
+ double *col_u, *col_v;
+ double *x_neq;
+ double tmp;
+ double improv;
+ double tmp_num;
+ double tmp_den=0;
+ double tau=0;
+ double delta;
+ uint32_t *inx;
+ uint32_t *nk;
+ uint32_t m;
+ uint32_t u=0;
+ uint32_t v=0;
+ uint32_t k;
+ uint32_t i, j;
+ libqp_state_T state;
+
+
+ /* ------------------------------------------------------------
+ Initialization
+ ------------------------------------------------------------ */
+ state.nIter = 0;
+ state.QP = LIBQP_PLUS_INF;
+ state.QD = -LIBQP_PLUS_INF;
+ state.exitflag = 100;
+
+ inx=NULL;
+ nk=NULL;
+ d=NULL;
+ x_neq = NULL;
+
+ /* count number of constraints */
+ for( i=0, m=0; i < n; i++ )
+ m = LIBQP_MAX(m,I[i]);
+
+ /* auxciliary variables for tranforming equalities to inequalities */
+ x_neq = (double*) LIBQP_CALLOC(m, sizeof(double));
+ if( x_neq == NULL )
+ {
+ state.exitflag=-1;
+ goto cleanup;
+ }
+
+ /* inx is translation table between variable index i and its contraint */
+ inx = (uint32_t*) LIBQP_CALLOC(m*n, sizeof(uint32_t));
+ if( inx == NULL )
+ {
+ state.exitflag=-1;
+ goto cleanup;
+ }
+
+ /* nk is the number of variables coupled by i-th linear constraint */
+ nk = (uint32_t*) LIBQP_CALLOC(m, sizeof(uint32_t));
+ if( nk == NULL )
+ {
+ state.exitflag=-1;
+ goto cleanup;
+ }
+
+ /* setup auxciliary variables */
+ for( i=0; i < m; i++ )
+ x_neq[i] = b[i];
+
+
+ /* create inx and nk */
+ for( i=0; i < n; i++ ) {
+ k = I[i]-1;
+ inx[LIBQP_INDEX(nk[k],k,n)] = i;
+ nk[k]++;
+
+ if(S[k] != 0)
+ x_neq[k] -= x[i];
+ }
+
+ /* d = H*x + f is gradient*/
+ d = (double*) LIBQP_CALLOC(n, sizeof(double));
+ if( d == NULL )
+ {
+ state.exitflag=-1;
+ goto cleanup;
+ }
+
+ /* compute gradient */
+ for( i=0; i < n; i++ )
+ {
+ d[i] += f[i];
+ if( x[i] > 0 ) {
+ col_u = (double*)get_col(i);
+ for( j=0; j < n; j++ ) {
+ d[j] += col_u[j]*x[i];
+ }
+ }
+ }
+
+ /* compute state.QP = 0.5*x'*(f+d);
+ state.QD = 0.5*x'*(f-d); */
+ for( i=0, state.QP = 0, state.QD=0; i < n; i++)
+ {
+ state.QP += x[i]*(f[i]+d[i]);
+ state.QD += x[i]*(f[i]-d[i]);
+ }
+ state.QP = 0.5*state.QP;
+ state.QD = 0.5*state.QD;
+
+ for( i=0; i < m; i++ )
+ {
+ for( j=0, tmp = LIBQP_PLUS_INF; j < nk[i]; j++ )
+ tmp = LIBQP_MIN(tmp, d[inx[LIBQP_INDEX(j,i,n)]]);
+
+ if(S[i] == 0)
+ state.QD += b[i]*tmp;
+ else
+ state.QD += b[i]*LIBQP_MIN(tmp,0);
+ }
+
+ /* print initial state */
+ if( print_state != NULL)
+ print_state( state );
+
+ /* ------------------------------------------------------------
+ Main optimization loop
+ ------------------------------------------------------------ */
+ while( state.exitflag == 100 )
+ {
+ state.nIter ++;
+
+ /* go over blocks of variables coupled by lin. constraint */
+ for( k=0; k < m; k++ )
+ {
+
+ /* compute u = argmin_{i in I_k} d[i]
+ delta = sum_{i in I_k} x[i]*d[i] - b*min_{i in I_k} */
+ for( j=0, tmp = LIBQP_PLUS_INF, delta = 0; j < nk[k]; j++ )
+ {
+ i = inx[LIBQP_INDEX(j,k,n)];
+ delta += x[i]*d[i];
+ if( tmp > d[i] ) {
+ tmp = d[i];
+ u = i;
+ }
+ }
+
+ if(S[k] != 0 && d[u] > 0)
+ u = -1;
+ else
+ delta -= b[k]*d[u];
+
+ /* if satisfied then k-th block of variables needs update */
+ if( delta > TolAbs/m && delta > TolRel*LIBQP_ABS(state.QP)/m)
+ {
+ /* for fixed u select v = argmax_{i in I_k} Improvement(i) */
+ if( u != -1 )
+ {
+ col_u = (double*)get_col(u);
+ improv = -LIBQP_PLUS_INF;
+ for( j=0; j < nk[k]; j++ )
+ {
+ i = inx[LIBQP_INDEX(j,k,n)];
+
+ if(x[i] > 0 && i != u)
+ {
+ tmp_num = x[i]*(d[i] - d[u]);
+ tmp_den = x[i]*x[i]*(diag_H[u] - 2*col_u[i] + diag_H[i]);
+ if( tmp_den > 0 )
+ {
+ if( tmp_num < tmp_den )
+ tmp = tmp_num*tmp_num / tmp_den;
+ else
+ tmp = tmp_num - 0.5 * tmp_den;
+
+ if( tmp > improv )
+ {
+ improv = tmp;
+ tau = LIBQP_MIN(1,tmp_num/tmp_den);
+ v = i;
+ }
+ }
+ }
+ }
+
+ /* check if virtual variable can be for updated */
+ if(x_neq[k] > 0 && S[k] != 0)
+ {
+ tmp_num = -x_neq[k]*d[u];
+ tmp_den = x_neq[k]*x_neq[k]*diag_H[u];
+ if( tmp_den > 0 )
+ {
+ if( tmp_num < tmp_den )
+ tmp = tmp_num*tmp_num / tmp_den;
+ else
+ tmp = tmp_num - 0.5 * tmp_den;
+
+ if( tmp > improv )
+ {
+ improv = tmp;
+ tau = LIBQP_MIN(1,tmp_num/tmp_den);
+ v = -1;
+ }
+ }
+ }
+
+ /* minimize objective w.r.t variable u and v */
+ if(v != -1)
+ {
+ tmp = x[v]*tau;
+ x[u] += tmp;
+ x[v] -= tmp;
+
+ /* update d = H*x + f */
+ col_v = (double*)get_col(v);
+ for(i = 0; i < n; i++ )
+ d[i] += tmp*(col_u[i]-col_v[i]);
+ }
+ else
+ {
+ tmp = x_neq[k]*tau;
+ x[u] += tmp;
+ x_neq[k] -= tmp;
+
+ /* update d = H*x + f */
+ for(i = 0; i < n; i++ )
+ d[i] += tmp*col_u[i];
+ }
+ }
+ else
+ {
+ improv = -LIBQP_PLUS_INF;
+ for( j=0; j < nk[k]; j++ )
+ {
+ i = inx[LIBQP_INDEX(j,k,n)];
+
+ if(x[i] > 0)
+ {
+ tmp_num = x[i]*d[i];
+ tmp_den = x[i]*x[i]*diag_H[i];
+ if( tmp_den > 0 )
+ {
+ if( tmp_num < tmp_den )
+ tmp = tmp_num*tmp_num / tmp_den;
+ else
+ tmp = tmp_num - 0.5 * tmp_den;
+
+ if( tmp > improv )
+ {
+ improv = tmp;
+ tau = LIBQP_MIN(1,tmp_num/tmp_den);
+ v = i;
+ }
+ }
+ }
+ }
+
+ tmp = x[v]*tau;
+ x_neq[k] += tmp;
+ x[v] -= tmp;
+
+ /* update d = H*x + f */
+ col_v = (double*)get_col(v);
+ for(i = 0; i < n; i++ )
+ d[i] -= tmp*col_v[i];
+ }
+
+ /* update objective value */
+ state.QP = state.QP - improv;
+ }
+ }
+
+ /* Compute primal and dual objectives */
+ for( i=0, state.QP = 0, state.QD=0; i < n; i++)
+ {
+ state.QP += x[i]*(f[i]+d[i]);
+ state.QD += x[i]*(f[i]-d[i]);
+ }
+ state.QP = 0.5*state.QP;
+ state.QD = 0.5*state.QD;
+
+ for( k=0; k < m; k++ )
+ {
+ for( j=0,tmp = LIBQP_PLUS_INF; j < nk[k]; j++ ) {
+ i = inx[LIBQP_INDEX(j,k,n)];
+ tmp = LIBQP_MIN(tmp, d[i]);
+ }
+
+ if(S[k] == 0)
+ state.QD += b[k]*tmp;
+ else
+ state.QD += b[k]*LIBQP_MIN(tmp,0);
+ }
+
+ /* print state */
+ if( print_state != NULL)
+ print_state( state );
+
+ /* check stopping conditions */
+ if(state.QP-state.QD <= LIBQP_ABS(state.QP)*TolRel ) state.exitflag = 1;
+ else if( state.QP-state.QD <= TolAbs ) state.exitflag = 2;
+ else if( state.QP <= QP_TH ) state.exitflag = 3;
+ else if( state.nIter >= MaxIter) state.exitflag = 0;
+ }
+
+ /*----------------------------------------------------------
+ Clean up
+ ---------------------------------------------------------- */
+cleanup:
+ LIBQP_FREE( d );
+ LIBQP_FREE( inx );
+ LIBQP_FREE( nk );
+ LIBQP_FREE( x_neq );
+
+ return( state );
+}
+
+
diff --git a/linclass.c b/linclass.c
new file mode 100644
index 0000000..7cb99d5
--- /dev/null
+++ b/linclass.c
@@ -0,0 +1,632 @@
+/*-----------------------------------------------------------------------
+ * linclass.c: Implementation of linear classification rule classifying
+ * examples from the SVM^light format.
+ *
+ * Copyright (C) 2008, 2009 Vojtech Franc, xfrancv at cmp.felk.cvut.cz
+ * Soeren Sonnenburg, soeren.sonnenburg at first.fraunhofer.de
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation;
+ *-------------------------------------------------------------------- */
+
+
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+#include <math.h>
+#include <stdlib.h>
+#include <stdint.h>
+
+#include "lib_svmlight_format.h"
+#include "libocas.h"
+#include "version.h"
+
+#define MODELFILE_MAXLINELEN 1000000
+
+void print_usage(void)
+{
+ printf("LINCLASS: Predict labels by linear classication rule\n"
+ " " OCAS_VERSION "\n"
+ "\n"
+ " usage: linclass [options] example_file model_file\n"
+ "\n"
+ "Arguments:\n"
+ " example_file text file with testing examples stored in SVM^light format\n"
+ " model_file text file which contains either binary (two-class) linear\n"
+ " rule f(x)=w'*x+w0 or multi-class rule f(x)=W'*x which are\n"
+ " produced by svmocas and msvmocas, respectively\n"
+ "Options:\n"
+ " -e prints classification error computed from predicted\n"
+ " labels and labels contained in the example_file.\n"
+ " -h this help\n"
+ " -o output_file save predictions to output_file rather than to stdout.\n"
+ " -t [0,1] output type: 0 .. predicted labels (default)\n"
+ " 1 .. discriminant values\n"
+ " -v [0,1] verbosity level (default 0).\n"
+ "\n"
+ "Examples\n"
+ " Train SVM classifier from riply_trn.light with regularization constant C = 10,\n"
+ " bias switched on, verbosity switched off and model saved to svmocas.model\n"
+ " ./svmocas -c 10 -b 1 -v 0 riply_trn.light svmocas.model \n"
+ "\n"
+ " Compute testing error of the classifier stored in svmocas.model using testing\n"
+ " examples from riply_tst.light and save predicted labels to riply_tst.pred\n"
+ " ./linclass -e -o riply_tst.pred riply_tst.light svmocas.model\n"
+ "\n"
+ );
+}
+
+int main(int argc, char *argv[])
+{
+ uint32_t i, j;
+ int len;
+ int recognized;
+ int exitflag = 0;
+ int verb;
+ int binary_problem;
+ int output_type;
+ int print_error;
+ char *line;
+
+ char *model_fname;
+ char *input_fname;
+ char *output_fname;
+ FILE *fid, *fout;
+
+ double *feat_val;
+ uint32_t *feat_idx;
+
+ int go = 1;
+ char *endptr, *begptr;
+ int nLines = 0;
+ int nCols = 0, tmp_nCols;
+ double val;
+ double *W;
+ double W0;
+ uint32_t nY, nDim;
+
+ long line_cnt = 0;
+ int label, pred_label=0;
+ long max_dim = 0;
+ long nnzf;
+ double dfce, max_dfce;
+ long nErrors = 0;
+ long *nClassErrors, *nClass;
+
+ /* init */
+ fid = NULL;
+ fout = NULL;
+ feat_val = NULL;
+ feat_idx = NULL;
+ W = NULL;
+ W0 = 0;
+ output_fname = NULL;
+ nClassErrors = NULL;
+ nClass = NULL;
+
+ /* default setting of input arguments*/
+ verb = 0;
+ print_error = 0;
+ output_type = 0;
+
+ /* Allocate memory */
+ line = calloc(MODELFILE_MAXLINELEN, sizeof(char));
+ if( line == NULL )
+ {
+ fprintf(stderr,"Not enough memmory to allocate line buffer.\n");
+ goto clean_up;
+ }
+
+ feat_idx = calloc(LIBSLF_MAXLINELEN, sizeof(uint32_t));
+ if( feat_idx == NULL )
+ {
+ fprintf(stderr,"Not enough memmory to allocate feat_idx.\n");
+ goto clean_up;
+ }
+
+ feat_val = calloc(LIBSLF_MAXLINELEN, sizeof(double));
+ if( feat_val == NULL )
+ {
+ fprintf(stderr,"Not enough memmory to allocate feat_val.\n");
+ goto clean_up;
+ }
+
+
+ /*-----------------------------------------------------------
+ Process input arguments
+ ------------------------------------------------------------*/
+ if(argc ==1 || strcmp(argv[1], "-h") == 0)
+ {
+ print_usage();
+ goto clean_up;
+ }
+
+ if(argc < 2)
+ {
+ fprintf(stderr,"Not enough input arguments.\n\n");
+ goto clean_up;
+ }
+
+
+ for (i = 1; i < argc-2; i++)
+ {
+ recognized = 0;
+ if (strcmp(argv[i], "-h") == 0)
+ {
+ print_usage();
+ goto clean_up;
+ }
+
+ if (strcmp(argv[i], "-e") == 0)
+ {
+ print_error = 1;
+ recognized = 1;
+ continue;
+ }
+
+ if (strcmp(argv[i], "-v") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -v\n");
+ goto clean_up;
+ }
+ verb = atoi(argv[i+1]);
+ if(verb < 0 || verb > 1)
+ {
+ fprintf(stderr,"A value after the argument -v must be either 0 or 1.\n");
+ goto clean_up;
+ }
+
+ i++;
+ recognized = 1;
+ continue;
+ }
+
+ if (strcmp(argv[i], "-t") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -t\n");
+ goto clean_up;
+ }
+ output_type = atoi(argv[i+1]);
+ if(output_type != 0 && output_type != 1)
+ {
+ fprintf(stderr,"A value after the argument -t must be either 0 or 1.\n");
+ goto clean_up;
+ }
+
+ i++;
+ recognized = 1;
+ continue;
+ }
+
+ if (strcmp(argv[i], "-o") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a string after argument -o\n");
+ goto clean_up;
+ }
+
+ len = strlen(argv[i+1]);
+ output_fname = calloc(len+1,sizeof(char));
+ strcpy(output_fname, argv[i+1]);
+
+ i++;
+ recognized = 1;
+ continue;
+ }
+
+ if(recognized == 0)
+ {
+ fprintf(stderr,"Unknown input argument: %s\n", argv[i]);
+ goto clean_up;
+ }
+
+ }
+
+ len = strlen(argv[argc-2]);
+ input_fname = calloc(len+1,sizeof(char));
+ strcpy(input_fname, argv[argc-2]);
+
+ len = strlen(argv[argc-1]);
+ model_fname = calloc(len+1,sizeof(char));
+ strcpy(model_fname, argv[argc-1]);
+
+ if(verb)
+ {
+ printf("Verbosity: %d\n", verb);
+ printf("Output type: %d\n", output_type);
+ printf("Print error: %d\n", print_error);
+ printf("Example file: %s\n", input_fname);
+ printf("Model file: %s\n", model_fname);
+ if( output_fname != NULL)
+ printf("Output file: %s\n", output_fname);
+ else
+ printf("Output file: stdout\n");
+ }
+
+
+ /*----------------------------------------------------------------
+ Load classification rule which is either
+ vector [nDim x 1] + bias [1x1]
+ or
+ matrix [nDim x nY]
+ -------------------------------------------------------------------*/
+
+ /* load W from model file */
+ fid = fopen(model_fname, "r");
+ if(fid == NULL) {
+ fprintf(stderr,"Cannot open model file.\n");
+ perror("fopen error ");
+ goto clean_up;
+ }
+
+ if(verb)
+ {
+ printf("Analysing model file... ");
+ fflush(stdout);
+ }
+
+ /* read the first line */
+ if(fgets(line,LIBSLF_MAXLINELEN, fid) == NULL )
+ {
+ fprintf(stderr,"Empty example file.\n");
+ goto clean_up;
+ }
+ else
+ {
+ nLines = 1;
+ begptr = line;
+ while(1)
+ {
+ val = strtod(begptr, &endptr);
+
+ if(val == 0 && begptr == endptr)
+ break;
+
+ nCols++;
+ begptr = endptr;
+ }
+ }
+
+ go = 1;
+ while(go)
+ {
+ begptr = line;
+
+ tmp_nCols = 0;
+ while(1)
+ {
+ val = strtod(begptr, &endptr);
+
+ if(val == 0 && begptr == endptr)
+ break;
+
+ tmp_nCols++;
+ begptr = endptr;
+ }
+ if( tmp_nCols != nCols)
+ {
+ fprintf(stderr,"Error: Model file contains lines with different number of colums.\n");
+ goto clean_up;
+ }
+
+ if(fgets(line,LIBSLF_MAXLINELEN, fid) == NULL )
+ {
+ go = 0;
+ }
+ else
+ nLines++;
+ }
+
+ if(verb)
+ printf("done.\n"
+ "Number of lines: %d\n"
+ "Number of columns: %d\n",
+ nLines,nCols);
+
+ if(nCols == 1)
+ {
+ nY = 2;
+ nDim = nLines-1;
+ binary_problem = 1;
+
+ /* learned weight vector */
+ W = (double*)calloc(nDim,sizeof(double));
+ if(W == NULL)
+ {
+ fprintf(stderr,"Not enough memory for vector W.\n");
+ goto clean_up;
+ }
+
+ if(verb)
+ {
+ printf("Model file contains binary classification rule.\n");
+ printf("Reading model file...");
+ }
+
+ fseek(fid,0,SEEK_SET);
+ for(i=0; i <= nDim; i++)
+ {
+ if(fgets(line,LIBSLF_MAXLINELEN, fid) == NULL )
+ {
+ fprintf(stderr,"Model file corrupted.\n");
+ goto clean_up;
+ }
+
+ begptr = line;
+ val = strtod(begptr, &endptr);
+
+ if(val == 0 && begptr == endptr)
+ {
+ fprintf(stderr,"Model file corrupted.\n");
+ goto clean_up;
+ }
+
+ if(i < nDim)
+ W[i] = val;
+ else
+ W0 = val;
+ }
+
+ if(verb)
+ printf("done.\n");
+
+ }
+ else
+ {
+ nY = nCols;
+ nDim = nLines;
+ binary_problem = 0;
+
+ /* learned weight vector */
+ W = (double*)calloc(nDim*nY,sizeof(double));
+ if(W == NULL)
+ {
+ fprintf(stderr,"Not enough memory for matrix W.\n");
+ goto clean_up;
+ }
+
+ if(verb)
+ {
+ printf("Model file contains multi-class classification rule.\n");
+ printf("Reading model file...");
+ }
+
+ fseek(fid,0,SEEK_SET);
+ for(i=0; i < nDim; i++)
+ {
+ if(fgets(line,LIBSLF_MAXLINELEN, fid) == NULL )
+ {
+ fprintf(stderr,"Model file corrupted.\n");
+ goto clean_up;
+ }
+
+ begptr = line;
+ for(j=0; j < nY; j++)
+ {
+ val = strtod(begptr, &endptr);
+
+ if(val == 0 && begptr == endptr)
+ {
+ fprintf(stderr,"Model file corrupted.\n");
+ goto clean_up;
+ }
+ begptr = endptr;
+
+
+ W[LIBOCAS_INDEX(i,j,nDim)] = val;
+ }
+ }
+ if(verb)
+ printf("done.\n");
+ }
+
+ fclose(fid);
+
+/* printf("W0=%f, W = [ ", W0);*/
+/* for(i=0; i < nDim; i++)*/
+/* printf("%f ", W[i]);*/
+/* printf("]\n");*/
+/* printf("W = [\n");*/
+/* for(j=0; j < nDim; j++)*/
+/* {*/
+/* for(i=0; i < nY; i++)*/
+/* printf("%f ", W[LIBOCAS_INDEX(j,i,nDim)]);*/
+/* printf("\n");*/
+/* }*/
+
+/* load_time = get_time() - load_time;*/
+
+ /*-----------------------------------------------------
+ Read examples and classify them.
+ -----------------------------------------------------*/
+
+ fid = fopen(input_fname, "r");
+ if(fid == NULL) {
+ fprintf(stderr,"Cannot open input file.\n");
+ perror("fopen error ");
+ goto clean_up;
+ }
+
+ if(output_fname == NULL)
+ fout = stdout;
+ else
+ {
+ fout = fopen(output_fname, "w+");
+ if(fid == NULL) {
+ fprintf(stderr,"Cannot open output file.\n");
+ perror("fopen error ");
+ fclose(fid);
+ goto clean_up;
+ }
+ }
+
+ if(verb)
+ {
+ if(output_fname != NULL)
+ printf("Classifying...");
+ else
+ printf("Outputs:\n");
+ }
+
+ nClassErrors = (long*)calloc(nY,sizeof(long));
+ if(nClassErrors == NULL)
+ {
+ fprintf(stderr,"Not enough memory for vector nClassError.\n");
+ goto clean_up;
+ }
+
+ nClass = (long*)calloc(nY,sizeof(long));
+ if(nClass == NULL)
+ {
+ fprintf(stderr,"Not enough memory for vector nClass.\n");
+ goto clean_up;
+ }
+
+
+ go = 1;
+ while(go) {
+
+ if(fgets(line,LIBSLF_MAXLINELEN, fid) == NULL )
+ {
+ go = 0;
+ }
+ else
+ {
+ line_cnt ++;
+ nnzf = svmlight_format_parse_line(line, &label, feat_idx, feat_val);
+
+ if(nnzf == -1)
+ {
+ fprintf(stderr,"Parsing error on line %ld .\n", line_cnt);
+ fprintf(stderr,"Probably defective input file.\n");
+ goto clean_up;
+ }
+
+ max_dim = LIBOCAS_MAX(max_dim,feat_idx[nnzf-1]);
+
+ if(binary_problem == 1)
+ {
+ dfce = W0;
+ for(i=0; i < nnzf; i++)
+ {
+ if(feat_idx[i]-1 < nDim)
+ dfce += feat_val[i]*W[feat_idx[i]-1];
+ }
+
+ if(label == +1)
+ nClass[0]++;
+ else
+ nClass[1]++;
+
+ if(dfce >=0 && label == -1)
+ {
+ nClassErrors[1]++;
+ nErrors++;
+ }
+ else if (dfce < 0 && label== +1)
+ {
+ nClassErrors[0]++;
+ nErrors++;
+ }
+
+ if(output_type == 0)
+ {
+ if(dfce >=0 )
+ fprintf(fout,"+1\n");
+ else
+ fprintf(fout,"-1\n");
+
+ }
+ else
+ fprintf(fout,"%.20f\n", dfce);
+ }
+ else
+ {
+ max_dfce = -LIBOCAS_PLUS_INF;
+ for(j=0; j < nY; j++)
+ {
+ dfce = 0;
+ for(i=0; i < nnzf; i++)
+ {
+ if(feat_idx[i]-1 < nDim)
+ dfce += feat_val[i]*W[LIBOCAS_INDEX(feat_idx[i]-1,j,nDim)];
+ }
+ if(output_type==1)
+ fprintf(fout,"%.20f ", dfce);
+
+ if(max_dfce < dfce)
+ {
+ max_dfce = dfce;
+ pred_label = j+1;
+ }
+ }
+ if(output_type==0)
+ fprintf(fout,"%d", pred_label);
+
+ fprintf(fout,"\n");
+
+ nClass[label-1]++;
+
+ if(label != pred_label)
+ {
+ nErrors++;
+ nClassErrors[label-1]++;
+ }
+
+ }
+ }
+ }
+
+ if(verb)
+ {
+ if(output_fname != NULL)
+ printf("done.\n");
+
+ printf("Number of examples: %ld\n"
+ "Maximal dimensionality: %ld\n", line_cnt, max_dim);
+ }
+ if(print_error)
+ {
+ printf("Classification error: %f%%(%ld/%ld)\n", 100.0*(double)nErrors/(double)line_cnt,nErrors,line_cnt);
+ printf("Per-class errors: ");
+ if(binary_problem)
+ {
+ printf("+1: %f%%(%ld/%ld) -1: %f%%(%ld/%ld)\n",
+ 100.0*(double)nClassErrors[0]/(double)nClass[0], nClassErrors[0],nClass[0],
+ 100.0*(double)nClassErrors[1]/(double)nClass[1], nClassErrors[1],nClass[1]);
+ }
+ else
+ {
+ for(i=0; i < nY; i++)
+ printf("%d: %f%%(%ld/%ld) ", i+1, 100.0*(double)nClassErrors[i]/(double)nClass[i],
+ nClassErrors[i],nClass[i]);
+ printf("\n");
+ }
+ }
+
+
+ fclose(fid);
+ fclose(fout);
+
+ exitflag = 1;
+
+clean_up:
+
+ free(W);
+ free(line);
+ free(feat_val);
+ free(feat_idx);
+ free(nClassErrors);
+ free(nClass);
+
+ return(exitflag);
+}
+
+
+
diff --git a/msvmocas.c b/msvmocas.c
new file mode 100644
index 0000000..59c1d4a
--- /dev/null
+++ b/msvmocas.c
@@ -0,0 +1,540 @@
+/*-----------------------------------------------------------------------
+ * msvmocas.c: Standalone application implementing the OCAS folver for
+ * training multi-class linear SVM classifiers.
+ *
+ * Copyright (C) 2008,2009 Vojtech Franc, xfrancv at cmp.felk.cvut.cz
+ * Soeren Sonnenburg, soeren.sonnenburg at first.fraunhofer.de
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation;
+ *-------------------------------------------------------------------- */
+
+
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+#include <math.h>
+#include <stdlib.h>
+
+#include "lib_svmlight_format.h"
+#include "libocas.h"
+#include "sparse_mat.h"
+#include "ocas_helper.h"
+
+#include "version.h"
+
+void print_usage(void)
+{
+ printf("MSVMOCAS: Optimized Cutting Plane Algorithm for Support Vector Machines\n"
+ " Training linear multi-class SVM classifier from examples\n"
+ " " OCAS_VERSION "\n"
+ "\n"
+ " usage: msvmocas [options] example_file model_file\n"
+ "\n"
+ "Arguments:\n"
+ " example_file file with training examples stored in SVM^light format\n"
+ " model_file text file to store learned linear rule f(x)=W'*x; the model file\n"
+ " contains M columns and D lines (M is number of classes, D is data\n"
+ " dimension) corresponding to the elements of the matrix W [D x M].\n"
+ "General options:\n"
+ " -h this help\n"
+ " -v [0,1] verbosity level (default 1).\n"
+ "Learning options:\n"
+ " -c float regularization constant C (default 1).\n"
+ " -n int use only first n examples for training. By default n equals to\n"
+ " the number of examples in the example_file.\n"
+ "Optimization options:\n"
+ " -m [0,1] solver to be used: 0 ... standard cutting plane (BMRM, SVM^perf)\n"
+ " 1 ... OCAS (default 1).\n"
+ " -s int cache size for cutting planes (default 2000).\n"
+ "Stopping conditions:\n"
+ " -a float absolute tolerance TolAbs: halt if QP-QD <= TolAbs (default 0).\n"
+ " -r float relative tolerance TolRel: halt if QP-QD <= abs(QP)*TolRel (default 0.01).\n"
+ " -q float desired objective value QPValue: halt if QP <= QPValue (default 0).\n"
+ " -t float halts if the solver time (loading time is not counted) exceeds\n"
+ " the given time in seconds (default inf).\n\n"
+ "Example:\n"
+ " Train multi-class SVM classifier from example file ./data/example4_train.light with\n"
+ " regularization constant set to C = 10, verbosity switched off and save model to\n"
+ " file ./data/msvmocas.model\n"
+ " ./msvmocas -c 10 -v 0 ./data/example4_train.light ./data/msvmocas.model\n"
+ "\n"
+ " Compute testing error of the classifier stored in ./data/msvmocas.model using testing\n"
+ " examples from ./data/example4_test.light and save predicted labels to ./data/example4_test.pred\n"
+ " ./linclass -e -o ./data/exaple4_test.pred ./data/example4_test.light ./data/msvmocas.model\n"
+ "\n"
+ );
+}
+
+
+int main(int argc, char *argv[])
+{
+ double C, TolRel, TolAbs, QPBound, MaxTime;
+ uint32_t i, j, BufSize;
+ uint16_t Method;
+ ocas_return_value_T ocas;
+ int len;
+ int recognized;
+ int exitflag = 1;
+ int verb;
+
+ /* timing variables */
+ double load_time;
+ double total_time;
+
+ char *model_fname;
+ char *input_fname;
+ FILE *fid;
+
+ /* start time measuring */
+ total_time = get_time();
+
+ /* init */
+ data_X = NULL;
+ data_y = NULL;
+ W = NULL;
+ oldW = NULL;
+ sparse_A.nz_dims = NULL;
+ sparse_A.index = NULL;
+ sparse_A.value = NULL;
+ new_a = NULL;
+ full_A = NULL;
+
+ /* default setting of input arguments*/
+ C = 1.0;
+ Method = 1;
+ TolRel = 0.01;
+ TolAbs = 0.0;
+ QPBound = 0.0;
+ BufSize = 2000;
+ MaxTime = (double)LIBOCAS_PLUS_INF;
+ nData = -1;
+ verb = 1;
+
+ /*-----------------------------------------------------------
+ Process input arguments
+ ------------------------------------------------------------*/
+ if(argc ==1 || strcmp(argv[1], "-h") == 0)
+ {
+ print_usage();
+ goto clean_up;
+ }
+
+ if(argc < 3)
+ {
+ fprintf(stderr,"Not enough input arguments.\n\n");
+ goto clean_up;
+ }
+
+
+ for (i = 1; i < argc-2; i++)
+ {
+ recognized = 0;
+ if (strcmp(argv[i], "-h") == 0)
+ {
+ print_usage();
+ goto clean_up;
+ }
+
+ if (strcmp(argv[i], "-c") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -c\n");
+ goto clean_up;
+ }
+ C = atof(argv[i+1]);
+ if(C <=0)
+ {
+ fprintf(stderr,"Parameter C must be geater than zero.\n");
+ goto clean_up;
+ }
+ i++;
+ recognized = 1;
+ }
+
+ if (strcmp(argv[i], "-n") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -n\n");
+ goto clean_up;
+ }
+ nData = atol(argv[i+1]);
+ if(nData <=0)
+ {
+ fprintf(stderr,"A value after the argument -n must be greater than zero.\n");
+ goto clean_up;
+ }
+ i++;
+ recognized = 1;
+ }
+
+ if (strcmp(argv[i], "-s") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -s\n");
+ goto clean_up;
+ }
+ BufSize = atol(argv[i+1]);
+ if(nData <=0)
+ {
+ fprintf(stderr,"A value after the argument -s must be greater than zero.\n");
+ goto clean_up;
+ }
+ i++;
+ recognized = 1;
+ }
+
+
+ if (strcmp(argv[i], "-m") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -m\n");
+ goto clean_up;
+ }
+ Method = atoi(argv[i+1]);
+ if(Method != 0 && Method != 1)
+ {
+ fprintf(stderr,"A value after the argument -m must be 0 or 1.\n");
+ goto clean_up;
+ }
+ i++;
+ recognized = 1;
+ }
+
+ if (strcmp(argv[i], "-v") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -v\n");
+ goto clean_up;
+ }
+ verb = atoi(argv[i+1]);
+ if(verb < 0 || verb > 1)
+ {
+ fprintf(stderr,"A value after the argument -v must be either 0 or 1.\n");
+ goto clean_up;
+ }
+
+
+ i++;
+ recognized = 1;
+ }
+
+ if (strcmp(argv[i], "-a") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -a\n");
+ goto clean_up;
+ }
+ TolAbs = atof(argv[i+1]);
+ if(TolAbs < 0)
+ {
+ fprintf(stderr,"A value after the argument -a must be a positive scalar.\n");
+ goto clean_up;
+ }
+ i++;
+ recognized = 1;
+ }
+
+ if (strcmp(argv[i], "-r") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -r\n");
+ goto clean_up;
+ }
+ TolRel = atof(argv[i+1]);
+ if(TolRel < 0)
+ {
+ fprintf(stderr,"A value after the argument -r must be a positive scalar.\n");
+ goto clean_up;
+ }
+ i++;
+ recognized = 1;
+ }
+
+ if (strcmp(argv[i], "-q") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -q\n");
+ goto clean_up;
+ }
+ QPBound = atof(argv[i+1]);
+ i++;
+ recognized = 1;
+ }
+
+ if (strcmp(argv[i], "-t") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -t\n");
+ goto clean_up;
+ }
+ MaxTime = atof(argv[i+1]);
+ if(MaxTime <=0)
+ {
+ fprintf(stderr,"A value after the argument -t must be a positive scalar.\n");
+ goto clean_up;
+ }
+ i++;
+ recognized = 1;
+ }
+
+ if(recognized == 0)
+ {
+ fprintf(stderr,"Unknown input argument: %s\n", argv[i]);
+ goto clean_up;
+ }
+
+ }
+
+ len = strlen(argv[argc-2]);
+ input_fname = calloc(len+1,sizeof(char));
+ strcpy(input_fname, argv[argc-2]);
+
+ len = strlen(argv[argc-1]);
+ model_fname = calloc(len+1,sizeof(char));
+ strcpy(model_fname, argv[argc-1]);
+
+ if(verb)
+ printf("Input file: %s\n", input_fname);
+
+ /*----------------------------------------------------------------
+ Load input examples
+ -------------------------------------------------------------------*/
+ load_time = get_time();
+ if( load_svmlight_file(input_fname,verb) == -1 || data_X == NULL || data_y == NULL)
+ goto clean_up;
+
+ load_time = get_time() - load_time;
+
+ /* get examples' dimension */
+ nDim = mxGetM(data_X);
+
+ /* if not given set number of training examples to be used */
+ if(nData == -1)
+ nData = mxGetN(data_X);
+ else if(nData <= 0 || nData > mxGetN(data_X))
+ {
+ fprintf(stderr,"Number of examples in the input file is %d.\n", mxGetN(data_X));
+ fprintf(stderr,"A value after argument -n must be less or equal to the number of examples.\n");
+ goto clean_up;
+ }
+
+ /* get number of classes */
+ for(i=0, nY = 0; i < nData; i++)
+ nY = LIBOCAS_MAX(nY, (uint32_t)data_y[i]);
+
+
+ /*----------------------------------------------------------------
+ Print setting
+ -------------------------------------------------------------------*/
+ if(verb)
+ {
+ printf("Input file statistics:\n"
+ " # of examples : %d\n"
+ " # of classes : %d\n"
+ " dimensionality : %d\n",
+ mxGetN(data_X), nY, nDim);
+ if( mxIsSparse(data_X) )
+ printf(" density : %.2f%% (sparse matrix representation used)\n",
+ 100.0*(double)mxGetNZMAX(data_X)/((double)nDim*(double)(mxGetN(data_X))));
+ else
+ printf(" density : 100%% (full matrix representation used)\n");
+
+ printf("Setting:\n"
+ " C : %f\n"
+ " # of examples : %d\n"
+ " solver : %d\n"
+ " cache size : %d\n"
+ " TolAbs : %f\n"
+ " TolRel : %f\n"
+ " QPValue : %f\n"
+ " MaxTime : %f [s]\n"
+ " Verbosity : %d\n",
+ C, nData, Method,BufSize,TolAbs,TolRel, QPBound, MaxTime,verb);
+ }
+
+
+ /*----------------------------------------------------------------
+ Allocate memory for working variables and cutting plane cache
+ -------------------------------------------------------------------*/
+
+ /* learned weight vector */
+ W = (double*)mxCalloc(nDim*nY,sizeof(double));
+ if(W == NULL)
+ {
+ fprintf(stderr,"Not enough memory for matrix W.\n");
+ goto clean_up;
+ }
+
+ oldW = (double*)mxCalloc(nDim*nY,sizeof(double));
+ if(oldW == NULL)
+ {
+ fprintf(stderr,"Not enough memory for matrix oldW.");
+ goto clean_up;
+ }
+
+ /* allocate buffer for computing cutting plane */
+ new_a = (double*)mxCalloc(nDim*nY,sizeof(double));
+ if(new_a == NULL)
+ {
+ fprintf(stderr,"Not enough memory for auxciliary cutting plane buffer new_a.");
+ goto clean_up;
+ }
+
+ if(mxIsSparse(data_X))
+ {
+
+ /* init cutting plane buffer */
+ sparse_A.nz_dims = mxCalloc(BufSize,sizeof(uint32_t));
+ sparse_A.index = mxCalloc(BufSize,sizeof(sparse_A.index[0]));
+ sparse_A.value = mxCalloc(BufSize,sizeof(sparse_A.value[0]));
+ if(sparse_A.nz_dims == NULL || sparse_A.index == NULL || sparse_A.value == NULL)
+ {
+ fprintf(stderr,"Not enough memory for cutting plane buffer sparse_A.");
+ goto clean_up;
+ }
+
+ /*----------------------------------------------------------------
+ Run OCAS run ...
+ -------------------------------------------------------------------*/
+ if(verb)
+ {
+ printf("Starting optimization:\n");
+
+ ocas = msvm_ocas_solver( C, data_y, nY, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &msvm_sparse_compute_W, &msvm_full_update_W, &msvm_sparse_add_new_cut,
+ &msvm_sparse_compute_output, &qsort_data, &ocas_print, 0);
+ }
+ else
+ {
+ ocas = msvm_ocas_solver( C, data_y, nY, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &msvm_sparse_compute_W, &msvm_full_update_W, &msvm_sparse_add_new_cut,
+ &msvm_sparse_compute_output, &qsort_data, &ocas_print_null, 0);
+ }
+ }
+ else
+ {
+ /* init cutting plane buffer */
+ full_A = mxCalloc(BufSize*nDim*nY,sizeof(double));
+ if( full_A == NULL )
+ {
+ fprintf(stderr,"Not enough memory for cutting plane buffer full_A.");
+ goto clean_up;
+ }
+
+ if(verb)
+ {
+ printf("Starting optimization:\n");
+
+ ocas = msvm_ocas_solver( C, data_y, nY, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &msvm_full_compute_W, &msvm_full_update_W, &msvm_full_add_new_cut,
+ &msvm_full_compute_output, &qsort_data, &ocas_print, 0);
+ }
+ else
+ {
+ ocas = msvm_ocas_solver( C, data_y, nY, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &msvm_full_compute_W, &msvm_full_update_W, &msvm_full_add_new_cut,
+ &msvm_full_compute_output, &qsort_data, &ocas_print_null, 0);
+
+ }
+
+ }
+
+
+ total_time=get_time()-total_time;
+
+ if(verb)
+ {
+ printf("Stopping condition: ");
+ switch( ocas.exitflag )
+ {
+ case 1: printf("1-Q_D/Q_P <= TolRel(=%f) satisfied.\n", TolRel); break;
+ case 2: printf("Q_P-Q_D <= TolAbs(=%f) satisfied.\n", TolAbs); break;
+ case 3: printf("Q_P <= QPBound(=%f) satisfied.\n", QPBound); break;
+ case 4: printf("Optimization time (=%f) >= MaxTime(=%f).\n", ocas.ocas_time, MaxTime); break;
+ case -1: printf("Has not converged!\n" ); break;
+ case -2: printf("Not enough memory for the solver.\n" ); break;
+ }
+
+ printf("Timing statistics:\n"
+ " load_time : %f[s]\n"
+ " qp_solver_time : %f[s]\n"
+ " sort_time : %f[s]\n"
+ " output_time : %f[s]\n"
+ " add_time : %f[s]\n"
+ " w_time : %f[s]\n"
+ " print_time : %f[s]\n"
+ " ocas_time : %f[s]\n"
+ " total_time : %f[s]\n",
+ load_time, ocas.qp_solver_time, ocas.sort_time, ocas.output_time,
+ ocas.add_time, ocas.w_time, ocas.print_time, ocas.ocas_time, total_time);
+
+ printf("Training error: %.4f%%\n", 100*(double)ocas.trn_err/(double)nData);
+ }
+
+ /* save W to the model file */
+ fid = fopen(model_fname, "w+");
+ if(fid == NULL) {
+ perror("fopen error ");
+ mexPrintf("Cannot open model file.");
+ goto clean_up;
+ }
+
+ for(i=0; i < nDim; i++)
+ {
+ for(j=0; j < nY; j++)
+ {
+ fprintf(fid, "%.20f ", W[LIBOCAS_INDEX(i,j,nDim)]);
+ }
+ fprintf(fid, "\n");
+ }
+
+ fclose(fid);
+
+ if(verb)
+ printf("Result saved to model file: %s\n", model_fname);
+
+ exitflag = 0;
+
+clean_up:
+
+ mxDestroyArray(data_X);
+ mxFree(data_y);
+ mxFree(W);
+ mxFree(oldW);
+ mxFree(new_a);
+ mxFree(full_A);
+
+ mxFree(sparse_A.nz_dims);
+ if( sparse_A.index !=NULL)
+ {
+ for(i=0; i < BufSize; i++)
+ if(sparse_A.index[i] != NULL)
+ mxFree(sparse_A.index[i]);
+
+ mxFree(sparse_A.index);
+ }
+ if( sparse_A.value != NULL)
+ {
+ for(i=0; i < BufSize; i++)
+ if(sparse_A.value[i] != NULL)
+ mxFree(sparse_A.value[i]);
+
+ mxFree(sparse_A.value);
+ }
+
+ return(exitflag);
+}
+
+
+
diff --git a/msvmocas.m b/msvmocas.m
new file mode 100644
index 0000000..6a48dd0
--- /dev/null
+++ b/msvmocas.m
@@ -0,0 +1,63 @@
+% MSVMOCAS Train multi-class linear SVM classifier using OCAS solver.
+%
+% Synopsis:
+% [W,stat] = msvmocas(X,y,C,Method,TolRel,TolAbs,QPBound,BufSize,nExamples,MaxTime,verb)
+% [W,stat] = msvmocas(svmlight_data_file,C,Method,TolRel,TolAbs,QPBound,BufSize,nExamples,MaxTime,verb)
+%
+% Desription:
+% This function trains multi-class linear SVM classifier by solving
+%
+% W^* = argmin 0.5*sum_y (W(:,y)'*W(:,y)) + C* sum max( (y~=y(i)) + (W(:,y) - W(:,y(i))'*X(:,i))
+% W i=1:nData y
+%
+% The function accepts examples either in Matlab matrix X (both sparse and dense) and
+% a dense vector y or as path to a file in SVM^light format.
+%
+% Reference:
+% V. Franc, S. Sonnenburg. To be published. 2009
+%
+% Input:
+% data_file [string] Training examples stored in SVM^light format.
+%
+% X [nDim x nExamples] training inputs (sparse or dense matrix).
+% y [nExamples x 1] labels; intgers 1,2,...nY
+% C [1x1] regularization constant
+% Method [1x1] 0..cutting plane; 1..OCAS (default 1)
+% TolRel [1x1] halts if Q_P-Q_D <= abs(Q_P)*TolRel (default 0.01)
+% TolAbs [1x1] halts if Q_P-Q_D <= TolAbs (default 0)
+% QPValue [1x1] halts if Q_P <= QPBpound (default 0)
+% BufSize [1x1] Initial size of active constrains buffer (default 2000)
+% nExamples [1x1] Number of training examplesused for training; must be >0 and <= size(X,2).
+% If nExamples = inf then nExamples is set to size(X,2).
+% MaxTime [1x1] halts if time used by solver (data loading time is not counted) exceeds
+% MaxTime given in seconds. Use MaxTime=inf (default) to switch off this stopping condition.
+% verb [1x1] if non-zero then prints some info; (default 1)
+%
+% Output:
+% W [nDim x nY] Paramater vectors of decision rule; [dummy,ypred] = max(W'*x)
+% stat [struct] Optimizer statistics (field names are self-explaining).
+%
+% Example:
+% C = 1;
+%
+% % case 1: loading data directly from file in SVM^light format
+% [W,stat] = msvmocas('example4_train.light',C);
+%
+% % case 2: using data loaded in Matlab
+% load('example4_train','X','y');
+% [W,stat] = msvmocas(X,y,C);
+%
+% % classification
+% load('example4_test.mat','X','y');
+% [dummy,ypred] = max(W'*X);
+% sum(ypred(:) ~= y(:))/length(y)
+%
+
+%
+% Copyright (C) 2008 Vojtech Franc, xfrancv at cmp.felk.cvutr.cz
+% Soeren Sonnenburg, soeren.sonnenburg at first.fraunhofer.de
+%
+% This program is free software; you can redistribute it and/or
+% modify it under the terms of the GNU General Public
+% License as published by the Free Software Foundation;
+% Version 3, 29 June 2007
diff --git a/msvmocas_mex.c b/msvmocas_mex.c
new file mode 100644
index 0000000..330972e
--- /dev/null
+++ b/msvmocas_mex.c
@@ -0,0 +1,364 @@
+/*=================================================================================
+ * svmocas_mex.c: Matlab MEX interface for OCAS solver training the linear SVM classifiers.
+ *
+ * Synopsis:
+ * [W,stat] = msvmocas(X,y,C,Method,TolRel,TolAbs,QPBound,BufSize,nData,MaxTime,verb)
+ * [W,stat] = msvmocas(svmlight_data_file,C,Method,TolRel,TolAbs,QPBound,BufSize,nData,MaxTime,verb)
+ *
+ * Synopsis:
+ * [W,stat] = msvmocas(X,y,C,Method,TolRel,TolAbs,QPBound,BufSize,nData,MaxTime)
+ * Copyright (C) 2008 Vojtech Franc, xfrancv at cmp.felk.cvut.cz
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation;
+ *======================================================================================*/
+
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+#include <mex.h>
+
+/*#define LIBOCAS_MATLAB*/
+
+#include "libocas.h"
+#include "ocas_helper.h"
+
+#define DEFAULT_METHOD 1
+#define DEFAULT_TOLREL 0.01
+#define DEFAULT_TOLABS 0.0
+#define DEFAULT_QPVALUE 0.0
+#define DEFAULT_BUFSIZE 2000
+#define DEFAULT_MAXTIME mxGetInf()
+#define DEFAULT_VERB 1
+
+
+
+/*======================================================================
+ Main code plus interface to Matlab.
+========================================================================*/
+
+void mexFunction( int nlhs, mxArray *plhs[],int nrhs, const mxArray *prhs[] )
+{
+ double C, TolRel, TolAbs, MaxTime, trn_err, QPBound;
+ double *ptr;
+ uint32_t i, j, BufSize;
+ uint16_t Method;
+ int verb;
+ ocas_return_value_T ocas;
+
+ /* timing variables */
+ double init_time;
+ double total_time;
+
+ total_time = get_time();
+ init_time = total_time;
+
+ if(nrhs < 1)
+ mexErrMsgTxt("Improper number of input arguments.");
+
+ /* get input arguments */
+ if(mxIsChar(prhs[0]) == false)
+ {
+
+ if(nrhs < 3 || nrhs > 11)
+ mexErrMsgTxt("Improper number of input arguments.");
+
+ /* [W,stat] = msvmocas(X,y,C,Method,TolRel,TolAbs,QPBound,BufSize,nData,MaxTime)*/
+
+ data_X = (mxArray*)prhs[0];
+ if (!(mxIsDouble(data_X)))
+ mexErrMsgTxt("Input argument X must be of type double.");
+
+ if (mxGetNumberOfDimensions(data_X) != 2)
+ mexErrMsgTxt("Input argument X must be two dimensional.");
+
+ data_y = (double*)mxGetPr(prhs[1]);
+
+ if(LIBOCAS_MAX(mxGetM(prhs[1]),mxGetN(prhs[1])) != mxGetN(prhs[0]))
+ mexErrMsgTxt("Length of vector y must equal to the number of columns of matrix X.");
+
+ C = (double)mxGetScalar(prhs[2]);
+
+ if(nrhs >= 4)
+ Method = (uint32_t)mxGetScalar(prhs[3]);
+ else
+ Method = DEFAULT_METHOD;
+
+ if(nrhs >= 5)
+ TolRel = (double)mxGetScalar(prhs[4]);
+ else
+ TolRel = DEFAULT_TOLREL;
+
+ if(nrhs >= 6)
+ TolAbs = (double)mxGetScalar(prhs[5]);
+ else
+ TolAbs = DEFAULT_TOLABS;
+
+ if(nrhs >= 7)
+ QPBound = (double)mxGetScalar(prhs[6]);
+ else
+ QPBound = DEFAULT_QPVALUE;
+
+ if(nrhs >= 8)
+ BufSize = (uint32_t)mxGetScalar(prhs[7]);
+ else
+ BufSize = DEFAULT_BUFSIZE;
+
+ if(nrhs >= 9 && mxIsInf(mxGetScalar(prhs[8])) == false)
+ nData = (uint32_t)mxGetScalar(prhs[8]);
+ else
+ nData = mxGetN(data_X);
+
+ if(nData < 1 || nData > mxGetN(prhs[0]))
+ mexErrMsgTxt("Improper value of argument nData.");
+
+ if(nrhs >= 10)
+ MaxTime = (double)mxGetScalar(prhs[9]);
+ else
+ MaxTime = DEFAULT_MAXTIME;
+
+ if(nrhs >= 11)
+ verb = (int)mxGetScalar(prhs[10]);
+ else
+ verb = DEFAULT_VERB;
+
+
+ }
+ else
+ {
+ /* [W,stat] = msvmocas(svmlight_data_file,C,Method,TolRel,TolAbs,QPBound,BufSize,nData,MaxTime)*/
+ char *fname;
+ int fname_len;
+
+ if(nrhs < 2 || nrhs > 10)
+ mexErrMsgTxt("Improper number of input arguments.");
+
+ if(!mxIsChar(prhs[0]))
+ mexErrMsgTxt("First input argument must be of type string.");
+
+ fname_len = mxGetNumberOfElements(prhs[0]) + 1;
+ fname = mxCalloc(fname_len, sizeof(char));
+
+ if (mxGetString(prhs[0], fname, fname_len) != 0)
+ mexErrMsgTxt("Could not convert first input argument to string.");
+
+ if(nrhs >= 10)
+ verb = (int)mxGetScalar(prhs[9]);
+ else
+ verb = DEFAULT_VERB;
+
+ /* load data */
+ if( load_svmlight_file(fname,verb) == -1 || data_X == NULL || data_y == NULL)
+ mexErrMsgTxt("Cannot load input file.");
+
+ C = (double)mxGetScalar(prhs[1]);
+
+ if(nrhs >= 3)
+ Method = (uint32_t)mxGetScalar(prhs[2]);
+ else
+ Method = DEFAULT_METHOD;
+
+ if(nrhs >= 4)
+ TolRel = (double)mxGetScalar(prhs[3]);
+ else
+ TolRel = DEFAULT_TOLREL;
+
+ if(nrhs >= 5)
+ TolAbs = (double)mxGetScalar(prhs[4]);
+ else
+ TolAbs = DEFAULT_TOLABS;
+
+ if(nrhs >= 6)
+ QPBound = (double)mxGetScalar(prhs[5]);
+ else
+ QPBound = DEFAULT_QPVALUE;
+
+ if(nrhs >= 7)
+ BufSize = (uint32_t)mxGetScalar(prhs[6]);
+ else
+ BufSize = DEFAULT_BUFSIZE;
+
+ if(nrhs >= 8 && mxIsInf(mxGetScalar(prhs[7])) == false)
+ nData = (uint32_t)mxGetScalar(prhs[7]);
+ else
+ nData = mxGetN(data_X);
+
+ if(nData < 1 || nData > mxGetN(data_X))
+ mexErrMsgTxt("Improper value of argument nData.");
+
+ if(nrhs >= 9)
+ MaxTime = (double)mxGetScalar(prhs[8]);
+ else
+ MaxTime = DEFAULT_MAXTIME;
+
+
+ }
+
+/* nDim = mxGetM(prhs[0]);*/
+ nDim = mxGetM(data_X);
+ for(i=0, nY = 0; i < nData; i++)
+ nY = LIBOCAS_MAX(nY, (uint32_t)data_y[i]);
+
+
+ /*----------------------------------------------------------------
+ Print setting
+ -------------------------------------------------------------------*/
+ if(verb)
+ {
+ mexPrintf("Input data statistics:\n"
+ " # of examples : %d\n"
+ " # of classes : %d\n"
+ " dimensionality : %d\n",
+ nData, nY, nDim);
+
+ if( mxIsSparse(data_X)== true )
+ mexPrintf(" density : %.2f%%\n",
+ 100.0*(double)mxGetNzmax(data_X)/((double)nDim*(double)(mxGetN(data_X))));
+ else
+ mexPrintf(" density : 100%% (full)\n");
+
+ mexPrintf("Setting:\n"
+ " C : %f\n"
+ " # of examples : %d\n"
+ " solver : %d\n"
+ " cache size : %d\n"
+ " TolAbs : %f\n"
+ " TolRel : %f\n"
+ " QPValue : %f\n"
+ " MaxTime : %f [s]\n",
+ C, nData, Method,BufSize,TolAbs,TolRel, QPBound, MaxTime);
+ }
+
+ /* learned weight vector */
+ plhs[0] = (mxArray*)mxCreateDoubleMatrix(nDim,nY,mxREAL);
+ W = (double*)mxGetPr(plhs[0]);
+ if(W == NULL) mexErrMsgTxt("Not enough memory for vector W.");
+
+ oldW = (double*)mxCalloc(nY*nDim,sizeof(double));
+ if(oldW == NULL) mexErrMsgTxt("Not enough memory for vector oldW.");
+
+ /* allocate buffer for computing cutting plane */
+ new_a = (double*)mxCalloc(nY*nDim,sizeof(double));
+ if(new_a == NULL)
+ mexErrMsgTxt("Not enough memory for auxciliary cutting plane buffer new_a.");
+
+
+ if( mxIsSparse(data_X)== true )
+ {
+ /* init cutting plane buffer */
+ sparse_A.nz_dims = mxCalloc(BufSize,sizeof(uint32_t));
+ sparse_A.index = mxCalloc(BufSize,sizeof(sparse_A.index[0]));
+ sparse_A.value = mxCalloc(BufSize,sizeof(sparse_A.value[0]));
+ if(sparse_A.nz_dims == NULL || sparse_A.index == NULL || sparse_A.value == NULL)
+ mexErrMsgTxt("Not enough memory for cutting plane buffer sparse_A.");
+
+ if(verb)
+ mexPrintf("Starting optimization:\n");
+
+ init_time=get_time()-init_time;
+
+ if(verb)
+ ocas = msvm_ocas_solver( C, data_y, nY, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &msvm_sparse_compute_W, &msvm_full_update_W, &msvm_sparse_add_new_cut,
+ &msvm_sparse_compute_output, &qsort_data, &ocas_print, 0);
+ else
+ ocas = msvm_ocas_solver( C, data_y, nY, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &msvm_sparse_compute_W, &msvm_full_update_W, &msvm_sparse_add_new_cut,
+ &msvm_sparse_compute_output, &qsort_data, &ocas_print_null, 0);
+ }
+ else
+ {
+ /* init cutting plane buffer */
+ full_A = mxCalloc(BufSize*nDim*nY,sizeof(double));
+ if( full_A == NULL )
+ mexErrMsgTxt("Not enough memory for cutting plane buffer full_A.");
+
+ if(verb)
+ mexPrintf("Starting optimization:\n");
+
+ init_time=get_time()-init_time;
+
+ if(verb)
+ ocas = msvm_ocas_solver( C, data_y, nY, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &msvm_full_compute_W, &msvm_full_update_W, &msvm_full_add_new_cut,
+ &msvm_full_compute_output, &qsort_data, &ocas_print, 0);
+ else
+ ocas = msvm_ocas_solver( C, data_y, nY, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &msvm_full_compute_W, &msvm_full_update_W, &msvm_full_add_new_cut,
+ &msvm_full_compute_output, &qsort_data, &ocas_print_null, 0);
+
+ }
+
+ if(verb)
+ {
+ mexPrintf("Stopping condition: ");
+ switch( ocas.exitflag )
+ {
+ case 1: mexPrintf("1-Q_D/Q_P <= TolRel(=%f) satisfied.\n", TolRel); break;
+ case 2: mexPrintf("Q_P-Q_D <= TolAbs(=%f) satisfied.\n", TolAbs); break;
+ case 3: mexPrintf("Q_P <= QPBound(=%f) satisfied.\n", QPBound); break;
+ case 4: mexPrintf("Optimization time (=%f) >= MaxTime(=%f).\n", ocas.ocas_time, MaxTime); break;
+ case -1: mexPrintf("Has not converged!\n" ); break;
+ case -2: mexPrintf("Not enough memory for the solver.\n" ); break;
+ }
+ }
+
+ total_time=get_time()-total_time;
+ if(verb)
+ {
+ mexPrintf("Timing statistics:\n"
+ " init_time : %f[s]\n"
+ " qp_solver_time : %f[s]\n"
+ " sort_time : %f[s]\n"
+ " output_time : %f[s]\n"
+ " add_time : %f[s]\n"
+ " w_time : %f[s]\n"
+ " print_time : %f[s]\n"
+ " ocas_time : %f[s]\n"
+ " total_time : %f[s]\n",
+ init_time, ocas.qp_solver_time, ocas.sort_time, ocas.output_time,
+ ocas.add_time, ocas.w_time, ocas.print_time, ocas.ocas_time, total_time);
+
+ mexPrintf("Training error: %.4f%%\n", 100*(double)ocas.trn_err/(double)nData);
+ }
+
+
+ /* return ocas optimizer statistics */
+ /* typedef struct {
+ uint32_t nIter;
+ uint32_t nCutPlanes;
+ double trn_err;
+ double Q_P;
+ double Q_D;
+ double output_time;
+ double sort_time;
+ double solver_time;
+ int8_t exitflag;
+ } ocas_return_value_T; */
+
+ const char *field_names[] = {"nTrnErrors","Q_P","Q_D","nIter","nCutPlanes","exitflag",
+ "init_time","output_time","sort_time","qp_solver_time","add_time",
+ "w_time","ocas_time","total_time"};
+ mwSize dims[2] = {1,1};
+
+ plhs[1] = mxCreateStructArray(2, dims, (sizeof(field_names)/sizeof(*field_names)), field_names);
+
+ mxSetField(plhs[1],0,"nIter",mxCreateDoubleScalar((double)ocas.nIter));
+ mxSetField(plhs[1],0,"nCutPlanes",mxCreateDoubleScalar((double)ocas.nCutPlanes));
+ mxSetField(plhs[1],0,"nTrnErrors",mxCreateDoubleScalar(ocas.trn_err));
+ mxSetField(plhs[1],0,"Q_P",mxCreateDoubleScalar(ocas.Q_P));
+ mxSetField(plhs[1],0,"Q_D",mxCreateDoubleScalar(ocas.Q_D));
+ mxSetField(plhs[1],0,"init_time",mxCreateDoubleScalar(init_time));
+ mxSetField(plhs[1],0,"output_time",mxCreateDoubleScalar(ocas.output_time));
+ mxSetField(plhs[1],0,"sort_time",mxCreateDoubleScalar(ocas.sort_time));
+ mxSetField(plhs[1],0,"qp_solver_time",mxCreateDoubleScalar(ocas.qp_solver_time));
+ mxSetField(plhs[1],0,"add_time",mxCreateDoubleScalar(ocas.add_time));
+ mxSetField(plhs[1],0,"w_time",mxCreateDoubleScalar(ocas.w_time));
+ mxSetField(plhs[1],0,"ocas_time",mxCreateDoubleScalar(ocas.ocas_time));
+ mxSetField(plhs[1],0,"total_time",mxCreateDoubleScalar(total_time));
+ mxSetField(plhs[1],0,"exitflag",mxCreateDoubleScalar((double)ocas.exitflag));
+
+ return;
+}
+
diff --git a/msvmocas_test.m b/msvmocas_test.m
new file mode 100644
index 0000000..55d8e5c
--- /dev/null
+++ b/msvmocas_test.m
@@ -0,0 +1,49 @@
+trn_file = 'example4_train.light';
+tst_file = 'example4_test.light';
+
+C = 1;
+TolRel = 0.01;
+TolAbs = 0.00;
+QPBound = 0;
+BufSize = 2000;
+nData = inf;
+MaxTime = inf;
+verb = 0;
+
+Method = 0; % Cutting Plane Algorithm
+fprintf('Training SVM by Cutting Plane Algorithm...');
+[cp_W,cp_stat] = msvmocas(trn_file,C,Method,TolRel,TolAbs,QPBound,BufSize,nData,MaxTime,verb);
+fprintf('done\n');
+
+fprintf('Evaluating classifier on testing data...');
+[score,true_labels] = svmlight_linclass(tst_file,cp_W,[]);
+[dummy,pred_labels] = max(score);
+cp_tst_err = sum(pred_labels(:) ~= true_labels(:))/length(true_labels);
+fprintf('done\n');
+
+
+fprintf('Training time: %f[s], #trn_errors: %d, nIter: %d\n',...
+ cp_stat.total_time, cp_stat.nTrnErrors, cp_stat.nIter);
+fprintf('Objval primal: %f, dual: %f, gap: %f\n', ...
+ cp_stat.Q_P, cp_stat.Q_D,cp_stat.Q_P-cp_stat.Q_D);
+fprintf('Testing error: %f %%\n',cp_tst_err*100);
+
+
+Method = 1; % OCAS
+fprintf('\nTraining SVM by OCAS...');
+[ocas_W,ocas_stat] = msvmocas(trn_file,C,Method,TolRel,TolAbs,QPBound,BufSize,nData,MaxTime,verb);
+fprintf('done\n');
+
+fprintf('Evaluating classifier on testing data...');
+[score,true_labels] = svmlight_linclass(tst_file,ocas_W,[]);
+[dummy,pred_labels] = max(score);
+ocas_tst_err = sum(pred_labels(:) ~= true_labels(:))/length(true_labels);
+fprintf('done\n');
+
+
+fprintf('Training time: %f[s], #trn_errors: %d, nIter: %d\n',...
+ ocas_stat.total_time, ocas_stat.nTrnErrors, ocas_stat.nIter);
+fprintf('Objval primal: %f, dual: %f, gap: %f\n', ...
+ ocas_stat.Q_P, ocas_stat.Q_D,ocas_stat.Q_P-ocas_stat.Q_D);
+fprintf('Testing error: %f %%\n',ocas_tst_err*100);
+
diff --git a/ocas_helper.c b/ocas_helper.c
new file mode 100644
index 0000000..7372086
--- /dev/null
+++ b/ocas_helper.c
@@ -0,0 +1,1778 @@
+/*-----------------------------------------------------------------------
+ * ocas_helper.c: Implementation of helper functions for the OCAS solver.
+ *
+ * It supports both sparse and dense matrices and loading data from
+ * the SVM^light format.
+ *-------------------------------------------------------------------- */
+
+#define _FILE_OFFSET_BITS 64
+
+#include <pthread.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/time.h>
+#include <stdlib.h>
+#include <time.h>
+
+#include "lib_svmlight_format.h"
+#include "libocas.h"
+#include "ocas_helper.h"
+
+mxArray *data_X;
+uint32_t nDim, nData, nY;
+double *data_y;
+cutting_plane_buf_T sparse_A;
+double *full_A;
+double *W;
+double *oldW;
+double *new_a;
+
+double *A0;
+double W0;
+double oldW0;
+double X0;
+
+/* parallelization via threads */
+struct thread_params_output
+{
+ double* output;
+ uint32_t start;
+ uint32_t end;
+};
+
+struct thread_qsort
+{
+ double* output;
+/* uint32_t* index;*/
+ double* data;
+ uint32_t size;
+};
+
+struct thread_params_add
+{
+ double *new_a;
+ uint32_t *new_cut;
+ uint32_t start;
+ uint32_t end;
+};
+
+
+typedef enum
+{
+ FALSE = 0,
+ TRUE = 1
+}
+boolean;
+
+
+static int qsort_threads;
+static pthread_t* threads = NULL;
+static uint32_t* thread_slices = NULL;
+static int num_threads;
+static const int sort_limit=4096;
+static struct thread_params_output* params_output;
+static struct thread_params_add* params_add;
+
+/* use multi-threads only if minimal number of examples to add is higher than the constant*/
+static const uint32_t MinimalParallelCutLenght = 100;
+
+/***********************************************************************
+ Multiclass SVM helper functions.
+ **********************************************************************/
+
+/*----------------------------------------------------------------------
+ sq_norm_W = sparse_compute_W( alpha, nSel ) does the following:
+
+ oldW = W;
+ W = sparse_A(:,1:nSel)'*alpha;
+ sq_norm_W = W'*W;
+ dp_WoldW = W'*oldW';
+
+ ----------------------------------------------------------------------*/
+void msvm_sparse_compute_W( double *sq_norm_W,
+ double *dp_WoldW,
+ double *alpha,
+ uint32_t nSel,
+ void* user_data )
+{
+ uint32_t i,j, nz_dims;
+
+ memcpy(oldW, W, sizeof(double)*nY*nDim );
+ memset(W, 0, sizeof(double)*nY*nDim );
+
+ for(i=0; i < nSel; i++) {
+ nz_dims = sparse_A.nz_dims[i];
+ if(nz_dims > 0 && alpha[i] > 0) {
+ for(j=0; j < nz_dims; j++) {
+ W[sparse_A.index[i][j]] += alpha[i]*sparse_A.value[i][j];
+ }
+ }
+ }
+
+ *sq_norm_W = 0;
+ *dp_WoldW = 0;
+ for(j=0; j < nY*nDim; j++)
+ {
+ *sq_norm_W += W[j]*W[j];
+ *dp_WoldW += W[j]*oldW[j];
+ }
+
+ return;
+}
+
+
+/*----------------------------------------------------------------------------------
+ sq_norm_W = sparse_update_W( t ) does the following:
+
+ W = oldW*(1-t) + t*W;
+ sq_norm_W = W'*W;
+
+ ---------------------------------------------------------------------------------*/
+double msvm_full_update_W( double t, void* user_data )
+{
+ uint32_t j;
+ double sq_norm_W;
+
+ sq_norm_W = 0;
+
+ for(j=0; j < nY*nDim; j++) {
+ W[j] = oldW[j]*(1-t) + t*W[j];
+ sq_norm_W += W[j]*W[j];
+ }
+
+ return( sq_norm_W );
+}
+
+
+/*----------------------------------------------------------------------------------
+ sparse_add_new_cut( new_col_H, new_cut, cut_length, nSel ) does the following:
+
+ new_a = zeros(nDim,nY);
+ for i=1:nData
+ if new_cut(i) ~= data_y(i)
+ new_a(:,data_y(i)) = new_a(:,data_y(i)) + X(;,i);
+ new_a(:,new_cut(i)) = new_a(:,new_cut(i)) - X(;,i);
+ end
+ end
+
+ new_col_H = [sparse_A(:,1:nSel)'*new_a ; new_a'*new_a];
+ sparse_A(:,nSel+1) = new_a;
+
+ Warning: data_y is 1-based while new_cut is 0-based
+
+ ---------------------------------------------------------------------------------*/
+int msvm_sparse_add_new_cut( double *new_col_H,
+ uint32_t *new_cut,
+ uint32_t nSel,
+ void* user_data )
+{
+/* double *new_a, */
+ double sq_norm_a;
+ uint32_t i, j, nz_dims, ptr, y;
+
+ memset(new_a, 0, sizeof(double)*nY*nDim);
+
+ for(i=0; i < nData; i++)
+ {
+ y = (uint32_t)(data_y[i]-1);
+ if(new_cut[i] != y)
+ {
+ add_sparse_col(&new_a[nDim*y], data_X, i);
+ subtract_sparse_col(&new_a[nDim*(uint32_t)new_cut[i]], data_X, i);
+ }
+ }
+
+ /* compute new_a'*new_a and count number of non-zero dimensions */
+ nz_dims = 0;
+ sq_norm_a = 0;
+ for(j=0; j < nY*nDim; j++ ) {
+ if(new_a[j] != 0) {
+ nz_dims++;
+ sq_norm_a += new_a[j]*new_a[j];
+ }
+ }
+
+ /* sparsify new_a and insert it to the last column of sparse_A */
+ sparse_A.nz_dims[nSel] = nz_dims;
+ if(nz_dims > 0) {
+ sparse_A.index[nSel] = NULL;
+ sparse_A.value[nSel] = NULL;
+ sparse_A.index[nSel] = mxCalloc(nz_dims,sizeof(uint32_t));
+ sparse_A.value[nSel] = mxCalloc(nz_dims,sizeof(double));
+ if(sparse_A.index[nSel]==NULL || sparse_A.value[nSel]==NULL)
+ {
+/* mexErrMsgTxt("Not enough memory for vector sparse_A.index[nSel], sparse_A.value[nSel].");*/
+ mxFree(sparse_A.index[nSel]);
+ mxFree(sparse_A.value[nSel]);
+ return(-1);
+ }
+
+ ptr = 0;
+ for(j=0; j < nY*nDim; j++ ) {
+ if(new_a[j] != 0) {
+ sparse_A.index[nSel][ptr] = j;
+ sparse_A.value[nSel][ptr++] = new_a[j];
+ }
+ }
+ }
+
+ new_col_H[nSel] = sq_norm_a;
+ for(i=0; i < nSel; i++) {
+ double tmp = 0;
+
+ for(j=0; j < sparse_A.nz_dims[i]; j++) {
+ tmp += new_a[sparse_A.index[i][j]]*sparse_A.value[i][j];
+ }
+
+ new_col_H[i] = tmp;
+ }
+
+ return 0;
+}
+
+
+/*----------------------------------------------------------------------
+ sparse_compute_output( output ) does the follwing:
+
+ output = W'*data_X;
+ ----------------------------------------------------------------------*/
+int msvm_sparse_compute_output( double *output, void* user_data )
+{
+ uint32_t i,y;
+
+ for(i=0; i < nData; i++)
+ {
+ for(y=0; y < nY; y++)
+ {
+ output[LIBOCAS_INDEX(y,i,nY)] = dp_sparse_col(&W[y*nDim], data_X, i);
+ }
+ }
+
+ return 0;
+}
+
+
+/*-----------------------------------------------------------
+ Functions working with full data.
+ -------------------------------------------------------------*/
+
+/*----------------------------------------------------------------------------------
+ full_add_new_cut( new_col_H, new_cut, cut_length, nSel ) does the following:
+
+ new_a = sum(data_X(:,find(new_cut ~=0 )),2);
+ new_col_H = [full_A(:,1:nSel)'*new_a ; new_a'*new_a];
+ full_A(:,nSel+1) = new_a;
+
+ ---------------------------------------------------------------------------------*/
+int msvm_full_add_new_cut( double *new_col_H, uint32_t *new_cut, uint32_t nSel, void* user_data)
+{
+ double sq_norm_a, *ptr;
+ uint32_t i, j, y, y2;
+
+ ptr = mxGetPr(data_X);
+
+ memset(new_a, 0, sizeof(double)*nDim*nY);
+
+ for(i=0; i < nData; i++)
+ {
+ y = (uint32_t)(data_y[i]-1);
+ y2 = (uint32_t)new_cut[i];
+ if(y2 != y)
+ {
+ for(j=0; j < nDim; j++ )
+ {
+ new_a[LIBOCAS_INDEX(j,y,nDim)] += ptr[LIBOCAS_INDEX(j,i,nDim)];
+ new_a[LIBOCAS_INDEX(j,y2,nDim)] -= ptr[LIBOCAS_INDEX(j,i,nDim)];
+ }
+ }
+ }
+
+ /* compute new_a'*new_a and insert new_a to the last column of full_A */
+ sq_norm_a = 0;
+ for(j=0; j < nDim*nY; j++ ) {
+ sq_norm_a += new_a[j]*new_a[j];
+ full_A[LIBOCAS_INDEX(j,nSel,nDim*nY)] = new_a[j];
+ }
+
+ new_col_H[nSel] = sq_norm_a;
+ for(i=0; i < nSel; i++) {
+ double tmp = 0;
+
+ for(j=0; j < nDim*nY; j++ ) {
+ tmp += new_a[j]*full_A[LIBOCAS_INDEX(j,i,nDim*nY)];
+ }
+ new_col_H[i] = tmp;
+ }
+
+ return 0;
+}
+
+
+/*----------------------------------------------------------------------
+ full_compute_output( output ) does the follwing:
+
+ output = data_X'*W;
+ ----------------------------------------------------------------------*/
+int msvm_full_compute_output( double *output, void* user_data )
+{
+ uint32_t i, j, y;
+ double *ptr, tmp;
+
+ ptr = mxGetPr( data_X );
+
+ for(i=0; i < nData; i++)
+ {
+ for(y=0; y < nY; y++)
+ {
+ tmp = 0;
+
+ for(j=0; j < nDim; j++ )
+ {
+ tmp += W[LIBOCAS_INDEX(j,y,nDim)]*ptr[LIBOCAS_INDEX(j,i,nDim)];
+ }
+
+ output[LIBOCAS_INDEX(y,i,nY)] = tmp;
+ }
+ }
+
+ return 0;
+}
+
+
+
+/*----------------------------------------------------------------------
+ sq_norm_W = full_compute_W( alpha, nSel ) does the following:
+
+ oldW = W;
+ W = full_A(:,1:nSel)'*alpha;
+ sq_norm_W = W'*W;
+ dp_WoldW = W'*oldW';
+
+ ----------------------------------------------------------------------*/
+void msvm_full_compute_W( double *sq_norm_W, double *dp_WoldW, double *alpha, uint32_t nSel, void* user_data )
+{
+ uint32_t i,j;
+
+ memcpy(oldW, W, sizeof(double)*nDim*nY );
+ memset(W, 0, sizeof(double)*nDim*nY);
+
+ for(i=0; i < nSel; i++) {
+ if( alpha[i] > 0 ) {
+ for(j=0; j< nDim*nY; j++ ) {
+ W[j] += alpha[i]*full_A[LIBOCAS_INDEX(j,i,nDim*nY)];
+ }
+
+ }
+ }
+
+ *sq_norm_W = 0;
+ *dp_WoldW = 0;
+ for(j=0; j < nDim*nY; j++) {
+ *sq_norm_W += W[j]*W[j];
+ *dp_WoldW += W[j]*oldW[j];
+ }
+
+ return;
+}
+
+
+
+/***********************************************************************
+ Generic functions.
+ **********************************************************************/
+
+
+/*-----------------------------------------------------------------------
+ Print statistics.
+ -----------------------------------------------------------------------*/
+void ocas_print(ocas_return_value_T value)
+{
+ mexPrintf("%4d: tim=%f, Q_P=%f, Q_D=%f, Q_P-Q_D=%f, 1-Q_D/Q_P=%f, nza=%4d, err=%.2f%%, qpf=%d\n",
+ value.nIter,value.ocas_time, value.Q_P,value.Q_D,value.Q_P-value.Q_D,(value.Q_P-value.Q_D)/LIBOCAS_ABS(value.Q_P),
+ value.nNZAlpha, 100*(double)value.trn_err/(double)nData, value.qp_exitflag );
+}
+
+void ocas_print_null(ocas_return_value_T value)
+{
+ return;
+}
+
+
+/*-----------------------------------------------------------------------
+ Get absolute time in seconds.
+ -----------------------------------------------------------------------*/
+double get_time()
+{
+ struct timeval tv;
+ if (gettimeofday(&tv, NULL)==0)
+ return tv.tv_sec+((double)(tv.tv_usec))/1e6;
+ else
+ return 0.0;
+}
+
+
+/*=========================================================================
+ *
+ * Ocas helper functions implemented for input data represented as
+ * Matlab sparse matrix.
+ *
+ *=========================================================================*/
+
+/*----------------------------------------------------------------------
+ in-place computes sparse_mat(:,col)= alpha * sparse_mat(:,col)
+ where alpha is a scalar and sparse_mat is Matlab sparse matrix.
+ ----------------------------------------------------------------------*/
+void mul_sparse_col(double alpha, mxArray *sparse_mat, uint32_t col)
+{
+ uint32_t nItems, ptr, i;
+ INDEX_TYPE_T *Ir, *Jc;
+ double *Pr;
+
+ Ir = mxGetIr(sparse_mat);
+ Jc = mxGetJc(sparse_mat);
+ Pr = mxGetPr(sparse_mat);
+
+ nItems = Jc[col+1] - Jc[col];
+ ptr = Jc[col];
+
+ for(i=0; i < nItems; i++)
+ Pr[ptr++]*=alpha;
+}
+
+
+/*----------------------------------------------------------------------
+ It computes full_vec = full_vec + sparse_mat(:,col)
+ where full_vec is a double array and sparse_mat is Matlab
+ sparse matrix.
+ ----------------------------------------------------------------------*/
+void add_sparse_col(double *full_vec, mxArray *sparse_mat, uint32_t col)
+{
+ uint32_t nItems, ptr, i, row;
+ INDEX_TYPE_T *Ir, *Jc;
+ double *Pr, val;
+
+ Ir = mxGetIr(sparse_mat);
+ Jc = mxGetJc(sparse_mat);
+ Pr = mxGetPr(sparse_mat);
+
+ nItems = Jc[col+1] - Jc[col];
+ ptr = Jc[col];
+
+ for(i=0; i < nItems; i++) {
+ val = Pr[ptr];
+ row = Ir[ptr++];
+
+ full_vec[row] += val;
+ }
+}
+
+/*----------------------------------------------------------------------
+ It computes full_vec = full_vec - sparse_mat(:,col)
+ where full_vec is a double array and sparse_mat is Matlab
+ sparse matrix.
+ ----------------------------------------------------------------------*/
+void subtract_sparse_col(double *full_vec, mxArray *sparse_mat, uint32_t col)
+{
+ uint32_t nItems, ptr, i, row;
+ INDEX_TYPE_T *Ir, *Jc;
+ double *Pr, val;
+
+ Ir = mxGetIr(sparse_mat);
+ Jc = mxGetJc(sparse_mat);
+ Pr = mxGetPr(sparse_mat);
+
+ nItems = Jc[col+1] - Jc[col];
+ ptr = Jc[col];
+
+ for(i=0; i < nItems; i++) {
+ val = Pr[ptr];
+ row = Ir[ptr++];
+
+ full_vec[row] -= val;
+ }
+}
+
+/*----------------------------------------------------------------------
+ It computes dp = full_vec'*sparse_mat(:,col)
+ where full_vec is a double array and sparse_mat is Matlab
+ sparse matrix.
+ ----------------------------------------------------------------------*/
+double dp_sparse_col(double *full_vec, mxArray *sparse_mat, uint32_t col)
+{
+ uint32_t nItems, ptr, i, row;
+ INDEX_TYPE_T *Ir, *Jc;
+ double *Pr, val, dp;
+
+ Ir = mxGetIr(sparse_mat);
+ Jc = mxGetJc(sparse_mat);
+ Pr = mxGetPr(sparse_mat);
+
+ dp = 0;
+ nItems = Jc[col+1] - Jc[col];
+ ptr = Jc[col];
+
+ for(i=0; i < nItems; i++) {
+ val = Pr[ptr];
+ row = Ir[ptr++];
+
+ dp += full_vec[row]*val;
+ }
+
+ return(dp);
+}
+
+
+/*----------------------------------------------------------------------------------
+ sq_norm_W = sparse_update_W( t ) does the following:
+
+ W = oldW*(1-t) + t*W;
+ sq_norm_W = W'*W;
+
+ ---------------------------------------------------------------------------------*/
+double sparse_update_W( double t, void* user_data )
+{
+ uint32_t j;
+ double sq_norm_W;
+
+ W0 = oldW0*(1-t) + t*W0;
+ sq_norm_W = W0*W0;
+
+ for(j=0; j <nDim; j++) {
+ W[j] = oldW[j]*(1-t) + t*W[j];
+ sq_norm_W += W[j]*W[j];
+ }
+
+ return( sq_norm_W );
+}
+
+/*-------------------------------------------------------------------------
+ sq_norm_W = full_update_W( t ) does the following:
+
+ W = oldW*(1-t) + t*W;
+ sq_norm_W = W'*W;
+---------------------------------------------------------------------------*/
+double full_update_W( double t, void* user_data )
+{
+ uint32_t j;
+ double sq_norm_W;
+
+ W0 = oldW0*(1-t) + t*W0;
+ sq_norm_W = W0*W0;
+
+ for(j=0; j <nDim; j++) {
+ W[j] = oldW[j]*(1-t) + t*W[j];
+ sq_norm_W += W[j]*W[j];
+ }
+
+ return( sq_norm_W );
+}
+
+
+/*----------------------------------------------------------------------------------
+ sparse_add_new_cut( new_col_H, new_cut, cut_length, nSel ) does the following:
+
+ new_a = sum(data_X(:,find(new_cut ~=0 )),2);
+ new_col_H = [sparse_A(:,1:nSel)'*new_a ; new_a'*new_a];
+ sparse_A(:,nSel+1) = new_a;
+
+ ---------------------------------------------------------------------------------*/
+int sparse_add_new_cut( double *new_col_H,
+ uint32_t *new_cut,
+ uint32_t cut_length,
+ uint32_t nSel,
+ void* user_data )
+{
+/* double *new_a, */
+ double sq_norm_a;
+ uint32_t i, j, nz_dims, ptr;
+
+ memset(new_a, 0, sizeof(double)*nDim);
+
+ for(i=0; i < cut_length; i++) {
+ add_sparse_col(new_a, data_X, new_cut[i]);
+
+ A0[nSel] += X0*data_y[new_cut[i]];
+ }
+
+ /* compute new_a'*new_a and count number of non-zero dimensions */
+ nz_dims = 0;
+ sq_norm_a = A0[nSel]*A0[nSel];
+ for(j=0; j < nDim; j++ ) {
+ if(new_a[j] != 0) {
+ nz_dims++;
+ sq_norm_a += new_a[j]*new_a[j];
+ }
+ }
+
+ /* sparsify new_a and insert it to the last column of sparse_A */
+ sparse_A.nz_dims[nSel] = nz_dims;
+ if(nz_dims > 0) {
+ sparse_A.index[nSel] = NULL;
+ sparse_A.value[nSel] = NULL;
+ sparse_A.index[nSel] = mxCalloc(nz_dims,sizeof(uint32_t));
+ sparse_A.value[nSel] = mxCalloc(nz_dims,sizeof(double));
+ if(sparse_A.index[nSel]==NULL || sparse_A.value[nSel]==NULL)
+ {
+/* mexErrMsgTxt("Not enough memory for vector sparse_A.index[nSel], sparse_A.value[nSel].");*/
+ mxFree(sparse_A.index[nSel]);
+ mxFree(sparse_A.value[nSel]);
+ return(-1);
+ }
+
+ ptr = 0;
+ for(j=0; j < nDim; j++ ) {
+ if(new_a[j] != 0) {
+ sparse_A.index[nSel][ptr] = j;
+ sparse_A.value[nSel][ptr++] = new_a[j];
+ }
+ }
+ }
+
+ new_col_H[nSel] = sq_norm_a;
+ for(i=0; i < nSel; i++) {
+ double tmp = A0[nSel]*A0[i];
+
+ for(j=0; j < sparse_A.nz_dims[i]; j++) {
+ tmp += new_a[sparse_A.index[i][j]]*sparse_A.value[i][j];
+ }
+
+ new_col_H[i] = tmp;
+ }
+
+/* mxFree( new_a );*/
+
+ return 0;
+}
+
+
+/*----------------------------------------------------------------------------------
+ full_add_new_cut( new_col_H, new_cut, cut_length, nSel ) does the following:
+
+ new_a = sum(data_X(:,find(new_cut ~=0 )),2);
+ new_col_H = [full_A(:,1:nSel)'*new_a ; new_a'*new_a];
+ full_A(:,nSel+1) = new_a;
+
+ ---------------------------------------------------------------------------------*/
+int full_add_new_cut( double *new_col_H,
+ uint32_t *new_cut,
+ uint32_t cut_length,
+ uint32_t nSel,
+ void* user_data)
+{
+/* double *new_a, */
+ double sq_norm_a, *ptr;
+ uint32_t i, j;
+
+ ptr = mxGetPr(data_X);
+
+ memset(new_a, 0, sizeof(double)*nDim);
+
+
+ for(i=0; i < cut_length; i++) {
+ for(j=0; j < nDim; j++ ) {
+ new_a[j] += ptr[LIBOCAS_INDEX(j,new_cut[i],nDim)];
+ }
+
+ A0[nSel] += X0*data_y[new_cut[i]];
+ }
+
+ /* compute new_a'*new_a and insert new_a to the last column of full_A */
+ sq_norm_a = A0[nSel]*A0[nSel];
+ for(j=0; j < nDim; j++ ) {
+ sq_norm_a += new_a[j]*new_a[j];
+ full_A[LIBOCAS_INDEX(j,nSel,nDim)] = new_a[j];
+ }
+
+ new_col_H[nSel] = sq_norm_a;
+ for(i=0; i < nSel; i++) {
+ double tmp = A0[nSel]*A0[i];
+
+ for(j=0; j < nDim; j++ ) {
+ tmp += new_a[j]*full_A[LIBOCAS_INDEX(j,i,nDim)];
+ }
+ new_col_H[i] = tmp;
+ }
+
+/* mxFree( new_a );*/
+
+ return 0;
+}
+
+
+/*----------------------------------------------------------------------
+ sparse_compute_output( output ) does the follwing:
+
+ output = data_X'*W;
+ ----------------------------------------------------------------------*/
+int sparse_compute_output( double *output, void* user_data )
+{
+ uint32_t i;
+
+ for(i=0; i < nData; i++) {
+ output[i] = data_y[i]*X0*W0 + dp_sparse_col(W, data_X, i);
+ }
+
+ return 0;
+}
+
+/*----------------------------------------------------------------------
+ full_compute_output( output ) does the follwing:
+
+ output = data_X'*W;
+ ----------------------------------------------------------------------*/
+int full_compute_output( double *output, void* user_data )
+{
+ uint32_t i, j;
+ double *ptr, tmp;
+
+ ptr = mxGetPr( data_X );
+
+ for(i=0; i < nData; i++) {
+ tmp = data_y[i]*X0*W0;
+
+ for(j=0; j < nDim; j++ ) {
+ tmp += W[j]*ptr[LIBOCAS_INDEX(j,i,nDim)];
+ }
+ output[i] = tmp;
+ }
+
+ return 0;
+}
+
+
+
+/*----------------------------------------------------------------------
+ sq_norm_W = sparse_compute_W( alpha, nSel ) does the following:
+
+ oldW = W;
+ W = sparse_A(:,1:nSel)'*alpha;
+ sq_norm_W = W'*W;
+ dp_WoldW = W'*oldW';
+
+ ----------------------------------------------------------------------*/
+void sparse_compute_W( double *sq_norm_W,
+ double *dp_WoldW,
+ double *alpha,
+ uint32_t nSel,
+ void* user_data )
+{
+ uint32_t i,j, nz_dims;
+
+ memcpy(oldW, W, sizeof(double)*nDim );
+ memset(W, 0, sizeof(double)*nDim);
+
+ oldW0 = W0;
+ W0 = 0;
+
+ for(i=0; i < nSel; i++) {
+ nz_dims = sparse_A.nz_dims[i];
+ if(nz_dims > 0 && alpha[i] > 0) {
+ for(j=0; j < nz_dims; j++) {
+ W[sparse_A.index[i][j]] += alpha[i]*sparse_A.value[i][j];
+ }
+ }
+ W0 += A0[i]*alpha[i];
+ }
+
+ *sq_norm_W = W0*W0;
+ *dp_WoldW = W0*oldW0;
+ for(j=0; j < nDim; j++) {
+ *sq_norm_W += W[j]*W[j];
+ *dp_WoldW += W[j]*oldW[j];
+ }
+
+ return;
+}
+
+
+/*----------------------------------------------------------------------
+ sq_norm_W = full_compute_W( alpha, nSel ) does the following:
+
+ oldW = W;
+ W = full_A(:,1:nSel)'*alpha;
+ sq_norm_W = W'*W;
+ dp_WoldW = W'*oldW';
+
+ ----------------------------------------------------------------------*/
+void full_compute_W( double *sq_norm_W, double *dp_WoldW, double *alpha, uint32_t nSel, void* user_data )
+{
+ uint32_t i,j;
+
+ memcpy(oldW, W, sizeof(double)*nDim );
+ memset(W, 0, sizeof(double)*nDim);
+
+ oldW0 = W0;
+ W0 = 0;
+
+ for(i=0; i < nSel; i++) {
+ if( alpha[i] > 0 ) {
+ for(j=0; j< nDim; j++ ) {
+ W[j] += alpha[i]*full_A[LIBOCAS_INDEX(j,i,nDim)];
+ }
+
+ W0 += A0[i]*alpha[i];
+ }
+ }
+
+ *sq_norm_W = W0*W0;
+ *dp_WoldW = W0*oldW0;
+ for(j=0; j < nDim; j++) {
+ *sq_norm_W += W[j]*W[j];
+ *dp_WoldW += W[j]*oldW[j];
+ }
+
+ return;
+}
+
+
+/* ==========================================================================
+ Multi-thread version of the OCAS helper functions.
+
+ int parallel_sparse_compute_output( double *output, void* user_data )
+
+ void destroy_parallel_ocas(void)
+ int init_parallel_ocas(int number_of_threads)
+
+============================================================================*/
+
+
+/*----------------------------------------------------------------------
+ parallel_sparse_compute_output( output, user_data ) does the following
+
+ output = data_X'*W + W0*X0*y[i];
+ ----------------------------------------------------------------------*/
+
+static void* parallel_compute_output_helper(void* p)
+{
+ struct thread_params_output* params = (struct thread_params_output*) p;
+ double* output=params->output;
+ uint32_t start=params->start;
+ uint32_t end=params->end;
+ uint32_t i;
+
+ for(i=start; i < end; i++)
+ output[i] = data_y[i]*X0*W0 + dp_sparse_col(W, data_X, i);
+
+ return(NULL);
+}
+
+int parallel_sparse_compute_output( double *output, void* user_data )
+{
+ /* one-thraed code looks like:
+
+ uint32_t i;
+
+ for(i=0; i < nData; i++) {
+ output[i] = data_y[i]*X0*W0 + dp_sparse_col(W, data_X, i);
+ }
+ */
+
+/* struct thread_params_output params;*/
+
+ int nthreads=num_threads-1;
+ int end=0;
+ int t;
+
+ if (nData < num_threads)
+ {
+ nthreads=nData-1;
+ }
+
+ for (t=0; t<nthreads; t++)
+ {
+ params_output[t].output = output;
+ if (t==0)
+ params_output[t].start = 0;
+ else
+ params_output[t].start = thread_slices[t-1];
+ params_output[t].end = thread_slices[t];
+
+ if (pthread_create(&threads[t], NULL, parallel_compute_output_helper, (void*)¶ms_output[t]) != 0)
+ {
+ mexPrintf("\nError: Thread creation failed.\n");
+ return(-1);
+ }
+
+ end=params_output[t].end;
+ }
+
+ params_output[t].output = output;
+ params_output[t].start = end;
+ params_output[t].end = nData;
+
+ parallel_compute_output_helper(¶ms_output[t]);
+
+ for (t=0; t<nthreads; t++)
+ {
+ if (pthread_join(threads[t], NULL) != 0)
+ {
+ mexPrintf("\nError: pthread_join failed.\n");
+ return(-1);
+ }
+ }
+
+ return 0;
+}
+
+/* Ihis function initialize parallel processing . It must be
+ called prior to paralel_XXXX OCAS heleper functions. */
+int init_parallel_ocas(int number_of_threads)
+{
+ num_threads = number_of_threads;
+
+ thread_slices = (uint32_t*)mxCalloc(num_threads,sizeof(uint32_t));
+ if(thread_slices == NULL)
+ {
+ mexPrintf("Not enough memory for vector num_threads.");
+ goto clean_up;
+
+ }
+
+ threads = (pthread_t*)mxCalloc(num_threads,sizeof(pthread_t));
+ if(threads== NULL)
+ {
+ mexPrintf("Not enough memory for threads structure.");
+ goto clean_up;
+ }
+
+ params_output = (struct thread_params_output*)mxCalloc(num_threads,sizeof(struct thread_params_output));
+ if(params_output== NULL)
+ {
+ mexPrintf("Not enough memory for params structure.");
+ goto clean_up;
+ }
+
+ params_add = (struct thread_params_add*)mxCalloc(num_threads,sizeof(struct thread_params_add));
+ if(params_add== NULL)
+ {
+ mexPrintf("Not enough memory for params structure.");
+ goto clean_up;
+ }
+
+ /* The following code finds splits of the data such that each
+ data slice contains approximately the same number of nonzero elements. */
+ uint32_t i;
+ int nnz_split = 0;
+ INDEX_TYPE_T* Jc = mxGetJc(data_X);
+
+ for(i=0; i < nData; i++)
+ nnz_split += Jc[i+1] - Jc[i];
+
+ nnz_split/=num_threads;
+ uint64_t accum_nnz = 0;
+ int thr = 0;
+
+ mexPrintf("Data slices: ");
+ for(i=0; i < nData; i++)
+ {
+ INDEX_TYPE_T nItems = Jc[i+1] - Jc[i];
+
+ if (accum_nnz < nnz_split*(thr+1))
+ accum_nnz+=nItems;
+ else
+ {
+ thread_slices[thr]=i;
+ mexPrintf("%d ", thread_slices[thr]);
+ accum_nnz+=nItems;
+ thr++;
+ }
+ }
+ mexPrintf("\n");
+
+ return(0);
+
+clean_up:
+
+ mxFree(threads);
+ mxFree(thread_slices);
+
+ return(-1);
+}
+
+/* release memory allocated for parallelized functions */
+void destroy_parallel_ocas(void)
+{
+ mxFree(params_add);
+ mxFree(params_output);
+ mxFree(threads);
+ mxFree(thread_slices);
+}
+
+/*----------------------------------------------------------------------------------
+ Parallel version of
+ sparse_add_new_cut( new_col_H, new_cut, cut_length, nSel ) does the following:
+
+ new_a = sum(data_X(:,find(new_cut ~=0 )),2);
+ new_col_H = [sparse_A(:,1:nSel)'*new_a ; new_a'*new_a];
+ sparse_A(:,nSel+1) = new_a;
+
+ ---------------------------------------------------------------------------------*/
+
+static void* parallel_sparse_add_helper(void* p)
+{
+ struct thread_params_add* params = (struct thread_params_add*) p;
+ double* local_new_a=params->new_a;
+ uint32_t* new_cut=params->new_cut;
+ uint32_t start=params->start;
+ uint32_t end=params->end;
+ uint32_t i;
+
+ for(i=start; i <= end; i++)
+ add_sparse_col(local_new_a, data_X, new_cut[i]);
+
+ return(NULL);
+}
+
+int parallel_sparse_add_new_cut( double *new_col_H,
+ uint32_t *new_cut,
+ uint32_t cut_length,
+ uint32_t nSel,
+ void* user_data )
+{
+/* double *new_a, */
+ double sq_norm_a;
+ uint32_t i, j, nz_dims, ptr;
+
+ /* temporary vector */
+/* new_a = (double*)mxCalloc(nDim,sizeof(double));*/
+/* if(new_a == NULL) */
+/* return(-1); */
+ memset(new_a, 0, sizeof(double)*nDim*num_threads);
+
+ if((cut_length < MinimalParallelCutLenght) && (cut_length >= num_threads))
+ {
+
+ for(i=0; i < cut_length; i++) {
+ add_sparse_col(new_a, data_X, new_cut[i]);
+
+ A0[nSel] += X0*data_y[new_cut[i]];
+ }
+ }
+ else
+ {
+
+/* struct thread_params_add params;*/
+/* params.new_cut = new_cut;*/
+
+ uint32_t chunk = cut_length/num_threads;
+ uint32_t start = 0;
+ uint32_t end = chunk-1;
+ int t;
+ for(t = 0; t < num_threads-1; t++)
+ {
+ params_add[t].start = start;
+ params_add[t].end = end;
+ params_add[t].new_a = &new_a[nDim*(t+1)];
+ params_add[t].new_cut = new_cut;
+
+ start = end+1;
+ end = end+chunk;
+
+ if (pthread_create(&threads[t], NULL, parallel_sparse_add_helper, (void*)¶ms_add[t]) != 0)
+ {
+ mexPrintf("\nError: Thread creation failed.\n");
+ return(-1);
+ }
+
+ }
+
+ params_add[t].start = start;
+ params_add[t].end = cut_length-1;
+ params_add[t].new_a = new_a;
+ params_add[t].new_cut = new_cut;
+
+ parallel_sparse_add_helper((void*)¶ms_add[t]);
+
+ for (t=0; t<num_threads-1; t++)
+ {
+ if (pthread_join(threads[t], NULL) != 0)
+ {
+ return(-1);
+ }
+
+ double* a = &new_a[nDim*(t+1)];
+
+ for (i=0; i<nDim; i++)
+ new_a[i]+=a[i];
+ }
+
+ for(i=0; i < cut_length; i++)
+ A0[nSel] += X0*data_y[new_cut[i]];
+ }
+
+ /* compute new_a'*new_a and count number of non-zero dimensions */
+ nz_dims = 0;
+ sq_norm_a = A0[nSel]*A0[nSel];
+ for(j=0; j < nDim; j++ ) {
+ if(new_a[j] != 0) {
+ nz_dims++;
+ sq_norm_a += new_a[j]*new_a[j];
+ }
+ }
+
+ /* sparsify new_a and insert it to the last column of sparse_A */
+ sparse_A.nz_dims[nSel] = nz_dims;
+ if(nz_dims > 0) {
+ sparse_A.index[nSel] = NULL;
+ sparse_A.value[nSel] = NULL;
+ sparse_A.index[nSel] = mxCalloc(nz_dims,sizeof(uint32_t));
+ sparse_A.value[nSel] = mxCalloc(nz_dims,sizeof(double));
+ if(sparse_A.index[nSel]==NULL || sparse_A.value[nSel]==NULL)
+ {
+/* mexErrMsgTxt("Not enough memory for vector sparse_A.index[nSel], sparse_A.value[nSel].");*/
+ mxFree(sparse_A.index[nSel]);
+ mxFree(sparse_A.value[nSel]);
+ return(-1);
+ }
+
+ ptr = 0;
+ for(j=0; j < nDim; j++ ) {
+ if(new_a[j] != 0) {
+ sparse_A.index[nSel][ptr] = j;
+ sparse_A.value[nSel][ptr++] = new_a[j];
+ }
+ }
+ }
+
+ new_col_H[nSel] = sq_norm_a;
+ for(i=0; i < nSel; i++) {
+ double tmp = A0[nSel]*A0[i];
+
+ for(j=0; j < sparse_A.nz_dims[i]; j++) {
+ tmp += new_a[sparse_A.index[i][j]]*sparse_A.value[i][j];
+ }
+
+ new_col_H[i] = tmp;
+ }
+
+/* mxFree( new_a );*/
+
+ return 0;
+}
+
+
+/*=========================================================================
+ *
+ * Ocas helper functions implemented for input data represented as
+ * an array of doubles.
+ *
+ *=========================================================================*/
+
+
+
+/*=======================================================================
+ OCAS helper functions for sorting numbers.
+=======================================================================*/
+static void swapf(double* a, double* b)
+{
+ double dummy=*b;
+ *b=*a;
+ *a=dummy;
+}
+
+/*static void swapi(uint32_t* a, uint32_t* b)*/
+/*{*/
+/* int dummy=*b;*/
+/* *b=*a;*/
+/* *a=dummy;*/
+/*}*/
+
+/* sort arrays value and data according to value in ascending order */
+int qsort_data(double* value, double* data, uint32_t size)
+{
+ if(size == 1)
+ return 0;
+
+ if (size==2)
+ {
+ if (value[0] > value[1])
+ {
+ swapf(&value[0], &value[1]);
+/* swapi(&data[0], &data[1]);*/
+ swapf(&data[0], &data[1]);
+ }
+ return 0;
+ }
+ double split=value[size/2];
+
+ uint32_t left=0;
+ uint32_t right=size-1;
+
+ while (left<=right)
+ {
+ while (value[left] < split)
+ left++;
+ while (value[right] > split)
+ right--;
+
+ if (left<=right)
+ {
+ swapf(&value[left], &value[right]);
+/* swapi(&data[left], &data[right]);*/
+ swapf(&data[left], &data[right]);
+ left++;
+ right--;
+ }
+ }
+
+ if (right+1> 1)
+ qsort_data(value,data,right+1);
+
+ if (size-left> 1)
+ qsort_data(&value[left],&data[left], size-left);
+
+
+ return 0;
+}
+
+/*-------------------------------------------------------------------------
+ Parallel version of qsort_data.
+ -------------------------------------------------------------------------*/
+void* parallel_qsort_helper(void* p)
+{
+ struct thread_qsort* ps=(struct thread_qsort*) p;
+ double* output=ps->output;
+/* uint32_t* data=ps->data;*/
+ double* data=ps->data;
+ uint32_t size=ps->size;
+
+ if(size == 1)
+ return 0;
+
+
+ if (size==2)
+ {
+ if (output[0] > output [1])
+ {
+ swapf(&output[0], &output[1]);
+/* swapi(&data[0], &data[1]);*/
+ swapf(&data[0], &data[1]);
+ }
+ return(NULL);
+ }
+ /*double split=output[(((uint64_t) size)*rand())/(((uint64_t)RAND_MAX)+1)];*/
+ double split=output[size/2];
+
+ uint32_t left=0;
+ uint32_t right=size-1;
+
+ while (left<=right)
+ {
+ while (output[left] < split)
+ left++;
+ while (output[right] > split)
+ right--;
+
+ if (left<=right)
+ {
+ swapf(&output[left], &output[right]);
+/* swapi(&index[left], &index[right]);*/
+ swapf(&data[left], &data[right]);
+ left++;
+ right--;
+ }
+ }
+ boolean lthread_start=FALSE;
+ boolean rthread_start=FALSE;
+ pthread_t lthread;
+ pthread_t rthread;
+ struct thread_qsort t1;
+ struct thread_qsort t2;
+
+ if (right+1> 1 && (right+1< sort_limit || qsort_threads >= num_threads-1))
+ qsort_data(output,data,right+1);
+ else if (right+1> 1)
+ {
+ qsort_threads++;
+ lthread_start=TRUE;
+ t1.output=output;
+ t1.data=data;
+ t1.size=right+1;
+ if (pthread_create(<hread, NULL, parallel_qsort_helper, (void*) &t1) != 0)
+ {
+ lthread_start=FALSE;
+ qsort_threads--;
+ qsort_data(output,data,right+1);
+ }
+ }
+
+
+ if (size-left> 1 && (size-left< sort_limit || qsort_threads >= num_threads-1))
+ qsort_data(&output[left],&data[left], size-left);
+ else if (size-left> 1)
+ {
+ qsort_threads++;
+ rthread_start=TRUE;
+ t2.output=&output[left];
+ t2.data=&data[left];
+ t2.size=size-left;
+ if (pthread_create(&rthread, NULL, parallel_qsort_helper, (void*)&t2) != 0)
+ {
+ rthread_start=FALSE;
+ qsort_threads--;
+ qsort_data(&output[left],&data[left], size-left);
+ }
+ }
+
+ if (lthread_start)
+ {
+ pthread_join(lthread, NULL);
+ qsort_threads--;
+ }
+
+ if (rthread_start)
+ {
+ pthread_join(rthread, NULL);
+ qsort_threads--;
+ }
+
+ return(NULL);
+}
+
+
+int parallel_qsort_data(double* value, double* data, uint32_t size)
+{
+ struct thread_qsort qthr;
+
+ qsort_threads=0;
+
+ qthr.output=value;
+ qthr.data=data;
+ qthr.size=size;
+ parallel_qsort_helper((void*)&qthr);
+
+ return(0);
+}
+
+/* =================================================================================
+ Other auxiliary functions.
+ =================================================================================*/
+
+/* ---------------------------------------------------------------------------------
+This function loads regularization constants from a text file. Each line contains
+a single constant.
+ ---------------------------------------------------------------------------------*/
+int load_regconsts(char *fname, double **vec_C, uint32_t *len_vec_C, int verb)
+{
+ double C;
+ char *line = NULL;
+ int exitflag = 0;
+ FILE *fid;
+
+ if(verb) mexPrintf("Input file: %s\n", fname);
+
+ fid = fopen(fname, "r");
+ if(fid == NULL) {
+ perror("fopen error ");
+ mexPrintf("Cannot open input file.\n");
+ exitflag = -1;
+ goto clean_up;
+ }
+
+ line = mxCalloc(LIBSLF_MAXLINELEN, sizeof(char));
+ if( line == NULL )
+ {
+ mexPrintf("Not enough memmory to allocate line buffer.\n");
+ exitflag = -1;
+ goto clean_up;
+ }
+
+
+ if(verb) mexPrintf("Counting regularization constants...");
+ int go = 1;
+ long line_cnt = 0;
+ while(go) {
+
+ if(fgets(line,LIBSLF_MAXLINELEN, fid) == NULL )
+ {
+ go = 0;
+ if(verb)
+ {
+ if( (line_cnt % 1000) != 0)
+ mexPrintf(" %ld", line_cnt);
+ mexPrintf(" EOF.\n");
+ }
+
+ }
+ else
+ {
+ line_cnt ++;
+
+ C = atof(line);
+
+ if(verb)
+ {
+ if( (line_cnt % 1000) == 0) {
+ mexPrintf(" %ld", line_cnt);
+ fflush(NULL);
+ }
+ }
+ }
+ }
+
+ *vec_C = (double*)mxCalloc(line_cnt, sizeof(double));
+ if( vec_C == NULL )
+ {
+ mexPrintf("Not enough memmory to allocate vec_C.\n");
+ exitflag = -1;
+ goto clean_up;
+ }
+
+ fseek(fid, 0, SEEK_SET);
+
+ if(verb) mexPrintf("Reading regularization constants...");
+ go = 1;
+ line_cnt = 0;
+ while(go)
+ {
+
+ if(fgets(line,LIBSLF_MAXLINELEN, fid) == NULL )
+ {
+ go = 0;
+ if(verb)
+ {
+ if( (line_cnt % 1000) != 0)
+ mexPrintf(" %ld", line_cnt);
+ mexPrintf(" EOF.\n");
+ }
+
+ }
+ else
+ {
+ (*vec_C)[line_cnt] = atof(line);
+ line_cnt ++;
+
+ if(verb)
+ {
+ if( (line_cnt % 1000) == 0) {
+ mexPrintf(" %ld", line_cnt);
+ fflush(NULL);
+ }
+ }
+ }
+ }
+
+ fclose(fid);
+ *len_vec_C = line_cnt;
+
+clean_up:
+ mxFree(line);
+
+ return(exitflag);
+}
+
+
+
+/* ---------------------------------------------------------------------------------
+This function loads SVMlight data file to sparse matlab matrix data_X and
+dense vector data_y which both are assumed to global variables.
+ ---------------------------------------------------------------------------------*/
+int load_svmlight_file(char *fname, int verb)
+{
+ char *line = NULL;
+ FILE *fid;
+ double *feat_val = NULL;
+ double sparse_memory_requirement, full_memory_requirement;
+ uint32_t *feat_idx = NULL;
+ long nnzf;
+ int max_dim = 0;
+ long j;
+ uint64_t nnz = 0;
+ mwSize *irs = NULL, *jcs = NULL;
+ int exitflag = 0;
+ double *sr = NULL;
+
+/* mexPrintf("Input file: %s\n", fname);*/
+
+ fid = fopen(fname, "r");
+ if(fid == NULL) {
+ perror("fopen error ");
+ mexPrintf("Cannot open input file.\n");
+ exitflag = -1;
+ goto clean_up;
+ }
+
+ line = mxCalloc(LIBSLF_MAXLINELEN, sizeof(char));
+ if( line == NULL )
+ {
+ mexPrintf("Not enough memmory to allocate line buffer.\n");
+ exitflag = -1;
+ goto clean_up;
+ }
+
+ feat_idx = mxCalloc(LIBSLF_MAXLINELEN, sizeof(uint32_t));
+ if( feat_idx == NULL )
+ {
+ mexPrintf("Not enough memmory to allocate feat_idx.\n");
+ exitflag = -1;
+ goto clean_up;
+ }
+
+ feat_val = mxCalloc(LIBSLF_MAXLINELEN, sizeof(double));
+ if( feat_val == NULL )
+ {
+ mexPrintf("Not enough memmory to allocate feat_val.\n");
+ exitflag = -1;
+ goto clean_up;
+ }
+
+ if(verb) mexPrintf("Analysing input data...");
+ int label;
+ int go = 1;
+ long line_cnt = 0;
+
+ while(go) {
+
+ if(fgets(line,LIBSLF_MAXLINELEN, fid) == NULL )
+ {
+ go = 0;
+ if(verb)
+ {
+ if( (line_cnt % 1000) != 0)
+ mexPrintf(" %ld", line_cnt);
+ mexPrintf(" EOF.\n");
+ }
+
+ }
+ else
+ {
+ line_cnt ++;
+ nnzf = svmlight_format_parse_line(line, &label, feat_idx, feat_val);
+
+ if(nnzf == -1)
+ {
+ mexPrintf("Parsing error on line %ld .\n", line_cnt);
+ mexPrintf("Probably defective input file.\n");
+ exitflag = -1;
+ goto clean_up;
+ }
+
+ max_dim = LIBOCAS_MAX(max_dim,feat_idx[nnzf-1]);
+ nnz += nnzf;
+
+ if(verb)
+ {
+ if( (line_cnt % 1000) == 0) {
+ mexPrintf(" %ld", line_cnt);
+ fflush(NULL);
+ }
+ }
+ }
+ }
+
+ fclose(fid);
+ if(verb)
+ {
+ mexPrintf("Data statistics:\n");
+ mexPrintf("# of examples: %ld\n", line_cnt);
+ mexPrintf("dimensionality: %d\n", max_dim);
+ mexPrintf("nnz: %ld, density: %f%%\n", (long)nnz, 100*(double)nnz/((double)max_dim*(double)line_cnt));
+ }
+
+ sparse_memory_requirement = ((double)nnz*((double)sizeof(double)+(double)sizeof(mwSize)))/(1024.0*1024.0);
+ full_memory_requirement = sizeof(double)*(double)max_dim*(double)line_cnt/(1024.0*1024.0);
+
+ if(verb)
+ {
+ mexPrintf("Memory requirements for sparse matrix: %.3f MB\n", sparse_memory_requirement);
+ mexPrintf("Memory requirements for full matrix: %.3f MB\n", full_memory_requirement);
+ }
+
+ if( full_memory_requirement < sparse_memory_requirement)
+ {
+ if(verb)
+ mexPrintf("Full matrix represenation used.\n");
+
+ data_X = mxCreateDoubleMatrix(max_dim, line_cnt, mxREAL);
+
+ if( data_X == NULL)
+ {
+ mexPrintf("Not enough memory to allocate data_X .\n");
+ exitflag = -1;
+ goto clean_up;
+ }
+
+ }
+ else
+ {
+ if(verb)
+ mexPrintf("Sparse matrix represenation used.\n");
+
+ data_X = mxCreateSparse(max_dim, line_cnt, nnz, mxREAL);
+ if( data_X == NULL)
+ {
+ mexPrintf("Not enough memory to allocate data_X .\n");
+ exitflag = -1;
+ goto clean_up;
+ }
+
+ sr = mxGetPr(data_X);
+ irs = (mwSize*)mxGetIr(data_X);
+ jcs = (mwSize*)mxGetJc(data_X);
+
+ }
+
+
+/* mexPrintf("Required memory: %.3f MB\n", */
+/* ((double)nnz*((double)sizeof(double)+(double)sizeof(mwSize)))/(1024.0*1024.0));*/
+
+ /*---------------------------------------------*/
+
+ data_y = mxCalloc(line_cnt, sizeof(double));
+ if(data_y == NULL)
+ {
+ mexPrintf("Not enough memory to allocate data_y.\n");
+ exitflag = -1;
+ goto clean_up;
+ }
+
+ fid = fopen(fname, "r");
+ if(fid == NULL) {
+ perror("fopen error ");
+ mexPrintf("Cannot open input file.\n");
+ exitflag = -1;
+ goto clean_up;
+ }
+
+ if(verb)
+ mexPrintf("Reading examples...");
+
+ go = 1;
+ line_cnt = 0;
+ long k=0;
+ while(go) {
+ if(fgets(line,LIBSLF_MAXLINELEN, fid) == NULL )
+ {
+ go = 0;
+ if(verb)
+ {
+ if( (line_cnt % 1000) != 0)
+ mexPrintf(" %ld", line_cnt);
+ mexPrintf(" EOF.\n");
+ }
+ }
+ else
+ {
+ line_cnt ++;
+ nnzf = svmlight_format_parse_line(line, &label, feat_idx, feat_val);
+
+ if(nnzf == -1)
+ {
+ mexPrintf("Parsing error on line %ld .\n", line_cnt);
+ mexPrintf("Defective input file.\n");
+ exitflag = -1;
+ goto clean_up;
+ }
+
+ data_y[line_cnt-1] = (double)label;
+
+ if( mxIsSparse( data_X) )
+ {
+ jcs[line_cnt-1] = k;
+
+ for(j = 0; j < nnzf; j++) {
+ sr[k] = feat_val[j];
+ irs[k] = feat_idx[j]-1;
+ k++;
+ }
+ }
+ else
+ {
+ double *ptr = mxGetPr(data_X);
+ for(j=0; j < nnzf; j++ ) {
+ ptr[LIBOCAS_INDEX(feat_idx[j]-1,line_cnt-1,max_dim)] = feat_val[j];
+ }
+
+ }
+
+ if(verb)
+ {
+ if( (line_cnt % 1000) == 0) {
+ mexPrintf(" %ld", line_cnt);
+ fflush(NULL);
+ }
+ }
+ }
+ }
+
+ fclose(fid);
+
+ if( mxIsSparse( data_X) )
+ jcs[line_cnt] = k;
+
+/* mexPrintf("\n");*/
+
+ if(verb)
+ mexPrintf("Leaving svmlight reading function.\n");
+
+ exitflag = 0;
+
+clean_up:
+
+ mxFree(line);
+ mxFree(feat_val);
+ mxFree(feat_idx);
+
+ return(exitflag);
+}
+
+
+/*----------------------------------------------------------------------
+ Compute area under ROC (1st class label[i]==1; 2nd class label[i] != 1).
+ ----------------------------------------------------------------------*/
+double compute_auc(double *score, int *label, uint32_t nData)
+{
+ double *sorted_score = NULL;
+ double *sorted_lab = NULL;
+ uint32_t i;
+ uint32_t neg, pos;
+ double auc = -1;
+
+ sorted_score = mxCalloc(nData, sizeof(double));
+ if( sorted_score == NULL ) {
+ mexPrintf("Not enough memmory to allocate sorted_score when computing AUC.");
+ goto clean_up;
+ }
+
+ sorted_lab = mxCalloc(nData, sizeof(double));
+ if( sorted_lab == NULL )
+ {
+ mexPrintf("Not enough memmory to allocate sorted_lab when computing AUC.");
+ goto clean_up;
+ }
+
+ for(i=0; i < nData; i++)
+ if(label[i] == 1) sorted_lab[i] = 1.0; else sorted_lab[i] = 0.0;
+
+
+ memcpy(sorted_score,score,sizeof(double)*nData);
+
+ qsort_data(sorted_score, sorted_lab, nData);
+
+ pos = 0;
+ neg = 0;
+ auc = 0;
+
+ for(i = 0; i < nData; i++)
+ {
+ if(sorted_lab[i] ==1.0 )
+ {
+ pos ++;
+ }
+ else
+ {
+ neg ++;
+ auc += (double)pos;
+ }
+ }
+ auc = 1 - auc/((double)neg*(double)pos);
+
+clean_up:
+ mxFree(sorted_score);
+ mxFree(sorted_lab);
+
+ return(auc);
+}
+
diff --git a/ocas_helper.h b/ocas_helper.h
new file mode 100644
index 0000000..f6aece6
--- /dev/null
+++ b/ocas_helper.h
@@ -0,0 +1,104 @@
+/*-----------------------------------------------------------------------
+ * ocas_helper.h: Implementation of helper functions for the OCAS solver.
+ *
+ * It supports both sparse and dense matrices and loading data from
+ * the SVM^light format.
+ *-------------------------------------------------------------------- */
+
+#ifndef _ocas_helper_h
+#define _ocas_helper_h
+
+#include <stdint.h>
+
+#ifdef LIBOCAS_MATLAB
+
+#include <mex.h>
+
+#if !defined(MX_API_VER) || MX_API_VER<0x07040000
+#define mwSize int
+#define INDEX_TYPE_T int
+#define mwIndex int
+#else
+#define INDEX_TYPE_T mwSize
+#endif
+
+#else
+
+#define mwSize int
+#define mwIndex int
+
+#include "sparse_mat.h"
+
+#endif
+
+typedef struct {
+ double **value;
+ uint32_t **index;
+ uint32_t *nz_dims;
+} cutting_plane_buf_T;
+
+
+extern mxArray *data_X;
+extern uint32_t nDim, nData, nY;
+extern double *data_y;
+extern cutting_plane_buf_T sparse_A;
+extern double *full_A;
+extern double *W;
+extern double *oldW;
+extern double *new_a;
+
+extern double *A0;
+extern double W0;
+extern double oldW0;
+extern double X0;
+
+double get_time(void);
+void ocas_print(ocas_return_value_T value);
+void ocas_print_null(ocas_return_value_T value);
+
+void mul_sparse_col(double alpha, mxArray *sparse_mat, uint32_t col);
+void add_sparse_col(double *full_vec, mxArray *sparse_mat, uint32_t col);
+void subtract_sparse_col(double *full_vec, mxArray *sparse_mat, uint32_t col);
+double dp_sparse_col(double *full_vec, mxArray *sparse_mat, uint32_t col);
+double sparse_update_W( double t, void* user_data );
+int sparse_add_new_cut( double *new_col_H,
+ uint32_t *new_cut,
+ uint32_t cut_length,
+ uint32_t nSel,
+ void* user_data );
+int sparse_compute_output( double *output, void* user_data );
+void sparse_compute_W( double *sq_norm_W, double *dp_WoldW, double *alpha, uint32_t nSel, void* user_data );
+
+void msvm_sparse_compute_W( double *sq_norm_W, double *dp_WoldW, double *alpha, uint32_t nSel, void* user_data );
+int msvm_sparse_add_new_cut( double *new_col_H, uint32_t *new_cut, uint32_t nSel, void* user_data );
+int msvm_sparse_compute_output( double *output, void* user_data );
+
+double msvm_full_update_W( double t, void* user_data );
+int msvm_full_add_new_cut( double *new_col_H, uint32_t *new_cut, uint32_t nSel, void* user_data);
+int msvm_full_compute_output( double *output, void* user_data );
+void msvm_full_compute_W( double *sq_norm_W, double *dp_WoldW, double *alpha, uint32_t nSel, void* user_data );
+
+
+double full_update_W( double t, void* user_data );
+int full_compute_output( double *output, void* user_data );
+void full_compute_W( double *sq_norm_W, double *dp_WoldW, double *alpha, uint32_t nSel, void* user_data );
+int full_add_new_cut( double *new_col_H,
+ uint32_t *new_cut,
+ uint32_t cut_length,
+ uint32_t nSel,
+ void* user_data);
+
+int load_svmlight_file(char *fname, int verb);
+double compute_auc(double *score, int *label, uint32_t nData);
+int load_regconsts(char *fname, double **vec_C, uint32_t *len_vec_C, int verb);
+
+int qsort_data(double* value, double* data, uint32_t size);
+
+void destroy_parallel_ocas(void);
+int init_parallel_ocas(int number_of_threads);
+int parallel_sparse_compute_output( double *output, void* user_data );
+int parallel_qsort_data(double* value, double* data, uint32_t size);
+int parallel_sparse_add_new_cut( double *new_col_H,uint32_t *new_cut, uint32_t cut_length,uint32_t nSel,void* user_data );
+
+
+#endif
diff --git a/ocas_lbp_helper.c b/ocas_lbp_helper.c
new file mode 100644
index 0000000..aa6da0a
--- /dev/null
+++ b/ocas_lbp_helper.c
@@ -0,0 +1,414 @@
+/*-----------------------------------------------------------------------
+ * ocas_helper.c: Implementation of helper functions for the OCAS solver.
+ *
+ * It supports both sparse and dense matrices and loading data from
+ * the SVM^light format.
+ *-------------------------------------------------------------------- */
+
+#define _FILE_OFFSET_BITS 64
+
+#include <pthread.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+#include <sys/time.h>
+#include <stdlib.h>
+#include <time.h>
+
+#include "libocas.h"
+#include "ocas_lbp_helper.h"
+#include "liblbp.h"
+
+uint8_t *Images;
+uint32_t nImages;
+uint32_t win_H;
+uint32_t win_W;
+uint32_t im_H;
+uint32_t im_W;
+uint32_t nPyramids;
+uint32_t *croped_window;
+uint32_t *Wins;
+uint32_t win_H, win_W;
+
+uint32_t nDim, nData;
+double *data_y;
+/*double *full_A;*/
+int64_t *full_A;
+double *W;
+double *oldW;
+/*double *new_a;*/
+/*int32_t *new_a;*/
+int64_t *new_a;
+
+double *A0;
+double W0;
+double oldW0;
+double X0;
+
+
+/*-----------------------------------------------------------------------
+ Print statistics.
+ -----------------------------------------------------------------------*/
+void ocas_print(ocas_return_value_T value)
+{
+ mexPrintf("%4d: tim=%f, Q_P=%f, Q_D=%f, Q_P-Q_D=%f, 1-Q_D/Q_P=%f, nza=%4d, err=%.2f%%, qpf=%d\n",
+ value.nIter,value.ocas_time, value.Q_P,value.Q_D,value.Q_P-value.Q_D,(value.Q_P-value.Q_D)/LIBOCAS_ABS(value.Q_P),
+ value.nNZAlpha, 100*(double)value.trn_err/(double)nData, value.qp_exitflag );
+}
+
+void ocas_print_null(ocas_return_value_T value)
+{
+ return;
+}
+
+
+/*-----------------------------------------------------------------------
+ Get absolute time in seconds.
+ -----------------------------------------------------------------------*/
+double get_time()
+{
+ struct timeval tv;
+ if (gettimeofday(&tv, NULL)==0)
+ return tv.tv_sec+((double)(tv.tv_usec))/1e6;
+ else
+ return 0.0;
+}
+
+
+/*-------------------------------------------------------------------------
+ sq_norm_W = full_update_W( t ) does the following:
+
+ W = oldW*(1-t) + t*W;
+ sq_norm_W = W'*W;
+---------------------------------------------------------------------------*/
+double full_update_W( double t, void* user_data )
+{
+ uint32_t j;
+ double sq_norm_W;
+
+/* mexPrintf("double full_update_W()\n");*/
+
+ W0 = oldW0*(1-t) + t*W0;
+ sq_norm_W = W0*W0;
+
+ for(j=0; j <nDim; j++) {
+ W[j] = oldW[j]*(1-t) + t*W[j];
+ sq_norm_W += W[j]*W[j];
+ }
+
+ return( sq_norm_W );
+}
+
+
+/*----------------------------------------------------------------------------------
+ full_add_new_cut( new_col_H, new_cut, cut_length, nSel ) does the following:
+
+ new_a = sum(data_X(:,find(new_cut ~=0 )),2);
+ new_col_H = [full_A(:,1:nSel)'*new_a ; new_a'*new_a];
+ full_A(:,nSel+1) = new_a;
+
+ ---------------------------------------------------------------------------------*/
+int full_add_new_cut( double *new_col_H,
+ uint32_t *new_cut,
+ uint32_t cut_length,
+ uint32_t nSel,
+ void* user_data)
+{
+/* double *new_a, */
+ double sq_norm_a, *ptr;
+ uint32_t i, j;
+ uint32_t x1, y1, idx, x, y, cnt, mirror;
+ uint8_t *img_ptr;
+
+ /* ptr = mxGetPr(data_X);*/
+
+/* memset(new_a, 0, sizeof(double)*nDim);*/
+ memset(new_a, 0, sizeof(new_a[0])*nDim);
+
+ for(i=0; i < cut_length; i++)
+ {
+
+ idx = Wins[LIBOCAS_INDEX(0,new_cut[i],4)]-1;
+ x1 = Wins[LIBOCAS_INDEX(1,new_cut[i],4)]-1;
+ y1 = Wins[LIBOCAS_INDEX(2,new_cut[i],4)]-1;
+ mirror = Wins[LIBOCAS_INDEX(3,new_cut[i],4)];
+
+ img_ptr = &Images[idx*im_H*im_W];
+
+ cnt=0;
+ if(mirror==0)
+ {
+ for(x=x1; x < x1+win_W; x++)
+ for(y=y1; y < y1+win_H; y++)
+ croped_window[cnt++] = img_ptr[LIBOCAS_INDEX(y,x,im_H)];
+ }
+ else
+ {
+ for(x=x1+win_W-1; x >= x1; x--)
+ for(y=y1; y < y1+win_H; y++)
+ croped_window[cnt++] = img_ptr[LIBOCAS_INDEX(y,x,im_H)];
+ }
+
+ if(data_y[new_cut[i]] == +1) {
+/* lbppyr_addvec(new_a,croped_window);*/
+ liblbp_pyr_addvec(new_a,nDim,croped_window,win_H,win_W);
+ }
+ else
+ {
+/* lbppyr_subvec(new_a,croped_window);*/
+ liblbp_pyr_subvec(new_a,nDim,croped_window,win_H,win_W);
+ }
+
+ A0[nSel] += X0*data_y[new_cut[i]];
+ }
+
+ /*
+ for(i=0; i < cut_length; i++) {
+ for(j=0; j < nDim; j++ ) {
+ new_a[j] += ptr[LIBOCAS_INDEX(j,new_cut[i],nDim)];
+ }
+
+ A0[nSel] += X0*data_y[new_cut[i]];
+ }
+ */
+
+ /* compute new_a'*new_a and insert new_a to the last column of full_A */
+ sq_norm_a = A0[nSel]*A0[nSel];
+ for(j=0; j < nDim; j++ )
+ {
+ sq_norm_a += (double)(new_a[j]*new_a[j]);
+ full_A[LIBOCAS_INDEX(j,nSel,nDim)] = new_a[j];
+ }
+
+ new_col_H[nSel] = sq_norm_a;
+ for(i=0; i < nSel; i++) {
+ double tmp = A0[nSel]*A0[i];
+
+ for(j=0; j < nDim; j++ ) {
+ tmp += (double)(new_a[j]*full_A[LIBOCAS_INDEX(j,i,nDim)]);
+ }
+ new_col_H[i] = tmp;
+ }
+
+/* mxFree( new_a );*/
+
+ return 0;
+}
+
+/*----------------------------------------------------------------------
+ full_compute_output( output ) does the follwing:
+
+ output = data_X'*W;
+ ----------------------------------------------------------------------*/
+int full_compute_output( double *output, void* user_data )
+{
+ uint32_t i, j, x1, y1, idx, cnt, x,y, mirror;
+ double tmp;
+ uint8_t *img_ptr;
+
+/* mexPrintf("full_compute_output()\n");*/
+
+ /* ptr = mxGetPr( data_X );*/
+
+ for(i=0; i < nData; i++)
+ {
+ tmp = data_y[i]*X0*W0;
+
+ idx = Wins[LIBOCAS_INDEX(0,i,4)]-1;
+ x1 = Wins[LIBOCAS_INDEX(1,i,4)]-1;
+ y1 = Wins[LIBOCAS_INDEX(2,i,4)]-1;
+ mirror = Wins[LIBOCAS_INDEX(3,i,4)];
+
+ img_ptr = &Images[idx*im_H*im_W];
+
+ cnt=0;
+ if(mirror==0)
+ {
+ for(x=x1; x < x1+win_W; x++)
+ for(y=y1; y < y1+win_H; y++)
+ croped_window[cnt++] = img_ptr[LIBOCAS_INDEX(y,x,im_H)];
+ }
+ else
+ {
+ for(x=x1+win_W-1; x >= x1; x--)
+ for(y=y1; y < y1+win_H; y++)
+ croped_window[cnt++] = img_ptr[LIBOCAS_INDEX(y,x,im_H)];
+ }
+
+/* output[i] = data_y[i]*(X0*W0 + lbppyr_dotprod(W,croped_window));*/
+ output[i] = data_y[i]*(X0*W0 + liblbp_pyr_dotprod(W,nDim,croped_window,win_H,win_W));
+
+ /*
+ for(j=0; j < nDim; j++ ) {
+ tmp += W[j]*ptr[LIBOCAS_INDEX(j,i,nDim)];
+ }
+ output[i] = tmp;
+ */
+ }
+
+ return 0;
+}
+
+
+
+
+/*----------------------------------------------------------------------
+ sq_norm_W = full_compute_W( alpha, nSel ) does the following:
+
+ oldW = W;
+ W = full_A(:,1:nSel)'*alpha;
+ sq_norm_W = W'*W;
+ dp_WoldW = W'*oldW';
+
+ ----------------------------------------------------------------------*/
+void full_compute_W( double *sq_norm_W, double *dp_WoldW, double *alpha, uint32_t nSel, void* user_data )
+{
+ uint32_t i,j;
+
+ memcpy(oldW, W, sizeof(double)*nDim );
+ memset(W, 0, sizeof(double)*nDim);
+
+ oldW0 = W0;
+ W0 = 0;
+
+ for(i=0; i < nSel; i++) {
+ if( alpha[i] > 0 ) {
+ for(j=0; j< nDim; j++ ) {
+ W[j] += alpha[i]*(double)(full_A[LIBOCAS_INDEX(j,i,nDim)]);
+ }
+
+ W0 += A0[i]*alpha[i];
+ }
+ }
+
+ *sq_norm_W = W0*W0;
+ *dp_WoldW = W0*oldW0;
+ for(j=0; j < nDim; j++) {
+ *sq_norm_W += W[j]*W[j];
+ *dp_WoldW += W[j]*oldW[j];
+ }
+
+ return;
+}
+
+static void swapf(double* a, double* b)
+{
+ double dummy=*b;
+ *b=*a;
+ *a=dummy;
+}
+
+/*static void swapi(uint32_t* a, uint32_t* b)*/
+/*{*/
+/* int dummy=*b;*/
+/* *b=*a;*/
+/* *a=dummy;*/
+/*}*/
+
+/* sort arrays value and data according to value in ascending order */
+int qsort_data(double* value, double* data, uint32_t size)
+{
+ if(size == 1)
+ return 0;
+
+ if (size==2)
+ {
+ if (value[0] > value[1])
+ {
+ swapf(&value[0], &value[1]);
+/* swapi(&data[0], &data[1]);*/
+ swapf(&data[0], &data[1]);
+ }
+ return 0;
+ }
+ double split=value[size/2];
+
+ uint32_t left=0;
+ uint32_t right=size-1;
+
+ while (left<=right)
+ {
+ while (value[left] < split)
+ left++;
+ while (value[right] > split)
+ right--;
+
+ if (left<=right)
+ {
+ swapf(&value[left], &value[right]);
+/* swapi(&data[left], &data[right]);*/
+ swapf(&data[left], &data[right]);
+ left++;
+ right--;
+ }
+ }
+
+ if (right+1> 1)
+ qsort_data(value,data,right+1);
+
+ if (size-left> 1)
+ qsort_data(&value[left],&data[left], size-left);
+
+
+ return 0;
+}
+
+
+/*----------------------------------------------------------------------
+ Compute area under ROC (1st class label[i]==1; 2nd class label[i] != 1).
+ ----------------------------------------------------------------------*/
+double compute_auc(double *score, int *label, uint32_t nData)
+{
+ double *sorted_score = NULL;
+ double *sorted_lab = NULL;
+ uint32_t i;
+ uint32_t neg, pos;
+ double auc = -1;
+
+ sorted_score = mxCalloc(nData, sizeof(double));
+ if( sorted_score == NULL ) {
+ mexPrintf("Not enough memmory to allocate sorted_score when computing AUC.");
+ goto clean_up;
+ }
+
+ sorted_lab = mxCalloc(nData, sizeof(double));
+ if( sorted_lab == NULL )
+ {
+ mexPrintf("Not enough memmory to allocate sorted_lab when computing AUC.");
+ goto clean_up;
+ }
+
+ for(i=0; i < nData; i++)
+ if(label[i] == 1) sorted_lab[i] = 1.0; else sorted_lab[i] = 0.0;
+
+
+ memcpy(sorted_score,score,sizeof(double)*nData);
+
+ qsort_data(sorted_score, sorted_lab, nData);
+
+ pos = 0;
+ neg = 0;
+ auc = 0;
+
+ for(i = 0; i < nData; i++)
+ {
+ if(sorted_lab[i] ==1.0 )
+ {
+ pos ++;
+ }
+ else
+ {
+ neg ++;
+ auc += (double)pos;
+ }
+ }
+ auc = 1 - auc/((double)neg*(double)pos);
+
+clean_up:
+ mxFree(sorted_score);
+ mxFree(sorted_lab);
+
+ return(auc);
+}
+
diff --git a/ocas_lbp_helper.h b/ocas_lbp_helper.h
new file mode 100644
index 0000000..679112d
--- /dev/null
+++ b/ocas_lbp_helper.h
@@ -0,0 +1,81 @@
+/*-----------------------------------------------------------------------
+ * ocas_helper.h: Implementation of helper functions for the OCAS solver.
+ *
+ * It supports both sparse and dense matrices and loading data from
+ * the SVM^light format.
+ *-------------------------------------------------------------------- */
+
+#ifndef _ocas_helper_h
+#define _ocas_helper_h
+
+#include <stdint.h>
+
+#ifdef LIBOCAS_MATLAB
+
+#include <mex.h>
+
+#if !defined(MX_API_VER) || MX_API_VER<0x07040000
+#define mwSize int
+#define INDEX_TYPE_T int
+#define mwIndex int
+#else
+#define INDEX_TYPE_T mwSize
+#endif
+
+#else
+
+#define mwSize int
+#define mwIndex int
+
+#include "sparse_mat.h"
+
+#endif
+
+extern uint8_t *Images;
+extern uint32_t nImages;
+extern uint32_t win_H;
+extern uint32_t win_W;
+extern uint32_t im_H;
+extern uint32_t im_W;
+extern uint32_t nPyramids;
+extern uint32_t *croped_window;
+extern uint32_t *Wins;
+
+extern uint32_t nDim, nData;
+extern double *data_y;
+/*extern double *full_A;*/
+/*extern int32_t *full_A;*/
+extern int64_t *full_A;
+extern double *W;
+extern double *oldW;
+/*extern double *new_a;*/
+/*extern int32_t *new_a;*/
+extern int64_t *new_a;
+
+extern double *A0;
+extern double W0;
+extern double oldW0;
+extern double X0;
+
+uint32_t lbppyr_get_dim(uint32_t win_H, uint32_t win_W, uint32_t nPyramids);
+
+double get_time(void);
+void ocas_print(ocas_return_value_T value);
+void ocas_print_null(ocas_return_value_T value);
+
+double full_update_W( double t, void* user_data );
+int full_compute_output( double *output, void* user_data );
+void full_compute_W( double *sq_norm_W, double *dp_WoldW, double *alpha, uint32_t nSel, void* user_data );
+int full_add_new_cut( double *new_col_H,
+ uint32_t *new_cut,
+ uint32_t cut_length,
+ uint32_t nSel,
+ void* user_data);
+
+double compute_auc(double *score, int *label, uint32_t nData);
+
+int qsort_data(double* value, double* data, uint32_t size);
+
+void lbppyr_features(char *vec, uint32_t *win);
+
+#endif
diff --git a/sparse_mat.c b/sparse_mat.c
new file mode 100644
index 0000000..7bf3769
--- /dev/null
+++ b/sparse_mat.c
@@ -0,0 +1,123 @@
+/*-----------------------------------------------------------
+ * sparse_mat.c: Reimplementation of Matlab functions for
+ * dealing with sparse matrices and full matrices (support for
+ * full matrices added later).
+ *
+ -----------------------------------------------------------*/
+
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+#include <math.h>
+#include <stdlib.h>
+
+#include "sparse_mat.h"
+
+
+INDEX_TYPE_T mxGetM(const mxArray *array_ptr)
+{
+ return( array_ptr->m );
+}
+
+INDEX_TYPE_T mxGetN(const mxArray *array_ptr)
+{
+ return( array_ptr->n);
+}
+
+void mxDestroyArray(mxArray *array_ptr)
+{
+ if( array_ptr != NULL)
+ {
+ free(array_ptr->pr);
+ free(array_ptr->ir);
+ free(array_ptr->jc);
+ free(array_ptr);
+ }
+}
+
+INDEX_TYPE_T mxGetNZMAX(const mxArray *array_ptr)
+{
+ return(array_ptr->nzmax);
+}
+
+mxArray *mxCreateDoubleMatrix(INDEX_TYPE_T m, INDEX_TYPE_T n, mxComplexity ComplexFlag)
+{
+ mxArray *array = NULL;
+
+ array = (mxArray*)calloc(1,sizeof(mxArray));
+ if(array == NULL)
+ return(NULL);
+
+ array->pr = NULL;
+ array->ir = NULL;
+ array->jc = NULL;
+ array->m = m;
+ array->n = n;
+ array->nzmax = m*n;
+ array->sparse = 0;
+
+ array->pr = (double*)calloc(m*n,sizeof(double));
+ if(array->pr == NULL)
+ return(NULL);
+
+ return(array);
+}
+
+mxArray *mxCreateSparse(INDEX_TYPE_T m, INDEX_TYPE_T n, NNZ_TYPE_T nzmax, mxComplexity ComplexFlag)
+{
+ mxArray *array = NULL;
+
+ array = (mxArray*)calloc(1,sizeof(mxArray));
+ if(array == NULL)
+ return(NULL);
+
+ array->pr = NULL;
+ array->ir = NULL;
+ array->jc = NULL;
+ array->m = m;
+ array->n = n;
+ array->nzmax = nzmax;
+ array->sparse = 1;
+
+ array->pr = (double*)calloc(nzmax,sizeof(double));
+ if(array->pr == NULL)
+ goto clean_up;
+
+ array->ir = (INDEX_TYPE_T*)calloc(nzmax,sizeof(INDEX_TYPE_T));
+ if(array->ir == NULL)
+ goto clean_up;
+
+ array->jc = (INDEX_TYPE_T*)calloc(n+1,sizeof(INDEX_TYPE_T));
+ if(array->jc == NULL)
+ goto clean_up;
+
+ return(array);
+
+clean_up:
+
+ free(array->pr);
+ free(array->ir);
+ free(array->jc);
+
+ return(NULL);
+}
+
+double *mxGetPr(const mxArray *array_ptr)
+{
+ return(array_ptr->pr);
+}
+
+INDEX_TYPE_T *mxGetIr(const mxArray *array_ptr)
+{
+ return(array_ptr->ir);
+}
+
+INDEX_TYPE_T *mxGetJc(const mxArray *array_ptr)
+{
+ return(array_ptr->jc);
+}
+
+int mxIsSparse(const mxArray *array_ptr)
+{
+ return(array_ptr->sparse);
+}
diff --git a/sparse_mat.h b/sparse_mat.h
new file mode 100644
index 0000000..17c84e1
--- /dev/null
+++ b/sparse_mat.h
@@ -0,0 +1,47 @@
+/*-----------------------------------------------------------
+ * sparse_mat.h: Reimplementation of Matlab functions for
+ * dealing with sparse matrices.
+ *
+ -----------------------------------------------------------*/
+
+#ifndef _sparse_mat_h
+#define _sparse_mat_h
+
+#define mxCalloc(x...) calloc(x)
+#define mxFree(x...) free(x)
+#define mexPrintf(x...) printf(x)
+
+#define INDEX_TYPE_T uint32_t
+#define NNZ_TYPE_T uint64_t
+
+
+typedef struct {
+ INDEX_TYPE_T *ir;
+ INDEX_TYPE_T *jc;
+ INDEX_TYPE_T m;
+ INDEX_TYPE_T n;
+ double *pr;
+ NNZ_TYPE_T nzmax;
+ int sparse;
+
+} mxArray;
+
+
+typedef enum {
+ mxREAL,
+ mxCOMPLEX
+} mxComplexity;
+
+
+INDEX_TYPE_T mxGetM(const mxArray *array_ptr);
+INDEX_TYPE_T mxGetN(const mxArray *array_ptr);
+void mxDestroyArray(mxArray *array_ptr);
+mxArray *mxCreateSparse(INDEX_TYPE_T m, INDEX_TYPE_T n, NNZ_TYPE_T nzmax, mxComplexity ComplexFlag);
+mxArray *mxCreateDoubleMatrix(INDEX_TYPE_T m, INDEX_TYPE_T n, mxComplexity ComplexFlag);
+double *mxGetPr(const mxArray *array_ptr);
+INDEX_TYPE_T *mxGetIr(const mxArray *array_ptr);
+INDEX_TYPE_T *mxGetJc(const mxArray *array_ptr);
+INDEX_TYPE_T mxGetNZMAX(const mxArray *array_ptr);
+int mxIsSparse(const mxArray *array_ptr);
+
+#endif
diff --git a/svmlight_linclass.m b/svmlight_linclass.m
new file mode 100644
index 0000000..1b8f84c
--- /dev/null
+++ b/svmlight_linclass.m
@@ -0,0 +1,17 @@
+% SVMLIGHT_LINCLASS classifies examples in SVM^light file by linear rule.
+%
+% Synopsis:
+% [score,true_lab] = svmlight_linclass(data_file,W,[])
+% [score,true_lab] = svmlight_linclass(data_file,W,W0)
+% [score,true_lab] = svmlight_linclass(data_file,W,W0,verb)
+%
+% Input:
+% data_file [string] Path to file with examples stored in SVM^light format.
+% W [nDims x nModels] Parameter vectors of nModels linear classifiers.
+% W0 [nModels x 1] Bias of decision rule. If W0 is empty then W0 = 0 is used.
+% verb [1x1] If ~= 0 then prints info (default 0).
+%
+% Output:
+% score [nModels x nExamples] score(i,j) = W(:,i)'*X_j + W0(i)
+% true_labels [nExamples x 1] labels from the data_file
+%
diff --git a/svmlight_linclass_mex.c b/svmlight_linclass_mex.c
new file mode 100644
index 0000000..cfedb55
--- /dev/null
+++ b/svmlight_linclass_mex.c
@@ -0,0 +1,319 @@
+/*=================================================================
+ * SVMLIGHT_LINCLASS classifies examples in SVM^light file by linear rule.
+ *
+ * Synopsis:
+ * [score,true_lab] = svmlight_linclass(data_file,W,[])
+ * [score,true_lab] = svmlight_linclass(data_file,W,W0)
+ * [score,true_lab] = svmlight_linclass(data_file,W,W0,verb)
+ *
+ *
+ * Input:
+ * data_file [string] Path to file with examples stored in SVM^light format.
+ * W [nDims x nModels] Parameter vectors of nModels linear classifiers.
+ * W0 [nModels x 1] Bias of decision rule. If W0 is empty then W0 = 0 is used.
+ * verb [1x1] If ~= 0 then prints info (default 0).
+ *
+ * Output:
+ * score [nModels x nExamples] score(i,j) = W(:,i)'*X_j + W0(i)
+ * true_labels [nExamples x 1] labels from the data_file
+ *
+ *=================================================================*/
+
+#define _FILE_OFFSET_BITS 64
+
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+#include <mex.h>
+#include <sys/time.h>
+#include <time.h>
+#include <errno.h>
+
+#include "libocas.h"
+#include "ocas_helper.h"
+#include "lib_svmlight_format.h"
+
+#if !defined(MX_API_VER) || MX_API_VER<0x07040000
+#define mwSize int
+#define mwIndex int
+#endif
+
+
+/*----------------------------------------------------------
+It computes dot produt between col-th column of matrix
+and a sparse vector given by vec_val and vec_idx (indices are 1 based)
+its length is vec_len. The matrix can be either Matlab full or Matlab
+sparse matrix.
+-----------------------------------------------------------*/
+
+double my_dot_prod(mxArray *matrix, uint32_t col, double *vec_val, uint32_t *vec_idx, long vec_len)
+{
+
+ double dot_prod;
+ long i;
+
+
+ if(!mxIsSparse(matrix)) {
+
+ long mat_dims = mxGetM(matrix);
+ double *mat_ptr = (double*)mxGetPr(matrix) + col*mat_dims;
+
+ dot_prod = 0;
+ for(i=0; i < vec_len; i++)
+ dot_prod += *(mat_ptr+vec_idx[i]-1) * vec_val[i];
+
+ }
+ else
+ {
+
+ uint32_t col_len, ptr1, ptr2, row1, row2;
+ mwSize *Ir, *Jc;
+ double *Pr, val1, val2;
+
+ Ir = mxGetIr(matrix);
+ Jc = mxGetJc(matrix);
+ Pr = mxGetPr(matrix);
+
+ col_len = Jc[col+1] - Jc[col];
+
+ ptr1 = Jc[col];
+
+ ptr2 = 0;
+
+ dot_prod = 0;
+
+ while(ptr2 < vec_len && (ptr1 - Jc[col]) < col_len) {
+ row1 = Ir[ptr1];
+ row2 = vec_idx[ptr2]-1;
+
+ if(row1 == row2 ) {
+ dot_prod += Pr[ptr1]*vec_val[ptr2];
+ ptr1++;
+ ptr2++;
+ }
+ else if(row1 < row2 ) {
+ ptr1++;
+ }
+ else {
+ ptr2 ++;
+ }
+ }
+
+ }
+
+ return(dot_prod);
+}
+
+/*======================================================================
+ Main code plus interface to Matlab.
+========================================================================*/
+
+void mexFunction( int nlhs, mxArray *plhs[],int nrhs, const mxArray *prhs[] )
+{
+ char fname[200];
+ FILE *fid;
+ char *line;
+ double *feat_val;
+ uint32_t *feat_idx;
+ uint32_t nData = 0, nY = 0;
+ long nnzf;
+ uint64_t nnz = 0;
+ mxArray *W;
+ int nModels;
+ double *score;
+ double *W0;
+ double *error;
+ long max_dim = 0;
+ long nDims = 0;
+ long i, j;
+ double *true_lab;
+ double dot_prod;
+ int verb = 0;
+ double *auc;
+
+ if( nrhs < 3 )
+ mexErrMsgTxt("At least three input arguments must be passed.");
+
+ if( nrhs > 4)
+ mexErrMsgTxt("At most four input arguments must be passed.");
+
+ if( nrhs == 4)
+ verb = (int)mxGetScalar(prhs[3]);
+
+ /* get input arguments */
+ mxGetString(prhs[0], fname, 200);
+
+ W = (mxArray*)prhs[1];
+ nDims = mxGetM(prhs[1]);
+ nModels = mxGetN(prhs[1]);
+
+ if( mxIsEmpty(prhs[2]) == false)
+ {
+ W0 = (double*)mxGetPr(prhs[2]);
+ if((LIBOCAS_MAX(mxGetM(prhs[2]),mxGetN(prhs[2])) != nModels) ||
+ (LIBOCAS_MIN(mxGetM(prhs[2]),mxGetN(prhs[2])) != 1))
+ {
+ mexErrMsgTxt("The third input argument is of incorrect dimensionality.");
+ }
+ }
+ else
+ {
+ W0 = mxCalloc(nModels, sizeof(double));
+ if( W0 == NULL )
+ mexErrMsgTxt("Not enough memmory to allocate W0.");
+ }
+
+ if(verb)
+ {
+ mexPrintf("input_file: %s\n", fname);
+ mexPrintf("nModels: %d\n", nModels);
+ mexPrintf("W dimensionality: %d\n", nDims);
+ }
+
+ fid = fopen(fname, "r");
+ if(fid == NULL) {
+ perror("fopen error: ");
+ mexErrMsgTxt("Cannot open input file.");
+ }
+
+ /**********************************/
+ line = mxCalloc(LIBSLF_MAXLINELEN, sizeof(char));
+ if( line == NULL )
+ mexErrMsgTxt("Not enogh memmory to allocate line buffer.");
+
+ feat_idx = mxCalloc(LIBSLF_MAXLINELEN, sizeof(long));
+ if( feat_idx == NULL )
+ mexErrMsgTxt("Not enogh memmory to allocate feature buffer.");
+
+ feat_val = mxCalloc(LIBSLF_MAXLINELEN, sizeof(double));
+ if( feat_val == NULL )
+ mexErrMsgTxt("Not enough memmory to allocate feature value buffer.");
+
+
+ /*---------------------------------------------------------------------- */
+ /* FIRST STEP: go through the data to get their number and dimensonality */
+ /*---------------------------------------------------------------------- */
+
+ if(verb)
+ mexPrintf("Analysing examples...");
+ int label;
+ int go = 1;
+ long line_cnt = 0;
+
+ while(go) {
+
+ if(fgets(line,LIBSLF_MAXLINELEN, fid) == NULL )
+ {
+ go = 0;
+ if(verb)
+ {
+ if( (line_cnt % 1000) != 0)
+ mexPrintf(" %ld", line_cnt);
+ mexPrintf(" EOF.\n");
+ }
+
+ }
+ else
+ {
+ line_cnt ++;
+ nnzf = svmlight_format_parse_line(line, &label, feat_idx, feat_val);
+
+ if(nnzf == -1)
+ {
+ mexPrintf("Parsing error on line %ld .\n", line_cnt);
+ mexErrMsgTxt("Probably defective input file.\n");
+ }
+
+ max_dim = LIBOCAS_MAX(max_dim,feat_idx[nnzf-1]);
+ nnz += nnzf;
+ nY = LIBOCAS_MAX(nY,label);
+
+ if(verb && (line_cnt % 1000) == 0) {
+ mexPrintf(" %ld", line_cnt);
+ fflush(NULL);
+ }
+ }
+ }
+
+ /* rewind the file at the begining */
+ fseek(fid, 0L, SEEK_SET);
+
+ nData = line_cnt;
+ if(verb)
+ {
+ mexPrintf("Data statistics:\n");
+ mexPrintf("# of examples: %ld\n", nData);
+ mexPrintf("# of classes : %ld\n", nY);
+ mexPrintf("dimensionality: %d\n", max_dim);
+ mexPrintf("nnz: %ld, density: %f%%\n", (long)nnz, 100*(double)nnz/((double)max_dim*(double)nData));
+ }
+
+ if(max_dim > nDims)
+ {
+ mexErrMsgTxt("\nDimansionality of examples in the file exceeds dimensionality of W.");
+ }
+
+ plhs[0] = (mxArray*)mxCreateDoubleMatrix(nModels,line_cnt,mxREAL);
+ if(plhs[0] == NULL)
+ mexErrMsgTxt("Not enought memory to allocate buffer for score.");
+ score = (double*)mxGetPr(plhs[0]);
+
+ plhs[1] = (mxArray*)mxCreateDoubleMatrix(line_cnt,1,mxREAL);
+ if(plhs[1] == NULL)
+ mexErrMsgTxt("Not enought memory to allocate buffer for true_labels.");
+ true_lab = (double*)mxGetPr(plhs[1]);
+
+ /*********************************************/
+ /* MAIN LOOP */
+ /*********************************************/
+
+ if(verb) mexPrintf("Reading examples...");
+
+ go = 1;
+ line_cnt = 0;
+
+ while(go) {
+
+ if(fgets(line,LIBSLF_MAXLINELEN, fid) == NULL )
+ {
+ go = 0;
+ if(verb)
+ {
+ if( (line_cnt % 1000) != 0)
+ mexPrintf(" %ld", line_cnt);
+ mexPrintf(" EOF.\n");
+ }
+
+ }
+ else
+ {
+ line_cnt ++;
+ nnzf = svmlight_format_parse_line(line, &label,feat_idx, feat_val);
+
+ if(nnzf == -1)
+ {
+ mexPrintf("Parsing error on line %ld .\n", line_cnt);
+ mexErrMsgTxt("Probably defective input file.\n");
+ }
+
+ true_lab[line_cnt-1] = (double)label;
+
+ for(i=0; i< nModels; i++) {
+
+ dot_prod = my_dot_prod(W,i,feat_val,feat_idx,nnzf);
+ score[LIBOCAS_INDEX(i,line_cnt-1,nModels)] = dot_prod + W0[i];
+ }
+
+ if(verb && (line_cnt % 1000) == 0) {
+ mexPrintf(" %ld", line_cnt);
+ fflush(NULL);
+ }
+
+ }
+ }
+
+ fclose(fid);
+
+ return;
+}
+
diff --git a/svmocas.c b/svmocas.c
new file mode 100644
index 0000000..3b74dfb
--- /dev/null
+++ b/svmocas.c
@@ -0,0 +1,720 @@
+/*-----------------------------------------------------------------------
+ * svmocas.c: Standalone application implementing the OCAS solver for
+ * training linear SVM classifiers.
+ *
+ * Copyright (C) 2008, 2009 Vojtech Franc, xfrancv at cmp.felk.cvut.cz
+ * Soeren Sonnenburg, soeren.sonnenburg at first.fraunhofer.de
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation;
+ * Version 3, 29 June 2007
+ *-------------------------------------------------------------------- */
+
+
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+#include <math.h>
+#include <stdlib.h>
+
+#include "lib_svmlight_format.h"
+#include "libocas.h"
+#include "sparse_mat.h"
+#include "ocas_helper.h"
+
+#include "version.h"
+
+void print_usage(void)
+{
+ printf("SVMOCAS: Optimized Cutting Plane Algorithm for Support Vector Machines\n"
+ " Training binary linear SVM classifier from examples\n"
+ " " OCAS_VERSION "\n"
+ "\n"
+ " usage: svmocas [options] example_file model_file\n"
+ "\n"
+ "Arguments:\n"
+ " example_file file with training examples stored in SVM^light format\n"
+ " model_file file to store learned linear rule f(x)=w'*x+w0; the model file\n"
+ " contains d+1 lines (d is data dimension); first n lines are\n"
+ " coordinates of w and the last one is w0.\n"
+ "General options:\n"
+ " -h this help\n"
+ " -v [0,1] verbosity level (default 1).\n"
+ "Learning options:\n"
+ " -c float regularization constant C (default 1).\n"
+ " -C filename if specified each example has different reg. constant given in the text file.\n"
+ " Each line of the text file must contain a single constant (positive double)\n"
+ " for the corresponding example. If -C is used then the option -c is ignored.\n"
+ " -b [0,1] value of L2-bias feature. A value of 0 implies not having bias (default 0).\n"
+ " -n int use only first n examples for training. By default n equals to\n"
+ " the number of examples in the example_file.\n"
+ "Optimization options:\n"
+ " -m [0,1] solver to be used: 0 ... standard cutting plane (equivalent to BMRM, SVM^perf)\n"
+ " 1 ... OCAS (default 1).\n"
+ " -s int cache size for cutting planes (default 2000).\n"
+ " -p int number of threads (default 1).\n"
+ "Stopping conditions:\n"
+ " -a float absolute tolerance TolAbs: halt if QP-QD <= TolAbs (default 0).\n"
+ " -r float relative tolerance TolRel: halt if QP-QD <= abs(QP)*TolRel (default 0.01).\n"
+ " -q float desired objective value QPValue: halt is QP <= QPValue (default 0).\n"
+ " -t float halts if the solver time (loading time is not counted) exceeds\n"
+ " the given time in seconds (default inf).\n\n"
+ "Example:\n"
+ " Train binary SVM classifier from ./data/riply_trn.light with regularization constant C = 10,\n"
+ " bias switched on, verbosity switched off and save model to ./data/svmocas.model\n"
+ " ./svmocas -c 10 -b 1 -v 0 ./data/riply_trn.light ./data/svmocas.model \n"
+ "\n"
+ " Compute testing error of the classifier stored in ./data/svmocas.model using testing\n"
+ " examples from ./data/riply_tst.light and save predicted labels to ./data/riply_tst.pred\n"
+ " ./linclass -e -o ./data/riply_tst.pred ./data/riply_tst.light ./data/svmocas.model\n"
+ "\n"
+ );
+}
+
+
+int main(int argc, char *argv[])
+{
+ double C, TolRel, TolAbs, QPBound, MaxTime;
+ uint32_t i, j, BufSize;
+ uint16_t Method;
+ int number_of_threads;
+ ocas_return_value_T ocas;
+ int len;
+ int recognized;
+ int exitflag = 1;
+ int verb;
+
+ double *vec_C = NULL;
+ uint32_t len_vec_C =0;
+
+ /* timing variables */
+ double load_time;
+ double total_time;
+
+ char *model_fname = NULL;
+ char *input_fname = NULL;
+ char *regconst_fname = NULL;
+ FILE *fid;
+
+ /* start time measuring */
+ total_time = get_time();
+
+ /* init */
+ data_X = NULL;
+ data_y = NULL;
+ W = NULL;
+ oldW = NULL;
+ A0 = NULL;
+ sparse_A.nz_dims = NULL;
+ sparse_A.index = NULL;
+ sparse_A.value = NULL;
+ new_a = NULL;
+ full_A = NULL;
+
+ /* default setting of input arguments*/
+ X0 = 0;
+ C = 1.0;
+ Method = 1;
+ TolRel = 0.01;
+ TolAbs = 0.0;
+ QPBound = 0.0;
+ BufSize = 2000;
+ MaxTime = (double)LIBOCAS_PLUS_INF;
+ nData = -1;
+ number_of_threads = 1;
+ verb = 1;
+
+ /*-----------------------------------------------------------
+ Process input arguments
+ ------------------------------------------------------------*/
+ if(argc ==1 || strcmp(argv[1], "-h") == 0)
+ {
+ print_usage();
+ goto clean_up;
+ }
+
+ if(argc < 3)
+ {
+ fprintf(stderr,"Not enough input arguments.\n\n");
+ goto clean_up;
+ }
+
+
+ for (i = 1; i < argc-2; i++)
+ {
+ recognized = 0;
+ if (strcmp(argv[i], "-h") == 0)
+ {
+ print_usage();
+ goto clean_up;
+ }
+
+ if (strcmp(argv[i], "-c") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -c\n");
+ goto clean_up;
+ }
+ C = atof(argv[i+1]);
+ if(C <=0)
+ {
+ fprintf(stderr,"Parameter C must be geater than zero.\n");
+ goto clean_up;
+ }
+ i++;
+ recognized = 1;
+ }
+
+ if (strcmp(argv[i], "-C") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a file name after argument -C\n");
+ goto clean_up;
+ }
+
+ len = strlen( argv[i+1] );
+ regconst_fname = calloc(len+1,sizeof(char));
+ strcpy(regconst_fname, argv[i+1]);
+
+ i++;
+ recognized = 1;
+ }
+
+ if (strcmp(argv[i], "-p") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -p\n");
+ goto clean_up;
+ }
+ number_of_threads = atoi(argv[i+1]);
+ if(number_of_threads <= 0)
+ {
+ fprintf(stderr,"Argumnet after parameter -p must be geater than zero.\n");
+ goto clean_up;
+ }
+ i++;
+ recognized = 1;
+ }
+
+
+ if (strcmp(argv[i], "-b") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -b\n");
+ goto clean_up;
+ }
+ X0 = atof(argv[i+1]);
+ i++;
+ recognized = 1;
+ }
+
+ if (strcmp(argv[i], "-n") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -n\n");
+ goto clean_up;
+ }
+ nData = atol(argv[i+1]);
+ if(nData <=0)
+ {
+ fprintf(stderr,"A value after the argument -n must be greater than zero.\n");
+ goto clean_up;
+ }
+ i++;
+ recognized = 1;
+ }
+
+ if (strcmp(argv[i], "-s") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -s\n");
+ goto clean_up;
+ }
+ BufSize = atol(argv[i+1]);
+ if(nData <=0)
+ {
+ fprintf(stderr,"A value after the argument -s must be greater than zero.\n");
+ goto clean_up;
+ }
+ i++;
+ recognized = 1;
+ }
+
+
+ if (strcmp(argv[i], "-m") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -m\n");
+ goto clean_up;
+ }
+ Method = atoi(argv[i+1]);
+ if(Method != 0 && Method != 1)
+ {
+ fprintf(stderr,"A value after the argument -m must be 0 or 1.\n");
+ goto clean_up;
+ }
+ i++;
+ recognized = 1;
+ }
+
+ if (strcmp(argv[i], "-v") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -v\n");
+ goto clean_up;
+ }
+ verb = atoi(argv[i+1]);
+ if(verb < 0 || verb > 1)
+ {
+ fprintf(stderr,"A value after the argument -v must be either 0 or 1.\n");
+ goto clean_up;
+ }
+
+
+ i++;
+ recognized = 1;
+ }
+
+ if (strcmp(argv[i], "-a") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -a\n");
+ goto clean_up;
+ }
+ TolAbs = atof(argv[i+1]);
+ if(TolAbs < 0)
+ {
+ fprintf(stderr,"A value after the argument -a must be a positive scalar.\n");
+ goto clean_up;
+ }
+ i++;
+ recognized = 1;
+ }
+
+ if (strcmp(argv[i], "-r") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -r\n");
+ goto clean_up;
+ }
+ TolRel = atof(argv[i+1]);
+ if(TolRel < 0)
+ {
+ fprintf(stderr,"A value after the argument -r must be a positive scalar.\n");
+ goto clean_up;
+ }
+ i++;
+ recognized = 1;
+ }
+
+ if (strcmp(argv[i], "-q") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -q\n");
+ goto clean_up;
+ }
+ QPBound = atof(argv[i+1]);
+ i++;
+ recognized = 1;
+ }
+
+ if (strcmp(argv[i], "-t") == 0)
+ {
+ if(i+1 >= argc-2)
+ {
+ fprintf(stderr,"You have to specify a value after argument -t\n");
+ goto clean_up;
+ }
+ MaxTime = atof(argv[i+1]);
+ if(MaxTime <=0)
+ {
+ fprintf(stderr,"A value after the argument -t must be a positive scalar.\n");
+ goto clean_up;
+ }
+ i++;
+ recognized = 1;
+ }
+
+ if(recognized == 0)
+ {
+ fprintf(stderr,"Unknown input argument: %s\n", argv[i]);
+ goto clean_up;
+ }
+
+ }
+
+ /* load regularization constants from file if requested */
+ if( regconst_fname != NULL)
+ {
+ if(load_regconsts(regconst_fname, &vec_C, &len_vec_C, verb) == -1)
+ {
+ fprintf(stderr,"Cannot load regularization constants from file %s\n", regconst_fname);
+ goto clean_up;
+ }
+ }
+
+
+ len = strlen(argv[argc-2]);
+ input_fname = calloc(len+1,sizeof(char));
+ strcpy(input_fname, argv[argc-2]);
+
+ len = strlen(argv[argc-1]);
+ model_fname = calloc(len+1,sizeof(char));
+ strcpy(model_fname, argv[argc-1]);
+
+ if(verb)
+ printf("Input file: %s\n", input_fname);
+
+ /*----------------------------------------------------------------
+ Load input examples
+ -------------------------------------------------------------------*/
+ load_time = get_time();
+ if( load_svmlight_file(input_fname,verb) == -1 || data_X == NULL || data_y == NULL)
+ goto clean_up;
+
+ load_time = get_time() - load_time;
+
+ /* get examples' dimension */
+ nDim = mxGetM(data_X);
+
+ /* if not given set number of training examples to be used */
+ if(nData == -1)
+ nData = mxGetN(data_X);
+ else if(nData <= 0 || nData > mxGetN(data_X))
+ {
+ fprintf(stderr,"Number of examples in the input file is %d.\n", mxGetN(data_X));
+ fprintf(stderr,"A value after argument -n must be less or equal to the number of examples.\n");
+ goto clean_up;
+ }
+
+
+ /*----------------------------------------------------------------
+ Print setting
+ -------------------------------------------------------------------*/
+ if(verb)
+ {
+ printf("Input file statistics:\n"
+ " # of examples : %d\n"
+ " dimensionality : %d\n",
+ mxGetN(data_X), nDim);
+ if( mxIsSparse(data_X) )
+ printf(" density : %.2f%% (sparse matrix representation used)\n",
+ 100.0*(double)mxGetNZMAX(data_X)/((double)nDim*(double)(mxGetN(data_X))));
+ else
+ printf(" density : 100%% (full matrix representation used)\n");
+
+ printf("Setting:\n");
+
+ if(vec_C == NULL)
+ printf(" C : %f\n", C);
+ else
+ {
+ printf(" C : different for each example; specified in %s\n", regconst_fname);
+ for(i = 0; i < len_vec_C; i++)
+ printf(" %f", vec_C[i]);
+ printf("\n");
+ }
+
+ printf(" bias : %.0f\n"
+ " # of examples : %d\n"
+ " solver : %d\n"
+ " cache size : %d\n"
+ " # of threads : %d\n"
+ " TolAbs : %f\n"
+ " TolRel : %f\n"
+ " QPValue : %f\n"
+ " MaxTime : %f [s]\n"
+ " verbosity : %d\n",
+ X0, nData, Method,BufSize,number_of_threads,TolAbs,TolRel, QPBound, MaxTime,verb);
+ }
+
+
+ if( vec_C != NULL && len_vec_C < nData)
+ {
+ fprintf(stderr, "Number of regularization constants (%d) is less then number of examples (%d).\n",
+ len_vec_C, nData);
+ goto clean_up;
+ }
+
+ /*----------------------------------------------------------------
+ Allocate memory for working variables and cutting plane cache
+ -------------------------------------------------------------------*/
+
+ /* learned weight vector */
+ W = (double*)mxCalloc(nDim,sizeof(double));
+ if(W == NULL)
+ {
+ fprintf(stderr,"Not enough memory for vector W.\n");
+ goto clean_up;
+ }
+
+ oldW = (double*)mxCalloc(nDim,sizeof(double));
+ if(oldW == NULL)
+ {
+ fprintf(stderr,"Not enough memory for vector oldW.");
+ goto clean_up;
+ }
+
+ W0 = 0;
+ oldW0 = 0;
+
+ A0 = mxCalloc(BufSize,sizeof(A0[0]));
+ if(A0 == NULL)
+ {
+ fprintf(stderr,"Not enough memory for vector A0.");
+ goto clean_up;
+ }
+
+ /* allocate buffer for computing cutting plane */
+ new_a = (double*)mxCalloc(nDim*number_of_threads,sizeof(double));
+ if(new_a == NULL)
+ {
+ fprintf(stderr,"Not enough memory for auxciliary cutting plane buffer new_a.");
+ goto clean_up;
+ }
+
+
+ if(vec_C != NULL)
+ {
+ for(i=0; i < nData; i++)
+ data_y[i] = data_y[i]*vec_C[i];
+ }
+
+
+ if(mxIsSparse(data_X))
+ {
+
+ /* for i=1:nData, X(:,i) = X(:,i)*y(i); end*/
+ for(i=0; i < nData; i++)
+ mul_sparse_col(data_y[i], data_X, i);
+
+ /* init cutting plane buffer */
+ sparse_A.nz_dims = mxCalloc(BufSize,sizeof(uint32_t));
+ sparse_A.index = mxCalloc(BufSize,sizeof(sparse_A.index[0]));
+ sparse_A.value = mxCalloc(BufSize,sizeof(sparse_A.value[0]));
+ if(sparse_A.nz_dims == NULL || sparse_A.index == NULL || sparse_A.value == NULL)
+ {
+ fprintf(stderr,"Not enough memory for cutting plane buffer sparse_A.");
+ goto clean_up;
+ }
+
+ /*----------------------------------------------------------------
+ Run OCAS run ...
+ -------------------------------------------------------------------*/
+ if(number_of_threads == 1)
+ {
+ if(verb)
+ {
+ printf("Starting optimization:\n");
+ if( vec_C == NULL)
+ ocas = svm_ocas_solver( C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &sparse_compute_W, &sparse_update_W, &sparse_add_new_cut,
+ &sparse_compute_output, &qsort_data, &ocas_print, 0);
+ else
+ ocas = svm_ocas_solver_difC( vec_C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &sparse_compute_W, &sparse_update_W, &sparse_add_new_cut,
+ &sparse_compute_output, &qsort_data, &ocas_print, 0);
+
+ }
+ else
+ {
+ if( vec_C == NULL)
+ ocas = svm_ocas_solver( C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &sparse_compute_W, &sparse_update_W, &sparse_add_new_cut,
+ &sparse_compute_output, &qsort_data, &ocas_print_null, 0);
+ else
+ ocas = svm_ocas_solver_difC( vec_C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &sparse_compute_W, &sparse_update_W, &sparse_add_new_cut,
+ &sparse_compute_output, &qsort_data, &ocas_print_null, 0);
+
+ }
+ }
+ else
+ {
+
+ if(init_parallel_ocas(number_of_threads) != 0)
+ {
+ goto clean_up;
+ }
+
+ if(verb)
+ {
+ printf("Starting optimization:\n");
+
+ if( vec_C == NULL)
+ ocas = svm_ocas_solver( C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &sparse_compute_W, &sparse_update_W, ¶llel_sparse_add_new_cut,
+ ¶llel_sparse_compute_output, ¶llel_qsort_data, &ocas_print, 0);
+ else
+ ocas = svm_ocas_solver_difC( vec_C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &sparse_compute_W, &sparse_update_W, ¶llel_sparse_add_new_cut,
+ ¶llel_sparse_compute_output, ¶llel_qsort_data, &ocas_print, 0);
+
+ }
+ else
+ {
+ if( vec_C == NULL)
+ ocas = svm_ocas_solver( C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &sparse_compute_W, &sparse_update_W, ¶llel_sparse_add_new_cut,
+ ¶llel_sparse_compute_output, ¶llel_qsort_data, &ocas_print_null, 0);
+ else
+ ocas = svm_ocas_solver_difC( vec_C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &sparse_compute_W, &sparse_update_W, ¶llel_sparse_add_new_cut,
+ ¶llel_sparse_compute_output, ¶llel_qsort_data, &ocas_print_null, 0);
+
+ }
+ destroy_parallel_ocas();
+ }
+ }
+ else
+ {
+ if(number_of_threads != 1 && verb)
+ {
+ printf("Warning: Multi-thread support works currently only for sparse data.\n");
+ }
+
+ double *ptr = mxGetPr(data_X);
+ for(i=0; i < nData; i++) {
+ for(j=0; j < nDim; j++ ) {
+ ptr[LIBOCAS_INDEX(j,i,nDim)] = ptr[LIBOCAS_INDEX(j,i,nDim)]*data_y[i];
+ }
+ }
+
+ /* init cutting plane buffer */
+ full_A = mxCalloc(BufSize*nDim,sizeof(double));
+ if( full_A == NULL )
+ {
+ fprintf(stderr,"Not enough memory for cutting plane buffer full_A.");
+ goto clean_up;
+ }
+
+ if(verb)
+ {
+ printf("Starting optimization:\n");
+
+ if(vec_C == NULL)
+ ocas = svm_ocas_solver( C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &full_compute_W, &full_update_W, &full_add_new_cut,
+ &full_compute_output, &qsort_data, &ocas_print, 0);
+ else
+ ocas = svm_ocas_solver_difC( vec_C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &full_compute_W, &full_update_W, &full_add_new_cut,
+ &full_compute_output, &qsort_data, &ocas_print, 0);
+
+ }
+ else
+ {
+ if(vec_C == NULL)
+ ocas = svm_ocas_solver( C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &full_compute_W, &full_update_W, &full_add_new_cut,
+ &full_compute_output, &qsort_data, &ocas_print_null, 0);
+ else
+ ocas = svm_ocas_solver_difC( vec_C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &full_compute_W, &full_update_W, &full_add_new_cut,
+ &full_compute_output, &qsort_data, &ocas_print_null, 0);
+
+ }
+
+ }
+
+
+ total_time=get_time()-total_time;
+
+ if(verb)
+ {
+ printf("Stopping condition: ");
+ switch( ocas.exitflag )
+ {
+ case 1: printf("1-Q_D/Q_P <= TolRel(=%f) satisfied.\n", TolRel); break;
+ case 2: printf("Q_P-Q_D <= TolAbs(=%f) satisfied.\n", TolAbs); break;
+ case 3: printf("Q_P <= QPBound(=%f) satisfied.\n", QPBound); break;
+ case 4: printf("Optimization time (=%f) >= MaxTime(=%f).\n", ocas.ocas_time, MaxTime); break;
+ case -1: printf("Has not converged!\n" ); break;
+ case -2: printf("Not enough memory for the solver.\n" ); break;
+ }
+
+ printf("Timing statistics:\n"
+ " load_time : %f[s]\n"
+ " qp_solver_time : %f[s]\n"
+ " sort_time : %f[s]\n"
+ " output_time : %f[s]\n"
+ " add_time : %f[s]\n"
+ " w_time : %f[s]\n"
+ " print_time : %f[s]\n"
+ " ocas_time : %f[s]\n"
+ " total_time : %f[s]\n",
+ load_time, ocas.qp_solver_time, ocas.sort_time, ocas.output_time,
+ ocas.add_time, ocas.w_time, ocas.print_time, ocas.ocas_time, total_time);
+
+ printf("Training error: %.4f%%\n", 100*(double)ocas.trn_err/(double)nData);
+ }
+
+ /* save W and W0 to the model file */
+ fid = fopen(model_fname, "w+");
+ if(fid == NULL) {
+ perror("fopen error ");
+ mexPrintf("Cannot open model file.");
+ goto clean_up;
+ }
+
+ for(i=0; i < nDim; i++)
+ fprintf(fid, "%.20f\n", W[i]);
+
+ fprintf(fid, "%.20f\n", W0);
+ fclose(fid);
+
+ if(verb)
+ printf("Result saved to model file: %s\n", model_fname);
+
+ exitflag = 0;
+
+clean_up:
+
+ mxDestroyArray(data_X);
+ mxFree(data_y);
+ mxFree(W);
+ mxFree(oldW);
+ mxFree(A0);
+ mxFree(new_a);
+ mxFree(full_A);
+ mxFree(regconst_fname);
+ mxFree(model_fname);
+ mxFree(input_fname);
+ mxFree(vec_C);
+
+ mxFree(sparse_A.nz_dims);
+ if( sparse_A.index !=NULL)
+ {
+ for(i=0; i < BufSize; i++)
+ if(sparse_A.index[i] != NULL)
+ mxFree(sparse_A.index[i]);
+
+ mxFree(sparse_A.index);
+ }
+ if( sparse_A.value != NULL)
+ {
+ for(i=0; i < BufSize; i++)
+ if(sparse_A.value[i] != NULL)
+ mxFree(sparse_A.value[i]);
+
+ mxFree(sparse_A.value);
+ }
+
+
+ return(exitflag);
+}
+
+
+
diff --git a/svmocas.m b/svmocas.m
new file mode 100644
index 0000000..963c99d
--- /dev/null
+++ b/svmocas.m
@@ -0,0 +1,67 @@
+% SVMOCAS Train linear SVM classifier using OCAS solver.
+%
+% Synopsis:
+% [W,W0,stat] = svmocas(X,X0,y,C,Method,TolRel,TolAbs,QPBound,BufSize,nExamples,MaxTime);
+%
+% [W,W0,stat] = svmocas(data_file,X0,C,Method,TolRel,TolAbs,QPBound,BufSize,nExamples,MaxTime);
+%
+% Desription:
+% This function trains linear SVM classifier by solving
+%
+% W,W0 = argmin 0.5*(w'*w+w0^2) + C*sum max( 0, 1-y(i)*(w'*X(:,i)+w0*X0) )
+% w,w0 i=1:nExamples
+%
+% The function accepts examples either in Matlab matrix X (both sparse and dense) and
+% a dense vector y or as path to a file in SVM^light format.
+%
+% Reference:
+% V. Franc, S. Sonnenburg. OCAS optimized cutting plane algorithm for Support Vector
+% Machines. In Proceedings of ICML. Omnipress, 2008.
+% http://ida.first.fraunhofer.de/~franc/papers/Franc-OCAS-ICML08.pdf
+%
+% Input:
+% data_file [string] Training examples stored in SVM^light format.
+%
+% X [nDim x nExamples] training inputs (sparse or dense matrix).
+% X0 [1x1] constant coordinate (implicitly) added to all examples;
+% this allows training biased decision rule.
+% y [nExamples x 1] labels (+1/-1).
+% C [1x1] or [nExamples x 1] C [1x1] is a regularization constant common for all examples;
+% if C is a vector [nExamples x 1] then each example has its own (possibly different)
+% regularization constant.
+% Method [1x1] 0..cutting plane; 1..OCAS (default 1)
+% TolRel [1x1] halts if Q_P-Q_D <= abs(Q_P)*TolRel (default 0.01)
+% TolAbs [1x1] halts if Q_P-Q_D <= TolAbs (default 0)
+% QPValue [1x1] halts if Q_P <= QPBpound (default 0)
+% BufSize [1x1] Initial size of active constrains buffer (default 2000)
+% nExaples [1x1] Number of examples used for training; must be >0 and <= size(X,2).
+% If nExamples = inf then nExamples is set to size(X,2).
+% MaxTime [1x1] halts if time used by solver (data loading time is not counted) exceeds
+% MaxTime given in seconds. Use MaxTime=inf (default) to switch off this stopping condition.
+%
+% Output:
+% W [nDim x 1] Paramater vectors of decision rule sign(W'*X+W0)
+% W0 [1x1] Bias term of the decision rule.
+% stat [struct] Optimizer statistics (field names are self-explaining).
+%
+% Example:
+% % loading data directly from file in SVM^light format
+% [W,W0,stat] = svmocas('./data/riply_trn.light',1,1);
+%
+% % using data loaded to Matlab
+% load('./data/riply_trn','X','y');
+% [W,W0,stat] = svmocas(X,1,y,1);
+%
+% % classification
+% load('riply_tst','X','y');
+% ypred = sign(W'*X + W0);
+% sum(ypred ~= y)/length(y)
+%
+
+%
+% Copyright (C) 2008, 2009 Vojtech Franc, xfrancv at cmp.felk.cvut.cz
+% Soeren Sonnenburg, soeren.sonnenburg at first.fraunhofer.de
+%
+% This program is free software; you can redistribute it and/or
+% modify it under the terms of the GNU General Public
+% License as published by the Free Software Foundation;
diff --git a/svmocas_lbp.m b/svmocas_lbp.m
new file mode 100644
index 0000000..47a71e5
--- /dev/null
+++ b/svmocas_lbp.m
@@ -0,0 +1,71 @@
+% SVMOCAS_LBP Train linear SVM classifier for images represented by LBP features.
+%
+% Synopsis:
+% [W,W0,stat]= svmocas_lbp(Images,imSize,Wins,winSize,height_of_pyramid,X0,y,C)
+%
+% [W,W0,stat]= svmocas_lbp(Images,imSize,Wins,winSize,height_of_pyramid,...
+% X0,y,C,Method,TolRel,TolAbs,QPBound,BufSize,MaxTime,verb)
+%
+% Desription:
+% SVMOCAS_LBP applies SVMOCAS solver (see HELP SVMOCAS) for training
+% two-class image classifier. The images are represented a by pyramid of
+% LBP features. For description of the used image features see HELP LBPPYR.
+%
+% SVMOCAS_LBP allows to define virtual examples which are generated by
+% shifting a base window along x- and y-axis of the input images.
+% SVMOCAS_LBP implements the COFFIN framework, i.e., the virtual examples
+% are computed on demand which leads to substantial memory savings.
+%
+% References:
+% - S. Sonnenburg, V. Franc. COFFIN: A Computational Framework for Linear SVMs.
+% In Proc. of ICML 2010. Haifa.
+% - V. Franc, S. Sonnenburg. Optimized Cutting Plane Algorithm for Large-Scale
+% Risk Minimization. The Journal of Machine Learning Research (JMLR),
+% vol. 10, pp. 2157--2192. October 2009.
+%
+% Input:
+% Images [(im_H*im_W) x nImages (uint8)] Input grey-scale images stored
+% as column vectors.
+% imSize [2 x 1] Size of the input images: imSize = [ImHeight x ImgWidth].
+% Wins [4 x nExamples (uint32)] Defines windows (boxes) cropped from Images.
+% Each window represents a single virtual example described by
+% [image_index; top_left_col; top_left_row; mirror] where
+% image_index points at column of Image; top_left_col and top_left_row
+% are coordinates of the top left corner of the window and mirror
+% is 0 (no mirroring) or 1 (swap window along the vertical axis).
+% winSize [2 x 1] Size of the base window cropped from the Images.
+% height_of_pyramid [1 x 1] See HELP LBPPYR.
+%
+% X0 [1x1] constant coordinate (implicitly) added to all examples;
+% this allows training biased decision rule.
+% y [nExamples x 1] labels (+1/-1).
+% C [1x1] or [nExamples x 1] C [1x1] is a regularization constant common for all examples;
+% if C is a vector [nExamples x 1] then each example has its own (possibly different)
+% regularization constant.
+% Method [1x1] 0..cutting plane; 1..OCAS (default 1)
+% TolRel [1x1] halts if Q_P-Q_D <= abs(Q_P)*TolRel (default 0.01)
+% TolAbs [1x1] halts if Q_P-Q_D <= TolAbs (default 0)
+% QPValue [1x1] halts if Q_P <= QPBpound (default 0)
+% BufSize [1x1] Initial size of active constrains buffer (default 2000)
+% nExaples [1x1] Number of examples used for training; must be >0 and <= size(X,2).
+% If nExamples = inf then nExamples is set to size(X,2).
+% MaxTime [1x1] halts if time used by solver (data loading time is not counted) exceeds
+% MaxTime given in seconds. Use MaxTime=inf (default) to switch off this stopping condition.
+%
+% Output:
+% W [nDim x 1] Paramater vectors of decision rule sign(W'*X+W0) where X
+% is LBPPYR feature representation of image to be classified.
+% W0 [1x1] Bias term of the decision rule.
+% stat [struct] Optimizer statistics (field names are self-explaining).
+%
+% Example:
+% See SVMOCAS_LBP_EXAMPLE
+%
+
+%
+% Copyright (C) 2008, 2009, 2010 Vojtech Franc, xfrancv at cmp.felk.cvut.cz
+% Soeren Sonnenburg, soeren.sonnenburg at first.fraunhofer.de
+%
+% This program is free software; you can redistribute it and/or
+% modify it under the terms of the GNU General Public
+% License as published by the Free Software Foundation;
diff --git a/svmocas_lbp_example.m b/svmocas_lbp_example.m
new file mode 100644
index 0000000..fc4d41a
--- /dev/null
+++ b/svmocas_lbp_example.m
@@ -0,0 +1,118 @@
+% This script demonstrates SVMOCAS_LBP solver for training two-class
+% classifiers of gray scale images. The images are described by a pyramid
+% of Local Binary Patterns (LBP) features. In order to make the classifier
+% translation invariant, SVMOCAS_LBP allows to generate virtual examples
+% by shifting a base window along x- and y-axis of the input images.
+% SVMOCAS_LBP implements the COFFIN framework, i.e. the virtual examples
+% are computed on demand which leads to substantial memory savings.
+%
+% For more details see:
+% S. Sonnenburg, V. Franc. COFFIN: A Computational Framework for Linear SVMs.
+% In Proc. of ICML 2010. Haifa.
+%
+% Image database provided by courtesy of
+% Eyedea Recognition LtD. (http://www.eyedea.cz)
+%
+
+load('./data/gender_images.mat',...
+ 'trn_male_images','trn_female_images',...
+ 'tst_male_images','tst_female_images','IMAGE_SIZE');
+
+%% Parameter of LBP feature representation
+LBP_PYRAMID = 4; % height of LBP pyramid; 1 means that LBP filters are
+ % applied only on the original image otherwise
+ % the image is LBP_PYRAMID-times downscaled
+
+%% Definition of base window on which the classifier is applied
+WINDOW_SIZE = [60 40]; % [height width]
+WINDOW_TOP_LEFT_COL = 20;
+WINDOW_TOP_LEFT_ROW = 15;
+
+%% Parameters SVM solver
+X0 = 1; % added constant feature
+C = 0.001; % SVM C
+SVMOCAS_BUFSIZE = 100; % number of cutting planes to store; single CP requires ~ 0.7MB
+SVMOCAS_TOLREL = 0.01; % precision of SVM solution
+SVMOCAS_METHOD = 1; % 1.. OCAS, 0..BMRM
+
+%% Virtual examples
+% The virtual examples are created by shifting the base window in x and
+% y-axis and mirroring the image along its vertical axis.
+
+switch input('use virtual examples (0-no, 1-yes)?:')
+ case 0
+ % testing error 20%
+ USE_VIRTUAL_EXAMPLES = 0;
+
+ case 1
+ % testing error 14%
+ USE_VIRTUAL_EXAMPLES = 1;
+ SHIFT_X = [-1 0 1];
+ SHIFT_Y = [-1 0 1];
+ MIRROR = [0];
+
+end
+
+%% prepare training examples
+nTrnMales = size(trn_male_images,2);
+nTrnFemales = size(trn_male_images,2);
+
+if ~USE_VIRTUAL_EXAMPLES
+ BOX = [WINDOW_TOP_LEFT_COL;WINDOW_TOP_LEFT_ROW;0];
+ wins = [ [1:nTrnMales nTrnMales+[1:nTrnFemales]]; repmat(BOX,1,nTrnFemales+nTrnMales)];
+ labels = [ones(1,nTrnMales) -ones(1,nTrnFemales)];
+
+else
+ % define virtual examples by shifting the base window
+ BOX = zeros(3,length(MIRROR)*length(SHIFT_Y)*length(SHIFT_X),'uint32');
+ cnt = 0;
+ for u=SHIFT_X
+ for v=SHIFT_Y
+ for mirror=MIRROR
+ cnt = cnt + 1;
+ BOX(:,cnt) = uint32([WINDOW_TOP_LEFT_COL+u; WINDOW_TOP_LEFT_ROW+v;mirror]);
+ end
+ end
+ end
+
+ % prepare virtual examples for each training image
+ wins = zeros(4,size(BOX,2)*(nTrnMales+nTrnFemales),'uint32');
+ labels = zeros(size(BOX,2)*(nTrnMales+nTrnFemales),1);
+ cnt = 0;
+ for i=1:(nTrnMales+nTrnFemales)
+ wins(1,cnt+1:cnt+size(BOX,2)) = uint32(i);
+ wins(2:4,cnt+1:cnt+size(BOX,2)) = BOX;
+ if i <= nTrnMales
+ labels(cnt+1:cnt+size(BOX,2)) = 1;
+ else
+ labels(cnt+1:cnt+size(BOX,2)) = -1;
+ end
+ cnt = cnt + size(BOX,2);
+ end
+
+end
+
+%% train SVM linear classifier
+[W,W0,stat] = svmocas_lbp([trn_male_images trn_female_images], IMAGE_SIZE,...
+ uint32(wins), WINDOW_SIZE, LBP_PYRAMID, X0, labels, C, ...
+ 1, SVMOCAS_TOLREL,0,0,SVMOCAS_BUFSIZE);
+
+%% compute features for testing images and evaluate the tained classifier
+BOX = [WINDOW_TOP_LEFT_COL;WINDOW_TOP_LEFT_ROW;0];
+
+nTstMale = size(tst_male_images,2);
+tst_labels = ones(1,nTstMale);
+tst_feat = lbppyr_features(tst_male_images,IMAGE_SIZE, ...
+ uint32([1:nTstMale;repmat(BOX,1,nTstMale)]), ...
+ WINDOW_SIZE, LBP_PYRAMID,0);
+
+nTstFemale = size(tst_female_images,2);
+tst_labels = [tst_labels -ones(1,nTstFemale)];
+tst_feat = [tst_feat lbppyr_features(tst_female_images,IMAGE_SIZE, ...
+ uint32([1:nTstFemale;repmat(BOX,1,nTstFemale)]), ...
+ WINDOW_SIZE, LBP_PYRAMID,0)];
+
+ypred = sign(W'*double(tst_feat) + W0);
+tst_error = sum(ypred(:) ~= tst_labels(:))/length(tst_labels);
+fprintf('Testing error: %f%%\n', tst_error*100);
+
\ No newline at end of file
diff --git a/svmocas_lbp_mex.c b/svmocas_lbp_mex.c
new file mode 100644
index 0000000..0a6806a
--- /dev/null
+++ b/svmocas_lbp_mex.c
@@ -0,0 +1,382 @@
+/*=================================================================================
+ * SVMOCAS_LBP Train linear SVM classifier for images represented by LBP features.
+ *
+ * Synopsis:
+ * [W,W0,stat]= svmocas_lbp(Images,imSize,Wins,winSize,height_of_pyramid,X0,y,C,Method,TolRel,TolAbs,QPBound,BufSize,MaxTime,verb)
+ *
+ * Input:
+ * Images [(im_H*im_W) x nImages (uint8)]
+ * imSize [2 x 1 (uint32)] imSize = [im_H im_W]
+ * Wins [4 x nExamples (uint32)] [image_idx; top_left_col; top_left_row; mirror]
+ * winSize [2 x 1 (uint32)] [win_H win_W]
+ * height_of_pyramid [1 x 1 (double)]
+ * X0 [1 x 1 (double)]
+ * y [nExamples x 1 (double)] +1/-1
+ * C [1 x 1 (double)] OR [nExamples x 1 (double)]
+ * Method [1x1 (double)] 0 (BMRM) or 1 (OCAS)
+ * TolRel [1x1 (double)]
+ * TolAbs [1x1 (double)]
+ * QPBound [1x1 (double)]
+ * BufSize [1x1 (double)]
+ * MaxTime [1x1 (double)]
+ * verb [1x1 (bouble)]
+ * Output:
+ * W [nDim x 1] Parameter vector
+ * W0 [1x1] Bias term
+ * stat [struct]
+ *
+ * Copyright (C) 2008, 2009, 2010 Vojtech Franc, xfrancv at cmp.felk.cvut.cz
+ * Soeren Sonnenburg, soeren.sonnenburg at first.fraunhofer.de
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation;
+ *======================================================================================*/
+
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+#include <mex.h>
+
+#include "libocas.h"
+#include "ocas_lbp_helper.h"
+#include "liblbp.h"
+
+#define DEFAULT_METHOD 1
+#define DEFAULT_TOLREL 0.01
+#define DEFAULT_TOLABS 0.0
+#define DEFAULT_QPVALUE 0.0
+#define DEFAULT_BUFSIZE 500
+#define DEFAULT_MAXTIME mxGetInf()
+#define DEFAULT_VERB 1
+
+/*======================================================================
+ Main code plus interface to Matlab.
+========================================================================*/
+
+void mexFunction( int nlhs, mxArray *plhs[],int nrhs, const mxArray *prhs[] )
+{
+ double C, TolRel, TolAbs, QPBound, trn_err, MaxTime;
+ double *vec_C;
+ uint32_t num_of_Cs;
+ uint32_t i, j, BufSize;
+ uint16_t Method;
+ int verb;
+ ocas_return_value_T ocas;
+ double *tmp;
+
+ /* timing variables */
+ double init_time;
+ double total_time;
+
+ total_time = get_time();
+ init_time = total_time;
+
+ if(nrhs < 8 || nrhs > 15)
+ mexErrMsgTxt("Improper number of input arguments.\n\n"
+ "SVMOCAS_LBP train linear SVM classifier for images prepresented by LBP features. \n\n"
+ "Synopsis:\n"
+ " [W,W0,stat]= svmocas_lbp(Images,imSize,Wins,winSize,height_of_pyramid,\n"
+ " X0,y,C,Method,TolRel,TolAbs,QPBound,BufSize,MaxTime,verb) \n\n"
+ "Input: \n"
+ " Images [(im_H*im_W) x nImages (uint8)]\n"
+ " imSize [2 x 1 (uint32)] imSize = [im_H im_W]\n"
+ " Wins [4 x nExamples (uint32)] [img_idx; topleft_col; topleft_row; mirror]\n"
+ " winSize [2 x 1 (uint32)] [win_H win_W]\n"
+ " height_of_pyramid [1 x 1 (double)]\n"
+ " X0 [1 x 1 (double)]\n"
+ " y [nExamples x 1 (double)] +1 or -1\n"
+ " C [1 x 1 (double)] OR [nExamples x 1 (double)]\n"
+ " Method [1x1 (double)] 0 for BMRM; 1 for OCAS \n"
+ " TolRel [1x1 (double)]\n"
+ " TolAbs [1x1 (double)]\n"
+ " QPBound [1x1 (double)]\n"
+ " BufSize [1x1 (double)]\n"
+ " MaxTime [1x1 (double)]\n"
+ " verb [1x1 (bouble)]\n\n"
+ "Output:\n"
+ " W [nDim x 1] Parameter vector\n"
+ " W0 [1x1] Bias term\n"
+ " stat [struct] \n");
+
+ /* 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15*/
+ /* [W,W0,stat]= svmocas_lbp(Images,imSize,Wins,winSize,nPyramids,X0,y,C,Method,TolRel,TolAbs,QPBound,BufSize,nExamples,MaxTime,verb) */
+
+ if(nrhs >= 16)
+ verb = (int)mxGetScalar(prhs[15]);
+ else
+ verb = DEFAULT_VERB;
+
+ Images = (uint8_t*)mxGetPr(prhs[0]);
+ nImages = mxGetN(prhs[0]);
+
+ tmp = (double*)mxGetPr(prhs[1]);
+ im_H = (uint32_t)tmp[0];
+ im_W = (uint32_t)tmp[1];
+
+ mexPrintf("im_h=%d im_W=%d \n", im_H, im_W);
+ if(mxGetM(prhs[0]) != im_H*im_W)
+ mexErrMsgTxt("Dimension of Images does not match to im_H*im_W.");
+
+ Wins = (uint32_t*)mxGetPr(prhs[2]);
+
+ tmp = (double*)mxGetPr(prhs[3]);
+ win_H = (uint32_t)tmp[0];
+ win_W = (uint32_t)tmp[1];
+
+ nPyramids = (uint32_t)mxGetScalar(prhs[4]);
+/* nDim = lbppyr_get_dim(win_H,win_W,nPyramids);*/
+ nDim = liblbp_pyr_get_dim(win_H,win_W,nPyramids);
+
+ croped_window = (uint32_t*)mxCalloc(win_H*win_W,sizeof(uint32_t));
+ if(croped_window == NULL)
+ mexErrMsgTxt("Not enough memory for croped_window.");
+
+ X0 = mxGetScalar(prhs[5]);
+ data_y = (double*)mxGetPr(prhs[6]);
+
+ nData = LIBOCAS_MAX(mxGetM(prhs[6]),mxGetN(prhs[6]));
+ if(nData != mxGetN(prhs[2]))
+ mexErrMsgTxt("Dimension missmatch betwenn Wins and y.");
+
+ if(verb)
+ {
+ mexPrintf("Input data:\n"
+ " # of images : %d\n"
+ " image height : %d\n"
+ " image width : %d\n",
+ nImages, im_H, im_W);
+
+ mexPrintf("Feature represenation:\n"
+ " base window height : %d\n"
+ " base window width : %d\n"
+ " nPyramids : %d\n"
+ " # of virtual examples : %d\n"
+ " # of features per example : %d\n",
+ win_H, win_W, nPyramids, nData, nDim);
+ }
+
+ num_of_Cs = LIBOCAS_MAX(mxGetN(prhs[7]),mxGetM(prhs[7]));
+ if(num_of_Cs == 1)
+ {
+ C = (double)mxGetScalar(prhs[7]);
+ }
+ else
+ {
+ vec_C = (double*)mxGetPr(prhs[7]);
+ }
+
+ if(nrhs >= 9)
+ Method = (uint32_t)mxGetScalar(prhs[8]);
+ else
+ Method = DEFAULT_METHOD;
+
+ if(nrhs >= 10)
+ TolRel = (double)mxGetScalar(prhs[9]);
+ else
+ TolRel = DEFAULT_TOLREL;
+
+ if(nrhs >= 11)
+ TolAbs = (double)mxGetScalar(prhs[10]);
+ else
+ TolAbs = DEFAULT_TOLABS;
+
+ if(nrhs >= 12)
+ QPBound = (double)mxGetScalar(prhs[11]);
+ else
+ QPBound = DEFAULT_QPVALUE;
+
+ if(nrhs >= 13)
+ BufSize = (uint32_t)mxGetScalar(prhs[12]);
+ else
+ BufSize = DEFAULT_BUFSIZE;
+
+ if(num_of_Cs > 1 && num_of_Cs < nData)
+ mexErrMsgTxt("Length of the vector C less than the number of examples.");
+
+ if(nrhs >= 14 && !mxIsInf(mxGetScalar(prhs[13])))
+ {
+ if((uint32_t)mxGetScalar(prhs[13]) < 0 || (uint32_t)mxGetScalar(prhs[13]) > nData)
+ mexErrMsgTxt("Improper number of examples; must be > 0 and < max number of virtual example.\n");
+
+ nData = (uint32_t)mxGetScalar(prhs[13]);
+ mexPrintf(" # of examples set to : %d\n",nData);
+ }
+
+ if(nrhs >= 15)
+ MaxTime = (double)mxGetScalar(prhs[14]);
+ else
+ MaxTime = DEFAULT_MAXTIME;
+
+ /*----------------------------------------------------------------
+ Print setting
+ -------------------------------------------------------------------*/
+ if(verb)
+ {
+ mexPrintf("SVM setting:\n");
+
+ if( num_of_Cs == 1)
+ mexPrintf(" C : %f\n", C);
+ else
+ mexPrintf(" C : different for each example\n");
+
+ mexPrintf(" bias : %.0f\n"
+ " # of examples : %d\n"
+ " solver : %d\n"
+ " cache size : %d\n"
+ " TolAbs : %f\n"
+ " TolRel : %f\n"
+ " QPValue : %f\n"
+ " MaxTime : %f [s]\n"
+ " verb : %d\n",
+ X0, nData, Method,BufSize,TolAbs,TolRel, QPBound, MaxTime, verb);
+ }
+
+ /* learned weight vector */
+ plhs[0] = (mxArray*)mxCreateDoubleMatrix(nDim,1,mxREAL);
+ W = (double*)mxGetPr(plhs[0]);
+ if(W == NULL) mexErrMsgTxt("Not enough memory for vector W.");
+
+ oldW = (double*)mxCalloc(nDim,sizeof(double));
+ if(oldW == NULL) mexErrMsgTxt("Not enough memory for vector oldW.");
+
+ W0 = 0;
+ oldW0 = 0;
+
+ A0 = mxCalloc(BufSize,sizeof(A0[0]));
+ if(A0 == NULL) mexErrMsgTxt("Not enough memory for vector A0.");
+
+ /* allocate buffer for computing cutting plane */
+/* new_a = (double*)mxCalloc(nDim,sizeof(double));*/
+ new_a = mxCalloc(nDim,sizeof(new_a[0]));
+ if(new_a == NULL)
+ mexErrMsgTxt("Not enough memory for auxciliary cutting plane buffer new_a.");
+
+ if(num_of_Cs > 1)
+ {
+ for(i=0; i < nData; i++)
+ data_y[i] = data_y[i]*vec_C[i];
+ }
+
+ /* !!!!!!!!!!!!
+ ptr = mxGetPr(data_X);
+ for(i=0; i < nData; i++) {
+ for(j=0; j < nDim; j++ ) {
+ ptr[LIBOCAS_INDEX(j,i,nDim)] = ptr[LIBOCAS_INDEX(j,i,nDim)]*data_y[i];
+ }
+ }
+ */
+
+ /* init cutting plane buffer */
+/* full_A = mxCalloc(BufSize*nDim,sizeof(double));*/
+ full_A = mxCalloc(BufSize*nDim,sizeof(full_A[0]));
+ if( full_A == NULL )
+ mexErrMsgTxt("Not enough memory for cutting plane buffer full_A.");
+
+
+ if(verb)
+ {
+ mexPrintf("Memory occupancy:\n"
+ " raw images : %.2f MB\n"
+ " CP buffer : %.2f MB\n"
+ " parameter vector W : %.2f MB\n",
+ (double)nImages*im_H*im_W/(1024*1024),
+ (double)sizeof(full_A[0])*BufSize*nDim/(1024*1024),
+ (double)sizeof(W[0])*nDim/(1024*1024));
+ }
+
+ init_time=get_time()-init_time;
+
+ if(verb)
+ {
+ mexPrintf("Starting optimization:\n");
+
+ if(num_of_Cs == 1)
+ ocas = svm_ocas_solver( C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &full_compute_W, &full_update_W, &full_add_new_cut,
+ &full_compute_output, &qsort_data, &ocas_print, 0);
+ else
+ ocas = svm_ocas_solver_difC( vec_C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &full_compute_W, &full_update_W, &full_add_new_cut,
+ &full_compute_output, &qsort_data, &ocas_print, 0);
+ }
+ else
+ {
+ if(num_of_Cs == 1)
+ ocas = svm_ocas_solver( C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &full_compute_W, &full_update_W, &full_add_new_cut,
+ &full_compute_output, &qsort_data, &ocas_print_null, 0);
+ else
+ ocas = svm_ocas_solver_difC( vec_C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &full_compute_W, &full_update_W, &full_add_new_cut,
+ &full_compute_output, &qsort_data, &ocas_print_null, 0);
+ }
+
+
+ if(verb)
+ {
+ mexPrintf("Stopping condition: ");
+ switch( ocas.exitflag )
+ {
+ case 1: mexPrintf("1-Q_D/Q_P <= TolRel(=%f) satisfied.\n", TolRel); break;
+ case 2: mexPrintf("Q_P-Q_D <= TolAbs(=%f) satisfied.\n", TolAbs); break;
+ case 3: mexPrintf("Q_P <= QPBound(=%f) satisfied.\n", QPBound); break;
+ case 4: mexPrintf("Optimization time (=%f) >= MaxTime(=%f).\n", ocas.ocas_time, MaxTime); break;
+ case -1: mexPrintf("Has not converged!\n" ); break;
+ case -2: mexPrintf("Not enough memory for the solver.\n" ); break;
+ }
+ }
+
+ total_time=get_time()-total_time;
+ if(verb)
+ {
+ mexPrintf("Timing statistics:\n"
+ " init_time : %f[s]\n"
+ " qp_solver_time : %f[s]\n"
+ " sort_time : %f[s]\n"
+ " output_time : %f[s]\n"
+ " add_time : %f[s]\n"
+ " w_time : %f[s]\n"
+ " print_time : %f[s]\n"
+ " ocas_time : %f[s]\n"
+ " total_time : %f[s]\n",
+ init_time, ocas.qp_solver_time, ocas.sort_time, ocas.output_time,
+ ocas.add_time, ocas.w_time, ocas.print_time, ocas.ocas_time, total_time);
+
+ mexPrintf("Training error: %.4f%%\n", 100*(double)ocas.trn_err/(double)nData);
+ }
+
+ if(num_of_Cs > 1)
+ {
+ for(i=0; i < nData; i++)
+ data_y[i] = data_y[i]/vec_C[i];
+ }
+
+ plhs[1] = mxCreateDoubleScalar( W0 );
+
+ const char *field_names[] = {"nTrnErrors","Q_P","Q_D","nIter","nCutPlanes","exitflag",
+ "init_time","output_time","sort_time","qp_solver_time","add_time",
+ "w_time","print_time","ocas_time","total_time"};
+ mwSize dims[2] = {1,1};
+
+ plhs[2] = mxCreateStructArray(2, dims, (sizeof(field_names)/sizeof(*field_names)), field_names);
+
+ mxSetField(plhs[2],0,"nIter",mxCreateDoubleScalar((double)ocas.nIter));
+ mxSetField(plhs[2],0,"nCutPlanes",mxCreateDoubleScalar((double)ocas.nCutPlanes));
+ mxSetField(plhs[2],0,"nTrnErrors",mxCreateDoubleScalar(ocas.trn_err));
+ mxSetField(plhs[2],0,"Q_P",mxCreateDoubleScalar(ocas.Q_P));
+ mxSetField(plhs[2],0,"Q_D",mxCreateDoubleScalar(ocas.Q_D));
+ mxSetField(plhs[2],0,"init_time",mxCreateDoubleScalar(init_time));
+ mxSetField(plhs[2],0,"output_time",mxCreateDoubleScalar(ocas.output_time));
+ mxSetField(plhs[2],0,"sort_time",mxCreateDoubleScalar(ocas.sort_time));
+ mxSetField(plhs[2],0,"qp_solver_time",mxCreateDoubleScalar(ocas.qp_solver_time));
+ mxSetField(plhs[2],0,"add_time",mxCreateDoubleScalar(ocas.add_time));
+ mxSetField(plhs[2],0,"w_time",mxCreateDoubleScalar(ocas.w_time));
+ mxSetField(plhs[2],0,"print_time",mxCreateDoubleScalar(ocas.print_time));
+ mxSetField(plhs[2],0,"ocas_time",mxCreateDoubleScalar(ocas.ocas_time));
+ mxSetField(plhs[2],0,"total_time",mxCreateDoubleScalar(total_time));
+ mxSetField(plhs[2],0,"exitflag",mxCreateDoubleScalar((double)ocas.exitflag));
+
+ return;
+}
+
diff --git a/svmocas_mex.c b/svmocas_mex.c
new file mode 100644
index 0000000..3e489b0
--- /dev/null
+++ b/svmocas_mex.c
@@ -0,0 +1,489 @@
+/*=================================================================================
+ * svmocas_mex.c: Matlab MEX interface for OCAS solver training the linear SVM classifiers.
+ *
+ * Synopsis:
+ * [W,W0,stat] = svmocas(X,X0,y,C,Method,TolRel,TolAbs,QPBound,BufSize,nData,MaxTime,verb)
+ * [W,W0,stat] = svmocas(data_file,X0,C,Method,TolRel,TolAbs,QPBound,BufSize,nData,MaxTime,verb)
+ *
+ * See svmocas.m for more help.
+ *
+ * Copyright (C) 2008, 2009 Vojtech Franc, xfrancv at cmp.felk.cvut.cz
+ * Soeren Sonnenburg, soeren.sonnenburg at first.fraunhofer.de
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation;
+ *======================================================================================*/
+
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
+#include <mex.h>
+
+#include "libocas.h"
+#include "ocas_helper.h"
+
+#define DEFAULT_METHOD 1
+#define DEFAULT_TOLREL 0.01
+#define DEFAULT_TOLABS 0.0
+#define DEFAULT_QPVALUE 0.0
+#define DEFAULT_BUFSIZE 2000
+#define DEFAULT_MAXTIME mxGetInf()
+#define DEFAULT_VERB 1
+
+/*======================================================================
+ Main code plus interface to Matlab.
+========================================================================*/
+
+void mexFunction( int nlhs, mxArray *plhs[],int nrhs, const mxArray *prhs[] )
+{
+ double C, TolRel, TolAbs, QPBound, trn_err, MaxTime;
+ double *vec_C;
+ double *ptr;
+ uint32_t num_of_Cs;
+ uint32_t i, j, BufSize;
+ uint16_t Method;
+ int verb;
+ ocas_return_value_T ocas;
+
+ /* timing variables */
+ double init_time;
+ double total_time;
+
+ total_time = get_time();
+ init_time = total_time;
+
+ if(nrhs < 1)
+ mexErrMsgTxt("Improper number of input arguments.");
+
+ /* get input arguments */
+ if(mxIsChar(prhs[0]) == false)
+ {
+ /* [W,W0,stat] = svmocas_mex(X,X0,y,C,Method,TolRel,TolAbs,QPBound,BufSize,nData,MaxTime); */
+
+ if(nrhs < 4 || nrhs > 12)
+ mexErrMsgTxt("Improper number of input arguments.");
+
+ if(nrhs >= 12)
+ verb = (int)mxGetScalar(prhs[11]);
+ else
+ verb = DEFAULT_VERB;
+
+
+ data_X = (mxArray*)prhs[0];
+ if (!(mxIsDouble(data_X)))
+ mexErrMsgTxt("Input argument X must be of type double.");
+
+ if (mxGetNumberOfDimensions(data_X) != 2)
+ mexErrMsgTxt("Input argument X must be two dimensional");
+
+ X0 = mxGetScalar(prhs[1]);
+ data_y = (double*)mxGetPr(prhs[2]);
+
+ if(LIBOCAS_MAX(mxGetM(prhs[2]),mxGetN(prhs[2])) != mxGetN(prhs[0]))
+ mexErrMsgTxt("Length of vector y must equl to the number of columns of matrix X.");
+
+ nDim = mxGetM(prhs[0]);
+
+ if(verb)
+ {
+ mexPrintf("Input data statistics:\n"
+ " # of examples : %d\n"
+ " dimensionality : %d\n",
+ mxGetN(data_X), nDim);
+
+ if( mxIsSparse(data_X)== true )
+ mexPrintf(" density : %.2f%%\n",
+ 100.0*(double)mxGetNzmax(data_X)/((double)nDim*(double)(mxGetN(data_X))));
+ else
+ mexPrintf(" density : 100%% (full)\n");
+ }
+
+
+ num_of_Cs = LIBOCAS_MAX(mxGetN(prhs[3]),mxGetM(prhs[3]));
+ if(num_of_Cs == 1)
+ {
+ C = (double)mxGetScalar(prhs[3]);
+ }
+ else
+ {
+ vec_C = (double*)mxGetPr(prhs[3]);
+ }
+
+ if(nrhs >= 5)
+ Method = (uint32_t)mxGetScalar(prhs[4]);
+ else
+ Method = DEFAULT_METHOD;
+
+ if(nrhs >= 6)
+ TolRel = (double)mxGetScalar(prhs[5]);
+ else
+ TolRel = DEFAULT_TOLREL;
+
+ if(nrhs >= 7)
+ TolAbs = (double)mxGetScalar(prhs[6]);
+ else
+ TolAbs = DEFAULT_TOLABS;
+
+ if(nrhs >= 8)
+ QPBound = (double)mxGetScalar(prhs[7]);
+ else
+ QPBound = DEFAULT_QPVALUE;
+
+ if(nrhs >= 9)
+ BufSize = (uint32_t)mxGetScalar(prhs[8]);
+ else
+ BufSize = DEFAULT_BUFSIZE;
+
+ if(nrhs >= 10 && mxIsInf(mxGetScalar(prhs[9])) == false)
+ nData = (uint32_t)mxGetScalar(prhs[9]);
+ else
+ nData = mxGetN(data_X);
+
+ if(nData < 1 || nData > mxGetN(prhs[0]))
+ mexErrMsgTxt("Improper value of argument nData.");
+
+ if(num_of_Cs > 1 && num_of_Cs < nData)
+ mexErrMsgTxt("Length of the vector C less than the number of examples.");
+
+ if(nrhs >= 11)
+ MaxTime = (double)mxGetScalar(prhs[10]);
+ else
+ MaxTime = DEFAULT_MAXTIME;
+ }
+ else
+ {
+ /* [W,W0,stat] = svmocas_mex(svmlight_data_file,X0,C,Method,TolRel,TolAbs,QPBound,BufSize,nData,MaxTime); */
+ char *fname;
+ int fname_len;
+
+ if(nrhs < 3 || nrhs > 11)
+ mexErrMsgTxt("Improper number of input arguments.");
+
+ if(nrhs >= 11)
+ verb = (int)mxGetScalar(prhs[10]);
+ else
+ verb = DEFAULT_VERB;
+
+ if(!mxIsChar(prhs[0]))
+ mexErrMsgTxt("First input argument must be of type string.");
+
+ fname_len = mxGetNumberOfElements(prhs[0]) + 1;
+ fname = mxCalloc(fname_len, sizeof(char));
+
+ if (mxGetString(prhs[0], fname, fname_len) != 0)
+ mexErrMsgTxt("Could not convert first input argument to string.");
+
+ if( load_svmlight_file(fname,verb) == -1 || data_X == NULL || data_y == NULL)
+ mexErrMsgTxt("Cannot load input file.");
+
+ nDim = mxGetM(data_X);
+ X0 = mxGetScalar(prhs[1]);
+
+/* C = (double)mxGetScalar(prhs[2]);*/
+ num_of_Cs = LIBOCAS_MAX(mxGetN(prhs[2]),mxGetM(prhs[2]));
+ if(num_of_Cs == 1)
+ {
+ C = (double)mxGetScalar(prhs[2]);
+ }
+ else
+ {
+ vec_C = (double*)mxGetPr(prhs[2]);
+ }
+
+ if(verb)
+ mexPrintf("Input data statistics:\n"
+ " # of examples : %d\n"
+ " dimensionality : %d\n"
+ " density : %.2f%%\n",
+ mxGetN(data_X), nDim, 100.0*(double)mxGetNzmax(data_X)/((double)nDim*(double)(mxGetN(data_X))));
+
+ if(nrhs >= 4)
+ Method = (uint32_t)mxGetScalar(prhs[3]);
+ else
+ Method = DEFAULT_METHOD;
+
+ if(nrhs >= 5)
+ TolRel = (double)mxGetScalar(prhs[4]);
+ else
+ TolRel = DEFAULT_TOLREL;
+
+ if(nrhs >= 6)
+ TolAbs = (double)mxGetScalar(prhs[5]);
+ else
+ TolAbs = DEFAULT_TOLABS;
+
+ if(nrhs >= 7)
+ QPBound = (double)mxGetScalar(prhs[6]);
+ else
+ QPBound = DEFAULT_QPVALUE;
+
+ if(nrhs >= 8)
+ BufSize = (uint32_t)mxGetScalar(prhs[7]);
+ else
+ BufSize = DEFAULT_BUFSIZE;
+
+ if(nrhs >= 9 && mxIsInf(mxGetScalar(prhs[8])) == false)
+ nData = (uint32_t)mxGetScalar(prhs[8]);
+ else
+ nData = mxGetN(data_X);
+
+ if(nData < 1 || nData > mxGetN(data_X))
+ mexErrMsgTxt("Improper value of argument nData.");
+
+ if(num_of_Cs > 1 && num_of_Cs < nData)
+ mexErrMsgTxt("Length of the vector C less than the number of examples.");
+
+ if(nrhs >= 10)
+ MaxTime = (double)mxGetScalar(prhs[9]);
+ else
+ MaxTime = DEFAULT_MAXTIME;
+
+ }
+
+
+ /*----------------------------------------------------------------
+ Print setting
+ -------------------------------------------------------------------*/
+ if(verb)
+ {
+ mexPrintf("Setting:\n");
+
+ if( num_of_Cs == 1)
+ mexPrintf(" C : %f\n", C);
+ else
+ mexPrintf(" C : different for each example\n");
+
+ mexPrintf(" bias : %.0f\n"
+ " # of examples : %d\n"
+ " solver : %d\n"
+ " cache size : %d\n"
+ " TolAbs : %f\n"
+ " TolRel : %f\n"
+ " QPValue : %f\n"
+ " MaxTime : %f [s]\n"
+ " verb : %d\n",
+ X0, nData, Method,BufSize,TolAbs,TolRel, QPBound, MaxTime, verb);
+ }
+
+ /* learned weight vector */
+ plhs[0] = (mxArray*)mxCreateDoubleMatrix(nDim,1,mxREAL);
+ W = (double*)mxGetPr(plhs[0]);
+ if(W == NULL) mexErrMsgTxt("Not enough memory for vector W.");
+
+ oldW = (double*)mxCalloc(nDim,sizeof(double));
+ if(oldW == NULL) mexErrMsgTxt("Not enough memory for vector oldW.");
+
+ W0 = 0;
+ oldW0 = 0;
+
+ A0 = mxCalloc(BufSize,sizeof(A0[0]));
+ if(A0 == NULL) mexErrMsgTxt("Not enough memory for vector A0.");
+
+ /* allocate buffer for computing cutting plane */
+ new_a = (double*)mxCalloc(nDim,sizeof(double));
+ if(new_a == NULL)
+ mexErrMsgTxt("Not enough memory for auxciliary cutting plane buffer new_a.");
+
+
+ if(num_of_Cs > 1)
+ {
+ for(i=0; i < nData; i++)
+ data_y[i] = data_y[i]*vec_C[i];
+ }
+
+
+ if( mxIsSparse(data_X)== true ) {
+
+ /* for i=1:nData, X(:,i) = X(:,i)*y(i); end*/
+ for(i=0; i < nData; i++)
+ mul_sparse_col(data_y[i], data_X, i);
+
+
+ /* init cutting plane buffer */
+ sparse_A.nz_dims = mxCalloc(BufSize,sizeof(uint32_t));
+ sparse_A.index = mxCalloc(BufSize,sizeof(sparse_A.index[0]));
+ sparse_A.value = mxCalloc(BufSize,sizeof(sparse_A.value[0]));
+ if(sparse_A.nz_dims == NULL || sparse_A.index == NULL || sparse_A.value == NULL)
+ mexErrMsgTxt("Not enough memory for cutting plane buffer sparse_A.");
+
+ init_time=get_time()-init_time;
+
+ if(verb)
+ {
+ mexPrintf("Starting optimization:\n");
+
+ if(num_of_Cs == 1)
+ {
+ ocas = svm_ocas_solver( C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &sparse_compute_W, &sparse_update_W, &sparse_add_new_cut,
+ &sparse_compute_output, &qsort_data, &ocas_print, 0);
+ }
+ else
+ {
+ ocas = svm_ocas_solver_difC( vec_C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &sparse_compute_W, &sparse_update_W, &sparse_add_new_cut,
+ &sparse_compute_output, &qsort_data, &ocas_print, 0);
+ }
+
+ }
+ else
+ {
+ if(num_of_Cs == 1)
+ {
+ ocas = svm_ocas_solver( C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &sparse_compute_W, &sparse_update_W, &sparse_add_new_cut,
+ &sparse_compute_output, &qsort_data, &ocas_print_null, 0);
+ }
+ else
+ {
+ ocas = svm_ocas_solver_difC( vec_C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &sparse_compute_W, &sparse_update_W, &sparse_add_new_cut,
+ &sparse_compute_output, &qsort_data, &ocas_print_null, 0);
+ }
+ }
+
+ }
+ else
+ {
+
+ ptr = mxGetPr(data_X);
+ for(i=0; i < nData; i++) {
+ for(j=0; j < nDim; j++ ) {
+ ptr[LIBOCAS_INDEX(j,i,nDim)] = ptr[LIBOCAS_INDEX(j,i,nDim)]*data_y[i];
+ }
+ }
+
+ /* init cutting plane buffer */
+ full_A = mxCalloc(BufSize*nDim,sizeof(double));
+ if( full_A == NULL )
+ mexErrMsgTxt("Not enough memory for cutting plane buffer full_A.");
+
+ init_time=get_time()-init_time;
+
+ if(verb)
+ {
+ mexPrintf("Starting optimization:\n");
+
+ if(num_of_Cs == 1)
+ ocas = svm_ocas_solver( C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &full_compute_W, &full_update_W, &full_add_new_cut,
+ &full_compute_output, &qsort_data, &ocas_print, 0);
+ else
+ ocas = svm_ocas_solver_difC( vec_C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &full_compute_W, &full_update_W, &full_add_new_cut,
+ &full_compute_output, &qsort_data, &ocas_print, 0);
+
+ }
+ else
+ {
+ if(num_of_Cs == 1)
+ ocas = svm_ocas_solver( C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &full_compute_W, &full_update_W, &full_add_new_cut,
+ &full_compute_output, &qsort_data, &ocas_print_null, 0);
+ else
+ ocas = svm_ocas_solver_difC( vec_C, nData, TolRel, TolAbs, QPBound, MaxTime,BufSize, Method,
+ &full_compute_W, &full_update_W, &full_add_new_cut,
+ &full_compute_output, &qsort_data, &ocas_print_null, 0);
+ }
+ }
+
+ if(verb)
+ {
+ mexPrintf("Stopping condition: ");
+ switch( ocas.exitflag )
+ {
+ case 1: mexPrintf("1-Q_D/Q_P <= TolRel(=%f) satisfied.\n", TolRel); break;
+ case 2: mexPrintf("Q_P-Q_D <= TolAbs(=%f) satisfied.\n", TolAbs); break;
+ case 3: mexPrintf("Q_P <= QPBound(=%f) satisfied.\n", QPBound); break;
+ case 4: mexPrintf("Optimization time (=%f) >= MaxTime(=%f).\n", ocas.ocas_time, MaxTime); break;
+ case -1: mexPrintf("Has not converged!\n" ); break;
+ case -2: mexPrintf("Not enough memory for the solver.\n" ); break;
+ }
+ }
+
+ total_time=get_time()-total_time;
+ if(verb)
+ {
+ mexPrintf("Timing statistics:\n"
+ " init_time : %f[s]\n"
+ " qp_solver_time : %f[s]\n"
+ " sort_time : %f[s]\n"
+ " output_time : %f[s]\n"
+ " add_time : %f[s]\n"
+ " w_time : %f[s]\n"
+ " print_time : %f[s]\n"
+ " ocas_time : %f[s]\n"
+ " total_time : %f[s]\n",
+ init_time, ocas.qp_solver_time, ocas.sort_time, ocas.output_time,
+ ocas.add_time, ocas.w_time, ocas.print_time, ocas.ocas_time, total_time);
+
+ mexPrintf("Training error: %.4f%%\n", 100*(double)ocas.trn_err/(double)nData);
+ }
+
+ /* multiply data ba labels as it was at the begining */
+ if( mxIsSparse(data_X)== true ) {
+ /* for i=1:nData, X(:,i) = X(:,i)*y(i); end*/
+ for(i=0; i < nData; i++)
+ {
+ mul_sparse_col(1/data_y[i], data_X, i);
+ }
+ }
+ else
+ {
+ ptr = mxGetPr(data_X);
+ for(i=0; i < nData; i++) {
+ for(j=0; j < nDim; j++ ) {
+ ptr[LIBOCAS_INDEX(j,i,nDim)] = ptr[LIBOCAS_INDEX(j,i,nDim)]/data_y[i];
+ }
+ }
+ }
+
+ if(num_of_Cs > 1)
+ {
+ for(i=0; i < nData; i++)
+ data_y[i] = data_y[i]/vec_C[i];
+ }
+
+
+ plhs[1] = mxCreateDoubleScalar( W0 );
+
+ /* return ocas optimizer statistics */
+ /* typedef struct {
+ uint32_t nIter;
+ uint32_t nCutPlanes;
+ double trn_err;
+ double Q_P;
+ double Q_D;
+ double output_time;
+ double sort_time;
+ double solver_time;
+ int8_t exitflag;
+ } ocas_return_value_T; */
+
+ const char *field_names[] = {"nTrnErrors","Q_P","Q_D","nIter","nCutPlanes","exitflag",
+ "init_time","output_time","sort_time","qp_solver_time","add_time",
+ "w_time","print_time","ocas_time","total_time"};
+ mwSize dims[2] = {1,1};
+
+ plhs[2] = mxCreateStructArray(2, dims, (sizeof(field_names)/sizeof(*field_names)), field_names);
+
+ mxSetField(plhs[2],0,"nIter",mxCreateDoubleScalar((double)ocas.nIter));
+ mxSetField(plhs[2],0,"nCutPlanes",mxCreateDoubleScalar((double)ocas.nCutPlanes));
+ mxSetField(plhs[2],0,"nTrnErrors",mxCreateDoubleScalar(ocas.trn_err));
+ mxSetField(plhs[2],0,"Q_P",mxCreateDoubleScalar(ocas.Q_P));
+ mxSetField(plhs[2],0,"Q_D",mxCreateDoubleScalar(ocas.Q_D));
+ mxSetField(plhs[2],0,"init_time",mxCreateDoubleScalar(init_time));
+ mxSetField(plhs[2],0,"output_time",mxCreateDoubleScalar(ocas.output_time));
+ mxSetField(plhs[2],0,"sort_time",mxCreateDoubleScalar(ocas.sort_time));
+ mxSetField(plhs[2],0,"qp_solver_time",mxCreateDoubleScalar(ocas.qp_solver_time));
+ mxSetField(plhs[2],0,"add_time",mxCreateDoubleScalar(ocas.add_time));
+ mxSetField(plhs[2],0,"w_time",mxCreateDoubleScalar(ocas.w_time));
+ mxSetField(plhs[2],0,"print_time",mxCreateDoubleScalar(ocas.print_time));
+ mxSetField(plhs[2],0,"ocas_time",mxCreateDoubleScalar(ocas.ocas_time));
+ mxSetField(plhs[2],0,"total_time",mxCreateDoubleScalar(total_time));
+ mxSetField(plhs[2],0,"exitflag",mxCreateDoubleScalar((double)ocas.exitflag));
+
+ return;
+}
+
diff --git a/svmocas_parseout.m b/svmocas_parseout.m
new file mode 100644
index 0000000..fc4a9c7
--- /dev/null
+++ b/svmocas_parseout.m
@@ -0,0 +1,131 @@
+function [iter,timing,trn_err] = svmocas_parseout(fname)
+% SVMOCAS_PARSEOUT parses text output of SVMOCAS solver.
+%
+% Synopsis:
+% [iter,timing,trn_err] = svmocas_parseout(fname)
+%
+% Inputs:
+% fname [string] file which contains OCAS output; e.g. created by running
+%
+% ./svmocas -c 10 -b 1 riply_trn.light ocas.model > out.txt
+%
+% Outputs:
+% iter [1 x nIter (struct)] progress info printed by OCAS solver:
+% .time [1x1] runtime
+% .Q_P [1x1] primal objective value
+% .Q_D [1x1] dual (reduced) objective value
+% .trn_err [1x1] training error
+% .nza [1x1] number of active cutting planes
+% .qpf [1x1] return flag of inner QP solver
+%
+% timing [struct] Timing statistics.
+% trn_err [1x1] Training error.
+%
+% Example:
+% iter = svmocas_parseout('out.txt');
+% figure; hold on;
+% plot([iter.time],[iter.Q_P]);
+% plot([iter.time],[iter.Q_D],'r')
+%
+
+
+lines = textread(fname,'%s','delimiter','\n','bufsize',100000);
+
+from = strmatch('Starting optimization:',lines,'exact')+1;
+to = strmatch('Stopping condition:',lines)-1;
+
+for i=from:to
+ cnt = i-from+1;
+ l = lines{i};
+
+ b = strfind(l,'tim=');
+ e = min(strfind(l(b:end),','));
+ iter(cnt).time = str2num(l(b+length('tim='):b+e-2));
+
+ b = strfind(l,'Q_P=');
+ e = min(strfind(l(b:end),','));
+ iter(cnt).Q_P = str2num(l(b+length('Q_P='):b+e-2));
+
+ b = strfind(l,'Q_D=');
+ e = min(strfind(l(b:end),','));
+ iter(cnt).Q_D = str2num(l(b+length('Q_D='):b+e-2));
+
+ if i > from
+ b = strfind(l,'nza');
+ e = min(strfind(l(b:end),','));
+ iter(cnt).nza = str2num(l(b+length('nza'):b+e-2));
+
+ b = strfind(l,'err');
+ e = min(strfind(l(b:end),','));
+ iter(cnt).trn_err = str2num(l(b+length('err'):b+e-2));
+
+ b = strfind(l,'qpf');
+ iter(cnt).qpf = str2num(l(b+length('nza'):end));
+ else
+ iter(cnt).nza = [];
+ iter(cnt).trn_err = [];
+ iter(cnt).qpf = [];
+ end
+end
+
+i = strmatch('load_time',lines);
+if isempty(i)
+ i = strmatch('init_time',lines);
+end
+l = lines{i};
+b = strfind(l,':');
+e = min(strfind(l(b:end),'[s]'));
+timing.load_time = str2num(l(b+length(':'):b+e-2));
+
+i = strmatch('qp_solver_time',lines);
+l = lines{i};
+b = strfind(l,':');
+e = min(strfind(l(b:end),'[s]'));
+timing.qp_solver_time = str2num(l(b+length(':'):b+e-2));
+
+i = strmatch('sort_time',lines);
+l = lines{i};
+b = strfind(l,':');
+e = min(strfind(l(b:end),'[s]'));
+timing.sort_time = str2num(l(b+length(':'):b+e-2));
+
+i = strmatch('output_time',lines);
+l = lines{i};
+b = strfind(l,':');
+e = min(strfind(l(b:end),'[s]'));
+timing.output_time = str2num(l(b+length(':'):b+e-2));
+
+i = strmatch('add_time',lines);
+l = lines{i};
+b = strfind(l,':');
+e = min(strfind(l(b:end),'[s]'));
+timing.add_time = str2num(l(b+length(':'):b+e-2));
+
+i = strmatch('w_time',lines);
+l = lines{i};
+b = strfind(l,':');
+e = min(strfind(l(b:end),'[s]'));
+timing.w_time = str2num(l(b+length(':'):b+e-2));
+
+i = strmatch('ocas_time',lines);
+l = lines{i};
+b = strfind(l,':');
+e = min(strfind(l(b:end),'[s]'));
+timing.ocas_time = str2num(l(b+length(':'):b+e-2));
+
+i = strmatch('total_time',lines);
+l = lines{i};
+b = strfind(l,':');
+e = min(strfind(l(b:end),'[s]'));
+timing.total_time = str2num(l(b+length(':'):b+e-2));
+
+i = strmatch('Training error:',lines);
+l = lines{i};
+b = strfind(l,':');
+e = min(strfind(l(b:end),'%'));
+trn_err = str2num(l(b+length(':'):b+e-2))/100;
+
+
+
+return;
+% EOF
\ No newline at end of file
diff --git a/version.h b/version.h
new file mode 100644
index 0000000..ed306ef
--- /dev/null
+++ b/version.h
@@ -0,0 +1,3 @@
+/* this text will be printed in all programs */
+
+#define OCAS_VERSION "v0.93, (C) 2008, 2009, 2010 Vojtech Franc, Soeren Sonnenburg"
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/libocas.git
More information about the debian-science-commits
mailing list