diff --git a/.gitattributes b/.gitattributes
index a6344aac8c09253b3b630fb776ae94478aa0275b..8ebafa4ce265bf4b486ad8e9ca4028492d86dc3c 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -33,3 +33,7 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text
*tfevents* filter=lfs diff=lfs merge=lfs -text
+Yolov5-Deepsort/deep_sort/deep_sort/deep/checkpoint/ckpt.t7 filter=lfs diff=lfs merge=lfs -text
+Yolov5-Deepsort/mot.mp4 filter=lfs diff=lfs merge=lfs -text
+Yolov5-Deepsort/niuzi.mp4 filter=lfs diff=lfs merge=lfs -text
+Yolov5-Deepsort/result.mp4 filter=lfs diff=lfs merge=lfs -text
diff --git a/Yolov5-Deepsort/AIDetector_pytorch.py b/Yolov5-Deepsort/AIDetector_pytorch.py
new file mode 100644
index 0000000000000000000000000000000000000000..f1818d8dcba71cf0f0bf75065f214bb620c28029
--- /dev/null
+++ b/Yolov5-Deepsort/AIDetector_pytorch.py
@@ -0,0 +1,74 @@
+import torch
+import numpy as np
+from models.experimental import attempt_load
+from utils.general import non_max_suppression, scale_coords
+from utils.BaseDetector import baseDet
+from utils.torch_utils import select_device
+from utils.datasets import letterbox
+import rich
+
+class Detector(baseDet):
+
+ def __init__(self):
+ super(Detector, self).__init__()
+ self.init_model()
+ self.build_config()
+
+ def init_model(self):
+
+ self.weights = 'weights/yolov5s.pt'
+ self.device = '0' if torch.cuda.is_available() else 'cpu'
+ self.device = select_device(self.device)
+ model = attempt_load(self.weights, map_location=self.device)
+ model.to(self.device).eval()
+ model.half()
+ # torch.save(model, 'test.pt')
+ self.m = model
+ self.names = model.module.names if hasattr(
+ model, 'module') else model.names
+
+ def preprocess(self, img):
+
+ img0 = img.copy()
+ img = letterbox(img, new_shape=self.img_size)[0]
+ img = img[:, :, ::-1].transpose(2, 0, 1)
+ img = np.ascontiguousarray(img)
+ img = torch.from_numpy(img).to(self.device)
+ img = img.half() # 半精度
+ img /= 255.0 # 图像归一化
+ if img.ndimension() == 3:
+ img = img.unsqueeze(0)
+
+ return img0, img
+
+ def detect(self, im):
+
+ im0, img = self.preprocess(im)
+
+ pred = self.m(img, augment=False)[0]
+ #rich.print(pred.shape)
+ pred = pred.float()
+
+
+ pred = non_max_suppression(pred, self.threshold, 0.4)
+ #rich.print((pred))
+
+
+ pred_boxes = []
+ for det in pred:
+
+ if det is not None and len(det):
+ det[:, :4] = scale_coords(
+ img.shape[2:], det[:, :4], im0.shape).round()
+
+ for *x, conf, cls_id in det:
+ lbl = self.names[int(cls_id)]
+ if not lbl in ['person', 'car', 'truck']:
+ continue
+ x1, y1 = int(x[0]), int(x[1])
+ x2, y2 = int(x[2]), int(x[3])
+ pred_boxes.append(
+ (x1, y1, x2, y2, lbl, conf))
+
+ return im, pred_boxes
+
diff --git a/Yolov5-Deepsort/DDM_DeepSort/.gitattributes b/Yolov5-Deepsort/DDM_DeepSort/.gitattributes
new file mode 100644
index 0000000000000000000000000000000000000000..a6344aac8c09253b3b630fb776ae94478aa0275b
--- /dev/null
+++ b/Yolov5-Deepsort/DDM_DeepSort/.gitattributes
@@ -0,0 +1,35 @@
+*.7z filter=lfs diff=lfs merge=lfs -text
+*.arrow filter=lfs diff=lfs merge=lfs -text
+*.bin filter=lfs diff=lfs merge=lfs -text
+*.bz2 filter=lfs diff=lfs merge=lfs -text
+*.ckpt filter=lfs diff=lfs merge=lfs -text
+*.ftz filter=lfs diff=lfs merge=lfs -text
+*.gz filter=lfs diff=lfs merge=lfs -text
+*.h5 filter=lfs diff=lfs merge=lfs -text
+*.joblib filter=lfs diff=lfs merge=lfs -text
+*.lfs.* filter=lfs diff=lfs merge=lfs -text
+*.mlmodel filter=lfs diff=lfs merge=lfs -text
+*.model filter=lfs diff=lfs merge=lfs -text
+*.msgpack filter=lfs diff=lfs merge=lfs -text
+*.npy filter=lfs diff=lfs merge=lfs -text
+*.npz filter=lfs diff=lfs merge=lfs -text
+*.onnx filter=lfs diff=lfs merge=lfs -text
+*.ot filter=lfs diff=lfs merge=lfs -text
+*.parquet filter=lfs diff=lfs merge=lfs -text
+*.pb filter=lfs diff=lfs merge=lfs -text
+*.pickle filter=lfs diff=lfs merge=lfs -text
+*.pkl filter=lfs diff=lfs merge=lfs -text
+*.pt filter=lfs diff=lfs merge=lfs -text
+*.pth filter=lfs diff=lfs merge=lfs -text
+*.rar filter=lfs diff=lfs merge=lfs -text
+*.safetensors filter=lfs diff=lfs merge=lfs -text
+saved_model/**/* filter=lfs diff=lfs merge=lfs -text
+*.tar.* filter=lfs diff=lfs merge=lfs -text
+*.tar filter=lfs diff=lfs merge=lfs -text
+*.tflite filter=lfs diff=lfs merge=lfs -text
+*.tgz filter=lfs diff=lfs merge=lfs -text
+*.wasm filter=lfs diff=lfs merge=lfs -text
+*.xz filter=lfs diff=lfs merge=lfs -text
+*.zip filter=lfs diff=lfs merge=lfs -text
+*.zst filter=lfs diff=lfs merge=lfs -text
+*tfevents* filter=lfs diff=lfs merge=lfs -text
diff --git a/Yolov5-Deepsort/DDM_DeepSort/README.md b/Yolov5-Deepsort/DDM_DeepSort/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..c183fca4d1c01de7a67e192c36ef9ba7a961fbd7
--- /dev/null
+++ b/Yolov5-Deepsort/DDM_DeepSort/README.md
@@ -0,0 +1,13 @@
+---
+title: DDM DeepSort
+emoji: 📚
+colorFrom: yellow
+colorTo: gray
+sdk: gradio
+sdk_version: 5.6.0
+app_file: app.py
+pinned: false
+short_description: 将Drift Diffusion Model 应用于 yolov5 + deepsort
+---
+
+Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
diff --git a/Yolov5-Deepsort/DDM_DeepSort/app.py b/Yolov5-Deepsort/DDM_DeepSort/app.py
new file mode 100644
index 0000000000000000000000000000000000000000..cbffdf1ba490e3ae1fb244c10909cccfa7652993
--- /dev/null
+++ b/Yolov5-Deepsort/DDM_DeepSort/app.py
@@ -0,0 +1,7 @@
+import gradio as gr
+
+def greet(name):
+ return "Hello " + name + "!!"
+
+demo = gr.Interface(fn=greet, inputs="text", outputs="text")
+demo.launch()
\ No newline at end of file
diff --git a/Yolov5-Deepsort/LICENSE b/Yolov5-Deepsort/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..9e419e042146a2ce2e354202d4f7d8e4a3d66f31
--- /dev/null
+++ b/Yolov5-Deepsort/LICENSE
@@ -0,0 +1,674 @@
+GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ 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.
+
+
+ Copyright (C)
+
+ 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 .
+
+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:
+
+ Copyright (C)
+ 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
+.
+
+ 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
+.
\ No newline at end of file
diff --git a/Yolov5-Deepsort/README.md b/Yolov5-Deepsort/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..c63236631bd4d84ba1e5c5072ef1c2dd7e3def5b
--- /dev/null
+++ b/Yolov5-Deepsort/README.md
@@ -0,0 +1,139 @@
+# 本文禁止转载!
+
+
+本文地址:[https://blog.csdn.net/weixin_44936889/article/details/112002152](https://blog.csdn.net/weixin_44936889/article/details/112002152)
+
+# 项目简介:
+使用YOLOv5+Deepsort实现车辆行人追踪和计数,代码封装成一个Detector类,更容易嵌入到自己的项目中。
+
+代码地址(欢迎star):
+
+[https://github.com/Sharpiless/yolov5-deepsort/](https://github.com/Sharpiless/yolov5-deepsort/)
+
+最终效果:
+![在这里插入图片描述](https://github.com/Sharpiless/Yolov5-Deepsort/blob/main/image.png)
+# YOLOv5检测器:
+
+```python
+class Detector(baseDet):
+
+ def __init__(self):
+ super(Detector, self).__init__()
+ self.init_model()
+ self.build_config()
+
+ def init_model(self):
+
+ self.weights = 'weights/yolov5m.pt'
+ self.device = '0' if torch.cuda.is_available() else 'cpu'
+ self.device = select_device(self.device)
+ model = attempt_load(self.weights, map_location=self.device)
+ model.to(self.device).eval()
+ model.half()
+ # torch.save(model, 'test.pt')
+ self.m = model
+ self.names = model.module.names if hasattr(
+ model, 'module') else model.names
+
+ def preprocess(self, img):
+
+ img0 = img.copy()
+ img = letterbox(img, new_shape=self.img_size)[0]
+ img = img[:, :, ::-1].transpose(2, 0, 1)
+ img = np.ascontiguousarray(img)
+ img = torch.from_numpy(img).to(self.device)
+ img = img.half() # 半精度
+ img /= 255.0 # 图像归一化
+ if img.ndimension() == 3:
+ img = img.unsqueeze(0)
+
+ return img0, img
+
+ def detect(self, im):
+
+ im0, img = self.preprocess(im)
+
+ pred = self.m(img, augment=False)[0]
+ pred = pred.float()
+ pred = non_max_suppression(pred, self.threshold, 0.4)
+
+ pred_boxes = []
+ for det in pred:
+
+ if det is not None and len(det):
+ det[:, :4] = scale_coords(
+ img.shape[2:], det[:, :4], im0.shape).round()
+
+ for *x, conf, cls_id in det:
+ lbl = self.names[int(cls_id)]
+ if not lbl in ['person', 'car', 'truck']:
+ continue
+ x1, y1 = int(x[0]), int(x[1])
+ x2, y2 = int(x[2]), int(x[3])
+ pred_boxes.append(
+ (x1, y1, x2, y2, lbl, conf))
+
+ return im, pred_boxes
+
+```
+
+调用 self.detect 方法返回图像和预测结果
+
+# DeepSort追踪器:
+
+```python
+deepsort = DeepSort(cfg.DEEPSORT.REID_CKPT,
+ max_dist=cfg.DEEPSORT.MAX_DIST, min_confidence=cfg.DEEPSORT.MIN_CONFIDENCE,
+ nms_max_overlap=cfg.DEEPSORT.NMS_MAX_OVERLAP, max_iou_distance=cfg.DEEPSORT.MAX_IOU_DISTANCE,
+ max_age=cfg.DEEPSORT.MAX_AGE, n_init=cfg.DEEPSORT.N_INIT, nn_budget=cfg.DEEPSORT.NN_BUDGET,
+ use_cuda=True)
+```
+
+调用 self.update 方法更新追踪结果
+
+# 运行demo:
+
+```bash
+python demo.py
+```
+
+# 训练自己的模型:
+参考我的另一篇博客:
+
+[【小白CV】手把手教你用YOLOv5训练自己的数据集(从Windows环境配置到模型部署)](https://blog.csdn.net/weixin_44936889/article/details/110661862)
+
+训练好后放到 weights 文件夹下
+
+# 调用接口:
+
+## 创建检测器:
+
+```python
+from AIDetector_pytorch import Detector
+
+det = Detector()
+```
+
+## 调用检测接口:
+
+```python
+result = det.feedCap(im)
+```
+
+其中 im 为 BGR 图像
+
+返回的 result 是字典,result['frame'] 返回可视化后的图像
+
+# 联系作者:
+
+> B站:[https://space.bilibili.com/470550823](https://space.bilibili.com/470550823)
+
+> CSDN:[https://blog.csdn.net/weixin_44936889](https://blog.csdn.net/weixin_44936889)
+
+> AI Studio:[https://aistudio.baidu.com/aistudio/personalcenter/thirdview/67156](https://aistudio.baidu.com/aistudio/personalcenter/thirdview/67156)
+
+> Github:[https://github.com/Sharpiless](https://github.com/Sharpiless)
+
+遵循 GNU General Public License v3.0 协议,标明目标检测部分来源:https://github.com/ultralytics/yolov5/
+
+
diff --git a/Yolov5-Deepsort/__pycache__/AIDetector_pytorch.cpython-37.pyc b/Yolov5-Deepsort/__pycache__/AIDetector_pytorch.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f3df550cd00fdac6fc6194a125a0779564e4a21f
Binary files /dev/null and b/Yolov5-Deepsort/__pycache__/AIDetector_pytorch.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/__pycache__/tracker.cpython-37.pyc b/Yolov5-Deepsort/__pycache__/tracker.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..30b3fa8312b1b89000fd7043669defba41cad800
Binary files /dev/null and b/Yolov5-Deepsort/__pycache__/tracker.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/configs/deep_sort.yaml b/Yolov5-Deepsort/deep_sort/configs/deep_sort.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..6105f46a8d155c2dc7ba9cebb7178b4e0ed389a3
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/configs/deep_sort.yaml
@@ -0,0 +1,10 @@
+DEEPSORT:
+ REID_CKPT: "deep_sort/deep_sort/deep/checkpoint/ckpt.t7"
+ MAX_DIST: 0.2
+ MIN_CONFIDENCE: 0.3
+ NMS_MAX_OVERLAP: 0.5
+ MAX_IOU_DISTANCE: 0.7
+ MAX_AGE: 70
+ N_INIT: 3
+ NN_BUDGET: 100
+
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/README.md b/Yolov5-Deepsort/deep_sort/deep_sort/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..e89c9b3ea08691210046fbb9184bf8e44e88f29e
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/deep_sort/README.md
@@ -0,0 +1,3 @@
+# Deep Sort
+
+This is the implemention of deep sort with pytorch.
\ No newline at end of file
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/__init__.py b/Yolov5-Deepsort/deep_sort/deep_sort/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..5fe5d0fd796ec4f46dc4141f5e4f9f5092f7d321
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/deep_sort/__init__.py
@@ -0,0 +1,21 @@
+from .deep_sort import DeepSort
+
+
+__all__ = ['DeepSort', 'build_tracker']
+
+
+def build_tracker(cfg, use_cuda):
+ return DeepSort(cfg.DEEPSORT.REID_CKPT,
+ max_dist=cfg.DEEPSORT.MAX_DIST, min_confidence=cfg.DEEPSORT.MIN_CONFIDENCE,
+ nms_max_overlap=cfg.DEEPSORT.NMS_MAX_OVERLAP, max_iou_distance=cfg.DEEPSORT.MAX_IOU_DISTANCE,
+ max_age=cfg.DEEPSORT.MAX_AGE, n_init=cfg.DEEPSORT.N_INIT, nn_budget=cfg.DEEPSORT.NN_BUDGET, use_cuda=use_cuda)
+
+
+
+
+
+
+
+
+
+
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/__pycache__/__init__.cpython-36.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/__pycache__/__init__.cpython-36.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..dff7fa67ddcea8ac5a16ace2ede46d492353e1d4
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/__pycache__/__init__.cpython-36.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/__pycache__/__init__.cpython-37.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/__pycache__/__init__.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..c92d420992773f89b21cac6794ebfcbbfa90b11e
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/__pycache__/__init__.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/__pycache__/deep_sort.cpython-36.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/__pycache__/deep_sort.cpython-36.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..63745386d533467bb683118b4a63676efb8d1488
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/__pycache__/deep_sort.cpython-36.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/__pycache__/deep_sort.cpython-37.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/__pycache__/deep_sort.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..7d1aefaad1592b8dbfbfd00f9c63686ac0159ddd
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/__pycache__/deep_sort.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep/__init__.py b/Yolov5-Deepsort/deep_sort/deep_sort/deep/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/__init__.cpython-36.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/__init__.cpython-36.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b4828f3eed6acf1d397c430fe01c96be6241247d
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/__init__.cpython-36.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/__init__.cpython-37.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/__init__.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..0d0759879843a1aec1a37b54b3b00c9f10e355a2
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/__init__.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/feature_extractor.cpython-36.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/feature_extractor.cpython-36.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..c933b6ea1cb23e47c04b07eccbbff7c6f770826f
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/feature_extractor.cpython-36.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/feature_extractor.cpython-37.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/feature_extractor.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e9b7bac5f03c644206c5951ea52fa266e2d4c6ba
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/feature_extractor.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/model.cpython-36.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/model.cpython-36.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..05f606cd7d3bca1ecedf98c36bba5a5c2bb544e4
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/model.cpython-36.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/model.cpython-37.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/model.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..a6111abffcd22ea119d6b601a0614959a5777009
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/model.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep/checkpoint/.gitkeep b/Yolov5-Deepsort/deep_sort/deep_sort/deep/checkpoint/.gitkeep
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep/checkpoint/ckpt.t7 b/Yolov5-Deepsort/deep_sort/deep_sort/deep/checkpoint/ckpt.t7
new file mode 100644
index 0000000000000000000000000000000000000000..cd7ceebe86bdfaea299f31994844488295f00ca8
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/deep_sort/deep/checkpoint/ckpt.t7
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:df75ddef42c3d1bda67bc94b093e7ce61de7f75a89f36a8f868a428462198316
+size 46034619
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep/evaluate.py b/Yolov5-Deepsort/deep_sort/deep_sort/deep/evaluate.py
new file mode 100644
index 0000000000000000000000000000000000000000..31c40a46eaea0ad7b6fc50a15e39329b954561ff
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/deep_sort/deep/evaluate.py
@@ -0,0 +1,15 @@
+import torch
+
+features = torch.load("features.pth")
+qf = features["qf"]
+ql = features["ql"]
+gf = features["gf"]
+gl = features["gl"]
+
+scores = qf.mm(gf.t())
+res = scores.topk(5, dim=1)[1][:,0]
+top1correct = gl[res].eq(ql).sum().item()
+
+print("Acc top1:{:.3f}".format(top1correct/ql.size(0)))
+
+
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep/feature_extractor.py b/Yolov5-Deepsort/deep_sort/deep_sort/deep/feature_extractor.py
new file mode 100644
index 0000000000000000000000000000000000000000..0443e37d94dc743e6c4467fab2dcb29f39bb6435
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/deep_sort/deep/feature_extractor.py
@@ -0,0 +1,55 @@
+import torch
+import torchvision.transforms as transforms
+import numpy as np
+import cv2
+import logging
+
+from .model import Net
+
+class Extractor(object):
+ def __init__(self, model_path, use_cuda=True):
+ self.net = Net(reid=True)
+ self.device = "cuda" if torch.cuda.is_available() and use_cuda else "cpu"
+ state_dict = torch.load(model_path, map_location=lambda storage, loc: storage)['net_dict']
+ self.net.load_state_dict(state_dict)
+ logger = logging.getLogger("root.tracker")
+ logger.info("Loading weights from {}... Done!".format(model_path))
+ self.net.to(self.device)
+ self.size = (64, 128)
+ self.norm = transforms.Compose([
+ transforms.ToTensor(),
+ transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),
+ ])
+
+
+
+ def _preprocess(self, im_crops):
+ """
+ TODO:
+ 1. to float with scale from 0 to 1
+ 2. resize to (64, 128) as Market1501 dataset did
+ 3. concatenate to a numpy array
+ 3. to torch Tensor
+ 4. normalize
+ """
+ def _resize(im, size):
+ return cv2.resize(im.astype(np.float32)/255., size)
+
+ im_batch = torch.cat([self.norm(_resize(im, self.size)).unsqueeze(0) for im in im_crops], dim=0).float()
+ return im_batch
+
+
+ def __call__(self, im_crops):
+ im_batch = self._preprocess(im_crops)
+ with torch.no_grad():
+ im_batch = im_batch.to(self.device)
+ features = self.net(im_batch)
+ return features.cpu().numpy()
+
+
+if __name__ == '__main__':
+ img = cv2.imread("demo.jpg")[:,:,(2,1,0)]
+ extr = Extractor("checkpoint/ckpt.t7")
+ feature = extr(img)
+ print(feature.shape)
+
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep/model.py b/Yolov5-Deepsort/deep_sort/deep_sort/deep/model.py
new file mode 100644
index 0000000000000000000000000000000000000000..97e87547cd8e36b1a65e2dc1ad4cfb310f0f4c23
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/deep_sort/deep/model.py
@@ -0,0 +1,104 @@
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+
+class BasicBlock(nn.Module):
+ def __init__(self, c_in, c_out,is_downsample=False):
+ super(BasicBlock,self).__init__()
+ self.is_downsample = is_downsample
+ if is_downsample:
+ self.conv1 = nn.Conv2d(c_in, c_out, 3, stride=2, padding=1, bias=False)
+ else:
+ self.conv1 = nn.Conv2d(c_in, c_out, 3, stride=1, padding=1, bias=False)
+ self.bn1 = nn.BatchNorm2d(c_out)
+ self.relu = nn.ReLU(True)
+ self.conv2 = nn.Conv2d(c_out,c_out,3,stride=1,padding=1, bias=False)
+ self.bn2 = nn.BatchNorm2d(c_out)
+ if is_downsample:
+ self.downsample = nn.Sequential(
+ nn.Conv2d(c_in, c_out, 1, stride=2, bias=False),
+ nn.BatchNorm2d(c_out)
+ )
+ elif c_in != c_out:
+ self.downsample = nn.Sequential(
+ nn.Conv2d(c_in, c_out, 1, stride=1, bias=False),
+ nn.BatchNorm2d(c_out)
+ )
+ self.is_downsample = True
+
+ def forward(self,x):
+ y = self.conv1(x)
+ y = self.bn1(y)
+ y = self.relu(y)
+ y = self.conv2(y)
+ y = self.bn2(y)
+ if self.is_downsample:
+ x = self.downsample(x)
+ return F.relu(x.add(y),True)
+
+def make_layers(c_in,c_out,repeat_times, is_downsample=False):
+ blocks = []
+ for i in range(repeat_times):
+ if i ==0:
+ blocks += [BasicBlock(c_in,c_out, is_downsample=is_downsample),]
+ else:
+ blocks += [BasicBlock(c_out,c_out),]
+ return nn.Sequential(*blocks)
+
+class Net(nn.Module):
+ def __init__(self, num_classes=751 ,reid=False):
+ super(Net,self).__init__()
+ # 3 128 64
+ self.conv = nn.Sequential(
+ nn.Conv2d(3,64,3,stride=1,padding=1),
+ nn.BatchNorm2d(64),
+ nn.ReLU(inplace=True),
+ # nn.Conv2d(32,32,3,stride=1,padding=1),
+ # nn.BatchNorm2d(32),
+ # nn.ReLU(inplace=True),
+ nn.MaxPool2d(3,2,padding=1),
+ )
+ # 32 64 32
+ self.layer1 = make_layers(64,64,2,False)
+ # 32 64 32
+ self.layer2 = make_layers(64,128,2,True)
+ # 64 32 16
+ self.layer3 = make_layers(128,256,2,True)
+ # 128 16 8
+ self.layer4 = make_layers(256,512,2,True)
+ # 256 8 4
+ self.avgpool = nn.AvgPool2d((8,4),1)
+ # 256 1 1
+ self.reid = reid
+ self.classifier = nn.Sequential(
+ nn.Linear(512, 256),
+ nn.BatchNorm1d(256),
+ nn.ReLU(inplace=True),
+ nn.Dropout(),
+ nn.Linear(256, num_classes),
+ )
+
+ def forward(self, x):
+ x = self.conv(x)
+ x = self.layer1(x)
+ x = self.layer2(x)
+ x = self.layer3(x)
+ x = self.layer4(x)
+ x = self.avgpool(x)
+ x = x.view(x.size(0),-1)
+ # B x 128
+ if self.reid:
+ x = x.div(x.norm(p=2,dim=1,keepdim=True))
+ return x
+ # classifier
+ x = self.classifier(x)
+ return x
+
+
+if __name__ == '__main__':
+ net = Net()
+ x = torch.randn(4,3,128,64)
+ y = net(x)
+ import ipdb; ipdb.set_trace()
+
+
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep/original_model.py b/Yolov5-Deepsort/deep_sort/deep_sort/deep/original_model.py
new file mode 100644
index 0000000000000000000000000000000000000000..72453a6392b9a360c03034eefee1d6be30f8121b
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/deep_sort/deep/original_model.py
@@ -0,0 +1,106 @@
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+
+class BasicBlock(nn.Module):
+ def __init__(self, c_in, c_out,is_downsample=False):
+ super(BasicBlock,self).__init__()
+ self.is_downsample = is_downsample
+ if is_downsample:
+ self.conv1 = nn.Conv2d(c_in, c_out, 3, stride=2, padding=1, bias=False)
+ else:
+ self.conv1 = nn.Conv2d(c_in, c_out, 3, stride=1, padding=1, bias=False)
+ self.bn1 = nn.BatchNorm2d(c_out)
+ self.relu = nn.ReLU(True)
+ self.conv2 = nn.Conv2d(c_out,c_out,3,stride=1,padding=1, bias=False)
+ self.bn2 = nn.BatchNorm2d(c_out)
+ if is_downsample:
+ self.downsample = nn.Sequential(
+ nn.Conv2d(c_in, c_out, 1, stride=2, bias=False),
+ nn.BatchNorm2d(c_out)
+ )
+ elif c_in != c_out:
+ self.downsample = nn.Sequential(
+ nn.Conv2d(c_in, c_out, 1, stride=1, bias=False),
+ nn.BatchNorm2d(c_out)
+ )
+ self.is_downsample = True
+
+ def forward(self,x):
+ y = self.conv1(x)
+ y = self.bn1(y)
+ y = self.relu(y)
+ y = self.conv2(y)
+ y = self.bn2(y)
+ if self.is_downsample:
+ x = self.downsample(x)
+ return F.relu(x.add(y),True)
+
+def make_layers(c_in,c_out,repeat_times, is_downsample=False):
+ blocks = []
+ for i in range(repeat_times):
+ if i ==0:
+ blocks += [BasicBlock(c_in,c_out, is_downsample=is_downsample),]
+ else:
+ blocks += [BasicBlock(c_out,c_out),]
+ return nn.Sequential(*blocks)
+
+class Net(nn.Module):
+ def __init__(self, num_classes=625 ,reid=False):
+ super(Net,self).__init__()
+ # 3 128 64
+ self.conv = nn.Sequential(
+ nn.Conv2d(3,32,3,stride=1,padding=1),
+ nn.BatchNorm2d(32),
+ nn.ELU(inplace=True),
+ nn.Conv2d(32,32,3,stride=1,padding=1),
+ nn.BatchNorm2d(32),
+ nn.ELU(inplace=True),
+ nn.MaxPool2d(3,2,padding=1),
+ )
+ # 32 64 32
+ self.layer1 = make_layers(32,32,2,False)
+ # 32 64 32
+ self.layer2 = make_layers(32,64,2,True)
+ # 64 32 16
+ self.layer3 = make_layers(64,128,2,True)
+ # 128 16 8
+ self.dense = nn.Sequential(
+ nn.Dropout(p=0.6),
+ nn.Linear(128*16*8, 128),
+ nn.BatchNorm1d(128),
+ nn.ELU(inplace=True)
+ )
+ # 256 1 1
+ self.reid = reid
+ self.batch_norm = nn.BatchNorm1d(128)
+ self.classifier = nn.Sequential(
+ nn.Linear(128, num_classes),
+ )
+
+ def forward(self, x):
+ x = self.conv(x)
+ x = self.layer1(x)
+ x = self.layer2(x)
+ x = self.layer3(x)
+
+ x = x.view(x.size(0),-1)
+ if self.reid:
+ x = self.dense[0](x)
+ x = self.dense[1](x)
+ x = x.div(x.norm(p=2,dim=1,keepdim=True))
+ return x
+ x = self.dense(x)
+ # B x 128
+ # classifier
+ x = self.classifier(x)
+ return x
+
+
+if __name__ == '__main__':
+ net = Net(reid=True)
+ x = torch.randn(4,3,128,64)
+ y = net(x)
+ import ipdb; ipdb.set_trace()
+
+
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep/test.py b/Yolov5-Deepsort/deep_sort/deep_sort/deep/test.py
new file mode 100644
index 0000000000000000000000000000000000000000..ebd590336f7b17c44738c4c15458f02f33f08017
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/deep_sort/deep/test.py
@@ -0,0 +1,77 @@
+import torch
+import torch.backends.cudnn as cudnn
+import torchvision
+
+import argparse
+import os
+
+from model import Net
+
+parser = argparse.ArgumentParser(description="Train on market1501")
+parser.add_argument("--data-dir",default='data',type=str)
+parser.add_argument("--no-cuda",action="store_true")
+parser.add_argument("--gpu-id",default=0,type=int)
+args = parser.parse_args()
+
+# device
+device = "cuda:{}".format(args.gpu_id) if torch.cuda.is_available() and not args.no_cuda else "cpu"
+if torch.cuda.is_available() and not args.no_cuda:
+ cudnn.benchmark = True
+
+# data loader
+root = args.data_dir
+query_dir = os.path.join(root,"query")
+gallery_dir = os.path.join(root,"gallery")
+transform = torchvision.transforms.Compose([
+ torchvision.transforms.Resize((128,64)),
+ torchvision.transforms.ToTensor(),
+ torchvision.transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
+])
+queryloader = torch.utils.data.DataLoader(
+ torchvision.datasets.ImageFolder(query_dir, transform=transform),
+ batch_size=64, shuffle=False
+)
+galleryloader = torch.utils.data.DataLoader(
+ torchvision.datasets.ImageFolder(gallery_dir, transform=transform),
+ batch_size=64, shuffle=False
+)
+
+# net definition
+net = Net(reid=True)
+assert os.path.isfile("./checkpoint/ckpt.t7"), "Error: no checkpoint file found!"
+print('Loading from checkpoint/ckpt.t7')
+checkpoint = torch.load("./checkpoint/ckpt.t7")
+net_dict = checkpoint['net_dict']
+net.load_state_dict(net_dict, strict=False)
+net.eval()
+net.to(device)
+
+# compute features
+query_features = torch.tensor([]).float()
+query_labels = torch.tensor([]).long()
+gallery_features = torch.tensor([]).float()
+gallery_labels = torch.tensor([]).long()
+
+with torch.no_grad():
+ for idx,(inputs,labels) in enumerate(queryloader):
+ inputs = inputs.to(device)
+ features = net(inputs).cpu()
+ query_features = torch.cat((query_features, features), dim=0)
+ query_labels = torch.cat((query_labels, labels))
+
+ for idx,(inputs,labels) in enumerate(galleryloader):
+ inputs = inputs.to(device)
+ features = net(inputs).cpu()
+ gallery_features = torch.cat((gallery_features, features), dim=0)
+ gallery_labels = torch.cat((gallery_labels, labels))
+
+gallery_labels -= 2
+
+# save features
+features = {
+ "qf": query_features,
+ "ql": query_labels,
+ "gf": gallery_features,
+ "gl": gallery_labels
+}
+torch.save(features,"features.pth")
\ No newline at end of file
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep/train.jpg b/Yolov5-Deepsort/deep_sort/deep_sort/deep/train.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..3635a614738828b880aa862bc52423848ac8e472
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/deep/train.jpg differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep/train.py b/Yolov5-Deepsort/deep_sort/deep_sort/deep/train.py
new file mode 100644
index 0000000000000000000000000000000000000000..a931763d155f27743d944ac46da10f57d35a8ddb
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/deep_sort/deep/train.py
@@ -0,0 +1,189 @@
+import argparse
+import os
+import time
+
+import numpy as np
+import matplotlib.pyplot as plt
+import torch
+import torch.backends.cudnn as cudnn
+import torchvision
+
+from model import Net
+
+parser = argparse.ArgumentParser(description="Train on market1501")
+parser.add_argument("--data-dir",default='data',type=str)
+parser.add_argument("--no-cuda",action="store_true")
+parser.add_argument("--gpu-id",default=0,type=int)
+parser.add_argument("--lr",default=0.1, type=float)
+parser.add_argument("--interval",'-i',default=20,type=int)
+parser.add_argument('--resume', '-r',action='store_true')
+args = parser.parse_args()
+
+# device
+device = "cuda:{}".format(args.gpu_id) if torch.cuda.is_available() and not args.no_cuda else "cpu"
+if torch.cuda.is_available() and not args.no_cuda:
+ cudnn.benchmark = True
+
+# data loading
+root = args.data_dir
+train_dir = os.path.join(root,"train")
+test_dir = os.path.join(root,"test")
+transform_train = torchvision.transforms.Compose([
+ torchvision.transforms.RandomCrop((128,64),padding=4),
+ torchvision.transforms.RandomHorizontalFlip(),
+ torchvision.transforms.ToTensor(),
+ torchvision.transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
+])
+transform_test = torchvision.transforms.Compose([
+ torchvision.transforms.Resize((128,64)),
+ torchvision.transforms.ToTensor(),
+ torchvision.transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
+])
+trainloader = torch.utils.data.DataLoader(
+ torchvision.datasets.ImageFolder(train_dir, transform=transform_train),
+ batch_size=64,shuffle=True
+)
+testloader = torch.utils.data.DataLoader(
+ torchvision.datasets.ImageFolder(test_dir, transform=transform_test),
+ batch_size=64,shuffle=True
+)
+num_classes = max(len(trainloader.dataset.classes), len(testloader.dataset.classes))
+
+# net definition
+start_epoch = 0
+net = Net(num_classes=num_classes)
+if args.resume:
+ assert os.path.isfile("./checkpoint/ckpt.t7"), "Error: no checkpoint file found!"
+ print('Loading from checkpoint/ckpt.t7')
+ checkpoint = torch.load("./checkpoint/ckpt.t7")
+ # import ipdb; ipdb.set_trace()
+ net_dict = checkpoint['net_dict']
+ net.load_state_dict(net_dict)
+ best_acc = checkpoint['acc']
+ start_epoch = checkpoint['epoch']
+net.to(device)
+
+# loss and optimizer
+criterion = torch.nn.CrossEntropyLoss()
+optimizer = torch.optim.SGD(net.parameters(), args.lr, momentum=0.9, weight_decay=5e-4)
+best_acc = 0.
+
+# train function for each epoch
+def train(epoch):
+ print("\nEpoch : %d"%(epoch+1))
+ net.train()
+ training_loss = 0.
+ train_loss = 0.
+ correct = 0
+ total = 0
+ interval = args.interval
+ start = time.time()
+ for idx, (inputs, labels) in enumerate(trainloader):
+ # forward
+ inputs,labels = inputs.to(device),labels.to(device)
+ outputs = net(inputs)
+ loss = criterion(outputs, labels)
+
+ # backward
+ optimizer.zero_grad()
+ loss.backward()
+ optimizer.step()
+
+ # accumurating
+ training_loss += loss.item()
+ train_loss += loss.item()
+ correct += outputs.max(dim=1)[1].eq(labels).sum().item()
+ total += labels.size(0)
+
+ # print
+ if (idx+1)%interval == 0:
+ end = time.time()
+ print("[progress:{:.1f}%]time:{:.2f}s Loss:{:.5f} Correct:{}/{} Acc:{:.3f}%".format(
+ 100.*(idx+1)/len(trainloader), end-start, training_loss/interval, correct, total, 100.*correct/total
+ ))
+ training_loss = 0.
+ start = time.time()
+
+ return train_loss/len(trainloader), 1.- correct/total
+
+def test(epoch):
+ global best_acc
+ net.eval()
+ test_loss = 0.
+ correct = 0
+ total = 0
+ start = time.time()
+ with torch.no_grad():
+ for idx, (inputs, labels) in enumerate(testloader):
+ inputs, labels = inputs.to(device), labels.to(device)
+ outputs = net(inputs)
+ loss = criterion(outputs, labels)
+
+ test_loss += loss.item()
+ correct += outputs.max(dim=1)[1].eq(labels).sum().item()
+ total += labels.size(0)
+
+ print("Testing ...")
+ end = time.time()
+ print("[progress:{:.1f}%]time:{:.2f}s Loss:{:.5f} Correct:{}/{} Acc:{:.3f}%".format(
+ 100.*(idx+1)/len(testloader), end-start, test_loss/len(testloader), correct, total, 100.*correct/total
+ ))
+
+ # saving checkpoint
+ acc = 100.*correct/total
+ if acc > best_acc:
+ best_acc = acc
+ print("Saving parameters to checkpoint/ckpt.t7")
+ checkpoint = {
+ 'net_dict':net.state_dict(),
+ 'acc':acc,
+ 'epoch':epoch,
+ }
+ if not os.path.isdir('checkpoint'):
+ os.mkdir('checkpoint')
+ torch.save(checkpoint, './checkpoint/ckpt.t7')
+
+ return test_loss/len(testloader), 1.- correct/total
+
+# plot figure
+x_epoch = []
+record = {'train_loss':[], 'train_err':[], 'test_loss':[], 'test_err':[]}
+fig = plt.figure()
+ax0 = fig.add_subplot(121, title="loss")
+ax1 = fig.add_subplot(122, title="top1err")
+def draw_curve(epoch, train_loss, train_err, test_loss, test_err):
+ global record
+ record['train_loss'].append(train_loss)
+ record['train_err'].append(train_err)
+ record['test_loss'].append(test_loss)
+ record['test_err'].append(test_err)
+
+ x_epoch.append(epoch)
+ ax0.plot(x_epoch, record['train_loss'], 'bo-', label='train')
+ ax0.plot(x_epoch, record['test_loss'], 'ro-', label='val')
+ ax1.plot(x_epoch, record['train_err'], 'bo-', label='train')
+ ax1.plot(x_epoch, record['test_err'], 'ro-', label='val')
+ if epoch == 0:
+ ax0.legend()
+ ax1.legend()
+ fig.savefig("train.jpg")
+
+# lr decay
+def lr_decay():
+ global optimizer
+ for params in optimizer.param_groups:
+ params['lr'] *= 0.1
+ lr = params['lr']
+ print("Learning rate adjusted to {}".format(lr))
+
+def main():
+ for epoch in range(start_epoch, start_epoch+40):
+ train_loss, train_err = train(epoch)
+ test_loss, test_err = test(epoch)
+ draw_curve(epoch, train_loss, train_err, test_loss, test_err)
+ if (epoch+1)%20==0:
+ lr_decay()
+
+
+if __name__ == '__main__':
+ main()
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep_sort.py b/Yolov5-Deepsort/deep_sort/deep_sort/deep_sort.py
new file mode 100644
index 0000000000000000000000000000000000000000..44f8746fd299527fd1129027e98435bf9f52f671
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/deep_sort/deep_sort.py
@@ -0,0 +1,101 @@
+import numpy as np
+import torch
+import rich
+from .deep.feature_extractor import Extractor
+from .sort.nn_matching import NearestNeighborDistanceMetric
+from .sort.preprocessing import non_max_suppression
+from .sort.detection import Detection
+from .sort.tracker import Tracker
+
+
+__all__ = ['DeepSort']
+
+
+class DeepSort(object):
+ def __init__(self, model_path, max_dist=0.2, min_confidence=0.3, nms_max_overlap=1.0, max_iou_distance=0.7, max_age=70, n_init=3, nn_budget=100, use_cuda=True):
+ self.min_confidence = min_confidence
+ self.nms_max_overlap = nms_max_overlap
+
+ self.extractor = Extractor(model_path, use_cuda=use_cuda)
+
+ max_cosine_distance = max_dist
+ nn_budget = 100
+ metric = NearestNeighborDistanceMetric(
+ "cosine", max_cosine_distance, nn_budget)
+ self.tracker = Tracker(
+ metric, max_iou_distance=max_iou_distance, max_age=max_age, n_init=n_init)
+
+ def update(self, bbox_xywh, confidences, clss, ori_img):
+ self.height, self.width = ori_img.shape[:2]
+ # generate detections
+ features = self._get_features(bbox_xywh, ori_img)
+ bbox_tlwh = self._xywh_to_tlwh(bbox_xywh)
+ detections = [Detection(bbox_tlwh[i], clss[i], conf, features[i]) for i, conf in enumerate(
+ confidences) if conf > self.min_confidence]
+ # update tracker
+ self.tracker.predict()
+ self.tracker.update(detections)
+
+ # output bbox identities
+ outputs = []
+ for track in self.tracker.tracks:
+ if not track.is_confirmed() or track.time_since_update > 1:
+ continue
+ #rich.print(track)
+ box = track.to_tlwh()
+ x1, y1, x2, y2 = self._tlwh_to_xyxy(box)
+ outputs.append((x1, y1, x2, y2, track.cls_, track.track_id))
+ return outputs
+
+ @staticmethod
+ def _xywh_to_tlwh(bbox_xywh):
+ if isinstance(bbox_xywh, np.ndarray):
+ bbox_tlwh = bbox_xywh.copy()
+ elif isinstance(bbox_xywh, torch.Tensor):
+ bbox_tlwh = bbox_xywh.clone()
+ if bbox_tlwh.size(0):
+ bbox_tlwh[:, 0] = bbox_xywh[:, 0] - bbox_xywh[:, 2]/2.
+ bbox_tlwh[:, 1] = bbox_xywh[:, 1] - bbox_xywh[:, 3]/2.
+ return bbox_tlwh
+
+ def _xywh_to_xyxy(self, bbox_xywh):
+ x, y, w, h = bbox_xywh
+ x1 = max(int(x-w/2), 0)
+ x2 = min(int(x+w/2), self.width-1)
+ y1 = max(int(y-h/2), 0)
+ y2 = min(int(y+h/2), self.height-1)
+ return x1, y1, x2, y2
+
+ def _tlwh_to_xyxy(self, bbox_tlwh):
+ """
+ TODO:
+ Convert bbox from xtl_ytl_w_h to xc_yc_w_h
+ Thanks JieChen91@github.com for reporting this bug!
+ """
+ x, y, w, h = bbox_tlwh
+ x1 = max(int(x), 0)
+ x2 = min(int(x+w), self.width-1)
+ y1 = max(int(y), 0)
+ y2 = min(int(y+h), self.height-1)
+ return x1, y1, x2, y2
+
+ def _xyxy_to_tlwh(self, bbox_xyxy):
+ x1, y1, x2, y2 = bbox_xyxy
+
+ t = x1
+ l = y1
+ w = int(x2-x1)
+ h = int(y2-y1)
+ return t, l, w, h
+
+ def _get_features(self, bbox_xywh, ori_img):
+ im_crops = []
+ for box in bbox_xywh:
+ x1, y1, x2, y2 = self._xywh_to_xyxy(box)
+ im = ori_img[y1:y2, x1:x2]
+ im_crops.append(im)
+ if im_crops:
+ features = self.extractor(im_crops)
+ else:
+ features = np.array([])
+ return features
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__init__.py b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/__init__.cpython-36.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/__init__.cpython-36.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..36e171093f09ddc15d4499eec4a66e20812cff97
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/__init__.cpython-36.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/__init__.cpython-37.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/__init__.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..4bebfe9ced397e6106504e32996e3038daa8ad54
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/__init__.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/detection.cpython-36.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/detection.cpython-36.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..99c3d00c0ecda70d11f85180f2b6e0d032547963
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/detection.cpython-36.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/detection.cpython-37.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/detection.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..7204d92b15ceab7d1d0a10a5a1223287c24c79bb
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/detection.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/iou_matching.cpython-36.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/iou_matching.cpython-36.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..619fd5ecf730a1797348f490946b0d9c1e24abbc
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/iou_matching.cpython-36.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/iou_matching.cpython-37.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/iou_matching.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..8c64c06bee66440330de7652b3de146ce84fb5c3
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/iou_matching.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/kalman_filter.cpython-36.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/kalman_filter.cpython-36.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..ce24a9dc97fb1bf111839bf23401a82c62e36f43
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/kalman_filter.cpython-36.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/kalman_filter.cpython-37.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/kalman_filter.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..9c9da039aa1cefa23a51be4f09af8801cb0a9dca
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/kalman_filter.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/linear_assignment.cpython-36.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/linear_assignment.cpython-36.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..576877feebd0c9886c96ce363d1ecea7b3154426
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/linear_assignment.cpython-36.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/linear_assignment.cpython-37.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/linear_assignment.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..2eb430b230c02722433b7c0063bcd3a43bcd8e0a
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/linear_assignment.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/nn_matching.cpython-36.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/nn_matching.cpython-36.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..5880fd28dfdd4ca064260d0a4d73b137c38a1551
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/nn_matching.cpython-36.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/nn_matching.cpython-37.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/nn_matching.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..981d42103f97947af3de456de2def6e79e487af8
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/nn_matching.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/preprocessing.cpython-36.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/preprocessing.cpython-36.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..387924cdd65d68679c404bef888996db765bd10f
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/preprocessing.cpython-36.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/preprocessing.cpython-37.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/preprocessing.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..d4f78cf29fa7904b33710ab07efe4720e6984495
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/preprocessing.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/track.cpython-36.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/track.cpython-36.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..4df3d89025edfbd21799654426d98938824d94d6
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/track.cpython-36.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/track.cpython-37.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/track.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e64255c58c791c317e4e35c9119743e4b4e7f28f
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/track.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/tracker.cpython-36.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/tracker.cpython-36.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..a7bbe68869cbdb735e34d29695718d0170ee0b0a
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/tracker.cpython-36.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/tracker.cpython-37.pyc b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/tracker.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..d4b34b661f767b14aef6e01fa8a86f5a037bcdc7
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/tracker.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/detection.py b/Yolov5-Deepsort/deep_sort/deep_sort/sort/detection.py
new file mode 100644
index 0000000000000000000000000000000000000000..0c2c1ae42addc84cfd53bcfa3cdcc8885662ec44
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/deep_sort/sort/detection.py
@@ -0,0 +1,28 @@
+# vim: expandtab:ts=4:sw=4
+import numpy as np
+
+
+class Detection(object):
+
+ def __init__(self, tlwh, cls_, confidence, feature):
+ self.tlwh = np.asarray(tlwh, dtype=np.float)
+ self.cls_ = cls_
+ self.confidence = float(confidence)
+ self.feature = np.asarray(feature, dtype=np.float32)
+
+ def to_tlbr(self):
+ """Convert bounding box to format `(min x, min y, max x, max y)`, i.e.,
+ `(top left, bottom right)`.
+ """
+ ret = self.tlwh.copy()
+ ret[2:] += ret[:2]
+ return ret
+
+ def to_xyah(self):
+ """Convert bounding box to format `(center x, center y, aspect ratio,
+ height)`, where the aspect ratio is `width / height`.
+ """
+ ret = self.tlwh.copy()
+ ret[:2] += ret[2:] / 2
+ ret[2] /= ret[3]
+ return ret
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/iou_matching.py b/Yolov5-Deepsort/deep_sort/deep_sort/sort/iou_matching.py
new file mode 100644
index 0000000000000000000000000000000000000000..c4dd0b88391d2ac28036c7163d5d4c988d4a9c4c
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/deep_sort/sort/iou_matching.py
@@ -0,0 +1,81 @@
+# vim: expandtab:ts=4:sw=4
+from __future__ import absolute_import
+import numpy as np
+from . import linear_assignment
+
+
+def iou(bbox, candidates):
+ """Computer intersection over union.
+
+ Parameters
+ ----------
+ bbox : ndarray
+ A bounding box in format `(top left x, top left y, width, height)`.
+ candidates : ndarray
+ A matrix of candidate bounding boxes (one per row) in the same format
+ as `bbox`.
+
+ Returns
+ -------
+ ndarray
+ The intersection over union in [0, 1] between the `bbox` and each
+ candidate. A higher score means a larger fraction of the `bbox` is
+ occluded by the candidate.
+
+ """
+ bbox_tl, bbox_br = bbox[:2], bbox[:2] + bbox[2:]
+ candidates_tl = candidates[:, :2]
+ candidates_br = candidates[:, :2] + candidates[:, 2:]
+
+ tl = np.c_[np.maximum(bbox_tl[0], candidates_tl[:, 0])[:, np.newaxis],
+ np.maximum(bbox_tl[1], candidates_tl[:, 1])[:, np.newaxis]]
+ br = np.c_[np.minimum(bbox_br[0], candidates_br[:, 0])[:, np.newaxis],
+ np.minimum(bbox_br[1], candidates_br[:, 1])[:, np.newaxis]]
+ wh = np.maximum(0., br - tl)
+
+ area_intersection = wh.prod(axis=1)
+ area_bbox = bbox[2:].prod()
+ area_candidates = candidates[:, 2:].prod(axis=1)
+ return area_intersection / (area_bbox + area_candidates - area_intersection)
+
+
+def iou_cost(tracks, detections, track_indices=None,
+ detection_indices=None):
+ """An intersection over union distance metric.
+
+ Parameters
+ ----------
+ tracks : List[deep_sort.track.Track]
+ A list of tracks.
+ detections : List[deep_sort.detection.Detection]
+ A list of detections.
+ track_indices : Optional[List[int]]
+ A list of indices to tracks that should be matched. Defaults to
+ all `tracks`.
+ detection_indices : Optional[List[int]]
+ A list of indices to detections that should be matched. Defaults
+ to all `detections`.
+
+ Returns
+ -------
+ ndarray
+ Returns a cost matrix of shape
+ len(track_indices), len(detection_indices) where entry (i, j) is
+ `1 - iou(tracks[track_indices[i]], detections[detection_indices[j]])`.
+
+ """
+ if track_indices is None:
+ track_indices = np.arange(len(tracks))
+ if detection_indices is None:
+ detection_indices = np.arange(len(detections))
+
+ cost_matrix = np.zeros((len(track_indices), len(detection_indices)))
+ for row, track_idx in enumerate(track_indices):
+ if tracks[track_idx].time_since_update > 1:
+ cost_matrix[row, :] = linear_assignment.INFTY_COST
+ continue
+
+ bbox = tracks[track_idx].to_tlwh()
+ candidates = np.asarray([detections[i].tlwh for i in detection_indices])
+ cost_matrix[row, :] = 1. - iou(bbox, candidates)
+ return cost_matrix
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/kalman_filter.py b/Yolov5-Deepsort/deep_sort/deep_sort/sort/kalman_filter.py
new file mode 100644
index 0000000000000000000000000000000000000000..787a76e6a43870a9538647b51fda6a5254ce2d43
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/deep_sort/sort/kalman_filter.py
@@ -0,0 +1,229 @@
+# vim: expandtab:ts=4:sw=4
+import numpy as np
+import scipy.linalg
+
+
+"""
+Table for the 0.95 quantile of the chi-square distribution with N degrees of
+freedom (contains values for N=1, ..., 9). Taken from MATLAB/Octave's chi2inv
+function and used as Mahalanobis gating threshold.
+"""
+chi2inv95 = {
+ 1: 3.8415,
+ 2: 5.9915,
+ 3: 7.8147,
+ 4: 9.4877,
+ 5: 11.070,
+ 6: 12.592,
+ 7: 14.067,
+ 8: 15.507,
+ 9: 16.919}
+
+
+class KalmanFilter(object):
+ """
+ A simple Kalman filter for tracking bounding boxes in image space.
+
+ The 8-dimensional state space
+
+ x, y, a, h, vx, vy, va, vh
+
+ contains the bounding box center position (x, y), aspect ratio a, height h,
+ and their respective velocities.
+
+ Object motion follows a constant velocity model. The bounding box location
+ (x, y, a, h) is taken as direct observation of the state space (linear
+ observation model).
+
+ """
+
+ def __init__(self):
+ ndim, dt = 4, 1.
+
+ # Create Kalman filter model matrices.
+ self._motion_mat = np.eye(2 * ndim, 2 * ndim)
+ for i in range(ndim):
+ self._motion_mat[i, ndim + i] = dt
+ self._update_mat = np.eye(ndim, 2 * ndim)
+
+ # Motion and observation uncertainty are chosen relative to the current
+ # state estimate. These weights control the amount of uncertainty in
+ # the model. This is a bit hacky.
+ self._std_weight_position = 1. / 20
+ self._std_weight_velocity = 1. / 160
+
+ def initiate(self, measurement):
+ """Create track from unassociated measurement.
+
+ Parameters
+ ----------
+ measurement : ndarray
+ Bounding box coordinates (x, y, a, h) with center position (x, y),
+ aspect ratio a, and height h.
+
+ Returns
+ -------
+ (ndarray, ndarray)
+ Returns the mean vector (8 dimensional) and covariance matrix (8x8
+ dimensional) of the new track. Unobserved velocities are initialized
+ to 0 mean.
+
+ """
+ mean_pos = measurement
+ mean_vel = np.zeros_like(mean_pos)
+ mean = np.r_[mean_pos, mean_vel]
+
+ std = [
+ 2 * self._std_weight_position * measurement[3],
+ 2 * self._std_weight_position * measurement[3],
+ 1e-2,
+ 2 * self._std_weight_position * measurement[3],
+ 10 * self._std_weight_velocity * measurement[3],
+ 10 * self._std_weight_velocity * measurement[3],
+ 1e-5,
+ 10 * self._std_weight_velocity * measurement[3]]
+ covariance = np.diag(np.square(std))
+ return mean, covariance
+
+ def predict(self, mean, covariance):
+ """Run Kalman filter prediction step.
+
+ Parameters
+ ----------
+ mean : ndarray
+ The 8 dimensional mean vector of the object state at the previous
+ time step.
+ covariance : ndarray
+ The 8x8 dimensional covariance matrix of the object state at the
+ previous time step.
+
+ Returns
+ -------
+ (ndarray, ndarray)
+ Returns the mean vector and covariance matrix of the predicted
+ state. Unobserved velocities are initialized to 0 mean.
+
+ """
+ std_pos = [
+ self._std_weight_position * mean[3],
+ self._std_weight_position * mean[3],
+ 1e-2,
+ self._std_weight_position * mean[3]]
+ std_vel = [
+ self._std_weight_velocity * mean[3],
+ self._std_weight_velocity * mean[3],
+ 1e-5,
+ self._std_weight_velocity * mean[3]]
+ motion_cov = np.diag(np.square(np.r_[std_pos, std_vel]))
+
+ mean = np.dot(self._motion_mat, mean)
+ covariance = np.linalg.multi_dot((
+ self._motion_mat, covariance, self._motion_mat.T)) + motion_cov
+
+ return mean, covariance
+
+ def project(self, mean, covariance):
+ """Project state distribution to measurement space.
+
+ Parameters
+ ----------
+ mean : ndarray
+ The state's mean vector (8 dimensional array).
+ covariance : ndarray
+ The state's covariance matrix (8x8 dimensional).
+
+ Returns
+ -------
+ (ndarray, ndarray)
+ Returns the projected mean and covariance matrix of the given state
+ estimate.
+
+ """
+ std = [
+ self._std_weight_position * mean[3],
+ self._std_weight_position * mean[3],
+ 1e-1,
+ self._std_weight_position * mean[3]]
+ innovation_cov = np.diag(np.square(std))
+
+ mean = np.dot(self._update_mat, mean)
+ covariance = np.linalg.multi_dot((
+ self._update_mat, covariance, self._update_mat.T))
+ return mean, covariance + innovation_cov
+
+ def update(self, mean, covariance, measurement):
+ """Run Kalman filter correction step.
+
+ Parameters
+ ----------
+ mean : ndarray
+ The predicted state's mean vector (8 dimensional).
+ covariance : ndarray
+ The state's covariance matrix (8x8 dimensional).
+ measurement : ndarray
+ The 4 dimensional measurement vector (x, y, a, h), where (x, y)
+ is the center position, a the aspect ratio, and h the height of the
+ bounding box.
+
+ Returns
+ -------
+ (ndarray, ndarray)
+ Returns the measurement-corrected state distribution.
+
+ """
+ projected_mean, projected_cov = self.project(mean, covariance)
+
+ chol_factor, lower = scipy.linalg.cho_factor(
+ projected_cov, lower=True, check_finite=False)
+ kalman_gain = scipy.linalg.cho_solve(
+ (chol_factor, lower), np.dot(covariance, self._update_mat.T).T,
+ check_finite=False).T
+ innovation = measurement - projected_mean
+
+ new_mean = mean + np.dot(innovation, kalman_gain.T)
+ new_covariance = covariance - np.linalg.multi_dot((
+ kalman_gain, projected_cov, kalman_gain.T))
+ return new_mean, new_covariance
+
+ def gating_distance(self, mean, covariance, measurements,
+ only_position=False):
+ """Compute gating distance between state distribution and measurements.
+
+ A suitable distance threshold can be obtained from `chi2inv95`. If
+ `only_position` is False, the chi-square distribution has 4 degrees of
+ freedom, otherwise 2.
+
+ Parameters
+ ----------
+ mean : ndarray
+ Mean vector over the state distribution (8 dimensional).
+ covariance : ndarray
+ Covariance of the state distribution (8x8 dimensional).
+ measurements : ndarray
+ An Nx4 dimensional matrix of N measurements, each in
+ format (x, y, a, h) where (x, y) is the bounding box center
+ position, a the aspect ratio, and h the height.
+ only_position : Optional[bool]
+ If True, distance computation is done with respect to the bounding
+ box center position only.
+
+ Returns
+ -------
+ ndarray
+ Returns an array of length N, where the i-th element contains the
+ squared Mahalanobis distance between (mean, covariance) and
+ `measurements[i]`.
+
+ """
+ mean, covariance = self.project(mean, covariance)
+ if only_position:
+ mean, covariance = mean[:2], covariance[:2, :2]
+ measurements = measurements[:, :2]
+
+ cholesky_factor = np.linalg.cholesky(covariance)
+ d = measurements - mean
+ z = scipy.linalg.solve_triangular(
+ cholesky_factor, d.T, lower=True, check_finite=False,
+ overwrite_b=True)
+ squared_maha = np.sum(z * z, axis=0)
+ return squared_maha
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/linear_assignment.py b/Yolov5-Deepsort/deep_sort/deep_sort/sort/linear_assignment.py
new file mode 100644
index 0000000000000000000000000000000000000000..2006230c960fa07b128b39187cb5df2775300544
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/deep_sort/sort/linear_assignment.py
@@ -0,0 +1,159 @@
+# vim: expandtab:ts=4:sw=4
+from __future__ import absolute_import
+import numpy as np
+# from sklearn.utils.linear_assignment_ import linear_assignment
+from scipy.optimize import linear_sum_assignment as linear_assignment
+from . import kalman_filter
+
+
+INFTY_COST = 1e+5
+
+
+def min_cost_matching(
+ distance_metric, max_distance, tracks, detections, track_indices=None,
+ detection_indices=None):
+ if track_indices is None:
+ track_indices = np.arange(len(tracks))
+ if detection_indices is None:
+ detection_indices = np.arange(len(detections))
+
+ if len(detection_indices) == 0 or len(track_indices) == 0:
+ return [], track_indices, detection_indices # Nothing to match.
+
+ cost_matrix = distance_metric(
+ tracks, detections, track_indices, detection_indices)
+ cost_matrix[cost_matrix > max_distance] = max_distance + 1e-5
+
+ row_indices, col_indices = linear_assignment(cost_matrix)
+
+ matches, unmatched_tracks, unmatched_detections = [], [], []
+ for col, detection_idx in enumerate(detection_indices):
+ if col not in col_indices:
+ unmatched_detections.append(detection_idx)
+ for row, track_idx in enumerate(track_indices):
+ if row not in row_indices:
+ unmatched_tracks.append(track_idx)
+ for row, col in zip(row_indices, col_indices):
+ track_idx = track_indices[row]
+ detection_idx = detection_indices[col]
+ if cost_matrix[row, col] > max_distance:
+ unmatched_tracks.append(track_idx)
+ unmatched_detections.append(detection_idx)
+ else:
+ matches.append((track_idx, detection_idx))
+ return matches, unmatched_tracks, unmatched_detections
+
+
+def matching_cascade(
+ distance_metric, max_distance, cascade_depth, tracks, detections,
+ track_indices=None, detection_indices=None):
+ """Run matching cascade.
+
+ Parameters
+ ----------
+ distance_metric : Callable[List[Track], List[Detection], List[int], List[int]) -> ndarray
+ The distance metric is given a list of tracks and detections as well as
+ a list of N track indices and M detection indices. The metric should
+ return the NxM dimensional cost matrix, where element (i, j) is the
+ association cost between the i-th track in the given track indices and
+ the j-th detection in the given detection indices.
+ max_distance : float
+ Gating threshold. Associations with cost larger than this value are
+ disregarded.
+ cascade_depth: int
+ The cascade depth, should be se to the maximum track age.
+ tracks : List[track.Track]
+ A list of predicted tracks at the current time step.
+ detections : List[detection.Detection]
+ A list of detections at the current time step.
+ track_indices : Optional[List[int]]
+ List of track indices that maps rows in `cost_matrix` to tracks in
+ `tracks` (see description above). Defaults to all tracks.
+ detection_indices : Optional[List[int]]
+ List of detection indices that maps columns in `cost_matrix` to
+ detections in `detections` (see description above). Defaults to all
+ detections.
+
+ Returns
+ -------
+ (List[(int, int)], List[int], List[int])
+ Returns a tuple with the following three entries:
+ * A list of matched track and detection indices.
+ * A list of unmatched track indices.
+ * A list of unmatched detection indices.
+
+ """
+ if track_indices is None:
+ track_indices = list(range(len(tracks)))
+ if detection_indices is None:
+ detection_indices = list(range(len(detections)))
+
+ unmatched_detections = detection_indices
+ matches = []
+ for level in range(cascade_depth):
+ if len(unmatched_detections) == 0: # No detections left
+ break
+
+ track_indices_l = [
+ k for k in track_indices
+ if tracks[k].time_since_update == 1 + level
+ ]
+ if len(track_indices_l) == 0: # Nothing to match at this level
+ continue
+
+ matches_l, _, unmatched_detections = \
+ min_cost_matching(
+ distance_metric, max_distance, tracks, detections,
+ track_indices_l, unmatched_detections)
+ matches += matches_l
+ unmatched_tracks = list(set(track_indices) - set(k for k, _ in matches))
+ return matches, unmatched_tracks, unmatched_detections
+
+
+def gate_cost_matrix(
+ kf, cost_matrix, tracks, detections, track_indices, detection_indices,
+ gated_cost=INFTY_COST, only_position=False):
+ """Invalidate infeasible entries in cost matrix based on the state
+ distributions obtained by Kalman filtering.
+
+ Parameters
+ ----------
+ kf : The Kalman filter.
+ cost_matrix : ndarray
+ The NxM dimensional cost matrix, where N is the number of track indices
+ and M is the number of detection indices, such that entry (i, j) is the
+ association cost between `tracks[track_indices[i]]` and
+ `detections[detection_indices[j]]`.
+ tracks : List[track.Track]
+ A list of predicted tracks at the current time step.
+ detections : List[detection.Detection]
+ A list of detections at the current time step.
+ track_indices : List[int]
+ List of track indices that maps rows in `cost_matrix` to tracks in
+ `tracks` (see description above).
+ detection_indices : List[int]
+ List of detection indices that maps columns in `cost_matrix` to
+ detections in `detections` (see description above).
+ gated_cost : Optional[float]
+ Entries in the cost matrix corresponding to infeasible associations are
+ set this value. Defaults to a very large value.
+ only_position : Optional[bool]
+ If True, only the x, y position of the state distribution is considered
+ during gating. Defaults to False.
+
+ Returns
+ -------
+ ndarray
+ Returns the modified cost matrix.
+
+ """
+ gating_dim = 2 if only_position else 4
+ gating_threshold = kalman_filter.chi2inv95[gating_dim]
+ measurements = np.asarray(
+ [detections[i].to_xyah() for i in detection_indices])
+ for row, track_idx in enumerate(track_indices):
+ track = tracks[track_idx]
+ gating_distance = kf.gating_distance(
+ track.mean, track.covariance, measurements, only_position)
+ cost_matrix[row, gating_distance > gating_threshold] = gated_cost
+ return cost_matrix
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/nn_matching.py b/Yolov5-Deepsort/deep_sort/deep_sort/sort/nn_matching.py
new file mode 100644
index 0000000000000000000000000000000000000000..2e7bfea4b87b0c256274937c8323ffc93fa5d61b
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/deep_sort/sort/nn_matching.py
@@ -0,0 +1,177 @@
+# vim: expandtab:ts=4:sw=4
+import numpy as np
+
+
+def _pdist(a, b):
+ """Compute pair-wise squared distance between points in `a` and `b`.
+
+ Parameters
+ ----------
+ a : array_like
+ An NxM matrix of N samples of dimensionality M.
+ b : array_like
+ An LxM matrix of L samples of dimensionality M.
+
+ Returns
+ -------
+ ndarray
+ Returns a matrix of size len(a), len(b) such that eleement (i, j)
+ contains the squared distance between `a[i]` and `b[j]`.
+
+ """
+ a, b = np.asarray(a), np.asarray(b)
+ if len(a) == 0 or len(b) == 0:
+ return np.zeros((len(a), len(b)))
+ a2, b2 = np.square(a).sum(axis=1), np.square(b).sum(axis=1)
+ r2 = -2. * np.dot(a, b.T) + a2[:, None] + b2[None, :]
+ r2 = np.clip(r2, 0., float(np.inf))
+ return r2
+
+
+def _cosine_distance(a, b, data_is_normalized=False):
+ """Compute pair-wise cosine distance between points in `a` and `b`.
+
+ Parameters
+ ----------
+ a : array_like
+ An NxM matrix of N samples of dimensionality M.
+ b : array_like
+ An LxM matrix of L samples of dimensionality M.
+ data_is_normalized : Optional[bool]
+ If True, assumes rows in a and b are unit length vectors.
+ Otherwise, a and b are explicitly normalized to lenght 1.
+
+ Returns
+ -------
+ ndarray
+ Returns a matrix of size len(a), len(b) such that eleement (i, j)
+ contains the squared distance between `a[i]` and `b[j]`.
+
+ """
+ if not data_is_normalized:
+ a = np.asarray(a) / np.linalg.norm(a, axis=1, keepdims=True)
+ b = np.asarray(b) / np.linalg.norm(b, axis=1, keepdims=True)
+ return 1. - np.dot(a, b.T)
+
+
+def _nn_euclidean_distance(x, y):
+ """ Helper function for nearest neighbor distance metric (Euclidean).
+
+ Parameters
+ ----------
+ x : ndarray
+ A matrix of N row-vectors (sample points).
+ y : ndarray
+ A matrix of M row-vectors (query points).
+
+ Returns
+ -------
+ ndarray
+ A vector of length M that contains for each entry in `y` the
+ smallest Euclidean distance to a sample in `x`.
+
+ """
+ distances = _pdist(x, y)
+ return np.maximum(0.0, distances.min(axis=0))
+
+
+def _nn_cosine_distance(x, y):
+ """ Helper function for nearest neighbor distance metric (cosine).
+
+ Parameters
+ ----------
+ x : ndarray
+ A matrix of N row-vectors (sample points).
+ y : ndarray
+ A matrix of M row-vectors (query points).
+
+ Returns
+ -------
+ ndarray
+ A vector of length M that contains for each entry in `y` the
+ smallest cosine distance to a sample in `x`.
+
+ """
+ distances = _cosine_distance(x, y)
+ return distances.min(axis=0)
+
+
+class NearestNeighborDistanceMetric(object):
+ """
+ A nearest neighbor distance metric that, for each target, returns
+ the closest distance to any sample that has been observed so far.
+
+ Parameters
+ ----------
+ metric : str
+ Either "euclidean" or "cosine".
+ matching_threshold: float
+ The matching threshold. Samples with larger distance are considered an
+ invalid match.
+ budget : Optional[int]
+ If not None, fix samples per class to at most this number. Removes
+ the oldest samples when the budget is reached.
+
+ Attributes
+ ----------
+ samples : Dict[int -> List[ndarray]]
+ A dictionary that maps from target identities to the list of samples
+ that have been observed so far.
+
+ """
+
+ def __init__(self, metric, matching_threshold, budget=None):
+
+
+ if metric == "euclidean":
+ self._metric = _nn_euclidean_distance
+ elif metric == "cosine":
+ self._metric = _nn_cosine_distance
+ else:
+ raise ValueError(
+ "Invalid metric; must be either 'euclidean' or 'cosine'")
+ self.matching_threshold = matching_threshold
+ self.budget = budget
+ self.samples = {}
+
+ def partial_fit(self, features, targets, active_targets):
+ """Update the distance metric with new data.
+
+ Parameters
+ ----------
+ features : ndarray
+ An NxM matrix of N features of dimensionality M.
+ targets : ndarray
+ An integer array of associated target identities.
+ active_targets : List[int]
+ A list of targets that are currently present in the scene.
+
+ """
+ for feature, target in zip(features, targets):
+ self.samples.setdefault(target, []).append(feature)
+ if self.budget is not None:
+ self.samples[target] = self.samples[target][-self.budget:]
+ self.samples = {k: self.samples[k] for k in active_targets}
+
+ def distance(self, features, targets):
+ """Compute distance between features and targets.
+
+ Parameters
+ ----------
+ features : ndarray
+ An NxM matrix of N features of dimensionality M.
+ targets : List[int]
+ A list of targets to match the given `features` against.
+
+ Returns
+ -------
+ ndarray
+ Returns a cost matrix of shape len(targets), len(features), where
+ element (i, j) contains the closest squared distance between
+ `targets[i]` and `features[j]`.
+
+ """
+ cost_matrix = np.zeros((len(targets), len(features)))
+ for i, target in enumerate(targets):
+ cost_matrix[i, :] = self._metric(self.samples[target], features)
+ return cost_matrix
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/preprocessing.py b/Yolov5-Deepsort/deep_sort/deep_sort/sort/preprocessing.py
new file mode 100644
index 0000000000000000000000000000000000000000..5493b127f602dec398efac4269c00d31a3650ce9
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/deep_sort/sort/preprocessing.py
@@ -0,0 +1,73 @@
+# vim: expandtab:ts=4:sw=4
+import numpy as np
+import cv2
+
+
+def non_max_suppression(boxes, max_bbox_overlap, scores=None):
+ """Suppress overlapping detections.
+
+ Original code from [1]_ has been adapted to include confidence score.
+
+ .. [1] http://www.pyimagesearch.com/2015/02/16/
+ faster-non-maximum-suppression-python/
+
+ Examples
+ --------
+
+ >>> boxes = [d.roi for d in detections]
+ >>> scores = [d.confidence for d in detections]
+ >>> indices = non_max_suppression(boxes, max_bbox_overlap, scores)
+ >>> detections = [detections[i] for i in indices]
+
+ Parameters
+ ----------
+ boxes : ndarray
+ Array of ROIs (x, y, width, height).
+ max_bbox_overlap : float
+ ROIs that overlap more than this values are suppressed.
+ scores : Optional[array_like]
+ Detector confidence score.
+
+ Returns
+ -------
+ List[int]
+ Returns indices of detections that have survived non-maxima suppression.
+
+ """
+ if len(boxes) == 0:
+ return []
+
+ boxes = boxes.astype(np.float)
+ pick = []
+
+ x1 = boxes[:, 0]
+ y1 = boxes[:, 1]
+ x2 = boxes[:, 2] + boxes[:, 0]
+ y2 = boxes[:, 3] + boxes[:, 1]
+
+ area = (x2 - x1 + 1) * (y2 - y1 + 1)
+ if scores is not None:
+ idxs = np.argsort(scores)
+ else:
+ idxs = np.argsort(y2)
+
+ while len(idxs) > 0:
+ last = len(idxs) - 1
+ i = idxs[last]
+ pick.append(i)
+
+ xx1 = np.maximum(x1[i], x1[idxs[:last]])
+ yy1 = np.maximum(y1[i], y1[idxs[:last]])
+ xx2 = np.minimum(x2[i], x2[idxs[:last]])
+ yy2 = np.minimum(y2[i], y2[idxs[:last]])
+
+ w = np.maximum(0, xx2 - xx1 + 1)
+ h = np.maximum(0, yy2 - yy1 + 1)
+
+ overlap = (w * h) / area[idxs[:last]]
+
+ idxs = np.delete(
+ idxs, np.concatenate(
+ ([last], np.where(overlap > max_bbox_overlap)[0])))
+
+ return pick
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/track.py b/Yolov5-Deepsort/deep_sort/deep_sort/sort/track.py
new file mode 100644
index 0000000000000000000000000000000000000000..e46d391a1bd7667d3e9fe52d88fe8de51c2e70ac
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/deep_sort/sort/track.py
@@ -0,0 +1,168 @@
+# vim: expandtab:ts=4:sw=4
+
+
+class TrackState:
+ """
+ Enumeration type for the single target track state. Newly created tracks are
+ classified as `tentative` until enough evidence has been collected. Then,
+ the track state is changed to `confirmed`. Tracks that are no longer alive
+ are classified as `deleted` to mark them for removal from the set of active
+ tracks.
+
+ """
+
+ Tentative = 1
+ Confirmed = 2
+ Deleted = 3
+
+
+class Track:
+ """
+ A single target track with state space `(x, y, a, h)` and associated
+ velocities, where `(x, y)` is the center of the bounding box, `a` is the
+ aspect ratio and `h` is the height.
+
+ Parameters
+ ----------
+ mean : ndarray
+ Mean vector of the initial state distribution.
+ covariance : ndarray
+ Covariance matrix of the initial state distribution.
+ track_id : int
+ A unique track identifier.
+ n_init : int
+ Number of consecutive detections before the track is confirmed. The
+ track state is set to `Deleted` if a miss occurs within the first
+ `n_init` frames.
+ max_age : int
+ The maximum number of consecutive misses before the track state is
+ set to `Deleted`.
+ feature : Optional[ndarray]
+ Feature vector of the detection this track originates from. If not None,
+ this feature is added to the `features` cache.
+
+ Attributes
+ ----------
+ mean : ndarray
+ Mean vector of the initial state distribution.
+ covariance : ndarray
+ Covariance matrix of the initial state distribution.
+ track_id : int
+ A unique track identifier.
+ hits : int
+ Total number of measurement updates.
+ age : int
+ Total number of frames since first occurance.
+ time_since_update : int
+ Total number of frames since last measurement update.
+ state : TrackState
+ The current track state.
+ features : List[ndarray]
+ A cache of features. On each measurement update, the associated feature
+ vector is added to this list.
+
+ """
+
+ def __init__(self, mean, cls_, covariance, track_id, n_init, max_age,
+ feature=None):
+ self.mean = mean
+ self.cls_ = cls_
+ self.covariance = covariance
+ self.track_id = track_id
+ self.hits = 1
+ self.age = 1
+ self.time_since_update = 0
+
+ self.state = TrackState.Tentative
+ self.features = []
+ if feature is not None:
+ self.features.append(feature)
+
+ self._n_init = n_init
+ self._max_age = max_age
+
+ def to_tlwh(self):
+ """Get current position in bounding box format `(top left x, top left y,
+ width, height)`.
+
+ Returns
+ -------
+ ndarray
+ The bounding box.
+
+ """
+ ret = self.mean[:4].copy()
+ ret[2] *= ret[3]
+ ret[:2] -= ret[2:] / 2
+ return ret
+
+ def to_tlbr(self):
+ """Get current position in bounding box format `(min x, miny, max x,
+ max y)`.
+
+ Returns
+ -------
+ ndarray
+ The bounding box.
+
+ """
+ ret = self.to_tlwh()
+ ret[2:] = ret[:2] + ret[2:]
+ return ret
+
+ def predict(self, kf):
+ """Propagate the state distribution to the current time step using a
+ Kalman filter prediction step.
+
+ Parameters
+ ----------
+ kf : kalman_filter.KalmanFilter
+ The Kalman filter.
+
+ """
+ self.mean, self.covariance = kf.predict(self.mean, self.covariance)
+ self.age += 1
+ self.time_since_update += 1
+
+ def update(self, kf, detection):
+ """Perform Kalman filter measurement update step and update the feature
+ cache.
+
+ Parameters
+ ----------
+ kf : kalman_filter.KalmanFilter
+ The Kalman filter.
+ detection : Detection
+ The associated detection.
+
+ """
+ self.mean, self.covariance = kf.update(
+ self.mean, self.covariance, detection.to_xyah())
+ self.features.append(detection.feature)
+ self.cls_ = detection.cls_
+
+ self.hits += 1
+ self.time_since_update = 0
+ if self.state == TrackState.Tentative and self.hits >= self._n_init:
+ self.state = TrackState.Confirmed
+
+ def mark_missed(self):
+ """Mark this track as missed (no association at the current time step).
+ """
+ if self.state == TrackState.Tentative:
+ self.state = TrackState.Deleted
+ elif self.time_since_update > self._max_age:
+ self.state = TrackState.Deleted
+
+ def is_tentative(self):
+ """Returns True if this track is tentative (unconfirmed).
+ """
+ return self.state == TrackState.Tentative
+
+ def is_confirmed(self):
+ """Returns True if this track is confirmed."""
+ return self.state == TrackState.Confirmed
+
+ def is_deleted(self):
+ """Returns True if this track is dead and should be deleted."""
+ return self.state == TrackState.Deleted
diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/tracker.py b/Yolov5-Deepsort/deep_sort/deep_sort/sort/tracker.py
new file mode 100644
index 0000000000000000000000000000000000000000..d27c9b35d298744f43b2466b45b793677712346b
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/deep_sort/sort/tracker.py
@@ -0,0 +1,435 @@
+# vim: expandtab:ts=4:sw=4
+from __future__ import absolute_import
+import numpy as np
+from . import kalman_filter
+from . import linear_assignment
+from .detection import Detection
+from . import iou_matching
+from .track import Track
+import rich
+
+class Tracker:
+
+ def __init__(self, metric, max_iou_distance=0.7, max_age=70, n_init=3, window_size=10):
+ self.metric = metric
+ self.max_iou_distance = max_iou_distance
+ self.max_age = max_age
+ self.n_init = n_init
+
+ self.kf = kalman_filter.KalmanFilter()
+ self.tracks = []
+ self._next_id = 1
+
+
+ # DDM parameters
+ self.match_history = [] # Store match history
+ self.evidence_threshold = 3 # Example threshold
+ self.window_size = window_size
+ self.evidence = {} # Initialize evidence dictionary
+ self.DDM = DDM()
+
+
+ def predict(self):
+ """Propagate track state distributions one time step forward.
+
+ This function should be called once every time step, before `update`.
+ """
+ for track in self.tracks:
+ track.predict(self.kf)
+
+ def update(self, detections):
+ """Perform measurement update and track management.
+
+ Parameters
+ ----------
+ detections : List[deep_sort.detection.Detection]
+ A list of detections at the current time step.
+
+ """
+
+ # matches, unmatched_tracks, unmatched_detections = self._match(detections)
+
+ # # Record current matches
+ # self.match_history.append(matches)
+ # if len(self.match_history) > self.window_size:
+ # self.match_history.pop(0)
+
+ # # Use evidence accumulation to finalize matches
+ # final_matches = self.accumulate_evidence(matches)
+
+ # # Update track set with final matches
+ # for track_idx, detection_idx in final_matches:
+
+ # self.tracks[track_idx].update(self.kf, detections[detection_idx])
+ # for track_idx in unmatched_tracks:
+ # self.tracks[track_idx].mark_missed()
+ # for detection_idx in unmatched_detections:
+ # self._initiate_track(detections[detection_idx])
+ # self.tracks = [t for t in self.tracks if not t.is_deleted()]
+
+ # # Update distance metric
+ # active_targets = [t.track_id for t in self.tracks if t.is_confirmed()]
+ # features, targets = [], []
+ # for track in self.tracks:
+ # if not track.is_confirmed():
+ # continue
+ # features += track.features
+ # targets += [track.track_id for _ in track.features]
+ # track.features = []
+ # self.metric.partial_fit(
+ # np.asarray(features), np.asarray(targets), active_targets)
+ ####################################################################################
+ # Run matching cascade.
+ matches, unmatched_tracks, unmatched_detections = \
+ self._match(detections)
+
+ #开始为DDM积累证据喵
+ self.DDM.add_matches(matches)
+ self.DDM.add_detections(detections=detections)
+ self.DDM.add_tracks(self.tracks)
+ self.DDM.remove_old()
+ self.DDM.log_info()
+ final_matches, new_unmatched_tracks, new_unmatched_detections = self.DDM.final_judge()
+ matches = final_matches
+ for new_unmatched_track in new_unmatched_tracks:
+ unmatched_tracks.append(new_unmatched_track)
+ for new_unmatched_detection in new_unmatched_detections:
+ unmatched_detections.append(new_unmatched_detection)
+ #self.DDM.final_judge()
+ #rich.print(matches,unmatched_detections,unmatched_tracks)
+
+ # Record current matches
+ self.match_history.append(matches)
+ if len(self.match_history) > self.window_size:
+ self.match_history.pop(0)
+
+ # Update track set.
+ for track_idx, detection_idx in matches:
+ self.tracks[track_idx].update(
+ self.kf, detections[detection_idx])
+ for track_idx in unmatched_tracks:
+ self.tracks[track_idx].mark_missed()
+ for detection_idx in unmatched_detections:
+ self._initiate_track(detections[detection_idx])
+ self.tracks = [t for t in self.tracks if not t.is_deleted()]
+
+ # Update distance metric.
+ active_targets = [t.track_id for t in self.tracks if t.is_confirmed()]
+ features, targets = [], []
+ for track in self.tracks:
+ if not track.is_confirmed():
+ continue
+ features += track.features
+ targets += [track.track_id for _ in track.features]
+ track.features = []
+ self.metric.partial_fit(
+ np.asarray(features), np.asarray(targets), active_targets)
+
+ def _match(self, detections):
+
+ def gated_metric(tracks, dets, track_indices, detection_indices):
+ features = np.array([dets[i].feature for i in detection_indices])
+ targets = np.array([tracks[i].track_id for i in track_indices])
+ cost_matrix = self.metric.distance(features, targets)
+ cost_matrix = linear_assignment.gate_cost_matrix(
+ self.kf, cost_matrix, tracks, dets, track_indices,
+ detection_indices)
+
+
+
+ return cost_matrix
+
+ # Split track set into confirmed and unconfirmed tracks.
+ confirmed_tracks = [
+ i for i, t in enumerate(self.tracks) if t.is_confirmed()]
+ unconfirmed_tracks = [
+ i for i, t in enumerate(self.tracks) if not t.is_confirmed()]
+
+ # Associate confirmed tracks using appearance features.
+ matches_a, unmatched_tracks_a, unmatched_detections = \
+ linear_assignment.matching_cascade(
+ gated_metric, self.metric.matching_threshold, self.max_age,
+ self.tracks, detections, confirmed_tracks)
+
+ # Associate remaining tracks together with unconfirmed tracks using IOU.
+ iou_track_candidates = unconfirmed_tracks + [
+ k for k in unmatched_tracks_a if
+ self.tracks[k].time_since_update == 1]
+ unmatched_tracks_a = [
+ k for k in unmatched_tracks_a if
+ self.tracks[k].time_since_update != 1]
+ matches_b, unmatched_tracks_b, unmatched_detections = \
+ linear_assignment.min_cost_matching(
+ iou_matching.iou_cost, self.max_iou_distance, self.tracks,
+ detections, iou_track_candidates, unmatched_detections)
+ matches = matches_a + matches_b
+ unmatched_tracks = list(set(unmatched_tracks_a + unmatched_tracks_b))
+
+
+
+ return matches, unmatched_tracks, unmatched_detections
+
+ def _initiate_track(self, detection):
+ mean, covariance = self.kf.initiate(detection.to_xyah())
+ self.tracks.append(Track(
+ mean, detection.cls_, covariance, self._next_id, self.n_init, self.max_age,
+ detection.feature))
+ self._next_id += 1
+
+
+
+
+ def accumulate_evidence(self, current_matches):
+ rich.print(current_matches)
+ return current_matches
+ evidence = {}
+
+ # 初始化evidence字典,包含所有可能的匹配对,包括不在current_matches中的
+ for past_matches in reversed(self.match_history):
+ for track_idx, det_idx in past_matches:
+ evidence[(track_idx, det_idx)] = evidence.get((track_idx, det_idx), 0)
+
+ # 初始化current_matches中的匹配对
+ for track_idx, det_idx in current_matches:
+ evidence[(track_idx, det_idx)] = 1 # 初始分数为1
+
+ # 积累证据
+ for past_matches in reversed(self.match_history):
+ for track_idx, det_idx in past_matches:
+ evidence[(track_idx, det_idx)] += 10 # 如果在过去的匹配中出现过,则增加1分
+
+ # 调整证据
+ for key in evidence:
+ evidence[key] -= 0.2 # 所有匹配对减去0.2分
+
+ # 过滤匹配
+ final_matches = [
+ (track_idx, det_idx) for (track_idx, det_idx), score in evidence.items()
+ if score >= self.evidence_threshold
+ ]
+
+ return final_matches
+
+
+class DDM:
+ def __init__(self, history_lenth = 10, threshold = 5, evidence_rate = 1):
+ self.history_lenth = history_lenth
+ self.threshold = threshold
+ self.evidence_rate = evidence_rate
+ self.history_detections =[]
+ self.history_tracks =[]
+ self.history_matches = []
+ self.frame_id = 0
+
+ def add_detections(self, detections):
+ if detections is None:
+ detections = []
+ self.history_detections.append(detections)
+ # self.remove_old()
+
+ def add_matches(self, matches):
+ if matches is None:
+ matches = []
+ self.history_matches.append(matches)
+ # self.remove_old()
+
+ def add_tracks(self, tracks):
+ if tracks is None:
+ tracks = []
+ self.history_tracks.append(tracks)
+ # self.remove_old()
+
+ def log_info(self):
+ # rich.print("DDM当前长度",len(self.history_matches))
+ # rich.print("DDM历史匹配:",self.history_matches[-1])
+ # rich.print("DDM历史Detecions:",self.history_detections[-1])
+ # rich.print("DDM历史Tracks:", self.history_tracks[-1])
+ # rich.print("随便一组的tlbr")
+ if self.frame_id>5:
+ self.total_detection_match()
+ rich.print("-------------------------------------------------------------")
+ self.total_track_match()
+ #self.final_judge()
+ self.frame_id = self.frame_id+1
+
+
+
+
+ def remove_old(self):
+ if len(self.history_detections)!=len(self.history_matches) or len(self.history_detections)!=len(self.history_tracks):
+ rich.print("DDM历史长度不匹配,请检查代码捏qaq")
+ rich.print("Detection长度", len(self.history_detections))
+ rich.print("Matches长度", len(self.history_matches))
+ rich.print("Tracks长度", len(self.history_tracks))
+
+ while True:
+ if len(self.history_matches) > self.history_lenth:
+ self.history_matches.pop(0)
+ self.history_detections.pop(0)
+ self.history_tracks.pop(0)
+ else:
+ break
+
+ def total_detection_match(self):
+ #current_detection = self.history_detections[-1]
+ output = []
+ for current_detection in self.history_detections[-1]:
+ detection_result=[]
+ for track in self.history_tracks:
+ track_matches = []
+ for detection in track:
+ match = self.iou_match(current_detection, detection)
+ track_matches.append(match)
+ detection_result.append(track_matches)
+ output.append(detection_result)
+ #rich.print(output)
+ return output
+
+ def total_track_match(self):
+ output = []
+ for current_track in self.history_tracks[-1]:
+ detection_result=[]
+ for tracks in self.history_tracks:
+ track_matches = []
+ for track in tracks:
+ match = self.iou_match(current_track, track)
+ track_matches.append(match)
+ detection_result.append(track_matches)
+ output.append(detection_result)
+ # rich.print(output)
+ return output
+
+
+
+
+ def final_judge(self):#最终裁决
+ if self.frame_id<10:
+ return self.history_matches[-1],[],[]
+ current_detections = self.history_detections[-1]
+ current_tracks = self.history_tracks[-1]
+ current_matches = self.history_matches
+ iou_detection_history_tracks_result = self.total_detection_match()
+ iou_track_history_tracks_result = self.total_track_match()
+
+ iou_detection_history_tracks_result = [sublist[::-1] for sublist in iou_detection_history_tracks_result]
+ iou_track_history_tracks_result = [sublist[::-1] for sublist in iou_track_history_tracks_result]
+ #iou_detection_history_tracks_result.reverse()
+ #iou_track_history_tracks_result.reverse()
+
+
+ evidence = {}
+
+ #证据初始化捏
+
+ # final_evidence = 0
+
+ for now_detection_id, now_detection_id_detections in enumerate(iou_detection_history_tracks_result):
+ for now_track_id, now_track_id_tracks in enumerate(iou_track_history_tracks_result):
+ result_matrix = self.logical_and_lists(now_detection_id_detections, now_track_id_tracks)
+ true_count = sum(sum(row) for row in result_matrix)
+ #rich.print(true_count)
+ evidence[(now_track_id,now_detection_id)] = self.evidence_rate*true_count
+
+ # rich.print(current_matches[-1])
+ # rich.print(evidence)
+ # rich.print(iou_detection_history_tracks_result[-1])
+ rich.print(len(iou_detection_history_tracks_result))
+ new_unmatched_tracks = []
+ new_unmatched_detections = []
+ for (track,detection) in current_matches[-1]:
+ if evidence[(track, detection)] <1:
+ #pass
+ new_unmatched_tracks.append(track)
+ new_unmatched_detections.append(detection)
+ #rich.print('niuniu', match)
+
+
+
+ fianl_matches = [match for match in current_matches[-1] if evidence[match] >= 1]
+ return fianl_matches, new_unmatched_tracks, new_unmatched_detections
+
+
+
+
+
+
+ # rich.print(iou_track_history_tracks_result)
+ # for i in range(len(iou_detection_history_tracks_result)):
+ # for detections_ids,detections in enumerate(iou_detection_history_tracks_result[i]):
+ # for tracks_ids, tracks in enumerate(iou_track_history_tracks_result[i]):
+ # for match_id, match in enumerate(current_matches):
+ # for detection_id, detection in enumerate(detections):
+ # for track_id, track in enumerate(tracks):
+ # if(track == True) and (detection == True) and (detections_ids == tracks_ids) :
+ # final_evidence += self.evidence_rate + final_evidence
+
+
+ # if(detection == True) and (track == True):
+ # final_evidence +=self.evidence_rate
+ #rich.print(detection, track, match, "牛子")
+
+ #rich.print("当前得分:", final_evidence)
+
+
+
+
+
+
+
+
+ def iou_match(self, detection, track ):#单组的detect与track的iou匹配哦
+ ##rich.print(detection.to_tlbr())
+ ##rich.print(track.to_tlbr())
+ det_tlbr = detection.to_tlbr()
+ track_tlbr = track.to_tlbr()
+
+ # Calculate the intersection coordinates
+ x_left = max(det_tlbr[0], track_tlbr[0])
+ y_top = max(det_tlbr[1], track_tlbr[1])
+ x_right = min(det_tlbr[2], track_tlbr[2])
+ y_bottom = min(det_tlbr[3], track_tlbr[3])
+
+ # Calculate the area of intersection
+ if x_right < x_left or y_bottom < y_top:
+ return False # No overlap
+
+ intersection_area = (x_right - x_left) * (y_bottom - y_top)
+
+ # Calculate the area of both rectangles
+ det_area = (det_tlbr[2] - det_tlbr[0]) * (det_tlbr[3] - det_tlbr[1])
+ track_area = (track_tlbr[2] - track_tlbr[0]) * (track_tlbr[3] - track_tlbr[1])
+
+ # Calculate the union area
+ union_area = det_area + track_area - intersection_area
+
+ # Calculate the IoU
+ iou = intersection_area / union_area
+
+ if iou> 0.1:
+ return True
+
+
+ return False
+
+
+ def logical_and_lists(self, list1, list2):
+ if len(list1) != len(list2) or len(list1[0]) != len(list2[0]):
+ return "Error: Input lists are not of the same size"
+
+ result = [[list1[i][j] and list2[i][j] for j in range(len(list1[i]))] for i in range(len(list1))]
+
+ return result
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Yolov5-Deepsort/deep_sort/utils/__init__.py b/Yolov5-Deepsort/deep_sort/utils/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Yolov5-Deepsort/deep_sort/utils/__pycache__/__init__.cpython-36.pyc b/Yolov5-Deepsort/deep_sort/utils/__pycache__/__init__.cpython-36.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..8b78a3774e297bfa3a92ff2ae77f138373a30f67
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/utils/__pycache__/__init__.cpython-36.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/utils/__pycache__/__init__.cpython-37.pyc b/Yolov5-Deepsort/deep_sort/utils/__pycache__/__init__.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..cab1729ff02daa25ac6cb7308e45fcc703a877be
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/utils/__pycache__/__init__.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/utils/__pycache__/parser.cpython-36.pyc b/Yolov5-Deepsort/deep_sort/utils/__pycache__/parser.cpython-36.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b5c82da3dbebf17fc41a3c56f9c8f9bdbe0bc8e0
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/utils/__pycache__/parser.cpython-36.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/utils/__pycache__/parser.cpython-37.pyc b/Yolov5-Deepsort/deep_sort/utils/__pycache__/parser.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..875847c85eb0f2b8c05dd41a3d4651a69e2e690a
Binary files /dev/null and b/Yolov5-Deepsort/deep_sort/utils/__pycache__/parser.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/deep_sort/utils/asserts.py b/Yolov5-Deepsort/deep_sort/utils/asserts.py
new file mode 100644
index 0000000000000000000000000000000000000000..59a73cc04025762d6490fcd2945a747d963def32
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/utils/asserts.py
@@ -0,0 +1,13 @@
+from os import environ
+
+
+def assert_in(file, files_to_check):
+ if file not in files_to_check:
+ raise AssertionError("{} does not exist in the list".format(str(file)))
+ return True
+
+
+def assert_in_env(check_list: list):
+ for item in check_list:
+ assert_in(item, environ.keys())
+ return True
diff --git a/Yolov5-Deepsort/deep_sort/utils/draw.py b/Yolov5-Deepsort/deep_sort/utils/draw.py
new file mode 100644
index 0000000000000000000000000000000000000000..bc7cb537978e86805d5d9789785a8afe67df9030
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/utils/draw.py
@@ -0,0 +1,36 @@
+import numpy as np
+import cv2
+
+palette = (2 ** 11 - 1, 2 ** 15 - 1, 2 ** 20 - 1)
+
+
+def compute_color_for_labels(label):
+ """
+ Simple function that adds fixed color depending on the class
+ """
+ color = [int((p * (label ** 2 - label + 1)) % 255) for p in palette]
+ return tuple(color)
+
+
+def draw_boxes(img, bbox, identities=None, offset=(0,0)):
+ for i,box in enumerate(bbox):
+ x1,y1,x2,y2 = [int(i) for i in box]
+ x1 += offset[0]
+ x2 += offset[0]
+ y1 += offset[1]
+ y2 += offset[1]
+ # box text and bar
+ id = int(identities[i]) if identities is not None else 0
+ color = compute_color_for_labels(id)
+ label = '{}{:d}'.format("", id)
+ t_size = cv2.getTextSize(label, cv2.FONT_HERSHEY_PLAIN, 2 , 2)[0]
+ cv2.rectangle(img,(x1, y1),(x2,y2),color,3)
+ cv2.rectangle(img,(x1, y1),(x1+t_size[0]+3,y1+t_size[1]+4), color,-1)
+ cv2.putText(img,label,(x1,y1+t_size[1]+4), cv2.FONT_HERSHEY_PLAIN, 2, [255,255,255], 2)
+ return img
+
+
+
+if __name__ == '__main__':
+ for i in range(82):
+ print(compute_color_for_labels(i))
diff --git a/Yolov5-Deepsort/deep_sort/utils/evaluation.py b/Yolov5-Deepsort/deep_sort/utils/evaluation.py
new file mode 100644
index 0000000000000000000000000000000000000000..100179407181933d59809b25400d115cfa789867
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/utils/evaluation.py
@@ -0,0 +1,103 @@
+import os
+import numpy as np
+import copy
+import motmetrics as mm
+mm.lap.default_solver = 'lap'
+from utils.io import read_results, unzip_objs
+
+
+class Evaluator(object):
+
+ def __init__(self, data_root, seq_name, data_type):
+ self.data_root = data_root
+ self.seq_name = seq_name
+ self.data_type = data_type
+
+ self.load_annotations()
+ self.reset_accumulator()
+
+ def load_annotations(self):
+ assert self.data_type == 'mot'
+
+ gt_filename = os.path.join(self.data_root, self.seq_name, 'gt', 'gt.txt')
+ self.gt_frame_dict = read_results(gt_filename, self.data_type, is_gt=True)
+ self.gt_ignore_frame_dict = read_results(gt_filename, self.data_type, is_ignore=True)
+
+ def reset_accumulator(self):
+ self.acc = mm.MOTAccumulator(auto_id=True)
+
+ def eval_frame(self, frame_id, trk_tlwhs, trk_ids, rtn_events=False):
+ # results
+ trk_tlwhs = np.copy(trk_tlwhs)
+ trk_ids = np.copy(trk_ids)
+
+ # gts
+ gt_objs = self.gt_frame_dict.get(frame_id, [])
+ gt_tlwhs, gt_ids = unzip_objs(gt_objs)[:2]
+
+ # ignore boxes
+ ignore_objs = self.gt_ignore_frame_dict.get(frame_id, [])
+ ignore_tlwhs = unzip_objs(ignore_objs)[0]
+
+
+ # remove ignored results
+ keep = np.ones(len(trk_tlwhs), dtype=bool)
+ iou_distance = mm.distances.iou_matrix(ignore_tlwhs, trk_tlwhs, max_iou=0.5)
+ if len(iou_distance) > 0:
+ match_is, match_js = mm.lap.linear_sum_assignment(iou_distance)
+ match_is, match_js = map(lambda a: np.asarray(a, dtype=int), [match_is, match_js])
+ match_ious = iou_distance[match_is, match_js]
+
+ match_js = np.asarray(match_js, dtype=int)
+ match_js = match_js[np.logical_not(np.isnan(match_ious))]
+ keep[match_js] = False
+ trk_tlwhs = trk_tlwhs[keep]
+ trk_ids = trk_ids[keep]
+
+ # get distance matrix
+ iou_distance = mm.distances.iou_matrix(gt_tlwhs, trk_tlwhs, max_iou=0.5)
+
+ # acc
+ self.acc.update(gt_ids, trk_ids, iou_distance)
+
+ if rtn_events and iou_distance.size > 0 and hasattr(self.acc, 'last_mot_events'):
+ events = self.acc.last_mot_events # only supported by https://github.com/longcw/py-motmetrics
+ else:
+ events = None
+ return events
+
+ def eval_file(self, filename):
+ self.reset_accumulator()
+
+ result_frame_dict = read_results(filename, self.data_type, is_gt=False)
+ frames = sorted(list(set(self.gt_frame_dict.keys()) | set(result_frame_dict.keys())))
+ for frame_id in frames:
+ trk_objs = result_frame_dict.get(frame_id, [])
+ trk_tlwhs, trk_ids = unzip_objs(trk_objs)[:2]
+ self.eval_frame(frame_id, trk_tlwhs, trk_ids, rtn_events=False)
+
+ return self.acc
+
+ @staticmethod
+ def get_summary(accs, names, metrics=('mota', 'num_switches', 'idp', 'idr', 'idf1', 'precision', 'recall')):
+ names = copy.deepcopy(names)
+ if metrics is None:
+ metrics = mm.metrics.motchallenge_metrics
+ metrics = copy.deepcopy(metrics)
+
+ mh = mm.metrics.create()
+ summary = mh.compute_many(
+ accs,
+ metrics=metrics,
+ names=names,
+ generate_overall=True
+ )
+
+ return summary
+
+ @staticmethod
+ def save_summary(summary, filename):
+ import pandas as pd
+ writer = pd.ExcelWriter(filename)
+ summary.to_excel(writer)
+ writer.save()
diff --git a/Yolov5-Deepsort/deep_sort/utils/io.py b/Yolov5-Deepsort/deep_sort/utils/io.py
new file mode 100644
index 0000000000000000000000000000000000000000..2dc9afd24019cd930eef6c21ab9f579313dd3b3a
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/utils/io.py
@@ -0,0 +1,133 @@
+import os
+from typing import Dict
+import numpy as np
+
+# from utils.log import get_logger
+
+
+def write_results(filename, results, data_type):
+ if data_type == 'mot':
+ save_format = '{frame},{id},{x1},{y1},{w},{h},-1,-1,-1,-1\n'
+ elif data_type == 'kitti':
+ save_format = '{frame} {id} pedestrian 0 0 -10 {x1} {y1} {x2} {y2} -10 -10 -10 -1000 -1000 -1000 -10\n'
+ else:
+ raise ValueError(data_type)
+
+ with open(filename, 'w') as f:
+ for frame_id, tlwhs, track_ids in results:
+ if data_type == 'kitti':
+ frame_id -= 1
+ for tlwh, track_id in zip(tlwhs, track_ids):
+ if track_id < 0:
+ continue
+ x1, y1, w, h = tlwh
+ x2, y2 = x1 + w, y1 + h
+ line = save_format.format(frame=frame_id, id=track_id, x1=x1, y1=y1, x2=x2, y2=y2, w=w, h=h)
+ f.write(line)
+
+
+# def write_results(filename, results_dict: Dict, data_type: str):
+# if not filename:
+# return
+# path = os.path.dirname(filename)
+# if not os.path.exists(path):
+# os.makedirs(path)
+
+# if data_type in ('mot', 'mcmot', 'lab'):
+# save_format = '{frame},{id},{x1},{y1},{w},{h},1,-1,-1,-1\n'
+# elif data_type == 'kitti':
+# save_format = '{frame} {id} pedestrian -1 -1 -10 {x1} {y1} {x2} {y2} -1 -1 -1 -1000 -1000 -1000 -10 {score}\n'
+# else:
+# raise ValueError(data_type)
+
+# with open(filename, 'w') as f:
+# for frame_id, frame_data in results_dict.items():
+# if data_type == 'kitti':
+# frame_id -= 1
+# for tlwh, track_id in frame_data:
+# if track_id < 0:
+# continue
+# x1, y1, w, h = tlwh
+# x2, y2 = x1 + w, y1 + h
+# line = save_format.format(frame=frame_id, id=track_id, x1=x1, y1=y1, x2=x2, y2=y2, w=w, h=h, score=1.0)
+# f.write(line)
+# logger.info('Save results to {}'.format(filename))
+
+
+def read_results(filename, data_type: str, is_gt=False, is_ignore=False):
+ if data_type in ('mot', 'lab'):
+ read_fun = read_mot_results
+ else:
+ raise ValueError('Unknown data type: {}'.format(data_type))
+
+ return read_fun(filename, is_gt, is_ignore)
+
+
+"""
+labels={'ped', ... % 1
+'person_on_vhcl', ... % 2
+'car', ... % 3
+'bicycle', ... % 4
+'mbike', ... % 5
+'non_mot_vhcl', ... % 6
+'static_person', ... % 7
+'distractor', ... % 8
+'occluder', ... % 9
+'occluder_on_grnd', ... %10
+'occluder_full', ... % 11
+'reflection', ... % 12
+'crowd' ... % 13
+};
+"""
+
+
+def read_mot_results(filename, is_gt, is_ignore):
+ valid_labels = {1}
+ ignore_labels = {2, 7, 8, 12}
+ results_dict = dict()
+ if os.path.isfile(filename):
+ with open(filename, 'r') as f:
+ for line in f.readlines():
+ linelist = line.split(',')
+ if len(linelist) < 7:
+ continue
+ fid = int(linelist[0])
+ if fid < 1:
+ continue
+ results_dict.setdefault(fid, list())
+
+ if is_gt:
+ if 'MOT16-' in filename or 'MOT17-' in filename:
+ label = int(float(linelist[7]))
+ mark = int(float(linelist[6]))
+ if mark == 0 or label not in valid_labels:
+ continue
+ score = 1
+ elif is_ignore:
+ if 'MOT16-' in filename or 'MOT17-' in filename:
+ label = int(float(linelist[7]))
+ vis_ratio = float(linelist[8])
+ if label not in ignore_labels and vis_ratio >= 0:
+ continue
+ else:
+ continue
+ score = 1
+ else:
+ score = float(linelist[6])
+
+ tlwh = tuple(map(float, linelist[2:6]))
+ target_id = int(linelist[1])
+
+ results_dict[fid].append((tlwh, target_id, score))
+
+ return results_dict
+
+
+def unzip_objs(objs):
+ if len(objs) > 0:
+ tlwhs, ids, scores = zip(*objs)
+ else:
+ tlwhs, ids, scores = [], [], []
+ tlwhs = np.asarray(tlwhs, dtype=float).reshape(-1, 4)
+
+ return tlwhs, ids, scores
\ No newline at end of file
diff --git a/Yolov5-Deepsort/deep_sort/utils/json_logger.py b/Yolov5-Deepsort/deep_sort/utils/json_logger.py
new file mode 100644
index 0000000000000000000000000000000000000000..0afd0b45df736866c49473db78286685d77660ac
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/utils/json_logger.py
@@ -0,0 +1,383 @@
+"""
+References:
+ https://medium.com/analytics-vidhya/creating-a-custom-logging-mechanism-for-real-time-object-detection-using-tdd-4ca2cfcd0a2f
+"""
+import json
+from os import makedirs
+from os.path import exists, join
+from datetime import datetime
+
+
+class JsonMeta(object):
+ HOURS = 3
+ MINUTES = 59
+ SECONDS = 59
+ PATH_TO_SAVE = 'LOGS'
+ DEFAULT_FILE_NAME = 'remaining'
+
+
+class BaseJsonLogger(object):
+ """
+ This is the base class that returns __dict__ of its own
+ it also returns the dicts of objects in the attributes that are list instances
+
+ """
+
+ def dic(self):
+ # returns dicts of objects
+ out = {}
+ for k, v in self.__dict__.items():
+ if hasattr(v, 'dic'):
+ out[k] = v.dic()
+ elif isinstance(v, list):
+ out[k] = self.list(v)
+ else:
+ out[k] = v
+ return out
+
+ @staticmethod
+ def list(values):
+ # applies the dic method on items in the list
+ return [v.dic() if hasattr(v, 'dic') else v for v in values]
+
+
+class Label(BaseJsonLogger):
+ """
+ For each bounding box there are various categories with confidences. Label class keeps track of that information.
+ """
+
+ def __init__(self, category: str, confidence: float):
+ self.category = category
+ self.confidence = confidence
+
+
+class Bbox(BaseJsonLogger):
+ """
+ This module stores the information for each frame and use them in JsonParser
+ Attributes:
+ labels (list): List of label module.
+ top (int):
+ left (int):
+ width (int):
+ height (int):
+
+ Args:
+ bbox_id (float):
+ top (int):
+ left (int):
+ width (int):
+ height (int):
+
+ References:
+ Check Label module for better understanding.
+
+
+ """
+
+ def __init__(self, bbox_id, top, left, width, height):
+ self.labels = []
+ self.bbox_id = bbox_id
+ self.top = top
+ self.left = left
+ self.width = width
+ self.height = height
+
+ def add_label(self, category, confidence):
+ # adds category and confidence only if top_k is not exceeded.
+ self.labels.append(Label(category, confidence))
+
+ def labels_full(self, value):
+ return len(self.labels) == value
+
+
+class Frame(BaseJsonLogger):
+ """
+ This module stores the information for each frame and use them in JsonParser
+ Attributes:
+ timestamp (float): The elapsed time of captured frame
+ frame_id (int): The frame number of the captured video
+ bboxes (list of Bbox objects): Stores the list of bbox objects.
+
+ References:
+ Check Bbox class for better information
+
+ Args:
+ timestamp (float):
+ frame_id (int):
+
+ """
+
+ def __init__(self, frame_id: int, timestamp: float = None):
+ self.frame_id = frame_id
+ self.timestamp = timestamp
+ self.bboxes = []
+
+ def add_bbox(self, bbox_id: int, top: int, left: int, width: int, height: int):
+ bboxes_ids = [bbox.bbox_id for bbox in self.bboxes]
+ if bbox_id not in bboxes_ids:
+ self.bboxes.append(Bbox(bbox_id, top, left, width, height))
+ else:
+ raise ValueError("Frame with id: {} already has a Bbox with id: {}".format(self.frame_id, bbox_id))
+
+ def add_label_to_bbox(self, bbox_id: int, category: str, confidence: float):
+ bboxes = {bbox.id: bbox for bbox in self.bboxes}
+ if bbox_id in bboxes.keys():
+ res = bboxes.get(bbox_id)
+ res.add_label(category, confidence)
+ else:
+ raise ValueError('the bbox with id: {} does not exists!'.format(bbox_id))
+
+
+class BboxToJsonLogger(BaseJsonLogger):
+ """
+ ُ This module is designed to automate the task of logging jsons. An example json is used
+ to show the contents of json file shortly
+ Example:
+ {
+ "video_details": {
+ "frame_width": 1920,
+ "frame_height": 1080,
+ "frame_rate": 20,
+ "video_name": "/home/gpu/codes/MSD/pedestrian_2/project/public/camera1.avi"
+ },
+ "frames": [
+ {
+ "frame_id": 329,
+ "timestamp": 3365.1254
+ "bboxes": [
+ {
+ "labels": [
+ {
+ "category": "pedestrian",
+ "confidence": 0.9
+ }
+ ],
+ "bbox_id": 0,
+ "top": 1257,
+ "left": 138,
+ "width": 68,
+ "height": 109
+ }
+ ]
+ }],
+
+ Attributes:
+ frames (dict): It's a dictionary that maps each frame_id to json attributes.
+ video_details (dict): information about video file.
+ top_k_labels (int): shows the allowed number of labels
+ start_time (datetime object): we use it to automate the json output by time.
+
+ Args:
+ top_k_labels (int): shows the allowed number of labels
+
+ """
+
+ def __init__(self, top_k_labels: int = 1):
+ self.frames = {}
+ self.video_details = self.video_details = dict(frame_width=None, frame_height=None, frame_rate=None,
+ video_name=None)
+ self.top_k_labels = top_k_labels
+ self.start_time = datetime.now()
+
+ def set_top_k(self, value):
+ self.top_k_labels = value
+
+ def frame_exists(self, frame_id: int) -> bool:
+ """
+ Args:
+ frame_id (int):
+
+ Returns:
+ bool: true if frame_id is recognized
+ """
+ return frame_id in self.frames.keys()
+
+ def add_frame(self, frame_id: int, timestamp: float = None) -> None:
+ """
+ Args:
+ frame_id (int):
+ timestamp (float): opencv captured frame time property
+
+ Raises:
+ ValueError: if frame_id would not exist in class frames attribute
+
+ Returns:
+ None
+
+ """
+ if not self.frame_exists(frame_id):
+ self.frames[frame_id] = Frame(frame_id, timestamp)
+ else:
+ raise ValueError("Frame id: {} already exists".format(frame_id))
+
+ def bbox_exists(self, frame_id: int, bbox_id: int) -> bool:
+ """
+ Args:
+ frame_id:
+ bbox_id:
+
+ Returns:
+ bool: if bbox exists in frame bboxes list
+ """
+ bboxes = []
+ if self.frame_exists(frame_id=frame_id):
+ bboxes = [bbox.bbox_id for bbox in self.frames[frame_id].bboxes]
+ return bbox_id in bboxes
+
+ def find_bbox(self, frame_id: int, bbox_id: int):
+ """
+
+ Args:
+ frame_id:
+ bbox_id:
+
+ Returns:
+ bbox_id (int):
+
+ Raises:
+ ValueError: if bbox_id does not exist in the bbox list of specific frame.
+ """
+ if not self.bbox_exists(frame_id, bbox_id):
+ raise ValueError("frame with id: {} does not contain bbox with id: {}".format(frame_id, bbox_id))
+ bboxes = {bbox.bbox_id: bbox for bbox in self.frames[frame_id].bboxes}
+ return bboxes.get(bbox_id)
+
+ def add_bbox_to_frame(self, frame_id: int, bbox_id: int, top: int, left: int, width: int, height: int) -> None:
+ """
+
+ Args:
+ frame_id (int):
+ bbox_id (int):
+ top (int):
+ left (int):
+ width (int):
+ height (int):
+
+ Returns:
+ None
+
+ Raises:
+ ValueError: if bbox_id already exist in frame information with frame_id
+ ValueError: if frame_id does not exist in frames attribute
+ """
+ if self.frame_exists(frame_id):
+ frame = self.frames[frame_id]
+ if not self.bbox_exists(frame_id, bbox_id):
+ frame.add_bbox(bbox_id, top, left, width, height)
+ else:
+ raise ValueError(
+ "frame with frame_id: {} already contains the bbox with id: {} ".format(frame_id, bbox_id))
+ else:
+ raise ValueError("frame with frame_id: {} does not exist".format(frame_id))
+
+ def add_label_to_bbox(self, frame_id: int, bbox_id: int, category: str, confidence: float):
+ """
+ Args:
+ frame_id:
+ bbox_id:
+ category:
+ confidence: the confidence value returned from yolo detection
+
+ Returns:
+ None
+
+ Raises:
+ ValueError: if labels quota (top_k_labels) exceeds.
+ """
+ bbox = self.find_bbox(frame_id, bbox_id)
+ if not bbox.labels_full(self.top_k_labels):
+ bbox.add_label(category, confidence)
+ else:
+ raise ValueError("labels in frame_id: {}, bbox_id: {} is fulled".format(frame_id, bbox_id))
+
+ def add_video_details(self, frame_width: int = None, frame_height: int = None, frame_rate: int = None,
+ video_name: str = None):
+ self.video_details['frame_width'] = frame_width
+ self.video_details['frame_height'] = frame_height
+ self.video_details['frame_rate'] = frame_rate
+ self.video_details['video_name'] = video_name
+
+ def output(self):
+ output = {'video_details': self.video_details}
+ result = list(self.frames.values())
+ output['frames'] = [item.dic() for item in result]
+ return output
+
+ def json_output(self, output_name):
+ """
+ Args:
+ output_name:
+
+ Returns:
+ None
+
+ Notes:
+ It creates the json output with `output_name` name.
+ """
+ if not output_name.endswith('.json'):
+ output_name += '.json'
+ with open(output_name, 'w') as file:
+ json.dump(self.output(), file)
+ file.close()
+
+ def set_start(self):
+ self.start_time = datetime.now()
+
+ def schedule_output_by_time(self, output_dir=JsonMeta.PATH_TO_SAVE, hours: int = 0, minutes: int = 0,
+ seconds: int = 60) -> None:
+ """
+ Notes:
+ Creates folder and then periodically stores the jsons on that address.
+
+ Args:
+ output_dir (str): the directory where output files will be stored
+ hours (int):
+ minutes (int):
+ seconds (int):
+
+ Returns:
+ None
+
+ """
+ end = datetime.now()
+ interval = 0
+ interval += abs(min([hours, JsonMeta.HOURS]) * 3600)
+ interval += abs(min([minutes, JsonMeta.MINUTES]) * 60)
+ interval += abs(min([seconds, JsonMeta.SECONDS]))
+ diff = (end - self.start_time).seconds
+
+ if diff > interval:
+ output_name = self.start_time.strftime('%Y-%m-%d %H-%M-%S') + '.json'
+ if not exists(output_dir):
+ makedirs(output_dir)
+ output = join(output_dir, output_name)
+ self.json_output(output_name=output)
+ self.frames = {}
+ self.start_time = datetime.now()
+
+ def schedule_output_by_frames(self, frames_quota, frame_counter, output_dir=JsonMeta.PATH_TO_SAVE):
+ """
+ saves as the number of frames quota increases higher.
+ :param frames_quota:
+ :param frame_counter:
+ :param output_dir:
+ :return:
+ """
+ pass
+
+ def flush(self, output_dir):
+ """
+ Notes:
+ We use this function to output jsons whenever possible.
+ like the time that we exit the while loop of opencv.
+
+ Args:
+ output_dir:
+
+ Returns:
+ None
+
+ """
+ filename = self.start_time.strftime('%Y-%m-%d %H-%M-%S') + '-remaining.json'
+ output = join(output_dir, filename)
+ self.json_output(output_name=output)
diff --git a/Yolov5-Deepsort/deep_sort/utils/log.py b/Yolov5-Deepsort/deep_sort/utils/log.py
new file mode 100644
index 0000000000000000000000000000000000000000..0d48757dca88f35e9ea2cd1ca16e41bac9976a45
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/utils/log.py
@@ -0,0 +1,17 @@
+import logging
+
+
+def get_logger(name='root'):
+ formatter = logging.Formatter(
+ # fmt='%(asctime)s [%(levelname)s]: %(filename)s(%(funcName)s:%(lineno)s) >> %(message)s')
+ fmt='%(asctime)s [%(levelname)s]: %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
+
+ handler = logging.StreamHandler()
+ handler.setFormatter(formatter)
+
+ logger = logging.getLogger(name)
+ logger.setLevel(logging.INFO)
+ logger.addHandler(handler)
+ return logger
+
+
diff --git a/Yolov5-Deepsort/deep_sort/utils/parser.py b/Yolov5-Deepsort/deep_sort/utils/parser.py
new file mode 100644
index 0000000000000000000000000000000000000000..c217ecb2c8c2b9a3c8cc10e2be2f149aba326b60
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/utils/parser.py
@@ -0,0 +1,38 @@
+import os
+import yaml
+from easydict import EasyDict as edict
+
+class YamlParser(edict):
+ """
+ This is yaml parser based on EasyDict.
+ """
+ def __init__(self, cfg_dict=None, config_file=None):
+ if cfg_dict is None:
+ cfg_dict = {}
+
+ if config_file is not None:
+ assert(os.path.isfile(config_file))
+ with open(config_file, 'r') as fo:
+ cfg_dict.update(yaml.safe_load(fo.read()))
+
+ super(YamlParser, self).__init__(cfg_dict)
+
+
+ def merge_from_file(self, config_file):
+ with open(config_file, 'r') as fo:
+ self.update(yaml.safe_load(fo.read()))
+
+
+ def merge_from_dict(self, config_dict):
+ self.update(config_dict)
+
+
+def get_config(config_file=None):
+ return YamlParser(config_file=config_file)
+
+
+if __name__ == "__main__":
+ cfg = YamlParser(config_file="../configs/yolov3.yaml")
+ cfg.merge_from_file("../configs/deep_sort.yaml")
+
+ import ipdb; ipdb.set_trace()
\ No newline at end of file
diff --git a/Yolov5-Deepsort/deep_sort/utils/tools.py b/Yolov5-Deepsort/deep_sort/utils/tools.py
new file mode 100644
index 0000000000000000000000000000000000000000..965fb69c2df41510fd740a4ab57d8fc7b81012de
--- /dev/null
+++ b/Yolov5-Deepsort/deep_sort/utils/tools.py
@@ -0,0 +1,39 @@
+from functools import wraps
+from time import time
+
+
+def is_video(ext: str):
+ """
+ Returns true if ext exists in
+ allowed_exts for video files.
+
+ Args:
+ ext:
+
+ Returns:
+
+ """
+
+ allowed_exts = ('.mp4', '.webm', '.ogg', '.avi', '.wmv', '.mkv', '.3gp')
+ return any((ext.endswith(x) for x in allowed_exts))
+
+
+def tik_tok(func):
+ """
+ keep track of time for each process.
+ Args:
+ func:
+
+ Returns:
+
+ """
+ @wraps(func)
+ def _time_it(*args, **kwargs):
+ start = time()
+ try:
+ return func(*args, **kwargs)
+ finally:
+ end_ = time()
+ print("time: {:.03f}s, fps: {:.03f}".format(end_ - start, 1 / (end_ - start)))
+
+ return _time_it
diff --git a/Yolov5-Deepsort/demo.py b/Yolov5-Deepsort/demo.py
new file mode 100644
index 0000000000000000000000000000000000000000..5e3a1f93624614677cf27fb3e7df6d7ec7bfde96
--- /dev/null
+++ b/Yolov5-Deepsort/demo.py
@@ -0,0 +1,66 @@
+from AIDetector_pytorch import Detector
+import imutils
+import rich
+import cv2
+import time
+
+def main():
+
+ name = 'demo'
+
+ det = Detector()
+ cap = cv2.VideoCapture('mot.mp4')
+ fps = int(cap.get(5))
+ print('fps:', fps)
+ t = int(1000/fps)
+ frame_count = 0
+ total_time = 0
+
+ videoWriter = None
+
+ while True:
+
+ start_time = time.time()
+
+ # try:
+ _, im = cap.read()
+ if im is None:
+ break
+ #rich.print("im:",im)
+ result = det.feedCap(im)
+ #rich.print(result)
+ result = result['frame']
+ result = imutils.resize(result, height=500)
+ if videoWriter is None:
+ fourcc = cv2.VideoWriter_fourcc(
+ 'm', 'p', '4', 'v') # opencv3.0
+ videoWriter = cv2.VideoWriter(
+ 'result.mp4', fourcc, fps, (result.shape[1], result.shape[0]))
+
+ videoWriter.write(result)
+ cv2.imshow(name, result)
+ cv2.waitKey(t)
+
+ end_time = time.time()
+ total_time += (end_time - start_time)
+ frame_count +=1
+
+ if frame_count > 0:
+ processing_fps = frame_count / total_time
+ rich.print('Processing fps:', processing_fps)
+
+
+ if cv2.getWindowProperty(name, cv2.WND_PROP_AUTOSIZE) < 1:
+ # 点x退出
+ break
+ # except Exception as e:
+ # print(e)
+ # break
+
+ cap.release()
+ videoWriter.release()
+ cv2.destroyAllWindows()
+
+if __name__ == '__main__':
+
+ main()
\ No newline at end of file
diff --git a/Yolov5-Deepsort/eval.py b/Yolov5-Deepsort/eval.py
new file mode 100644
index 0000000000000000000000000000000000000000..52af1ee1aed9cad895e3aa71c4bc8f7e8e6d3bb6
--- /dev/null
+++ b/Yolov5-Deepsort/eval.py
@@ -0,0 +1,33 @@
+import motmetrics as mm
+import pandas as pd
+
+# 读取ground truth和结果文件
+gt = pd.read_csv('/home/suml/docker/su/Yolov5-Deepsort/gt.txt', header=None)
+res = pd.read_csv('/home/suml/docker/su/Yolov5-Deepsort/gt.txt', header=None)
+
+# 创建一个accumulator对象
+acc = mm.MOTAccumulator(auto_id=True)
+
+# 假设文件格式为:, , , , , , , ,
+for frame in gt[0].unique():
+ gt_frame = gt[gt[0] == frame]
+ res_frame = res[res[0] == frame]
+
+ # 提取ID和位置
+ gt_ids = gt_frame[1].values
+ gt_positions = gt_frame[[2, 3, 4, 5]].values
+
+ res_ids = res_frame[1].values
+ res_positions = res_frame[[2, 3, 4, 5]].values
+
+ # 更新accumulator
+ acc.update(
+ gt_ids, res_ids,
+ mm.distances.iou_matrix(gt_positions, res_positions, max_iou=0.5)
+ )
+
+# 计算指标
+mh = mm.metrics.create()
+summary = mh.compute(acc, metrics=['idf1', 'mota', 'motp'], name='DeepSORT')
+
+print(summary)
diff --git a/Yolov5-Deepsort/gt.txt b/Yolov5-Deepsort/gt.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f8c1ad7181ccf4b07620a53afd98e7b61045d709
--- /dev/null
+++ b/Yolov5-Deepsort/gt.txt
@@ -0,0 +1,18718 @@
+1,1,1376,485,37,28,0,11,1
+2,1,1379,486,37,28,0,11,1
+3,1,1382,487,38,29,0,11,1
+4,1,1386,488,38,29,0,11,1
+5,1,1389,490,38,29,0,11,1
+6,1,1393,491,38,30,0,11,1
+7,1,1396,492,39,30,0,11,1
+8,1,1399,494,39,30,0,11,1
+9,1,1403,495,39,30,0,11,1
+10,1,1406,496,40,31,0,11,1
+11,1,1410,498,40,31,0,11,1
+12,1,1413,497,40,31,0,11,1
+13,1,1416,497,40,31,0,11,1
+14,1,1419,497,40,31,0,11,1
+15,1,1422,497,40,31,0,11,1
+16,1,1426,497,39,31,0,11,1
+17,1,1429,496,39,31,0,11,1
+18,1,1432,496,39,31,0,11,1
+19,1,1435,496,39,31,0,11,1
+20,1,1438,496,39,31,0,11,1
+21,1,1442,496,39,31,0,11,1
+22,1,1445,497,39,32,0,11,1
+23,1,1448,499,40,32,0,11,1
+24,1,1451,501,41,32,0,11,1
+25,1,1454,503,41,32,0,11,1
+26,1,1458,505,41,32,0,11,1
+27,1,1461,507,42,32,0,11,1
+28,1,1464,509,42,32,0,11,1
+29,1,1467,511,43,32,0,11,1
+30,1,1470,513,44,32,0,11,1
+31,1,1474,515,44,33,0,11,1
+32,1,1476,518,45,36,0,11,1
+33,1,1476,508,45,36,0,11,1
+34,1,1488,509,46,36,0,11,1
+35,1,1488,509,46,36,0,11,1
+36,1,1492,506,46,35,0,11,1
+37,1,1496,503,47,34,0,11,1
+38,1,1500,500,48,33,0,11,1
+39,1,1505,497,48,33,0,11,1
+40,1,1508,498,48,34,0,11,1
+41,1,1512,499,48,35,0,11,1
+42,1,1516,501,47,35,0,11,1
+43,1,1520,502,47,36,0,11,1
+44,1,1524,504,47,36,0,11,1
+45,1,1528,505,46,37,0,11,1
+46,1,1532,506,46,38,0,11,1
+47,1,1536,508,45,38,0,11,1
+48,1,1540,509,45,39,0,11,1
+49,1,1544,511,45,39,0,11,1
+50,1,1548,510,45,40,0,11,1
+51,1,1552,510,46,40,0,11,1
+52,1,1556,510,47,40,0,11,1
+53,1,1561,510,47,40,0,11,1
+54,1,1565,510,48,41,0,11,1
+55,1,1569,509,49,42,0,11,1
+56,1,1574,509,49,42,0,11,1
+57,1,1578,509,50,42,0,11,1
+58,1,1582,509,51,42,0,11,1
+59,1,1587,509,51,43,0,11,1
+60,1,1589,509,52,44,0,11,1
+61,1,1591,510,53,44,0,11,1
+62,1,1593,510,54,45,0,11,1
+63,1,1595,511,56,45,0,11,1
+64,1,1597,511,57,46,0,11,1
+65,1,1599,512,58,47,0,11,1
+66,1,1601,513,59,47,0,11,1
+67,1,1603,513,61,48,0,11,1
+68,1,1605,514,62,48,0,11,1
+69,1,1607,514,63,49,0,11,1
+70,1,1609,515,64,49,0,11,1
+71,1,1612,516,65,50,0,11,1
+72,1,1614,515,64,50,0,11,1
+73,1,1616,515,64,50,0,11,1
+74,1,1618,514,64,51,0,11,1
+75,1,1620,514,64,51,0,11,1
+76,1,1622,514,63,51,0,11,1
+77,1,1624,513,63,52,0,11,1
+78,1,1626,513,63,52,0,11,1
+79,1,1628,513,63,52,0,11,1
+80,1,1627,513,64,53,0,11,1
+81,1,1627,514,64,53,0,11,1
+82,1,1627,515,65,53,0,11,1
+83,1,1627,515,65,54,0,11,1
+84,1,1626,516,67,54,0,11,1
+85,1,1626,517,67,54,0,11,1
+86,1,1626,517,67,55,0,11,1
+87,1,1626,518,68,55,0,11,1
+88,1,1625,519,69,55,0,11,1
+89,1,1625,519,70,56,0,11,1
+90,1,1625,520,70,56,0,11,1
+91,1,1625,521,71,57,0,11,1
+92,1,1625,521,71,58,0,11,1
+93,1,1625,522,71,58,0,11,1
+94,1,1625,523,71,58,0,11,1
+95,1,1625,524,71,58,0,11,1
+96,1,1625,525,71,59,0,11,1
+97,1,1625,525,71,60,0,11,1
+98,1,1625,526,71,60,0,11,1
+99,1,1625,527,71,60,0,11,1
+100,1,1625,528,71,60,0,11,1
+101,1,1625,529,71,61,0,11,1
+102,1,1624,529,71,61,0,11,1
+103,1,1623,530,71,61,0,11,1
+104,1,1622,531,72,60,0,11,1
+105,1,1621,531,72,61,0,11,1
+106,1,1621,532,72,61,0,11,1
+107,1,1620,533,72,60,0,11,1
+108,1,1619,533,72,61,0,11,1
+109,1,1618,534,73,60,0,11,1
+110,1,1617,535,73,60,0,11,1
+111,1,1617,536,73,60,0,11,1
+112,1,1616,536,73,60,0,11,1
+113,1,1615,536,74,60,0,11,1
+114,1,1614,536,75,60,0,11,1
+115,1,1613,536,75,60,0,11,1
+116,1,1613,536,75,60,0,11,1
+117,1,1612,536,76,60,0,11,1
+118,1,1611,536,76,60,0,11,1
+119,1,1610,536,77,60,0,11,1
+120,1,1609,536,78,60,0,11,1
+121,1,1609,536,78,61,0,11,1
+122,1,1608,536,78,61,0,11,1
+123,1,1607,536,78,62,0,11,1
+124,1,1606,536,79,63,0,11,1
+125,1,1606,536,78,64,0,11,1
+126,1,1605,536,79,65,0,11,1
+127,1,1604,536,79,66,0,11,1
+128,1,1603,536,80,66,0,11,1
+129,1,1603,536,79,67,0,11,1
+130,1,1602,536,80,68,0,11,1
+131,1,1601,536,80,69,0,11,1
+132,1,1600,536,80,70,0,11,1
+133,1,1600,536,80,71,0,11,1
+134,1,1599,536,80,72,0,11,1
+135,1,1598,536,81,72,0,11,1
+136,1,1597,536,81,73,0,11,1
+137,1,1597,536,81,74,0,11,1
+138,1,1596,536,81,75,0,11,1
+139,1,1595,536,82,76,0,11,1
+140,1,1594,536,82,77,0,11,1
+141,1,1594,536,82,78,0,11,1
+142,1,1593,537,83,78,0,11,1
+143,1,1593,538,84,78,0,11,1
+144,1,1593,539,85,78,0,11,1
+145,1,1593,540,86,79,0,11,1
+146,1,1593,541,87,79,0,11,1
+147,1,1593,542,88,79,0,11,1
+148,1,1593,543,89,80,0,11,1
+149,1,1593,544,90,80,0,11,1
+150,1,1593,545,91,80,0,11,1
+151,1,1593,547,92,80,0,11,1
+152,1,1592,546,93,80,0,11,1
+153,1,1592,545,93,81,0,11,1
+154,1,1591,545,94,81,0,11,1
+155,1,1591,544,95,82,0,11,1
+156,1,1591,544,95,82,0,11,1
+157,1,1590,543,96,82,0,11,1
+158,1,1590,542,97,83,0,11,1
+159,1,1589,542,98,83,0,11,1
+160,1,1589,541,98,84,0,11,1
+161,1,1589,541,99,84,0,11,1
+162,1,1590,541,101,85,0,11,1
+163,1,1592,541,103,86,0,11,1
+164,1,1594,541,104,87,0,11,1
+165,1,1596,542,106,88,0,11,1
+166,1,1598,542,107,89,0,11,1
+167,1,1600,542,109,90,0,11,1
+168,1,1602,543,110,91,0,11,1
+169,1,1604,543,112,92,0,11,1
+170,1,1606,543,113,93,0,11,1
+171,1,1608,544,115,94,0,11,1
+172,1,1611,545,116,95,0,11,1
+173,1,1614,546,118,97,0,11,1
+174,1,1617,547,120,99,0,11,1
+175,1,1620,548,122,101,0,11,1
+176,1,1623,549,124,103,0,11,1
+177,1,1626,550,126,104,0,11,1
+178,1,1629,551,128,106,0,11,1
+179,1,1632,552,130,108,0,11,1
+180,1,1635,553,132,110,0,11,1
+181,1,1638,555,134,111,0,11,1
+182,1,1644,555,136,113,0,11,1
+183,1,1650,556,138,114,0,11,1
+184,1,1656,557,140,115,0,11,1
+185,1,1663,557,142,117,0,11,1
+186,1,1669,558,144,118,0,11,1
+187,1,1675,559,146,119,0,11,1
+188,1,1682,559,148,121,0,11,1
+189,1,1688,560,150,122,0,11,1
+190,1,1694,561,152,123,0,11,1
+191,1,1701,562,154,124,0,11,1
+192,1,1710,564,153,124,0,11,1
+193,1,1720,566,152,125,0,11,1
+194,1,1729,568,151,126,0,11,1
+195,1,1739,570,150,127,0,11,1
+196,1,1748,572,150,128,0,11,1
+197,1,1758,574,148,128,0,11,1
+198,1,1767,576,148,129,0,11,1
+199,1,1777,578,146,130,0,11,1
+200,1,1786,580,146,131,0,11,1
+1,2,1371,518,33,95,1,1,0.67647
+2,2,1375,516,32,94,1,1,0.66667
+3,2,1379,514,32,93,1,1,0.64829
+4,2,1383,513,33,99,1,1,0.61912
+5,2,1387,519,33,100,1,1,0.64123
+6,2,1391,526,34,100,1,1,0.65714
+7,2,1392,524,34,100,1,1,0.65714
+8,2,1394,530,34,100,1,1,0.65714
+9,2,1397,536,34,100,1,1,0.65714
+10,2,1399,546,33,95,1,1,0.67647
+11,2,1401,543,33,96,1,1,0.70588
+12,2,1403,540,34,97,1,1,0.71429
+13,2,1405,537,35,98,1,1,0.72222
+14,2,1408,535,35,98,1,1,0.72222
+15,2,1410,535,36,99,1,1,0.72973
+16,2,1413,535,36,100,1,1,0.75676
+17,2,1416,535,37,101,1,1,0.73684
+18,2,1419,536,37,101,1,1,0.73684
+19,2,1422,536,38,102,1,1,0.71795
+20,2,1425,536,38,103,1,1,0.71795
+21,2,1428,537,39,104,1,1,0.725
+22,2,1430,537,40,106,1,1,0.73171
+23,2,1433,538,40,107,1,1,0.73171
+24,2,1436,539,40,109,1,1,0.7561
+25,2,1439,540,40,110,1,1,0.7561
+26,2,1442,541,40,112,1,1,0.78049
+27,2,1444,544,41,113,1,1,0.78571
+28,2,1447,547,42,114,1,1,0.76744
+29,2,1450,550,42,115,1,1,0.7907
+30,2,1453,553,43,116,1,1,0.77273
+31,2,1456,556,44,117,1,1,0.77778
+32,2,1460,553,44,118,1,1,0.74883
+33,2,1464,550,44,119,1,1,0.75556
+34,2,1468,548,44,119,1,1,0.75556
+35,2,1472,545,45,120,1,1,0.7359
+36,2,1476,543,45,120,1,1,0.73913
+37,2,1480,540,45,121,1,1,0.73913
+38,2,1484,538,46,122,1,1,0.74468
+39,2,1487,539,47,122,1,1,0.75
+40,2,1491,540,47,123,1,1,0.75
+41,2,1495,541,48,124,1,1,0.7551
+42,2,1499,543,48,125,1,1,0.7551
+43,2,1503,545,49,126,1,1,0.76
+44,2,1508,548,48,127,1,1,0.7551
+45,2,1512,550,49,128,1,1,0.76
+46,2,1516,552,50,129,1,1,0.76471
+47,2,1521,555,49,130,1,1,0.76
+48,2,1525,557,50,131,1,1,0.76471
+49,2,1530,560,50,132,1,1,0.76471
+50,2,1534,560,51,135,1,1,0.76923
+51,2,1539,561,52,138,1,1,0.77358
+52,2,1544,560,52,138,1,1,0.77358
+53,2,1549,559,52,139,1,1,0.77358
+54,2,1554,558,52,140,1,1,0.77358
+55,2,1559,557,52,141,1,1,0.77358
+56,2,1564,556,52,142,1,1,0.79245
+57,2,1569,555,53,143,1,1,0.7963
+58,2,1574,554,53,144,1,1,0.7963
+59,2,1579,553,53,145,1,1,0.7963
+60,2,1584,552,53,146,1,1,0.78672
+61,2,1589,551,53,147,1,1,0.77578
+62,2,1594,550,53,148,1,1,0.76423
+63,2,1599,550,54,148,1,1,0.76412
+64,2,1603,553,54,149,1,1,0.77515
+65,2,1607,556,54,150,1,1,0.78073
+66,2,1612,560,54,151,1,1,0.79545
+67,2,1618,575,54,152,1,1,1
+68,2,1621,565,54,153,1,1,0.8
+69,2,1624,566,55,155,1,1,0.80357
+70,2,1628,567,55,157,1,1,0.80357
+71,2,1631,569,56,159,1,1,0.80702
+72,2,1635,570,56,161,1,1,0.80702
+73,2,1639,571,56,163,1,1,0.80702
+74,2,1642,573,57,165,1,1,1
+75,2,1646,574,57,167,1,1,1
+76,2,1650,576,58,169,1,1,1
+77,2,1652,576,59,170,1,1,1
+78,2,1654,577,60,171,1,1,1
+79,2,1656,577,62,173,1,1,1
+80,2,1658,578,63,174,1,1,1
+81,2,1660,578,64,176,1,1,1
+82,2,1662,579,66,177,1,1,1
+83,2,1664,579,67,179,1,1,1
+84,2,1666,580,69,180,1,1,1
+85,2,1668,582,70,181,1,1,1
+86,2,1670,584,71,183,1,1,1
+87,2,1672,586,72,184,1,1,1
+88,2,1674,589,74,185,1,1,1
+89,2,1676,591,75,186,1,1,1
+90,2,1678,593,76,188,1,1,1
+91,2,1680,596,78,189,1,1,1
+92,2,1682,598,79,190,1,1,1
+93,2,1685,600,79,191,1,1,1
+94,2,1688,602,80,193,1,1,1
+95,2,1691,603,80,195,1,1,1
+96,2,1694,605,80,196,1,1,1
+97,2,1697,606,80,199,1,1,1
+98,2,1700,608,80,200,1,1,1
+99,2,1703,609,80,203,1,1,1
+100,2,1706,611,80,204,1,1,1
+101,2,1710,613,79,206,1,1,1
+102,2,1712,614,80,208,1,1,1
+103,2,1714,616,81,210,1,1,1
+104,2,1716,618,82,212,1,1,1
+105,2,1718,620,83,213,1,1,1
+106,2,1720,622,85,215,1,1,1
+107,2,1722,623,86,218,1,1,1
+108,2,1724,625,87,219,1,1,1
+109,2,1726,627,88,221,1,1,1
+110,2,1728,629,89,223,1,1,1
+111,2,1731,631,90,225,1,1,1
+112,2,1733,632,92,228,1,1,1
+113,2,1736,633,93,231,1,1,1
+114,2,1739,634,94,234,1,1,1
+115,2,1741,635,96,237,1,1,1
+116,2,1744,636,97,240,1,1,1
+117,2,1747,637,98,243,1,1,1
+118,2,1749,638,100,246,1,1,1
+119,2,1752,639,101,249,1,1,1
+120,2,1755,640,102,252,1,1,1
+121,2,1758,642,103,254,1,1,1
+122,2,1761,643,104,257,1,1,1
+123,2,1764,645,106,259,1,1,1
+124,2,1768,646,107,262,1,1,1
+125,2,1771,648,109,264,1,1,1
+126,2,1775,649,110,268,1,1,1
+127,2,1778,651,112,270,1,1,1
+128,2,1781,652,114,273,1,1,1
+129,2,1785,654,115,275,1,1,1
+130,2,1788,655,117,278,1,1,1
+131,2,1792,657,118,281,1,1,1
+132,2,1797,661,117,284,1,1,1
+133,2,1802,665,117,288,1,1,1
+134,2,1807,669,117,292,1,1,0.9661
+135,2,1812,673,117,296,1,1,0.92373
+136,2,1817,677,117,300,1,1,0.88136
+137,2,1823,677,117,304,1,1,0.83051
+138,2,1829,678,117,307,1,1,0.77966
+139,2,1835,679,118,310,1,1,0.72269
+140,2,1841,680,118,313,1,1,0.67227
+141,2,1847,681,119,317,1,1,0.61667
+142,2,1853,684,124,317,1,1,0.544
+143,2,1860,687,128,318,1,1,0.47287
+144,2,1866,690,133,318,1,1,0.41045
+145,2,1873,693,137,319,1,1,0.34783
+1,3,1391,474,10,148,0,10,0.80537
+2,3,1395,471,10,150,0,10,0.80795
+3,3,1399,468,10,152,0,10,0.80392
+4,3,1403,466,11,153,0,10,0.80519
+5,3,1406,471,11,154,0,10,0.80645
+6,3,1409,476,11,155,0,10,0.80128
+7,3,1413,481,11,157,0,10,0.8038
+8,3,1416,486,11,158,0,10,0.80503
+9,3,1419,491,11,159,0,10,0.80625
+10,3,1422,496,11,161,0,10,0.80247
+11,3,1425,494,11,162,0,10,0.80368
+12,3,1428,492,11,164,0,10,0.80606
+13,3,1431,490,11,166,0,10,0.80838
+14,3,1434,489,11,167,0,10,0.80952
+15,3,1437,487,11,169,0,10,0.81176
+16,3,1441,485,10,170,0,10,0.81287
+17,3,1444,483,10,172,0,10,0.81503
+18,3,1447,482,10,173,0,10,0.81609
+19,3,1450,480,10,175,0,10,0.81818
+20,3,1453,478,10,177,0,10,0.82022
+21,3,1457,477,10,178,0,10,0.82123
+22,3,1460,478,10,180,0,10,0.81768
+23,3,1463,480,10,182,0,10,0.81967
+24,3,1467,482,10,183,0,10,0.82065
+25,3,1470,484,10,185,0,10,0.82258
+26,3,1474,486,10,186,0,10,0.82353
+27,3,1477,488,10,188,0,10,0.8254
+28,3,1480,490,10,189,0,10,0.82632
+29,3,1484,492,10,191,0,10,0.82812
+30,3,1487,494,10,192,0,10,0.82902
+31,3,1491,496,10,194,0,10,0.82564
+32,3,1494,493,11,196,0,10,0.81218
+33,3,1498,491,11,197,0,10,0.81313
+34,3,1502,488,11,199,0,10,0.815
+35,3,1506,486,11,200,0,10,0.81592
+36,3,1510,483,11,202,0,10,0.82266
+37,3,1514,481,11,203,0,10,0.82843
+38,3,1518,478,11,205,0,10,0.83495
+39,3,1522,476,11,206,0,10,0.83575
+40,3,1526,473,11,208,0,10,0.83254
+41,3,1530,471,11,210,0,10,0.82938
+42,3,1534,472,11,211,0,10,0.83019
+43,3,1538,473,11,213,0,10,0.8271
+44,3,1542,474,11,215,0,10,0.8287
+45,3,1546,476,11,216,0,10,0.82488
+46,3,1550,477,11,218,0,10,0.82192
+47,3,1554,478,11,219,0,10,0.82273
+48,3,1558,480,11,220,0,10,0.819
+49,3,1562,481,11,222,0,10,0.82063
+50,3,1566,482,11,224,0,10,0.81778
+51,3,1571,484,11,225,0,10,0.81858
+52,3,1574,482,11,226,0,10,0.81938
+53,3,1578,481,11,227,0,10,0.82018
+54,3,1581,480,11,228,0,10,0.81659
+55,3,1585,479,11,229,0,10,0.81304
+56,3,1589,477,10,231,0,10,0.81466
+57,3,1593,476,10,232,0,10,0.81545
+58,3,1597,475,10,233,0,10,0.81624
+59,3,1601,474,10,234,0,10,0.81277
+60,3,1605,473,10,235,0,10,0.80932
+61,3,1609,472,10,236,0,10,0.81013
+62,3,1612,472,10,238,0,10,0.80753
+63,3,1615,473,10,240,0,10,0.80913
+64,3,1618,474,10,241,0,10,0.80579
+65,3,1621,475,10,243,0,10,0.80328
+66,3,1624,476,10,245,0,10,0.80488
+67,3,1627,476,10,247,0,10,0.20161
+68,3,1630,477,10,249,0,10,0.804
+69,3,1633,478,10,250,0,10,0.8008
+70,3,1636,479,10,252,0,10,0.80237
+71,3,1640,480,10,254,0,10,0.8
+72,3,1641,479,10,256,0,10,0.80156
+73,3,1642,479,10,257,0,10,0.80233
+74,3,1643,478,10,259,0,10,0.16538
+75,3,1644,478,10,260,0,10,0.28352
+76,3,1645,478,11,262,0,10,0.43631
+77,3,1646,477,11,264,0,10,0.48679
+78,3,1647,477,11,265,0,10,0.54073
+79,3,1648,476,11,267,0,10,0.59453
+80,3,1649,476,11,268,0,10,0.64405
+81,3,1651,476,11,270,0,10,0.64483
+82,3,1651,476,11,272,0,10,0.75031
+83,3,1651,476,11,275,0,10,0.80072
+84,3,1651,476,12,277,0,10,0.80216
+85,3,1651,476,12,280,0,10,0.80427
+86,3,1652,476,12,282,0,10,0.80212
+87,3,1652,476,12,285,0,10,0.8042
+88,3,1652,476,12,287,0,10,0.80556
+89,3,1652,476,13,290,0,10,0.80412
+90,3,1652,476,13,292,0,10,0.80546
+91,3,1653,476,13,295,0,10,0.80405
+92,3,1652,475,13,298,0,10,0.80268
+93,3,1652,475,13,301,0,10,0.80464
+94,3,1652,475,13,303,0,10,0.80592
+95,3,1651,475,14,306,0,10,0.80782
+96,3,1651,475,14,308,0,10,0.80583
+97,3,1651,475,13,311,0,10,0.80449
+98,3,1650,475,14,313,0,10,0.80573
+99,3,1650,475,14,316,0,10,0.80757
+100,3,1650,475,14,318,0,10,0.80878
+101,3,1650,475,14,321,0,10,0.80745
+102,3,1649,474,14,324,0,10,0.80923
+103,3,1649,474,14,327,0,10,0.81098
+104,3,1649,474,14,329,0,10,0.81515
+105,3,1648,474,15,332,0,10,0.81381
+106,3,1648,474,15,334,0,10,0.81493
+107,3,1648,474,14,337,0,10,0.81953
+108,3,1647,474,15,339,0,10,0.81765
+109,3,1647,474,15,342,0,10,0.82216
+110,3,1647,474,15,344,0,10,0.82319
+111,3,1647,474,15,347,0,10,0.82471
+112,3,1646,473,15,350,0,10,0.82621
+113,3,1645,473,15,353,0,10,0.82768
+114,3,1644,473,16,355,0,10,0.82865
+115,3,1644,473,15,358,0,10,0.83008
+116,3,1643,473,15,360,0,10,0.83102
+117,3,1642,473,16,363,0,10,0.83242
+118,3,1641,473,16,365,0,10,0.83333
+119,3,1641,473,15,368,0,10,0.83469
+120,3,1640,473,16,370,0,10,0.83558
+121,3,1639,473,16,373,0,10,0.83422
+122,3,1638,472,16,376,0,10,0.83554
+123,3,1638,472,16,379,0,10,0.83421
+124,3,1637,472,16,381,0,10,0.83246
+125,3,1636,472,16,384,0,10,0.83117
+126,3,1635,472,17,386,0,10,0.82946
+127,3,1635,472,16,389,0,10,0.82821
+128,3,1634,472,16,391,0,10,0.82908
+129,3,1633,472,17,394,0,10,0.82785
+130,3,1632,472,17,396,0,10,0.8262
+131,3,1632,472,17,399,0,10,0.825
+132,3,1632,471,17,402,0,10,0.82382
+133,3,1632,471,17,405,0,10,0.82266
+134,3,1632,471,17,407,0,10,0.82108
+135,3,1632,471,18,410,0,10,0.82238
+136,3,1632,471,18,412,0,10,0.82082
+137,3,1632,471,18,415,0,10,0.81971
+138,3,1632,471,19,417,0,10,0.81818
+139,3,1632,471,19,420,0,10,0.8171
+140,3,1632,471,19,422,0,10,0.8156
+141,3,1633,471,19,425,0,10,0.81455
+142,3,1633,469,19,430,0,10,0.81671
+143,3,1633,468,19,435,0,10,0.81881
+144,3,1633,466,19,440,0,10,0.82086
+145,3,1634,465,19,445,0,10,0.82063
+146,3,1634,464,19,450,0,10,0.82262
+147,3,1634,462,19,455,0,10,0.82456
+148,3,1634,461,20,460,0,10,0.8243
+149,3,1635,459,19,465,0,10,0.82618
+150,3,1635,458,19,470,0,10,0.82803
+151,3,1635,457,20,475,0,10,0.82983
+152,3,1635,455,20,480,0,10,0.8316
+153,3,1636,454,19,485,0,10,0.83128
+154,3,1636,452,19,490,0,10,0.83299
+155,3,1636,451,20,495,0,10,0.83266
+156,3,1636,450,20,500,0,10,0.83433
+157,3,1637,448,19,505,0,10,0.83597
+158,3,1637,447,20,510,0,10,0.83562
+159,3,1637,445,20,515,0,10,0.83721
+160,3,1637,444,20,520,0,10,0.83685
+161,3,1638,443,20,525,0,10,0.8384
+162,3,1640,442,20,530,0,10,0.83804
+163,3,1642,442,20,535,0,10,0.83769
+164,3,1644,442,20,540,0,10,0.83734
+165,3,1646,442,20,544,0,10,0.8367
+166,3,1648,442,20,549,0,10,0.83636
+167,3,1650,441,20,555,0,10,0.83633
+168,3,1652,441,20,559,0,10,0.83571
+169,3,1654,441,20,564,0,10,0.8354
+170,3,1656,441,20,569,0,10,0.83509
+171,3,1659,441,20,574,0,10,0.83478
+172,3,1663,442,20,582,0,10,0.83533
+173,3,1668,444,20,589,0,10,0.8339
+174,3,1672,445,21,597,0,10,0.83278
+175,3,1677,447,20,604,0,10,0.8314
+176,3,1681,448,21,613,0,10,0.83062
+177,3,1686,450,21,620,0,10,0.83092
+178,3,1690,451,21,628,0,10,0.82989
+179,3,1695,453,21,635,0,10,0.81604
+180,3,1699,454,22,643,0,10,0.80124
+181,3,1704,456,22,651,0,10,0.78681
+182,3,1710,459,22,651,0,10,0.77914
+183,3,1717,462,22,651,0,10,0.77301
+184,3,1724,465,22,652,0,10,0.7657
+185,3,1731,469,22,651,0,10,0.75767
+186,3,1738,472,22,652,0,10,0.75038
+187,3,1744,475,22,652,0,10,0.74426
+188,3,1751,479,22,651,0,10,0.7362
+189,3,1758,482,22,652,0,10,0.72894
+190,3,1765,485,22,652,0,10,0.72282
+191,3,1772,489,22,652,0,10,0.71516
+192,3,1783,492,22,652,0,10,0.71057
+193,3,1794,496,22,652,0,10,0.70291
+194,3,1805,499,22,652,0,10,0.69678
+195,3,1816,503,22,652,0,10,0.68913
+196,3,1828,506,22,652,0,10,0.683
+197,3,1839,510,22,652,0,10,0.67688
+198,3,1850,513,22,652,0,10,0.67075
+199,3,1861,517,22,652,0,10,0.66309
+200,3,1872,520,22,652,0,10,0.65697
+1,4,1477,519,38,76,1,1,1
+2,4,1481,517,37,72,1,1,1
+3,4,1485,515,37,68,1,1,1
+4,4,1490,513,36,64,1,1,1
+5,4,1496,519,35,70,1,1,1
+6,4,1500,528,34,77,1,1,1
+7,4,1504,522,36,81,1,1,1
+8,4,1506,530,38,80,1,1,1
+9,4,1512,536,34,81,1,1,1
+10,4,1512,548,38,79,1,1,1
+11,4,1517,534,34,79,1,1,1
+12,4,1519,539,36,78,1,1,1
+13,4,1523,536,38,79,1,1,1
+14,4,1525,533,44,80,1,1,1
+15,4,1529,535,43,81,1,1,1
+16,4,1534,538,42,81,1,1,1
+17,4,1538,538,41,81,1,1,1
+18,4,1542,538,40,81,1,1,1
+19,4,1546,538,39,82,1,1,1
+20,4,1550,538,38,82,1,1,1
+21,4,1555,538,37,83,1,1,1
+22,4,1559,539,37,82,1,1,1
+23,4,1563,540,38,82,1,1,1
+24,4,1567,541,38,82,1,1,1
+25,4,1571,542,39,82,1,1,1
+26,4,1575,543,39,82,1,1,1
+27,4,1580,544,39,82,1,1,1
+28,4,1584,546,38,82,1,1,1
+29,4,1589,548,37,83,1,1,1
+30,4,1593,550,36,84,1,1,1
+31,4,1598,552,35,85,1,1,1
+32,4,1607,549,34,85,1,1,1
+33,4,1617,546,33,86,1,1,1
+34,4,1621,544,33,87,1,1,1
+35,4,1625,543,33,87,1,1,1
+36,4,1629,541,33,88,1,1,1
+37,4,1633,540,33,88,1,1,1
+38,4,1634,540,35,88,1,1,1
+39,4,1636,541,37,88,1,1,1
+40,4,1637,541,39,89,1,1,1
+41,4,1639,542,41,89,1,1,1
+42,4,1643,542,41,90,1,1,1
+43,4,1648,543,41,90,1,1,1
+44,4,1652,544,42,90,1,1,1
+45,4,1657,545,42,91,1,1,1
+46,4,1662,545,41,92,1,1,1
+47,4,1666,546,42,92,1,1,1
+48,4,1671,547,42,92,1,1,1
+49,4,1676,548,42,93,1,1,1
+50,4,1691,550,33,94,1,1,1
+51,4,1686,549,42,93,1,1,1
+52,4,1690,548,42,94,1,1,1
+53,4,1694,548,43,94,1,1,1
+54,4,1698,548,43,94,1,1,1
+55,4,1702,547,44,95,1,1,1
+56,4,1706,547,44,95,1,1,1
+57,4,1710,547,45,95,1,1,1
+58,4,1714,546,45,96,1,1,1
+59,4,1718,546,46,96,1,1,1
+60,4,1722,546,46,96,1,1,1
+61,4,1727,546,46,96,1,1,1
+62,4,1734,545,43,97,1,1,1
+63,4,1741,545,41,97,1,1,1
+64,4,1748,545,38,97,1,1,1
+65,4,1755,545,36,98,1,1,1
+66,4,1756,546,38,98,1,1,1
+67,4,1758,547,40,98,1,1,1
+68,4,1759,548,43,98,1,1,1
+69,4,1761,549,44,98,1,1,1
+70,4,1762,550,47,98,1,1,1
+71,4,1764,551,49,99,1,1,1
+72,4,1774,552,43,99,1,1,1
+73,4,1785,553,37,100,1,1,1
+74,4,1783,553,38,100,1,1,1
+75,4,1782,553,39,100,1,1,1
+76,4,1781,553,40,100,1,1,1
+77,4,1780,554,41,100,1,1,1
+78,4,1778,554,43,100,1,1,1
+79,4,1777,554,44,100,1,1,1
+80,4,1776,554,45,100,1,1,1
+81,4,1775,555,46,100,1,1,1
+82,4,1775,555,46,100,1,1,1
+83,4,1775,555,46,101,1,1,1
+84,4,1775,556,47,101,1,1,1
+85,4,1775,556,47,101,1,1,1
+86,4,1775,557,48,101,1,1,1
+87,4,1775,557,48,102,1,1,1
+88,4,1775,557,48,102,1,1,1
+89,4,1775,558,49,102,1,1,1
+90,4,1775,558,49,103,1,1,1
+91,4,1775,559,50,103,1,1,1
+92,4,1789,560,38,105,1,1,1
+93,4,1787,560,38,105,1,1,1
+94,4,1785,561,39,105,1,1,1
+95,4,1783,562,40,105,1,1,1
+96,4,1781,563,41,105,1,1,1
+97,4,1779,563,42,106,1,1,1
+98,4,1777,564,43,106,1,1,0.94647
+99,4,1775,565,44,106,1,1,0.88224
+100,4,1773,566,45,106,1,1,0.82365
+101,4,1771,567,46,106,1,1,0.76954
+102,4,1770,566,45,107,1,1,0.72222
+103,4,1769,566,45,107,1,1,0.68478
+104,4,1768,566,45,107,1,1,0.65056
+105,4,1767,566,45,107,1,1,0.61957
+106,4,1766,566,44,107,1,1,0.57202
+107,4,1765,566,44,107,1,1,0.53827
+108,4,1764,566,44,107,1,1,0.5463
+109,4,1763,566,44,107,1,1,0.56481
+110,4,1763,566,43,108,1,1,0.57798
+111,4,1760,566,46,107,1,1,0.60185
+112,4,1758,566,49,107,1,1,0.61111
+113,4,1756,566,50,105,1,1,0.63208
+114,4,1754,566,51,103,1,1,0.65385
+115,4,1751,566,53,101,1,1,0.67647
+116,4,1750,566,53,101,1,1,0.68627
+117,4,1745,566,54,101,1,1,0.70713
+118,4,1746,566,55,101,1,1,0.72164
+119,4,1743,566,58,110,1,1,0.70988
+120,4,1741,565,57,110,1,1,0.75396
+121,4,1739,565,56,110,1,1,0.7958
+122,4,1737,564,55,111,1,1,0.83163
+123,4,1735,564,54,111,1,1,0.86916
+124,4,1733,564,53,111,1,1,0.90575
+125,4,1730,563,54,112,1,1,0.93693
+126,4,1728,562,54,112,1,1,0.96653
+127,4,1726,562,54,112,1,1,0.98842
+128,4,1724,562,52,112,1,1,1
+129,4,1722,563,54,113,1,1,1
+130,4,1720,561,58,111,1,1,1
+131,4,1714,561,62,111,1,1,1
+132,4,1711,561,62,111,1,1,1
+133,4,1709,561,62,112,1,1,1
+134,4,1707,561,62,112,1,1,1
+135,4,1705,561,62,113,1,1,1
+136,4,1702,561,62,113,1,1,1
+137,4,1700,561,61,113,1,1,1
+138,4,1699,561,61,114,1,1,1
+139,4,1694,562,62,114,1,1,1
+140,4,1693,560,61,114,1,1,1
+141,4,1693,558,59,114,1,1,1
+142,4,1692,557,58,120,1,1,1
+143,4,1690,558,57,120,1,1,1
+144,4,1689,560,55,120,1,1,1
+145,4,1688,561,53,121,1,1,1
+146,4,1687,563,51,120,1,1,1
+147,4,1686,564,49,121,1,1,1
+148,4,1685,566,47,121,1,1,1
+149,4,1684,568,45,121,1,1,1
+150,4,1680,566,45,121,1,1,0.94654
+151,4,1676,564,45,122,1,1,0.88689
+152,4,1672,563,46,121,1,1,0.84374
+153,4,1668,561,46,122,1,1,0.7945
+154,4,1665,560,46,121,1,1,0.75462
+155,4,1661,558,46,122,1,1,0.68967
+156,4,1657,556,46,122,1,1,0.63155
+157,4,1653,555,47,122,1,1,0.55589
+158,4,1649,553,47,122,1,1,0.44157
+159,4,1646,552,47,122,1,1,0.37398
+160,4,1642,551,47,122,1,1,0.28557
+161,4,1638,551,48,122,1,1,0.223
+162,4,1635,551,47,122,1,1,0.21494
+163,4,1631,550,48,123,1,1,0.21198
+164,4,1628,550,47,123,1,1,0.20413
+165,4,1624,550,48,123,1,1,0.19816
+166,4,1620,549,48,124,1,1,0.192
+167,4,1617,549,48,124,1,1,0.2209
+168,4,1613,549,48,124,1,1,0.24833
+169,4,1610,549,48,124,1,1,0.27298
+170,4,1610,549,48,124,1,1,0.27788
+171,4,1610,550,48,124,1,1,0.288
+172,4,1610,550,49,125,1,1,0.29222
+173,4,1611,551,48,124,1,1,0.30155
+174,4,1611,551,49,125,1,1,0.32952
+175,4,1611,552,49,125,1,1,0.36222
+176,4,1612,552,48,125,1,1,0.37836
+177,4,1612,553,49,125,1,1,0.41714
+178,4,1612,553,49,126,1,1,0.45433
+179,4,1613,554,49,126,1,1,0.47764
+180,4,1612,554,50,126,1,1,0.52447
+181,4,1612,554,50,126,1,1,0.5677
+182,4,1612,554,50,126,1,1,0.66559
+183,4,1612,554,50,127,1,1,0.77099
+184,4,1612,554,50,127,1,1,0.87561
+185,4,1612,554,50,127,1,1,1
+186,4,1612,554,50,128,1,1,1
+187,4,1612,554,50,128,1,1,1
+188,4,1612,554,50,128,1,1,1
+189,4,1612,554,50,129,1,1,1
+190,4,1607,553,55,129,1,1,1
+191,4,1602,552,61,129,1,1,1
+192,4,1598,552,66,129,1,1,1
+193,4,1599,551,65,129,1,1,1
+194,4,1600,551,65,129,1,1,1
+195,4,1603,553,63,129,1,1,1
+196,4,1606,555,61,130,1,1,1
+197,4,1607,553,61,129,1,1,1
+198,4,1609,551,61,129,1,1,1
+199,4,1609,549,65,130,1,1,1
+200,4,1611,549,62,130,1,1,1
+201,4,1612,548,61,130,1,1,1
+202,4,1617,547,61,133,1,1,1
+203,4,1617,547,61,134,1,1,1
+204,4,1620,545,60,134,1,1,1
+205,4,1621,548,65,131,1,1,1
+206,4,1624,549,65,130,1,1,1
+207,4,1629,551,57,133,1,1,1
+208,4,1630,553,64,133,1,1,1
+209,4,1631,555,66,133,1,1,1
+210,4,1633,555,69,133,1,1,1
+211,4,1639,555,66,134,1,1,1
+212,4,1643,555,66,134,1,1,1
+213,4,1644,555,69,137,1,1,1
+214,4,1653,555,66,137,1,1,1
+215,4,1654,556,74,138,1,1,1
+216,4,1661,556,73,139,1,1,1
+217,4,1665,556,77,135,1,1,1
+218,4,1674,556,72,138,1,1,1
+219,4,1678,557,73,138,1,1,1
+220,4,1685,555,72,139,1,1,1
+221,4,1692,553,71,140,1,1,1
+222,4,1699,551,70,141,1,1,1
+223,4,1707,549,69,145,1,1,1
+224,4,1712,547,69,145,1,1,1
+225,4,1719,545,69,145,1,1,1
+226,4,1724,544,69,143,1,1,1
+227,4,1737,544,65,147,1,1,1
+228,4,1743,544,66,146,1,1,1
+229,4,1749,546,69,146,1,1,1
+230,4,1758,546,68,146,1,1,1
+231,4,1767,546,65,150,1,1,1
+232,4,1774,547,68,149,1,1,1
+233,4,1779,546,72,150,1,1,1
+234,4,1791,545,73,149,1,1,1
+235,4,1800,542,73,150,1,1,1
+236,4,1809,539,77,150,1,1,1
+237,4,1823,537,70,153,1,1,1
+238,4,1837,535,69,154,1,1,1
+239,4,1845,533,73,157,1,1,1
+240,4,1857,533,70,157,1,1,0.90141
+241,4,1871,534,65,158,1,1,0.75758
+242,4,1882,531,66,158,1,1,0.58209
+243,4,1897,528,65,159,1,1,0.36364
+1,5,1521,568,52,109,1,1,1
+2,5,1527,561,55,118,1,1,1
+3,5,1538,555,55,118,1,1,1
+4,5,1541,560,55,118,1,1,1
+5,5,1547,567,55,120,1,1,1
+6,5,1555,576,55,124,1,1,1
+7,5,1559,572,54,122,1,1,1
+8,5,1567,580,55,125,1,1,1
+9,5,1575,589,56,127,1,1,1
+10,5,1581,602,52,127,1,1,1
+11,5,1590,583,55,132,1,1,1
+12,5,1594,589,55,133,1,1,1
+13,5,1604,592,56,135,1,1,1
+14,5,1610,583,55,138,1,1,1
+15,5,1618,585,55,140,1,1,1
+16,5,1627,588,55,141,1,1,1
+17,5,1635,588,55,142,1,1,1
+18,5,1643,588,55,143,1,1,1
+19,5,1652,588,55,145,1,1,1
+20,5,1659,590,56,145,1,1,1
+21,5,1667,592,57,146,1,1,1
+22,5,1674,594,59,150,1,1,1
+23,5,1682,596,61,154,1,1,1
+24,5,1686,593,61,156,1,1,1
+25,5,1694,598,61,158,1,1,1
+26,5,1702,603,62,160,1,1,1
+27,5,1710,608,62,162,1,1,1
+28,5,1718,614,63,163,1,1,1
+29,5,1727,622,64,162,1,1,1
+30,5,1735,619,64,163,1,1,1
+31,5,1744,623,64,165,1,1,1
+32,5,1754,627,66,166,1,1,1
+33,5,1765,613,67,169,1,1,1
+34,5,1774,615,69,169,1,1,1
+35,5,1783,617,72,170,1,1,1
+36,5,1793,619,73,170,1,1,1
+37,5,1802,621,76,171,1,1,1
+38,5,1811,623,78,171,1,1,1
+39,5,1821,626,80,171,1,1,1
+40,5,1830,628,80,176,1,1,1
+41,5,1840,631,79,181,1,1,1
+42,5,1857,636,79,181,1,1,0.8
+43,5,1866,636,79,181,1,1,0.6875
+44,5,1879,635,76,187,1,1,0.54545
+45,5,1892,657,76,175,1,1,0.37662
+1,6,1609,558,57,118,1,1,1
+2,6,1615,560,57,114,1,1,1
+3,6,1626,546,58,127,1,1,1
+4,6,1633,553,58,125,1,1,1
+5,6,1640,563,61,130,1,1,1
+6,6,1647,574,61,130,1,1,1
+7,6,1656,574,60,124,1,1,1
+8,6,1663,581,61,132,1,1,1
+9,6,1666,588,64,126,1,1,1
+10,6,1669,600,69,132,1,1,1
+11,6,1677,585,67,135,1,1,1
+12,6,1686,588,66,136,1,1,1
+13,6,1695,591,65,138,1,1,1
+14,6,1703,583,62,140,1,1,1
+15,6,1714,585,61,142,1,1,1
+16,6,1720,587,60,145,1,1,1
+17,6,1728,588,60,144,1,1,1
+18,6,1736,590,60,143,1,1,1
+19,6,1744,591,60,143,1,1,1
+20,6,1752,593,61,142,1,1,1
+21,6,1760,597,63,142,1,1,1
+22,6,1768,597,66,146,1,1,1
+23,6,1776,597,69,150,1,1,1
+24,6,1785,598,71,153,1,1,1
+25,6,1793,598,74,157,1,1,1
+26,6,1802,599,76,160,1,1,1
+27,6,1809,603,76,162,1,1,1
+28,6,1819,609,78,164,1,1,1
+29,6,1830,616,79,165,1,1,1
+30,6,1839,620,77,168,1,1,1
+31,6,1849,625,74,170,1,1,0.96
+32,6,1861,616,75,183,1,1,0.78947
+33,6,1871,619,74,176,1,1,0.66667
+34,6,1881,622,73,169,1,1,0.54054
+35,6,1891,625,74,164,1,1,0.4
+36,6,1901,628,76,160,1,1,0.25974
+1,7,1445,511,33,78,1,1,0.94713
+2,7,1448,504,33,79,1,1,0.97537
+3,7,1451,500,34,78,1,1,0.97685
+4,7,1456,501,31,79,1,1,1
+5,7,1461,509,30,80,1,1,1
+6,7,1466,518,30,80,1,1,1
+7,7,1466,510,31,80,1,1,1
+8,7,1469,515,31,81,1,1,1
+9,7,1473,521,30,82,1,1,1
+10,7,1477,532,31,84,1,1,1
+11,7,1479,519,28,85,1,1,1
+12,7,1480,522,28,84,1,1,1
+13,7,1486,519,26,84,1,1,1
+14,7,1488,516,28,81,1,1,1
+15,7,1491,519,28,81,1,1,1
+16,7,1494,523,28,81,1,1,1
+17,7,1494,520,28,81,1,1,1
+18,7,1500,519,31,82,1,1,1
+19,7,1503,519,31,82,1,1,1
+20,7,1507,519,31,82,1,1,1
+21,7,1511,520,31,81,1,1,1
+22,7,1515,520,31,81,1,1,1
+23,7,1519,521,31,81,1,1,1
+24,7,1522,522,31,82,1,1,1
+25,7,1526,524,31,82,1,1,1
+26,7,1529,526,31,82,1,1,1
+27,7,1533,528,31,82,1,1,1
+28,7,1535,532,32,82,1,1,1
+29,7,1538,537,33,81,1,1,1
+30,7,1541,539,32,81,1,1,1
+31,7,1544,541,32,81,1,1,1
+32,7,1548,543,31,82,1,1,1
+33,7,1554,531,30,82,1,1,1
+34,7,1558,528,30,82,1,1,1
+35,7,1562,525,30,83,1,1,1
+36,7,1566,522,31,84,1,1,1
+37,7,1570,519,31,85,1,1,1
+38,7,1575,517,31,85,1,1,1
+39,7,1579,518,32,86,1,1,1
+40,7,1584,519,32,87,1,1,1
+41,7,1589,520,33,88,1,1,1
+42,7,1594,521,33,89,1,1,1
+43,7,1599,522,33,90,1,1,1
+44,7,1604,524,34,90,1,1,1
+45,7,1608,526,34,90,1,1,1
+46,7,1612,528,34,90,1,1,1
+47,7,1617,530,34,90,1,1,1
+48,7,1621,532,34,90,1,1,1
+49,7,1626,534,34,91,1,1,1
+50,7,1631,534,34,91,1,1,1
+51,7,1636,534,34,91,1,1,1
+52,7,1640,533,34,91,1,1,1
+53,7,1644,533,35,91,1,1,1
+54,7,1648,532,36,91,1,1,1
+55,7,1652,532,37,91,1,1,1
+56,7,1656,532,37,91,1,1,1
+57,7,1660,531,38,91,1,1,1
+58,7,1664,531,39,91,1,1,1
+59,7,1668,531,40,91,1,1,1
+60,7,1671,530,39,94,1,1,1
+61,7,1675,530,39,94,1,1,1
+62,7,1679,530,39,95,1,1,1
+63,7,1683,530,39,96,1,1,1
+64,7,1687,530,39,96,1,1,1
+65,7,1691,530,39,97,1,1,1
+66,7,1695,530,39,98,1,1,1
+67,7,1700,531,38,98,1,1,1
+68,7,1701,530,38,99,1,1,1
+69,7,1702,530,38,99,1,1,1
+70,7,1703,529,38,100,1,1,1
+71,7,1704,529,38,100,1,1,1
+72,7,1706,529,37,100,1,1,1
+73,7,1707,529,37,100,1,1,1
+74,7,1708,529,37,100,1,1,1
+75,7,1709,530,37,100,1,1,1
+76,7,1710,530,37,100,1,1,1
+77,7,1711,530,37,100,1,1,0.98567
+78,7,1712,531,37,100,1,1,0.95701
+79,7,1713,531,37,100,1,1,0.91402
+80,7,1714,531,37,100,1,1,0.88744
+81,7,1715,532,37,100,1,1,0.8567
+82,7,1713,532,37,100,1,1,0.77488
+83,7,1712,532,37,100,1,1,0.7186
+84,7,1711,533,37,100,1,1,0.64825
+85,7,1710,533,37,100,1,1,0.60709
+86,7,1709,533,37,100,1,1,0.57009
+87,7,1708,534,37,100,1,1,0.52762
+88,7,1707,534,37,100,1,1,0.54455
+89,7,1706,535,37,100,1,1,0.55446
+90,7,1704,536,37,100,1,1,0.56436
+91,7,1702,538,38,100,1,1,0.57426
+92,7,1700,539,38,101,1,1,0.57843
+93,7,1699,541,38,101,1,1,0.57843
+94,7,1697,542,38,102,1,1,0.58252
+95,7,1695,544,39,102,1,1,0.55388
+96,7,1693,546,39,101,1,1,0.55074
+97,7,1692,547,39,102,1,1,0.57888
+98,7,1690,549,39,102,1,1,0.61505
+99,7,1688,550,40,103,1,1,0.6454
+100,7,1686,552,40,103,1,1,0.68293
+101,7,1685,554,40,103,1,1,0.72702
+102,7,1683,552,38,105,1,1,0.77092
+103,7,1682,550,36,107,1,1,0.81081
+104,7,1681,548,34,109,1,1,0.84
+105,7,1678,548,34,109,1,1,0.81299
+106,7,1675,548,34,109,1,1,0.77299
+107,7,1672,548,35,110,1,1,0.75826
+108,7,1669,548,35,110,1,1,0.72948
+109,7,1666,548,35,110,1,1,0.69419
+110,7,1664,548,35,111,1,1,0.67857
+111,7,1661,548,35,111,1,1,0.60417
+112,7,1658,549,36,111,1,1,0.56757
+113,7,1655,549,36,111,1,1,0.50193
+114,7,1652,549,36,111,1,1,0.43243
+115,7,1650,549,36,112,1,1,0.41976
+116,7,1647,549,36,112,1,1,0.38866
+117,7,1644,549,36,112,1,1,0.34202
+118,7,1641,549,37,113,1,1,0.31994
+119,7,1638,549,37,113,1,1,0.33518
+120,7,1636,550,37,113,1,1,0.32479
+121,7,1632,549,37,114,1,1,0.31716
+122,7,1628,549,38,114,1,1,0.32375
+123,7,1625,549,37,114,1,1,0.31236
+124,7,1621,549,38,114,1,1,0.31394
+125,7,1617,549,39,114,1,1,0.315
+126,7,1614,549,38,114,1,1,0.2903
+127,7,1610,549,39,115,1,1,0.33405
+128,7,1607,549,38,115,1,1,0.37003
+129,7,1603,549,39,115,1,1,0.3944
+130,7,1599,549,40,115,1,1,0.45164
+131,7,1596,548,39,116,1,1,0.51581
+132,7,1592,548,40,116,1,1,0.58203
+133,7,1588,548,41,116,1,1,0.6337
+134,7,1585,548,40,117,1,1,0.65957
+135,7,1581,548,41,117,1,1,0.69229
+136,7,1578,548,40,117,1,1,0.71807
+137,7,1574,548,41,117,1,1,0.75847
+138,7,1570,548,42,117,1,1,0.78557
+139,7,1567,548,41,117,1,1,0.81638
+140,7,1563,548,42,117,1,1,0.84391
+141,7,1560,548,42,118,1,1,0.88216
+142,7,1556,548,42,118,1,1,0.92027
+143,7,1552,548,43,118,1,1,0.96047
+144,7,1549,548,42,119,1,1,1
+145,7,1545,548,43,119,1,1,1
+146,7,1542,549,43,119,1,1,1
+147,7,1534,550,47,118,1,1,1
+148,7,1526,552,51,117,1,1,1
+149,7,1519,554,54,116,1,1,1
+150,7,1513,556,53,113,1,1,1
+151,7,1509,554,51,114,1,1,1
+152,7,1505,552,50,116,1,1,1
+153,7,1501,551,49,117,1,1,1
+154,7,1497,549,47,118,1,1,1
+155,7,1493,547,46,120,1,1,1
+156,7,1489,546,45,121,1,1,1
+157,7,1483,546,45,121,1,1,1
+158,7,1478,546,45,122,1,1,1
+159,7,1472,547,45,121,1,1,1
+160,7,1467,547,45,122,1,1,1
+161,7,1461,547,45,122,1,1,1
+162,7,1456,548,45,122,1,1,1
+163,7,1450,548,44,120,1,1,1
+164,7,1445,548,44,119,1,1,1
+165,7,1441,548,44,119,1,1,1
+166,7,1437,547,43,119,1,1,1
+167,7,1434,546,42,119,1,1,1
+168,7,1431,545,40,119,1,1,1
+169,7,1428,544,39,120,1,1,1
+170,7,1423,543,40,121,1,1,1
+171,7,1418,542,41,122,1,1,1
+172,7,1413,541,42,123,1,1,1
+173,7,1408,541,44,123,1,1,1
+174,7,1399,542,48,121,1,1,1
+175,7,1391,544,51,118,1,1,1
+176,7,1388,548,51,114,1,1,1
+177,7,1386,547,51,116,1,1,1
+178,7,1383,547,51,116,1,1,1
+179,7,1381,547,50,117,1,1,1
+180,7,1379,547,50,118,1,1,1
+181,7,1377,547,49,119,1,1,1
+182,7,1374,547,49,120,1,1,1
+183,7,1372,547,49,121,1,1,1
+184,7,1370,547,48,122,1,1,1
+185,7,1368,548,48,122,1,1,1
+186,7,1365,547,49,122,1,1,1
+187,7,1363,547,49,122,1,1,1
+188,7,1361,547,49,122,1,1,1
+189,7,1358,546,50,122,1,1,1
+190,7,1356,546,50,122,1,1,1
+191,7,1354,546,50,122,1,1,1
+192,7,1352,546,50,122,1,1,1
+193,7,1349,547,50,122,1,1,1
+194,7,1347,548,50,123,1,1,1
+195,7,1346,547,49,124,1,1,1
+196,7,1345,546,49,125,1,1,1
+197,7,1344,545,48,126,1,1,1
+198,7,1343,545,48,126,1,1,1
+199,7,1342,544,47,127,1,1,1
+200,7,1341,543,47,128,1,1,1
+201,7,1341,543,46,129,1,1,1
+202,7,1340,547,46,126,1,1,1
+203,7,1338,546,46,131,1,1,1
+204,7,1337,547,47,130,1,1,1
+205,7,1336,548,48,129,1,1,1
+206,7,1335,550,50,128,1,1,1
+207,7,1334,550,50,128,1,1,1
+208,7,1333,550,50,129,1,1,1
+209,7,1333,550,50,130,1,1,1
+210,7,1332,551,50,129,1,1,1
+211,7,1332,551,50,130,1,1,1
+212,7,1331,551,50,131,1,1,1
+213,7,1331,552,50,131,1,1,1
+214,7,1332,552,50,131,1,1,1
+215,7,1334,552,49,132,1,1,1
+216,7,1335,553,50,132,1,1,1
+217,7,1337,553,49,133,1,1,1
+218,7,1339,554,49,133,1,1,1
+219,7,1340,553,49,134,1,1,1
+220,7,1341,552,49,135,1,1,1
+221,7,1342,551,50,136,1,1,1
+222,7,1344,551,50,136,1,1,1
+223,7,1346,551,50,137,1,1,1
+224,7,1348,552,51,137,1,1,1
+225,7,1350,552,51,138,1,1,1
+226,7,1352,553,51,137,1,1,1
+227,7,1355,553,51,138,1,1,1
+228,7,1357,553,51,139,1,1,1
+229,7,1359,554,51,139,1,1,1
+230,7,1361,554,52,139,1,1,1
+231,7,1363,555,52,139,1,1,1
+232,7,1365,555,52,140,1,1,1
+233,7,1368,556,52,140,1,1,1
+234,7,1370,552,52,140,1,1,1
+235,7,1373,550,52,142,1,1,1
+236,7,1376,549,53,144,1,1,1
+237,7,1379,548,52,143,1,1,1
+238,7,1383,548,50,141,1,1,1
+239,7,1387,548,49,140,1,1,1
+240,7,1392,548,49,141,1,1,1
+241,7,1397,548,50,142,1,1,1
+242,7,1402,548,50,143,1,1,1
+243,7,1407,548,51,145,1,1,1
+244,7,1413,549,47,147,1,1,1
+245,7,1419,550,44,150,1,1,1
+246,7,1424,550,46,150,1,1,1
+247,7,1430,550,47,150,1,1,1
+248,7,1436,550,45,152,1,1,1
+249,7,1442,551,44,153,1,1,1
+250,7,1448,547,46,157,1,1,1
+251,7,1454,543,48,161,1,1,1
+252,7,1463,540,49,161,1,1,1
+253,7,1470,542,48,158,1,1,1
+254,7,1475,542,49,158,1,1,1
+255,7,1481,542,49,159,1,1,0.9235
+256,7,1487,543,49,159,1,1,0.9195
+257,7,1498,544,48,153,1,1,0.92208
+258,7,1501,542,57,155,1,1,0.92308
+259,7,1501,540,66,158,1,1,0.92453
+260,7,1505,539,72,160,1,1,0.90062
+261,7,1508,538,80,162,1,1,0.86162
+262,7,1517,539,81,163,1,1,0.84228
+263,7,1528,544,82,163,1,1,0.80547
+264,7,1535,545,85,163,1,1,0.6947
+265,7,1542,546,88,163,1,1,0.59633
+266,7,1556,549,88,163,1,1,0.56837
+267,7,1569,551,82,163,1,1,0.52336
+268,7,1574,546,81,169,1,1,0.3538
+269,7,1571,541,96,178,1,1,0.36117
+270,7,1579,543,97,178,1,1,0.2807
+271,7,1596,542,81,178,1,1,0.13067
+272,7,1615,541,61,177,1,1,0.16809
+273,7,1629,541,61,177,1,1,0.18104
+274,7,1641,544,61,177,1,1,0.19319
+275,7,1647,545,62,177,1,1,0.25504
+276,7,1653,546,64,178,1,1,0.32858
+277,7,1662,549,64,178,1,1,0.41281
+278,7,1676,544,66,177,1,1,0.44097
+279,7,1684,546,64,187,1,1,0.50679
+280,7,1706,549,64,187,1,1,0.45205
+281,7,1717,546,64,187,1,1,0.52864
+282,7,1724,548,64,187,1,1,0.62152
+283,7,1735,547,67,186,1,1,0.7452
+284,7,1749,546,73,187,1,1,0.80326
+285,7,1763,546,73,187,1,1,0.89822
+286,7,1774,545,73,193,1,1,1
+287,7,1790,542,73,199,1,1,1
+288,7,1798,543,82,199,1,1,1
+289,7,1817,542,82,202,1,1,1
+290,7,1843,543,68,201,1,1,1
+291,7,1849,542,77,201,1,1,0.92308
+292,7,1856,541,85,201,1,1,0.75581
+293,7,1872,540,85,201,1,1,0.56977
+1,8,-13,662,64,224,1,1,0.78462
+2,8,-21,652,64,224,1,1,0.66154
+1,9,122,711,49,97,1,1,1
+2,9,111,698,49,97,1,1,1
+3,9,105,726,49,97,1,1,1
+4,9,94,724,49,97,1,1,1
+5,9,82,717,38,104,1,1,1
+6,9,66,734,42,105,1,1,1
+7,9,50,740,45,106,1,1,1
+8,9,35,747,48,107,1,1,1
+9,9,17,746,48,107,1,1,1
+10,9,-1,732,48,107,1,1,0.95918
+11,9,-7,757,48,107,1,1,0.83673
+1,10,195,575,46,154,1,1,1
+2,10,188,563,46,154,1,1,1
+3,10,178,584,46,154,1,1,1
+4,10,173,581,46,154,1,1,1
+5,10,165,581,46,154,1,1,1
+6,10,153,590,46,154,1,1,1
+7,10,141,585,46,154,1,1,1
+8,10,135,597,46,154,1,1,1
+9,10,122,594,46,154,1,1,1
+10,10,108,579,47,158,1,1,1
+11,10,99,586,48,162,1,1,1
+12,10,91,594,49,166,1,1,1
+13,10,74,570,50,170,1,1,1
+14,10,60,593,51,162,1,1,1
+15,10,43,588,55,172,1,1,1
+16,10,27,584,59,181,1,1,1
+17,10,10,592,65,178,1,1,1
+18,10,-1,595,65,178,1,1,0.9697
+19,10,-12,598,65,178,1,1,0.80303
+20,10,-25,602,65,178,1,1,0.60606
+1,11,273,585,46,148,1,1,0.76596
+2,11,266,574,46,148,1,1,0.78723
+3,11,258,592,46,148,1,1,0.65957
+4,11,257,592,46,148,1,1,0.80851
+5,11,247,586,46,148,1,1,0.76596
+6,11,242,598,46,148,1,1,0.78723
+7,11,232,593,45,157,1,1,0.76087
+8,11,222,602,45,157,1,1,0.73913
+9,11,214,602,45,157,1,1,0.80435
+10,11,201,593,49,156,1,1,0.78
+11,11,188,608,57,155,1,1,0.7069
+12,11,172,607,63,154,1,1,0.6875
+13,11,161,590,62,157,1,1,0.68254
+14,11,154,606,62,157,1,1,0.68254
+15,11,140,603,62,157,1,1,0.68254
+16,11,131,601,61,164,1,1,0.67742
+17,11,120,605,61,164,1,1,0.67742
+18,11,107,605,60,170,1,1,0.67213
+19,11,97,607,60,170,1,1,0.67213
+20,11,82,610,60,170,1,1,0.67213
+21,11,70,610,60,170,1,1,0.67213
+22,11,59,613,60,170,1,1,0.67213
+23,11,49,617,59,182,1,1,0.66667
+24,11,39,629,59,182,1,1,0.65
+25,11,25,631,59,182,1,1,0.63333
+26,11,10,628,66,200,1,1,0.64179
+27,11,0,637,66,200,1,1,0.59701
+28,11,-12,642,66,200,1,1,0.80597
+29,11,-21,640,66,200,1,1,0.67164
+1,12,264,495,19,297,0,10,1
+2,12,256,485,19,297,0,10,1
+3,12,254,501,19,297,0,10,1
+4,12,246,499,19,297,0,10,1
+5,12,238,498,19,297,0,10,1
+6,12,232,510,19,297,0,10,1
+7,12,223,517,19,297,0,10,1
+8,12,214,524,19,297,0,10,1
+9,12,203,521,19,297,0,10,1
+10,12,192,518,19,297,0,10,1
+11,12,185,536,19,297,0,10,1
+12,12,174,532,19,297,0,10,1
+13,12,164,528,19,297,0,10,1
+14,12,154,533,19,297,0,10,1
+15,12,144,539,19,297,0,10,1
+16,12,134,543,19,297,0,10,1
+17,12,124,548,19,297,0,10,1
+18,12,112,552,19,297,0,10,1
+19,12,101,557,19,297,0,10,1
+20,12,89,565,19,297,0,10,1
+21,12,77,573,19,297,0,10,1
+22,12,65,578,19,297,0,10,1
+23,12,54,584,19,297,0,10,1
+24,12,41,591,20,297,0,10,1
+25,12,28,599,21,296,0,10,1
+26,12,15,607,23,296,0,10,1
+27,12,2,618,25,294,0,10,1
+1,13,504,549,34,93,1,1,1
+2,13,502,537,34,93,1,1,1
+3,13,501,550,34,93,1,1,1
+4,13,501,546,34,93,1,1,1
+5,13,498,543,34,93,1,1,1
+6,13,498,556,34,93,1,1,1
+7,13,501,547,34,93,1,1,1
+8,13,495,555,34,93,1,1,1
+9,13,492,552,34,93,1,1,1
+10,13,489,546,34,93,1,1,1
+11,13,489,555,34,93,1,1,1
+12,13,488,556,34,93,1,1,1
+13,13,486,541,34,93,1,1,1
+14,13,482,549,34,93,1,1,1
+15,13,481,549,34,93,1,1,1
+16,13,480,549,34,93,1,1,1
+17,13,479,550,34,93,1,1,1
+18,13,476,549,34,94,1,1,1
+19,13,473,548,35,95,1,1,1
+20,13,471,548,35,96,1,1,1
+21,13,468,549,35,97,1,1,1
+22,13,466,550,35,98,1,1,1
+23,13,464,552,35,98,1,1,1
+24,13,461,553,36,99,1,1,1
+25,13,459,555,35,100,1,1,1
+26,13,457,556,35,101,1,1,1
+27,13,454,558,36,101,1,1,1
+28,13,452,559,36,102,1,1,1
+29,13,450,561,36,103,1,1,1
+30,13,450,570,36,104,1,1,1
+31,13,445,581,36,105,1,1,1
+32,13,442,573,36,106,1,1,1
+33,13,440,564,36,107,1,1,1
+34,13,437,570,36,108,1,1,1
+35,13,438,559,36,109,1,1,1
+36,13,435,557,36,110,1,1,1
+37,13,433,555,36,111,1,1,1
+38,13,431,553,36,112,1,1,1
+39,13,429,551,36,113,1,1,1
+40,13,427,550,36,113,1,1,1
+41,13,424,550,37,113,1,1,1
+42,13,422,551,37,113,1,1,1
+43,13,420,552,37,113,1,1,1
+44,13,418,553,37,113,1,1,1
+45,13,415,554,38,113,1,1,1
+46,13,413,555,38,113,1,1,1
+47,13,411,556,38,113,1,1,1
+48,13,409,557,38,113,1,1,1
+49,13,406,558,39,113,1,1,1
+50,13,404,559,39,113,1,1,1
+51,13,402,560,39,113,1,1,1
+52,13,400,561,39,113,1,1,1
+53,13,398,562,39,113,1,1,1
+54,13,393,561,40,113,1,1,1
+55,13,389,560,40,114,1,1,1
+56,13,385,559,41,115,1,1,1
+57,13,381,559,41,115,1,1,1
+58,13,377,558,41,115,1,1,1
+59,13,373,557,42,116,1,1,1
+60,13,369,556,42,117,1,1,1
+61,13,365,556,43,117,1,1,1
+62,13,365,552,43,118,1,1,1
+63,13,361,572,43,118,1,1,1
+64,13,357,556,43,118,1,1,1
+65,13,353,563,42,122,1,1,1
+66,13,354,568,44,121,1,1,1
+67,13,350,552,44,124,1,1,1
+68,13,345,560,44,127,1,1,1
+69,13,340,557,45,127,1,1,1
+70,13,336,555,46,126,1,1,1
+71,13,332,553,47,126,1,1,0.98031
+72,13,325,553,48,127,1,1,0.96269
+73,13,319,553,48,128,1,1,0.98054
+74,13,313,553,49,130,1,1,0.98076
+75,13,307,553,49,131,1,1,1
+76,13,301,553,50,133,1,1,1
+77,13,295,553,49,132,1,1,0.9809
+78,13,289,553,48,131,1,1,0.96135
+79,13,283,553,48,130,1,1,0.96136
+80,13,277,553,47,129,1,1,1
+81,13,272,554,46,128,1,1,1
+82,13,264,555,46,129,1,1,1
+83,13,256,556,47,130,1,1,1
+84,13,249,558,47,130,1,1,1
+85,13,242,560,47,130,1,1,1
+86,13,235,562,47,131,1,1,1
+87,13,228,564,47,132,1,1,1
+88,13,221,567,48,132,1,1,1
+89,13,214,568,49,133,1,1,1
+90,13,207,569,50,134,1,1,1
+91,13,201,571,50,134,1,1,1
+92,13,194,572,51,135,1,1,1
+93,13,187,573,52,136,1,1,1
+94,13,181,575,52,136,1,1,0.98196
+95,13,174,576,53,137,1,1,0.94726
+96,13,167,577,54,138,1,1,0.91498
+97,13,161,579,55,139,1,1,0.86429
+98,13,151,579,55,140,1,1,0.91578
+99,13,142,579,55,141,1,1,0.9326
+100,13,133,579,54,142,1,1,0.96592
+101,13,124,579,54,143,1,1,0.98295
+102,13,114,579,55,144,1,1,1
+103,13,105,579,54,145,1,1,1
+104,13,96,579,54,146,1,1,1
+105,13,87,580,54,146,1,1,1
+106,13,80,579,54,147,1,1,1
+107,13,73,578,54,148,1,1,1
+108,13,66,577,54,149,1,1,0.98315
+109,13,57,578,54,149,1,1,0.98291
+110,13,48,579,54,149,1,1,0.98279
+111,13,39,580,54,149,1,1,0.96533
+112,13,30,581,54,149,1,1,0.96533
+113,13,21,583,54,149,1,1,0.96509
+114,13,11,584,54,149,1,1,0.98255
+115,13,2,586,54,149,1,1,0.98242
+116,13,-7,588,54,149,1,1,0.83685
+117,13,-16,590,54,149,1,1,0.67309
+118,13,-25,591,54,149,1,1,0.50945
+1,14,543,548,31,95,1,1,1
+2,14,543,536,31,95,1,1,1
+3,14,543,548,31,95,1,1,1
+4,14,541,545,31,95,1,1,1
+5,14,540,542,31,95,1,1,1
+6,14,540,552,31,95,1,1,1
+7,14,538,553,31,95,1,1,1
+8,14,537,555,31,95,1,1,1
+9,14,535,552,31,95,1,1,1
+10,14,533,550,31,95,1,1,1
+11,14,532,553,31,95,1,1,1
+12,14,531,557,31,95,1,1,1
+13,14,530,545,31,95,1,1,1
+14,14,524,554,31,95,1,1,1
+15,14,522,554,33,94,1,1,1
+16,14,520,554,35,94,1,1,1
+17,14,519,554,36,94,1,1,1
+18,14,517,554,38,94,1,1,1
+19,14,516,554,39,94,1,1,1
+20,14,513,553,38,98,1,1,1
+21,14,511,554,38,98,1,1,1
+22,14,509,556,38,98,1,1,1
+23,14,507,558,38,98,1,1,1
+24,14,505,560,38,98,1,1,1
+25,14,504,563,38,98,1,1,1
+26,14,502,566,38,98,1,1,1
+27,14,501,569,38,98,1,1,1
+28,14,499,570,38,98,1,1,1
+29,14,497,572,38,98,1,1,1
+30,14,495,574,38,98,1,1,1
+31,14,492,589,38,98,1,1,1
+32,14,492,583,37,104,1,1,1
+33,14,488,568,36,108,1,1,1
+34,14,488,571,36,108,1,1,1
+35,14,485,559,35,114,1,1,1
+36,14,481,556,37,113,1,1,1
+37,14,478,553,39,113,1,1,1
+38,14,476,555,39,113,1,1,1
+39,14,476,549,39,113,1,1,1
+40,14,472,553,39,113,1,1,1
+41,14,470,553,39,113,1,1,1
+42,14,469,554,39,113,1,1,1
+43,14,467,555,39,113,1,1,1
+44,14,466,556,39,113,1,1,1
+45,14,463,557,40,113,1,1,1
+46,14,460,559,41,112,1,1,1
+47,14,457,560,42,112,1,1,1
+48,14,454,562,44,112,1,1,1
+49,14,451,564,39,113,1,1,1
+50,14,448,563,40,114,1,1,1
+51,14,445,563,41,115,1,1,1
+52,14,442,562,43,116,1,1,1
+53,14,439,562,44,117,1,1,1
+54,14,436,562,46,118,1,1,1
+55,14,433,561,46,119,1,1,1
+56,14,430,560,46,120,1,1,1
+57,14,428,559,45,121,1,1,1
+58,14,425,558,46,122,1,1,1
+59,14,423,557,45,123,1,1,1
+60,14,420,556,45,124,1,1,1
+61,14,418,556,45,124,1,1,1
+62,14,415,555,46,118,1,1,1
+63,14,412,572,46,118,1,1,1
+64,14,406,557,46,118,1,1,1
+65,14,405,564,46,118,1,1,1
+66,14,405,572,46,118,1,1,1
+67,14,399,557,46,119,1,1,1
+68,14,391,564,46,126,1,1,1
+69,14,387,562,46,125,1,1,1
+70,14,383,561,47,124,1,1,1
+71,14,379,560,48,123,1,1,1
+72,14,372,564,48,124,1,1,1
+73,14,367,559,48,125,1,1,1
+74,14,362,558,48,126,1,1,1
+75,14,357,558,49,127,1,1,1
+76,14,353,558,49,128,1,1,1
+77,14,344,559,49,129,1,1,1
+78,14,336,560,49,130,1,1,1
+79,14,330,560,50,130,1,1,1
+80,14,325,561,50,129,1,1,1
+81,14,319,562,51,128,1,1,1
+82,14,314,563,51,127,1,1,1
+83,14,308,563,50,128,1,1,1
+84,14,302,564,49,129,1,1,1
+85,14,296,565,48,129,1,1,1
+86,14,290,566,48,130,1,1,1
+87,14,284,567,47,130,1,1,1
+88,14,278,568,46,131,1,1,1
+89,14,273,569,45,132,1,1,1
+90,14,265,571,46,133,1,1,1
+91,14,257,573,47,134,1,1,1
+92,14,249,576,48,134,1,1,1
+93,14,241,578,50,135,1,1,1
+94,14,233,581,51,135,1,1,1
+95,14,225,583,52,136,1,1,1
+96,14,217,586,54,137,1,1,1
+97,14,209,586,55,138,1,1,1
+98,14,202,587,56,138,1,1,1
+99,14,194,587,57,139,1,1,1
+100,14,186,588,58,139,1,1,1
+101,14,178,588,60,140,1,1,1
+102,14,171,589,60,141,1,1,1
+103,14,163,589,62,142,1,1,1
+104,14,155,590,63,142,1,1,1
+105,14,148,591,64,143,1,1,1
+106,14,138,590,66,143,1,1,1
+107,14,129,589,67,144,1,1,1
+108,14,120,588,68,145,1,1,1
+109,14,111,587,69,146,1,1,1
+110,14,102,587,70,146,1,1,1
+111,14,92,587,68,147,1,1,1
+112,14,83,588,66,147,1,1,1
+113,14,74,589,63,147,1,1,1
+114,14,65,590,61,148,1,1,1
+115,14,56,591,61,149,1,1,1
+116,14,47,592,61,150,1,1,1
+117,14,38,593,61,151,1,1,1
+118,14,29,594,61,152,1,1,1
+119,14,18,594,61,154,1,1,1
+120,14,8,595,60,155,1,1,1
+121,14,-3,595,60,157,1,1,0.93443
+122,14,-13,596,60,159,1,1,0.77049
+123,14,-21,597,60,159,1,1,0.63934
+124,14,-29,599,60,159,1,1,0.5082
+1,15,652,528,27,70,1,1,1
+2,15,652,518,27,70,1,1,0.71429
+3,15,651,529,26,74,1,1,1
+4,15,651,526,25,73,1,1,1
+5,15,651,523,25,72,1,1,1
+6,15,652,537,26,69,1,1,0.82804
+7,15,650,529,25,70,1,1,1
+8,15,650,536,25,71,1,1,1
+9,15,649,534,25,72,1,1,1
+10,15,646,530,25,73,1,1,0.72557
+11,15,645,533,25,70,1,1,0.67281
+12,15,644,536,26,68,1,1,0.63714
+13,15,646,524,26,68,1,1,0.66989
+14,15,642,531,27,72,1,1,0.85714
+15,15,641,529,27,72,1,1,0.85714
+16,15,641,527,27,72,1,1,0.85714
+17,15,640,531,27,73,1,1,1
+18,15,639,531,27,73,1,1,1
+19,15,637,532,27,73,1,1,1
+20,15,635,532,27,74,1,1,1
+21,15,634,533,27,75,1,1,0.86278
+22,15,633,534,26,76,1,1,0.78932
+23,15,632,535,26,77,1,1,0.89744
+24,15,630,537,26,77,1,1,0.89744
+25,15,629,539,26,77,1,1,0.89744
+26,15,628,541,26,77,1,1,0.96534
+27,15,626,544,26,77,1,1,0.96439
+28,15,625,546,26,77,1,1,0.8547
+29,15,624,548,26,77,1,1,0.96439
+30,15,623,551,26,77,1,1,0.96391
+31,15,621,562,26,77,1,1,0.96486
+32,15,620,555,26,77,1,1,1
+33,15,619,549,26,77,1,1,1
+34,15,618,555,26,78,1,1,1
+35,15,616,552,27,78,1,1,1
+36,15,615,549,27,79,1,1,1
+37,15,614,546,27,80,1,1,1
+38,15,613,544,27,79,1,1,1
+39,15,612,541,27,80,1,1,1
+40,15,611,538,27,81,1,1,0.14286
+41,15,610,536,28,81,1,1,0.13793
+42,15,609,538,28,81,1,1,0.17241
+43,15,608,540,29,82,1,1,1
+44,15,606,540,30,83,1,1,1
+45,15,605,541,30,83,1,1,1
+46,15,604,542,30,84,1,1,1
+47,15,603,543,30,84,1,1,1
+48,15,602,544,31,85,1,1,1
+49,15,599,545,32,86,1,1,0.97109
+50,15,597,547,32,86,1,1,0.94148
+51,15,595,548,32,87,1,1,0.91322
+52,15,593,550,32,87,1,1,0.94215
+53,15,590,549,32,87,1,1,0.91632
+54,15,587,548,32,88,1,1,0.88832
+55,15,584,547,33,88,1,1,0.86451
+56,15,581,546,33,89,1,1,0.81242
+57,15,579,546,33,89,1,1,0.81242
+58,15,575,546,33,90,1,1,0.78281
+59,15,576,541,33,90,1,1,0.89787
+60,15,572,543,33,90,1,1,0.86749
+61,15,569,545,33,91,1,1,0.83696
+62,15,565,542,33,91,1,1,0.74105
+63,15,567,553,33,91,1,1,0.88875
+64,15,563,543,31,93,1,1,0.88165
+65,15,558,548,31,93,1,1,0.85539
+66,15,558,553,32,96,1,1,0.91659
+67,15,553,544,33,98,1,1,1
+68,15,550,550,35,98,1,1,1
+69,15,545,549,37,97,1,1,1
+70,15,540,548,39,96,1,1,0.86082
+71,15,536,547,40,96,1,1,0.83983
+72,15,532,551,41,97,1,1,1
+73,15,526,550,41,98,1,1,1
+74,15,521,550,41,98,1,1,0.79004
+75,15,516,549,41,100,1,1,0.81518
+76,15,511,549,40,100,1,1,0.83434
+77,15,506,548,40,101,1,1,0.83596
+78,15,501,548,40,102,1,1,0.88278
+79,15,495,548,41,103,1,1,0.88668
+80,15,488,550,42,104,1,1,0.86445
+81,15,482,549,42,105,1,1,0.86705
+82,15,476,549,43,105,1,1,0.87136
+83,15,469,550,42,106,1,1,0.84482
+84,15,463,551,40,107,1,1,0.83717
+85,15,456,552,39,108,1,1,0.80917
+86,15,450,554,38,109,1,1,1
+87,15,445,556,38,110,1,1,1
+88,15,437,558,39,110,1,1,1
+89,15,430,560,39,111,1,1,1
+90,15,423,563,39,111,1,1,1
+91,15,416,566,40,112,1,1,1
+92,15,410,572,41,109,1,1,1
+93,15,403,573,41,110,1,1,1
+94,15,396,575,41,110,1,1,0.9305
+95,15,389,577,41,110,1,1,0.93115
+96,15,382,579,42,111,1,1,0.95432
+97,15,376,579,42,112,1,1,1
+98,15,368,579,42,113,1,1,0.95675
+99,15,360,579,42,114,1,1,0.97836
+100,15,352,579,43,115,1,1,1
+101,15,345,579,42,117,1,1,1
+102,15,337,579,43,118,1,1,1
+103,15,329,579,43,119,1,1,1
+104,15,322,579,43,121,1,1,1
+105,15,314,580,44,119,1,1,1
+106,15,306,581,45,118,1,1,1
+107,15,295,581,46,120,1,1,1
+108,15,285,582,46,121,1,1,1
+109,15,275,583,46,122,1,1,1
+110,15,265,584,46,123,1,1,1
+111,15,255,585,46,124,1,1,1
+112,15,245,586,46,126,1,1,1
+113,15,234,586,47,128,1,1,1
+114,15,224,587,47,129,1,1,1
+115,15,214,588,47,130,1,1,1
+116,15,204,589,47,131,1,1,1
+117,15,194,590,47,132,1,1,1
+118,15,184,591,48,134,1,1,1
+119,15,173,593,48,134,1,1,1
+120,15,162,595,49,134,1,1,1
+121,15,152,597,48,134,1,1,1
+122,15,141,599,49,134,1,1,1
+123,15,130,601,49,134,1,1,1
+124,15,120,603,49,134,1,1,1
+125,15,109,605,49,134,1,1,1
+126,15,98,607,50,134,1,1,1
+127,15,88,609,50,135,1,1,1
+128,15,76,610,51,138,1,1,1
+129,15,64,611,52,141,1,1,1
+130,15,52,612,53,144,1,1,1
+131,15,40,614,54,146,1,1,1
+132,15,28,615,55,149,1,1,1
+133,15,16,616,56,152,1,1,1
+134,15,4,618,58,155,1,1,1
+135,15,-8,619,58,155,1,1,0.84746
+136,15,-20,620,58,155,1,1,0.64407
+1,16,637,536,22,58,1,1,0.65217
+2,16,638,522,22,59,1,1,0.43478
+3,16,637,534,21,64,1,1,0.63636
+4,16,636,530,21,64,1,1,0.68182
+5,16,636,527,21,64,1,1,0.68182
+6,16,635,542,21,64,1,1,0.77273
+7,16,635,533,22,65,1,1,0.65217
+8,16,634,538,22,66,1,1,0.69565
+9,16,633,539,22,65,1,1,0.69565
+10,16,631,538,22,66,1,1,1
+11,16,629,538,22,66,1,1,1
+12,16,628,538,22,67,1,1,1
+13,16,626,526,22,67,1,1,1
+14,16,623,532,22,62,1,1,0.47826
+15,16,621,532,23,63,1,1,0.83333
+16,16,620,532,23,65,1,1,0.875
+17,16,619,532,23,67,1,1,0.875
+18,16,618,532,23,69,1,1,0.875
+19,16,617,532,23,71,1,1,0.83333
+20,16,616,533,23,72,1,1,0.79167
+21,16,614,536,23,72,1,1,0.83333
+22,16,613,540,23,72,1,1,1
+23,16,611,541,23,73,1,1,1
+24,16,609,543,23,73,1,1,1
+25,16,608,545,23,73,1,1,1
+26,16,605,546,23,73,1,1,1
+27,16,603,547,23,74,1,1,0.95833
+28,16,603,549,23,74,1,1,0.91667
+29,16,601,551,23,74,1,1,0.95833
+30,16,599,553,24,75,1,1,0.96
+31,16,598,566,23,74,1,1,1
+32,16,596,560,23,74,1,1,1
+33,16,594,551,24,75,1,1,1
+34,16,592,556,23,75,1,1,1
+35,16,590,553,24,75,1,1,1
+36,16,589,551,24,75,1,1,1
+37,16,588,548,24,75,1,1,1
+38,16,587,546,24,75,1,1,1
+39,16,586,544,25,75,1,1,1
+40,16,584,544,25,75,1,1,1
+41,16,583,545,24,75,1,1,1
+42,16,581,544,25,77,1,1,1
+43,16,580,544,25,79,1,1,1
+44,16,578,543,26,81,1,1,1
+45,16,577,543,26,83,1,1,1
+46,16,575,542,27,85,1,1,1
+47,16,574,542,27,87,1,1,1
+48,16,573,545,27,86,1,1,1
+49,16,573,549,26,84,1,1,1
+50,16,570,550,28,85,1,1,1
+51,16,568,552,29,86,1,1,1
+52,16,565,554,29,85,1,1,1
+53,16,562,556,30,85,1,1,1
+54,16,560,555,30,85,1,1,1
+55,16,558,554,30,86,1,1,1
+56,16,557,554,30,86,1,1,1
+57,16,555,554,30,86,1,1,1
+58,16,552,553,30,86,1,1,1
+59,16,549,553,30,85,1,1,1
+60,16,546,552,30,85,1,1,1
+61,16,543,552,31,84,1,1,0.8125
+62,16,540,544,33,89,1,1,0.73529
+63,16,538,558,32,88,1,1,1
+64,16,534,548,32,89,1,1,1
+65,16,530,555,32,88,1,1,1
+66,16,528,561,32,89,1,1,1
+67,16,527,551,31,87,1,1,0.8125
+68,16,522,557,32,88,1,1,0.84848
+69,16,518,556,31,89,1,1,0.84375
+70,16,514,555,31,91,1,1,1
+71,16,510,554,31,92,1,1,1
+72,16,506,553,31,94,1,1,0.8125
+73,16,502,552,31,95,1,1,0.75
+74,16,498,552,31,96,1,1,0.71875
+75,16,492,552,31,97,1,1,0.75
+76,16,486,552,31,98,1,1,1
+77,16,481,552,31,99,1,1,1
+78,16,474,552,31,100,1,1,1
+79,16,468,553,31,100,1,1,1
+80,16,461,553,32,101,1,1,0.81818
+81,16,455,554,32,101,1,1,1
+82,16,449,555,32,101,1,1,1
+83,16,442,555,33,102,1,1,1
+84,16,436,556,33,102,1,1,0.79412
+85,16,430,557,33,103,1,1,0.76471
+86,16,422,558,33,104,1,1,0.82353
+87,16,414,560,34,104,1,1,0.88571
+88,16,406,562,35,104,1,1,0.86111
+89,16,399,564,35,105,1,1,0.86111
+90,16,391,566,35,106,1,1,0.88889
+91,16,384,569,35,106,1,1,0.88889
+92,16,377,572,35,107,1,1,0.91667
+93,16,370,575,35,107,1,1,0.91667
+94,16,363,578,35,107,1,1,0.91667
+95,16,356,581,35,108,1,1,1
+96,16,348,581,35,109,1,1,0.94444
+97,16,340,582,35,109,1,1,1
+98,16,332,587,37,109,1,1,1
+99,16,323,587,37,110,1,1,1
+100,16,314,588,37,110,1,1,1
+101,16,305,588,38,110,1,1,1
+102,16,296,588,39,111,1,1,1
+103,16,288,589,39,111,1,1,1
+104,16,279,589,40,112,1,1,1
+105,16,271,590,40,112,1,1,1
+106,16,261,589,40,113,1,1,1
+107,16,251,589,40,113,1,1,1
+108,16,242,590,37,114,1,1,1
+109,16,234,592,34,115,1,1,1
+110,16,223,592,36,116,1,1,1
+111,16,212,592,38,117,1,1,1
+112,16,202,593,40,118,1,1,1
+113,16,190,593,41,119,1,1,1
+114,16,178,594,43,120,1,1,1
+115,16,166,595,44,121,1,1,1
+116,16,154,596,46,122,1,1,1
+117,16,142,597,47,123,1,1,1
+118,16,131,598,48,124,1,1,1
+119,16,119,599,49,125,1,1,1
+120,16,108,601,49,125,1,1,1
+121,16,97,603,49,126,1,1,1
+122,16,86,605,49,126,1,1,1
+123,16,74,606,50,128,1,1,1
+124,16,63,608,51,128,1,1,1
+125,16,52,610,51,128,1,1,1
+126,16,41,612,51,129,1,1,1
+127,16,29,613,52,130,1,1,1
+128,16,18,615,52,131,1,1,1
+129,16,7,617,52,131,1,1,1
+130,16,-4,619,53,132,1,1,0.90741
+131,16,-16,623,53,132,1,1,0.68519
+1,17,677,521,23,58,1,1,0.54167
+2,17,680,512,19,57,1,1,0.6
+3,17,679,524,19,58,1,1,0.7
+4,17,679,521,22,56,1,1,0.56522
+5,17,679,520,22,56,1,1,0.6087
+6,17,681,532,22,57,1,1,0.47826
+7,17,681,524,21,59,1,1,0.59091
+8,17,680,530,22,64,1,1,0.52174
+9,17,679,527,23,64,1,1,0.45833
+10,17,679,525,23,64,1,1,0.54167
+11,17,675,526,27,70,1,1,0.46429
+12,17,674,530,28,70,1,1,0.41379
+13,17,674,518,27,69,1,1,0.5
+14,17,673,523,27,69,1,1,0.42857
+15,17,673,522,27,69,1,1,0.46429
+16,17,673,522,27,68,1,1,0.46429
+17,17,673,521,27,69,1,1,0.53571
+18,17,673,521,27,68,1,1,0.57143
+19,17,673,521,28,68,1,1,0.58621
+20,17,671,524,28,68,1,1,0.58621
+21,17,670,528,28,67,1,1,0.58621
+22,17,669,528,29,66,1,1,0.56667
+23,17,669,528,29,66,1,1,0.6
+24,17,668,529,30,65,1,1,0.64516
+25,17,667,530,31,65,1,1,0.65625
+26,17,667,531,31,65,1,1,0.65625
+27,17,665,533,31,64,1,1,0.65625
+28,17,663,535,32,64,1,1,0.66667
+29,17,662,537,32,64,1,1,0.66667
+30,17,662,546,31,64,1,1,0.65625
+31,17,663,558,24,66,1,1,0.56
+32,17,659,551,32,70,1,1,0.66667
+33,17,658,539,28,71,1,1,0.62069
+34,17,658,543,30,73,1,1,0.58065
+35,17,659,538,27,71,1,1,0.53571
+36,17,660,533,25,70,1,1,0.5
+37,17,657,528,29,76,1,1,0.56667
+38,17,655,527,29,77,1,1,0.56667
+39,17,654,526,29,79,1,1,0.56667
+40,17,652,525,30,81,1,1,0.58065
+41,17,651,525,30,82,1,1,0.6129
+42,17,651,526,30,82,1,1,0.6129
+43,17,649,529,31,82,1,1,0.625
+44,17,648,529,31,83,1,1,0.625
+45,17,647,530,31,83,1,1,0.625
+46,17,646,531,31,83,1,1,0.625
+47,17,646,532,30,84,1,1,0.6129
+48,17,644,532,30,86,1,1,0.64516
+49,17,643,533,30,87,1,1,0.64516
+50,17,642,533,30,89,1,1,0.64516
+51,17,641,534,30,90,1,1,1
+52,17,640,535,30,88,1,1,0.58065
+53,17,639,537,31,85,1,1,0.5625
+54,17,637,537,31,85,1,1,0.5625
+55,17,635,537,31,85,1,1,0.5625
+56,17,633,537,32,86,1,1,0.54789
+57,17,632,535,32,86,1,1,0.57576
+58,17,631,533,32,87,1,1,0.57576
+59,17,629,532,32,88,1,1,0.5475
+60,17,627,532,32,88,1,1,0.51856
+61,17,626,532,31,89,1,1,0.50347
+62,17,624,527,31,89,1,1,0.48264
+63,17,623,542,31,89,1,1,0.44722
+64,17,620,541,32,89,1,1,0.78788
+65,17,618,540,32,90,1,1,0.88145
+66,17,616,540,32,90,1,1,0.51915
+67,17,612,538,32,91,1,1,0.63636
+68,17,609,537,32,91,1,1,0.46509
+69,17,605,536,32,91,1,1,0.54941
+70,17,601,535,32,92,1,1,0.49137
+71,17,597,534,32,93,1,1,0.4626
+72,17,594,533,32,94,1,1,0.52089
+73,17,590,532,33,95,1,1,0.50858
+74,17,587,532,33,95,1,1,0.53585
+75,17,582,532,33,95,1,1,0.50858
+76,17,577,533,33,95,1,1,0.4761
+77,17,572,534,34,95,1,1,0.40893
+78,17,568,533,34,95,1,1,0.49286
+79,17,565,532,33,96,1,1,0.47908
+80,17,559,532,34,97,1,1,0.44257
+81,17,553,532,35,98,1,1,0.43238
+82,17,548,533,36,98,1,1,0.47256
+83,17,542,534,36,99,1,1,0.44568
+84,17,536,536,37,99,1,1,0.60421
+85,17,531,538,37,100,1,1,0.50521
+86,17,525,539,38,100,1,1,0.5179
+87,17,520,540,38,100,1,1,0.52044
+88,17,515,542,38,100,1,1,0.54455
+89,17,509,545,38,100,1,1,0.51917
+90,17,503,548,38,101,1,1,0.63047
+91,17,496,549,38,102,1,1,0.60966
+92,17,489,551,38,102,1,1,0.56535
+93,17,484,552,36,103,1,1,0.57147
+94,17,480,553,33,104,1,1,0.59244
+95,17,476,554,31,106,1,1,0.62792
+96,17,469,557,31,105,1,1,0.5339
+97,17,462,558,32,105,1,1,0.49257
+98,17,456,560,32,105,1,1,0.66381
+99,17,449,559,33,107,1,1,0.53486
+100,17,443,559,34,108,1,1,0.74312
+101,17,435,559,34,108,1,1,0.74574
+102,17,428,559,33,108,1,1,0.74096
+103,17,421,558,34,108,1,1,0.55072
+104,17,415,558,34,107,1,1,0.57566
+105,17,409,558,34,107,1,1,0.60899
+106,17,401,558,35,107,1,1,0.5
+107,17,394,558,36,107,1,1,0.53478
+108,17,387,558,37,108,1,1,0.59054
+109,17,379,558,37,108,1,1,0.61251
+110,17,371,559,38,108,1,1,0.64432
+111,17,363,560,38,108,1,1,0.66667
+112,17,355,560,39,108,1,1,0.675
+113,17,347,561,39,108,1,1,0.675
+114,17,340,562,39,108,1,1,0.675
+115,17,331,562,40,109,1,1,0.68293
+116,17,323,563,40,110,1,1,0.70732
+117,17,315,564,40,111,1,1,0.73171
+118,17,307,564,40,113,1,1,0.73171
+119,17,299,565,40,114,1,1,0.73171
+120,17,291,566,40,114,1,1,0.7561
+121,17,283,566,40,116,1,1,0.73171
+122,17,275,567,41,117,1,1,0.66667
+123,17,267,568,41,118,1,1,0.7381
+124,17,259,568,41,120,1,1,0.7619
+125,17,251,569,41,120,1,1,0.71429
+126,17,243,570,41,121,1,1,0.64286
+127,17,235,570,41,123,1,1,0.71429
+128,17,227,571,41,124,1,1,0.71429
+129,17,219,572,42,125,1,1,0.72093
+130,17,209,573,43,126,1,1,0.70455
+131,17,200,574,43,127,1,1,1
+132,17,191,575,43,128,1,1,0.75
+133,17,181,576,44,129,1,1,0.6
+134,17,172,577,44,130,1,1,0.6
+135,17,163,579,44,130,1,1,0.62222
+136,17,154,579,44,131,1,1,0.62222
+137,17,146,580,44,131,1,1,0.62222
+138,17,138,580,44,132,1,1,0.64444
+139,17,129,581,45,132,1,1,0.65217
+140,17,121,581,45,133,1,1,0.63043
+141,17,113,582,45,134,1,1,0.63043
+142,17,104,581,45,135,1,1,0.63043
+143,17,95,581,46,136,1,1,1
+144,17,87,581,45,136,1,1,0.63043
+145,17,78,581,46,137,1,1,1
+146,17,70,581,45,137,1,1,0.63043
+147,17,61,581,46,138,1,1,0.6383
+148,17,53,581,46,139,1,1,0.65957
+149,17,42,583,46,139,1,1,0.65957
+150,17,32,586,46,139,1,1,0.65957
+151,17,22,588,46,140,1,1,0.65957
+152,17,12,591,46,140,1,1,0.65957
+153,17,1,590,46,141,1,1,0.65957
+154,17,-9,590,45,141,1,1,0.78261
+155,17,-14,591,45,141,1,1,0.67391
+145,18,474,531,24,65,1,1,0.26182
+146,18,468,531,24,65,1,1,0.22667
+147,18,463,532,24,64,1,1,0.21477
+148,18,457,532,25,65,1,1,0.22261
+149,18,452,533,24,64,1,1,0.12369
+150,18,446,533,25,64,1,1,0.12899
+151,18,441,534,25,64,1,1,0.12899
+152,18,436,534,23,68,1,1,0.18961
+153,18,430,535,24,67,1,1,0.17412
+154,18,425,537,24,65,1,1,0.20182
+155,18,419,538,24,66,1,1,0.20597
+156,18,414,539,23,67,1,1,0.21324
+157,18,409,540,23,68,1,1,0.33696
+158,18,403,540,23,69,1,1,0.35714
+159,18,398,541,22,70,1,1,0.36497
+160,18,392,542,22,70,1,1,0.36497
+161,18,387,543,22,71,1,1,0.41063
+162,18,380,545,23,71,1,1,0.34375
+163,18,373,547,25,71,1,1,0.30556
+164,18,367,546,26,72,1,1,0.31811
+165,18,362,546,26,72,1,1,0.31811
+166,18,357,546,26,72,1,1,0.32877
+167,18,352,546,26,72,1,1,0.32877
+168,18,347,546,26,72,1,1,0.32877
+169,18,342,546,27,72,1,1,0.36301
+170,18,337,546,28,71,1,1,0.38649
+171,18,332,547,29,70,1,1,0.33615
+172,18,328,546,28,70,1,1,0.35114
+173,18,324,546,28,70,1,1,0.35114
+174,18,320,546,28,70,1,1,0.35697
+175,18,316,545,28,69,1,1,0.36749
+176,18,312,545,28,68,1,1,0.36832
+177,18,308,545,28,67,1,1,0.37525
+178,18,303,547,29,69,1,1,0.34714
+179,18,297,547,29,71,1,1,0.27917
+180,18,291,548,30,72,1,1,0.23774
+181,18,286,548,30,76,1,1,0.29828
+182,18,282,548,30,81,1,1,1
+183,18,278,549,29,77,1,1,0.28419
+184,18,274,551,29,72,1,1,0.24566
+185,18,270,552,29,72,1,1,0.24566
+186,18,266,553,29,72,1,1,0.27443
+187,18,263,554,28,72,1,1,0.28389
+188,18,259,555,28,73,1,1,0.31314
+189,18,255,556,28,73,1,1,0.31314
+190,18,252,557,27,73,1,1,0.35521
+191,18,248,558,27,73,1,1,0.35521
+192,18,245,560,26,73,1,1,0.3984
+193,18,241,560,26,74,1,1,0.40148
+194,18,237,561,26,74,1,1,0.40148
+195,18,234,562,26,74,1,1,0.43852
+196,18,225,564,28,72,1,1,0.30231
+197,18,221,565,28,72,1,1,0.30231
+198,18,217,566,28,72,1,1,0.30231
+199,18,214,567,28,72,1,1,0.3368
+200,18,210,568,28,72,1,1,0.3368
+201,18,207,569,28,72,1,1,0.37128
+202,18,203,570,28,72,1,1,0.37128
+203,18,200,571,28,73,1,1,0.40168
+204,18,197,572,28,74,1,1,0.43586
+205,18,193,572,28,75,1,1,0.43421
+206,18,190,573,28,75,1,1,0.46869
+207,18,186,574,29,76,1,1,0.48225
+208,18,183,575,28,76,1,1,0.49888
+209,18,179,576,29,76,1,1,0.51169
+210,18,176,577,29,77,1,1,0.54487
+211,18,172,578,29,77,1,1,0.54103
+212,18,169,579,29,77,1,1,0.54103
+213,18,166,580,29,78,1,1,0.53713
+214,18,164,581,29,78,1,1,0.57046
+215,18,161,575,29,78,1,1,0.57215
+216,18,158,575,29,79,1,1,0.545
+217,18,156,576,29,79,1,1,0.57208
+218,18,153,576,30,80,1,1,0.55396
+219,18,151,577,30,80,1,1,0.55914
+220,18,149,578,29,80,1,1,0.53909
+221,18,146,578,30,81,1,1,0.52793
+222,18,144,579,30,81,1,1,0.52793
+223,18,142,580,30,81,1,1,0.52793
+224,18,140,585,30,81,1,1,0.52124
+225,18,137,585,31,82,1,1,0.47854
+226,18,135,585,31,84,1,1,0.45184
+227,18,133,586,31,84,1,1,0.42537
+228,18,131,586,31,86,1,1,0.47881
+229,18,129,586,31,88,1,1,0.51053
+230,18,127,587,31,88,1,1,0.51018
+231,18,125,587,31,90,1,1,0.49004
+232,18,123,588,32,91,1,1,0.55764
+233,18,123,588,32,90,1,1,0.58442
+234,18,122,587,32,90,1,1,0.61538
+235,18,122,587,31,89,1,1,0.50556
+236,18,121,587,31,88,1,1,0.5
+237,18,121,587,31,87,1,1,0.53125
+238,18,121,586,30,88,1,1,0.51613
+239,18,121,586,30,89,1,1,0.54839
+240,18,119,585,31,90,1,1,0.53125
+241,18,118,585,32,91,1,1,0.58366
+242,18,116,585,34,91,1,1,0.48571
+243,18,115,585,35,92,1,1,0.45042
+244,18,114,585,36,93,1,1,0.44451
+245,18,116,585,35,95,1,1,0.53704
+246,18,115,584,36,96,1,1,0.45584
+247,18,117,584,36,97,1,1,0.48704
+248,18,119,584,36,98,1,1,0.53808
+249,18,121,585,35,98,1,1,0.55163
+250,18,123,587,35,97,1,1,0.60034
+251,18,125,589,35,96,1,1,0.62314
+252,18,127,590,34,97,1,1,0.66939
+253,18,129,592,34,96,1,1,0.64212
+254,18,131,594,34,95,1,1,0.57589
+255,18,134,596,33,95,1,1,0.62316
+256,18,136,597,33,95,1,1,0.55882
+257,18,138,598,34,95,1,1,0.54286
+258,18,140,599,35,95,1,1,0.55556
+259,18,143,601,35,95,1,1,0.55556
+260,18,145,600,35,97,1,1,0.56009
+261,18,147,599,35,99,1,1,0.54667
+262,18,149,598,35,101,1,1,0.60648
+263,18,151,598,36,101,1,1,0.61712
+264,18,154,599,37,101,1,1,0.62719
+265,18,157,598,35,100,1,1,0.5418
+266,18,160,597,34,100,1,1,0.52871
+267,18,164,597,33,100,1,1,0.57193
+268,18,168,597,32,100,1,1,0.58416
+269,18,165,597,33,100,1,1,0.42341
+270,18,162,597,34,101,1,1,0.39076
+271,18,160,597,34,102,1,1,0.25936
+272,18,166,595,34,103,1,1,0.33984
+273,18,172,594,35,104,1,1,0.43492
+274,18,178,593,36,104,1,1,0.54183
+275,18,184,592,36,105,1,1,0.60989
+276,18,190,591,37,105,1,1,0.64871
+277,18,197,590,37,106,1,1,0.75209
+278,18,199,592,36,105,1,1,0.74477
+279,18,201,594,36,105,1,1,0.74197
+280,18,203,597,36,104,1,1,0.73951
+281,18,206,598,36,105,1,1,0.76543
+282,18,209,599,37,106,1,1,0.77373
+283,18,213,600,37,108,1,1,0.82038
+284,18,215,600,37,109,1,1,0.82201
+285,18,217,600,37,110,1,1,0.82551
+286,18,219,601,37,111,1,1,0.80545
+287,18,221,602,37,111,1,1,0.61936
+288,18,224,603,37,112,1,1,0.61924
+289,18,226,603,37,113,1,1,0.59741
+290,18,228,604,37,114,1,1,0.57208
+291,18,231,605,37,114,1,1,0.47895
+292,18,233,606,37,115,1,1,0.49932
+293,18,235,607,37,115,1,1,0.50181
+294,18,237,607,37,117,1,1,0.531
+295,18,240,608,37,117,1,1,0.5562
+296,18,242,609,37,118,1,1,0.55838
+297,18,244,610,37,118,1,1,0.57983
+298,18,247,611,37,119,1,1,0.63158
+299,18,248,611,37,119,1,1,0.60855
+300,18,249,612,37,119,1,1,0.58575
+301,18,250,613,37,119,1,1,0.56053
+302,18,251,614,37,119,1,1,0.58575
+303,18,252,615,37,119,1,1,0.59189
+304,18,254,616,36,119,1,1,0.60811
+305,18,255,622,36,120,1,1,0.63815
+306,18,255,622,36,120,1,1,0.59705
+307,18,256,622,36,121,1,1,0.60656
+308,18,255,628,36,123,1,1,0.585
+309,18,256,627,36,124,1,1,0.59568
+310,18,257,626,36,126,1,1,0.60566
+311,18,257,627,36,127,1,1,0.58573
+312,18,257,628,37,128,1,1,0.61506
+313,18,258,629,37,130,1,1,0.6368
+314,18,257,629,37,131,1,1,0.61364
+315,18,257,629,37,132,1,1,0.61654
+316,18,257,630,37,132,1,1,0.63593
+317,18,257,630,37,133,1,1,0.63865
+318,18,257,631,37,133,1,1,0.63551
+319,18,257,631,37,134,1,1,0.63821
+320,18,257,632,37,134,1,1,0.63821
+321,18,257,632,37,135,1,1,0.59172
+322,18,257,633,37,136,1,1,0.6773
+323,18,255,631,37,137,1,1,0.68669
+324,18,254,630,37,137,1,1,0.71625
+325,18,251,631,37,137,1,1,0.71034
+326,18,249,632,37,138,1,1,0.7251
+327,18,247,635,36,135,1,1,0.71781
+328,18,244,636,37,139,1,1,0.73741
+329,18,240,633,37,140,1,1,0.69672
+330,18,237,631,37,140,1,1,0.67637
+331,18,233,628,38,142,1,1,0.64228
+332,18,230,626,37,142,1,1,0.65808
+333,18,226,623,38,143,1,1,0.67165
+334,18,223,621,38,144,1,1,0.69531
+335,18,219,622,38,145,1,1,0.69055
+336,18,215,624,39,145,1,1,0.74521
+337,18,212,626,39,145,1,1,0.76832
+338,18,208,629,40,146,1,1,0.77186
+339,18,205,632,40,148,1,1,0.8129
+340,18,200,633,40,149,1,1,0.7935
+341,18,195,635,41,150,1,1,0.77972
+342,18,191,637,41,151,1,1,0.80107
+343,18,188,644,40,152,1,1,0.85605
+344,18,181,648,41,153,1,1,0.81911
+345,18,176,651,41,154,1,1,0.82166
+346,18,172,655,41,155,1,1,0.84127
+347,18,167,659,42,155,1,1,0.82946
+348,18,163,663,42,156,1,1,0.88268
+349,18,159,667,42,157,1,1,0.89991
+350,18,153,668,42,158,1,1,0.87977
+351,18,147,669,43,159,1,1,0.86278
+352,18,141,670,44,160,1,1,0.88489
+353,18,136,671,43,161,1,1,0.9025
+354,18,130,672,44,163,1,1,0.92358
+355,18,124,673,45,164,1,1,0.92569
+356,18,119,674,44,165,1,1,0.94337
+357,18,113,675,45,166,1,1,0.96303
+358,18,107,676,46,167,1,1,0.96403
+359,18,102,677,46,169,1,1,1
+360,18,95,679,45,167,1,1,0.98163
+361,18,88,681,45,165,1,1,0.87349
+362,18,81,682,46,170,1,1,0.89859
+363,18,74,684,47,174,1,1,0.90179
+364,18,67,684,47,175,1,1,0.90412
+365,18,60,688,48,176,1,1,0.92482
+366,18,54,693,48,177,1,1,0.94325
+367,18,48,697,48,179,1,1,0.96213
+368,18,42,702,48,180,1,1,1
+369,18,34,706,48,180,1,1,0.98094
+370,18,27,711,48,180,1,1,0.98083
+371,18,19,715,48,181,1,1,1
+372,18,11,719,48,182,1,1,1
+373,18,4,724,47,182,1,1,1
+374,18,-4,728,47,183,1,1,0.89583
+40,19,615,534,28,85,1,1,0.21091
+41,19,614,534,28,85,1,1,1
+42,19,614,534,28,85,1,1,0.21091
+43,19,614,535,28,85,1,1,0.22053
+44,19,614,535,27,85,1,1,0.22633
+45,19,614,536,27,85,1,1,0.25997
+46,19,613,536,28,85,1,1,0.29431
+47,19,613,536,27,85,1,1,0.31105
+48,19,613,537,27,85,1,1,0.31105
+49,19,613,537,27,85,1,1,0.38455
+50,19,613,538,27,85,1,1,0.4564
+51,19,611,539,27,85,1,1,0.4564
+52,19,610,540,27,85,1,1,0.49502
+53,19,609,541,27,85,1,1,0.54651
+54,19,608,542,27,85,1,1,0.60133
+55,19,607,543,27,85,1,1,0.62542
+56,19,606,544,27,85,1,1,0.68605
+57,19,605,542,26,87,1,1,0.71717
+58,19,604,540,26,89,1,1,0.82716
+59,19,603,538,26,91,1,1,0.74919
+60,19,602,537,26,92,1,1,0.86141
+61,19,599,537,28,92,1,1,0.87393
+62,19,597,537,30,92,1,1,0.93895
+63,19,596,549,32,91,1,1,0.85507
+64,19,595,537,31,99,1,1,1
+65,19,590,542,31,99,1,1,1
+66,19,589,546,37,98,1,1,0.95109
+67,19,586,538,37,99,1,1,0.97526
+68,19,583,545,36,101,1,1,0.92289
+69,19,581,542,36,103,1,1,0.94958
+70,19,580,540,36,105,1,1,1
+71,19,576,539,35,106,1,1,1
+72,19,572,539,35,106,1,1,0.95067
+73,19,568,539,35,106,1,1,1
+74,19,564,539,35,107,1,1,1
+75,19,560,539,35,107,1,1,1
+76,19,556,539,35,107,1,1,1
+77,19,552,539,35,108,1,1,1
+78,19,546,539,35,109,1,1,1
+79,19,541,539,35,110,1,1,1
+80,19,535,540,36,110,1,1,1
+81,19,530,540,36,111,1,1,1
+464,20,1374,804,180,423,1,1,0.6533
+465,20,1339,818,178,422,1,1,0.62175
+466,20,1304,832,176,421,1,1,0.59005
+467,20,1269,846,174,421,1,1,0.55687
+468,20,1238,853,171,420,1,1,0.54157
+469,20,1207,860,168,420,1,1,0.52494
+470,20,1172,857,164,420,1,1,0.53207
+471,20,1132,852,171,420,1,1,0.54394
+472,20,1091,848,183,420,1,1,0.55344
+473,20,1051,848,185,420,1,1,0.55344
+474,20,1012,849,187,420,1,1,0.49538
+475,20,973,850,189,420,1,1,0.43029
+476,20,930,857,191,420,1,1,0.36857
+477,20,887,865,194,420,1,1,0.51306
+478,20,839,871,196,420,1,1,0.30638
+479,20,796,881,191,421,1,1,0.2888
+480,20,754,892,185,421,1,1,0.26728
+481,20,710,887,184,422,1,1,0.2727
+482,20,667,882,182,424,1,1,0.46824
+483,20,614,879,180,426,1,1,0.47307
+484,20,561,877,179,427,1,1,0.47664
+485,20,509,875,177,429,1,1,0.47907
+486,20,455,879,176,431,1,1,0.46759
+487,20,401,884,175,433,1,1,0.45392
+488,20,347,901,173,436,1,1,0.4119
+489,20,300,915,168,425,1,1,0.38967
+490,20,250,927,163,416,1,1,0.3693
+491,20,200,940,158,407,1,1,0.34559
+492,20,137,944,161,403,1,1,0.33911
+493,20,74,949,164,399,1,1,0.33
+494,20,11,953,167,395,1,1,0.32323
+495,20,-52,958,170,391,1,1,0.21652
+481,21,1813,651,75,236,1,1,0.44509
+482,21,1763,651,75,236,1,1,0.46397
+483,21,1729,653,75,236,1,1,0.45348
+484,21,1687,653,75,236,1,1,0.44948
+485,21,1646,653,74,236,1,1,0.44473
+486,21,1605,653,74,236,1,1,0.45626
+487,21,1550,655,87,236,1,1,0.59489
+488,21,1496,658,99,235,1,1,0.69419
+489,21,1442,661,111,235,1,1,0.77716
+490,21,1397,665,110,236,1,1,0.81062
+491,21,1352,669,110,238,1,1,0.83535
+492,21,1307,674,110,239,1,1,0.85139
+493,21,1275,675,102,246,1,1,0.83346
+494,21,1243,677,95,252,1,1,0.78911
+495,21,1211,679,88,259,1,1,0.73755
+496,21,1164,679,86,261,1,1,0.80047
+497,21,1118,680,84,262,1,1,0.85466
+498,21,1072,681,81,263,1,1,0.93154
+499,21,1026,682,79,264,1,1,0.97623
+500,21,980,683,77,265,1,1,1
+501,21,930,683,84,268,1,1,0.92132
+502,21,881,684,90,270,1,1,0.83131
+503,21,832,684,96,274,1,1,0.75258
+504,21,783,685,102,276,1,1,0.68182
+505,21,734,686,108,279,1,1,0.62706
+506,21,686,691,101,282,1,1,0.64193
+507,21,638,697,94,284,1,1,0.66726
+508,21,590,702,87,287,1,1,0.69729
+509,21,542,708,80,290,1,1,0.73166
+510,21,485,715,80,295,1,1,0.84818
+511,21,429,722,80,300,1,1,0.96493
+512,21,353,727,113,311,1,1,0.81691
+513,21,278,732,145,322,1,1,0.73309
+514,21,218,737,143,325,1,1,0.73586
+515,21,159,743,140,328,1,1,0.72925
+516,21,115,749,132,336,1,1,0.63751
+517,21,61,754,134,336,1,1,0.57129
+518,21,7,760,137,335,1,1,0.50513
+480,22,1848,651,97,238,1,1,0.40829
+481,22,1872,661,97,238,1,1,0.3118
+482,22,1826,659,97,238,1,1,0.73662
+483,22,1792,661,97,238,1,1,0.77645
+484,22,1749,660,97,238,1,1,0.75523
+485,22,1706,660,97,238,1,1,0.72761
+486,22,1664,660,96,238,1,1,0.70496
+487,22,1626,660,91,238,1,1,0.67482
+488,22,1588,661,86,237,1,1,0.64165
+489,22,1550,662,81,237,1,1,0.6446
+490,22,1507,667,81,237,1,1,0.60566
+491,22,1464,672,81,237,1,1,0.56548
+492,22,1421,677,81,237,1,1,0.54622
+493,22,1375,683,81,241,1,1,0.53306
+494,22,1329,689,81,246,1,1,0.51822
+495,22,1284,696,80,250,1,1,0.50996
+496,22,1239,695,79,251,1,1,0.52381
+497,22,1194,695,78,252,1,1,0.5336
+498,22,1149,695,78,253,1,1,0.52756
+499,22,1104,695,77,254,1,1,0.56199
+500,22,1060,695,76,255,1,1,0.61967
+501,22,1008,695,83,265,1,1,0.69549
+502,22,956,695,90,275,1,1,0.71429
+503,22,904,695,97,286,1,1,0.73512
+504,22,852,695,104,296,1,1,0.7899
+505,22,801,695,110,307,1,1,0.8166
+506,22,750,702,110,310,1,1,0.84334
+507,22,700,709,110,313,1,1,0.89729
+508,22,650,716,109,316,1,1,0.94924
+509,22,600,724,109,319,1,1,0.97429
+510,22,553,731,109,326,1,1,0.98449
+511,22,507,738,109,333,1,1,0.97942
+512,22,445,743,113,337,1,1,1
+513,22,383,748,117,342,1,1,0.97085
+514,22,322,753,120,346,1,1,0.94524
+515,22,260,758,124,351,1,1,0.91761
+516,22,199,763,127,356,1,1,0.89076
+517,22,138,768,131,352,1,1,0.88669
+518,22,77,774,135,348,1,1,0.87966
+519,22,1,782,152,375,1,1,0.79521
+503,23,1862,650,71,175,1,1,0.81944
+504,23,1828,652,73,174,1,1,1
+505,23,1795,654,74,174,1,1,1
+506,23,1762,656,75,174,1,1,1
+507,23,1729,658,76,174,1,1,1
+508,23,1696,660,77,174,1,1,0.98718
+509,23,1661,662,79,175,1,1,0.9625
+510,23,1626,664,81,176,1,1,0.93902
+511,23,1591,666,83,177,1,1,0.92857
+512,23,1556,668,85,178,1,1,0.93023
+513,23,1522,670,86,179,1,1,0.93103
+514,23,1487,670,86,182,1,1,0.95402
+515,23,1453,671,86,184,1,1,0.96552
+516,23,1419,672,85,187,1,1,0.98837
+517,23,1384,672,86,190,1,1,1
+518,23,1350,673,85,192,1,1,1
+519,23,1316,674,85,195,1,1,1
+520,23,1283,675,85,195,1,1,1
+521,23,1250,676,85,195,1,1,1
+522,23,1218,677,85,195,1,1,1
+523,23,1185,678,85,195,1,1,1
+524,23,1152,679,85,195,1,1,1
+525,23,1120,680,85,195,1,1,1
+526,23,1086,682,86,199,1,1,1
+527,23,1052,684,88,203,1,1,1
+528,23,1018,686,90,207,1,1,0.95626
+529,23,984,688,92,212,1,1,0.86087
+530,23,950,690,93,214,1,1,0.8617
+531,23,917,692,93,217,1,1,0.85311
+532,23,883,694,94,220,1,1,0.84639
+533,23,850,696,95,223,1,1,0.86821
+534,23,816,698,96,226,1,1,0.90967
+535,23,783,700,96,229,1,1,0.8996
+536,23,749,702,97,232,1,1,0.90059
+537,23,716,704,98,235,1,1,0.88187
+538,23,682,709,97,236,1,1,0.89925
+539,23,649,715,95,236,1,1,0.88542
+540,23,616,721,94,236,1,1,0.87368
+541,23,572,728,103,238,1,1,0.82692
+542,23,526,728,120,253,1,1,0.81441
+543,23,490,738,124,256,1,1,0.784
+544,23,452,744,129,266,1,1,0.76923
+545,23,414,750,135,248,1,1,0.75
+546,23,383,751,122,256,1,1,0.78862
+547,23,352,753,109,264,1,1,0.83636
+548,23,307,755,111,273,1,1,0.90214
+549,23,255,756,119,282,1,1,0.8439
+550,23,203,758,127,291,1,1,0.86992
+551,23,152,760,134,300,1,1,0.89905
+552,23,104,768,140,305,1,1,0.90931
+553,23,57,776,145,310,1,1,0.83535
+554,23,10,784,151,315,1,1,0.75142
+555,23,-34,792,151,315,1,1,0.47928
+505,24,1878,658,73,183,1,1,0.58108
+506,24,1843,655,80,188,1,1,0.96296
+507,24,1808,652,87,194,1,1,1
+508,24,1773,655,86,194,1,1,1
+509,24,1738,658,85,195,1,1,1
+510,24,1703,661,84,195,1,1,1
+511,24,1669,665,82,195,1,1,1
+512,24,1636,666,81,197,1,1,1
+513,24,1603,667,81,199,1,1,1
+514,24,1570,668,81,202,1,1,1
+515,24,1537,669,81,204,1,1,1
+516,24,1504,670,81,207,1,1,1
+517,24,1471,671,81,209,1,1,1
+518,24,1439,673,80,211,1,1,1
+519,24,1406,674,81,213,1,1,1
+520,24,1374,675,81,215,1,1,1
+521,24,1342,677,81,217,1,1,1
+522,24,1308,676,82,219,1,1,1
+523,24,1275,676,82,221,1,1,1
+524,24,1242,676,83,223,1,1,1
+525,24,1215,677,83,225,1,1,1
+526,24,1178,678,84,227,1,1,1
+527,24,1142,679,84,229,1,1,1
+528,24,1105,687,90,226,1,1,1
+529,24,1064,689,99,229,1,1,1
+530,24,1031,690,101,239,1,1,1
+531,24,997,695,102,241,1,1,1
+532,24,963,700,103,244,1,1,1
+533,24,933,702,105,248,1,1,1
+534,24,904,704,106,253,1,1,1
+535,24,870,706,102,256,1,1,1
+536,24,837,708,98,259,1,1,1
+537,24,803,710,98,262,1,1,1
+538,24,770,712,97,265,1,1,1
+539,24,734,714,101,273,1,1,1
+540,24,699,716,104,282,1,1,1
+541,24,658,725,119,286,1,1,1
+542,24,624,734,120,289,1,1,1
+543,24,588,737,117,295,1,1,1
+544,24,552,741,115,300,1,1,1
+545,24,516,745,112,305,1,1,1
+546,24,480,748,110,311,1,1,1
+547,24,444,752,107,316,1,1,1
+548,24,408,756,105,321,1,1,1
+549,24,356,760,119,327,1,1,0.97866
+550,24,314,764,121,335,1,1,0.94345
+551,24,273,768,123,343,1,1,0.90988
+552,24,232,773,125,350,1,1,0.87749
+553,24,181,781,133,358,1,1,0.83565
+554,24,131,789,141,367,1,1,0.79348
+555,24,80,797,149,375,1,1,0.75532
+556,24,30,806,157,383,1,1,0.71615
+557,24,-16,813,150,371,1,1,0.63932
+516,25,1882,736,82,265,1,1,0.46988
+517,25,1828,729,115,277,1,1,0.80172
+518,25,1790,729,128,276,1,1,1
+519,25,1756,730,130,276,1,1,1
+520,25,1721,730,134,279,1,1,1
+521,25,1685,730,135,279,1,1,1
+522,25,1651,731,139,280,1,1,1
+523,25,1641,730,117,276,1,1,1
+524,25,1610,727,114,283,1,1,1
+525,25,1576,724,117,277,1,1,1
+526,25,1542,725,117,278,1,1,1
+527,25,1514,726,111,279,1,1,1
+528,25,1486,727,110,280,1,1,1
+529,25,1455,727,109,282,1,1,1
+530,25,1402,733,133,289,1,1,1
+531,25,1373,731,133,297,1,1,1
+532,25,1344,736,129,293,1,1,1
+533,25,1316,735,129,293,1,1,1
+534,25,1286,736,132,295,1,1,1
+535,25,1257,736,129,294,1,1,1
+536,25,1234,737,126,290,1,1,1
+537,25,1201,735,129,289,1,1,1
+538,25,1173,739,133,285,1,1,1
+539,25,1149,735,129,299,1,1,1
+540,25,1121,742,122,302,1,1,1
+541,25,1094,742,128,310,1,1,1
+542,25,1060,748,128,314,1,1,1
+543,25,1038,754,132,310,1,1,1
+544,25,1010,762,128,310,1,1,1
+545,25,984,755,128,314,1,1,1
+546,25,953,757,133,317,1,1,1
+547,25,929,757,129,317,1,1,1
+548,25,900,756,132,317,1,1,1
+549,25,874,755,136,305,1,1,1
+550,25,847,753,133,310,1,1,1
+551,25,820,751,137,322,1,1,1
+552,25,796,750,136,334,1,1,0.98806
+553,25,771,755,136,325,1,1,1
+554,25,746,760,136,322,1,1,0.99381
+555,25,721,768,137,321,1,1,0.97205
+556,25,693,766,137,330,1,1,0.95166
+557,25,669,765,137,322,1,1,0.97833
+558,25,639,763,137,326,1,1,0.97248
+559,25,613,763,145,329,1,1,0.96364
+560,25,586,763,144,330,1,1,0.96073
+561,25,555,757,149,337,1,1,0.95858
+562,25,524,758,156,338,1,1,0.9528
+563,25,501,759,154,338,1,1,0.94985
+564,25,473,761,157,338,1,1,0.94395
+565,25,445,765,162,342,1,1,0.92128
+566,25,413,770,169,346,1,1,0.89625
+567,25,383,775,174,345,1,1,0.88439
+568,25,354,780,178,349,1,1,0.86
+569,25,330,788,177,350,1,1,0.83476
+570,25,303,791,181,353,1,1,0.81921
+571,25,272,797,189,353,1,1,0.80226
+572,25,247,799,190,357,1,1,0.78771
+573,25,214,799,196,358,1,1,0.78552
+574,25,189,801,194,362,1,1,0.77135
+575,25,155,798,198,374,1,1,0.75467
+576,25,117,803,213,378,1,1,0.73351
+577,25,87,808,216,382,1,1,0.71279
+578,25,65,813,209,389,1,1,0.68718
+579,25,36,821,205,394,1,1,0.65823
+580,25,-1,829,210,398,1,1,0.62559
+581,25,-16,832,197,399,1,1,0.56905
+582,25,-30,836,184,400,1,1,0.50859
+583,25,-44,840,171,401,1,1,0.44266
+584,25,-75,841,171,401,1,1,0.33322
+585,25,-106,842,171,401,1,1,0.22468
+504,26,1886,568,39,93,1,1,0.5867
+505,26,1853,567,39,94,1,1,0.62789
+506,26,1820,567,39,95,1,1,0.56094
+507,26,1791,566,39,96,1,1,0.53351
+508,26,1763,566,39,97,1,1,0.5449
+509,26,1733,568,39,98,1,1,0.56919
+510,26,1704,570,39,99,1,1,0.546
+511,26,1675,572,39,100,1,1,0.5755
+512,26,1646,574,38,101,1,1,0.55505
+513,26,1617,576,38,102,1,1,0.56634
+514,26,1588,578,38,103,1,1,0.86538
+515,26,1562,577,39,103,1,1,0.88462
+516,26,1536,576,40,104,1,1,0.89524
+517,26,1510,575,41,104,1,1,0.91429
+518,26,1484,575,42,104,1,1,0.94419
+519,26,1458,574,43,104,1,1,0.96753
+520,26,1432,573,44,105,1,1,0.97987
+521,26,1406,572,45,105,1,1,0.99631
+522,26,1380,572,46,105,1,1,0.99558
+523,26,1354,571,47,105,1,1,0.99921
+524,26,1328,570,48,106,1,1,1
+525,26,1303,570,49,106,1,1,1
+526,26,1279,569,50,107,1,1,1
+527,26,1256,569,51,107,1,1,1
+528,26,1232,570,48,108,1,1,1
+529,26,1208,571,45,109,1,1,1
+530,26,1184,573,42,109,1,1,1
+531,26,1163,573,42,109,1,1,1
+532,26,1142,573,42,110,1,1,1
+533,26,1121,574,43,110,1,1,1
+534,26,1099,574,43,111,1,1,1
+535,26,1077,575,44,111,1,1,1
+536,26,1056,576,44,111,1,1,1
+537,26,1035,578,44,111,1,1,1
+538,26,1014,580,45,112,1,1,1
+539,26,994,581,46,112,1,1,1
+540,26,975,582,46,112,1,1,1
+541,26,956,583,46,113,1,1,1
+542,26,927,584,57,113,1,1,1
+543,26,911,586,55,114,1,1,1
+544,26,895,588,54,115,1,1,1
+545,26,874,585,54,116,1,1,1
+546,26,853,583,55,116,1,1,1
+547,26,834,584,55,115,1,1,1
+548,26,816,585,54,114,1,1,1
+549,26,798,586,53,114,1,1,1
+550,26,779,585,53,116,1,1,1
+551,26,761,584,53,118,1,1,1
+552,26,742,584,54,119,1,1,1
+553,26,724,583,54,121,1,1,1
+554,26,705,583,55,122,1,1,1
+555,26,687,582,55,124,1,1,1
+556,26,669,581,54,126,1,1,1
+557,26,650,581,55,127,1,1,1
+558,26,632,580,55,129,1,1,1
+559,26,613,580,56,130,1,1,1
+560,26,595,579,56,132,1,1,1
+561,26,577,579,56,133,1,1,1
+562,26,560,580,58,133,1,1,1
+563,26,543,581,60,134,1,1,1
+564,26,526,582,62,135,1,1,1
+565,26,510,584,63,135,1,1,1
+566,26,493,585,65,135,1,1,1
+567,26,476,586,67,136,1,1,1
+568,26,459,587,69,137,1,1,1
+569,26,443,589,70,137,1,1,1
+570,26,426,590,70,138,1,1,1
+571,26,410,591,69,140,1,1,1
+572,26,394,593,69,141,1,1,1
+573,26,378,594,68,143,1,1,1
+574,26,362,596,68,143,1,1,1
+575,26,346,597,67,145,1,1,1
+576,26,330,599,67,146,1,1,1
+577,26,314,600,66,148,1,1,1
+578,26,298,602,66,149,1,1,1
+579,26,278,600,71,152,1,1,1
+580,26,258,598,77,155,1,1,1
+581,26,243,597,78,159,1,1,1
+582,26,229,597,78,162,1,1,1
+583,26,208,599,79,164,1,1,1
+584,26,193,601,81,165,1,1,1
+585,26,178,603,83,166,1,1,1
+586,26,163,606,85,167,1,1,1
+587,26,144,610,91,170,1,1,1
+588,26,129,611,93,171,1,1,1
+589,26,114,612,96,173,1,1,1
+590,26,96,613,102,175,1,1,1
+591,26,82,614,103,177,1,1,1
+592,26,67,615,104,179,1,1,1
+593,26,51,616,105,182,1,1,1
+594,26,42,618,102,185,1,1,1
+595,26,28,619,103,189,1,1,1
+596,26,16,622,105,190,1,1,1
+597,26,1,625,105,193,1,1,1
+598,26,-4,637,99,197,1,1,0.95
+599,26,-12,638,95,200,1,1,0.86458
+600,26,-20,640,92,203,1,1,0.77419
+601,26,-32,647,91,203,1,1,0.6413
+602,26,-43,649,89,204,1,1,0.51111
+603,26,-54,652,88,204,1,1,0.38202
+604,26,-68,656,88,204,1,1,0.22472
+569,27,1894,588,51,163,1,1,0.36538
+570,27,1886,588,51,163,1,1,0.46154
+571,27,1878,588,51,163,1,1,0.55769
+572,27,1870,588,52,163,1,1,0.64151
+573,27,1862,588,53,163,1,1,0.62963
+574,27,1854,588,54,163,1,1,0.58182
+575,27,1846,588,55,163,1,1,0.53571
+576,27,1838,588,57,164,1,1,0.5
+577,27,1830,588,58,164,1,1,0.49153
+578,27,1822,588,59,164,1,1,0.5
+579,27,1814,588,60,164,1,1,0.5082
+580,27,1807,589,61,164,1,1,0.51613
+581,27,1802,589,59,163,1,1,0.5
+582,27,1798,589,57,162,1,1,0.48276
+583,27,1793,589,56,161,1,1,0.47368
+584,27,1789,589,53,160,1,1,0.44444
+585,27,1784,589,52,159,1,1,0.49057
+586,27,1780,590,50,157,1,1,0.58824
+587,27,1777,588,52,160,1,1,0.62264
+588,27,1774,586,55,163,1,1,0.66071
+589,27,1771,585,57,165,1,1,0.74138
+590,27,1768,583,60,168,1,1,0.77049
+591,27,1765,581,62,171,1,1,1
+592,27,1763,580,64,173,1,1,1
+593,27,1761,581,67,173,1,1,1
+594,27,1760,582,69,173,1,1,1
+595,27,1758,583,72,173,1,1,0.9726
+596,27,1757,584,75,173,1,1,0.88158
+597,27,1763,582,77,175,1,1,0.88462
+598,27,1766,581,75,177,1,1,0.84211
+599,27,1770,580,72,179,1,1,0.80822
+600,27,1774,580,69,181,1,1,0.75714
+601,27,1783,573,62,184,1,1,0.77778
+602,27,1787,572,59,186,1,1,0.71667
+603,27,1791,571,57,189,1,1,0.67241
+604,27,1794,572,58,187,1,1,0.61017
+605,27,1798,574,58,185,1,1,0.61017
+606,27,1802,575,59,184,1,1,0.61667
+607,27,1806,577,59,182,1,1,0.56566
+608,27,1810,579,60,180,1,1,0.48546
+609,27,1814,585,61,177,1,1,0.39226
+610,27,1818,591,62,175,1,1,0.41486
+611,27,1824,593,62,176,1,1,0.44122
+612,27,1830,596,63,176,1,1,0.47413
+613,27,1835,597,62,181,1,1,0.56968
+614,27,1840,598,62,186,1,1,0.66234
+615,27,1845,602,61,192,1,1,0.83938
+616,27,1850,606,61,198,1,1,0.85759
+617,27,1855,607,61,201,1,1,0.83855
+618,27,1861,609,60,203,1,1,0.80923
+619,27,1866,610,60,206,1,1,0.61749
+620,27,1872,612,60,208,1,1,0.49125
+621,27,1878,614,60,208,1,1,0.18888
+622,27,1884,617,60,208,1,1,0.15962
+623,27,1891,620,60,208,1,1,0.12707
+624,27,1897,623,60,208,1,1,0.10166
+505,28,1896,550,29,79,1,1,0.83333
+506,28,1866,550,30,80,1,1,1
+507,28,1836,551,31,80,1,1,1
+508,28,1806,552,32,81,1,1,1
+509,28,1776,553,33,81,1,1,1
+510,28,1746,554,35,82,1,1,1
+511,28,1716,554,36,83,1,1,1
+512,28,1686,555,37,83,1,1,1
+513,28,1656,556,38,84,1,1,1
+514,28,1626,557,39,84,1,1,0.98118
+515,28,1597,558,40,85,1,1,0.90499
+516,28,1571,557,38,84,1,1,0.88054
+517,28,1545,556,36,83,1,1,0.8536
+518,28,1520,555,34,82,1,1,0.84819
+519,28,1493,553,34,82,1,1,0.80792
+520,28,1466,552,34,82,1,1,0.76523
+521,28,1440,551,34,82,1,1,0.74389
+522,28,1416,549,32,83,1,1,0.75794
+523,28,1392,547,30,84,1,1,0.7685
+524,28,1368,545,28,85,1,1,0.77987
+525,28,1344,544,27,85,1,1,0.59718
+526,28,1320,544,27,85,1,1,0.60382
+527,28,1297,544,27,85,1,1,0.39992
+528,28,1274,544,27,85,1,1,0.53987
+529,28,1250,548,29,79,1,1,0.57167
+530,28,1228,547,28,81,1,1,0.75862
+531,28,1206,547,28,83,1,1,0.62069
+532,28,1183,547,32,83,1,1,0.53391
+533,28,1161,548,36,82,1,1,0.54738
+534,28,1142,548,33,83,1,1,0.56793
+535,28,1123,548,31,84,1,1,0.5
+536,28,1101,547,34,84,1,1,0.54286
+537,28,1079,547,37,84,1,1,0.56223
+538,28,1059,546,36,86,1,1,0.5511
+539,28,1040,546,35,87,1,1,0.53883
+540,28,1021,546,34,88,1,1,0.55441
+541,28,1002,546,33,89,1,1,0.5415
+542,28,984,545,33,90,1,1,0.54202
+543,28,966,545,33,90,1,1,0.51325
+544,28,948,544,33,91,1,1,0.52941
+545,28,930,544,34,92,1,1,0.57143
+546,28,911,543,34,91,1,1,0.54286
+547,28,893,542,34,91,1,1,0.48571
+548,28,875,542,34,90,1,1,0.57143
+549,28,859,540,34,92,1,1,0.57143
+550,28,843,539,34,93,1,1,0.57143
+551,28,827,538,35,94,1,1,0.66667
+552,28,811,537,35,95,1,1,0.75
+553,28,795,536,35,96,1,1,0.83333
+554,28,780,535,35,98,1,1,0.88889
+555,28,765,534,35,97,1,1,1
+556,28,750,534,35,95,1,1,1
+557,28,735,534,35,94,1,1,1
+558,28,720,533,35,93,1,1,1
+559,28,705,533,35,91,1,1,1
+560,28,690,533,36,90,1,1,1
+561,28,675,533,37,90,1,1,0.92366
+562,28,660,534,38,89,1,1,0.90285
+563,28,645,535,40,89,1,1,0.91328
+564,28,632,536,40,89,1,1,0.90515
+565,28,620,537,39,90,1,1,0.91209
+566,28,608,538,38,91,1,1,0.92391
+567,28,596,539,37,92,1,1,0.60838
+568,28,583,538,36,92,1,1,0.52485
+569,28,570,538,35,92,1,1,0.53943
+570,28,558,538,34,92,1,1,0.53917
+571,28,541,537,40,92,1,1,0.5455
+572,28,530,537,39,92,1,1,0.55914
+573,28,519,537,38,93,1,1,0.53137
+574,28,508,537,37,93,1,1,0.58959
+575,28,498,537,35,94,1,1,0.60789
+576,28,487,536,36,95,1,1,0.77083
+577,28,476,536,37,95,1,1,0.80208
+578,28,465,535,38,96,1,1,0.77901
+579,28,455,535,38,97,1,1,0.7326
+580,28,444,534,39,98,1,1,0.60278
+581,28,433,534,40,98,1,1,0.56911
+582,28,423,534,40,99,1,1,0.45439
+583,28,414,534,40,99,1,1,0.35561
+584,28,406,534,40,99,1,1,0.3
+585,28,398,534,40,100,1,1,0.32722
+586,28,390,534,40,100,1,1,0.36585
+587,28,382,534,40,101,1,1,0.39024
+588,28,373,534,41,101,1,1,0.47619
+589,28,365,534,41,101,1,1,0.61905
+590,28,357,534,41,102,1,1,0.66667
+591,28,349,534,41,102,1,1,0.78571
+592,28,341,534,41,103,1,1,0.92857
+593,28,335,534,41,103,1,1,1
+594,28,330,534,41,104,1,1,1
+595,28,324,535,42,104,1,1,1
+596,28,319,535,42,105,1,1,1
+597,28,314,536,42,105,1,1,1
+598,28,310,537,42,105,1,1,1
+599,28,306,538,43,105,1,1,1
+600,28,302,539,44,105,1,1,1
+601,28,299,541,44,105,1,1,1
+602,28,295,540,44,106,1,1,1
+603,28,292,540,44,107,1,1,1
+604,28,292,546,44,104,1,1,1
+605,28,283,545,48,106,1,1,1
+606,28,284,542,51,107,1,1,1
+607,28,281,542,52,107,1,1,1
+608,28,278,543,53,108,1,1,1
+609,28,279,538,49,109,1,1,1
+610,28,276,537,49,109,1,1,1
+611,28,273,536,50,109,1,1,1
+612,28,270,535,51,110,1,1,1
+613,28,267,534,51,110,1,1,1
+614,28,264,533,52,111,1,1,1
+615,28,261,532,52,111,1,1,1
+616,28,258,531,52,112,1,1,1
+617,28,255,529,51,116,1,1,1
+618,28,252,530,51,116,1,1,1
+619,28,250,532,50,116,1,1,1
+620,28,247,533,50,116,1,1,1
+621,28,245,535,49,116,1,1,1
+622,28,242,536,49,116,1,1,1
+623,28,240,538,49,116,1,1,1
+624,28,240,537,48,117,1,1,1
+625,28,237,543,49,117,1,1,1
+626,28,237,539,48,117,1,1,1
+627,28,237,550,50,113,1,1,1
+628,28,236,548,52,114,1,1,1
+629,28,236,551,53,115,1,1,1
+630,28,237,552,54,115,1,1,1
+631,28,239,550,54,118,1,1,1
+632,28,239,554,55,116,1,1,1
+633,28,240,554,54,120,1,1,1
+634,28,241,555,55,117,1,1,1
+635,28,242,553,57,118,1,1,1
+636,28,244,555,56,119,1,1,1
+637,28,246,557,55,120,1,1,1
+638,28,248,559,54,122,1,1,1
+639,28,250,561,53,124,1,1,1
+640,28,253,563,53,126,1,1,1
+641,28,256,564,52,126,1,1,1
+642,28,262,565,48,127,1,1,1
+643,28,263,562,45,132,1,1,1
+644,28,265,568,49,126,1,1,1
+645,28,267,570,50,126,1,1,1
+646,28,269,572,50,126,1,1,1
+647,28,270,569,55,127,1,1,1
+648,28,276,572,52,126,1,1,1
+649,28,280,564,53,125,1,1,1
+650,28,284,564,51,132,1,1,1
+651,28,294,567,50,133,1,1,1
+652,28,299,560,47,128,1,1,1
+653,28,305,562,46,129,1,1,1
+654,28,311,565,45,130,1,1,1
+655,28,318,564,48,131,1,1,1
+656,28,324,575,50,133,1,1,1
+657,28,334,578,52,130,1,1,1
+658,28,338,582,53,129,1,1,1
+659,28,342,598,54,128,1,1,1
+660,28,348,594,54,132,1,1,1
+661,28,357,596,56,130,1,1,1
+662,28,367,598,57,129,1,1,1
+663,28,375,597,58,127,1,1,1
+664,28,384,596,59,125,1,1,1
+665,28,387,598,61,124,1,1,1
+666,28,391,592,68,123,1,1,1
+667,28,394,591,74,123,1,1,1
+668,28,403,590,77,126,1,1,1
+669,28,402,582,93,136,1,1,1
+670,28,415,580,94,133,1,1,1
+671,28,428,580,96,134,1,1,1
+672,28,443,580,89,134,1,1,1
+673,28,458,581,83,133,1,1,1
+674,28,482,579,78,128,1,1,1
+675,28,500,575,74,129,1,1,1
+676,28,512,575,76,134,1,1,1
+677,28,520,572,87,136,1,1,1
+678,28,528,569,92,139,1,1,1
+679,28,540,577,97,143,1,1,1
+680,28,555,572,97,140,1,1,1
+681,28,569,600,97,146,1,1,1
+682,28,591,621,91,140,1,1,1
+683,28,605,594,87,139,1,1,1
+684,28,621,588,83,136,1,1,1
+685,28,648,583,75,143,1,1,1
+686,28,647,577,90,144,1,1,1
+687,28,657,573,92,147,1,1,1
+688,28,668,570,94,150,1,1,1
+689,28,678,568,98,150,1,1,1
+690,28,688,566,102,150,1,1,1
+691,28,702,568,102,151,1,1,1
+692,28,722,573,96,147,1,1,1
+693,28,743,575,90,149,1,1,1
+694,28,770,583,81,143,1,1,1
+695,28,791,587,76,150,1,1,1
+696,28,806,587,79,150,1,1,1
+697,28,817,586,85,151,1,1,1
+698,28,829,586,90,152,1,1,1
+699,28,842,588,95,153,1,1,1
+700,28,858,589,102,161,1,1,1
+701,28,876,596,96,159,1,1,1
+702,28,901,600,90,155,1,1,1
+703,28,924,607,85,155,1,1,1
+704,28,947,614,81,156,1,1,1
+705,28,971,615,73,162,1,1,1
+706,28,979,616,85,166,1,1,1
+707,28,985,612,96,174,1,1,1
+708,28,999,614,106,177,1,1,1
+709,28,1013,613,115,179,1,1,1
+710,28,1028,630,117,176,1,1,1
+711,28,1046,626,116,173,1,1,1
+712,28,1069,633,113,178,1,1,1
+713,28,1097,635,99,174,1,1,1
+714,28,1127,637,97,173,1,1,1
+715,28,1140,638,99,177,1,1,1
+716,28,1154,633,101,185,1,1,1
+717,28,1175,628,103,188,1,1,1
+718,28,1195,625,103,195,1,1,1
+719,28,1206,631,113,198,1,1,1
+720,28,1228,633,116,201,1,1,1
+721,28,1251,640,111,199,1,1,1
+722,28,1276,650,113,197,1,1,1
+723,28,1306,658,106,196,1,1,1
+724,28,1358,666,87,199,1,1,1
+725,28,1373,668,94,203,1,1,1
+726,28,1384,675,109,206,1,1,1
+727,28,1394,671,125,210,1,1,1
+728,28,1411,685,129,214,1,1,1
+729,28,1431,677,153,226,1,1,1
+730,28,1456,686,153,230,1,1,1
+731,28,1484,697,143,226,1,1,1
+732,28,1515,705,125,229,1,1,1
+733,28,1555,707,126,226,1,1,1
+734,28,1593,718,116,230,1,1,1
+735,28,1613,708,127,237,1,1,1
+736,28,1632,710,134,244,1,1,1
+737,28,1659,707,138,248,1,1,1
+738,28,1690,714,137,255,1,1,1
+739,28,1716,718,149,260,1,1,1
+740,28,1751,723,152,262,1,1,1
+741,28,1785,733,152,265,1,1,0.88889
+742,28,1826,748,150,263,1,1,0.62914
+1,29,954,548,81,63,0,3,1
+2,29,955,544,82,63,0,3,1
+3,29,956,546,82,64,0,3,1
+4,29,957,548,83,65,0,3,1
+5,29,958,551,84,65,0,3,1
+6,29,961,561,84,65,0,3,1
+7,29,962,554,85,66,0,3,1
+8,29,962,562,85,66,0,3,1
+9,29,961,563,86,67,0,3,1
+10,29,960,564,87,68,0,3,1
+11,29,959,560,88,69,0,3,1
+12,29,959,557,88,69,0,3,1
+13,29,959,554,88,69,0,3,1
+14,29,959,554,89,70,0,3,1
+15,29,960,555,90,71,0,3,1
+16,29,960,556,90,71,0,3,1
+17,29,960,557,91,71,0,3,1
+18,29,960,558,91,72,0,3,1
+19,29,960,559,92,72,0,3,1
+20,29,961,560,91,72,0,3,1
+21,29,961,561,92,73,0,3,1
+22,29,961,562,92,73,0,3,1
+23,29,961,563,93,73,0,3,1
+24,29,962,564,93,74,0,3,1
+25,29,962,566,94,75,0,3,1
+26,29,962,569,95,76,0,3,1
+27,29,962,572,97,77,0,3,1
+28,29,962,575,98,78,0,3,1
+29,29,963,578,99,79,0,3,1
+30,29,963,581,98,79,0,3,1
+31,29,963,585,98,79,0,3,1
+32,29,963,589,98,79,0,3,1
+33,29,961,575,98,79,0,3,1
+34,29,962,579,104,79,0,3,1
+35,29,963,572,102,81,0,3,1
+36,29,964,566,101,82,0,3,1
+37,29,963,565,102,82,0,3,1
+38,29,963,564,103,82,0,3,1
+39,29,965,567,101,82,0,3,1
+40,29,964,566,104,81,0,3,1
+41,29,963,566,108,80,0,3,1
+42,29,962,567,109,81,0,3,1
+43,29,962,568,110,82,0,3,1
+44,29,962,569,110,83,0,3,1
+45,29,962,571,111,83,0,3,1
+46,29,964,572,112,86,0,3,1
+47,29,966,573,113,90,0,3,1
+48,29,962,576,113,89,0,3,1
+49,29,966,577,111,90,0,3,1
+50,29,964,578,112,89,0,3,1
+51,29,963,582,107,88,0,3,1
+52,29,965,579,112,88,0,3,1
+53,29,965,577,120,90,0,3,1
+54,29,964,578,120,90,0,3,1
+55,29,964,579,119,90,0,3,1
+56,29,964,580,118,91,0,3,1
+57,29,964,580,116,91,0,3,1
+58,29,964,580,115,91,0,3,1
+59,29,964,580,114,92,0,3,1
+60,29,964,580,113,92,0,3,1
+61,29,964,580,112,93,0,3,1
+62,29,962,580,115,93,0,3,1
+63,29,960,580,119,93,0,3,1
+64,29,959,581,122,93,0,3,1
+65,29,957,581,124,94,0,3,1
+66,29,956,582,125,94,0,3,1
+67,29,954,583,125,95,0,3,1
+68,29,953,584,125,97,0,3,1
+69,29,952,585,125,98,0,3,1
+70,29,951,586,125,100,0,3,1
+71,29,948,586,124,100,0,3,1
+72,29,945,586,124,101,0,3,1
+73,29,942,586,128,101,0,3,1
+74,29,938,586,131,101,0,3,1
+75,29,936,586,131,102,0,3,1
+76,29,935,586,131,103,0,3,1
+77,29,931,586,132,104,0,3,1
+78,29,927,586,133,105,0,3,1
+79,29,924,586,133,106,0,3,1
+80,29,920,586,134,107,0,3,1
+81,29,917,586,134,108,0,3,1
+82,29,913,586,135,109,0,3,1
+83,29,910,586,135,110,0,3,1
+84,29,907,587,133,110,0,3,1
+85,29,904,589,132,109,0,3,1
+86,29,901,590,130,109,0,3,1
+87,29,898,592,129,108,0,3,1
+88,29,896,594,127,107,0,3,1
+89,29,891,596,128,106,0,3,1
+90,29,885,598,133,105,0,3,1
+91,29,879,601,138,103,0,3,1
+92,29,873,604,137,104,0,3,1
+93,29,868,607,135,106,0,3,1
+94,29,863,610,133,108,0,3,1
+95,29,858,609,134,109,0,3,1
+96,29,854,609,135,109,0,3,1
+97,29,849,609,136,110,0,3,1
+98,29,845,609,137,110,0,3,1
+99,29,840,609,139,111,0,3,1
+100,29,836,609,139,111,0,3,1
+101,29,831,609,141,111,0,3,1
+102,29,827,609,141,112,0,3,1
+103,29,822,609,143,112,0,3,1
+104,29,818,609,144,113,0,3,1
+105,29,813,608,144,113,0,3,1
+106,29,809,607,143,113,0,3,1
+107,29,805,607,142,112,0,3,1
+108,29,800,606,143,113,0,3,1
+109,29,796,606,142,112,0,3,1
+110,29,792,605,141,112,0,3,1
+111,29,788,605,141,112,0,3,1
+112,29,782,605,141,111,0,3,1
+113,29,777,605,141,111,0,3,1
+114,29,771,605,142,111,0,3,1
+115,29,766,605,141,110,0,3,1
+116,29,761,605,141,110,0,3,1
+117,29,755,605,142,110,0,3,1
+118,29,750,605,141,109,0,3,1
+119,29,744,605,142,109,0,3,1
+120,29,739,605,142,109,0,3,1
+121,29,734,606,142,108,0,3,1
+122,29,728,606,143,108,0,3,1
+123,29,723,606,143,108,0,3,1
+124,29,717,606,144,108,0,3,1
+125,29,712,606,144,108,0,3,1
+126,29,707,606,144,109,0,3,1
+127,29,701,606,145,109,0,3,1
+128,29,696,606,145,109,0,3,1
+129,29,690,606,146,109,0,3,1
+130,29,685,606,146,109,0,3,1
+131,29,680,606,146,110,0,3,1
+132,29,675,604,146,110,0,3,1
+133,29,671,603,145,110,0,3,1
+134,29,666,602,145,110,0,3,1
+135,29,662,601,145,110,0,3,1
+136,29,658,600,144,110,0,3,1
+137,29,653,598,144,111,0,3,1
+138,29,649,597,144,111,0,3,1
+139,29,644,596,144,111,0,3,1
+140,29,640,595,143,111,0,3,1
+141,29,636,594,143,111,0,3,1
+142,29,631,594,143,110,0,3,1
+143,29,627,594,143,109,0,3,1
+144,29,623,594,142,108,0,3,1
+145,29,619,594,142,107,0,3,1
+146,29,615,595,142,106,0,3,1
+147,29,611,595,141,105,0,3,1
+148,29,607,595,141,104,0,3,1
+149,29,603,595,140,103,0,3,1
+150,29,599,595,140,102,0,3,1
+151,29,595,596,140,101,0,3,1
+152,29,584,598,130,103,0,3,1
+153,29,579,597,132,102,0,3,1
+154,29,575,596,133,102,0,3,1
+155,29,570,595,136,102,0,3,1
+156,29,566,594,137,102,0,3,1
+157,29,562,594,139,101,0,3,1
+158,29,557,593,140,108,0,3,1
+159,29,553,593,138,105,0,3,1
+160,29,549,593,136,102,0,3,1
+161,29,546,593,133,100,0,3,1
+162,29,541,592,133,101,0,3,1
+163,29,537,591,133,102,0,3,1
+164,29,533,591,132,102,0,3,1
+165,29,529,590,132,103,0,3,1
+166,29,524,589,133,104,0,3,1
+167,29,520,589,132,104,0,3,1
+168,29,516,588,132,105,0,3,1
+169,29,512,588,132,105,0,3,1
+170,29,509,588,132,103,0,3,0.99436
+171,29,507,588,131,101,0,3,0.9893
+172,29,505,588,131,100,0,3,0.98447
+173,29,501,586,132,100,0,3,0.98124
+174,29,498,585,131,98,0,3,0.98209
+175,29,495,584,131,96,0,3,0.98243
+176,29,493,583,130,94,0,3,0.98264
+177,29,490,583,130,94,0,3,0.98072
+178,29,488,583,129,94,0,3,0.97862
+179,29,486,583,128,94,0,3,0.97348
+180,29,483,584,128,93,0,3,0.96883
+181,29,481,584,127,93,0,3,0.96509
+182,29,479,584,126,93,0,3,0.95979
+183,29,477,584,126,94,0,3,0.95358
+184,29,474,585,126,93,0,3,0.94589
+185,29,472,585,125,93,0,3,0.94259
+186,29,470,585,124,93,0,3,0.93566
+187,29,467,586,124,92,0,3,0.92645
+188,29,465,586,123,92,0,3,0.92256
+189,29,463,586,123,93,0,3,0.90992
+190,29,461,586,122,93,0,3,0.90374
+191,29,458,587,122,92,0,3,0.89422
+192,29,456,587,121,92,0,3,0.88948
+193,29,454,587,120,92,0,3,0.87737
+194,29,451,588,120,91,0,3,0.8719
+195,29,449,588,120,92,0,3,0.86137
+196,29,447,588,119,92,0,3,0.85591
+197,29,445,588,118,92,0,3,0.85037
+198,29,442,589,118,91,0,3,0.84436
+199,29,440,589,117,91,0,3,0.83861
+200,29,438,589,116,91,0,3,0.83055
+201,29,436,590,116,91,0,3,0.81652
+202,29,434,590,116,90,0,3,0.81516
+203,29,433,590,116,90,0,3,0.80614
+204,29,432,590,115,89,0,3,0.80393
+205,29,431,590,115,89,0,3,0.79511
+206,29,430,590,114,89,0,3,0.78667
+207,29,428,590,115,88,0,3,0.7869
+208,29,427,590,114,88,0,3,0.77303
+209,29,426,590,114,88,0,3,0.76854
+210,29,425,590,113,87,0,3,0.76156
+211,29,424,590,113,87,0,3,0.75698
+212,29,423,591,113,86,0,3,0.75187
+213,29,423,590,112,86,0,3,0.74499
+214,29,423,590,112,85,0,3,0.74645
+215,29,423,590,112,84,0,3,0.74118
+216,29,423,589,112,84,0,3,0.75294
+217,29,423,589,111,84,0,3,0.75294
+218,29,423,589,111,83,0,3,0.75
+219,29,423,588,111,83,0,3,0.7619
+220,29,423,588,111,82,0,3,0.77108
+221,29,423,588,111,82,0,3,0.77108
+222,29,423,588,111,82,0,3,0.77108
+223,29,424,588,111,82,0,3,0.77108
+224,29,425,589,110,81,0,3,0.76829
+225,29,426,589,110,81,0,3,0.76829
+226,29,427,589,109,81,0,3,0.76829
+227,29,428,590,109,80,0,3,0.76543
+228,29,430,589,107,80,0,3,0.77778
+229,29,432,588,106,80,0,3,0.80247
+230,29,434,587,105,80,0,3,0.79012
+231,29,437,586,103,80,0,3,0.77778
+232,29,438,586,103,77,0,3,0.78205
+233,29,439,587,104,74,0,3,0.77333
+234,29,442,587,98,72,0,3,0.76712
+235,29,440,583,101,73,0,3,0.78378
+236,29,443,581,100,73,0,3,0.78378
+237,29,446,580,100,72,0,3,0.78082
+238,29,449,579,100,71,0,3,0.79167
+239,29,452,577,101,71,0,3,0.81944
+240,29,456,576,101,71,0,3,0.83333
+241,29,460,577,92,72,0,3,0.79452
+242,29,463,576,94,70,0,3,0.83099
+243,29,466,575,94,70,0,3,0.83099
+244,29,470,575,93,70,0,3,0.83099
+245,29,474,575,92,69,0,3,0.87143
+246,29,477,575,92,69,0,3,0.9
+247,29,481,575,91,68,0,3,0.88406
+248,29,485,575,90,68,0,3,0.85507
+249,29,489,575,90,68,0,3,0.84058
+250,29,494,574,90,70,0,3,0.83099
+251,29,499,573,90,73,0,3,0.81081
+252,29,504,573,90,72,0,3,0.82192
+253,29,510,573,89,71,0,3,0.84722
+254,29,515,573,89,70,0,3,0.85915
+255,29,521,573,88,69,0,3,0.87143
+256,29,526,573,88,68,0,3,0.88406
+257,29,532,574,87,67,0,3,0.89706
+258,29,537,573,87,66,0,3,0.92537
+259,29,543,572,87,66,0,3,0.9403
+260,29,549,571,86,66,0,3,0.95522
+261,29,555,570,86,66,0,3,0.97015
+262,29,561,569,85,66,0,3,0.98507
+263,29,567,568,85,66,0,3,1
+264,29,573,567,84,66,0,3,1
+265,29,579,566,84,66,0,3,1
+266,29,584,566,84,64,0,3,1
+267,29,590,565,84,64,0,3,1
+268,29,596,564,83,64,0,3,1
+269,29,602,563,83,64,0,3,1
+270,29,608,562,82,64,0,3,1
+271,29,614,561,82,64,0,3,1
+272,29,620,560,81,64,0,3,1
+273,29,626,559,81,64,0,3,1
+274,29,632,559,81,63,0,3,1
+275,29,638,558,80,63,0,3,1
+276,29,644,557,80,63,0,3,1
+277,29,651,557,79,63,0,3,1
+278,29,657,557,79,63,0,3,1
+279,29,663,557,80,63,0,3,1
+280,29,669,556,79,63,0,3,1
+281,29,675,556,79,63,0,3,1
+282,29,681,556,78,62,0,3,1
+283,29,688,555,77,63,0,3,1
+284,29,694,555,76,62,0,3,1
+285,29,700,555,76,62,0,3,1
+286,29,707,555,75,62,0,3,1
+287,29,711,555,75,62,0,3,1
+288,29,715,555,75,62,0,3,1
+289,29,720,556,74,61,0,3,1
+290,29,730,553,74,61,0,3,1
+291,29,735,552,74,61,0,3,1
+292,29,740,552,74,60,0,3,1
+293,29,746,551,73,60,0,3,1
+294,29,751,551,73,59,0,3,1
+295,29,757,551,72,59,0,3,1
+296,29,762,551,72,58,0,3,1
+297,29,768,551,71,58,0,3,1
+298,29,773,551,71,58,0,3,1
+299,29,779,551,70,58,0,3,1
+300,29,785,552,70,57,0,3,1
+301,29,788,556,69,56,0,3,1
+302,29,794,553,69,55,0,3,1
+303,29,798,553,69,56,0,3,1
+304,29,803,554,69,56,0,3,1
+305,29,807,555,69,56,0,3,1
+306,29,812,556,69,56,0,3,1
+307,29,816,556,69,56,0,3,1
+308,29,820,556,69,56,0,3,1
+309,29,824,556,69,56,0,3,1
+310,29,828,556,69,56,0,3,1
+311,29,833,557,69,56,0,3,1
+312,29,837,557,69,56,0,3,1
+313,29,841,557,69,56,0,3,1
+314,29,845,557,69,56,0,3,1
+315,29,849,557,69,56,0,3,1
+316,29,854,558,69,56,0,3,1
+317,29,857,556,69,56,0,3,1
+318,29,861,555,68,55,0,3,1
+319,29,864,554,68,54,0,3,1
+320,29,868,552,67,55,0,3,1
+321,29,872,551,66,54,0,3,1
+322,29,875,550,66,53,0,3,1
+323,29,879,548,65,54,0,3,1
+324,29,882,547,65,53,0,3,1
+325,29,886,546,64,52,0,3,1
+326,29,890,544,63,53,0,3,1
+327,29,893,543,63,52,0,3,1
+328,29,897,542,62,51,0,3,1
+329,29,901,541,61,51,0,3,1
+330,29,902,539,60,51,0,3,1
+331,29,903,538,60,50,0,3,1
+332,29,904,536,59,50,0,3,1
+333,29,905,535,59,49,0,3,1
+334,29,908,532,62,48,0,3,1
+335,29,909,530,62,48,0,3,1
+336,29,911,529,62,47,0,3,1
+337,29,913,527,61,47,0,3,1
+338,29,915,526,61,47,0,3,1
+339,29,916,525,61,47,0,3,1
+340,29,918,525,60,46,0,3,1
+341,29,918,527,57,46,0,3,1
+342,29,918,529,55,47,0,3,1
+343,29,920,531,63,47,0,3,1
+344,29,923,533,59,47,0,3,1
+345,29,926,536,55,47,0,3,1
+346,29,926,538,61,49,0,3,1
+347,29,925,542,60,49,0,3,1
+348,29,926,542,60,49,0,3,1
+349,29,927,542,60,50,0,3,1
+350,29,928,543,60,50,0,3,1
+351,29,929,542,60,48,0,3,1
+352,29,932,543,59,42,0,3,1
+353,29,933,545,59,45,0,3,1
+354,29,933,545,59,45,0,3,1
+355,29,934,545,59,46,0,3,1
+356,29,934,545,59,47,0,3,1
+357,29,935,546,59,47,0,3,1
+358,29,935,546,58,46,0,3,1
+359,29,936,546,56,46,0,3,1
+360,29,937,547,54,45,0,3,1
+361,29,937,549,55,44,0,3,1
+362,29,938,550,55,44,0,3,1
+363,29,940,552,54,44,0,3,1
+364,29,939,553,59,43,0,3,1
+365,29,939,556,52,45,0,3,1
+366,29,939,557,53,44,0,3,1
+367,29,940,558,54,43,0,3,1
+368,29,941,559,55,43,0,3,1
+369,29,942,561,54,43,0,3,1
+370,29,944,563,52,43,0,3,1
+371,29,943,563,53,42,0,3,1
+372,29,943,563,53,42,0,3,1
+373,29,943,563,53,42,0,3,1
+374,29,944,564,52,42,0,3,1
+375,29,943,562,51,43,0,3,1
+376,29,942,561,51,43,0,3,1
+377,29,941,560,51,43,0,3,1
+378,29,941,559,50,43,0,3,1
+379,29,940,558,52,42,0,3,1
+380,29,937,555,52,42,0,3,1
+381,29,934,553,53,41,0,3,1
+382,29,932,551,53,41,0,3,1
+383,29,930,548,52,41,0,3,1
+384,29,929,545,50,42,0,3,1
+385,29,926,541,52,41,0,3,1
+386,29,924,542,51,41,0,3,1
+387,29,922,538,51,42,0,3,1
+388,29,918,537,50,42,0,3,1
+389,29,914,536,49,42,0,3,1
+390,29,910,536,48,41,0,3,1
+391,29,905,536,50,41,0,3,1
+392,29,900,536,53,41,0,3,1
+393,29,896,532,49,41,0,3,1
+394,29,891,531,49,41,0,3,1
+395,29,882,530,50,42,0,3,1
+396,29,877,528,51,40,0,3,1
+397,29,870,530,50,39,0,3,1
+398,29,863,528,52,39,0,3,1
+399,29,856,528,51,37,0,3,1
+400,29,849,528,50,35,0,3,1
+401,29,842,524,49,40,0,3,1
+402,29,835,524,46,40,0,3,1
+403,29,827,523,50,39,0,3,1
+404,29,817,523,50,39,0,3,1
+405,29,810,524,49,38,0,3,1
+406,29,799,523,49,36,0,3,1
+407,29,789,523,49,34,0,3,1
+408,29,779,523,48,33,0,3,1
+409,29,769,524,49,33,0,3,1
+410,29,761,523,48,33,0,3,1
+411,29,749,523,46,34,0,3,1
+412,29,738,523,44,35,0,3,1
+413,29,725,521,48,34,0,3,1
+414,29,712,521,48,33,0,3,1
+415,29,700,521,48,32,0,3,1
+416,29,687,520,46,33,0,3,1
+417,29,674,519,45,34,0,3,1
+418,29,661,518,44,35,0,3,1
+419,29,647,515,43,34,0,3,1
+420,29,633,512,43,34,0,3,1
+421,29,618,514,43,33,0,3,1
+422,29,601,512,43,33,0,3,1
+423,29,584,510,43,34,0,3,1
+424,29,567,508,43,35,0,3,1
+425,29,551,506,42,36,0,3,1
+426,29,534,506,43,32,0,3,1
+427,29,517,507,42,34,0,3,1
+428,29,498,507,42,34,0,3,1
+429,29,479,507,42,34,0,3,1
+430,29,460,508,43,34,0,3,1
+431,29,440,510,45,36,0,3,0.73913
+432,29,421,512,41,37,0,3,0.35714
+433,29,402,511,41,36,0,3,0
+434,29,377,514,41,36,0,3,0
+435,29,351,511,41,36,0,3,0
+436,29,331,509,41,37,0,3,0
+437,29,319,510,41,36,0,3,0
+438,29,307,512,41,35,0,3,0.47619
+439,29,283,511,41,35,0,3,1
+440,29,259,511,42,34,0,3,1
+441,29,238,510,41,34,0,3,1
+442,29,218,509,40,34,0,3,1
+443,29,194,509,42,35,0,3,1
+444,29,172,511,42,35,0,3,1
+445,29,148,511,42,34,0,3,1
+446,29,124,511,43,34,0,3,1
+447,29,100,509,43,34,0,3,1
+448,29,76,508,43,34,0,3,1
+449,29,51,509,43,33,0,3,1
+450,29,25,504,43,33,0,3,1
+451,29,2,504,41,34,0,3,1
+1,30,1077,546,112,109,0,3,1
+2,30,1079,543,113,112,0,3,1
+3,30,1082,540,113,115,0,3,1
+4,30,1085,537,113,119,0,3,1
+5,30,1084,537,114,123,0,3,1
+6,30,1090,546,115,117,0,3,1
+7,30,1088,548,117,109,0,3,1
+8,30,1090,552,117,109,0,3,1
+9,30,1092,557,118,109,0,3,1
+10,30,1094,562,119,109,0,3,1
+11,30,1094,561,120,110,0,3,1
+12,30,1095,560,120,111,0,3,1
+13,30,1096,559,121,113,0,3,1
+14,30,1097,558,121,114,0,3,1
+15,30,1097,558,123,115,0,3,1
+16,30,1098,557,123,116,0,3,1
+17,30,1099,556,124,118,0,3,1
+18,30,1100,555,124,119,0,3,1
+19,30,1101,555,125,120,0,3,1
+20,30,1102,555,126,124,0,3,1
+21,30,1103,556,127,127,0,3,1
+22,30,1105,557,127,130,0,3,1
+23,30,1106,558,128,133,0,3,1
+24,30,1107,559,129,136,0,3,1
+25,30,1109,560,130,139,0,3,1
+26,30,1109,562,132,140,0,3,1
+27,30,1109,565,134,141,0,3,1
+28,30,1109,568,136,141,0,3,1
+29,30,1110,571,138,142,0,3,1
+30,30,1113,574,137,143,0,3,1
+31,30,1116,578,137,144,0,3,1
+32,30,1119,582,137,145,0,3,1
+33,30,1120,576,138,147,0,3,1
+34,30,1121,571,139,148,0,3,1
+35,30,1123,566,139,149,0,3,1
+36,30,1119,563,144,150,0,3,1
+37,30,1123,562,142,151,0,3,1
+38,30,1127,562,141,152,0,3,1
+39,30,1127,564,144,153,0,3,1
+40,30,1127,566,147,154,0,3,1
+41,30,1127,568,150,155,0,3,1
+42,30,1128,571,152,156,0,3,1
+43,30,1129,572,153,157,0,3,1
+44,30,1131,574,153,158,0,3,1
+45,30,1133,575,153,160,0,3,1
+46,30,1135,577,153,161,0,3,1
+47,30,1136,578,155,162,0,3,1
+48,30,1138,580,155,163,0,3,1
+49,30,1140,581,155,165,0,3,1
+50,30,1142,583,155,166,0,3,1
+51,30,1144,585,156,167,0,3,1
+52,30,1139,581,164,172,0,3,1
+53,30,1147,579,159,178,0,3,1
+54,30,1148,579,160,180,0,3,1
+55,30,1150,580,161,182,0,3,1
+56,30,1151,581,163,183,0,3,1
+57,30,1153,582,164,185,0,3,1
+58,30,1152,582,166,186,0,3,1
+59,30,1151,583,169,186,0,3,1
+60,30,1151,583,170,188,0,3,1
+61,30,1150,584,173,188,0,3,1
+62,30,1150,584,174,190,0,3,1
+63,30,1149,585,177,190,0,3,1
+64,30,1149,586,179,191,0,3,1
+65,30,1148,586,181,193,0,3,1
+66,30,1147,587,183,195,0,3,1
+67,30,1146,587,185,198,0,3,1
+68,30,1146,588,186,200,0,3,1
+69,30,1145,589,188,201,0,3,1
+70,30,1144,589,190,204,0,3,1
+71,30,1143,590,192,206,0,3,1
+72,30,1143,591,193,208,0,3,1
+73,30,1141,591,195,210,0,3,1
+74,30,1139,592,197,211,0,3,1
+75,30,1137,593,200,212,0,3,1
+76,30,1147,597,186,218,0,3,1
+77,30,1141,597,193,219,0,3,1
+78,30,1135,597,201,221,0,3,1
+79,30,1130,598,208,222,0,3,1
+80,30,1127,598,209,224,0,3,1
+81,30,1125,599,210,226,0,3,1
+82,30,1122,600,211,228,0,3,1
+83,30,1120,601,212,230,0,3,1
+84,30,1118,603,212,231,0,3,1
+85,30,1116,606,212,231,0,3,1
+86,30,1113,609,213,233,0,3,1
+87,30,1110,612,214,236,0,3,1
+88,30,1107,615,215,238,0,3,1
+89,30,1104,619,217,240,0,3,1
+90,30,1101,622,218,242,0,3,1
+91,30,1098,625,219,245,0,3,1
+92,30,1095,628,220,247,0,3,1
+93,30,1093,632,221,249,0,3,1
+94,30,1088,633,223,250,0,3,1
+95,30,1083,634,226,252,0,3,1
+96,30,1078,635,228,254,0,3,1
+97,30,1074,636,230,256,0,3,1
+98,30,1069,637,233,257,0,3,1
+99,30,1064,638,235,259,0,3,1
+100,30,1059,639,238,261,0,3,1
+101,30,1055,641,240,262,0,3,1
+102,30,1054,643,238,264,0,3,1
+103,30,1054,645,236,267,0,3,1
+104,30,1042,646,249,263,0,3,1
+105,30,1038,647,249,265,0,3,1
+106,30,1035,648,248,268,0,3,1
+107,30,1031,649,249,270,0,3,1
+108,30,1028,650,248,273,0,3,1
+109,30,1024,651,249,275,0,3,1
+110,30,1021,652,248,278,0,3,1
+111,30,1018,653,248,281,0,3,1
+112,30,1011,654,250,282,0,3,1
+113,30,1005,655,251,284,0,3,1
+114,30,999,656,252,286,0,3,1
+115,30,992,657,254,287,0,3,1
+116,30,986,658,255,289,0,3,1
+117,30,980,659,256,291,0,3,1
+118,30,974,660,258,293,0,3,1
+119,30,969,657,259,295,0,3,1
+120,30,964,654,261,297,0,3,1
+121,30,952,654,273,300,0,3,1
+122,30,946,655,272,301,0,3,1
+123,30,941,656,271,303,0,3,1
+124,30,936,657,269,304,0,3,1
+125,30,931,658,268,306,0,3,1
+126,30,925,659,268,305,0,3,1
+127,30,919,660,269,305,0,3,1
+128,30,913,661,270,304,0,3,1
+129,30,907,662,271,304,0,3,1
+130,30,901,663,271,303,0,3,1
+131,30,895,664,272,303,0,3,1
+132,30,889,665,273,302,0,3,1
+133,30,883,666,274,302,0,3,1
+134,30,877,667,274,301,0,3,1
+135,30,871,668,275,301,0,3,1
+136,30,865,669,276,300,0,3,1
+137,30,859,670,277,300,0,3,1
+138,30,853,672,278,299,0,3,1
+139,30,847,670,278,299,0,3,1
+140,30,841,669,279,298,0,3,1
+141,30,835,668,280,297,0,3,1
+142,30,829,667,281,297,0,3,1
+143,30,821,667,283,297,0,3,1
+144,30,813,668,286,296,0,3,1
+145,30,806,668,288,296,0,3,1
+146,30,798,669,291,296,0,3,1
+147,30,791,669,293,296,0,3,1
+148,30,783,670,296,295,0,3,1
+149,30,776,671,298,295,0,3,1
+150,30,770,670,295,295,0,3,1
+151,30,765,670,291,295,0,3,1
+152,30,760,670,287,295,0,3,1
+153,30,755,670,283,294,0,3,1
+154,30,750,670,279,294,0,3,1
+155,30,745,670,275,294,0,3,1
+156,30,735,669,278,299,0,3,1
+157,30,725,668,281,305,0,3,1
+158,30,715,667,284,311,0,3,1
+159,30,708,666,283,311,0,3,1
+160,30,702,666,282,310,0,3,1
+161,30,695,666,281,309,0,3,1
+162,30,689,666,280,308,0,3,1
+163,30,683,666,278,307,0,3,1
+164,30,676,666,278,306,0,3,1
+165,30,670,666,276,305,0,3,1
+166,30,664,666,275,304,0,3,1
+167,30,657,666,274,303,0,3,1
+168,30,651,666,273,302,0,3,1
+169,30,645,666,272,301,0,3,1
+170,30,639,666,273,297,0,3,1
+171,30,633,666,275,294,0,3,1
+172,30,628,666,276,291,0,3,1
+173,30,622,666,274,290,0,3,1
+174,30,617,666,271,289,0,3,1
+175,30,612,666,268,288,0,3,1
+176,30,606,666,266,287,0,3,1
+177,30,601,666,263,286,0,3,1
+178,30,596,666,261,286,0,3,1
+179,30,590,665,261,286,0,3,1
+180,30,585,664,260,286,0,3,1
+181,30,579,664,260,285,0,3,1
+182,30,574,663,259,285,0,3,1
+183,30,569,663,258,284,0,3,1
+184,30,563,662,258,284,0,3,1
+185,30,558,662,257,283,0,3,1
+186,30,553,661,256,283,0,3,1
+187,30,547,660,256,283,0,3,1
+188,30,542,660,255,282,0,3,1
+189,30,537,659,254,282,0,3,1
+190,30,531,659,254,281,0,3,1
+191,30,526,658,253,281,0,3,1
+192,30,521,658,253,281,0,3,1
+193,30,515,657,253,281,0,3,1
+194,30,510,657,253,280,0,3,1
+195,30,505,657,253,280,0,3,1
+196,30,500,657,252,279,0,3,1
+197,30,495,657,252,279,0,3,1
+198,30,490,657,252,278,0,3,1
+199,30,485,657,252,278,0,3,1
+200,30,479,657,252,277,0,3,1
+201,30,474,657,252,277,0,3,1
+202,30,469,657,252,276,0,3,1
+203,30,464,657,252,276,0,3,1
+204,30,459,657,251,275,0,3,1
+205,30,454,657,251,275,0,3,1
+206,30,449,657,251,274,0,3,1
+207,30,444,657,251,274,0,3,1
+208,30,441,656,251,274,0,3,1
+209,30,438,656,251,273,0,3,1
+210,30,435,655,251,273,0,3,1
+211,30,432,655,251,272,0,3,1
+212,30,430,655,250,271,0,3,1
+213,30,427,654,250,271,0,3,1
+214,30,424,654,250,270,0,3,1
+215,30,421,653,250,270,0,3,1
+216,30,418,653,250,269,0,3,1
+217,30,416,653,250,269,0,3,1
+218,30,414,652,253,268,0,3,1
+219,30,413,652,255,267,0,3,1
+220,30,411,652,258,265,0,3,1
+221,30,410,652,260,264,0,3,1
+222,30,408,652,259,264,0,3,1
+223,30,407,652,257,264,0,3,1
+224,30,406,652,256,264,0,3,1
+225,30,405,652,254,264,0,3,1
+226,30,403,652,253,264,0,3,1
+227,30,402,652,252,264,0,3,1
+228,30,401,652,250,264,0,3,1
+229,30,400,653,249,263,0,3,1
+230,30,398,651,252,262,0,3,1
+231,30,397,649,254,262,0,3,1
+232,30,396,647,256,261,0,3,1
+233,30,395,645,258,261,0,3,1
+234,30,393,643,261,261,0,3,1
+235,30,392,641,263,260,0,3,1
+236,30,391,639,265,260,0,3,1
+237,30,390,637,267,260,0,3,1
+238,30,394,636,268,260,0,3,1
+239,30,399,636,268,259,0,3,1
+240,30,404,636,268,259,0,3,1
+241,30,406,635,269,257,0,3,1
+242,30,408,635,271,255,0,3,1
+243,30,410,634,272,254,0,3,1
+244,30,413,634,273,252,0,3,1
+245,30,417,636,274,252,0,3,1
+246,30,422,638,274,252,0,3,1
+247,30,425,636,275,253,0,3,1
+248,30,429,634,275,255,0,3,1
+249,30,433,633,275,256,0,3,1
+250,30,439,633,277,256,0,3,1
+251,30,445,633,279,256,0,3,1
+252,30,452,633,280,257,0,3,1
+253,30,458,634,282,256,0,3,1
+254,30,464,634,284,256,0,3,1
+255,30,471,634,285,257,0,3,1
+256,30,477,634,287,257,0,3,1
+257,30,484,635,289,257,0,3,1
+258,30,492,635,292,256,0,3,1
+259,30,501,635,295,255,0,3,1
+260,30,509,635,298,255,0,3,1
+261,30,518,635,301,254,0,3,1
+262,30,526,635,304,254,0,3,1
+263,30,535,635,307,253,0,3,1
+264,30,543,635,310,253,0,3,1
+265,30,552,635,313,252,0,3,1
+266,30,560,635,316,252,0,3,1
+267,30,569,635,319,251,0,3,1
+268,30,578,636,322,250,0,3,1
+269,30,590,633,323,250,0,3,1
+270,30,602,631,324,249,0,3,1
+271,30,614,629,325,249,0,3,1
+272,30,625,628,329,248,0,3,1
+273,30,637,627,332,247,0,3,1
+274,30,649,627,336,245,0,3,1
+275,30,661,626,339,244,0,3,1
+276,30,673,626,343,243,0,3,1
+277,30,688,632,368,238,0,3,1
+278,30,702,632,339,237,0,3,1
+279,30,717,632,346,238,0,3,1
+280,30,729,630,352,240,0,3,1
+281,30,742,629,357,241,0,3,1
+282,30,754,627,363,243,0,3,1
+283,30,767,626,368,245,0,3,1
+284,30,782,624,370,247,0,3,1
+285,30,798,623,372,249,0,3,1
+286,30,814,622,374,251,0,3,1
+287,30,830,620,376,253,0,3,1
+288,30,846,619,378,255,0,3,1
+289,30,862,618,380,257,0,3,1
+290,30,878,619,386,253,0,3,1
+291,30,894,621,392,249,0,3,1
+292,30,912,623,392,247,0,3,1
+293,30,930,624,395,248,0,3,1
+294,30,948,625,399,249,0,3,1
+295,30,966,626,403,250,0,3,1
+296,30,985,628,406,250,0,3,1
+297,30,1003,627,409,251,0,3,1
+298,30,1021,627,413,251,0,3,1
+299,30,1039,627,417,252,0,3,1
+300,30,1058,626,424,253,0,3,1
+301,30,1078,626,430,253,0,3,1
+302,30,1099,627,428,254,0,3,1
+303,30,1119,629,432,257,0,3,1
+304,30,1140,631,436,261,0,3,1
+305,30,1161,633,440,265,0,3,1
+306,30,1183,632,446,266,0,3,1
+307,30,1206,632,451,267,0,3,1
+308,30,1229,632,456,267,0,3,1
+309,30,1251,631,462,269,0,3,1
+310,30,1274,631,467,269,0,3,1
+311,30,1297,631,472,270,0,3,1
+312,30,1321,631,465,272,0,3,1
+313,30,1354,631,469,273,0,3,1
+314,30,1373,631,481,275,0,3,1
+315,30,1396,635,487,268,0,3,1
+316,30,1419,640,494,261,0,3,1
+317,30,1446,637,494,265,0,3,0.9596
+318,30,1474,634,493,269,0,3,0.90486
+319,30,1501,631,493,274,0,3,0.8502
+320,30,1529,628,492,278,0,3,0.79513
+321,30,1557,626,492,282,0,3,0.73834
+322,30,1585,628,492,279,0,3,0.68154
+323,30,1613,631,493,275,0,3,0.62348
+324,30,1642,634,493,271,0,3,0.56478
+325,30,1670,636,493,268,0,3,0.5081
+326,30,1698,639,494,264,0,3,0.45051
+327,30,1727,642,494,261,0,3,0.39192
+328,30,1757,642,494,261,0,3,0.33131
+329,30,1788,642,494,261,0,3,0.26869
+330,30,1819,642,494,261,0,3,0.20606
+331,30,1850,642,494,261,0,3,0.14343
+31,31,592,569,26,62,1,1,0
+32,31,588,564,26,62,1,1,0
+33,31,584,559,26,63,1,1,0.37037
+16,32,1564,511,22,40,1,1,0.34146
+17,32,1561,507,20,41,1,1,0.40476
+18,32,1562,506,19,44,1,1,0.4
+19,32,1563,506,19,46,1,1,0.3617
+20,32,1564,506,19,48,1,1,0.34694
+21,32,1566,506,18,50,1,1,0.35294
+22,32,1565,508,20,39,1,1,0.49643
+23,32,1568,507,19,41,1,1,0.73929
+24,32,1569,506,19,50,1,1,0.68627
+25,32,1569,513,19,50,1,1,0.61176
+26,32,1570,515,19,44,1,1,0.71667
+27,32,1569,516,24,47,1,1,0.76667
+28,32,1570,516,18,52,1,1,0.8858
+29,32,1570,523,23,49,1,1,0.83583
+30,32,1571,522,19,50,1,1,0.9
+31,32,1573,526,18,48,1,1,0.85392
+32,32,1572,529,19,46,1,1,0.71915
+33,32,1573,518,19,46,1,1,0.56596
+34,32,1574,519,19,46,1,1,0.35532
+35,32,1574,515,19,46,1,1,0.20213
+36,32,1575,511,19,46,1,1,0.18723
+37,32,1577,510,19,46,1,1,0.11489
+38,32,1576,508,19,46,1,1,0.16277
+39,32,1579,509,19,46,1,1,0.067021
+40,32,1579,506,20,46,1,1,0.25735
+41,32,1579,508,20,46,1,1,0.29382
+42,32,1580,510,20,46,1,1,0.37791
+43,32,1584,512,21,46,1,1,0.63636
+44,32,1586,512,21,46,1,1,0.40909
+45,32,1586,512,21,46,1,1,0.51838
+46,32,1589,513,21,46,1,1,0.51257
+47,32,1587,518,21,46,1,1,0.54545
+48,32,1582,516,21,49,1,1,0.51909
+49,32,1584,517,22,48,1,1,0.54392
+50,32,1587,519,22,46,1,1,0.69565
+51,32,1586,524,22,46,1,1,0.52729
+52,32,1586,524,22,46,1,1,0.36355
+53,32,1586,524,22,46,1,1,0.16651
+54,32,1586,523,22,46,1,1,0.077706
+55,32,1586,522,22,46,1,1,0.032377
+56,32,1586,521,22,47,1,1,0.028986
+57,32,1587,520,22,47,1,1,0.016304
+58,32,1587,519,22,48,1,1,0.0035492
+59,32,1588,519,22,47,1,1,0
+60,32,1588,518,22,48,1,1,0
+61,32,1589,517,22,48,1,1,0
+62,32,1589,516,22,49,1,1,0
+63,32,1589,515,22,49,1,1,0.2887
+64,32,1590,515,22,49,1,1,0.024348
+65,32,1590,514,22,49,1,1,0.024348
+66,32,1591,513,22,50,1,1,0.44757
+67,32,1591,512,22,50,1,1,0.11083
+68,32,1592,512,22,50,1,1,0.13043
+69,32,1594,520,22,49,1,1,0.086957
+70,32,1592,518,23,49,1,1,0
+71,32,1590,518,23,49,1,1,0
+72,32,1588,519,24,48,1,1,0.052245
+73,32,1586,520,23,50,1,1,0.78922
+74,32,1585,518,23,52,1,1,0.86164
+75,32,1586,522,20,49,1,1,1
+76,32,1583,519,20,51,1,1,0.14286
+77,32,1580,519,21,50,1,1,0.22727
+78,32,1578,519,22,50,1,1,0.30435
+79,32,1576,519,23,49,1,1,0.375
+80,32,1574,519,24,49,1,1,0.48
+81,32,1572,519,25,49,1,1,0.53846
+82,32,1569,518,24,50,1,1,0.52
+83,32,1566,517,24,51,1,1,1
+84,32,1563,517,24,51,1,1,1
+85,32,1560,516,24,52,1,1,1
+86,32,1557,516,24,53,1,1,1
+87,32,1555,518,24,51,1,1,1
+88,32,1553,520,25,50,1,1,1
+89,32,1550,521,25,50,1,1,1
+90,32,1547,522,25,50,1,1,0.80769
+91,32,1544,523,25,50,1,1,0.80769
+92,32,1541,524,25,50,1,1,0.84615
+93,32,1538,525,25,50,1,1,0.88462
+94,32,1535,526,25,50,1,1,0.92308
+95,32,1533,527,25,51,1,1,1
+96,32,1528,527,20,56,1,1,1
+97,32,1524,528,21,55,1,1,1
+98,32,1521,529,21,55,1,1,1
+99,32,1517,530,22,54,1,1,1
+100,32,1514,531,23,54,1,1,1
+101,32,1510,532,24,53,1,1,1
+102,32,1507,533,24,53,1,1,1
+103,32,1504,534,25,53,1,1,1
+104,32,1500,534,25,53,1,1,1
+105,32,1496,534,25,53,1,1,1
+106,32,1492,534,25,54,1,1,1
+107,32,1489,533,26,54,1,1,1
+108,32,1488,534,26,54,1,1,1
+109,32,1483,535,26,54,1,1,1
+110,32,1478,535,25,54,1,1,1
+111,32,1473,535,25,54,1,1,1
+112,32,1469,535,24,54,1,1,1
+113,32,1464,535,24,55,1,1,1
+114,32,1460,535,23,55,1,1,1
+115,32,1455,535,23,55,1,1,1
+116,32,1451,536,22,55,1,1,1
+117,32,1445,535,23,55,1,1,1
+118,32,1440,535,23,54,1,1,1
+119,32,1434,534,25,55,1,1,1
+120,32,1429,534,25,54,1,1,0.80769
+121,32,1424,534,26,54,1,1,0.74074
+122,32,1421,533,26,54,1,1,0.77778
+123,32,1418,533,26,54,1,1,0.81481
+124,32,1411,532,28,55,1,1,1
+125,32,1404,532,31,56,1,1,1
+126,32,1398,532,33,57,1,1,1
+127,32,1393,533,31,56,1,1,1
+128,32,1388,534,30,55,1,1,1
+129,32,1383,535,28,54,1,1,1
+130,32,1379,536,26,53,1,1,1
+131,32,1374,536,26,53,1,1,1
+132,32,1369,536,26,54,1,1,1
+133,32,1365,537,26,54,1,1,1
+134,32,1360,536,26,54,1,1,0.96296
+135,32,1356,536,26,54,1,1,0.92593
+136,32,1352,535,26,54,1,1,0.92593
+137,32,1348,535,26,54,1,1,0.88889
+138,32,1344,534,26,54,1,1,0.81481
+139,32,1340,534,26,54,1,1,0.74074
+140,32,1336,533,26,54,1,1,0.66667
+141,32,1332,533,26,54,1,1,0.59259
+142,32,1327,532,26,55,1,1,0.51852
+143,32,1322,532,26,55,1,1,0.51852
+144,32,1317,532,26,55,1,1,0.51852
+145,32,1312,532,26,56,1,1,0.51852
+146,32,1307,531,26,57,1,1,0.51852
+147,32,1302,531,26,57,1,1,0.44444
+148,32,1297,531,26,58,1,1,0.37037
+149,32,1292,531,26,58,1,1,0.33333
+150,32,1287,530,26,59,1,1,0.2963
+151,32,1282,530,26,60,1,1,0.25926
+152,32,1277,530,26,60,1,1,0.18519
+153,32,1272,530,26,60,1,1,0.18519
+154,32,1268,530,25,61,1,1,0.16625
+155,32,1266,530,25,61,1,1,0.15385
+156,32,1264,530,25,62,1,1,0.11538
+157,32,1262,530,25,63,1,1,0.11538
+158,32,1256,530,25,63,1,1,0.076923
+159,32,1251,530,25,63,1,1,0.076923
+160,32,1246,530,25,63,1,1,0.11538
+161,32,1240,530,26,63,1,1,0.093171
+162,32,1235,530,25,63,1,1,0.071514
+163,32,1230,530,25,63,1,1,0.070312
+164,32,1224,530,26,63,1,1,0.10417
+165,32,1219,530,26,63,1,1,0.11111
+166,32,1214,530,26,63,1,1,0.071181
+167,32,1214,528,26,63,1,1,0.14815
+168,32,1210,527,26,63,1,1,0.087963
+169,32,1207,527,26,63,1,1,0.065394
+18,33,1330,506,18,49,1,1,0.47368
+19,33,1330,506,19,49,1,1,0.55
+20,33,1331,506,19,49,1,1,0.6
+21,33,1332,507,19,49,1,1,0.65
+22,33,1333,507,19,49,1,1,0.7
+23,33,1334,507,19,49,1,1,0.75
+24,33,1335,508,20,49,1,1,0.7619
+25,33,1336,509,20,50,1,1,0.80952
+26,33,1337,511,20,50,1,1,0.85714
+27,33,1338,513,20,50,1,1,0.82073
+28,33,1339,515,21,51,1,1,0.58392
+29,33,1342,520,20,48,1,1,0.33236
+30,33,1341,522,22,48,1,1,0.35404
+31,33,1341,524,24,49,1,1,0.4232
+32,33,1345,527,22,51,1,1,0.38629
+33,33,1345,516,23,48,1,1,0.43027
+34,33,1344,518,24,48,1,1,0.34694
+35,33,1348,511,22,47,1,1,0.45833
+36,33,1349,509,22,49,1,1,0.42
+37,33,1351,508,21,50,1,1,0.39216
+38,33,1353,507,20,51,1,1,0.36538
+39,33,1355,506,20,53,1,1,0.35185
+40,33,1356,505,20,54,1,1,0.34545
+41,33,1358,505,20,54,1,1,0.38182
+42,33,1360,505,20,54,1,1,0.4
+43,33,1361,507,20,54,1,1,0.4
+44,33,1363,509,19,55,1,1,0.39286
+45,33,1364,511,19,55,1,1,0.63571
+46,33,1366,513,19,56,1,1,0.93509
+47,33,1367,513,19,57,1,1,1
+48,33,1369,514,19,57,1,1,1
+49,33,1371,514,19,58,1,1,1
+50,33,1373,515,19,58,1,1,1
+51,33,1375,516,19,59,1,1,1
+52,33,1376,515,19,59,1,1,1
+53,33,1377,514,20,60,1,1,1
+54,33,1378,514,20,60,1,1,1
+55,33,1379,513,21,60,1,1,1
+56,33,1381,512,20,61,1,1,1
+57,33,1382,512,21,61,1,1,1
+58,33,1383,511,21,61,1,1,1
+59,33,1384,510,22,62,1,1,1
+60,33,1386,510,22,62,1,1,1
+61,33,1387,508,23,58,1,1,1
+62,33,1389,511,23,59,1,1,1
+63,33,1391,499,23,59,1,1,1
+64,33,1394,510,23,60,1,1,1
+65,33,1394,507,22,59,1,1,1
+66,33,1395,505,21,58,1,1,1
+67,33,1395,514,21,61,1,1,1
+68,33,1394,511,22,58,1,1,1
+69,33,1394,518,22,58,1,1,1
+70,33,1392,511,24,63,1,1,1
+71,33,1392,512,23,62,1,1,1
+72,33,1392,513,23,62,1,1,1
+73,33,1392,514,23,61,1,1,1
+74,33,1392,516,23,60,1,1,1
+75,33,1391,516,23,60,1,1,1
+76,33,1390,516,23,61,1,1,1
+77,33,1389,516,23,61,1,1,1
+78,33,1388,516,23,62,1,1,1
+79,33,1387,516,23,62,1,1,1
+80,33,1387,517,23,62,1,1,1
+81,33,1385,517,23,62,1,1,1
+82,33,1383,517,24,63,1,1,1
+83,33,1381,517,24,63,1,1,1
+84,33,1379,517,25,64,1,1,1
+85,33,1378,518,25,64,1,1,0.97574
+86,33,1376,518,25,65,1,1,0.97436
+87,33,1374,519,26,65,1,1,0.95174
+88,33,1372,520,26,65,1,1,0.97531
+89,33,1371,521,26,65,1,1,0.95174
+90,33,1370,524,26,65,1,1,0.87374
+91,33,1369,527,26,65,1,1,0.86532
+92,33,1365,527,27,65,1,1,0.85065
+93,33,1362,528,28,65,1,1,0.84274
+94,33,1359,528,28,66,1,1,0.86104
+95,33,1357,529,28,66,1,1,0.85795
+96,33,1355,529,28,67,1,1,0.84736
+97,33,1353,530,27,67,1,1,0.86134
+98,33,1351,530,27,68,1,1,0.86646
+99,33,1349,531,27,68,1,1,0.84058
+100,33,1347,532,27,68,1,1,0.79037
+101,33,1347,535,24,65,1,1,0.76242
+102,33,1344,534,23,69,1,1,0.80417
+103,33,1342,534,23,69,1,1,0.77619
+104,33,1340,534,24,69,1,1,0.76857
+105,33,1338,534,25,69,1,1,0.77253
+106,33,1336,534,25,69,1,1,0.74011
+107,33,1334,534,26,69,1,1,0.66667
+108,33,1332,534,27,69,1,1,0.63265
+109,33,1330,534,28,70,1,1,0.66489
+110,33,1326,534,24,71,1,1,0.7
+111,33,1325,535,26,70,1,1,0.61607
+112,33,1322,535,25,70,1,1,0.64355
+113,33,1316,536,28,70,1,1,0.64254
+114,33,1313,536,27,70,1,1,0.59759
+115,33,1311,536,28,71,1,1,1
+116,33,1309,535,27,70,1,1,0.59809
+117,33,1305,535,26,73,1,1,1
+118,33,1303,533,27,74,1,1,1
+119,33,1300,525,29,77,1,1,0.69487
+120,33,1297,518,31,79,1,1,0.74102
+121,33,1295,531,31,75,1,1,0.66447
+122,33,1293,532,30,74,1,1,0.6271
+123,33,1291,534,32,72,1,1,0.66127
+124,33,1290,533,28,73,1,1,0.61976
+125,33,1286,531,30,77,1,1,1
+126,33,1280,534,33,74,1,1,1
+127,33,1277,533,31,76,1,1,1
+128,33,1275,532,29,79,1,1,1
+129,33,1273,532,29,79,1,1,1
+130,33,1271,532,29,79,1,1,1
+131,33,1270,533,29,78,1,1,0.70464
+132,33,1267,534,30,78,1,1,0.96774
+133,33,1264,535,31,78,1,1,0.9375
+134,33,1264,536,30,77,1,1,0.67949
+135,33,1260,534,29,80,1,1,0.9
+136,33,1256,536,31,79,1,1,0.875
+137,33,1253,534,31,80,1,1,0.70216
+138,33,1251,533,31,81,1,1,0.84375
+139,33,1249,532,30,82,1,1,0.83871
+140,33,1247,531,30,83,1,1,0.80645
+141,33,1245,533,31,82,1,1,0.78125
+142,33,1245,531,31,81,1,1,0.6875
+143,33,1243,533,31,80,1,1,0.6875
+144,33,1241,535,31,80,1,1,0.65625
+145,33,1240,537,31,80,1,1,0.59375
+146,33,1238,537,31,80,1,1,0.59375
+147,33,1237,538,31,79,1,1,0.53125
+148,33,1235,538,31,79,1,1,0.5
+149,33,1232,539,31,78,1,1,0.5
+150,33,1228,538,31,79,1,1,0.5
+151,33,1225,538,31,79,1,1,0.46875
+152,33,1221,537,32,80,1,1,0.51515
+153,33,1218,537,32,80,1,1,0.45455
+154,33,1215,536,32,81,1,1,0.42424
+155,33,1212,536,32,81,1,1,0.42424
+156,33,1209,535,32,82,1,1,0.42424
+157,33,1206,535,32,82,1,1,0.42424
+158,33,1203,534,32,83,1,1,0.45455
+159,33,1200,534,32,83,1,1,0.42424
+160,33,1197,534,33,84,1,1,0.47059
+161,33,1194,533,35,86,1,1,0.47222
+162,33,1192,532,36,88,1,1,0.48649
+163,33,1190,531,37,90,1,1,0.45084
+164,33,1188,531,39,91,1,1,0.43913
+165,33,1187,532,35,94,1,1,0.39474
+166,33,1186,533,35,93,1,1,0.42376
+167,33,1186,534,35,93,1,1,0.35993
+168,33,1185,534,35,92,1,1,0.41517
+169,33,1184,534,35,91,1,1,0.41335
+170,33,1183,534,35,90,1,1,0.38858
+171,33,1182,534,35,90,1,1,0.41941
+172,33,1180,536,35,91,1,1,0.41304
+173,33,1180,536,35,93,1,1,0.3818
+174,33,1180,536,33,92,1,1,0.4339
+175,33,1182,536,31,90,1,1,0.45913
+176,33,1176,537,36,93,1,1,0.36717
+177,33,1175,535,37,95,1,1,0.42489
+178,33,1174,534,38,96,1,1,0.38805
+179,33,1174,533,38,97,1,1,0.41078
+180,33,1177,537,35,94,1,1,0.43509
+181,33,1175,538,36,95,1,1,0.67568
+182,33,1173,539,37,96,1,1,0.38931
+183,33,1171,540,38,97,1,1,0.64103
+184,33,1169,541,39,98,1,1,0.625
+185,33,1168,543,39,98,1,1,0.625
+186,33,1168,541,39,100,1,1,0.6
+187,33,1168,540,39,101,1,1,0.6
+188,33,1168,539,40,103,1,1,0.58537
+189,33,1168,539,40,104,1,1,0.60976
+190,33,1168,540,40,104,1,1,0.58537
+191,33,1169,541,39,104,1,1,0.6
+192,33,1167,541,40,104,1,1,0.58537
+193,33,1166,541,40,104,1,1,0.56098
+194,33,1164,541,41,104,1,1,0.35646
+195,33,1163,542,41,104,1,1,0.52381
+196,33,1162,543,41,104,1,1,0.5
+197,33,1162,542,40,106,1,1,0.4878
+198,33,1162,541,39,109,1,1,0.475
+199,33,1163,543,39,109,1,1,0.525
+200,33,1164,542,40,109,1,1,0.56098
+201,33,1166,542,40,109,1,1,0.56098
+202,33,1166,543,40,105,1,1,0.36769
+203,33,1166,544,41,102,1,1,0.365
+204,33,1166,545,44,102,1,1,0.4205
+205,33,1167,547,46,101,1,1,0.45724
+206,33,1168,551,45,101,1,1,0.43521
+207,33,1170,554,43,102,1,1,0.56818
+208,33,1170,553,43,103,1,1,0.49126
+209,33,1170,553,43,103,1,1,0.56818
+210,33,1170,552,44,103,1,1,0.57778
+211,33,1170,552,45,102,1,1,0.56522
+212,33,1170,551,45,106,1,1,0.58696
+213,33,1171,551,44,109,1,1,0.55556
+214,33,1172,551,44,112,1,1,0.57778
+215,33,1173,551,46,114,1,1,0.57447
+216,33,1175,551,48,117,1,1,0.61224
+217,33,1177,551,50,117,1,1,0.60784
+218,33,1180,556,48,111,1,1,0.59184
+219,33,1182,556,49,112,1,1,0.6
+220,33,1184,556,49,117,1,1,0.58
+221,33,1189,556,48,117,1,1,0.59184
+222,33,1191,556,49,118,1,1,0.58
+223,33,1193,556,50,119,1,1,0.58824
+224,33,1196,556,50,121,1,1,0.58824
+225,33,1198,556,51,122,1,1,0.59615
+226,33,1200,557,52,122,1,1,0.60377
+227,33,1203,557,52,124,1,1,0.60377
+228,33,1205,557,53,125,1,1,0.61111
+229,33,1207,557,54,126,1,1,0.6
+230,33,1210,558,55,127,1,1,0.625
+231,33,1211,557,56,129,1,1,0.61404
+232,33,1213,557,56,130,1,1,0.61404
+233,33,1218,556,56,132,1,1,0.61404
+234,33,1223,556,57,133,1,1,0.62069
+235,33,1225,556,57,132,1,1,0.56897
+236,33,1228,557,56,131,1,1,0.52632
+237,33,1235,557,57,135,1,1,0.55172
+238,33,1242,557,58,140,1,1,0.57627
+239,33,1246,560,59,140,1,1,0.53333
+240,33,1256,560,59,141,1,1,0.56667
+241,33,1262,562,60,141,1,1,0.54098
+242,33,1269,564,60,142,1,1,0.54098
+243,33,1275,566,61,142,1,1,0.51613
+244,33,1282,568,61,143,1,1,0.5
+245,33,1289,570,61,144,1,1,0.5
+246,33,1298,566,62,149,1,1,0.52381
+247,33,1307,568,62,148,1,1,0.53968
+248,33,1316,570,62,147,1,1,0.50794
+249,33,1325,572,62,147,1,1,0.47619
+250,33,1332,571,62,146,1,1,0.4127
+251,33,1340,571,62,144,1,1,0.36508
+252,33,1348,572,63,146,1,1,0.32812
+253,33,1357,574,63,148,1,1,0.29688
+254,33,1366,576,64,150,1,1,0.24615
+255,33,1375,574,65,157,1,1,0.21212
+256,33,1385,572,65,158,1,1,0.18182
+257,33,1397,575,65,159,1,1,0.16667
+258,33,1407,572,66,169,1,1,0.13433
+259,33,1419,573,66,170,1,1,0.1194
+260,33,1428,574,65,171,1,1,0.045455
+261,33,1443,575,65,173,1,1,0.075758
+262,33,1456,574,65,173,1,1,0.075758
+263,33,1468,574,66,177,1,1,0.074627
+264,33,1480,574,68,181,1,1,0.11594
+265,33,1492,576,73,181,1,1,0.17568
+266,33,1504,579,78,182,1,1,0.27848
+267,33,1520,581,78,182,1,1,0.35443
+268,33,1537,588,71,182,1,1,0.45833
+269,33,1553,594,64,179,1,1,0.53846
+270,33,1567,591,64,187,1,1,0.61538
+271,33,1588,594,65,195,1,1,0.57576
+272,33,1600,594,67,200,1,1,0.73529
+273,33,1612,595,69,205,1,1,0.77143
+274,33,1625,596,70,210,1,1,0.80282
+275,33,1640,600,80,209,1,1,0.7284
+276,33,1655,601,81,218,1,1,0.76829
+277,33,1671,606,90,216,1,1,0.72527
+278,33,1684,609,103,219,1,1,0.70192
+279,33,1700,611,103,225,1,1,0.77885
+280,33,1717,613,105,228,1,1,0.83962
+281,33,1734,614,101,230,1,1,0.94118
+282,33,1752,611,104,238,1,1,0.98095
+283,33,1776,614,101,239,1,1,0.96078
+284,33,1800,615,100,242,1,1,1
+285,33,1825,616,98,245,1,1,0.9697
+286,33,1850,617,96,249,1,1,0.73196
+287,33,1870,618,96,249,1,1,0.52577
+288,33,1892,616,96,249,1,1,0.29897
+13,34,1548,510,13,35,1,1,0.47222
+14,34,1548,506,11,37,1,1,0.34211
+15,34,1551,506,11,37,1,1,0.34211
+16,34,1551,509,11,37,1,1,0.42105
+17,34,1552,507,10,37,1,1,0.36603
+18,34,1551,506,15,40,1,1,0.30183
+19,34,1552,506,14,40,1,1,0.30407
+20,34,1552,504,12,32,1,1,0.53613
+21,34,1554,507,12,38,1,1,0.40237
+22,34,1552,506,14,34,1,1,0.50286
+23,34,1554,507,13,35,1,1,0.55556
+24,34,1552,504,18,42,1,1,0.68911
+25,34,1555,511,13,42,1,1,0.8505
+26,34,1555,511,14,43,1,1,0.73636
+27,34,1557,515,14,42,1,1,0.43256
+28,34,1558,514,12,45,1,1,0.45819
+29,34,1559,520,14,50,1,1,0.26013
+30,34,1558,519,14,49,1,1,0.35467
+31,34,1558,523,15,44,1,1,0.37917
+32,34,1561,527,14,43,1,1,0.27879
+33,34,1555,512,18,42,1,1,0.42595
+34,34,1558,516,19,50,1,1,0.23529
+35,34,1564,511,14,44,1,1,0.23704
+36,34,1561,508,15,54,1,1,0.4875
+37,34,1561,510,19,52,1,1,0.5434
+38,34,1561,502,15,58,1,1,0.90678
+39,34,1566,506,21,55,1,1,0.67857
+40,34,1565,506,16,48,1,1,1
+41,34,1568,509,16,48,1,1,1
+42,34,1569,510,17,48,1,1,1
+43,34,1569,512,15,50,1,1,1
+44,34,1571,510,19,54,1,1,0.81091
+45,34,1572,515,17,54,1,1,0.78081
+46,34,1572,515,18,54,1,1,0.6555
+47,34,1573,516,18,54,1,1,0.54928
+48,34,1574,519,18,54,1,1,0.46411
+49,34,1575,522,19,54,1,1,0.32091
+50,34,1570,516,23,53,1,1,0.073302
+51,34,1570,519,23,53,1,1,0.024691
+52,34,1571,520,23,53,1,1,0.027778
+53,34,1572,521,24,53,1,1,0.047407
+54,34,1574,522,24,53,1,1,0.044444
+55,34,1577,523,24,52,1,1,0.030189
+56,34,1576,521,24,53,1,1,0.041481
+57,34,1576,520,23,53,1,1,0.088735
+58,34,1576,518,22,54,1,1,0.19447
+59,34,1575,517,23,55,1,1,0.38095
+60,34,1575,515,22,56,1,1,0.53242
+61,34,1575,514,21,56,1,1,0.69537
+62,34,1575,513,21,57,1,1,0.82994
+63,34,1577,500,20,54,1,1,0.67792
+64,34,1578,514,20,54,1,1,0.92381
+65,34,1578,513,21,54,1,1,0.96116
+66,34,1576,507,22,54,1,1,0.69012
+67,34,1575,516,22,54,1,1,1
+68,34,1573,511,21,53,1,1,1
+69,34,1573,518,22,53,1,1,1
+70,34,1572,514,21,54,1,1,1
+71,34,1570,515,21,54,1,1,0.95455
+72,34,1568,516,21,54,1,1,1
+73,34,1567,517,21,54,1,1,1
+74,34,1565,518,21,54,1,1,1
+75,34,1564,520,21,53,1,1,1
+76,34,1561,519,21,53,1,1,1
+77,34,1558,519,21,53,1,1,1
+78,34,1555,518,21,53,1,1,1
+79,34,1553,518,21,53,1,1,1
+80,34,1550,518,21,53,1,1,1
+81,34,1547,517,21,53,1,1,1
+82,34,1545,517,21,53,1,1,1
+83,34,1542,516,21,53,1,1,1
+84,34,1539,516,21,53,1,1,1
+85,34,1537,516,21,53,1,1,1
+86,34,1533,517,21,53,1,1,1
+87,34,1530,518,21,53,1,1,1
+88,34,1526,519,22,53,1,1,1
+89,34,1523,520,22,53,1,1,1
+90,34,1520,521,22,53,1,1,1
+91,34,1516,522,22,53,1,1,1
+92,34,1513,523,22,53,1,1,1
+93,34,1509,524,23,53,1,1,1
+94,34,1506,525,23,53,1,1,1
+95,34,1503,527,23,53,1,1,1
+96,34,1499,527,23,53,1,1,0.25
+97,34,1496,527,22,54,1,1,1
+98,34,1493,527,22,55,1,1,1
+99,34,1490,527,21,56,1,1,1
+100,34,1486,528,22,55,1,1,1
+101,34,1483,528,21,56,1,1,1
+102,34,1480,528,21,57,1,1,1
+103,34,1477,528,20,58,1,1,1
+104,34,1474,529,20,58,1,1,1
+105,34,1469,531,21,59,1,1,1
+106,34,1469,530,19,58,1,1,1
+107,34,1464,529,19,58,1,1,1
+108,34,1460,529,19,58,1,1,1
+109,34,1455,529,20,57,1,1,1
+110,34,1451,529,20,57,1,1,1
+111,34,1447,529,20,57,1,1,1
+112,34,1443,530,20,57,1,1,1
+113,34,1440,531,19,57,1,1,1
+114,34,1436,532,19,57,1,1,1
+115,34,1433,533,19,57,1,1,1
+116,34,1428,530,20,58,1,1,1
+117,34,1424,530,20,58,1,1,1
+118,34,1420,530,20,58,1,1,0.95642
+119,34,1417,530,20,58,1,1,0.82244
+120,34,1413,530,20,58,1,1,0.77805
+121,34,1410,530,20,59,1,1,1
+122,34,1406,529,20,59,1,1,1
+123,34,1402,529,20,58,1,1,0.77805
+124,34,1398,528,20,58,1,1,0.64487
+125,34,1395,528,20,58,1,1,0.46731
+126,34,1392,528,20,58,1,1,0.33414
+127,34,1390,528,20,58,1,1,0.2155
+128,34,1386,528,20,58,1,1,0.18725
+129,34,1382,528,20,58,1,1,0.16061
+130,34,1378,528,20,57,1,1,0.17898
+131,34,1374,528,20,57,1,1,0.13793
+132,34,1370,528,20,57,1,1,0.13793
+133,34,1366,527,20,57,1,1,0.17241
+134,34,1363,527,20,57,1,1,0.15517
+135,34,1360,526,20,57,1,1,0.17241
+136,34,1357,526,20,57,1,1,0.15517
+137,34,1354,526,20,57,1,1,0.15517
+138,34,1350,526,20,57,1,1,0.13793
+139,34,1346,526,20,57,1,1,0.13136
+140,34,1343,526,20,57,1,1,0.15107
+141,34,1339,526,20,57,1,1,0.13957
+142,34,1336,527,20,57,1,1,0.19622
+143,34,1333,527,20,57,1,1,0.28325
+144,34,1330,528,20,57,1,1,0.36289
+145,34,1327,529,20,57,1,1,0.44581
+146,34,1325,530,20,57,1,1,0.57553
+147,34,1320,530,20,57,1,1,0.57389
+148,34,1316,531,20,57,1,1,0.61905
+149,34,1311,531,20,57,1,1,0.57143
+150,34,1307,532,20,57,1,1,0.52381
+151,34,1303,533,20,57,1,1,0.52381
+152,34,1297,532,20,57,1,1,0.42857
+153,34,1291,531,20,57,1,1,0.33333
+154,34,1285,530,20,57,1,1,0.2381
+155,34,1279,529,20,58,1,1,0.14609
+156,34,1274,529,21,58,1,1,0.13867
+157,34,1270,529,21,58,1,1,0.13867
+158,34,1266,529,21,59,1,1,0.13788
+159,34,1262,529,21,59,1,1,0.13788
+160,34,1258,529,21,60,1,1,0.13711
+161,34,1254,529,21,60,1,1,0.13636
+162,34,1250,529,21,60,1,1,0.13636
+163,34,1246,530,21,60,1,1,0.045455
+164,34,1242,530,21,60,1,1,0.045455
+165,34,1237,530,22,61,1,1,0.086957
+166,34,1233,530,22,61,1,1,0.086957
+167,34,1229,530,22,61,1,1,0.086957
+168,34,1225,530,22,62,1,1,0.17391
+169,34,1221,530,22,62,1,1,0.13941
+170,34,1217,531,22,62,1,1,0.18634
+171,34,1213,531,22,62,1,1,0.14079
+172,34,1209,531,22,63,1,1,0.11073
+173,34,1205,531,22,63,1,1,0.030571
+174,34,1201,531,22,63,1,1,0.040761
+175,34,1196,531,23,64,1,1,0.048077
+176,34,1192,531,23,64,1,1,0.069231
+177,34,1188,532,23,64,1,1,0.040385
+178,34,1184,532,23,64,1,1,0.029487
+179,34,1180,532,23,64,1,1,0.0012821
+180,34,1176,532,23,65,1,1,0.0031566
+181,34,1172,532,23,65,1,1,0
+182,34,1168,532,23,66,1,1,0
+183,34,1164,532,23,66,1,1,0
+184,34,1160,533,23,66,1,1,0
+185,34,1157,533,23,66,1,1,0
+186,34,1154,533,23,66,1,1,0
+187,34,1151,533,23,67,1,1,0
+188,34,1148,534,23,66,1,1,0
+189,34,1146,534,23,67,1,1,0.00061275
+190,34,1143,534,23,67,1,1,0
+191,34,1140,534,23,68,1,1,0
+192,34,1137,535,23,67,1,1,0.041667
+193,34,1134,535,23,68,1,1,0.047705
+194,34,1132,535,23,68,1,1,0.013889
+195,34,1129,535,23,69,1,1,0.29286
+196,34,1126,536,23,68,1,1,0.021739
+197,34,1123,536,23,69,1,1,0.45833
+198,34,1120,536,23,69,1,1,0.54167
+199,34,1118,537,23,69,1,1,0.58333
+200,34,1115,537,23,70,1,1,0.75
+201,34,1112,538,24,70,1,1,0.8
+202,34,1110,539,23,70,1,1,0.875
+203,34,1107,539,24,71,1,1,0.88
+204,34,1105,540,23,71,1,1,1
+205,34,1102,541,24,71,1,1,0.96444
+206,34,1100,542,24,71,1,1,0.98222
+207,34,1098,542,24,71,1,1,0.98333
+208,34,1096,542,24,71,1,1,0.013889
+209,34,1094,542,24,72,1,1,0.012603
+210,34,1092,542,25,72,1,1,0.027397
+211,34,1091,542,24,72,1,1,0.027397
+212,34,1089,542,24,73,1,1,0.034054
+213,34,1087,542,25,73,1,1,0.032744
+214,34,1085,542,25,73,1,1,0.045738
+215,34,1084,542,24,74,1,1,0.046933
+216,34,1082,542,24,74,1,1,0.061333
+217,34,1080,542,25,74,1,1,0.058974
+218,34,1078,542,25,75,1,1,0.058198
+219,34,1077,542,24,75,1,1,0.072632
+220,34,1075,542,25,75,1,1,0.072874
+221,34,1073,542,25,76,1,1,0.10939
+222,34,1071,542,25,76,1,1,0.077922
+223,34,1070,543,25,76,1,1,0.064935
+224,34,1070,543,24,78,1,1,0.063291
+225,34,1071,543,22,80,1,1,0.061728
+226,34,1072,544,20,81,1,1,0.036585
+227,34,1070,545,23,78,1,1,0.025316
+228,34,1069,546,25,75,1,1,0.011134
+229,34,1068,545,26,76,1,1,0.021164
+230,34,1068,545,26,77,1,1,0.019943
+231,34,1068,544,26,78,1,1,0.029536
+232,34,1068,544,26,79,1,1,0.029167
+233,34,1067,543,27,80,1,1,0.038801
+234,34,1067,543,27,81,1,1,0.04007
+235,34,1067,543,27,81,1,1,0.030052
+236,34,1067,542,27,83,1,1,0.040816
+237,34,1066,542,28,83,1,1,0.041051
+238,34,1066,541,28,85,1,1,0.05012
+239,34,1066,541,28,85,1,1,0.077787
+240,34,1066,541,29,86,1,1,0.076628
+241,34,1068,541,30,86,1,1,0.051539
+242,34,1071,541,30,86,1,1,0.046348
+243,34,1074,541,31,87,1,1,0.022727
+244,34,1077,541,31,87,1,1,0.034091
+245,34,1080,541,32,87,1,1,0.053719
+246,34,1083,541,32,88,1,1,0.052094
+247,34,1085,542,33,87,1,1,0.039439
+54,35,1053,502,13,29,1,1,1
+55,35,1052,502,13,30,1,1,1
+56,35,1050,500,14,30,1,1,1
+57,35,1049,499,14,30,1,1,1
+58,35,1048,497,14,31,1,1,1
+59,35,1047,496,14,31,1,1,1
+60,35,1044,495,14,31,1,1,1
+61,35,1042,494,14,31,1,1,1
+62,35,1040,494,14,31,1,1,1
+63,35,1038,495,15,30,1,1,1
+64,35,1037,494,16,32,1,1,1
+65,35,1036,496,16,29,1,1,1
+66,35,1034,496,15,29,1,1,1
+67,35,1032,496,14,29,1,1,1
+68,35,1031,496,13,30,1,1,1
+69,35,1031,497,14,31,1,1,1
+70,35,1028,495,14,32,1,1,0.95556
+71,35,1025,494,14,32,1,1,0.97374
+72,35,1022,493,14,32,1,1,1
+73,35,1019,492,14,33,1,1,0.97059
+74,35,1017,492,14,33,1,1,0.97059
+75,35,1013,493,17,36,1,1,0.86486
+76,35,1010,492,15,33,1,1,0.97059
+77,35,1007,492,13,32,1,1,0.9697
+78,35,1004,492,12,32,1,1,0.9697
+79,35,1001,491,11,32,1,1,1
+80,35,996,491,12,32,1,1,1
+81,35,991,491,13,32,1,1,1
+82,35,987,492,14,31,1,1,0.9375
+83,35,985,493,13,31,1,1,0.875
+84,35,980,493,13,31,1,1,0.78125
+85,35,976,494,13,31,1,1,0.78125
+86,35,972,494,13,31,1,1,0.84375
+87,35,968,495,13,31,1,1,0.875
+88,35,965,496,11,32,1,1,0.87879
+89,35,962,497,10,33,1,1,0.88235
+90,35,957,499,10,32,1,1,0.90909
+91,35,952,501,11,31,1,1,0.8125
+92,35,947,503,12,30,1,1,0.93548
+93,35,942,505,13,29,1,1,0.96667
+94,35,937,507,14,28,1,1,1
+95,35,933,509,14,28,1,1,0.93103
+96,35,930,510,13,29,1,1,0.86667
+97,35,926,510,12,29,1,1,0.86667
+98,35,921,513,12,30,1,1,0.77419
+99,35,918,512,11,30,1,1,0.80645
+100,35,913,511,11,30,1,1,0.87097
+101,35,908,510,12,31,1,1,0.875
+102,35,903,510,12,31,1,1,0.875
+103,35,898,509,13,32,1,1,0.84848
+104,35,894,508,12,32,1,1,0.84848
+105,35,889,508,13,32,1,1,0.81818
+106,35,884,507,13,33,1,1,0.79412
+107,35,879,506,14,34,1,1,0.77143
+108,35,875,506,14,34,1,1,0.74286
+109,35,871,507,14,34,1,1,0.68571
+110,35,866,505,14,34,1,1,0.74286
+111,35,861,505,13,34,1,1,0.82041
+112,35,856,506,13,33,1,1,0.79202
+113,35,851,507,13,32,1,1,0.80519
+114,35,846,511,11,30,1,1,0.77419
+115,35,841,511,12,30,1,1,0.76179
+116,35,834,508,14,32,1,1,0.8303
+117,35,827,507,15,32,1,1,0.89583
+118,35,821,507,16,32,1,1,0.89305
+119,35,818,507,15,31,1,1,0.89258
+120,35,813,507,15,31,1,1,0.91406
+121,35,808,507,16,32,1,1,0.89305
+122,35,802,508,18,33,1,1,0.87616
+123,35,796,509,17,32,1,1,1
+124,35,791,509,15,32,1,1,1
+125,35,785,509,15,32,1,1,1
+126,35,780,510,15,32,1,1,1
+127,35,775,511,15,32,1,1,1
+128,35,769,512,15,31,1,1,1
+129,35,764,513,15,31,1,1,1
+130,35,759,512,15,32,1,1,1
+131,35,754,511,16,33,1,1,1
+132,35,749,510,16,34,1,1,1
+133,35,744,510,17,34,1,1,1
+134,35,740,511,16,34,1,1,1
+135,35,735,512,15,34,1,1,1
+136,35,730,511,14,34,1,1,1
+137,35,725,511,13,33,1,1,1
+138,35,720,511,12,32,1,1,1
+139,35,715,511,12,32,1,1,0.53846
+140,35,710,510,12,32,1,1,0.46154
+141,35,705,510,12,32,1,1,0.38462
+142,35,700,510,12,32,1,1,0.30769
+143,35,695,510,12,32,1,1,0.23077
+144,35,691,510,11,32,1,1,0.16667
+145,35,686,509,11,33,1,1,0.083333
+146,35,681,509,11,33,1,1,0
+147,35,676,509,11,33,1,1,0
+148,35,671,509,11,33,1,1,0
+149,35,667,509,11,33,1,1,0
+150,35,662,509,11,33,1,1,0
+151,35,656,509,11,33,1,1,0
+152,35,650,510,12,32,1,1,0
+153,35,645,511,12,32,1,1,0
+154,35,638,511,12,32,1,1,0
+155,35,631,511,13,32,1,1,0
+156,35,625,511,13,32,1,1,0
+157,35,618,511,14,32,1,1,0
+158,35,612,512,14,32,1,1,0
+159,35,607,513,15,31,1,1,0
+160,35,601,513,15,32,1,1,0
+161,35,596,514,15,32,1,1,0
+162,35,591,515,14,32,1,1,0
+163,35,586,515,14,33,1,1,0
+164,35,581,516,13,33,1,1,0
+165,35,576,517,13,33,1,1,0
+166,35,571,518,13,34,1,1,0
+167,35,566,517,13,35,1,1,0
+168,35,562,517,12,35,1,1,0
+169,35,558,517,12,35,1,1,1
+170,35,553,516,12,35,1,1,1
+171,35,549,516,12,35,1,1,1
+172,35,545,515,12,35,1,1,0
+173,35,541,515,12,35,1,1,0
+174,35,537,514,12,35,1,1,0
+175,35,533,514,12,35,1,1,0
+176,35,529,513,12,35,1,1,0
+177,35,525,513,12,35,1,1,0
+178,35,521,512,12,35,1,1,0
+179,35,517,512,12,35,1,1,0
+180,35,513,513,12,35,1,1,0
+181,35,510,514,12,36,1,1,0.076923
+182,35,506,515,12,36,1,1,0.076923
+183,35,502,516,12,36,1,1,0.15385
+184,35,498,517,13,37,1,1,1
+185,35,494,518,13,37,1,1,1
+186,35,490,519,13,37,1,1,1
+187,35,486,520,14,38,1,1,1
+188,35,481,521,14,38,1,1,1
+189,35,476,522,14,38,1,1,1
+190,35,471,522,16,37,1,1,1
+191,35,467,522,18,37,1,1,1
+192,35,463,522,18,37,1,1,1
+193,35,460,523,17,37,1,1,1
+194,35,457,523,16,37,1,1,1
+195,35,454,524,16,37,1,1,1
+196,35,450,524,16,38,1,1,1
+197,35,447,525,15,37,1,1,1
+198,35,444,525,14,38,1,1,1
+199,35,441,526,14,38,1,1,1
+200,35,438,525,14,38,1,1,1
+201,35,435,525,14,38,1,1,1
+202,35,432,525,14,38,1,1,1
+203,35,430,526,15,37,1,1,1
+1,36,624,521,16,70,1,1,0.81442
+2,36,625,511,16,70,1,1,0.80116
+3,36,625,525,16,70,1,1,0.74316
+4,36,625,522,16,70,1,1,0.68683
+5,36,625,517,16,70,1,1,0.69677
+6,36,624,529,16,70,1,1,0.71168
+7,36,623,522,15,71,1,1,0.78819
+8,36,622,529,15,71,1,1,0.78125
+9,36,622,527,15,71,1,1,0.73958
+10,36,619,522,15,73,1,1,0.80405
+11,36,617,528,15,73,1,1,0.78378
+12,36,615,528,15,73,1,1,0.83784
+13,36,616,515,15,73,1,1,0.68074
+14,36,615,523,15,73,1,1,1
+15,36,615,521,14,72,1,1,0.49041
+16,36,612,521,17,71,1,1,0.52932
+17,36,610,524,17,71,1,1,0.55556
+18,36,610,523,16,73,1,1,0.53498
+19,36,609,523,13,71,1,1,0.625
+20,36,607,523,14,77,1,1,0.65128
+21,36,607,523,14,76,1,1,0.55671
+22,36,603,526,17,75,1,1,0.63743
+23,36,602,527,17,75,1,1,0.59211
+24,36,599,529,17,75,1,1,0.63743
+25,36,599,532,17,75,1,1,0.58553
+26,36,598,532,17,75,1,1,0.50146
+27,36,595,534,17,75,1,1,0.53947
+28,36,595,537,17,75,1,1,0.53216
+29,36,595,537,17,75,1,1,0.45614
+30,36,592,541,16,79,1,1,0.5
+31,36,592,553,16,79,1,1,0.45809
+32,36,588,549,18,78,1,1,0.50167
+33,36,586,538,18,78,1,1,0.2072
+34,36,585,544,18,78,1,1,0.46436
+35,36,584,533,19,77,1,1,0.47949
+36,36,582,533,21,76,1,1,0.47757
+37,36,579,527,21,76,1,1,0.57025
+38,36,578,528,21,76,1,1,0.54723
+39,36,578,522,21,76,1,1,0.54545
+40,36,575,524,21,76,1,1,0.56257
+41,36,576,522,20,79,1,1,0.525
+42,36,574,524,20,79,1,1,0.5
+43,36,571,527,19,81,1,1,0.56402
+44,36,570,529,18,79,1,1,0.52237
+45,36,568,528,18,79,1,1,0.57237
+46,36,567,529,18,79,1,1,0.51513
+47,36,567,533,18,79,1,1,0.42763
+48,36,564,532,17,82,1,1,0.56961
+49,36,561,530,16,87,1,1,0.76939
+50,36,559,530,17,88,1,1,0.6985
+51,36,557,529,16,90,1,1,0.73626
+52,36,555,531,18,87,1,1,0.65012
+53,36,553,531,18,86,1,1,0.21839
+54,36,552,531,17,86,1,1,0.20498
+55,36,552,531,19,85,1,1,0.16686
+56,36,547,531,22,84,1,1,0.17903
+57,36,545,530,22,84,1,1,0.19437
+58,36,543,528,22,84,1,1,0.17391
+59,36,540,528,22,84,1,1,0.16931
+60,36,536,528,22,84,1,1,0.20614
+61,36,533,530,22,84,1,1,0.16368
+62,36,533,524,22,84,1,1,0.14987
+63,36,528,538,22,84,1,1,0.16368
+64,36,527,523,22,84,1,1,0.2046
+65,36,524,529,22,84,1,1,0.15806
+66,36,523,537,22,84,1,1,0.16164
+67,36,519,525,22,84,1,1,0.094118
+68,36,513,533,22,84,1,1,0.10588
+69,36,510,528,22,84,1,1,0.12174
+70,36,506,529,22,84,1,1,0.12327
+71,36,504,529,22,84,1,1,0.10588
+72,36,500,529,22,84,1,1,0.093095
+73,36,495,526,22,84,1,1,0.11049
+74,36,492,527,22,84,1,1,0.086445
+75,36,488,527,22,84,1,1,0.10639
+76,36,484,526,22,84,1,1,0.10128
+77,36,478,526,22,84,1,1,0.10281
+78,36,473,525,22,84,1,1,0.13606
+79,36,469,524,22,84,1,1,0.1468
+80,36,464,525,22,84,1,1,0.18977
+81,36,458,528,22,84,1,1,0.16266
+82,36,454,528,22,84,1,1,0.1376
+83,36,447,528,22,84,1,1,0.15396
+84,36,440,528,22,84,1,1,0.1156
+85,36,433,528,26,83,1,1,0.14286
+86,36,426,529,26,83,1,1,0.15476
+87,36,424,529,26,83,1,1,0.16667
+88,36,418,534,26,83,1,1,0.10714
+89,36,414,531,26,83,1,1,0.14286
+90,36,409,533,23,82,1,1,0.18072
+91,36,400,535,25,79,1,1,0.2
+92,36,395,534,27,91,1,1,0.18245
+93,36,389,540,25,91,1,1,0.18102
+94,36,380,544,26,93,1,1,0.14894
+95,36,378,544,23,94,1,1,0.21623
+96,36,372,548,24,95,1,1,0.19292
+97,36,366,546,24,95,1,1,0.1775
+98,36,358,548,23,95,1,1,0.20443
+99,36,350,548,25,95,1,1,0.16627
+100,36,341,551,27,93,1,1,0.17021
+101,36,335,546,27,93,1,1,0.24658
+102,36,327,549,27,93,1,1,0.20061
+103,36,321,550,27,93,1,1,0.17477
+104,36,314,548,27,93,1,1,0.18617
+105,36,306,549,27,93,1,1,0.17021
+106,36,299,547,27,93,1,1,0.22188
+107,36,292,546,27,93,1,1,0.2367
+108,36,286,545,27,93,1,1,0.28419
+109,36,277,547,27,93,1,1,0.2747
+110,36,271,545,27,93,1,1,0.30319
+111,36,262,546,27,93,1,1,0.30091
+112,36,254,547,27,93,1,1,0.31117
+113,36,246,549,28,92,1,1,0.3274
+114,36,237,551,29,91,1,1,0.32283
+115,36,229,548,29,91,1,1,0.37971
+116,36,219,552,32,90,1,1,0.36663
+117,36,209,552,35,89,1,1,0.4284
+118,36,200,553,39,88,1,1,0.51039
+119,36,191,554,42,87,1,1,0.56527
+120,36,183,556,41,94,1,1,0.58396
+121,36,172,555,46,97,1,1,0.62571
+122,36,165,557,46,103,1,1,0.61129
+123,36,155,559,46,107,1,1,0.57801
+124,36,145,560,46,105,1,1,0.556
+125,36,139,561,45,114,1,1,0.58015
+126,36,130,563,44,121,1,1,0.54171
+127,36,122,565,43,122,1,1,0.52365
+128,36,114,564,42,125,1,1,0.53027
+129,36,105,564,42,125,1,1,0.53008
+130,36,95,565,42,125,1,1,0.49631
+131,36,86,567,42,125,1,1,0.45681
+132,36,76,568,42,125,1,1,0.42986
+133,36,69,569,42,125,1,1,0.3935
+134,36,58,571,46,124,1,1,0.34945
+135,36,49,573,46,124,1,1,0.31438
+136,36,41,571,45,119,1,1,0.31667
+137,36,32,573,45,119,1,1,0.30833
+138,36,21,570,47,112,1,1,0.35398
+139,36,12,570,47,106,1,1,0.38318
+140,36,4,572,47,106,1,1,0.37383
+141,36,-7,573,47,106,1,1,0.31153
+142,36,-13,575,47,106,1,1,0.33002
+143,36,-22,572,47,106,1,1,0.52083
+144,36,-30,577,47,106,1,1,0.35417
+66,37,762,511,17,45,1,1,0.78261
+67,37,763,502,17,48,1,1,1
+68,37,760,506,17,48,1,1,0.90023
+69,37,761,507,15,47,1,1,0.8776
+70,37,756,509,16,45,1,1,0.88235
+71,37,754,507,16,45,1,1,0.8312
+72,37,750,509,16,45,1,1,0.94118
+73,37,749,506,16,45,1,1,0.94373
+74,37,747,509,15,42,1,1,1
+75,37,743,507,15,42,1,1,1
+76,37,742,505,15,42,1,1,1
+77,37,738,506,15,42,1,1,1
+78,37,734,505,15,42,1,1,1
+79,37,732,505,15,42,1,1,1
+80,37,728,506,15,42,1,1,1
+81,37,724,504,15,42,1,1,1
+82,37,720,506,15,42,1,1,1
+83,37,718,506,15,42,1,1,1
+84,37,712,506,14,42,1,1,1
+85,37,708,509,17,41,1,1,1
+86,37,704,509,17,41,1,1,1
+87,37,700,511,17,41,1,1,1
+88,37,698,512,17,41,1,1,1
+89,37,693,512,17,41,1,1,1
+90,37,688,515,17,41,1,1,1
+91,37,684,519,17,41,1,1,1
+92,37,682,519,17,41,1,1,1
+93,37,676,521,17,41,1,1,1
+94,37,672,522,17,41,1,1,1
+95,37,668,523,17,41,1,1,1
+96,37,661,522,17,47,1,1,1
+97,37,659,520,17,47,1,1,1
+98,37,655,523,17,47,1,1,1
+99,37,649,521,17,47,1,1,1
+100,37,645,523,17,47,1,1,1
+101,37,642,521,17,47,1,1,1
+102,37,636,523,17,47,1,1,1
+103,37,631,521,17,47,1,1,1
+104,37,627,522,17,47,1,1,0.94444
+105,37,622,522,17,47,1,1,0.94444
+106,37,617,521,17,47,1,1,0.94444
+107,37,612,522,17,47,1,1,1
+108,37,608,521,17,47,1,1,0.94444
+109,37,605,522,17,47,1,1,0.83333
+110,37,598,521,17,47,1,1,0.94444
+111,37,594,520,17,47,1,1,0.94444
+112,37,589,521,17,47,1,1,0.88889
+113,37,583,522,17,47,1,1,0.94444
+114,37,576,523,17,47,1,1,1
+115,37,571,521,17,47,1,1,1
+116,37,564,526,17,47,1,1,1
+117,37,560,524,17,47,1,1,1
+118,37,553,526,17,47,1,1,1
+119,37,549,527,17,47,1,1,1
+120,37,543,528,17,47,1,1,1
+121,37,537,530,17,47,1,1,1
+122,37,531,531,17,47,1,1,1
+123,37,527,532,17,47,1,1,1
+124,37,521,529,17,47,1,1,1
+125,37,514,529,17,47,1,1,1
+126,37,509,531,17,47,1,1,1
+127,37,500,530,20,53,1,1,0.95238
+128,37,496,529,18,55,1,1,1
+129,37,490,530,15,55,1,1,1
+130,37,486,529,15,57,1,1,1
+131,37,480,529,15,59,1,1,1
+132,37,476,530,18,58,1,1,1
+133,37,469,530,18,58,1,1,1
+134,37,462,532,18,58,1,1,1
+135,37,457,532,18,58,1,1,1
+136,37,450,531,18,58,1,1,1
+137,37,447,531,18,58,1,1,1
+138,37,441,530,18,58,1,1,1
+139,37,437,530,18,58,1,1,1
+140,37,431,530,18,58,1,1,1
+141,37,428,531,18,58,1,1,1
+142,37,423,529,18,58,1,1,1
+143,37,417,527,18,58,1,1,0.94737
+144,37,411,530,18,58,1,1,0.94737
+145,37,408,528,18,58,1,1,0.84211
+146,37,402,528,18,58,1,1,0.89474
+147,37,396,529,18,58,1,1,0.89474
+148,37,390,530,18,58,1,1,0.94737
+149,37,385,530,18,58,1,1,0.89474
+150,37,377,531,17,60,1,1,0.94627
+151,37,369,534,20,59,1,1,0.85714
+152,37,364,534,20,59,1,1,0.95238
+153,37,357,536,20,59,1,1,0.90476
+154,37,350,535,19,57,1,1,0.90172
+155,37,339,537,22,59,1,1,0.69565
+156,37,335,539,18,60,1,1,0.73684
+157,37,330,540,18,60,1,1,0.84211
+158,37,323,542,18,60,1,1,0.78947
+159,37,315,543,18,60,1,1,0.73684
+160,37,309,546,18,60,1,1,0.73684
+161,37,301,547,19,62,1,1,0.65
+162,37,299,546,19,62,1,1,0.85
+163,37,290,548,19,62,1,1,0.65
+164,37,285,547,19,62,1,1,0.7
+165,37,279,550,19,62,1,1,0.65
+166,37,273,550,19,62,1,1,0.65
+167,37,266,550,19,62,1,1,0.55
+168,37,261,549,19,62,1,1,0.55
+169,37,256,550,19,62,1,1,0.6
+170,37,249,550,19,62,1,1,0.5
+171,37,243,550,19,62,1,1,0.45
+172,37,236,548,18,64,1,1,0.31579
+173,37,234,547,18,64,1,1,0.47368
+174,37,231,545,17,66,1,1,0.56882
+175,37,228,544,17,67,1,1,0.68627
+176,37,224,545,17,67,1,1,0.73856
+177,37,217,543,17,67,1,1,0.64542
+178,37,212,546,17,67,1,1,0.63399
+179,37,207,545,17,67,1,1,0.63971
+180,37,201,547,17,67,1,1,0.5817
+181,37,198,547,17,67,1,1,0.69118
+182,37,190,548,21,66,1,1,0.57598
+183,37,185,550,21,66,1,1,0.56988
+184,37,181,552,21,66,1,1,0.60923
+185,37,173,555,21,66,1,1,0.47083
+186,37,168,555,21,66,1,1,0.43555
+187,37,163,558,21,66,1,1,0.41791
+188,37,151,559,21,66,1,1,0.11805
+189,37,150,563,21,66,1,1,0.22727
+190,37,146,559,19,64,1,1,0.24923
+191,37,142,561,21,66,1,1,0.31615
+192,37,137,559,20,70,1,1,0.30248
+193,37,132,562,20,68,1,1,0.23741
+194,37,125,564,20,71,1,1,0.12037
+195,37,122,564,20,71,1,1,0.17857
+196,37,116,567,20,71,1,1,0.060847
+197,37,110,566,20,72,1,1,0.027397
+198,37,108,567,20,72,1,1,0.12003
+199,37,102,569,20,72,1,1,0.013699
+200,37,96,569,20,72,1,1,0.013699
+201,37,87,568,20,75,1,1,0.085213
+202,37,81,568,20,77,1,1,0.18681
+203,37,72,571,23,75,1,1,0.30099
+204,37,66,574,25,74,1,1,0.34615
+205,37,62,574,25,75,1,1,0.30769
+206,37,58,575,25,75,1,1,0.30769
+207,37,53,577,25,76,1,1,0.30769
+208,37,49,577,26,78,1,1,0.2963
+209,37,43,578,18,75,1,1,0.47368
+210,37,38,579,20,77,1,1,0.47619
+211,37,34,581,20,77,1,1,0.47619
+212,37,28,580,20,77,1,1,0.57143
+213,37,24,580,19,80,1,1,0.6
+214,37,18,583,20,77,1,1,0.71429
+215,37,15,580,20,77,1,1,0.66667
+216,37,8,584,20,77,1,1,0.85714
+217,37,5,584,20,77,1,1,0.80952
+218,37,1,585,20,77,1,1,0.85714
+219,37,-2,585,20,77,1,1,0.66667
+220,37,-6,589,20,77,1,1,0.52381
+221,37,-9,590,20,77,1,1,0.33333
+15,38,639,518,20,68,1,1,0.16356
+16,38,637,519,20,68,1,1,0.12974
+17,38,635,521,20,68,1,1,0.14838
+18,38,635,521,20,68,1,1,0.14769
+19,38,635,525,16,67,1,1,0.10294
+20,38,634,524,16,67,1,1,0.11851
+21,38,630,525,16,67,1,1,0.12803
+22,38,627,525,16,67,1,1,0.16349
+23,38,627,526,16,67,1,1,0.1583
+24,38,625,529,16,67,1,1,0.1436
+25,38,623,530,16,67,1,1,0.16349
+26,38,621,532,16,67,1,1,0.16263
+27,38,618,534,16,67,1,1,0.16782
+28,38,616,534,16,67,1,1,0.19983
+29,38,615,535,16,67,1,1,0.21453
+30,38,613,537,16,67,1,1,0.22318
+31,38,613,554,16,67,1,1,0.14533
+32,38,612,546,16,67,1,1,0.16696
+33,38,611,539,18,66,1,1,0.16182
+34,38,608,543,18,66,1,1,0.2718
+35,38,609,534,18,66,1,1,0.31186
+36,38,607,530,19,81,1,1,0.27866
+37,38,607,528,19,81,1,1,0.26585
+38,38,604,529,19,81,1,1,0.23354
+39,38,604,522,19,81,1,1,0.24634
+40,38,601,521,19,81,1,1,0.26524
+41,38,600,522,19,81,1,1,0.29024
+42,38,598,524,19,81,1,1,0.27683
+43,38,596,528,19,81,1,1,0.25
+44,38,593,528,19,81,1,1,0.21098
+45,38,591,527,21,80,1,1,0.22503
+46,38,588,527,23,87,1,1,0.20502
+47,38,584,527,27,86,1,1,0.20567
+48,38,581,531,27,84,1,1,0.1916
+49,38,578,532,28,83,1,1,0.18924
+50,38,577,530,26,85,1,1,0.22351
+51,38,573,531,26,85,1,1,0.22653
+52,38,573,532,26,85,1,1,0.23428
+53,38,570,533,25,95,1,1,0.22276
+54,38,567,533,28,94,1,1,0.20871
+55,38,565,533,27,95,1,1,0.19531
+56,38,563,533,27,96,1,1,0.18704
+57,38,562,531,27,97,1,1,0.20262
+58,38,557,530,29,98,1,1,0.20404
+59,38,554,529,31,98,1,1,0.20455
+60,38,554,529,28,97,1,1,0.19986
+61,38,549,529,30,96,1,1,0.21151
+62,38,548,525,29,98,1,1,0.18316
+63,38,543,538,30,98,1,1,0.19062
+64,38,543,527,30,98,1,1,0.1942
+65,38,537,530,30,98,1,1,0.22874
+66,38,536,540,30,98,1,1,0.18866
+67,38,525,527,37,105,1,1,0.24975
+68,38,521,534,37,105,1,1,0.22195
+69,38,518,530,37,105,1,1,0.22617
+70,38,512,534,36,102,1,1,0.23039
+71,38,509,533,36,102,1,1,0.20703
+72,38,502,535,36,102,1,1,0.2603
+73,38,498,532,36,102,1,1,0.21595
+74,38,494,532,36,102,1,1,0.21622
+75,38,492,531,33,101,1,1,0.19723
+76,38,487,531,32,98,1,1,0.20386
+77,38,482,530,32,98,1,1,0.2112
+78,38,476,534,32,106,1,1,0.15916
+79,38,473,533,32,106,1,1,0.17134
+80,38,466,540,32,106,1,1,0.11215
+81,38,461,540,32,106,1,1,0.11385
+82,38,455,539,31,105,1,1,0.13149
+83,38,450,539,30,109,1,1,0.12786
+84,38,441,537,32,111,1,1,0.15476
+85,38,430,540,39,110,1,1,0.13739
+86,38,424,542,39,110,1,1,0.13153
+87,38,416,543,39,110,1,1,0.14324
+88,38,410,543,39,110,1,1,0.15946
+89,38,402,543,40,111,1,1,0.17618
+90,38,392,548,42,112,1,1,0.15188
+91,38,387,551,42,114,1,1,0.14803
+92,38,380,550,41,118,1,1,0.18487
+93,38,372,556,41,118,1,1,0.15526
+94,38,366,558,41,118,1,1,0.16086
+95,38,359,564,41,118,1,1,0.13325
+96,38,352,566,43,117,1,1,0.12173
+97,38,344,560,42,122,1,1,0.17262
+98,38,336,566,42,122,1,1,0.15409
+99,38,320,562,52,121,1,1,0.23384
+100,38,312,567,56,120,1,1,0.18037
+101,38,304,568,55,117,1,1,0.17872
+102,38,296,566,54,118,1,1,0.18044
+103,38,287,563,55,126,1,1,0.21344
+104,38,287,561,47,127,1,1,0.23014
+105,38,279,560,47,127,1,1,0.24512
+106,38,269,565,52,126,1,1,0.23117
+107,38,260,564,52,126,1,1,0.22092
+108,38,256,564,45,130,1,1,0.26303
+109,38,254,568,41,129,1,1,0.26648
+110,38,245,563,39,133,1,1,0.28451
+111,38,237,565,39,133,1,1,0.25261
+112,38,228,565,38,136,1,1,0.21636
+113,38,217,567,38,136,1,1,0.20251
+114,38,207,566,38,136,1,1,0.21636
+115,38,198,569,38,136,1,1,0.22197
+116,38,188,574,38,136,1,1,0.19502
+117,38,178,573,38,136,1,1,0.22965
+118,38,165,571,37,139,1,1,0.25282
+119,38,158,572,38,141,1,1,0.2472
+120,38,142,577,42,140,1,1,0.22464
+121,38,134,577,42,140,1,1,0.25449
+122,38,120,577,44,139,1,1,0.26603
+123,38,112,583,44,139,1,1,0.23571
+124,38,99,582,46,142,1,1,0.24952
+125,38,89,584,46,142,1,1,0.24877
+126,38,80,587,46,142,1,1,0.24104
+127,38,65,587,50,146,1,1,0.25877
+128,38,55,591,50,146,1,1,0.22529
+129,38,43,589,49,154,1,1,0.22374
+130,38,29,587,48,157,1,1,0.21157
+131,38,18,586,47,160,1,1,0.23163
+132,38,6,589,47,160,1,1,0.54581
+133,38,-1,591,47,160,1,1,0.41278
+134,38,-7,593,47,160,1,1,0.18219
+135,38,-22,601,47,160,1,1,0.05823
+136,38,-30,607,47,160,1,1,0.028597
+137,38,-37,609,47,160,1,1,0.20833
+1,39,1183,490,13,35,1,1,0.72222
+2,39,1184,482,15,35,1,1,0.86111
+3,39,1185,485,15,35,1,1,0.80556
+4,39,1189,483,12,34,1,1,0.94286
+5,39,1190,488,14,33,1,1,0.85294
+6,39,1192,499,14,35,1,1,0.86111
+7,39,1194,490,14,35,1,1,0.88889
+8,39,1193,500,14,35,1,1,0.95556
+9,39,1195,500,14,35,1,1,1
+10,39,1197,506,14,35,1,1,1
+11,39,1196,498,13,37,1,1,1
+12,39,1197,501,13,37,1,1,1
+13,39,1199,493,13,38,1,1,1
+14,39,1197,495,15,37,1,1,1
+15,39,1200,494,15,37,1,1,1
+16,39,1200,494,15,37,1,1,1
+17,39,1201,494,15,37,1,1,1
+18,39,1202,494,15,37,1,1,1
+19,39,1203,493,15,37,1,1,1
+20,39,1204,493,15,37,1,1,1
+21,39,1204,494,15,37,1,1,1
+22,39,1205,495,15,37,1,1,1
+23,39,1206,495,15,37,1,1,1
+24,39,1205,494,15,37,1,1,1
+25,39,1207,498,15,37,1,1,1
+26,39,1209,499,15,37,1,1,1
+27,39,1209,501,15,37,1,1,1
+28,39,1210,502,15,37,1,1,1
+29,39,1212,506,15,37,1,1,1
+30,39,1210,509,15,37,1,1,1
+31,39,1212,515,15,37,1,1,1
+32,39,1213,516,15,37,1,1,1
+33,39,1212,504,15,37,1,1,1
+34,39,1213,507,15,37,1,1,1
+35,39,1214,500,15,37,1,1,1
+36,39,1216,498,15,37,1,1,1
+37,39,1216,497,15,36,1,1,1
+38,39,1215,492,16,37,1,1,1
+39,39,1219,493,16,37,1,1,1
+40,39,1217,489,16,40,1,1,1
+41,39,1219,490,16,40,1,1,0.92826
+42,39,1220,491,16,40,1,1,0.87805
+43,39,1221,495,15,38,1,1,0.87179
+44,39,1221,497,16,37,1,1,0.89474
+45,39,1224,496,15,39,1,1,0.925
+46,39,1224,496,14,41,1,1,0.88095
+47,39,1225,497,16,40,1,1,0.90244
+48,39,1225,499,16,40,1,1,0.87805
+49,39,1226,502,16,40,1,1,0.82927
+50,39,1227,498,16,40,1,1,0.92683
+51,39,1227,502,16,40,1,1,0.87805
+52,39,1228,500,16,40,1,1,0.95122
+53,39,1228,500,16,40,1,1,0.95122
+54,39,1229,500,16,40,1,1,0.92683
+55,39,1230,500,16,40,1,1,0.90244
+56,39,1230,499,16,40,1,1,0.90244
+57,39,1230,498,16,40,1,1,0.85366
+58,39,1230,497,16,40,1,1,0.82927
+59,39,1229,495,17,40,1,1,0.82927
+60,39,1229,494,17,39,1,1,0.85
+61,39,1229,493,18,39,1,1,0.86184
+62,39,1231,492,16,41,1,1,0.94958
+63,39,1231,487,16,41,1,1,1
+64,39,1232,493,16,41,1,1,1
+65,39,1230,492,16,41,1,1,1
+66,39,1231,490,16,41,1,1,1
+67,39,1232,495,16,41,1,1,1
+68,39,1230,493,16,41,1,1,1
+69,39,1230,496,16,41,1,1,1
+70,39,1227,496,16,41,1,1,1
+71,39,1226,495,16,41,1,1,1
+72,39,1224,496,16,41,1,1,1
+73,39,1223,495,16,41,1,1,1
+74,39,1222,494,16,41,1,1,1
+75,39,1221,495,14,42,1,1,1
+76,39,1219,494,16,41,1,1,1
+77,39,1216,496,17,40,1,1,1
+78,39,1213,495,17,40,1,1,1
+79,39,1212,494,17,40,1,1,1
+80,39,1210,495,17,40,1,1,1
+81,39,1207,493,17,40,1,1,1
+82,39,1204,494,17,40,1,1,1
+83,39,1201,494,17,40,1,1,1
+84,39,1199,494,17,40,1,1,1
+85,39,1196,495,17,40,1,1,1
+86,39,1194,494,16,42,1,1,1
+87,39,1192,495,16,42,1,1,1
+88,39,1186,496,18,43,1,1,1
+89,39,1184,495,18,43,1,1,1
+90,39,1180,498,18,43,1,1,1
+91,39,1178,500,17,42,1,1,1
+92,39,1176,500,17,42,1,1,1
+93,39,1176,504,13,40,1,1,1
+94,39,1171,502,15,44,1,1,1
+95,39,1169,504,15,44,1,1,1
+96,39,1165,504,15,44,1,1,1
+97,39,1161,503,15,44,1,1,1
+98,39,1158,505,15,44,1,1,1
+99,39,1156,506,15,44,1,1,1
+100,39,1152,506,14,45,1,1,1
+101,39,1149,506,14,45,1,1,1
+102,39,1145,505,14,45,1,1,1
+103,39,1141,506,16,44,1,1,1
+104,39,1136,508,18,43,1,1,1
+105,39,1133,509,17,42,1,1,1
+106,39,1130,509,17,42,1,1,1
+107,39,1127,505,16,45,1,1,1
+108,39,1123,506,18,44,1,1,1
+109,39,1120,506,18,44,1,1,1
+110,39,1116,506,18,44,1,1,1
+111,39,1112,507,18,41,1,1,1
+112,39,1110,505,17,44,1,1,1
+113,39,1106,505,17,44,1,1,1
+114,39,1102,506,19,43,1,1,1
+115,39,1098,505,19,43,1,1,1
+116,39,1092,508,19,43,1,1,1
+117,39,1090,508,19,43,1,1,1
+118,39,1085,506,19,43,1,1,1
+119,39,1083,506,19,43,1,1,1
+120,39,1078,507,19,43,1,1,1
+121,39,1075,506,19,43,1,1,1
+122,39,1072,506,19,43,1,1,1
+123,39,1070,504,16,43,1,1,1
+124,39,1067,506,16,43,1,1,1
+125,39,1063,506,16,43,1,1,1
+126,39,1059,505,16,43,1,1,1
+127,39,1054,506,16,43,1,1,1
+128,39,1051,506,16,43,1,1,1
+129,39,1047,506,16,43,1,1,1
+130,39,1043,506,17,44,1,1,1
+131,39,1039,509,16,41,1,1,1
+132,39,1034,508,17,43,1,1,1
+133,39,1031,509,16,41,1,1,1
+134,39,1026,508,16,41,1,1,1
+135,39,1022,509,16,41,1,1,1
+136,39,1018,508,16,41,1,1,1
+137,39,1014,508,16,42,1,1,1
+138,39,1011,506,16,42,1,1,1
+139,39,1007,506,16,42,1,1,1
+140,39,1004,505,17,45,1,1,1
+141,39,999,503,19,44,1,1,1
+142,39,997,502,18,46,1,1,1
+143,39,995,501,18,46,1,1,1
+144,39,991,503,18,46,1,1,1
+145,39,988,504,18,46,1,1,1
+146,39,985,503,18,46,1,1,1
+147,39,982,504,18,46,1,1,1
+148,39,978,505,18,46,1,1,1
+149,39,973,503,19,47,1,1,1
+150,39,968,504,21,46,1,1,1
+151,39,966,506,19,47,1,1,1
+152,39,962,506,19,47,1,1,1
+153,39,958,504,19,47,1,1,1
+154,39,953,503,19,47,1,1,1
+155,39,949,504,19,47,1,1,1
+156,39,944,504,19,47,1,1,1
+157,39,940,504,19,47,1,1,1
+158,39,936,505,19,47,1,1,1
+159,39,932,504,19,47,1,1,1
+160,39,929,506,20,48,1,1,1
+161,39,925,505,20,48,1,1,1
+162,39,921,505,20,48,1,1,1
+163,39,918,506,20,48,1,1,1
+164,39,916,505,19,47,1,1,1
+165,39,913,505,19,47,1,1,1
+166,39,909,504,19,47,1,1,1
+167,39,906,507,19,47,1,1,1
+168,39,903,506,19,47,1,1,1
+169,39,901,506,19,47,1,1,1
+170,39,898,505,19,47,1,1,1
+171,39,895,505,19,47,1,1,1
+172,39,892,505,19,47,1,1,1
+173,39,890,504,19,47,1,1,1
+174,39,888,504,19,47,1,1,1
+175,39,885,504,19,47,1,1,1
+176,39,882,504,19,47,1,1,1
+177,39,881,504,19,47,1,1,1
+178,39,879,506,19,47,1,1,1
+179,39,877,506,19,47,1,1,1
+180,39,874,505,19,47,1,1,1
+181,39,871,506,19,47,1,1,1
+182,39,870,504,19,50,1,1,1
+183,39,867,505,19,50,1,1,1
+184,39,864,505,19,50,1,1,1
+185,39,863,508,18,48,1,1,1
+186,39,861,509,18,48,1,1,1
+187,39,859,510,18,46,1,1,1
+188,39,856,510,19,48,1,1,1
+189,39,855,510,18,46,1,1,1
+190,39,854,510,18,45,1,1,1
+191,39,850,510,19,48,1,1,1
+192,39,849,510,19,48,1,1,1
+193,39,848,511,19,48,1,1,1
+194,39,846,511,19,48,1,1,1
+195,39,844,511,19,48,1,1,1
+196,39,843,512,19,48,1,1,1
+197,39,841,514,18,46,1,1,1
+198,39,840,513,17,49,1,1,1
+199,39,838,513,17,49,1,1,1
+200,39,837,513,17,49,1,1,1
+201,39,837,514,17,49,1,1,1
+202,39,836,515,17,49,1,1,1
+203,39,834,514,17,49,1,1,1
+204,39,833,514,17,49,1,1,1
+205,39,832,514,17,49,1,1,1
+206,39,832,514,17,49,1,1,1
+207,39,831,517,13,48,1,1,1
+208,39,829,518,15,47,1,1,1
+209,39,827,518,15,47,1,1,1
+210,39,826,519,15,47,1,1,1
+211,39,825,521,15,47,1,1,1
+212,39,825,522,15,46,1,1,1
+213,39,825,523,15,45,1,1,1
+214,39,825,524,15,45,1,1,1
+215,39,825,523,14,45,1,1,1
+216,39,825,522,14,46,1,1,1
+217,39,825,521,14,47,1,1,1
+218,39,825,520,14,48,1,1,1
+219,39,825,519,14,49,1,1,1
+220,39,825,519,13,52,1,1,1
+221,39,825,519,15,51,1,1,1
+222,39,824,518,16,51,1,1,1
+223,39,824,518,16,51,1,1,1
+224,39,824,518,16,51,1,1,1
+225,39,825,518,16,51,1,1,1
+226,39,825,519,16,51,1,1,1
+227,39,826,521,16,51,1,1,1
+228,39,827,520,16,51,1,1,1
+229,39,827,521,16,51,1,1,1
+230,39,828,520,17,51,1,1,1
+231,39,829,522,17,51,1,1,1
+232,39,829,520,17,51,1,1,1
+233,39,831,520,17,51,1,1,1
+234,39,832,519,17,51,1,1,1
+235,39,833,519,17,51,1,1,1
+236,39,836,521,16,48,1,1,1
+237,39,836,522,17,47,1,1,1
+238,39,838,520,19,49,1,1,1
+239,39,839,518,19,49,1,1,1
+240,39,841,517,19,49,1,1,1
+241,39,844,518,19,49,1,1,1
+242,39,846,517,19,49,1,1,1
+243,39,850,516,19,49,1,1,1
+244,39,853,517,19,49,1,1,1
+245,39,856,517,19,49,1,1,1
+246,39,858,518,19,49,1,1,1
+247,39,862,517,19,49,1,1,1
+248,39,865,517,19,49,1,1,1
+249,39,870,517,18,51,1,1,1
+250,39,871,517,19,50,1,1,0.97745
+251,39,875,517,19,50,1,1,0.97843
+252,39,878,519,21,49,1,1,0.91636
+253,39,882,519,21,49,1,1,0.87455
+254,39,887,518,21,49,1,1,0.84
+255,39,893,520,21,49,1,1,0.83273
+256,39,897,519,21,49,1,1,0.8
+257,39,899,518,23,48,1,1,0.7449
+258,39,906,517,23,48,1,1,0.77381
+259,39,911,518,23,48,1,1,0.75765
+260,39,916,517,22,50,1,1,0.71014
+261,39,921,517,22,50,1,1,0.69309
+262,39,927,517,22,50,1,1,0.69224
+263,39,931,517,22,50,1,1,0.62745
+264,39,936,518,22,50,1,1,0.62745
+265,39,941,519,22,50,1,1,0.62745
+266,39,948,519,22,49,1,1,0.66
+267,39,952,518,22,49,1,1,0.68
+268,39,957,520,22,49,1,1,0.64
+269,39,964,520,22,49,1,1,0.64
+270,39,967,517,25,48,1,1,0.73469
+271,39,973,517,25,48,1,1,0.71429
+272,39,978,518,25,48,1,1,0.69388
+273,39,983,518,25,48,1,1,0.69388
+274,39,990,516,20,41,1,1,0.85714
+275,39,995,515,20,41,1,1,0.90476
+276,39,1000,515,20,41,1,1,0.90476
+277,39,1006,515,22,40,1,1,0.95122
+278,39,1010,514,22,40,1,1,0.97561
+279,39,1015,514,22,40,1,1,1
+280,39,1021,516,21,41,1,1,0.92857
+281,39,1026,515,21,40,1,1,1
+282,39,1029,515,25,41,1,1,0.97619
+283,39,1034,515,25,41,1,1,0.97619
+284,39,1041,516,25,41,1,1,0.95238
+285,39,1047,516,25,41,1,1,0.95238
+286,39,1053,514,24,44,1,1,0.93333
+287,39,1058,515,24,44,1,1,0.91111
+288,39,1063,512,24,44,1,1,0.97778
+289,39,1068,514,24,44,1,1,0.93333
+290,39,1073,511,24,46,1,1,0.95745
+291,39,1079,513,24,46,1,1,0.91489
+292,39,1083,510,23,48,1,1,0.95918
+293,39,1090,511,22,49,1,1,0.92
+294,39,1094,511,23,48,1,1,0.95918
+295,39,1098,512,24,51,1,1,0.90385
+296,39,1103,514,23,54,1,1,0.84318
+297,39,1107,514,23,54,1,1,0.86364
+298,39,1113,513,23,54,1,1,0.90455
+299,39,1117,514,23,54,1,1,0.92576
+300,39,1122,516,23,54,1,1,0.93333
+301,39,1126,517,23,54,1,1,0.95758
+302,39,1131,515,22,56,1,1,0.98169
+303,39,1134,516,22,56,1,1,1
+304,39,1138,521,25,55,1,1,1
+305,39,1143,522,25,55,1,1,1
+306,39,1147,526,25,56,1,1,1
+307,39,1151,526,25,56,1,1,1
+308,39,1154,525,25,56,1,1,1
+309,39,1161,526,24,57,1,1,1
+310,39,1165,528,24,57,1,1,1
+311,39,1168,527,24,57,1,1,1
+312,39,1173,527,24,57,1,1,1
+313,39,1177,528,24,57,1,1,1
+314,39,1180,529,24,57,1,1,1
+315,39,1185,529,24,57,1,1,1
+316,39,1189,529,24,57,1,1,1
+317,39,1193,529,24,57,1,1,1
+318,39,1196,529,24,57,1,1,1
+319,39,1200,528,24,57,1,1,1
+320,39,1202,529,24,57,1,1,1
+321,39,1205,528,24,57,1,1,1
+322,39,1210,527,24,57,1,1,1
+323,39,1212,526,24,57,1,1,1
+324,39,1216,527,24,57,1,1,1
+325,39,1220,526,24,57,1,1,1
+326,39,1222,525,24,57,1,1,1
+327,39,1224,524,24,57,1,1,1
+328,39,1226,523,24,57,1,1,1
+329,39,1230,522,24,57,1,1,1
+330,39,1231,520,24,57,1,1,0.33103
+331,39,1235,516,24,57,1,1,0.38621
+332,39,1235,515,24,57,1,1,0.34759
+333,39,1238,509,24,57,1,1,0.34
+334,39,1239,509,24,57,1,1,0.35517
+335,39,1241,508,24,57,1,1,0.31034
+336,39,1243,502,24,57,1,1,0.25172
+337,39,1250,504,19,56,1,1,0.28421
+338,39,1251,504,19,56,1,1,0.24561
+339,39,1253,502,19,56,1,1,0.19649
+340,39,1254,501,19,56,1,1,0.15263
+341,39,1257,503,19,56,1,1,0.17807
+342,39,1258,501,19,56,1,1,0.10526
+343,39,1260,509,18,55,1,1,0.10902
+344,39,1261,513,18,55,1,1,0.058271
+345,39,1261,516,19,54,1,1,0.027273
+346,39,1262,525,18,55,1,1,0.071429
+347,39,1266,520,18,55,1,1,0
+348,39,1263,532,20,54,1,1,0.2026
+349,39,1268,524,18,53,1,1,0.081871
+350,39,1269,523,18,54,1,1,0.11962
+351,39,1269,529,18,55,1,1,0.16917
+352,39,1270,534,18,55,1,1,0.21711
+353,39,1272,534,20,53,1,1,0.17901
+354,39,1273,538,20,53,1,1,0.21869
+355,39,1275,538,20,53,1,1,0.17284
+356,39,1275,539,20,53,1,1,0.21429
+357,39,1276,541,20,53,1,1,0.2381
+358,39,1276,543,20,53,1,1,0.28571
+359,39,1277,545,20,53,1,1,0.28571
+360,39,1277,546,20,53,1,1,0.30864
+361,39,1278,548,20,53,1,1,0.33069
+362,39,1278,550,20,53,1,1,0.37478
+363,39,1279,552,20,53,1,1,0.37478
+364,39,1280,554,20,53,1,1,0.39683
+365,39,1279,554,20,53,1,1,0.40741
+366,39,1278,554,20,53,1,1,0.37037
+367,39,1277,555,20,53,1,1,0.35185
+368,39,1278,555,19,54,1,1,0.32727
+369,39,1279,556,19,54,1,1,0.34364
+370,39,1280,556,19,56,1,1,0.35263
+371,39,1281,557,19,56,1,1,0.29825
+372,39,1282,557,19,58,1,1,0.32203
+373,39,1283,558,19,58,1,1,0.33898
+374,39,1284,559,19,59,1,1,0.36667
+375,39,1283,553,19,60,1,1,0.27869
+376,39,1283,548,19,61,1,1,0.20968
+377,39,1283,543,19,62,1,1,0.14286
+378,39,1280,541,20,63,1,1,0.125
+379,39,1278,540,21,63,1,1,0.14986
+380,39,1275,539,23,63,1,1,0.24479
+381,39,1273,537,23,64,1,1,0.30769
+382,39,1270,536,25,64,1,1,0.28994
+383,39,1268,535,26,64,1,1,0.27009
+384,39,1266,534,27,64,1,1,0.22912
+385,39,1264,531,25,65,1,1,0.21678
+386,39,1262,528,24,66,1,1,0.2
+387,39,1260,525,23,68,1,1,0.083333
+388,39,1255,526,24,68,1,1,0.14551
+389,39,1251,527,24,68,1,1,0.17101
+390,39,1246,528,25,68,1,1,0.22742
+391,39,1242,530,25,68,1,1,0.14994
+392,39,1233,528,25,67,1,1,0.20362
+393,39,1225,526,24,67,1,1,0.21176
+394,39,1216,524,24,67,1,1,0.32
+395,39,1208,522,23,67,1,1,0.29167
+396,39,1199,520,23,67,1,1,0.29167
+112,40,1507,522,32,67,1,1,1
+113,40,1503,522,32,67,1,1,1
+114,40,1499,522,32,67,1,1,1
+115,40,1495,522,32,68,1,1,1
+116,40,1491,522,31,68,1,1,1
+117,40,1488,523,30,68,1,1,1
+118,40,1483,522,29,64,1,1,1
+119,40,1480,522,27,64,1,1,1
+120,40,1478,522,25,64,1,1,1
+121,40,1473,519,24,67,1,1,1
+122,40,1467,518,24,67,1,1,1
+123,40,1463,518,23,67,1,1,1
+124,40,1460,519,21,67,1,1,1
+125,40,1455,517,18,68,1,1,1
+126,40,1450,517,18,68,1,1,0.043478
+127,40,1445,517,18,69,1,1,0.10677
+128,40,1440,517,19,70,1,1,0.1507
+129,40,1435,517,19,71,1,1,0.25556
+130,40,1431,517,19,71,1,1,0.25556
+131,40,1427,518,19,71,1,1,0.24444
+132,40,1423,518,19,71,1,1,0.25556
+133,40,1416,518,19,71,1,1,0.39514
+134,40,1411,518,19,71,1,1,0.49583
+135,40,1406,518,19,71,1,1,0.53472
+136,40,1397,519,24,70,1,1,0.62254
+137,40,1392,519,27,70,1,1,0.59557
+138,40,1387,520,31,70,1,1,0.58099
+139,40,1383,519,31,71,1,1,0.58681
+140,40,1379,519,32,71,1,1,0.57071
+141,40,1374,519,31,71,1,1,0.64583
+142,40,1369,519,31,71,1,1,0.67535
+143,40,1365,520,30,70,1,1,0.69105
+144,40,1360,520,30,70,1,1,0.75284
+145,40,1356,520,29,70,1,1,0.70845
+146,40,1351,521,28,70,1,1,0.72802
+147,40,1347,521,27,70,1,1,0.6831
+148,40,1342,521,27,70,1,1,0.6831
+149,40,1338,522,26,69,1,1,0.62963
+150,40,1333,522,26,69,1,1,0.017989
+151,40,1329,523,25,69,1,1,0.57692
+152,40,1324,523,24,68,1,1,0.6
+153,40,1319,523,24,68,1,1,0.6
+154,40,1314,523,24,68,1,1,0.6
+155,40,1309,523,24,67,1,1,0.56
+156,40,1305,523,23,67,1,1,0.54167
+157,40,1300,523,22,67,1,1,0.52174
+158,40,1295,523,22,66,1,1,0.52174
+159,40,1290,523,22,66,1,1,0.52174
+160,40,1285,523,22,66,1,1,0.47826
+161,40,1281,523,21,66,1,1,0.45455
+162,40,1277,518,24,70,1,1,0.34873
+163,40,1269,524,25,70,1,1,1
+164,40,1266,518,24,70,1,1,0.38535
+165,40,1260,521,24,70,1,1,0.28
+1,41,979,498,29,24,0,3,1
+2,41,981,490,29,24,0,3,1
+3,41,982,491,29,24,0,3,1
+4,41,984,493,29,24,0,3,1
+5,41,986,495,29,24,0,3,1
+6,41,989,508,29,24,0,3,1
+7,41,988,498,30,24,0,3,1
+8,41,988,504,29,24,0,3,1
+9,41,990,506,29,25,0,3,1
+10,41,992,509,29,25,0,3,1
+11,41,988,505,29,24,0,3,0.89867
+12,41,988,503,29,24,0,3,1
+13,41,989,501,29,24,0,3,0.84
+14,41,990,500,29,24,0,3,0.88
+15,41,990,499,29,24,0,3,0.92
+16,41,991,499,29,24,0,3,0.92
+17,41,992,499,29,24,0,3,0.92
+18,41,993,499,29,24,0,3,0.96
+19,41,994,499,29,24,0,3,0.96
+20,41,995,499,29,24,0,3,0.97733
+21,41,996,499,29,24,0,3,1
+22,41,996,500,29,24,0,3,1
+23,41,997,502,29,23,0,3,1
+24,41,997,503,30,24,0,3,1
+25,41,998,505,30,23,0,3,1
+26,41,998,506,31,23,0,3,1
+27,41,999,508,31,23,0,3,1
+28,41,999,508,31,23,0,3,1
+29,41,999,511,31,22,0,3,1
+30,41,1000,513,29,23,0,3,1
+31,41,1000,521,30,24,0,3,1
+32,41,999,514,31,24,0,3,1
+33,41,999,508,32,23,0,3,1
+34,41,1001,513,30,22,0,3,1
+35,41,1000,503,34,23,0,3,1
+36,41,1000,501,34,23,0,3,1
+37,41,1001,499,33,23,0,3,1
+38,41,1002,496,31,23,0,3,1
+39,41,1002,495,31,23,0,3,1
+40,41,1003,494,30,23,0,3,1
+41,41,1004,493,30,23,0,3,1
+42,41,1004,493,30,24,0,3,1
+43,41,1005,494,30,24,0,3,1
+44,41,1006,495,30,24,0,3,1
+45,41,1007,496,30,24,0,3,1
+46,41,1008,497,30,24,0,3,1
+47,41,1009,498,30,24,0,3,1
+48,41,1009,500,29,24,0,3,1
+49,41,1009,502,29,24,0,3,1
+50,41,1009,502,29,24,0,3,1
+51,41,1009,502,29,24,0,3,1
+52,41,1009,501,30,24,0,3,1
+53,41,1009,501,32,23,0,3,1
+54,41,1009,500,31,23,0,3,1
+55,41,1009,500,31,23,0,3,1
+56,41,1009,499,31,23,0,3,1
+57,41,1009,499,31,23,0,3,1
+58,41,1008,497,31,23,0,3,1
+59,41,1008,495,30,23,0,3,1
+60,41,1008,493,29,23,0,3,1
+61,41,1008,491,29,24,0,3,1
+62,41,1008,491,29,24,0,3,1
+63,41,1009,491,28,24,0,3,1
+64,41,1010,492,28,24,0,3,0.93655
+65,41,1010,492,28,23,0,3,0.91379
+66,41,1010,492,28,23,0,3,0.85632
+67,41,1010,492,28,23,0,3,0.79885
+68,41,1008,492,28,23,0,3,0.82759
+69,41,1006,493,29,23,0,3,0.86111
+70,41,1004,493,29,24,0,3,0.816
+71,41,1003,494,29,24,0,3,0.73333
+72,41,1000,493,29,24,0,3,0.73333
+73,41,998,492,29,24,0,3,0.7
+74,41,995,492,29,24,0,3,0.73333
+75,41,993,491,29,24,0,3,0.69333
+76,41,990,491,29,24,0,3,0.68
+77,41,988,490,29,24,0,3,0.66267
+78,41,985,489,29,24,0,3,0.67733
+79,41,983,489,29,24,0,3,0.632
+80,41,980,488,29,24,0,3,0.61867
+81,41,978,488,29,24,0,3,0.58933
+82,41,978,489,30,24,0,3,0.57419
+83,41,974,489,30,24,0,3,0.62065
+84,41,971,490,30,23,0,3,0.60484
+85,41,968,490,30,24,0,3,0.62065
+86,41,965,491,30,23,0,3,0.60484
+87,41,962,491,29,24,0,3,0.608
+88,41,959,492,29,23,0,3,0.66667
+89,41,956,492,29,24,0,3,0.70667
+90,41,953,493,29,23,0,3,0.725
+91,41,950,494,29,23,0,3,0.71667
+92,41,946,495,29,23,0,3,0.71111
+93,41,942,497,29,23,0,3,0.68889
+94,41,938,498,29,23,0,3,0.70833
+95,41,934,500,29,23,0,3,0.70833
+96,41,931,502,29,23,0,3,0.71111
+97,41,927,501,29,24,0,3,0.744
+98,41,923,501,29,24,0,3,0.80933
+99,41,919,501,29,24,0,3,0.79467
+100,41,915,501,29,24,0,3,0.8
+101,41,912,501,29,24,0,3,0.808
+102,41,909,500,29,24,0,3,0.86
+103,41,906,500,29,24,0,3,0.872
+104,41,903,500,29,24,0,3,0.90933
+105,41,898,499,29,24,0,3,0.89333
+106,41,894,499,29,24,0,3,0.90933
+107,41,890,499,29,24,0,3,0.904
+108,41,886,499,29,24,0,3,0.904
+109,41,881,499,29,24,0,3,0.88667
+110,41,877,499,29,24,0,3,0.89867
+111,41,873,499,29,24,0,3,0.94933
+112,41,870,499,28,24,0,3,1
+113,41,865,499,28,23,0,3,1
+114,41,860,499,29,23,0,3,1
+115,41,855,499,29,23,0,3,1
+116,41,851,499,29,23,0,3,1
+117,41,846,499,30,23,0,3,1
+118,41,841,499,30,23,0,3,1
+119,41,836,499,31,23,0,3,1
+120,41,832,499,31,23,0,3,1
+121,41,825,499,29,24,0,3,1
+122,41,820,498,30,24,0,3,0.98065
+123,41,816,498,30,24,0,3,1
+124,41,812,498,30,24,0,3,1
+125,41,808,498,30,23,0,3,1
+126,41,804,498,30,23,0,3,1
+127,41,800,498,31,23,0,3,1
+128,41,794,498,31,23,0,3,1
+129,41,789,498,30,23,0,3,1
+130,41,783,498,30,23,0,3,1
+131,41,778,498,29,24,0,3,1
+132,41,773,498,29,24,0,3,1
+133,41,768,498,29,24,0,3,1
+134,41,763,499,30,24,0,3,1
+135,41,758,498,30,24,0,3,1
+136,41,753,498,30,24,0,3,1
+137,41,749,498,29,24,0,3,1
+138,41,744,498,30,24,0,3,1
+139,41,740,498,29,24,0,3,1
+140,41,735,498,29,24,0,3,0.95467
+141,41,731,498,29,24,0,3,0.97867
+142,41,729,497,30,24,0,3,0.97677
+143,41,724,497,30,24,0,3,0.95871
+144,41,719,497,30,24,0,3,1
+145,41,714,497,30,24,0,3,1
+146,41,709,497,30,24,0,3,1
+147,41,704,497,30,24,0,3,1
+148,41,699,497,30,24,0,3,1
+149,41,694,497,30,24,0,3,1
+150,41,689,497,30,24,0,3,1
+151,41,685,498,29,24,0,3,1
+152,41,679,498,29,24,0,3,1
+153,41,673,498,29,24,0,3,1
+154,41,667,498,29,24,0,3,1
+155,41,662,499,29,24,0,3,1
+156,41,656,500,29,23,0,3,1
+157,41,651,501,29,23,0,3,1
+158,41,646,502,29,23,0,3,1
+159,41,641,503,29,23,0,3,1
+160,41,636,504,29,23,0,3,1
+161,41,628,504,29,24,0,3,1
+162,41,623,504,29,24,0,3,1
+163,41,618,504,29,24,0,3,0.96667
+164,41,613,504,29,24,0,3,0.93333
+165,41,609,504,29,24,0,3,0.93333
+166,41,604,504,29,24,0,3,0.9
+167,41,599,504,29,24,0,3,0.83333
+168,41,595,504,29,24,0,3,0.8
+169,41,590,504,29,24,0,3,0.73333
+170,41,585,504,29,24,0,3,0.66667
+171,41,581,504,29,24,0,3,0.63333
+172,41,578,502,29,24,0,3,0.63333
+173,41,576,501,29,24,0,3,0.63333
+174,41,570,500,29,24,0,3,0.53333
+175,41,566,499,29,24,0,3,0.46667
+176,41,562,499,29,24,0,3,0.43333
+177,41,559,499,29,24,0,3,0.4
+178,41,555,499,29,24,0,3,0.36667
+179,41,552,499,29,24,0,3,0.33333
+180,41,549,500,29,24,0,3,0.33333
+181,41,546,502,29,24,0,3,0.3
+182,41,540,502,29,24,0,3,0.2
+183,41,536,502,29,24,0,3,0.16667
+184,41,533,502,29,24,0,3,0.16667
+185,41,528,502,29,24,0,3,0.1
+186,41,527,502,29,24,0,3,0.16667
+187,41,519,504,29,24,0,3,0
+188,41,517,503,29,24,0,3,0.033333
+189,41,513,504,29,24,0,3,0
+600,42,296,499,17,44,1,1,0.79259
+601,42,291,499,19,48,1,1,0.77143
+602,42,286,500,22,52,1,1,0.75636
+603,42,281,501,24,56,1,1,0.7614
+604,42,277,502,26,60,1,1,0.73406
+605,42,275,500,26,60,1,1,0.66788
+606,42,274,499,25,59,1,1,0.67564
+607,42,273,498,25,58,1,1,0.6884
+608,42,271,496,25,58,1,1,0.69883
+609,42,270,495,24,58,1,1,0.69085
+610,42,268,494,24,58,1,1,0.68
+611,42,267,493,23,57,1,1,0.6681
+612,42,265,492,23,57,1,1,0.62284
+613,42,264,491,22,57,1,1,0.65442
+614,42,262,490,22,58,1,1,0.59985
+615,42,260,490,23,58,1,1,0.57133
+616,42,258,489,23,59,1,1,0.56667
+617,42,257,489,23,60,1,1,0.52459
+618,42,255,488,21,62,1,1,0.52381
+619,42,253,488,20,63,1,1,0.54688
+620,42,251,488,19,64,1,1,0.38769
+621,42,248,489,22,64,1,1,0.40936
+622,42,245,491,25,63,1,1,0.35577
+623,42,240,492,30,65,1,1,0.29912
+624,42,241,491,27,62,1,1,0.28571
+625,42,242,494,27,63,1,1,0.24107
+626,42,243,498,27,63,1,1,0.26562
+627,42,245,502,26,63,1,1,0.31597
+628,42,246,501,25,65,1,1,0.23776
+629,42,248,504,24,63,1,1,0.28875
+630,42,250,507,23,61,1,1,0.34274
+631,42,252,510,22,59,1,1,0.35942
+632,42,254,514,21,56,1,1,0.43381
+633,42,245,508,27,68,1,1,0.24845
+634,42,248,509,27,69,1,1,0.26122
+635,42,251,510,28,70,1,1,0.30112
+636,42,254,513,27,67,1,1,0.30462
+637,42,257,517,26,64,1,1,0.39886
+638,42,260,521,25,61,1,1,0.45099
+639,42,263,525,24,58,1,1,0.5478
+640,42,264,524,24,59,1,1,0.45267
+641,42,266,523,24,60,1,1,0.44721
+642,42,268,523,24,60,1,1,0.5377
+643,42,270,522,25,60,1,1,0.48928
+644,42,273,521,25,61,1,1,0.58065
+645,42,276,521,26,61,1,1,0.60633
+646,42,279,521,26,61,1,1,0.64695
+647,42,282,522,27,61,1,1,0.59677
+648,42,286,523,27,61,1,1,0.6371
+649,42,289,523,28,62,1,1,0.57033
+650,42,293,524,28,62,1,1,0.54132
+651,42,297,525,28,63,1,1,0.54364
+652,42,302,514,29,70,1,1,0.54648
+653,42,308,516,29,70,1,1,0.56526
+654,42,314,518,29,71,1,1,0.58148
+655,42,319,521,29,71,1,1,0.56481
+656,42,324,525,29,71,1,1,0.62315
+657,42,333,526,29,73,1,1,0.6482
+658,42,341,528,29,74,1,1,0.65778
+659,42,344,531,30,74,1,1,0.74882
+660,42,348,534,30,74,1,1,0.69677
+661,42,352,537,30,75,1,1,0.73769
+662,42,356,535,30,76,1,1,0.80436
+663,42,361,534,30,76,1,1,0.82195
+664,42,366,531,30,77,1,1,0.84574
+665,42,372,528,30,78,1,1,0.87505
+666,42,376,522,30,79,1,1,0.85081
+667,42,382,523,30,79,1,1,0.84274
+668,42,388,523,30,80,1,1,0.85344
+669,42,393,519,29,81,1,1,0.77561
+670,42,398,516,29,82,1,1,0.82851
+671,42,403,513,30,83,1,1,0.88479
+672,42,408,510,31,84,1,1,0.91618
+673,42,414,508,31,84,1,1,0.91618
+674,42,419,502,32,84,1,1,0.93155
+675,42,425,496,33,85,1,1,0.95383
+676,42,429,500,34,85,1,1,0.93688
+677,42,435,497,34,86,1,1,1
+678,42,440,499,34,86,1,1,1
+679,42,446,511,34,86,1,1,1
+680,42,454,507,33,86,1,1,1
+681,42,452,532,35,86,1,1,1
+682,42,459,558,35,87,1,1,1
+683,42,460,523,36,88,1,1,1
+684,42,464,514,36,88,1,1,1
+685,42,468,515,36,89,1,1,1
+686,42,474,505,36,89,1,1,1
+687,42,478,504,36,90,1,1,1
+688,42,482,504,37,90,1,1,1
+689,42,487,504,37,90,1,1,1
+690,42,492,500,37,90,1,1,1
+691,42,496,499,37,90,1,1,1
+692,42,500,498,37,91,1,1,1
+693,42,504,497,38,92,1,1,1
+694,42,508,497,39,92,1,1,1
+695,42,513,497,39,93,1,1,1
+696,42,517,498,40,93,1,1,1
+697,42,522,498,40,94,1,1,1
+698,42,526,498,41,95,1,1,1
+699,42,531,499,41,95,1,1,1
+700,42,536,504,41,94,1,1,1
+701,42,540,503,42,95,1,1,1
+702,42,545,503,42,95,1,1,1
+703,42,550,503,42,96,1,1,1
+704,42,552,505,42,97,1,1,1
+705,42,554,508,42,97,1,1,1
+706,42,555,508,43,97,1,1,1
+707,42,557,512,44,97,1,1,1
+708,42,560,516,44,98,1,1,1
+709,42,563,521,44,99,1,1,1
+710,42,566,527,44,99,1,1,1
+711,42,568,528,44,100,1,1,1
+712,42,571,530,44,100,1,1,1
+713,42,574,532,44,101,1,1,1
+714,42,576,545,43,102,1,1,1
+715,42,576,545,43,102,1,1,1
+716,42,577,545,43,102,1,1,1
+717,42,578,545,43,103,1,1,1
+718,42,577,547,47,106,1,1,1
+719,42,578,545,47,107,1,1,1
+720,42,580,550,47,108,1,1,1
+721,42,581,550,48,109,1,1,1
+722,42,583,550,48,111,1,1,1
+723,42,585,551,48,112,1,1,1
+724,42,587,561,48,112,1,1,1
+725,42,589,558,48,114,1,1,1
+726,42,591,556,49,116,1,1,1
+727,42,591,565,48,117,1,1,1
+728,42,592,563,49,119,1,1,1
+729,42,594,562,49,120,1,1,1
+730,42,596,565,48,121,1,1,1
+731,42,597,564,48,122,1,1,1
+732,42,598,563,49,123,1,1,1
+733,42,600,563,49,124,1,1,1
+734,42,602,559,50,124,1,1,1
+735,42,603,565,49,122,1,1,1
+736,42,604,558,50,123,1,1,1
+737,42,605,560,50,124,1,1,1
+738,42,607,563,50,124,1,1,1
+739,42,608,564,49,126,1,1,1
+740,42,609,566,49,127,1,1,1
+741,42,608,567,49,128,1,1,1
+742,42,607,568,49,129,1,1,1
+743,42,606,569,50,131,1,1,1
+744,42,605,570,50,132,1,1,1
+745,42,604,571,51,134,1,1,1
+746,42,603,572,51,135,1,1,1
+747,42,602,573,51,136,1,1,1
+748,42,601,574,52,138,1,1,1
+749,42,600,575,52,139,1,1,1
+750,42,599,576,53,141,1,1,1
+658,43,452,516,23,48,1,1,1
+659,43,452,520,22,43,1,1,1
+660,43,456,516,22,44,1,1,1
+661,43,461,515,22,44,1,1,1
+662,43,467,514,22,44,1,1,1
+663,43,474,509,23,46,1,1,1
+664,43,482,505,23,48,1,1,1
+665,43,488,503,23,48,1,1,1
+666,43,495,502,23,48,1,1,1
+667,43,502,500,22,48,1,1,1
+668,43,509,499,22,48,1,1,1
+669,43,516,498,22,48,1,1,1
+670,43,522,496,22,48,1,1,1
+671,43,529,494,22,48,1,1,1
+672,43,535,492,23,48,1,1,1
+673,43,542,490,23,48,1,1,1
+674,43,548,484,23,48,1,1,1
+675,43,555,478,23,48,1,1,0.82143
+676,43,560,481,23,48,1,1,1
+677,43,569,479,23,48,1,1,0.85714
+678,43,576,482,23,48,1,1,0.77551
+679,43,583,491,23,48,1,1,1
+680,43,590,487,23,48,1,1,1
+681,43,593,511,23,48,1,1,1
+682,43,597,531,23,48,1,1,1
+683,43,602,502,23,48,1,1,0.79592
+684,43,608,495,23,48,1,1,0.82568
+685,43,614,490,23,48,1,1,0.82993
+686,43,621,486,23,48,1,1,0.78571
+687,43,627,484,23,48,1,1,1
+688,43,633,482,23,48,1,1,0.85714
+689,43,640,480,22,48,1,1,0.84738
+690,43,646,478,22,48,1,1,0.84738
+691,43,652,477,22,48,1,1,1
+692,43,658,476,22,48,1,1,0.92014
+693,43,664,476,21,48,1,1,1
+694,43,670,477,21,48,1,1,0.92022
+695,43,676,478,21,48,1,1,0.92022
+696,43,682,478,21,49,1,1,0.96
+697,43,688,479,21,49,1,1,0.92
+698,43,694,480,21,49,1,1,0.87455
+699,43,700,481,21,49,1,1,0.87455
+700,43,705,481,21,50,1,1,0.918
+701,43,711,482,21,50,1,1,0.87968
+702,43,716,483,21,50,1,1,0.918
+703,43,722,484,21,51,1,1,0.79021
+704,43,725,485,21,52,1,1,0.91938
+705,43,729,487,21,52,1,1,0.83533
+706,43,733,489,21,52,1,1,0.87393
+707,43,737,491,21,52,1,1,0.88165
+708,43,741,493,21,53,1,1,0.87626
+709,43,745,496,21,53,1,1,0.83838
+710,43,748,499,22,53,1,1,0.85507
+711,43,752,502,22,53,1,1,0.77295
+712,43,756,505,22,54,1,1,0.81028
+713,43,758,503,22,55,1,1,0.8882
+714,43,762,511,22,55,1,1,0.88587
+715,43,765,510,22,56,1,1,1
+716,43,768,510,22,56,1,1,0.81312
+717,43,771,510,22,57,1,1,1
+718,43,772,511,22,57,1,1,1
+719,43,779,512,19,56,1,1,1
+720,43,781,513,20,56,1,1,1
+721,43,784,514,21,56,1,1,1
+722,43,787,515,21,56,1,1,1
+723,43,790,516,22,56,1,1,1
+724,43,793,524,22,56,1,1,0.92372
+725,43,796,523,23,56,1,1,0.92836
+726,43,800,523,23,56,1,1,0.96418
+727,43,802,530,24,56,1,1,1
+728,43,806,529,24,56,1,1,0.89684
+729,43,810,529,24,55,1,1,1
+730,43,813,532,25,56,1,1,1
+731,43,814,528,25,56,1,1,0.83131
+732,43,818,529,25,56,1,1,0.86235
+733,43,820,527,26,57,1,1,0.84036
+734,43,823,526,26,57,1,1,0.83078
+735,43,826,524,26,58,1,1,0.80414
+736,43,829,523,26,58,1,1,0.80038
+737,43,832,522,26,58,1,1,1
+738,43,834,523,26,58,1,1,1
+739,43,836,524,26,58,1,1,0.73384
+740,43,837,525,26,58,1,1,0.70621
+741,43,838,526,26,58,1,1,0.83679
+742,43,840,527,26,59,1,1,0.84568
+743,43,841,527,25,59,1,1,0.83974
+744,43,842,528,25,59,1,1,0.80769
+745,43,843,529,25,59,1,1,0.80385
+746,43,844,529,25,60,1,1,0.83922
+747,43,845,530,25,60,1,1,0.83291
+748,43,846,531,25,60,1,1,0.82976
+749,43,847,532,25,60,1,1,0.86381
+750,43,847,532,25,60,1,1,0.86381
+9,44,1285,503,15,45,1,1,1
+10,44,1285,512,14,45,1,1,1
+11,44,1288,499,15,43,1,1,1
+12,44,1288,507,15,43,1,1,1
+13,44,1292,499,15,43,1,1,1
+14,44,1292,498,15,43,1,1,1
+15,44,1293,498,15,43,1,1,1
+16,44,1294,497,15,44,1,1,1
+17,44,1295,497,14,44,1,1,1
+18,44,1296,496,14,45,1,1,1
+19,44,1297,496,14,45,1,1,1
+20,44,1298,497,14,45,1,1,1
+21,44,1299,498,14,45,1,1,1
+22,44,1300,500,14,45,1,1,1
+23,44,1302,501,14,45,1,1,1
+24,44,1303,503,14,45,1,1,1
+25,44,1304,504,14,45,1,1,1
+26,44,1306,505,14,45,1,1,1
+27,44,1307,507,14,45,1,1,1
+28,44,1308,508,14,45,1,1,1
+29,44,1310,510,14,45,1,1,1
+30,44,1310,514,14,45,1,1,0.97246
+233,45,1136,526,27,79,1,1,0.0875
+234,45,1139,525,27,80,1,1,0.28219
+235,45,1142,524,27,81,1,1,0.48432
+236,45,1146,523,26,82,1,1,0.66979
+237,45,1149,522,26,83,1,1,0.83466
+238,45,1153,522,26,83,1,1,1
+239,45,1157,522,25,83,1,1,1
+240,45,1161,522,25,83,1,1,1
+241,45,1165,522,25,83,1,1,1
+242,45,1169,522,24,83,1,1,1
+243,45,1173,522,24,83,1,1,1
+244,45,1177,522,24,84,1,1,1
+245,45,1181,522,24,85,1,1,0.86977
+246,45,1185,522,25,86,1,1,0.67286
+247,45,1189,522,26,87,1,1,0.55682
+248,45,1193,523,27,87,1,1,0.53409
+249,45,1197,522,28,85,1,1,0.55814
+250,45,1202,521,28,84,1,1,0.56471
+251,45,1207,521,28,82,1,1,0.56627
+252,45,1212,520,28,81,1,1,0.58537
+253,45,1217,519,28,80,1,1,0.59259
+254,45,1222,519,28,78,1,1,0.58228
+255,45,1229,518,26,78,1,1,0.58228
+256,45,1236,518,25,78,1,1,0.55696
+257,45,1243,518,24,74,1,1,0.57333
+258,45,1250,517,24,75,1,1,0.56579
+259,45,1257,517,25,75,1,1,0.1913
+260,45,1264,516,25,76,1,1,0.16783
+261,45,1272,516,25,77,1,1,0.22239
+262,45,1280,519,24,74,1,1,0.19733
+263,45,1287,519,24,80,1,1,0.16444
+264,45,1294,519,24,86,1,1,0.13609
+265,45,1302,519,23,92,1,1,0.19892
+266,45,1305,519,26,93,1,1,0.41411
+267,45,1312,525,30,87,1,1,0.54839
+268,45,1321,520,26,78,1,1,0.48148
+269,45,1326,529,33,87,1,1,0.55882
+270,45,1334,528,32,87,1,1,0.54545
+271,45,1342,527,31,87,1,1,0.53125
+272,45,1350,526,30,87,1,1,0.48387
+273,45,1358,525,29,87,1,1,0.46667
+274,45,1366,524,28,87,1,1,0.44828
+275,45,1374,523,27,87,1,1,0.42857
+276,45,1383,523,25,86,1,1,0.38462
+277,45,1392,522,24,90,1,1,0.28
+43,46,1666,505,21,53,1,1,0.7037
+44,46,1667,506,21,53,1,1,0.7037
+45,46,1668,507,22,54,1,1,0.69091
+46,46,1669,508,22,54,1,1,0.67273
+47,46,1670,509,23,55,1,1,0.66071
+48,46,1672,510,23,56,1,1,0.64912
+49,46,1671,510,24,56,1,1,0.73333
+50,46,1670,511,26,56,1,1,0.92982
+51,46,1669,512,28,56,1,1,0.81246
+52,46,1668,513,29,55,1,1,0.75
+53,46,1667,514,31,55,1,1,0.6702
+54,46,1667,515,32,55,1,1,0.59524
+55,46,1666,514,32,55,1,1,0.50649
+56,46,1665,513,32,55,1,1,0.41937
+57,46,1664,512,32,55,1,1,0.33929
+58,46,1664,511,32,56,1,1,0.35088
+59,46,1666,508,27,55,1,1,0.45281
+60,46,1668,506,22,53,1,1,0.51691
+61,46,1671,504,17,52,1,1,0.60377
+62,46,1665,511,29,55,1,1,0.64762
+63,46,1662,491,31,57,1,1,0.88739
+64,46,1662,510,31,57,1,1,0.85668
+65,46,1662,504,31,57,1,1,0.94828
+66,46,1663,498,30,58,1,1,1
+67,46,1662,513,29,58,1,1,0.91695
+68,46,1658,503,29,59,1,1,0.72778
+69,46,1662,513,27,57,1,1,0.66749
+70,46,1660,509,26,57,1,1,0.553
+1,47,792,509,16,45,1,1,0.79156
+2,47,792,497,16,46,1,1,0.85357
+3,47,792,507,16,46,1,1,0.97121
+4,47,792,504,17,45,1,1,0.78744
+5,47,795,503,16,46,1,1,0.82353
+6,47,797,514,16,45,1,1,0.76471
+7,47,795,505,16,45,1,1,0.88491
+8,47,795,513,16,45,1,1,0.85678
+9,47,795,512,16,45,1,1,0.88235
+10,47,795,511,16,45,1,1,0.88235
+11,47,794,510,16,45,1,1,0.94118
+12,47,795,515,16,45,1,1,1
+13,47,793,502,20,44,1,1,1
+14,47,792,506,20,44,1,1,1
+15,47,793,506,19,44,1,1,1
+16,47,794,504,19,45,1,1,1
+17,47,793,504,19,45,1,1,1
+18,47,793,505,18,45,1,1,1
+19,47,792,506,18,45,1,1,1
+20,47,792,507,17,45,1,1,1
+21,47,792,508,16,45,1,1,1
+22,47,791,509,17,45,1,1,1
+23,47,793,507,16,46,1,1,0.85982
+24,47,792,509,16,46,1,1,0.40426
+25,47,792,511,16,46,1,1,0.48936
+26,47,792,513,16,46,1,1,0.42553
+27,47,792,516,16,45,1,1,0.45652
+28,47,791,518,16,46,1,1,0.46809
+29,47,792,519,16,45,1,1,0.43478
+30,47,791,522,17,46,1,1,0.40426
+31,47,792,534,17,45,1,1,0.3913
+32,47,791,526,17,46,1,1,0.48936
+33,47,790,519,17,47,1,1,0.85532
+34,47,790,526,16,47,1,1,1
+35,47,791,517,16,48,1,1,1
+36,47,790,514,17,48,1,1,1
+37,47,790,511,17,49,1,1,1
+38,47,790,508,17,50,1,1,1
+39,47,790,506,18,50,1,1,1
+40,47,790,506,18,50,1,1,1
+41,47,791,506,18,51,1,1,1
+42,47,791,506,17,51,1,1,1
+43,47,791,507,17,51,1,1,1
+44,47,791,508,17,51,1,1,1
+45,47,791,509,17,51,1,1,1
+46,47,791,510,17,51,1,1,0.66667
+47,47,791,511,17,51,1,1,0.61111
+48,47,791,512,17,51,1,1,0.61111
+49,47,791,513,17,51,1,1,0.55556
+50,47,791,514,17,51,1,1,0.55556
+51,47,791,515,17,51,1,1,0.55556
+52,47,790,515,17,51,1,1,0.55556
+53,47,789,515,17,51,1,1,0.61111
+54,47,788,515,17,51,1,1,0.61111
+55,47,788,515,17,51,1,1,0.61111
+56,47,787,514,17,51,1,1,0.66667
+57,47,786,513,17,51,1,1,0.66667
+58,47,786,512,17,51,1,1,0.61111
+59,47,785,511,17,51,1,1,0.61111
+60,47,784,510,17,51,1,1,0.61111
+61,47,784,509,17,51,1,1,0.55556
+62,47,784,505,17,52,1,1,0.55556
+63,47,782,512,18,51,1,1,0.57895
+64,47,783,507,17,51,1,1,0.5
+65,47,779,510,17,51,1,1,0.66667
+66,47,780,514,18,51,1,1,0.52632
+67,47,781,506,18,56,1,1,0.42105
+68,47,778,507,18,55,1,1,0.42105
+69,47,775,508,19,54,1,1,0.4
+70,47,772,509,20,53,1,1,0.47619
+71,47,769,510,21,52,1,1,0.5
+72,47,767,509,20,52,1,1,0.42857
+73,47,765,508,20,53,1,1,0.47619
+74,47,763,508,20,53,1,1,0.42857
+75,47,761,507,20,54,1,1,0.42857
+76,47,759,507,20,53,1,1,0.42857
+77,47,757,506,20,54,1,1,0.42857
+78,47,755,506,20,54,1,1,0.42857
+79,47,753,505,20,55,1,1,0.42857
+80,47,751,505,20,55,1,1,0.42857
+81,47,746,504,21,55,1,1,0.45455
+82,47,742,505,21,55,1,1,0.45455
+83,47,739,506,20,55,1,1,0.42857
+84,47,735,507,20,56,1,1,0.42857
+85,47,732,508,20,56,1,1,0.42857
+86,47,728,510,20,56,1,1,0.42857
+87,47,725,511,19,56,1,1,0.4
+88,47,721,512,20,56,1,1,0.42857
+89,47,718,513,19,57,1,1,1
+90,47,714,514,19,57,1,1,0.4
+91,47,711,516,19,57,1,1,0.4
+92,47,707,516,19,58,1,1,0.45
+93,47,703,517,19,58,1,1,0.55
+94,47,699,518,19,58,1,1,0.6
+95,47,695,519,19,58,1,1,0.5
+96,47,691,520,19,58,1,1,0.45
+97,47,687,520,19,59,1,1,0.5
+98,47,683,521,19,59,1,1,0.55
+99,47,679,522,19,59,1,1,0.65
+100,47,675,523,19,59,1,1,0.6
+101,47,671,524,19,60,1,1,0.75
+102,47,666,523,19,61,1,1,0.55
+103,47,662,523,19,61,1,1,0.55
+104,47,658,523,19,61,1,1,0.7
+105,47,653,522,19,62,1,1,0.6
+106,47,649,522,19,62,1,1,1
+107,47,645,522,19,62,1,1,0.7
+108,47,640,521,19,63,1,1,0.65
+109,47,636,521,19,63,1,1,0.75
+110,47,632,521,19,63,1,1,0.8
+111,47,628,521,19,64,1,1,0.85
+112,47,623,521,19,64,1,1,0.85462
+113,47,618,521,19,64,1,1,0.85462
+114,47,613,521,19,64,1,1,0.85538
+115,47,609,521,19,64,1,1,0.91077
+116,47,604,522,19,64,1,1,0.91077
+117,47,599,522,19,64,1,1,0.86615
+118,47,595,522,19,64,1,1,0.82154
+119,47,590,522,19,64,1,1,0.82462
+120,47,585,522,19,64,1,1,0.82462
+121,47,581,523,19,64,1,1,0.78077
+122,47,576,523,19,64,1,1,0.73692
+123,47,571,524,19,64,1,1,0.73231
+124,47,566,525,19,64,1,1,0.73231
+125,47,561,525,19,64,1,1,0.73231
+126,47,557,526,19,64,1,1,0.68231
+127,47,552,527,19,64,1,1,0.68231
+128,47,547,527,19,64,1,1,0.68231
+129,47,542,528,19,64,1,1,0.63077
+130,47,537,529,19,64,1,1,0.63077
+131,47,533,530,19,64,1,1,0.57769
+132,47,528,530,19,64,1,1,0.57769
+133,47,523,530,19,64,1,1,0.58462
+134,47,518,530,19,64,1,1,0.58462
+135,47,513,530,20,64,1,1,0.56044
+136,47,509,530,19,64,1,1,0.54615
+137,47,504,531,19,63,1,1,0.49297
+138,47,499,531,20,63,1,1,0.47321
+139,47,494,531,20,63,1,1,0.48214
+140,47,490,531,19,64,1,1,0.45538
+141,47,485,531,19,64,1,1,0.45538
+142,47,480,531,20,64,1,1,0.44762
+143,47,475,532,20,63,1,1,0.43899
+144,47,471,532,19,63,1,1,0.36562
+145,47,466,532,20,63,1,1,0.29613
+146,47,461,532,20,63,1,1,0.29092
+147,47,456,532,20,63,1,1,0.29092
+148,47,452,533,20,63,1,1,0.2381
+149,47,447,534,19,63,1,1,0.25
+150,47,442,535,19,63,1,1,0.30859
+151,47,437,536,19,64,1,1,0.30769
+152,47,430,536,19,65,1,1,0.25455
+153,47,424,537,19,65,1,1,0.25455
+154,47,418,538,19,65,1,1,0.31818
+155,47,411,539,20,65,1,1,0.29582
+156,47,405,540,20,66,1,1,0.30064
+157,47,399,540,19,67,1,1,0.27941
+158,47,392,541,20,67,1,1,0.31723
+159,47,386,542,20,67,1,1,0.32353
+160,47,380,543,20,67,1,1,0.32353
+161,47,374,544,20,68,1,1,0.33402
+162,47,369,544,20,68,1,1,0.2864
+163,47,364,544,20,69,1,1,0.2898
+164,47,359,544,20,69,1,1,0.27823
+165,47,355,544,19,70,1,1,0.24155
+166,47,350,545,19,69,1,1,0.23286
+167,47,345,545,19,70,1,1,0.23239
+168,47,341,545,18,70,1,1,0.19199
+169,47,336,545,18,71,1,1,0.19371
+170,47,331,545,18,71,1,1,0.19371
+171,47,327,546,18,71,1,1,0.14181
+172,47,322,546,18,71,1,1,0.25439
+173,47,317,546,19,71,1,1,0.29167
+174,47,313,546,18,71,1,1,0.29825
+175,47,308,546,19,71,1,1,0.33333
+176,47,303,546,20,71,1,1,0.36508
+177,47,299,546,19,71,1,1,0.33333
+178,47,294,546,20,71,1,1,0.36508
+179,47,290,546,20,72,1,1,0.26288
+180,47,285,547,20,73,1,1,0.29537
+181,47,281,549,19,74,1,1,0.25
+182,47,276,549,19,75,1,1,0.3
+183,47,272,550,19,75,1,1,0.3
+184,47,268,551,19,75,1,1,0.34868
+185,47,264,552,19,75,1,1,0.34868
+186,47,260,553,19,75,1,1,0.30526
+187,47,256,554,19,75,1,1,0.30526
+188,47,251,555,20,76,1,1,0.29561
+189,47,247,556,20,76,1,1,0.29561
+190,47,243,557,20,76,1,1,0.25417
+191,47,239,558,20,76,1,1,0.25417
+192,47,235,558,19,77,1,1,0.21538
+193,47,231,559,19,77,1,1,0.21538
+194,47,227,560,19,77,1,1,0.21538
+195,47,222,561,20,78,1,1,0.25136
+196,47,218,562,20,78,1,1,0.25136
+197,47,214,563,20,78,1,1,0.25136
+198,47,210,564,20,78,1,1,0.25136
+199,47,206,565,20,78,1,1,0.25136
+200,47,202,566,20,78,1,1,0.25136
+201,47,198,567,20,79,1,1,0.25
+202,47,194,567,20,80,1,1,0.21811
+203,47,190,568,21,80,1,1,0.21437
+204,47,186,569,21,80,1,1,0.21437
+205,47,183,570,21,80,1,1,0.17508
+206,47,179,571,21,80,1,1,0.17508
+207,47,175,571,22,81,1,1,0.18346
+208,47,172,572,21,81,1,1,0.14634
+209,47,168,573,22,81,1,1,0.14634
+210,47,164,574,22,81,1,1,0.14634
+211,47,161,575,22,82,1,1,0.14458
+212,47,158,575,22,82,1,1,0.15663
+213,47,155,575,23,83,1,1,0.10863
+214,47,153,576,22,83,1,1,0.11077
+215,47,150,576,23,83,1,1,0.17857
+216,47,148,577,23,83,1,1,0.17857
+217,47,145,577,23,84,1,1,0.14118
+218,47,142,577,24,84,1,1,0.15294
+219,47,140,578,23,84,1,1,0.15294
+220,47,137,578,24,85,1,1,0.16279
+221,47,135,579,24,85,1,1,0.17442
+222,47,132,580,25,85,1,1,0.17442
+223,47,130,581,25,85,1,1,0.17442
+224,47,128,582,25,85,1,1,0.18605
+225,47,126,583,25,86,1,1,0.17241
+226,47,124,584,25,86,1,1,0.19319
+227,47,122,585,25,86,1,1,0.22546
+228,47,120,586,25,87,1,1,0.15909
+229,47,118,587,25,87,1,1,0.067308
+230,47,116,588,25,87,1,1,0.0625
+231,47,114,590,26,87,1,1,0.050926
+232,47,113,589,26,87,1,1,0.050505
+233,47,112,589,26,87,1,1,0.055556
+234,47,111,588,26,88,1,1,0.059509
+235,47,110,588,27,88,1,1,0.0626
+236,47,110,587,26,89,1,1,0.21811
+237,47,109,587,26,88,1,1,0.20932
+238,47,108,586,27,89,1,1,0.20556
+239,47,107,586,27,89,1,1,0.072222
+240,47,106,585,27,90,1,1,0.066327
+241,47,106,585,27,90,1,1,0.061224
+242,47,106,585,27,91,1,1,0.050466
+243,47,107,586,27,91,1,1,0.040373
+244,47,107,587,27,91,1,1,0.035326
+245,47,108,587,27,92,1,1,0.043011
+246,47,108,588,27,92,1,1,0.037634
+247,47,109,589,27,92,1,1,0.039939
+248,47,109,589,27,93,1,1,0.053191
+249,47,110,590,27,93,1,1,0.058511
+250,47,110,591,27,93,1,1,0.069149
+251,47,111,592,27,93,1,1,0.074468
+252,47,113,593,27,93,1,1,0.074468
+253,47,115,594,28,93,1,1,0.0719
+254,47,118,595,27,94,1,1,0.068421
+255,47,120,596,28,94,1,1,0.071143
+256,47,123,597,27,95,1,1,0.067708
+257,47,125,598,28,95,1,1,0.065374
+258,47,127,599,28,95,1,1,0.065374
+259,47,130,600,28,96,1,1,0.075009
+260,47,132,601,28,96,1,1,0.0647
+261,47,135,603,28,96,1,1,0.15393
+262,47,137,602,28,96,1,1,0.055457
+263,47,139,602,29,96,1,1,0.053608
+264,47,142,601,28,97,1,1,0.063336
+265,47,144,601,29,97,1,1,0.061905
+266,47,147,600,29,98,1,1,0.17003
+267,47,149,600,29,97,1,1,0.071429
+268,47,152,599,29,98,1,1,0.075421
+269,47,154,599,30,98,1,1,0.046595
+270,47,157,598,29,99,1,1,0.023333
+271,47,159,598,30,99,1,1,0.032258
+272,47,162,597,30,100,1,1,0.044714
+273,47,164,597,30,99,1,1,0.089677
+274,47,167,596,30,100,1,1,0.073778
+275,47,169,596,31,100,1,1,0.11077
+276,47,172,595,30,101,1,1,0.1303
+277,47,174,595,31,101,1,1,0.16728
+278,47,177,595,31,101,1,1,0.1636
+279,47,179,596,31,102,1,1,0.16292
+280,47,181,598,32,102,1,1,0.15799
+281,47,184,600,32,102,1,1,0.13122
+282,47,186,601,33,102,1,1,0.13678
+283,47,189,602,33,103,1,1,0.12048
+284,47,192,603,33,104,1,1,0.090196
+285,47,195,604,33,105,1,1,0.091565
+286,47,198,605,34,106,1,1,0.08972
+287,47,201,606,34,107,1,1,0.089947
+288,47,204,607,34,108,1,1,0.094364
+289,47,207,608,34,109,1,1,0.33818
+290,47,210,609,34,110,1,1,0.37761
+291,47,213,610,35,111,1,1,0.41716
+292,47,214,610,35,112,1,1,0.39921
+293,47,215,611,35,112,1,1,0.10914
+294,47,216,612,35,112,1,1,0.068584
+295,47,218,613,35,112,1,1,0.071288
+296,47,219,614,35,113,1,1,0.075292
+297,47,220,614,35,114,1,1,0.078986
+298,47,222,615,35,114,1,1,0.081643
+299,47,223,616,35,114,1,1,0.081643
+300,47,224,617,35,114,1,1,0.083816
+301,47,226,618,35,115,1,1,0.11207
+302,47,226,619,35,115,1,1,0.11398
+303,47,226,621,35,115,1,1,0.11638
+304,47,226,622,36,116,1,1,0.12566
+305,47,226,624,36,116,1,1,0.099099
+306,47,227,625,36,117,1,1,0.095282
+307,47,227,627,36,117,1,1,0.12437
+308,47,227,628,36,118,1,1,0.10629
+309,47,227,630,37,118,1,1,0.10349
+310,47,227,631,37,119,1,1,0.11118
+311,47,228,633,37,119,1,1,0.10548
+312,47,227,633,38,120,1,1,0.10468
+313,47,227,634,38,121,1,1,0.10656
+314,47,227,635,38,121,1,1,0.10025
+315,47,227,635,38,123,1,1,0.1005
+316,47,227,636,39,123,1,1,0.094355
+317,47,227,637,39,124,1,1,0.0936
+318,47,227,637,39,125,1,1,0.093254
+319,47,227,638,39,126,1,1,0.090354
+320,47,227,639,39,126,1,1,0.088189
+321,47,227,640,40,127,1,1,0.082698
+322,47,224,639,40,128,1,1,0.093212
+323,47,222,638,40,130,1,1,0.096071
+324,47,220,638,39,130,1,1,0.1145
+325,47,217,637,40,132,1,1,0.12195
+326,47,215,637,40,132,1,1,0.10526
+327,47,213,636,39,134,1,1,0.1063
+328,47,210,635,40,135,1,1,0.11029
+329,47,208,635,39,136,1,1,0.10182
+330,47,206,634,39,137,1,1,0.10054
+331,47,204,634,39,138,1,1,0.1223
+332,47,200,632,39,139,1,1,0.12321
+333,47,196,631,39,139,1,1,0.12321
+334,47,193,630,39,139,1,1,0.12161
+335,47,189,629,39,139,1,1,0.12161
+336,47,186,628,39,139,1,1,0.10321
+337,47,181,631,39,139,1,1,0.10821
+338,47,177,634,39,139,1,1,0.10554
+339,47,173,637,38,140,1,1,0.11057
+340,47,169,640,38,140,1,1,0.10329
+341,47,165,643,38,141,1,1,0.099675
+342,47,160,646,38,142,1,1,0.10454
+343,47,155,650,38,142,1,1,0.11655
+344,47,150,654,38,142,1,1,0.10974
+345,47,145,659,38,143,1,1,0.10897
+346,47,140,664,38,144,1,1,0.10504
+347,47,135,670,38,145,1,1,0.11661
+348,47,130,671,38,146,1,1,0.10413
+349,47,125,673,38,147,1,1,0.10049
+350,47,120,675,38,148,1,1,0.091378
+351,47,115,677,38,149,1,1,0.084274
+352,47,109,677,38,151,1,1,0.087045
+353,47,104,678,38,152,1,1,0.09033
+354,47,98,679,37,153,1,1,0.090567
+355,47,92,680,37,154,1,1,0.095076
+356,47,86,681,37,155,1,1,0.10138
+357,47,80,682,37,157,1,1,0.1001
+358,47,74,683,37,158,1,1,0.10377
+359,47,68,684,37,159,1,1,0.10625
+360,47,62,685,37,160,1,1,0.10788
+361,47,56,686,37,162,1,1,0.22054
+362,47,48,690,37,163,1,1,0.21438
+363,47,41,694,37,164,1,1,0.10526
+364,47,34,698,37,165,1,1,0.25428
+365,47,27,702,36,166,1,1,0.23353
+366,47,20,706,36,167,1,1,0.25193
+367,47,12,710,37,168,1,1,0.2711
+368,47,5,714,36,169,1,1,0.24595
+369,47,-2,718,36,170,1,1,0.26174
+370,47,-9,722,36,171,1,1,0.26398
+291,48,218,621,33,99,1,1,0.088235
+292,48,219,621,33,100,1,1,0
+293,48,221,622,33,101,1,1,0.11765
+294,48,222,623,33,102,1,1,0.43033
+295,48,224,624,33,103,1,1,0.42986
+296,48,226,625,33,104,1,1,0.45658
+297,48,227,625,33,105,1,1,0.43479
+298,48,229,626,33,106,1,1,0.4343
+299,48,230,627,33,107,1,1,0.43382
+300,48,232,628,33,108,1,1,0.43335
+301,48,234,629,33,109,1,1,0.43289
+302,48,234,630,33,110,1,1,0.438
+303,48,235,632,33,111,1,1,0.4375
+304,48,236,634,33,111,1,1,0.46429
+305,48,236,635,33,113,1,1,0.44195
+306,48,237,637,33,114,1,1,0.48005
+307,48,238,639,33,114,1,1,0.51202
+308,48,238,640,33,116,1,1,0.49849
+309,48,239,642,33,116,1,1,0.54274
+310,48,240,644,33,117,1,1,0.5653
+311,48,241,646,33,118,1,1,0.58848
+312,48,240,646,33,119,1,1,0.56078
+313,48,240,647,33,119,1,1,0.56078
+314,48,240,647,33,121,1,1,0.59137
+315,48,239,648,34,121,1,1,0.57283
+316,48,239,648,33,122,1,1,0.56385
+317,48,239,649,33,123,1,1,0.56357
+318,48,238,649,34,124,1,1,0.55314
+319,48,238,650,34,124,1,1,0.60229
+320,48,238,651,34,125,1,1,0.6254
+321,48,240,651,33,127,1,1,0.69669
+322,48,237,650,33,128,1,1,0.64729
+323,48,234,650,33,129,1,1,0.59276
+324,48,232,650,33,130,1,1,0.56533
+325,48,229,650,33,130,1,1,0.51504
+326,48,227,650,33,131,1,1,0.56863
+327,48,224,649,33,133,1,1,0.57155
+328,48,221,649,33,133,1,1,0.57155
+329,48,219,649,33,134,1,1,0.61874
+330,48,216,649,33,135,1,1,0.61548
+331,48,214,649,33,136,1,1,0.63997
+332,48,210,647,33,137,1,1,0.64258
+333,48,206,646,33,137,1,1,0.61509
+334,48,202,645,33,137,1,1,0.5876
+335,48,198,644,33,137,1,1,0.5601
+336,48,193,646,33,137,1,1,0.55669
+337,48,189,649,33,137,1,1,0.54987
+338,48,185,651,33,138,1,1,0.58421
+339,48,181,654,32,137,1,1,0.60035
+340,48,177,656,32,138,1,1,0.60323
+341,48,173,659,32,138,1,1,0.60323
+342,48,167,663,32,139,1,1,0.54286
+343,48,162,668,32,140,1,1,0.59983
+344,48,156,672,33,142,1,1,0.61415
+345,48,151,677,33,142,1,1,0.64171
+346,48,145,681,34,144,1,1,0.62759
+347,48,140,686,34,145,1,1,0.64892
+348,48,134,688,34,147,1,1,0.65116
+349,48,129,689,34,147,1,1,0.67799
+350,48,124,690,34,148,1,1,0.7047
+351,48,120,691,33,149,1,1,0.75118
+352,48,113,692,33,150,1,1,0.69575
+353,48,107,694,33,151,1,1,0.69563
+354,48,100,695,33,153,1,1,0.66769
+355,48,94,697,33,153,1,1,0.63751
+356,48,87,699,34,154,1,1,0.61806
+357,48,81,700,33,156,1,1,0.60659
+358,48,74,702,34,156,1,1,0.56324
+359,48,68,703,33,158,1,1,0.60895
+360,48,61,705,34,159,1,1,0.6225
+361,48,55,707,34,160,1,1,0.67844
+362,48,47,710,34,161,1,1,0.6515
+363,48,39,714,34,162,1,1,0.64908
+364,48,31,717,34,163,1,1,0.62195
+365,48,24,721,34,164,1,1,0.64658
+366,48,16,724,34,165,1,1,0.61928
+367,48,8,728,34,166,1,1,0.62156
+368,48,1,731,34,167,1,1,1
+369,48,-7,735,34,168,1,1,0.77143
+370,48,-15,738,34,169,1,1,0.54286
+1,49,828,513,16,42,1,1,1
+2,49,828,506,16,42,1,1,1
+3,49,827,511,16,42,1,1,1
+4,49,829,510,16,42,1,1,1
+5,49,830,509,16,42,1,1,1
+6,49,831,520,16,42,1,1,1
+7,49,833,512,16,42,1,1,1
+8,49,831,519,16,43,1,1,1
+9,49,830,519,16,43,1,1,1
+10,49,830,519,16,43,1,1,1
+11,49,830,519,16,44,1,1,1
+12,49,831,522,16,44,1,1,1
+13,49,831,510,16,44,1,1,1
+14,49,831,514,16,44,1,1,1
+15,49,831,514,16,44,1,1,1
+16,49,830,514,16,44,1,1,1
+17,49,830,514,16,44,1,1,1
+18,49,830,514,16,45,1,1,1
+19,49,829,514,16,45,1,1,1
+20,49,829,514,16,45,1,1,1
+21,49,829,514,16,46,1,1,0.67584
+22,49,829,515,16,46,1,1,0.21277
+23,49,829,516,16,46,1,1,0.21277
+24,49,829,517,16,47,1,1,0.22917
+25,49,829,519,16,47,1,1,0.3125
+26,49,829,521,16,47,1,1,0.25
+27,49,829,524,16,47,1,1,0.27083
+28,49,829,524,16,47,1,1,0.33333
+29,49,830,524,16,48,1,1,0.30612
+30,49,829,531,16,48,1,1,0.20408
+31,49,828,538,16,48,1,1,0.83193
+32,49,828,532,16,49,1,1,1
+33,49,828,527,17,49,1,1,1
+34,49,828,530,17,50,1,1,1
+35,49,827,521,17,50,1,1,1
+36,49,827,518,17,50,1,1,1
+37,49,827,515,17,51,1,1,1
+38,49,827,512,17,52,1,1,1
+39,49,827,510,18,52,1,1,1
+40,49,827,509,18,53,1,1,1
+41,49,827,509,19,53,1,1,1
+42,49,826,510,19,53,1,1,1
+43,49,825,511,19,53,1,1,1
+44,49,825,513,19,53,1,1,1
+45,49,825,513,19,54,1,1,1
+46,49,825,514,19,54,1,1,1
+47,49,825,515,19,54,1,1,1
+48,49,825,516,19,54,1,1,1
+49,49,825,517,19,54,1,1,1
+50,49,825,518,19,54,1,1,1
+51,49,826,519,19,54,1,1,1
+52,49,825,518,19,54,1,1,1
+53,49,824,517,19,54,1,1,1
+54,49,823,517,19,53,1,1,1
+55,49,822,516,19,54,1,1,1
+56,49,822,516,18,53,1,1,1
+57,49,821,515,18,53,1,1,1
+58,49,820,514,18,54,1,1,1
+59,49,819,514,18,53,1,1,1
+60,49,818,513,18,53,1,1,1
+61,49,818,513,18,53,1,1,1
+62,49,817,515,18,53,1,1,1
+63,49,816,517,18,53,1,1,1
+64,49,817,511,18,53,1,1,1
+65,49,814,514,18,53,1,1,1
+66,49,814,518,18,53,1,1,1
+67,49,813,512,18,53,1,1,1
+68,49,811,512,18,54,1,1,1
+69,49,809,513,18,54,1,1,1
+70,49,807,513,18,55,1,1,1
+71,49,805,514,18,55,1,1,1
+72,49,802,513,18,55,1,1,1
+73,49,799,513,18,55,1,1,1
+74,49,796,513,18,55,1,1,1
+75,49,793,513,18,55,1,1,1
+76,49,790,513,19,55,1,1,1
+77,49,787,512,19,56,1,1,1
+78,49,784,512,19,56,1,1,1
+79,49,781,512,19,56,1,1,1
+80,49,778,512,19,56,1,1,1
+81,49,775,512,20,56,1,1,1
+82,49,771,512,20,56,1,1,1
+83,49,767,513,20,56,1,1,1
+84,49,763,513,20,57,1,1,1
+85,49,760,514,20,57,1,1,1
+86,49,756,515,20,57,1,1,1
+87,49,752,516,20,57,1,1,1
+88,49,748,517,20,57,1,1,1
+89,49,744,518,20,57,1,1,1
+90,49,740,519,20,57,1,1,1
+91,49,737,520,20,58,1,1,1
+92,49,732,521,20,58,1,1,1
+93,49,728,523,20,58,1,1,1
+94,49,723,524,20,59,1,1,1
+95,49,719,526,20,59,1,1,1
+96,49,715,527,20,59,1,1,1
+97,49,711,528,20,60,1,1,1
+98,49,707,530,20,60,1,1,1
+99,49,702,529,20,60,1,1,1
+100,49,698,529,20,60,1,1,1
+101,49,694,529,20,60,1,1,1
+102,49,689,528,20,61,1,1,1
+103,49,684,528,20,61,1,1,1
+104,49,680,528,20,61,1,1,1
+105,49,675,528,20,61,1,1,1
+106,49,671,528,20,61,1,1,1
+107,49,666,527,20,62,1,1,1
+108,49,661,527,20,62,1,1,1
+109,49,657,527,20,62,1,1,1
+110,49,652,527,20,62,1,1,1
+111,49,648,527,20,62,1,1,1
+112,49,642,527,20,62,1,1,1
+113,49,637,527,20,63,1,1,1
+114,49,632,528,20,62,1,1,1
+115,49,627,528,20,63,1,1,1
+116,49,622,529,20,63,1,1,1
+117,49,616,529,21,63,1,1,1
+118,49,611,529,21,64,1,1,1
+119,49,606,530,21,63,1,1,1
+120,49,601,530,21,64,1,1,1
+121,49,596,531,21,64,1,1,1
+122,49,590,531,21,64,1,1,1
+123,49,585,531,21,65,1,1,1
+124,49,580,532,21,64,1,1,1
+125,49,575,532,21,65,1,1,1
+126,49,570,532,21,65,1,1,1
+127,49,565,533,21,65,1,1,1
+128,49,560,533,21,65,1,1,1
+129,49,554,533,22,66,1,1,1
+130,49,549,534,22,65,1,1,1
+131,49,544,534,22,66,1,1,1
+132,49,539,534,21,66,1,1,1
+133,49,534,535,21,66,1,1,1
+134,49,529,535,21,66,1,1,1
+135,49,524,535,21,67,1,1,1
+136,49,519,536,21,66,1,1,1
+137,49,513,536,22,67,1,1,1
+138,49,508,536,22,67,1,1,1
+139,49,503,537,22,67,1,1,1
+140,49,498,537,22,67,1,1,1
+141,49,493,537,22,68,1,1,1
+142,49,488,538,21,67,1,1,1
+143,49,483,538,21,68,1,1,1
+144,49,477,538,22,68,1,1,1
+145,49,472,539,22,68,1,1,1
+146,41,1,1,1
+226,49,125,598,27,82,1,1,1
+227,49,124,599,27,82,1,1,1
+228,49,120,600,27,83,1,1,1
+229,49,117,601,27,84,1,1,1
+230,49,115,601,27,84,1,1,1
+231,49,114,601,27,84,1,1,1
+232,49,112,601,27,85,1,1,1
+233,49,111,601,27,85,1,1,1
+234,49,109,601,27,86,1,1,1
+235,49,108,601,27,86,1,1,1
+236,49,107,601,27,87,1,1,1
+237,49,106,600,27,87,1,1,1
+238,49,106,599,27,88,1,1,1
+239,49,105,599,28,87,1,1,1
+240,49,105,598,28,88,1,1,1
+241,49,105,598,28,88,1,1,1
+242,49,105,598,28,89,1,1,1
+243,49,105,599,29,89,1,1,1
+244,49,106,600,28,89,1,1,1
+245,49,106,601,29,89,1,1,1
+246,49,107,602,28,90,1,1,1
+247,49,107,602,29,91,1,1,1
+248,49,107,603,29,91,1,1,1
+249,49,108,604,29,91,1,1,1
+250,49,108,605,29,91,1,1,1
+251,49,109,606,29,92,1,1,1
+252,49,111,607,29,92,1,1,1
+253,49,114,608,29,93,1,1,1
+254,49,116,609,29,93,1,1,1
+255,49,119,610,29,94,1,1,1
+256,49,121,611,29,95,1,1,1
+257,49,124,612,29,95,1,1,1
+258,49,126,613,29,96,1,1,1
+259,49,129,615,29,96,1,1,1
+260,49,131,615,29,96,1,1,1
+261,49,133,615,29,97,1,1,1
+262,49,136,615,29,97,1,1,1
+263,49,138,615,29,98,1,1,1
+264,49,141,616,29,98,1,1,1
+265,49,143,615,29,98,1,1,1
+266,49,146,614,29,99,1,1,1
+267,49,149,614,29,99,1,1,1
+268,49,152,613,29,99,1,1,1
+269,49,154,612,29,100,1,1,1
+270,49,157,612,29,100,1,1,1
+271,49,160,611,29,101,1,1,1
+272,49,163,610,29,101,1,1,1
+273,49,166,610,29,101,1,1,1
+274,49,168,609,29,102,1,1,1
+275,49,171,608,29,102,1,1,1
+276,49,174,608,29,102,1,1,1
+277,49,177,607,29,103,1,1,1
+278,49,180,607,29,103,1,1,1
+279,49,182,608,29,104,1,1,1
+280,49,184,610,29,104,1,1,1
+281,49,186,612,29,104,1,1,1
+282,49,188,614,30,104,1,1,1
+283,49,190,616,30,104,1,1,1
+284,49,192,617,30,106,1,1,1
+285,49,194,619,30,106,1,1,1
+286,49,196,621,31,106,1,1,1
+287,49,198,623,31,106,1,1,1
+288,49,200,625,31,106,1,1,1
+289,49,203,627,31,107,1,1,1
+290,49,204,627,31,108,1,1,1
+291,49,206,628,31,108,1,1,1
+292,49,207,629,32,108,1,1,1
+293,49,209,630,31,109,1,1,1
+294,49,210,631,32,109,1,1,1
+295,49,212,632,32,109,1,1,1
+296,49,214,633,31,109,1,1,1
+297,49,215,634,32,110,1,1,1
+298,49,217,635,32,110,1,1,1
+299,49,218,636,32,110,1,1,1
+300,49,220,637,32,110,1,1,1
+301,49,222,638,32,111,1,1,1
+302,49,222,640,32,111,1,1,1
+303,49,223,642,32,112,1,1,1
+304,49,223,644,32,112,1,1,1
+305,49,224,646,32,113,1,1,1
+306,49,223,645,32,113,1,1,1
+307,49,223,648,32,114,1,1,1
+308,49,224,652,32,114,1,1,1
+309,49,223,652,32,115,1,1,1
+310,49,223,653,32,115,1,1,1
+311,49,223,654,32,115,1,1,1
+312,49,223,654,32,117,1,1,1
+313,49,223,655,32,117,1,1,1
+314,49,223,656,31,117,1,1,1
+315,49,223,656,31,119,1,1,1
+316,49,223,657,31,119,1,1,1
+317,49,223,658,31,119,1,1,1
+318,49,223,659,31,120,1,1,1
+319,49,222,659,30,121,1,1,1
+320,49,221,659,30,122,1,1,1
+321,49,220,659,30,123,1,1,1
+322,49,219,660,30,123,1,1,1
+323,49,218,660,30,124,1,1,1
+324,49,217,660,30,125,1,1,1
+325,49,216,661,30,126,1,1,1
+326,49,212,661,30,126,1,1,1
+327,49,209,661,30,126,1,1,1
+328,49,206,661,30,127,1,1,1
+329,49,202,659,30,128,1,1,1
+330,49,198,658,31,129,1,1,1
+331,49,194,657,32,130,1,1,1
+332,49,190,656,32,130,1,1,1
+333,49,186,655,33,131,1,1,1
+334,49,182,654,34,132,1,1,1
+335,49,178,653,35,133,1,1,1
+336,49,173,654,35,134,1,1,1
+337,49,168,655,36,136,1,1,1
+338,49,162,659,37,136,1,1,1
+339,49,158,662,36,136,1,1,1
+340,49,154,665,36,137,1,1,1
+341,49,150,668,36,138,1,1,1
+342,49,146,671,36,139,1,1,1
+343,49,139,676,36,141,1,1,1
+344,49,133,681,36,141,1,1,1
+345,49,127,686,36,142,1,1,1
+346,49,122,691,36,143,1,1,1
+347,49,116,694,36,143,1,1,1
+348,49,110,697,36,144,1,1,1
+349,49,103,698,37,145,1,1,1
+350,49,97,699,37,147,1,1,1
+351,49,91,700,37,149,1,1,1
+352,49,84,701,39,151,1,1,1
+353,49,78,703,39,152,1,1,1
+354,49,72,704,39,154,1,1,1
+355,49,65,705,41,156,1,1,1
+356,49,59,706,41,158,1,1,1
+357,49,53,707,41,160,1,1,1
+358,49,47,709,42,161,1,1,1
+359,49,38,711,43,162,1,1,1
+360,49,30,714,44,163,1,1,1
+361,49,21,717,45,163,1,1,1
+362,49,13,720,46,164,1,1,1
+363,49,5,723,46,165,1,1,1
+364,49,-4,726,48,165,1,1,0.89796
+365,49,-12,729,48,166,1,1,0.73469
+366,49,-20,732,49,167,1,1,0.58
+367,49,-28,737,49,167,1,1,0.42
+1,50,776,508,15,46,1,1,0.46809
+2,50,776,498,14,45,1,1,0.5
+3,50,774,509,15,44,1,1,0.48889
+4,50,775,506,15,44,1,1,0.57222
+5,50,776,503,16,45,1,1,0.54348
+6,50,779,515,16,48,1,1,0.5006
+7,50,776,506,16,47,1,1,0.56863
+8,50,776,514,17,48,1,1,0.56463
+9,50,776,513,16,48,1,1,0.55822
+10,50,776,512,16,48,1,1,0.53061
+11,50,776,511,16,48,1,1,0.57143
+12,50,775,515,16,49,1,1,0.5
+13,50,774,506,17,47,1,1,0.46875
+14,50,773,506,17,47,1,1,0.5625
+15,50,773,507,17,47,1,1,0.54745
+16,50,772,507,17,47,1,1,0.54745
+17,50,772,508,17,47,1,1,0.52778
+18,50,772,509,17,47,1,1,0.47917
+19,50,771,509,17,47,1,1,0.5081
+20,50,771,510,17,46,1,1,0.49764
+21,50,770,511,18,46,1,1,0.52408
+22,50,770,511,17,46,1,1,0.51773
+23,50,769,512,18,45,1,1,0.57208
+24,50,769,513,18,45,1,1,0.59153
+25,50,768,514,18,45,1,1,0.53776
+26,50,768,515,18,45,1,1,0.3913
+27,50,767,516,18,45,1,1,0.45652
+28,50,767,518,18,45,1,1,0.47826
+29,50,767,519,18,43,1,1,0.45455
+30,50,765,523,18,46,1,1,0.38298
+31,50,765,535,18,41,1,1,0.40476
+32,50,764,527,19,46,1,1,0.46809
+33,50,764,520,20,50,1,1,0.43137
+34,50,764,524,20,50,1,1,0.48926
+35,50,763,519,20,50,1,1,0.55556
+36,50,762,514,21,50,1,1,0.63636
+37,50,761,510,22,49,1,1,0.68957
+38,50,762,509,21,49,1,1,0.67545
+39,50,762,507,21,49,1,1,0.64455
+40,50,762,506,21,48,1,1,0.65306
+41,50,762,505,22,48,1,1,0.69831
+42,50,761,505,22,49,1,1,0.70435
+43,50,761,506,21,49,1,1,0.69091
+44,50,760,507,22,49,1,1,0.71913
+45,50,760,508,21,49,1,1,0.69091
+46,50,759,509,22,49,1,1,0.70435
+47,50,759,510,21,49,1,1,0.69091
+48,50,758,511,21,49,1,1,0.70636
+49,50,758,512,21,49,1,1,0.72182
+50,50,757,513,21,49,1,1,0.69091
+51,50,757,514,21,49,1,1,0.69091
+52,50,756,513,21,49,1,1,0.70636
+53,50,755,512,21,49,1,1,0.73727
+54,50,754,511,21,49,1,1,0.73727
+55,50,754,511,21,49,1,1,0.73727
+56,50,753,510,21,49,1,1,0.75273
+57,50,752,509,21,49,1,1,0.76818
+58,50,752,509,21,49,1,1,0.72182
+59,50,751,508,21,49,1,1,0.72182
+60,50,750,507,21,49,1,1,0.72182
+61,50,750,507,21,49,1,1,0.74091
+62,50,748,504,22,50,1,1,0.75448
+63,50,746,512,22,51,1,1,0.70151
+64,50,747,504,21,52,1,1,0.69383
+65,50,744,507,21,54,1,1,0.70496
+66,50,744,512,21,55,1,1,0.67532
+67,50,741,505,21,54,1,1,0.69091
+68,50,740,511,21,56,1,1,0.66826
+69,50,738,509,20,56,1,1,0.68672
+70,50,736,508,20,56,1,1,0.68672
+71,50,734,507,20,56,1,1,0.7193
+72,50,730,506,20,56,1,1,0.6792
+73,50,727,506,20,56,1,1,0.65915
+74,50,724,505,19,57,1,1,0.65517
+75,50,720,505,20,57,1,1,0.65107
+76,50,717,504,20,58,1,1,0.67716
+77,50,714,504,19,57,1,1,0.66897
+78,50,710,503,20,58,1,1,0.69007
+79,50,707,503,19,58,1,1,0.67458
+80,50,704,502,19,59,1,1,0.68
+81,50,701,502,19,59,1,1,0.70833
+82,50,698,501,20,61,1,1,0.7404
+83,50,694,502,19,61,1,1,0.70645
+84,50,691,502,19,62,1,1,0.7619
+85,50,687,502,19,63,1,1,0.76562
+86,50,683,503,19,63,1,1,0.77656
+87,50,680,504,19,63,1,1,0.77656
+88,50,675,508,19,62,1,1,0.73333
+89,50,671,509,19,62,1,1,0.75556
+90,50,667,510,19,62,1,1,0.79365
+91,50,663,511,20,63,1,1,0.83929
+92,50,656,515,19,61,1,1,0.75806
+93,50,651,516,19,61,1,1,0.75806
+94,50,647,518,19,60,1,1,0.78361
+95,50,642,520,19,59,1,1,0.78
+96,50,638,522,19,58,1,1,0.79661
+97,50,633,524,19,57,1,1,0.77241
+98,50,629,526,19,56,1,1,0.81842
+99,50,625,523,19,59,1,1,0.84
+100,50,622,520,19,63,1,1,0.86875
+101,50,617,523,19,62,1,1,0.85556
+102,50,612,522,19,62,1,1,0.88571
+103,50,607,522,19,62,1,1,0.86667
+104,50,602,521,19,62,1,1,0.88095
+105,50,598,521,19,62,1,1,0.90476
+106,50,593,521,19,62,1,1,0.92063
+107,50,588,520,19,62,1,1,0.88571
+108,50,584,520,19,62,1,1,0.92063
+109,50,579,519,19,62,1,1,0.90476
+110,50,574,519,19,62,1,1,0.94048
+111,50,570,519,19,62,1,1,0.98095
+112,50,564,519,19,62,1,1,0.96349
+113,50,558,520,19,62,1,1,0.98175
+114,50,552,520,19,62,1,1,0.98175
+115,50,546,521,19,62,1,1,1
+116,50,541,522,19,62,1,1,1
+117,50,535,522,19,62,1,1,1
+118,50,529,523,19,62,1,1,1
+119,50,523,523,19,62,1,1,1
+120,50,517,524,19,62,1,1,1
+121,50,512,525,19,62,1,1,1
+122,50,506,525,19,62,1,1,1
+123,50,501,525,19,63,1,1,1
+124,50,496,525,19,63,1,1,1
+125,50,490,526,20,63,1,1,1
+126,50,485,526,20,63,1,1,1
+127,50,480,526,20,64,1,1,1
+128,50,475,527,20,64,1,1,1
+129,50,468,527,20,64,1,1,1
+130,50,462,527,19,64,1,1,1
+131,50,456,527,19,65,1,1,1
+132,50,450,527,19,66,1,1,1
+133,50,444,528,20,66,1,1,1
+134,50,438,529,21,67,1,1,1
+135,50,432,530,22,67,1,1,1
+136,50,427,531,22,68,1,1,1
+137,50,421,530,22,68,1,1,1
+138,50,416,530,22,68,1,1,1
+139,50,411,530,22,68,1,1,1
+140,50,407,530,22,68,1,1,1
+141,50,403,530,22,68,1,1,1
+142,50,397,529,23,68,1,1,1
+143,50,392,529,23,68,1,1,1
+144,50,387,529,23,68,1,1,1
+145,50,382,529,23,68,1,1,1
+146,50,377,529,24,68,1,1,1
+147,50,370,530,25,67,1,1,1
+148,50,364,531,25,67,1,1,1
+149,50,358,532,25,67,1,1,1
+150,50,352,533,25,67,1,1,1
+151,50,346,534,25,67,1,1,1
+152,50,339,534,25,68,1,1,1
+153,50,333,535,25,69,1,1,1
+154,50,327,536,24,69,1,1,1
+155,50,320,537,25,70,1,1,1
+156,50,314,538,25,70,1,1,1
+157,50,308,539,24,71,1,1,1
+158,50,301,540,25,71,1,1,1
+159,50,295,541,24,72,1,1,1
+160,50,289,542,24,72,1,1,1
+161,50,283,543,24,73,1,1,1
+162,50,277,543,24,73,1,1,1
+163,50,272,543,24,73,1,1,1
+164,50,266,543,24,73,1,1,1
+165,50,261,544,24,73,1,1,1
+166,50,255,544,24,73,1,1,1
+167,50,250,544,24,73,1,1,1
+168,50,245,545,24,73,1,1,1
+169,50,239,545,24,73,1,1,1
+170,50,234,545,24,73,1,1,1
+171,50,229,546,24,73,1,1,1
+172,50,224,546,24,73,1,1,1
+173,50,219,547,24,73,1,1,1
+174,50,214,547,24,73,1,1,1
+175,50,209,548,24,73,1,1,1
+176,50,204,549,24,73,1,1,1
+177,50,199,549,24,73,1,1,1
+178,50,194,550,24,73,1,1,1
+179,50,189,550,24,73,1,1,1
+180,50,184,551,24,73,1,1,1
+181,50,179,552,24,73,1,1,1
+182,50,174,553,24,73,1,1,1
+183,50,169,554,24,73,1,1,1
+184,50,165,555,24,73,1,1,1
+185,50,160,557,24,73,1,1,1
+186,50,156,558,24,73,1,1,1
+187,50,151,559,24,73,1,1,1
+188,50,146,561,24,73,1,1,1
+189,50,142,562,24,73,1,1,1
+190,50,137,563,24,73,1,1,1
+191,50,133,565,24,73,1,1,1
+192,50,128,565,24,74,1,1,1
+193,50,124,566,24,74,1,1,1
+194,50,119,566,24,75,1,1,1
+195,50,115,567,24,76,1,1,1
+196,50,110,568,25,76,1,1,1
+197,50,106,568,24,77,1,1,1
+198,50,101,569,25,77,1,1,1
+199,50,97,570,25,78,1,1,1
+200,50,92,570,25,79,1,1,1
+201,50,88,571,25,79,1,1,1
+202,50,84,572,25,79,1,1,1
+203,50,79,572,25,81,1,1,1
+204,50,75,573,25,81,1,1,1
+205,50,70,574,26,81,1,1,1
+206,50,66,574,25,82,1,1,1
+207,50,61,575,26,83,1,1,1
+208,50,57,576,26,83,1,1,1
+209,50,52,576,26,84,1,1,1
+210,50,48,577,26,84,1,1,1
+211,50,44,578,26,85,1,1,1
+212,50,40,578,26,85,1,1,1
+213,50,36,578,27,86,1,1,1
+214,50,33,579,27,86,1,1,1
+215,50,29,579,28,87,1,1,1
+216,50,26,580,28,87,1,1,1
+217,50,22,580,29,88,1,1,1
+218,50,19,581,29,88,1,1,1
+219,50,15,582,30,89,1,1,1
+220,50,12,583,30,90,1,1,1
+221,50,8,579,29,93,1,1,1
+222,50,5,580,29,93,1,1,1
+223,50,3,581,29,93,1,1,1
+224,50,1,583,29,93,1,1,1
+225,50,-2,586,29,89,1,1,0.26296
+226,50,-5,591,31,91,1,1,0.8125
+227,50,-5,591,31,91,1,1,0.8125
+228,50,-5,591,31,91,1,1,0.8125
+229,50,-9,592,30,92,1,1,0.67742
+230,50,-15,591,32,93,1,1,0.066409
+231,50,-13,593,31,88,1,1,0.037921
+101,51,661,516,20,60,1,1,0.27557
+102,51,654,516,19,59,1,1,0.45
+103,51,649,515,19,59,1,1,0.5
+104,51,644,515,19,59,1,1,0.45
+105,51,639,515,20,59,1,1,0.52381
+106,51,634,515,20,59,1,1,0.43413
+107,51,630,514,19,60,1,1,0.45
+108,51,625,514,20,60,1,1,0.47619
+109,51,620,514,20,60,1,1,0.42857
+110,51,615,514,20,60,1,1,0.42857
+111,51,611,514,20,60,1,1,0.38642
+112,51,605,514,20,60,1,1,0.43404
+113,51,600,514,20,60,1,1,0.43404
+114,51,594,515,20,60,1,1,0.42857
+115,51,589,515,20,60,1,1,0.43326
+116,51,584,516,20,60,1,1,0.43326
+117,51,578,516,20,60,1,1,0.47619
+118,51,573,516,20,60,1,1,0.47619
+119,51,567,517,20,60,1,1,0.47619
+120,51,562,517,20,60,1,1,0.47619
+121,51,557,518,20,60,1,1,0.47619
+122,51,551,518,20,60,1,1,0.47619
+123,51,546,519,20,60,1,1,0.47619
+124,51,540,520,20,60,1,1,0.47619
+125,51,535,521,20,60,1,1,0.47619
+126,51,529,521,20,60,1,1,0.47619
+127,51,524,522,20,60,1,1,0.47619
+128,51,518,523,20,60,1,1,0.52381
+129,51,513,524,20,60,1,1,0.47619
+130,51,508,525,20,60,1,1,0.47619
+131,51,500,526,20,60,1,1,0.57143
+132,51,495,526,21,60,1,1,0.54545
+133,51,491,526,21,60,1,1,0.5
+134,51,485,525,21,61,1,1,0.5
+135,51,479,525,22,61,1,1,0.52174
+136,51,474,525,21,61,1,1,0.5
+137,51,468,525,22,61,1,1,0.52174
+138,51,462,525,22,61,1,1,0.56522
+139,51,457,525,22,61,1,1,0.56522
+140,51,451,525,22,61,1,1,0.6087
+141,51,446,525,22,61,1,1,0.56942
+142,51,440,525,22,61,1,1,0.57083
+143,51,435,525,22,62,1,1,0.65217
+144,51,429,525,23,63,1,1,0.62826
+145,51,424,525,23,64,1,1,0.66667
+146,51,419,525,23,65,1,1,0.66667
+147,51,413,525,23,65,1,1,0.70833
+148,51,408,525,23,66,1,1,0.75
+149,51,402,525,24,67,1,1,0.68
+150,51,397,525,24,68,1,1,0.64
+151,51,392,525,24,69,1,1,0.56
+152,51,385,526,24,69,1,1,0.6
+153,51,378,527,24,69,1,1,0.64
+154,51,372,528,24,69,1,1,0.6
+155,51,365,529,24,69,1,1,0.64
+156,51,359,531,24,69,1,1,0.6
+157,51,352,532,24,69,1,1,0.64
+158,51,345,533,24,69,1,1,0.68
+159,51,339,534,24,69,1,1,0.68
+160,51,332,535,24,69,1,1,0.72
+161,51,326,537,24,69,1,1,0.76
+162,51,320,538,24,68,1,1,0.76
+163,51,314,539,24,68,1,1,0.8
+164,51,309,540,24,68,1,1,0.76
+165,51,303,541,24,67,1,1,0.76
+166,51,297,542,24,67,1,1,0.8
+167,51,292,543,24,67,1,1,0.76
+168,51,286,543,24,67,1,1,0.8
+169,51,281,543,24,67,1,1,0.8
+170,51,275,543,24,67,1,1,0.84
+171,51,270,544,24,67,1,1,0.84
+172,51,264,543,25,68,1,1,0.88462
+173,51,259,543,25,68,1,1,0.88462
+174,51,253,542,26,69,1,1,0.88889
+175,51,248,542,26,69,1,1,0.92593
+176,51,243,541,26,71,1,1,0.92593
+177,51,237,541,27,71,1,1,0.92857
+178,51,232,540,27,72,1,1,1
+179,51,226,540,28,72,1,1,1
+180,51,221,539,28,73,1,1,1
+181,51,216,539,28,74,1,1,1
+182,51,211,540,28,74,1,1,0.9692
+183,51,206,541,28,75,1,1,0.9696
+184,51,201,542,28,75,1,1,0.94011
+185,51,196,543,28,76,1,1,1
+186,51,191,545,28,76,1,1,1
+187,51,186,546,28,76,1,1,1
+188,51,181,547,28,77,1,1,1
+189,51,176,548,28,77,1,1,1
+190,51,171,549,28,78,1,1,1
+191,51,167,551,27,78,1,1,1
+192,51,162,552,27,78,1,1,1
+193,51,157,553,27,79,1,1,1
+194,51,152,554,27,79,1,1,1
+195,51,147,555,27,80,1,1,1
+196,51,142,556,27,80,1,1,1
+197,51,137,557,27,81,1,1,1
+198,51,132,558,27,81,1,1,1
+199,51,127,559,27,82,1,1,1
+200,51,122,560,27,82,1,1,1
+201,51,118,561,26,83,1,1,1
+202,51,112,561,27,84,1,1,1
+203,51,107,562,27,84,1,1,1
+204,51,102,563,27,84,1,1,1
+205,51,96,564,28,84,1,1,0.96957
+206,51,91,565,28,85,1,1,0.96913
+207,51,86,565,28,86,1,1,0.93896
+208,51,80,566,29,86,1,1,0.88199
+209,51,75,567,29,86,1,1,0.88046
+210,51,70,568,29,86,1,1,0.85057
+211,51,65,569,29,87,1,1,0.82045
+212,51,61,569,29,87,1,1,0.82045
+213,51,57,570,29,87,1,1,0.78788
+214,51,53,570,29,88,1,1,0.7603
+215,51,50,571,28,87,1,1,0.74922
+216,51,46,571,28,88,1,1,0.72104
+217,51,42,572,28,88,1,1,0.68617
+218,51,39,572,27,88,1,1,0.67897
+219,51,35,573,27,88,1,1,0.64687
+220,51,31,573,27,89,1,1,0.61905
+221,51,28,574,27,89,1,1,0.6627
+222,51,23,575,27,89,1,1,0.59524
+223,51,18,577,28,88,1,1,0.50601
+224,51,14,579,28,88,1,1,0.07284
+225,51,10,581,27,88,1,1,0.072231
+226,51,6,583,27,88,1,1,0.092697
+227,51,2,585,27,88,1,1,0.069823
+228,51,-2,587,27,89,1,1,0.039683
+229,51,-8,587,27,89,1,1,0.037698
+230,51,-13,587,27,89,1,1,0.022222
+231,51,-16,586,27,89,1,1,0.030556
+224,52,10,589,32,85,1,1,0.36364
+225,52,8,590,31,85,1,1,0.375
+226,52,7,592,29,85,1,1,0.33333
+227,52,6,593,28,86,1,1,0.27586
+228,52,5,595,26,86,1,1,0.18519
+229,52,3,596,25,86,1,1,0.26923
+230,52,2,598,24,86,1,1,0.36
+231,52,1,599,22,87,1,1,1
+232,52,0,601,21,87,1,1,0.95455
+233,52,-1,596,25,90,1,1,0.92308
+234,52,-5,596,22,91,1,1,0.73913
+235,52,-5,596,23,88,1,1,0.75
+236,52,-9,596,24,89,1,1,0.6
+237,52,-7,596,23,90,1,1,0.66667
+238,52,-10,601,23,83,1,1,0.54167
+239,52,-11,596,22,88,1,1,0.47826
+240,52,-11,594,22,90,1,1,0.47826
+241,52,-12,596,22,91,1,1,0.43478
+242,52,-12,596,21,88,1,1,0.40909
+243,52,-11,593,20,90,1,1,0.42857
+244,52,-10,594,21,90,1,1,0.5
+245,52,-11,598,22,89,1,1,0.47826
+246,52,-11,594,23,89,1,1,0.5
+247,52,-11,604,23,83,1,1,0.5
+248,52,-11,602,25,85,1,1,0.53846
+249,52,-9,594,23,98,1,1,0.58333
+250,52,-12,601,25,91,1,1,0.5
+251,52,-13,597,25,96,1,1,0.46154
+252,52,-12,599,23,98,1,1,0.45833
+253,52,-10,604,24,91,1,1,0.56
+254,52,-10,597,28,101,1,1,0.62069
+255,52,-10,603,33,99,1,1,0.67647
+256,52,-5,606,30,99,1,1,0.80645
+257,52,-4,607,31,100,1,1,0.84375
+258,52,-2,606,30,100,1,1,0.39221
+259,52,0,606,30,100,1,1,0.39285
+260,52,0,607,29,100,1,1,0.3
+261,52,5,611,32,97,1,1,0.42424
+262,52,6,611,32,97,1,1,0.39394
+263,52,8,611,31,98,1,1,0.375
+264,52,10,611,30,98,1,1,0.45161
+265,52,12,611,30,99,1,1,1
+266,52,14,611,30,101,1,1,0.58065
+267,52,17,612,30,102,1,1,1
+268,52,17,613,34,103,1,1,1
+269,52,22,608,28,102,1,1,0.51724
+270,52,26,608,31,101,1,1,0.59375
+271,52,28,606,30,99,1,1,0.51613
+272,52,29,606,30,99,1,1,0.3871
+273,52,30,606,31,100,1,1,1
+274,52,31,604,31,101,1,1,0.28125
+275,52,35,602,24,103,1,1,0.14538
+276,52,35,603,30,103,1,1,0.23325
+277,52,35,601,32,104,1,1,0.31631
+278,52,35,601,39,104,1,1,0.41143
+279,52,35,604,41,102,1,1,0.38095
+280,52,40,606,38,103,1,1,0.38462
+281,52,43,610,38,103,1,1,0.38462
+282,52,43,611,39,103,1,1,0.375
+283,52,43,613,41,103,1,1,0.38095
+284,52,43,612,40,104,1,1,0.31707
+285,52,46,614,40,105,1,1,0.21951
+286,52,50,616,39,106,1,1,0.125
+287,52,55,616,40,111,1,1,1
+288,52,55,617,41,111,1,1,0.2619
+289,52,56,618,41,111,1,1,0.33333
+290,52,57,619,41,111,1,1,0.19048
+291,52,57,620,42,111,1,1,0.16279
+292,52,58,621,42,112,1,1,0.25581
+293,52,59,622,42,112,1,1,0.23256
+294,52,60,623,42,112,1,1,0.18605
+295,52,60,624,43,112,1,1,0.18182
+296,52,61,625,43,112,1,1,0.15909
+297,52,62,626,43,113,1,1,0.18182
+298,52,63,627,43,113,1,1,0.18182
+299,52,63,628,44,113,1,1,0.22222
+300,52,64,629,44,113,1,1,0.24444
+301,52,65,630,44,113,1,1,0.26667
+302,52,66,631,44,114,1,1,0.28889
+303,52,65,633,44,115,1,1,0.26667
+304,52,66,632,44,115,1,1,0.33487
+305,52,64,638,46,118,1,1,0.30377
+306,52,63,636,46,119,1,1,0.31915
+307,52,62,639,46,120,1,1,1
+308,52,62,643,45,120,1,1,0.32609
+309,52,62,642,45,121,1,1,0.34783
+310,52,60,643,47,121,1,1,0.33333
+311,52,59,645,48,121,1,1,0.38776
+312,52,59,645,47,121,1,1,0.35417
+313,52,56,651,50,117,1,1,0.35294
+314,52,54,650,49,119,1,1,0.32
+315,52,52,650,49,121,1,1,0.32
+316,52,50,651,49,121,1,1,0.32
+317,52,49,652,49,122,1,1,0.34
+318,52,48,653,48,122,1,1,0.30612
+319,52,47,654,48,123,1,1,0.30612
+320,52,43,653,49,124,1,1,0.28
+321,52,45,652,44,128,1,1,0.31111
+322,52,40,652,50,128,1,1,0.33333
+323,52,40,653,49,128,1,1,0.36
+324,52,36,652,50,129,1,1,0.33333
+325,52,33,651,50,130,1,1,0.29412
+326,52,30,653,50,131,1,1,0.35294
+327,52,27,651,50,132,1,1,0.39216
+328,52,26,654,49,131,1,1,0.44
+329,52,22,649,49,133,1,1,0.3
+330,52,16,649,49,135,1,1,0.26
+331,52,10,649,49,138,1,1,0.24
+332,52,5,646,51,133,1,1,0.34615
+333,52,1,647,50,133,1,1,0.37255
+334,52,-4,644,51,133,1,1,0.33123
+335,52,-9,646,50,132,1,1,0.35294
+336,52,-15,646,51,141,1,1,0.38462
+337,52,-20,648,51,141,1,1,0.59615
+338,52,-24,652,51,141,1,1,0.51923
+339,52,-29,655,51,142,1,1,0.42308
+531,53,1905,538,24,70,1,1,0.34254
+532,53,1883,542,21,73,1,1,0.48649
+533,53,1862,544,21,72,1,1,0.47945
+534,53,1841,545,21,72,1,1,0.49315
+535,53,1819,544,21,72,1,1,0.52055
+536,53,1802,545,21,72,1,1,0.52055
+537,53,1781,537,21,72,1,1,0.52055
+538,53,1763,546,21,72,1,1,0.57534
+539,53,1741,543,25,73,1,1,0.56757
+540,53,1722,546,28,75,1,1,0.52632
+541,53,1703,545,28,75,1,1,0.55263
+542,53,1684,555,28,75,1,1,0.5
+543,53,1667,553,30,73,1,1,0.54054
+544,53,1650,550,29,71,1,1,0.59722
+545,53,1633,550,30,73,1,1,0.55405
+546,53,1618,548,30,73,1,1,0.56757
+547,53,1602,546,30,73,1,1,0.58108
+548,53,1587,547,30,73,1,1,0.55405
+549,53,1570,539,29,75,1,1,0.61842
+550,53,1558,539,29,68,1,1,0.66667
+551,53,1545,537,24,70,1,1,0.66197
+552,53,1533,537,21,70,1,1,0.64789
+553,53,1521,536,22,73,1,1,0.62162
+554,53,1506,536,24,71,1,1,0.625
+555,53,1492,533,24,71,1,1,0.66667
+556,53,1482,533,24,71,1,1,0.68056
+557,53,1468,527,24,71,1,1,0.76389
+558,53,1458,529,24,71,1,1,0.73611
+559,53,1446,528,23,75,1,1,0.69737
+560,53,1435,529,23,75,1,1,0.69737
+561,53,1425,528,23,75,1,1,0.72368
+562,53,1413,527,23,75,1,1,0.75
+563,53,1400,526,25,77,1,1,0.75641
+564,53,1393,524,23,78,1,1,0.78481
+565,53,1377,524,30,81,1,1,0.76829
+566,53,1369,521,30,82,1,1,0.80723
+567,53,1359,526,30,82,1,1,0.77108
+568,53,1352,525,30,82,1,1,0.79518
+569,53,1343,526,29,75,1,1,0.86842
+570,53,1335,524,31,73,1,1,0.94595
+571,53,1326,527,31,73,1,1,0.91892
+572,53,1320,527,31,73,1,1,0.93243
+573,53,1310,526,30,81,1,1,0.86585
+574,53,1304,525,30,82,1,1,0.89157
+575,53,1298,524,30,82,1,1,0.91566
+576,53,1292,527,30,82,1,1,0.90361
+577,53,1285,527,32,82,1,1,0.92771
+578,53,1276,526,32,82,1,1,0.95181
+579,53,1271,524,31,82,1,1,1
+580,53,1266,526,31,85,1,1,0.96512
+581,53,1261,526,31,85,1,1,0.97674
+582,53,1257,524,31,83,1,1,1
+583,53,1251,524,31,82,1,1,1
+584,53,1249,522,30,84,1,1,1
+585,53,1247,526,30,84,1,1,1
+586,53,1242,524,30,82,1,1,1
+587,53,1239,522,30,82,1,1,1
+588,53,1234,522,30,82,1,1,1
+589,53,1232,521,30,85,1,1,1
+590,53,1230,521,31,88,1,1,1
+591,53,1227,521,34,87,1,1,1
+592,53,1227,521,34,88,1,1,1
+593,53,1227,522,34,88,1,1,1
+594,53,1226,521,34,88,1,1,1
+595,53,1226,523,34,88,1,1,1
+596,53,1226,519,32,90,1,1,1
+597,53,1227,519,32,90,1,1,1
+598,53,1228,519,32,90,1,1,1
+599,53,1227,518,32,90,1,1,1
+600,53,1230,518,32,90,1,1,1
+601,53,1232,519,32,90,1,1,1
+602,53,1231,521,33,89,1,1,1
+603,53,1233,521,33,89,1,1,1
+604,53,1236,521,32,89,1,1,1
+605,53,1242,521,32,89,1,1,1
+606,53,1244,521,29,88,1,1,1
+607,53,1248,521,29,92,1,1,1
+608,53,1252,521,29,92,1,1,1
+609,53,1254,519,29,93,1,1,1
+610,53,1256,520,31,93,1,1,1
+611,53,1259,521,30,94,1,1,1
+612,53,1263,522,30,94,1,1,1
+613,53,1266,523,31,93,1,1,1
+614,53,1270,525,31,93,1,1,1
+615,53,1272,526,31,95,1,1,1
+616,53,1274,527,31,98,1,1,1
+617,53,1277,528,30,100,1,1,1
+618,53,1279,529,30,103,1,1,1
+619,53,1282,531,30,105,1,1,1
+620,53,1287,531,30,103,1,1,1
+621,53,1290,532,30,104,1,1,1
+622,53,1293,533,31,105,1,1,1
+623,53,1296,534,31,106,1,1,1
+624,53,1299,535,32,108,1,1,1
+625,53,1302,532,32,109,1,1,1
+626,53,1308,531,39,110,1,1,1
+627,53,1314,533,39,110,1,1,1
+628,53,1321,533,39,111,1,1,1
+629,53,1325,534,40,103,1,1,1
+630,53,1334,531,39,111,1,1,0.94107
+631,53,1341,532,40,111,1,1,0.80836
+632,53,1347,535,40,112,1,1,0.66976
+633,53,1354,533,41,113,1,1,0.58208
+634,53,1363,534,40,119,1,1,0.47642
+635,53,1372,533,42,118,1,1,0.37756
+636,53,1383,539,38,119,1,1,0.25299
+637,53,1391,544,40,120,1,1,0.22314
+638,53,1399,545,40,120,1,1,0.23967
+639,53,1413,547,41,121,1,1,0.2459
+640,53,1420,550,41,121,1,1,0.2541
+641,53,1428,553,43,123,1,1,0.25
+642,53,1436,556,48,119,1,1,0.25833
+643,53,1448,560,49,118,1,1,0.2521
+644,53,1459,562,49,118,1,1,0.2605
+645,53,1471,562,50,124,1,1,0.28
+646,53,1480,562,48,128,1,1,0.29457
+647,53,1492,564,52,132,1,1,0.30075
+648,53,1506,566,51,131,1,1,0.30303
+649,53,1519,569,49,131,1,1,0.2803
+650,53,1532,563,48,131,1,1,0.37121
+651,53,1549,566,49,139,1,1,0.32143
+652,53,1562,566,49,133,1,1,0.3209
+653,53,1582,563,50,130,1,1,0.32061
+654,53,1600,556,49,132,1,1,0.33835
+655,53,1619,562,51,139,1,1,0.32857
+656,53,1635,559,51,148,1,1,0.31544
+657,53,1655,563,51,150,1,1,0.33775
+658,53,1672,568,54,145,1,1,0.37671
+659,53,1690,581,54,150,1,1,0.34437
+660,53,1714,593,51,153,1,1,0.32468
+661,53,1730,596,51,151,1,1,0.375
+662,53,1751,603,52,143,1,1,0.41667
+663,53,1772,612,52,142,1,1,0.42657
+664,53,1790,621,51,144,1,1,0.43448
+665,53,1812,622,51,144,1,1,0.48966
+666,53,1831,631,54,147,1,1,0.47973
+667,53,1852,632,54,148,1,1,0.49664
+668,53,1873,635,53,150,1,1,0.42973
+669,53,1896,645,53,152,1,1,0.19971
+652,54,934,491,24,55,1,1,0.71429
+653,54,941,488,21,58,1,1,0.74576
+654,54,948,485,19,61,1,1,0.74194
+655,54,958,485,21,61,1,1,0.74194
+656,54,967,486,21,62,1,1,0.7619
+657,54,977,488,21,63,1,1,0.8125
+658,54,986,497,21,63,1,1,0.76562
+659,54,995,506,21,64,1,1,0.72308
+660,54,1001,505,22,64,1,1,0.75385
+661,54,1008,505,22,64,1,1,0.76923
+662,54,1016,506,21,65,1,1,0.77273
+663,54,1024,508,21,66,1,1,0.79104
+664,54,1032,507,19,65,1,1,0.83333
+665,54,1040,506,18,64,1,1,0.87692
+666,54,1047,505,21,63,1,1,0.9375
+667,54,1056,508,22,61,1,1,0.90323
+668,54,1064,508,22,61,1,1,0.90323
+669,54,1072,508,23,62,1,1,0.87831
+670,54,1080,506,24,63,1,1,0.90375
+671,54,1089,504,24,64,1,1,0.89662
+672,54,1098,503,23,63,1,1,0.91341
+673,54,1107,503,23,62,1,1,0.89947
+674,54,1114,499,23,62,1,1,0.93254
+675,54,1122,498,23,64,1,1,0.70128
+676,54,1131,497,22,66,1,1,0.74951
+677,54,1140,497,22,68,1,1,0.78324
+678,54,1147,496,22,70,1,1,0.78077
+679,54,1155,496,23,69,1,1,0.83929
+680,54,1165,503,23,69,1,1,0.80833
+681,54,1168,517,24,70,1,1,0.79775
+682,54,1176,513,24,71,1,1,0.80111
+683,54,1184,506,24,69,1,1,0.81257
+684,54,1192,500,25,66,1,1,0.84615
+685,54,1200,494,25,67,1,1,0.99095
+686,54,1208,488,25,66,1,1,0.99656
+687,54,1216,483,26,70,1,1,0.99791
+688,54,1223,484,27,72,1,1,0.99511
+689,54,1230,485,27,72,1,1,1
+690,54,1241,487,24,70,1,1,1
+691,54,1248,481,25,76,1,1,1
+692,54,1256,489,29,72,1,1,1
+693,54,1265,488,29,74,1,1,1
+694,54,1272,498,28,70,1,1,1
+695,54,1284,503,26,68,1,1,1
+696,54,1292,507,24,69,1,1,1
+697,54,1299,509,24,69,1,1,1
+698,54,1309,509,24,69,1,1,1
+699,54,1317,516,24,69,1,1,1
+700,54,1323,515,24,69,1,1,1
+701,54,1331,523,26,68,1,1,1
+702,54,1340,522,27,68,1,1,1
+703,54,1345,529,28,68,1,1,1
+704,54,1353,532,28,69,1,1,1
+705,54,1358,531,28,69,1,1,1
+706,54,1365,540,28,69,1,1,1
+707,54,1372,537,27,66,1,1,1
+708,54,1379,539,27,67,1,1,1
+709,54,1387,536,26,63,1,1,1
+710,54,1393,550,26,64,1,1,1
+711,54,1398,540,26,65,1,1,1
+712,54,1408,544,26,66,1,1,1
+713,54,1415,535,26,66,1,1,1
+714,54,1421,529,27,66,1,1,1
+715,54,1426,533,27,67,1,1,1
+716,54,1433,526,28,67,1,1,1
+717,54,1438,527,28,68,1,1,1
+718,54,1443,525,28,69,1,1,1
+719,54,1451,533,28,70,1,1,1
+720,54,1457,528,28,71,1,1,1
+721,54,1465,529,28,72,1,1,1
+722,54,1468,529,33,78,1,1,1
+723,54,1476,533,28,74,1,1,1
+724,54,1481,538,28,75,1,1,1
+725,54,1490,538,29,73,1,1,1
+726,54,1498,541,28,77,1,1,1
+727,54,1503,542,28,77,1,1,1
+728,54,1510,552,30,76,1,1,1
+729,54,1518,552,30,76,1,1,1
+730,54,1526,554,30,76,1,1,1
+731,54,1531,558,30,76,1,1,1
+732,54,1538,558,30,76,1,1,1
+733,54,1546,554,30,76,1,1,1
+734,54,1551,558,30,76,1,1,1
+735,54,1556,554,30,76,1,1,1
+736,54,1560,552,34,80,1,1,1
+737,54,1564,552,34,80,1,1,1
+738,54,1571,555,35,79,1,1,1
+739,54,1576,556,35,79,1,1,1
+740,54,1582,556,35,79,1,1,1
+741,54,1585,559,35,79,1,1,1
+742,54,1592,563,35,79,1,1,1
+743,54,1596,565,35,79,1,1,1
+744,54,1600,565,35,79,1,1,1
+745,54,1604,565,35,79,1,1,1
+746,54,1608,573,35,79,1,1,1
+747,54,1613,573,35,79,1,1,1
+748,54,1619,567,34,85,1,1,1
+749,54,1627,568,34,85,1,1,1
+750,54,1632,567,34,85,1,1,1
+670,55,540,503,15,38,1,1,0.6875
+671,55,546,501,15,39,1,1,0.625
+672,55,553,499,15,40,1,1,0.625
+673,55,560,493,14,41,1,1,0.6
+674,55,567,488,14,41,1,1,0.66667
+675,55,574,485,14,42,1,1,1
+676,55,581,485,14,43,1,1,0.74242
+677,55,589,486,14,43,1,1,1
+678,55,594,487,14,44,1,1,1
+679,55,600,493,14,44,1,1,0.53333
+680,55,611,493,13,41,1,1,0.78571
+681,55,611,516,13,41,1,1,0.57143
+682,55,616,536,15,42,1,1,0.6875
+683,55,620,511,15,42,1,1,1
+684,55,627,503,15,42,1,1,1
+685,55,633,499,15,42,1,1,1
+686,55,639,493,15,42,1,1,1
+687,55,645,489,15,42,1,1,0.625
+688,55,653,489,15,42,1,1,1
+689,55,659,486,15,42,1,1,0.75
+690,55,665,484,15,42,1,1,0.75
+691,55,671,482,15,42,1,1,0.75
+692,55,679,480,14,47,1,1,1
+693,55,686,480,14,47,1,1,1
+694,55,690,483,14,47,1,1,1
+695,55,696,484,14,47,1,1,1
+696,55,703,484,14,47,1,1,1
+697,55,708,485,14,47,1,1,1
+698,55,713,484,14,47,1,1,1
+699,55,719,485,14,47,1,1,1
+700,55,725,486,14,47,1,1,1
+701,55,730,488,14,47,1,1,1
+702,55,736,488,15,46,1,1,1
+703,55,739,488,18,48,1,1,1
+704,55,745,491,18,48,1,1,0.94737
+705,55,747,492,18,48,1,1,0.89474
+706,55,752,493,18,48,1,1,0.73684
+707,55,756,498,18,48,1,1,0.89474
+708,55,760,498,18,48,1,1,0.73684
+709,55,763,502,18,48,1,1,0.94737
+710,55,767,508,18,48,1,1,0.89474
+711,55,769,509,18,48,1,1,0.89474
+712,55,774,512,18,48,1,1,0.89474
+713,55,778,511,18,48,1,1,0.78947
+714,55,782,518,18,48,1,1,0.57895
+715,55,785,516,18,48,1,1,0.63158
+716,55,786,518,18,48,1,1,0.57895
+717,55,790,518,18,48,1,1,0.68421
+718,55,793,519,15,47,1,1,0.8125
+719,55,798,519,15,47,1,1,0.875
+720,55,799,521,15,47,1,1,0.8125
+721,55,803,521,15,47,1,1,0.8125
+722,55,807,522,15,47,1,1,0.875
+723,55,811,522,15,47,1,1,0.875
+724,55,814,531,14,49,1,1,0.86667
+725,55,818,531,14,49,1,1,0.86667
+726,55,823,531,14,49,1,1,0.86667
+727,55,825,537,16,48,1,1,0.58824
+728,55,828,537,16,48,1,1,0.76471
+729,55,831,536,16,47,1,1,0.64706
+730,55,835,540,17,46,1,1,0.61111
+731,55,835,535,20,52,1,1,0.90476
+732,55,840,535,20,52,1,1,0.7619
+733,55,842,535,20,52,1,1,0.85714
+734,55,845,531,20,52,1,1,0.61905
+735,55,847,531,20,52,1,1,0.85714
+736,55,850,529,20,52,1,1,0.61905
+737,55,853,527,20,52,1,1,0.47619
+738,55,854,528,20,52,1,1,0.57143
+739,55,855,530,20,52,1,1,0.57143
+740,55,855,532,20,52,1,1,0.95238
+741,55,860,533,20,52,1,1,0.85714
+742,55,862,537,20,52,1,1,0.80952
+743,55,862,537,20,52,1,1,0.90476
+744,55,862,538,20,52,1,1,0.90476
+745,55,863,538,20,52,1,1,0.90476
+746,55,865,539,20,52,1,1,0.85714
+747,55,866,538,19,53,1,1,0.85
+748,55,867,538,19,54,1,1,0.85
+749,55,869,539,19,54,1,1,0.85
+750,55,869,539,19,54,1,1,0.9
+610,56,341,478,19,42,1,1,1
+611,56,341,477,19,43,1,1,1
+612,56,340,475,18,43,1,1,1
+613,56,339,474,18,43,1,1,1
+614,56,339,473,18,43,1,1,1
+615,56,339,471,18,43,1,1,1
+616,56,337,472,19,42,1,1,1
+617,56,335,473,21,42,1,1,1
+618,56,335,473,20,42,1,1,1
+619,56,334,472,20,43,1,1,1
+620,56,334,472,20,43,1,1,1
+621,56,334,473,18,43,1,1,1
+622,56,333,473,18,43,1,1,1
+623,56,334,477,18,44,1,1,1
+624,56,335,476,19,44,1,1,1
+625,56,333,479,19,44,1,1,1
+626,56,335,477,19,44,1,1,1
+627,56,336,483,18,44,1,1,1
+628,56,339,482,18,44,1,1,1
+629,56,339,485,19,44,1,1,1
+630,56,344,487,18,44,1,1,1
+631,56,345,487,18,44,1,1,1
+632,56,349,487,19,44,1,1,1
+633,56,352,489,19,44,1,1,1
+634,56,354,491,18,44,1,1,1
+635,56,359,490,18,44,1,1,1
+636,56,359,492,19,44,1,1,1
+637,56,363,493,19,44,1,1,1
+638,56,366,497,19,43,1,1,1
+639,56,371,496,19,43,1,1,1
+640,56,374,497,19,43,1,1,1
+641,56,375,497,19,44,1,1,1
+642,56,380,497,16,43,1,1,1
+643,56,386,497,12,43,1,1,1
+644,56,390,498,13,42,1,1,1
+645,56,396,497,14,45,1,1,1
+646,56,399,498,14,45,1,1,1
+647,56,404,498,14,46,1,1,1
+648,56,409,499,15,46,1,1,1
+649,56,416,497,13,42,1,1,1
+650,56,422,502,13,42,1,1,1
+651,56,426,501,15,41,1,1,1
+652,56,432,492,15,42,1,1,1
+653,56,438,492,16,42,1,1,1
+654,56,446,494,15,42,1,1,1
+655,56,455,494,15,41,1,1,1
+656,56,461,501,16,41,1,1,1
+657,56,471,502,14,40,1,1,1
+658,56,479,511,14,41,1,1,1
+659,56,488,520,14,42,1,1,1
+660,56,489,516,14,42,1,1,1
+661,56,495,514,14,42,1,1,1
+662,56,501,512,14,43,1,1,1
+663,56,507,510,14,43,1,1,1
+664,56,514,509,14,43,1,1,1
+665,56,521,509,14,42,1,1,1
+666,56,528,505,14,43,1,1,1
+667,56,535,503,14,43,1,1,1
+668,56,542,501,14,43,1,1,1
+669,56,549,500,15,43,1,1,1
+670,56,556,499,15,42,1,1,1
+671,56,565,495,15,43,1,1,1
+672,56,571,494,15,43,1,1,1
+673,56,577,493,15,44,1,1,1
+674,56,584,487,16,44,1,1,1
+675,56,590,487,17,37,1,1,1
+676,56,595,491,18,38,1,1,1
+677,56,605,485,18,40,1,1,1
+678,56,610,487,18,41,1,1,1
+679,56,617,493,17,42,1,1,1
+680,56,625,492,17,43,1,1,1
+681,56,628,513,18,43,1,1,1
+682,56,632,531,18,43,1,1,1
+683,56,638,503,17,44,1,1,1
+684,56,643,495,17,44,1,1,1
+685,56,648,493,18,44,1,1,0.95439
+686,56,654,484,18,46,1,1,0.95745
+687,56,661,482,17,46,1,1,1
+688,56,667,480,18,47,1,1,0.91447
+689,56,674,479,18,47,1,1,0.95504
+690,56,680,476,18,49,1,1,0.95579
+691,56,686,474,17,49,1,1,0.95333
+692,56,692,473,18,50,1,1,0.90918
+693,56,699,473,18,50,1,1,0.90918
+694,56,705,476,18,51,1,1,1
+695,56,710,476,19,52,1,1,0.95755
+696,56,716,477,19,52,1,1,0.91321
+697,56,722,478,19,53,1,1,0.95648
+698,56,728,479,19,53,1,1,1
+699,56,734,480,19,54,1,1,1
+700,56,740,481,19,54,1,1,1
+701,56,746,482,19,55,1,1,1
+702,56,752,483,19,55,1,1,1
+703,56,758,484,19,56,1,1,1
+704,56,763,485,18,57,1,1,1
+705,56,764,481,20,60,1,1,1
+706,56,769,484,20,60,1,1,1
+707,56,773,485,20,61,1,1,0.92473
+708,56,777,490,20,60,1,1,1
+709,56,781,490,20,61,1,1,1
+710,56,784,500,22,59,1,1,1
+711,56,786,500,22,59,1,1,1
+712,56,791,503,22,59,1,1,1
+713,56,793,502,23,60,1,1,1
+714,56,796,510,22,58,1,1,1
+715,56,800,508,22,59,1,1,1
+716,56,802,508,22,58,1,1,0.89167
+717,56,807,508,22,58,1,1,0.92778
+718,56,808,510,22,59,1,1,1
+719,56,813,510,22,58,1,1,1
+720,56,818,510,19,65,1,1,1
+721,56,820,510,21,64,1,1,1
+722,56,823,511,21,63,1,1,1
+723,56,827,510,21,63,1,1,1
+724,56,829,522,21,64,1,1,1
+725,56,831,521,25,62,1,1,1
+726,56,836,521,25,62,1,1,1
+727,56,837,527,25,63,1,1,1
+728,56,844,527,25,62,1,1,1
+729,56,846,525,25,62,1,1,1
+730,56,850,527,25,62,1,1,1
+731,56,854,526,25,63,1,1,1
+732,56,856,526,25,62,1,1,1
+733,56,860,525,25,62,1,1,0.90293
+734,56,863,521,24,65,1,1,1
+735,56,865,521,24,65,1,1,1
+736,56,869,520,24,66,1,1,1
+737,56,869,519,24,65,1,1,1
+738,56,873,521,24,65,1,1,1
+739,56,875,520,24,66,1,1,1
+740,56,875,522,24,65,1,1,1
+741,56,878,524,24,65,1,1,1
+742,56,879,526,24,65,1,1,1
+743,56,881,528,24,66,1,1,1
+744,56,881,527,23,66,1,1,1
+745,56,882,526,23,66,1,1,1
+746,56,883,528,23,67,1,1,1
+747,56,883,527,22,68,1,1,1
+748,56,884,526,22,68,1,1,1
+749,56,886,525,22,68,1,1,0.89603
+750,56,887,524,22,69,1,1,0.93168
+599,57,813,480,19,55,1,1,1
+600,57,811,477,19,55,1,1,1
+601,57,811,478,19,55,1,1,1
+602,57,810,479,19,55,1,1,1
+603,57,808,478,19,55,1,1,1
+604,57,807,479,19,54,1,1,1
+605,57,808,479,19,51,1,1,1
+606,57,807,479,19,51,1,1,0.89231
+607,57,806,480,22,52,1,1,0.80312
+608,57,807,479,22,51,1,1,0.76589
+609,57,806,479,22,52,1,1,0.64315
+610,57,807,477,22,51,1,1,0.63043
+611,57,806,476,21,46,1,1,0.59381
+612,57,805,478,22,46,1,1,0.53191
+613,57,804,476,22,46,1,1,0.51064
+614,57,806,477,22,46,1,1,0.51064
+615,57,805,476,22,46,1,1,0.55319
+616,57,804,478,22,46,1,1,0.53191
+617,57,805,480,22,46,1,1,0.51064
+618,57,804,477,21,46,1,1,0.59574
+619,57,806,481,22,46,1,1,0.53191
+620,57,805,481,22,45,1,1,0.56522
+621,57,803,482,22,45,1,1,0.56522
+622,57,804,483,22,45,1,1,0.58696
+623,57,803,484,22,45,1,1,0.6087
+624,57,805,484,21,43,1,1,0.68182
+625,57,807,487,22,37,1,1,0.78947
+626,57,807,486,22,37,1,1,0.68421
+627,57,809,486,22,37,1,1,0.68421
+628,57,809,487,22,37,1,1,0.68421
+629,57,814,486,22,37,1,1,0.73684
+630,57,817,487,22,37,1,1,0.73684
+631,57,822,482,22,40,1,1,0.82927
+632,57,822,486,22,40,1,1,0.7561
+633,57,829,483,22,40,1,1,0.90244
+409,58,1136,522,26,64,1,1,0.59259
+410,58,1126,521,23,64,1,1,0.66667
+411,58,1117,521,19,63,1,1,1
+412,58,1102,524,23,62,1,1,1
+413,58,1089,522,23,63,1,1,1
+414,58,1076,521,24,63,1,1,1
+415,58,1061,520,25,63,1,1,1
+416,58,1047,519,25,63,1,1,1
+417,58,1033,518,25,64,1,1,1
+418,58,1019,517,25,64,1,1,1
+419,58,1005,517,26,64,1,1,1
+420,58,995,516,20,63,1,1,1
+421,58,977,515,22,62,1,1,1
+422,58,960,514,24,62,1,1,1
+423,58,943,511,24,64,1,1,1
+424,58,927,509,24,65,1,1,1
+425,58,909,509,24,65,1,1,1
+426,58,891,510,24,65,1,1,1
+427,58,873,511,25,64,1,1,0.93846
+428,58,855,512,25,64,1,1,0.90059
+429,58,837,513,26,64,1,1,0.86211
+430,58,820,515,26,64,1,1,0.82051
+431,58,801,518,26,64,1,1,0.79658
+432,58,783,520,26,64,1,1,0.77436
+433,58,762,520,26,64,1,1,0.74929
+434,58,742,520,26,64,1,1,0.70142
+435,58,721,520,26,65,1,1,0.67172
+436,58,701,520,26,65,1,1,0.65825
+437,58,680,520,26,66,1,1,0.63958
+438,58,660,520,26,66,1,1,0.63682
+439,58,640,520,26,67,1,1,0.60948
+440,58,616,519,26,66,1,1,0.66169
+441,58,592,519,26,65,1,1,0.69192
+442,58,569,519,26,64,1,1,0.72422
+443,58,545,519,26,63,1,1,0.76215
+444,58,522,519,26,62,1,1,0.73956
+445,58,498,524,29,60,1,1,0.69891
+446,58,473,521,30,62,1,1,0.75576
+447,58,449,518,31,65,1,1,0.73201
+314,59,1282,520,21,48,1,1,0.57143
+315,59,1285,520,22,49,1,1,0.56
+316,59,1289,521,23,50,1,1,0.5098
+317,59,1297,522,18,52,1,1,0.45283
+318,59,1299,521,21,51,1,1,0.46154
+319,59,1303,520,20,52,1,1,0.4717
+320,59,1307,520,20,53,1,1,0.46296
+321,59,1311,519,20,55,1,1,0.46429
+322,59,1315,519,19,55,1,1,0.48214
+323,59,1319,518,19,57,1,1,0.43103
+324,59,1323,518,19,58,1,1,0.38983
+325,59,1327,515,20,58,1,1,0.42373
+326,59,1329,513,20,57,1,1,0.46552
+327,59,1331,511,20,56,1,1,0.50877
+328,59,1333,509,21,56,1,1,0.54386
+329,59,1335,507,21,55,1,1,0.57143
+330,59,1338,505,21,55,1,1,0.60714
+331,59,1338,502,24,55,1,1,0.625
+332,59,1339,500,26,55,1,1,0.58929
+333,59,1341,497,26,56,1,1,0.58025
+334,59,1344,495,25,57,1,1,0.55172
+335,59,1346,495,25,57,1,1,0.51724
+336,59,1348,495,25,57,1,1,0.5
+337,59,1351,495,25,57,1,1,0.48276
+338,59,1353,490,25,57,1,1,0.55172
+339,59,1354,491,25,57,1,1,0.51724
+340,59,1356,492,25,57,1,1,0.5
+341,59,1357,495,22,56,1,1,0.45919
+342,59,1358,498,19,56,1,1,0.4193
+343,59,1359,501,22,56,1,1,0.40503
+344,59,1361,505,25,55,1,1,0.41277
+345,59,1362,507,25,55,1,1,0.39698
+346,59,1363,509,25,55,1,1,0.41346
+347,59,1364,511,25,55,1,1,0.41277
+348,59,1366,513,24,55,1,1,0.42857
+349,59,1367,515,24,55,1,1,0.42643
+350,59,1368,517,24,55,1,1,0.44214
+351,59,1370,519,23,55,1,1,0.43973
+352,59,1371,521,23,55,1,1,0.43155
+353,59,1372,523,23,55,1,1,0.42411
+354,59,1374,525,23,56,1,1,0.50877
+355,59,1375,526,20,55,1,1,0.45918
+356,59,1375,527,20,55,1,1,0.45918
+357,59,1375,528,21,56,1,1,0.42026
+358,59,1376,530,20,56,1,1,0.54386
+359,59,1376,531,21,57,1,1,0.53448
+360,59,1377,532,20,57,1,1,0.55172
+361,59,1377,534,21,57,1,1,0.53448
+362,59,1378,535,20,58,1,1,0.54237
+363,59,1378,536,21,59,1,1,0.55
+364,59,1379,538,21,59,1,1,0.53333
+365,59,1379,539,21,59,1,1,0.53333
+366,59,1379,540,21,60,1,1,0.52459
+367,59,1379,541,21,60,1,1,0.54098
+368,59,1379,542,22,61,1,1,0.53226
+369,59,1380,544,21,61,1,1,0.51613
+370,59,1380,545,21,61,1,1,0.44135
+371,59,1380,546,22,62,1,1,0.44099
+372,59,1380,547,22,62,1,1,0.52381
+373,59,1380,548,22,63,1,1,0.53125
+374,59,1381,550,22,63,1,1,0.46875
+375,59,1379,548,22,62,1,1,0.47619
+376,59,1378,546,21,62,1,1,0.49206
+377,59,1376,544,21,62,1,1,0.49206
+378,59,1375,542,20,62,1,1,0.50794
+379,59,1373,541,20,61,1,1,0.5
+380,59,1372,539,19,61,1,1,0.5
+381,59,1370,537,19,61,1,1,0.51613
+382,59,1369,535,18,61,1,1,0.51613
+383,59,1367,533,18,61,1,1,0.53226
+384,59,1366,532,18,60,1,1,0.54098
+385,59,1362,531,18,61,1,1,0.54839
+386,59,1358,531,18,61,1,1,0.53226
+387,59,1354,531,19,62,1,1,0.52381
+388,59,1350,531,19,62,1,1,0.52381
+389,59,1346,531,19,62,1,1,0.50794
+390,59,1342,531,20,63,1,1,0.5
+391,59,1338,531,21,64,1,1,0.45734
+392,59,1332,531,20,64,1,1,0.3707
+393,59,1326,531,20,64,1,1,0.41099
+394,59,1321,531,19,65,1,1,0.45455
+395,59,1314,530,19,65,1,1,0.4697
+396,59,1307,530,19,64,1,1,0.47692
+397,59,1300,530,19,63,1,1,0.46875
+398,59,1294,530,19,62,1,1,0.47619
+399,59,1285,529,21,61,1,1,0.52273
+400,59,1277,529,22,60,1,1,0.51461
+401,59,1268,529,21,59,1,1,0.47727
+402,59,1260,529,20,59,1,1,0.5
+403,59,1251,529,20,58,1,1,0.52865
+404,59,1243,529,19,58,1,1,0.36864
+405,59,1232,528,19,58,1,1,0.35593
+406,59,1222,527,19,58,1,1,0.33051
+407,59,1212,526,19,58,1,1,0.39407
+408,59,1202,525,19,58,1,1,0.4339
+409,59,1190,524,19,58,1,1,0.40678
+410,59,1178,523,19,58,1,1,0.39153
+411,59,1167,523,19,58,1,1,0.37966
+412,59,1154,522,19,58,1,1,0.41949
+413,59,1142,522,19,58,1,1,0.44746
+414,59,1130,522,19,58,1,1,0.47288
+415,59,1113,523,19,58,1,1,0.3322
+416,59,1098,519,22,57,1,1,0.37706
+417,59,1085,519,19,58,1,1,0.31949
+418,59,1072,519,19,58,1,1,0.3322
+419,59,1056,517,19,58,1,1,0.26864
+420,59,1042,516,19,58,1,1,0.25932
+66,60,1602,496,14,57,1,1,0.26782
+67,60,1600,510,15,58,1,1,0.27331
+68,60,1598,506,16,59,1,1,0.49608
+69,60,1598,513,19,59,1,1,0.48167
+70,60,1594,510,20,59,1,1,0.7381
+71,60,1591,510,20,59,1,1,0.84524
+72,60,1588,510,20,59,1,1,0.88651
+73,60,1585,510,21,59,1,1,0.15758
+74,60,1582,510,22,59,1,1,0.13333
+75,60,1580,511,22,59,1,1,0.17464
+76,60,1578,512,22,58,1,1,0.11864
+77,60,1574,511,22,58,1,1,0.13559
+78,60,1571,511,22,58,1,1,0.16875
+79,60,1567,510,23,59,1,1,0.71111
+80,60,1564,510,22,58,1,1,0.22034
+81,60,1561,510,22,58,1,1,0.25129
+82,60,1557,509,23,59,1,1,0.21389
+83,60,1554,509,22,58,1,1,0.14444
+84,60,1550,508,23,59,1,1,0.21319
+85,60,1547,508,23,59,1,1,0.16944
+86,60,1544,508,23,59,1,1,0.21319
+87,60,1540,509,23,59,1,1,0.25625
+88,60,1536,510,23,59,1,1,0.29653
+89,60,1532,511,23,59,1,1,0.29583
+90,60,1528,513,23,59,1,1,0.28125
+91,60,1524,514,24,59,1,1,0.31
+92,60,1520,515,24,59,1,1,0.30933
+93,60,1516,517,24,59,1,1,0.39933
+94,60,1512,518,24,59,1,1,0.364
+95,60,1508,519,24,59,1,1,0.34133
+96,60,1505,521,24,59,1,1,0.28
+97,60,1500,521,24,59,1,1,0.28067
+98,60,1496,521,23,60,1,1,0.24863
+99,60,1491,521,24,60,1,1,0.24262
+100,60,1487,522,23,60,1,1,0.1735
+101,60,1483,522,23,60,1,1,0.1735
+102,60,1478,522,23,61,1,1,0.17204
+103,60,1474,523,22,60,1,1,0.20171
+104,60,1469,523,23,61,1,1,0.28495
+105,60,1465,523,22,61,1,1,0.2805
+106,60,1461,524,22,61,1,1,0.41094
+107,60,1456,523,22,61,1,1,0.41094
+108,60,1451,523,22,61,1,1,0.45021
+109,60,1446,523,22,61,1,1,0.45021
+110,60,1441,523,22,61,1,1,0.48948
+111,60,1436,523,23,61,1,1,0.51075
+112,60,1431,522,23,62,1,1,0.56349
+113,60,1426,522,23,62,1,1,0.64286
+114,60,1421,522,23,62,1,1,0.39286
+115,60,1416,522,23,62,1,1,0.34259
+116,60,1411,522,24,62,1,1,0.32063
+117,60,1405,521,24,62,1,1,0.020952
+118,60,1400,520,24,62,1,1,0.097143
+119,60,1395,519,24,63,1,1,0.215
+120,60,1390,518,23,63,1,1,0.26042
+121,60,1384,518,24,62,1,1,0.36508
+122,60,1379,517,24,63,1,1,0.36312
+123,60,1374,516,23,63,1,1,0.41667
+124,60,1369,515,23,63,1,1,0.375
+125,60,1364,515,23,63,1,1,0.375
+126,60,1360,517,23,62,1,1,0.29365
+127,60,1357,519,24,62,1,1,0.2419
+128,60,1348,520,24,62,1,1,0.32
+129,60,1342,519,22,62,1,1,0.086957
+130,60,1342,519,22,62,1,1,0
+131,60,1332,519,22,62,1,1,0.05176
+132,60,1328,519,23,61,1,1,0.056452
+71,61,1601,510,20,51,1,1,0.054945
+72,61,1598,510,20,52,1,1,0.077269
+73,61,1596,510,20,53,1,1,0.16843
+74,61,1594,510,19,54,1,1,0.040909
+75,61,1592,511,19,54,1,1,0.073636
+76,61,1588,511,20,54,1,1,0.066667
+77,61,1585,511,20,54,1,1,0.054545
+78,61,1582,511,20,54,1,1,0.046753
+79,61,1579,510,19,55,1,1,0.042857
+80,61,1576,509,18,56,1,1,0.054478
+81,61,1573,509,17,57,1,1,0.050766
+82,61,1570,508,16,58,1,1,0.046859
+83,61,1567,508,15,59,1,1,0.045833
+84,61,1564,506,20,53,1,1,0.089065
+85,61,1557,508,20,56,1,1,0.042607
+86,61,1556,508,22,55,1,1,0.045031
+87,61,1552,508,22,56,1,1,0.065599
+88,61,1548,509,22,56,1,1,0.070938
+89,61,1544,510,22,56,1,1,0.074752
+90,61,1541,511,22,56,1,1,0.09077
+91,61,1537,513,22,56,1,1,0.074752
+92,61,1534,515,21,56,1,1,0.059809
+93,61,1530,516,20,53,1,1,0.074956
+94,61,1525,517,20,55,1,1,0.072279
+95,61,1521,519,20,56,1,1,0.056809
+96,61,1516,519,20,56,1,1,0.070175
+97,61,1512,519,20,57,1,1,0.08046
+98,61,1508,519,20,57,1,1,0.133
+99,61,1504,519,20,58,1,1,0.13801
+100,61,1500,520,20,57,1,1,0.22414
+101,61,1495,520,21,58,1,1,0.21957
+102,61,1491,520,21,58,1,1,0.30431
+103,61,1487,520,21,59,1,1,0.35455
+104,61,1483,520,21,59,1,1,0.31667
+105,61,1479,521,21,59,1,1,0.31288
+106,61,1477,521,20,57,1,1,0.26108
+107,61,1470,520,21,60,1,1,0.30999
+108,61,1467,520,23,60,1,1,0.41325
+58,62,1268,497,21,53,1,1,0.98316
+59,62,1268,496,21,52,1,1,1
+60,62,1268,496,21,51,1,1,1
+61,62,1268,495,21,50,1,1,1
+62,62,1268,495,21,49,1,1,1
+63,62,1269,495,21,48,1,1,1
+64,62,1269,497,22,47,1,1,1
+65,62,1270,499,22,47,1,1,0.95652
+66,62,1271,501,22,47,1,1,1
+67,62,1272,504,22,46,1,1,1
+68,62,1269,502,22,46,1,1,1
+69,62,1267,502,22,46,1,1,1
+70,62,1266,502,22,46,1,1,1
+71,62,1265,503,22,46,1,1,1
+72,62,1264,503,22,46,1,1,1
+73,62,1262,503,22,47,1,1,1
+74,62,1261,504,22,46,1,1,1
+75,62,1260,504,22,47,1,1,1
+76,62,1259,504,22,47,1,1,1
+77,62,1258,505,22,47,1,1,1
+78,62,1255,505,22,47,1,1,1
+79,62,1253,505,22,47,1,1,1
+80,62,1251,505,22,47,1,1,1
+81,62,1249,505,22,47,1,1,0.95833
+82,62,1247,505,22,47,1,1,0.91667
+83,62,1244,505,22,47,1,1,0.91667
+84,62,1242,505,22,47,1,1,0.87228
+85,62,1240,505,22,47,1,1,0.82971
+86,62,1238,505,22,47,1,1,0.78714
+87,62,1236,505,22,47,1,1,0.74457
+88,62,1233,506,22,47,1,1,0.73913
+89,62,1230,507,22,47,1,1,0.69565
+90,62,1227,508,22,47,1,1,0.69565
+91,62,1224,509,22,47,1,1,0.69565
+92,62,1221,510,23,47,1,1,0.66667
+93,62,1218,511,23,47,1,1,0.63281
+94,62,1215,512,23,47,1,1,0.63281
+95,62,1212,513,23,47,1,1,0.63281
+96,62,1209,514,23,47,1,1,0.63281
+97,62,1207,515,23,48,1,1,0.60034
+98,62,1204,517,22,48,1,1,0.74978
+99,62,1201,517,21,48,1,1,0.73284
+100,62,1198,517,21,48,1,1,0.73284
+101,62,1195,517,21,48,1,1,0.73284
+102,62,1192,517,20,48,1,1,0.76676
+103,62,1189,517,20,48,1,1,0.71429
+104,62,1186,517,20,48,1,1,0.71429
+105,62,1183,517,19,48,1,1,0.75
+106,62,1180,517,19,48,1,1,0.75
+107,62,1177,518,19,47,1,1,0.75
+108,62,1173,518,19,47,1,1,0.80417
+109,62,1170,518,19,47,1,1,0.77083
+110,62,1167,518,19,47,1,1,0.71875
+111,62,1164,518,19,48,1,1,0.67143
+112,62,1161,519,19,47,1,1,0.67917
+113,62,1157,519,19,47,1,1,0.71875
+114,62,1154,519,19,48,1,1,0.76531
+115,62,1151,519,19,48,1,1,0.66429
+116,62,1148,519,19,48,1,1,0.72449
+117,62,1145,520,19,48,1,1,0.67143
+118,62,1141,519,19,48,1,1,0.71224
+119,62,1137,519,19,48,1,1,0.66429
+120,62,1133,519,19,48,1,1,0.65714
+121,62,1129,519,19,48,1,1,0.65
+122,62,1125,519,19,48,1,1,0.6
+123,62,1121,518,19,49,1,1,0.65
+124,62,1117,518,19,49,1,1,0.7
+125,62,1113,518,19,49,1,1,0.75
+126,62,1109,518,19,49,1,1,0.75
+127,62,1106,518,19,49,1,1,0.7
+128,62,1102,518,19,49,1,1,0.7
+129,62,1098,518,20,49,1,1,0.81333
+130,62,1095,518,19,50,1,1,0.80392
+131,62,1091,519,20,49,1,1,0.76667
+132,62,1088,519,19,50,1,1,0.71176
+133,62,1084,519,20,50,1,1,0.81699
+134,62,1080,520,20,49,1,1,0.77619
+135,62,1077,520,20,50,1,1,0.73109
+136,62,1073,520,20,50,1,1,0.81699
+137,62,1070,521,20,50,1,1,0.71429
+138,62,1067,520,19,51,1,1,0.8
+139,62,1064,520,19,51,1,1,0.65673
+140,62,1061,519,19,52,1,1,0.75472
+141,62,1058,519,19,52,1,1,0.75943
+142,62,1055,519,19,53,1,1,0.85833
+143,62,1052,518,18,54,1,1,1
+144,62,1049,518,18,54,1,1,0.90048
+145,62,1046,517,18,55,1,1,0.8562
+146,62,1043,517,18,55,1,1,0.85338
+147,62,1040,517,18,56,1,1,0.85319
+148,62,1036,517,17,56,1,1,1
+149,62,1032,517,17,57,1,1,1
+150,62,1028,517,17,57,1,1,0.94828
+151,62,1024,517,17,58,1,1,1
+152,62,1020,517,17,58,1,1,1
+153,62,1016,517,17,59,1,1,0.94907
+154,62,1012,517,17,59,1,1,0.84444
+155,62,1008,517,17,60,1,1,0.89617
+156,62,1004,517,17,60,1,1,0.84153
+157,62,1000,518,17,60,1,1,0.89071
+158,62,996,518,18,60,1,1,0.84469
+159,62,993,518,18,60,1,1,0.79638
+160,62,989,518,19,60,1,1,0.7582
+161,62,986,518,19,60,1,1,0.80656
+162,62,983,519,19,59,1,1,0.80667
+163,62,979,519,20,59,1,1,0.76984
+164,62,976,519,20,59,1,1,0.81587
+165,62,972,519,21,59,1,1,1
+166,62,969,519,21,59,1,1,1
+167,62,966,520,21,58,1,1,0.81818
+168,62,963,520,21,58,1,1,1
+169,62,961,520,21,58,1,1,1
+170,62,959,520,21,58,1,1,0.77273
+171,62,956,520,21,58,1,1,0.77273
+172,62,954,520,21,58,1,1,1
+173,62,952,520,21,58,1,1,1
+174,62,949,520,21,58,1,1,1
+175,62,947,520,21,58,1,1,1
+176,62,945,520,21,58,1,1,1
+177,62,943,520,21,58,1,1,0.86364
+178,62,941,520,21,58,1,1,0.90909
+179,62,939,520,21,58,1,1,0.81818
+180,62,937,520,21,59,1,1,0.68182
+181,62,935,521,21,58,1,1,0.68182
+182,62,933,521,22,59,1,1,0.86957
+183,62,931,521,22,59,1,1,0.73913
+184,62,929,522,22,58,1,1,0.73913
+185,62,927,522,22,59,1,1,1
+186,62,925,522,22,59,1,1,0.69565
+187,62,924,523,22,59,1,1,0.73913
+188,62,922,523,23,60,1,1,0.79167
+189,62,921,524,24,60,1,1,0.8
+190,62,920,525,25,61,1,1,0.95906
+191,62,917,525,26,61,1,1,0.94504
+192,62,915,525,26,62,1,1,0.93239
+193,62,912,525,28,63,1,1,0.92241
+194,62,910,525,28,63,1,1,0.90571
+195,62,907,525,30,64,1,1,0.89677
+196,62,905,525,30,65,1,1,0.88123
+197,62,903,526,31,65,1,1,0.87689
+198,62,901,528,31,65,1,1,0.86979
+199,62,907,527,26,64,1,1,0.78462
+200,62,911,526,27,64,1,1,0.49121
+26,63,1587,512,23,43,1,1,0.625
+27,63,1584,512,22,49,1,1,0.39652
+28,63,1586,515,22,48,1,1,0.5528
+29,63,1589,518,21,48,1,1,0.49629
+30,63,1589,519,22,49,1,1,0.60435
+31,63,1590,521,22,49,1,1,0.67391
+32,63,1592,525,19,48,1,1,0.87245
+33,63,1592,513,20,48,1,1,0.95724
+34,63,1592,516,21,48,1,1,0.91466
+35,63,1593,514,21,49,1,1,1
+36,63,1593,510,22,49,1,1,0.83478
+37,63,1593,507,23,49,1,1,0.685
+38,63,1594,505,23,49,1,1,0.57333
+39,63,1595,506,23,49,1,1,0.43167
+40,63,1596,507,23,49,1,1,0.335
+41,63,1597,508,23,49,1,1,0.24
+42,63,1598,509,23,49,1,1,0.24
+43,63,1599,511,23,49,1,1,0.22
+44,63,1600,512,23,49,1,1,0.36667
+45,63,1601,513,23,49,1,1,0.47583
+46,63,1602,514,23,49,1,1,0.58
+47,63,1604,516,23,49,1,1,0.67
+48,63,1605,515,23,49,1,1,0.78
+49,63,1606,515,23,49,1,1,0.85667
+58,64,1291,505,19,50,1,1,1
+59,64,1291,504,18,49,1,1,1
+60,64,1291,503,18,48,1,1,1
+61,64,1291,502,18,47,1,1,1
+62,64,1292,499,18,48,1,1,1
+63,64,1293,497,19,48,1,1,1
+64,64,1292,497,18,50,1,1,1
+65,64,1292,498,21,48,1,1,0.95547
+66,64,1292,499,20,48,1,1,0.90865
+67,64,1292,500,20,49,1,1,0.86857
+68,64,1293,502,19,49,1,1,1
+69,64,1291,502,18,51,1,1,1
+70,64,1291,502,16,51,1,1,1
+71,64,1292,503,14,50,1,1,1
+72,64,1290,503,15,50,1,1,1
+73,64,1288,504,16,50,1,1,1
+74,64,1287,505,16,49,1,1,1
+75,64,1285,505,17,50,1,1,1
+76,64,1284,506,17,49,1,1,1
+77,64,1282,507,18,49,1,1,1
+78,64,1281,508,19,49,1,1,1
+79,64,1277,507,19,49,1,1,1
+80,64,1274,507,19,49,1,1,1
+81,64,1271,507,19,49,1,1,1
+82,64,1268,507,19,48,1,1,1
+83,64,1265,507,19,48,1,1,1
+84,64,1262,506,19,49,1,1,1
+85,64,1259,506,19,48,1,1,1
+86,64,1256,506,19,48,1,1,1
+87,64,1253,506,19,48,1,1,1
+88,64,1250,506,19,48,1,1,1
+89,64,1246,507,19,48,1,1,1
+90,64,1243,508,19,48,1,1,1
+91,64,1240,509,19,48,1,1,1
+92,64,1237,510,19,48,1,1,1
+93,64,1233,512,19,48,1,1,1
+94,64,1230,513,19,48,1,1,1
+95,64,1227,514,19,48,1,1,1
+96,64,1224,515,19,48,1,1,1
+97,64,1221,517,19,48,1,1,1
+98,64,1221,519,19,48,1,1,1
+99,64,1217,518,19,48,1,1,1
+100,64,1214,518,19,48,1,1,1
+101,64,1211,518,19,48,1,1,1
+102,64,1208,518,19,48,1,1,1
+103,64,1204,517,20,49,1,1,1
+104,64,1201,517,20,49,1,1,1
+105,64,1198,517,20,49,1,1,1
+106,64,1195,517,20,49,1,1,1
+107,64,1192,517,20,49,1,1,1
+108,64,1189,519,20,50,1,1,1
+109,64,1185,522,22,49,1,1,1
+110,64,1181,521,22,49,1,1,1
+111,64,1177,521,20,48,1,1,1
+112,64,1174,523,20,47,1,1,1
+113,64,1171,522,20,48,1,1,1
+114,64,1169,522,20,49,1,1,1
+115,64,1164,521,18,50,1,1,1
+116,64,1162,523,18,49,1,1,1
+117,64,1158,523,16,49,1,1,1
+118,64,1155,521,18,48,1,1,1
+119,64,1150,521,22,51,1,1,1
+120,64,1146,520,21,52,1,1,1
+121,64,1142,519,22,52,1,1,1
+122,64,1137,518,22,52,1,1,1
+123,64,1134,518,22,52,1,1,1
+124,64,1131,518,22,52,1,1,1
+125,64,1128,518,22,52,1,1,1
+126,64,1124,518,21,52,1,1,1
+127,64,1120,517,20,54,1,1,1
+128,64,1116,518,20,53,1,1,1
+129,64,1115,519,22,53,1,1,1
+130,64,1111,519,22,54,1,1,1
+131,64,1107,520,22,54,1,1,1
+132,64,1102,521,22,54,1,1,1
+133,64,1101,521,25,53,1,1,1
+134,64,1096,523,25,52,1,1,1
+135,64,1092,523,25,52,1,1,1
+136,64,1090,522,25,53,1,1,1
+137,64,1085,521,25,53,1,1,1
+138,64,1083,520,21,51,1,1,0.81818
+139,64,1077,521,25,51,1,1,1
+140,64,1076,520,25,52,1,1,1
+141,64,1073,521,23,51,1,1,1
+142,64,1072,522,22,50,1,1,0.86957
+143,64,1068,521,22,50,1,1,0.86957
+144,64,1066,521,22,52,1,1,1
+145,64,1062,522,23,52,1,1,1
+146,64,1059,521,24,52,1,1,1
+147,64,1056,521,22,54,1,1,1
+148,64,1054,521,22,54,1,1,1
+149,64,1051,521,22,54,1,1,1
+150,64,1045,521,22,55,1,1,1
+151,64,1042,522,22,55,1,1,1
+152,64,1038,523,22,55,1,1,1
+153,64,1033,522,22,55,1,1,1
+154,64,1027,521,22,57,1,1,1
+155,64,1024,521,22,58,1,1,1
+156,64,1019,520,21,59,1,1,1
+157,64,1016,519,21,60,1,1,1
+158,64,1012,519,21,61,1,1,1
+159,64,1008,520,20,58,1,1,0.80952
+160,64,1004,520,20,58,1,1,0.7619
+161,64,1002,520,20,58,1,1,0.80952
+162,64,999,521,20,59,1,1,1
+163,64,995,521,20,59,1,1,1
+164,64,993,521,19,58,1,1,1
+165,64,990,521,18,56,1,1,0.78947
+166,64,987,521,18,56,1,1,0.78947
+167,64,984,520,17,59,1,1,1
+327,65,1469,528,29,82,1,1,0.20964
+328,65,1472,528,29,83,1,1,0.18571
+329,65,1474,527,30,84,1,1,0.15484
+330,65,1474,527,31,84,1,1,0.098529
+331,65,1477,524,31,86,1,1,0.092672
+332,65,1481,521,31,88,1,1,0.12079
+333,65,1485,519,31,89,1,1,0.20972
+334,65,1488,516,31,90,1,1,0.21806
+335,65,1491,513,31,91,1,1,0.2697
+336,65,1494,510,31,92,1,1,0.33367
+337,65,1500,512,29,93,1,1,0.3117
+338,65,1502,510,30,93,1,1,0.30714
+339,65,1505,511,30,93,1,1,0.35827
+340,65,1508,512,31,94,1,1,0.33684
+341,65,1510,515,32,95,1,1,0.59375
+342,65,1513,518,32,96,1,1,0.58763
+343,65,1515,522,33,97,1,1,0.57143
+344,65,1518,525,33,98,1,1,0.57576
+345,65,1521,529,33,99,1,1,0.56
+346,65,1525,531,32,100,1,1,0.56436
+347,65,1525,532,33,101,1,1,0.57843
+348,65,1527,538,32,101,1,1,0.55882
+349,65,1529,537,32,101,1,1,0.57843
+350,65,1532,536,32,101,1,1,0.60784
+351,65,1535,536,32,101,1,1,0.62745
+352,65,1537,538,34,100,1,1,0.63366
+353,65,1539,539,33,100,1,1,0.29121
+354,65,1542,540,32,100,1,1,0.32133
+355,65,1547,544,33,98,1,1,0.36869
+356,65,1548,546,33,97,1,1,0.36735
+357,65,1550,546,34,101,1,1,0.38571
+358,65,1551,548,35,101,1,1,0.37255
+359,65,1553,550,35,101,1,1,0.38889
+360,65,1555,552,35,101,1,1,0.38943
+361,65,1556,555,36,100,1,1,0.37463
+362,65,1558,557,36,100,1,1,0.39122
+363,65,1560,559,36,100,1,1,0.39657
+364,65,1561,562,37,99,1,1,0.38158
+365,65,1563,564,37,99,1,1,0.38632
+366,65,1565,566,37,99,1,1,0.39158
+367,65,1567,569,37,98,1,1,0.38543
+368,65,1569,570,37,98,1,1,0.40564
+369,65,1572,571,37,98,1,1,0.42132
+370,65,1573,571,37,98,1,1,0.41467
+371,65,1574,571,37,98,1,1,0.41414
+372,65,1575,571,37,98,1,1,0.41946
+373,65,1577,571,37,98,1,1,0.44604
+374,65,1576,571,41,104,1,1,0.422
+375,65,1576,569,41,105,1,1,0.41914
+376,65,1576,568,41,109,1,1,0.41905
+377,65,1577,568,36,109,1,1,0.65455
+378,65,1578,567,36,105,1,1,0.42682
+379,65,1579,566,36,102,1,1,0.45893
+380,65,1577,561,40,108,1,1,0.45939
+381,65,1576,558,40,110,1,1,0.45924
+382,65,1573,557,39,111,1,1,0.43214
+383,65,1571,556,40,111,1,1,0.42334
+384,65,1570,556,39,111,1,1,0.43036
+385,65,1567,554,40,113,1,1,0.41913
+386,65,1565,554,38,113,1,1,0.39946
+387,65,1562,551,42,117,1,1,0.44285
+388,65,1560,555,42,119,1,1,0.675
+389,65,1556,555,42,117,1,1,0.41742
+390,65,1552,555,42,116,1,1,0.41224
+391,65,1547,558,41,115,1,1,0.35099
+392,65,1541,557,42,118,1,1,0.68908
+393,65,1536,557,42,120,1,1,0.68595
+394,65,1530,557,41,120,1,1,0.68595
+395,65,1525,557,40,121,1,1,0.68852
+396,65,1517,556,43,120,1,1,0.71074
+397,65,1514,557,40,120,1,1,0.71074
+398,65,1505,556,42,121,1,1,0.72131
+399,65,1496,556,45,119,1,1,0.74167
+400,65,1487,556,44,121,1,1,0.72131
+401,65,1477,556,50,119,1,1,0.73333
+402,65,1468,556,49,121,1,1,0.71311
+403,65,1459,556,48,121,1,1,0.71311
+404,65,1450,556,48,121,1,1,0.71311
+405,65,1441,556,45,121,1,1,0.71311
+406,65,1429,556,48,121,1,1,0.72131
+407,65,1423,556,43,119,1,1,0.74167
+408,65,1410,553,48,123,1,1,0.74194
+409,65,1398,552,47,126,1,1,0.73228
+410,65,1387,552,45,128,1,1,0.72093
+411,65,1377,552,45,129,1,1,0.72308
+412,65,1363,551,45,128,1,1,0.73643
+413,65,1350,551,44,127,1,1,0.74219
+414,65,1338,550,45,130,1,1,0.73282
+415,65,1324,550,44,127,1,1,0.75
+416,65,1311,550,42,124,1,1,0.48
+417,65,1298,550,40,122,1,1,0.47452
+418,65,1280,546,43,127,1,1,0.48757
+419,65,1262,544,48,129,1,1,0.7314
+420,65,1248,543,46,129,1,1,0.75188
+421,65,1233,543,46,129,1,1,0.75139
+422,65,1217,543,46,129,1,1,0.73453
+423,65,1198,543,46,129,1,1,0.66907
+424,65,1180,543,45,129,1,1,0.68294
+425,65,1161,543,46,129,1,1,0.6527
+426,65,1143,543,45,129,1,1,0.80769
+427,65,1125,543,45,130,1,1,0.55792
+428,65,1108,544,43,129,1,1,0.62203
+429,65,1092,545,40,129,1,1,0.77336
+430,65,1068,551,46,130,1,1,0.7031
+431,65,1047,552,46,130,1,1,0.77473
+432,65,1026,553,46,131,1,1,0.70084
+433,65,1005,555,47,131,1,1,0.66193
+434,65,984,556,47,132,1,1,0.69424
+435,65,963,558,48,132,1,1,0.71106
+436,65,942,559,48,133,1,1,0.72677
+437,65,921,561,49,133,1,1,0.74254
+438,65,900,561,49,133,1,1,0.75672
+439,65,879,561,49,134,1,1,0.78785
+440,65,858,561,49,134,1,1,0.81822
+441,65,837,562,50,134,1,1,0.82658
+442,65,812,561,62,134,1,1,0.85714
+443,65,793,561,60,135,1,1,0.91176
+444,65,771,562,57,136,1,1,0.91241
+445,65,749,563,54,138,1,1,0.58143
+446,65,727,564,51,139,1,1,0.17582
+447,65,705,565,49,141,1,1,0.42986
+448,65,678,564,61,141,1,1,0.81554
+449,65,654,562,63,142,1,1,0.97957
+450,65,631,560,64,144,1,1,0.993
+451,65,605,558,60,149,1,1,1
+452,65,582,558,59,150,1,1,1
+453,65,554,558,61,151,1,1,1
+454,65,528,557,60,151,1,1,1
+455,65,499,557,67,154,1,1,1
+456,65,471,557,73,157,1,1,1
+457,65,443,557,80,160,1,1,1
+458,65,410,556,88,161,1,1,0.96588
+459,65,377,566,95,159,1,1,0.91224
+460,65,345,566,92,158,1,1,0.87692
+461,65,313,568,90,159,1,1,0.83283
+462,65,282,570,89,160,1,1,0.86294
+463,65,251,572,89,162,1,1,0.91166
+464,65,215,571,92,162,1,1,0.89056
+465,65,187,571,88,165,1,1,0.85921
+466,65,160,571,84,169,1,1,0.81045
+467,65,129,571,83,169,1,1,0.78445
+468,65,100,571,79,169,1,1,0.73176
+469,65,72,571,74,170,1,1,0.69996
+470,65,38,567,74,175,1,1,0.64409
+471,65,1,566,72,174,1,1,0.62278
+327,66,1520,547,28,76,1,1,0.056426
+328,66,1524,546,29,77,1,1,0.046154
+329,66,1529,545,29,78,1,1,0.037975
+330,66,1537,545,29,80,1,1,0.032922
+331,66,1539,541,30,81,1,1,0.02203
+332,66,1542,538,30,83,1,1,0.015361
+333,66,1546,536,30,85,1,1,0.013503
+334,66,1553,533,30,82,1,1,0.019433
+335,66,1556,528,30,83,1,1,0.043011
+336,66,1560,526,30,84,1,1,0.035294
+337,66,1565,524,30,86,1,1,0.03337
+45,67,1386,506,16,44,1,1,0.58824
+46,67,1387,508,16,45,1,1,0.64706
+47,67,1388,511,17,45,1,1,0.72222
+48,67,1388,511,18,45,1,1,0.79291
+49,67,1389,512,18,45,1,1,0.79405
+50,67,1389,513,19,45,1,1,0.7587
+51,67,1390,514,19,45,1,1,0.76087
+52,67,1389,513,20,45,1,1,0.68116
+53,67,1389,512,20,45,1,1,0.59006
+54,67,1388,511,21,45,1,1,0.53261
+55,67,1388,511,21,45,1,1,0.43478
+56,67,1387,510,21,46,1,1,0.3472
+57,67,1386,509,22,47,1,1,0.2663
+58,67,1386,509,22,47,1,1,0.20833
+59,67,1385,508,22,48,1,1,0.08252
+60,67,1385,508,22,48,1,1,0.08252
+61,67,1384,507,23,49,1,1,0.1425
+62,67,1384,507,23,50,1,1,0.27042
+63,67,1384,498,22,51,1,1,0.31773
+64,67,1385,506,22,51,1,1,0.43813
+65,67,1382,501,23,52,1,1,0.5566
+66,67,1381,502,24,51,1,1,0.58538
+67,67,1380,503,25,51,1,1,0.66642
+68,67,1380,504,25,51,1,1,0.60059
+69,67,1382,508,25,54,1,1,0.55944
+70,67,1381,507,23,48,1,1,0.50255
+71,67,1379,515,26,44,1,1,0.48148
+72,67,1375,507,24,50,1,1,0.71765
+73,67,1372,507,24,50,1,1,0.82745
+74,67,1369,508,24,49,1,1,0.9328
+75,67,1367,508,24,50,1,1,0.96627
+76,67,1364,509,24,49,1,1,1
+77,67,1361,509,24,49,1,1,1
+78,67,1359,510,24,49,1,1,1
+79,67,1356,509,24,49,1,1,1
+80,67,1353,509,24,49,1,1,1
+81,67,1350,508,24,49,1,1,1
+82,67,1348,508,24,49,1,1,1
+83,67,1345,508,23,50,1,1,1
+84,67,1342,509,23,50,1,1,1
+85,67,1339,510,23,50,1,1,1
+86,67,1336,511,22,50,1,1,1
+87,67,1333,512,22,50,1,1,1
+88,67,1330,512,22,51,1,1,1
+89,67,1327,513,21,51,1,1,1
+90,67,1324,514,21,51,1,1,1
+91,67,1321,515,21,51,1,1,1
+92,67,1318,516,21,51,1,1,1
+93,67,1314,516,22,51,1,1,1
+94,67,1311,517,22,51,1,1,1
+95,67,1306,518,22,51,1,1,1
+96,67,1301,520,22,51,1,1,1
+97,67,1297,520,22,51,1,1,1
+98,67,1292,521,23,51,1,1,0.87019
+99,67,1288,523,23,51,1,1,0.90865
+100,67,1285,522,22,51,1,1,0.8888
+101,67,1280,522,23,51,1,1,0.88221
+102,67,1277,522,23,51,1,1,0.88221
+103,67,1274,522,22,51,1,1,0.83946
+104,67,1269,521,22,51,1,1,0.699
+105,67,1265,523,21,51,1,1,0.68357
+106,67,1261,522,21,48,1,1,0.58442
+107,67,1257,521,21,45,1,1,0.48814
+108,67,1253,519,21,51,1,1,0.40385
+109,67,1252,521,18,48,1,1,0.48443
+110,67,1243,522,22,53,1,1,0.37842
+111,67,1243,522,22,53,1,1,0.54106
+330,68,1498,543,35,86,1,1,0.1143
+331,68,1485,536,35,85,1,1,0.28747
+332,68,1473,530,35,83,1,1,0.066799
+333,68,1461,524,34,81,1,1,0.21742
+334,68,1449,518,34,79,1,1,0.48929
+335,68,1451,517,34,79,1,1,0.51214
+336,68,1454,516,34,80,1,1,0.42222
+337,68,1457,516,34,80,1,1,0.4963
+338,68,1459,515,34,81,1,1,0.51568
+339,68,1462,515,34,81,1,1,0.2216
+340,68,1465,515,34,81,1,1,0.25819
+341,68,1467,517,34,82,1,1,0.6
+342,68,1469,520,34,82,1,1,0.57935
+343,68,1471,523,35,82,1,1,0.5656
+344,68,1474,525,34,83,1,1,0.31156
+345,68,1476,528,35,83,1,1,0.32011
+346,68,1478,531,35,83,1,1,0.27216
+347,68,1481,534,35,84,1,1,0.28922
+348,68,1483,536,35,84,1,1,0.38529
+349,68,1485,538,35,85,1,1,0.38953
+350,68,1487,540,35,85,1,1,0.45704
+351,68,1490,542,35,86,1,1,0.41475
+352,68,1494,544,37,89,1,1,0.46754
+353,68,1495,545,39,89,1,1,0.50278
+354,68,1497,547,41,89,1,1,0.42937
+355,68,1500,548,40,89,1,1,0.47696
+356,68,1504,549,32,88,1,1,0.55839
+357,68,1505,551,35,88,1,1,0.54213
+358,68,1506,553,38,89,1,1,0.21652
+359,68,1508,554,37,89,1,1,0.25029
+360,68,1509,557,37,88,1,1,0.24246
+361,68,1511,559,37,88,1,1,0.26079
+362,68,1514,561,37,89,1,1,0.23977
+363,68,1514,560,40,90,1,1,0.27875
+364,68,1516,566,40,90,1,1,0.23479
+365,68,1518,568,36,91,1,1,0.27673
+366,68,1520,570,32,92,1,1,0.3089
+367,68,1522,572,32,93,1,1,0.32592
+368,68,1524,574,32,95,1,1,0.32955
+369,68,1523,574,35,92,1,1,0.33094
+370,68,1523,575,38,89,1,1,0.30997
+371,68,1525,575,35,89,1,1,0.3321
+372,68,1527,575,40,88,1,1,0.28446
+373,68,1531,576,36,95,1,1,0.2469
+374,68,1530,574,37,103,1,1,0.4957
+375,68,1529,572,32,100,1,1,0.22142
+376,68,1528,570,32,98,1,1,0.20324
+377,68,1528,569,32,96,1,1,0.17526
+378,68,1528,568,32,94,1,1,0.14545
+379,68,1528,567,33,93,1,1,0.17804
+380,68,1527,565,36,93,1,1,0.18861
+381,68,1526,563,35,93,1,1,0.24645
+382,68,1526,562,33,93,1,1,0.25532
+383,68,1526,561,32,93,1,1,0.25919
+384,68,1522,560,35,94,1,1,0.20936
+385,68,1518,560,37,94,1,1,0.21828
+386,68,1515,560,38,95,1,1,0.23184
+387,68,1512,560,39,96,1,1,0.22706
+388,68,1508,560,41,97,1,1,0.22157
+389,68,1505,560,42,98,1,1,0.20085
+390,68,1502,560,44,99,1,1,0.21311
+391,68,1503,564,42,101,1,1,0.20565
+392,68,1498,562,41,102,1,1,0.19163
+393,68,1493,561,41,102,1,1,0.18909
+394,68,1484,562,42,101,1,1,0.15595
+395,68,1476,561,42,101,1,1,0.13087
+396,68,1469,561,42,101,1,1,0.11195
+397,68,1462,561,42,101,1,1,0.094847
+398,68,1455,560,42,102,1,1,0.073154
+399,68,1448,560,41,101,1,1,0.12325
+400,68,1441,560,41,101,1,1,0.17624
+401,68,1434,559,41,102,1,1,0.21567
+402,68,1427,559,41,102,1,1,0.21197
+403,68,1420,559,41,102,1,1,0.19233
+404,68,1408,558,42,103,1,1,0.1809
+405,68,1397,558,42,104,1,1,0.16257
+406,68,1385,558,44,105,1,1,0.15556
+407,68,1374,557,44,107,1,1,0.1642
+408,68,1362,557,45,108,1,1,0.17551
+409,68,1351,557,46,109,1,1,0.16712
+410,68,1340,558,47,110,1,1,0.34178
+411,68,1328,558,46,112,1,1,0.34664
+412,68,1317,558,45,114,1,1,0.37505
+413,68,1306,556,45,117,1,1,0.39683
+414,68,1292,555,45,118,1,1,0.41505
+415,68,1278,554,45,119,1,1,0.15815
+416,68,1264,553,45,120,1,1,0.14265
+417,68,1250,552,45,121,1,1,0.13168
+418,68,1235,551,45,122,1,1,0.087133
+419,68,1220,550,45,123,1,1,0.40445
+420,68,1205,549,45,124,1,1,0.408
+421,68,1190,548,45,125,1,1,0.42892
+422,68,1175,547,45,126,1,1,0.47518
+423,68,1160,547,45,127,1,1,0.55299
+424,68,1141,547,45,127,1,1,0.55299
+425,68,1124,547,45,127,1,1,0.58764
+426,68,1104,544,45,127,1,1,0.043139
+427,68,1086,547,45,127,1,1,0.59918
+428,68,1069,548,45,127,1,1,0.032269
+429,68,1049,551,45,127,1,1,0.023438
+430,68,1028,555,45,127,1,1,0.042799
+370,69,1497,582,25,94,1,1,0.47935
+371,69,1497,583,25,94,1,1,0.45547
+372,69,1498,584,25,94,1,1,0.58947
+373,69,1497,582,25,94,1,1,0.51984
+374,69,1497,580,25,94,1,1,0.26883
+375,69,1496,579,25,94,1,1,0.32267
+376,69,1496,577,25,94,1,1,0.28704
+377,69,1496,576,25,94,1,1,0.31741
+378,69,1499,575,26,94,1,1,0.34932
+379,69,1497,574,25,94,1,1,0.36842
+380,69,1495,573,25,94,1,1,0.39474
+381,69,1493,571,25,94,1,1,0.40688
+382,69,1492,570,24,94,1,1,0.41684
+383,69,1490,569,24,97,1,1,0.42449
+384,69,1488,567,24,99,1,1,0.396
+385,69,1485,566,25,100,1,1,0.40823
+386,69,1483,566,25,101,1,1,0.4359
+387,69,1481,566,25,102,1,1,0.6699
+388,69,1478,565,25,102,1,1,0.45071
+389,69,1475,565,25,102,1,1,0.4242
+390,69,1473,565,25,102,1,1,0.3764
+391,69,1467,567,25,103,1,1,0.3676
+392,69,1463,567,25,102,1,1,0.69903
+393,69,1456,566,27,104,1,1,0.70476
+394,69,1450,566,28,106,1,1,0.69159
+395,69,1443,565,28,107,1,1,0.7037
+396,69,1437,565,27,108,1,1,0.70642
+397,69,1431,565,27,108,1,1,0.7156
+398,69,1425,565,26,109,1,1,0.42559
+399,69,1419,565,25,109,1,1,0.72727
+400,69,1413,565,25,110,1,1,0.71171
+401,69,1403,564,25,110,1,1,0.72072
+402,69,1393,564,25,110,1,1,0.71171
+403,69,1384,564,25,110,1,1,0.71171
+404,69,1376,563,25,110,1,1,0.72072
+405,69,1365,562,27,111,1,1,0.72321
+406,69,1355,562,28,111,1,1,0.28325
+407,69,1347,563,26,113,1,1,0.7193
+408,69,1335,562,25,115,1,1,0.71552
+409,69,1323,562,25,116,1,1,0.30013
+410,69,1312,562,24,118,1,1,0.69748
+411,69,1297,561,27,118,1,1,0.33163
+412,69,1283,560,29,118,1,1,0.31317
+413,69,1272,559,28,119,1,1,0.25546
+414,69,1258,558,26,119,1,1,0.27685
+415,69,1244,557,24,119,1,1,0.30667
+416,69,1231,557,22,118,1,1,0.29777
+417,69,1216,556,22,119,1,1,0.37138
+418,69,1201,555,23,120,1,1,0.42321
+419,69,1186,554,23,121,1,1,0.38115
+420,69,1171,554,24,122,1,1,0.7561
+421,69,1154,553,24,122,1,1,0.3974
+422,69,1134,553,25,122,1,1,0.76423
+423,69,1115,554,26,122,1,1,0.47606
+424,69,1095,555,27,121,1,1,0.51171
+425,69,1076,556,28,121,1,1,0.51441
+426,69,1056,552,29,120,1,1,0.55537
+427,69,1036,554,30,120,1,1,0.58251
+428,69,1016,556,31,120,1,1,0.60692
+429,69,996,559,32,119,1,1,0.5697
+430,69,976,561,33,119,1,1,0.60539
+431,69,957,564,33,119,1,1,0.54118
+432,69,934,565,34,119,1,1,0.52571
+433,69,911,566,35,120,1,1,0.53444
+434,69,888,567,36,121,1,1,0.54276
+435,69,866,569,36,121,1,1,0.60789
+436,69,843,568,41,122,1,1,0.60608
+437,69,821,569,40,122,1,1,0.58656
+438,69,799,570,39,122,1,1,0.56524
+439,69,777,571,38,122,1,1,0.61288
+440,69,755,572,38,123,1,1,0.59181
+441,69,733,572,37,126,1,1,0.58185
+442,69,710,574,37,125,1,1,0.49624
+443,69,686,574,40,126,1,1,0.42635
+444,69,663,574,36,126,1,1,0.40881
+445,69,636,575,37,129,1,1,0.41903
+446,69,609,576,38,131,1,1,0.42813
+447,69,586,577,41,126,1,1,0.37608
+448,69,559,578,42,130,1,1,0.39127
+449,69,532,573,41,138,1,1,0.37718
+358,70,1490,555,32,87,1,1,0.24656
+359,70,1491,557,32,87,1,1,0.69318
+360,70,1493,559,32,88,1,1,0.66054
+361,70,1495,561,31,89,1,1,0.68889
+362,70,1496,563,32,90,1,1,0.68132
+363,70,1498,566,31,90,1,1,0.68132
+364,70,1500,568,31,91,1,1,0.67391
+365,70,1501,570,31,92,1,1,0.66667
+366,70,1503,572,31,93,1,1,0.67021
+367,70,1505,574,30,94,1,1,0.66316
+368,70,1507,577,30,94,1,1,0.66316
+369,70,1507,576,31,95,1,1,0.66667
+370,70,1508,576,32,96,1,1,0.388
+371,70,1508,576,34,96,1,1,0.40795
+372,70,1509,575,34,98,1,1,0.41414
+373,70,1510,575,35,98,1,1,0.44501
+374,70,1510,575,37,99,1,1,0.13684
+375,70,1511,574,37,100,1,1,0.65347
+376,70,1511,574,39,101,1,1,0.64706
+377,70,1512,574,40,101,1,1,0.64706
+378,70,1513,574,41,102,1,1,0.63107
+379,70,1511,572,41,102,1,1,0.65049
+380,70,1510,570,41,102,1,1,0.66019
+381,70,1508,569,41,103,1,1,0.66346
+382,70,1507,568,40,104,1,1,0.64762
+383,70,1506,567,40,105,1,1,0.63208
+384,70,1503,564,42,105,1,1,0.65094
+385,70,1501,564,42,105,1,1,0.65094
+386,70,1500,564,41,105,1,1,0.66038
+387,70,1497,561,40,105,1,1,0.53935
+388,70,1495,564,40,106,1,1,0.6729
+389,70,1491,564,42,105,1,1,0.67925
+390,70,1487,564,42,105,1,1,0.68868
+391,70,1481,565,45,105,1,1,0.51395
+392,70,1478,564,42,103,1,1,0.54405
+393,70,1471,564,43,104,1,1,0.51558
+394,70,1465,564,43,105,1,1,0.49485
+395,70,1459,564,44,106,1,1,0.51443
+396,70,1453,564,44,107,1,1,0.5321
+397,70,1447,564,44,108,1,1,0.53394
+398,70,1441,565,45,109,1,1,0.54644
+399,70,1431,564,45,109,1,1,0.51502
+400,70,1421,564,45,109,1,1,0.44625
+401,70,1412,563,45,109,1,1,0.46759
+402,70,1402,563,45,109,1,1,0.46186
+403,70,1393,563,45,109,1,1,0.46186
+404,70,1387,563,42,109,1,1,0.47357
+405,70,1376,563,44,109,1,1,0.45253
+406,70,1366,563,44,110,1,1,0.43784
+407,70,1356,563,44,111,1,1,0.43929
+408,70,1346,563,44,113,1,1,0.47953
+6,71,1461,503,20,42,1,1,0.50388
+7,71,1461,498,22,43,1,1,0.43083
+8,71,1461,506,22,42,1,1,0.48433
+9,71,1462,507,24,43,1,1,0.61818
+10,71,1461,519,25,42,1,1,0.73166
+11,71,1460,507,28,45,1,1,0.74513
+12,71,1461,511,26,44,1,1,0.77613
+13,71,1465,506,25,44,1,1,0.7812
+14,71,1465,503,24,44,1,1,0.50489
+15,71,1467,504,23,44,1,1,0.33333
+16,71,1469,505,22,44,1,1,0.44444
+17,71,1470,503,21,44,1,1,0.46667
+18,71,1472,503,20,44,1,1,0.46667
+19,71,1473,504,18,41,1,1,0.40476
+20,71,1474,502,18,42,1,1,0.38556
+21,71,1473,502,18,43,1,1,0.26316
+84,72,1417,508,24,54,1,1,0.28073
+85,72,1413,511,18,53,1,1,0.2193
+86,72,1410,511,19,53,1,1,0.29537
+87,72,1408,511,19,53,1,1,0.38611
+88,72,1406,512,19,53,1,1,0.36667
+89,72,1404,512,19,53,1,1,0.41111
+90,72,1400,514,19,53,1,1,0.47778
+91,72,1396,517,19,53,1,1,0.48611
+92,72,1395,517,18,55,1,1,0.59586
+93,72,1392,520,19,55,1,1,0.62232
+94,72,1387,520,20,54,1,1,0.64589
+95,72,1383,520,21,54,1,1,0.64876
+96,72,1379,520,21,54,1,1,0.62975
+97,72,1375,520,22,54,1,1,0.46877
+98,72,1371,522,22,54,1,1,0.5083
+99,72,1367,522,22,53,1,1,0.27214
+100,72,1363,522,22,53,1,1,0.42351
+101,72,1359,522,22,53,1,1,0.35185
+102,72,1355,522,22,53,1,1,0.36876
+103,72,1351,522,22,53,1,1,0.33414
+104,72,1347,522,22,53,1,1,0.28261
+105,72,1343,522,22,53,1,1,0.21659
+106,72,1339,522,22,53,1,1,0.18357
+107,72,1335,522,22,53,1,1,0.17391
+108,72,1331,522,23,53,1,1,0.17593
+109,72,1327,522,23,53,1,1,0.16667
+110,72,1323,522,23,53,1,1,0.16667
+111,72,1319,522,23,53,1,1,0.16667
+112,72,1315,522,23,53,1,1,0.16667
+113,72,1311,522,23,53,1,1,0.16667
+114,72,1307,522,23,53,1,1,0.16667
+115,72,1303,522,23,53,1,1,0.16667
+116,72,1299,522,23,53,1,1,0.15586
+117,72,1295,522,23,53,1,1,0.16358
+118,72,1291,523,24,52,1,1,0.2317
+119,72,1286,523,24,52,1,1,0.18415
+120,72,1282,523,23,53,1,1,0.25694
+121,72,1279,522,23,53,1,1,0.44136
+122,72,1276,522,23,52,1,1,0.51808
+123,72,1274,522,22,52,1,1,0.67022
+124,72,1269,522,22,52,1,1,0.80312
+125,72,1265,523,22,52,1,1,0.79573
+126,72,1261,524,22,52,1,1,0.72847
+127,72,1257,523,21,53,1,1,0.78956
+128,72,1253,523,21,54,1,1,0.86364
+129,72,1248,522,21,54,1,1,0.81818
+130,72,1244,522,21,54,1,1,0.81818
+131,72,1240,522,21,54,1,1,0.81818
+132,72,1236,521,21,55,1,1,0.81818
+133,72,1232,521,21,55,1,1,0.81818
+134,72,1228,521,21,55,1,1,0.81818
+135,72,1224,520,21,56,1,1,0.82137
+136,72,1220,520,21,56,1,1,0.86603
+137,72,1216,520,21,56,1,1,0.86603
+138,72,1212,519,21,57,1,1,0.86834
+139,72,1207,519,22,56,1,1,0.83219
+140,72,1203,519,22,56,1,1,0.83219
+141,72,1199,518,22,57,1,1,0.55172
+142,72,1195,518,22,57,1,1,0.55172
+143,72,1191,518,22,57,1,1,0.51124
+144,72,1187,517,21,58,1,1,0.53929
+145,72,1183,517,21,58,1,1,0.53929
+146,72,1179,517,21,58,1,1,0.58475
+147,72,1175,516,21,59,1,1,0.54545
+148,72,1171,516,21,59,1,1,0.50455
+149,72,1166,516,22,58,1,1,0.48637
+150,72,1162,515,22,59,1,1,0.45652
+151,72,1158,515,22,59,1,1,0.4942
+152,72,1154,515,22,59,1,1,0.4558
+153,72,1150,514,22,60,1,1,0.46472
+154,72,1146,514,22,60,1,1,0.35139
+155,72,1142,514,22,60,1,1,0.23806
+156,72,1138,513,22,61,1,1,0.92146
+157,72,1134,513,22,61,1,1,0.96073
+158,72,1130,513,22,61,1,1,1
+159,72,1126,513,22,61,1,1,1
+160,72,1117,516,25,59,1,1,0.85385
+161,72,1116,516,31,61,1,1,1
+162,72,1109,516,30,63,1,1,0.93851
+163,72,1103,521,30,57,1,1,0.90323
+164,72,1105,517,25,60,1,1,1
+165,72,1093,518,29,62,1,1,0.8709
+166,72,1087,521,32,58,1,1,0.78788
+167,72,1085,518,32,59,1,1,0.82424
+168,72,1082,519,30,56,1,1,0.80985
+169,72,1083,518,23,60,1,1,0.9194
+170,72,1079,518,23,60,1,1,0.8791
+171,72,1076,518,23,60,1,1,0.8791
+172,72,1073,518,23,60,1,1,0.8791
+173,72,1069,518,23,61,1,1,0.83871
+174,72,1066,518,23,61,1,1,0.83871
+175,72,1063,518,23,61,1,1,0.83871
+176,72,1059,518,23,62,1,1,0.79828
+177,72,1056,518,23,62,1,1,0.79828
+178,72,1053,518,23,62,1,1,0.75794
+179,72,1050,519,23,62,1,1,0.75397
+180,72,1048,519,23,62,1,1,0.75794
+181,72,1046,519,23,62,1,1,0.79828
+182,72,1045,520,22,62,1,1,0.87164
+183,72,1042,520,22,62,1,1,0.82885
+184,72,1039,520,22,62,1,1,0.82885
+185,72,1036,520,22,62,1,1,0.78951
+186,72,1033,520,23,62,1,1,0.79828
+187,72,1030,521,23,61,1,1,0.79503
+188,72,1028,521,23,61,1,1,0.83602
+189,72,1025,522,23,61,1,1,0.83333
+190,72,1022,522,24,61,1,1,0.84
+191,72,1020,522,23,61,1,1,0.875
+192,72,1017,523,24,60,1,1,0.88
+193,72,1014,523,24,60,1,1,0.88
+194,72,1012,524,24,60,1,1,0.92
+195,72,1009,524,25,60,1,1,0.88462
+196,72,1007,524,26,60,1,1,0.88889
+197,72,1005,524,26,60,1,1,0.85185
+198,72,1003,524,27,61,1,1,0.85714
+199,72,1001,525,27,60,1,1,0.82143
+200,72,998,525,29,60,1,1,0.8
+201,72,996,525,29,61,1,1,0.76667
+202,72,994,525,30,61,1,1,0.77419
+203,72,992,525,30,61,1,1,0.7461
+204,72,990,526,31,61,1,1,0.75
+205,72,988,526,31,62,1,1,0.72321
+206,72,987,526,30,62,1,1,0.74603
+207,72,986,527,30,62,1,1,0.74603
+208,72,986,528,28,62,1,1,0.75862
+209,72,985,529,28,62,1,1,0.75862
+210,72,984,529,27,63,1,1,0.75391
+211,72,984,530,26,63,1,1,0.77778
+212,72,983,531,25,63,1,1,0.76923
+213,72,982,532,25,63,1,1,0.76923
+214,72,982,533,24,63,1,1,0.8
+215,72,981,532,25,63,1,1,0.8107
+216,72,981,532,25,63,1,1,0.8107
+217,72,981,532,25,63,1,1,0.8107
+218,72,981,531,25,64,1,1,0.81361
+219,72,981,531,25,64,1,1,0.81361
+220,72,981,531,25,63,1,1,0.8137
+221,72,981,530,25,64,1,1,0.81657
+222,72,981,530,25,64,1,1,0.81657
+223,72,981,530,25,64,1,1,0.81657
+224,72,981,530,25,64,1,1,0.81657
+225,72,981,530,25,64,1,1,0.81657
+226,72,982,530,24,64,1,1,0.84738
+227,72,982,530,25,64,1,1,0.81657
+228,72,983,530,24,64,1,1,0.80923
+229,72,983,530,25,64,1,1,0.77988
+230,72,984,530,24,64,1,1,0.71569
+231,72,984,530,24,64,1,1,0.75754
+232,72,985,530,24,64,1,1,0.61231
+233,72,985,530,24,64,1,1,0.66831
+234,72,986,530,24,65,1,1,0.57818
+235,72,988,527,22,64,1,1,0.81003
+236,72,989,526,22,65,1,1,0.83333
+237,72,990,526,23,65,1,1,0.78472
+238,72,992,526,22,65,1,1,0.80303
+239,72,993,525,23,66,1,1,0.72575
+240,72,995,525,22,67,1,1,0.69821
+241,72,996,525,23,67,1,1,0.625
+242,72,998,524,22,68,1,1,0.55703
+243,72,999,524,23,68,1,1,0.43116
+244,72,1001,524,23,69,1,1,0.33393
+245,72,1005,520,24,71,1,1,0.32722
+76,73,1424,516,23,47,1,1,0.27865
+77,73,1420,515,23,48,1,1,0.3682
+78,73,1417,515,23,49,1,1,0.34667
+79,73,1413,515,23,49,1,1,0.45167
+80,73,1410,514,23,51,1,1,0.46955
+81,73,1407,514,23,51,1,1,0.52564
+82,73,1403,514,23,52,1,1,0.42138
+83,73,1400,513,23,53,1,1,0.44753
+84,73,1396,513,23,54,1,1,0.3553
+85,73,1393,513,23,54,1,1,0.32727
+86,73,1390,513,23,55,1,1,0.28571
+87,73,1389,511,23,55,1,1,0.34821
+88,73,1385,512,23,55,1,1,0.30655
+89,73,1382,514,23,55,1,1,0.2619
+90,73,1379,516,23,55,1,1,0.23661
+91,73,1376,518,22,54,1,1,0.20632
+92,73,1372,519,23,55,1,1,0.1875
+93,73,1369,521,23,55,1,1,0.15923
+94,73,1366,523,22,54,1,1,0.1083
+95,73,1363,525,22,54,1,1,0.072727
+96,73,1360,527,22,54,1,1,0.036364
+97,73,1356,527,22,54,1,1,0.054545
+98,73,1352,527,23,54,1,1,0.054545
+99,73,1349,527,23,55,1,1,0.071429
+100,73,1345,528,24,54,1,1,0.14691
+101,73,1342,528,24,55,1,1,0.3
+102,73,1338,528,24,55,1,1,0.32143
+103,73,1334,529,25,54,1,1,0.37063
+104,73,1331,529,25,55,1,1,0.40453
+105,73,1327,529,26,55,1,1,0.46032
+106,73,1324,530,26,55,1,1,0.48413
+107,73,1320,529,26,55,1,1,0.56151
+108,73,1317,529,25,54,1,1,0.61538
+109,73,1313,528,25,55,1,1,0.69093
+110,73,1310,528,24,54,1,1,0.67927
+111,73,1306,527,24,55,1,1,0.79429
+112,73,1303,527,23,54,1,1,0.82197
+113,73,1299,526,23,55,1,1,0.76042
+114,73,1296,526,22,54,1,1,0.78656
+115,73,1293,526,21,54,1,1,0.85124
+116,73,1288,525,21,54,1,1,0.96281
+117,73,1283,525,21,54,1,1,1
+118,73,1279,525,20,54,1,1,1
+119,73,1274,524,21,55,1,1,1
+120,73,1270,524,20,55,1,1,1
+121,73,1265,524,20,54,1,1,1
+122,73,1260,523,21,55,1,1,1
+123,73,1256,523,20,55,1,1,1
+124,73,1251,523,20,55,1,1,1
+125,73,1247,523,20,55,1,1,1
+126,73,1242,522,21,56,1,1,1
+127,73,1238,522,21,56,1,1,1
+128,73,1234,522,21,56,1,1,1
+129,73,1230,522,21,56,1,1,1
+130,73,1226,522,21,57,1,1,1
+131,73,1221,521,22,58,1,1,1
+132,73,1217,521,22,58,1,1,1
+133,73,1213,521,22,58,1,1,1
+134,73,1209,521,22,58,1,1,1
+135,73,1205,521,22,59,1,1,1
+136,73,1200,521,22,59,1,1,1
+137,73,1196,521,22,59,1,1,1
+138,73,1192,521,22,59,1,1,1
+139,73,1188,521,22,59,1,1,1
+140,73,1184,521,22,59,1,1,1
+141,73,1180,521,22,59,1,1,1
+142,73,1176,521,22,59,1,1,1
+143,73,1172,521,22,59,1,1,1
+144,73,1168,521,22,59,1,1,1
+145,73,1164,521,22,60,1,1,1
+146,73,1159,520,22,60,1,1,1
+147,73,1155,520,22,60,1,1,1
+148,73,1151,520,22,60,1,1,1
+149,73,1147,520,22,60,1,1,1
+150,73,1143,520,22,60,1,1,1
+151,73,1138,519,22,61,1,1,1
+152,73,1134,519,22,61,1,1,1
+153,73,1130,519,22,61,1,1,1
+154,73,1126,519,22,61,1,1,1
+155,73,1122,519,22,61,1,1,1
+156,73,1117,519,22,61,1,1,1
+157,73,1112,519,22,61,1,1,1
+158,73,1107,519,22,61,1,1,1
+159,73,1102,519,22,61,1,1,1
+160,73,1098,519,22,62,1,1,1
+161,73,1093,519,22,62,1,1,1
+162,73,1088,519,22,62,1,1,1
+163,73,1083,519,22,62,1,1,1
+164,73,1078,519,22,62,1,1,1
+165,73,1074,520,22,62,1,1,1
+166,73,1071,520,22,62,1,1,1
+167,73,1068,520,22,62,1,1,1
+168,73,1065,520,22,62,1,1,1
+169,73,1062,520,22,62,1,1,1
+170,73,1059,520,22,62,1,1,1
+171,73,1056,520,22,62,1,1,1
+172,73,1053,520,22,62,1,1,1
+173,73,1050,520,22,62,1,1,1
+174,73,1047,520,22,62,1,1,1
+175,73,1044,520,22,63,1,1,1
+176,73,1041,520,22,63,1,1,1
+177,73,1039,520,21,63,1,1,1
+178,73,1036,520,22,63,1,1,1
+179,73,1034,520,21,63,1,1,1
+180,73,1031,521,22,63,1,1,1
+181,73,1029,521,21,63,1,1,1
+182,73,1026,521,21,63,1,1,1
+183,73,1024,521,21,63,1,1,1
+184,73,1021,521,21,63,1,1,1
+185,73,1019,522,21,63,1,1,1
+186,73,1016,522,21,63,1,1,1
+187,73,1013,522,21,63,1,1,1
+188,73,1010,522,21,63,1,1,1
+189,73,1007,522,21,64,1,1,1
+190,73,1004,522,21,64,1,1,1
+191,73,1001,522,21,64,1,1,1
+192,73,998,522,21,65,1,1,1
+193,73,995,522,21,65,1,1,0.9814
+194,73,992,522,21,65,1,1,0.96143
+195,73,989,523,22,65,1,1,0.94466
+196,73,987,523,22,65,1,1,0.94269
+197,73,986,523,22,65,1,1,0.96179
+198,73,984,524,22,65,1,1,0.96179
+199,73,983,524,22,65,1,1,0.98024
+200,73,981,525,22,65,1,1,0.96047
+201,73,980,525,22,65,1,1,0.97958
+202,73,978,525,22,65,1,1,0.97892
+203,73,977,526,22,65,1,1,1
+204,73,975,526,22,65,1,1,1
+205,73,974,527,22,65,1,1,1
+206,73,972,527,22,65,1,1,1
+207,73,971,528,22,65,1,1,1
+208,73,970,528,22,66,1,1,1
+209,73,969,529,22,65,1,1,1
+210,73,968,530,22,65,1,1,1
+211,73,967,530,22,66,1,1,0.97729
+212,73,966,531,22,65,1,1,0.95389
+213,73,965,531,22,66,1,1,0.92992
+214,73,964,532,22,66,1,1,0.90655
+215,73,963,533,22,66,1,1,0.88319
+216,73,963,533,22,66,1,1,0.87995
+217,73,963,533,22,66,1,1,0.8767
+218,73,963,533,22,66,1,1,0.87346
+219,73,963,533,22,66,1,1,0.87346
+220,73,963,533,22,66,1,1,0.87021
+221,73,963,533,22,66,1,1,0.84426
+222,73,963,533,22,66,1,1,0.84036
+223,73,963,533,22,66,1,1,0.84036
+224,73,963,533,22,66,1,1,0.80921
+225,73,963,533,22,67,1,1,0.80754
+226,73,963,533,22,67,1,1,0.80754
+227,73,964,533,22,67,1,1,0.79284
+228,73,965,533,22,68,1,1,0.75425
+229,73,966,533,22,68,1,1,0.69754
+230,73,967,533,22,68,1,1,0.62319
+231,73,964,533,22,69,1,1,0.46522
+232,73,968,531,21,69,1,1,0.47922
+233,73,965,532,22,70,1,1,0.30374
+234,73,970,530,20,71,1,1,0.31548
+312,74,1249,521,22,58,1,1,0.87841
+313,74,1253,521,22,58,1,1,0.83493
+314,74,1257,521,22,58,1,1,0.81135
+315,74,1261,521,22,58,1,1,0.81135
+316,74,1265,521,22,58,1,1,0.80545
+317,74,1269,521,22,58,1,1,0.82461
+318,74,1273,521,22,58,1,1,0.87104
+319,74,1277,521,22,58,1,1,0.76787
+320,74,1281,521,22,58,1,1,0.79366
+321,74,1285,521,22,58,1,1,0.6647
+322,74,1289,521,23,59,1,1,0.78125
+323,74,1291,519,23,59,1,1,0.8
+324,74,1294,518,23,58,1,1,0.82203
+325,74,1297,516,23,59,1,1,0.8
+326,74,1299,515,23,58,1,1,0.83192
+327,74,1302,514,23,58,1,1,0.83686
+328,74,1305,512,23,58,1,1,0.86864
+329,74,1307,511,23,57,1,1,0.89224
+330,74,1310,509,23,58,1,1,0.8976
+331,74,1313,508,23,57,1,1,0.875
+332,74,1316,507,23,57,1,1,0.84411
+333,74,1318,506,23,57,1,1,0.83405
+334,74,1320,506,23,56,1,1,0.81579
+335,74,1322,505,23,57,1,1,0.83621
+336,74,1324,505,23,56,1,1,0.86111
+337,74,1326,505,23,56,1,1,0.77193
+338,74,1328,504,23,56,1,1,0.71491
+339,74,1330,504,23,55,1,1,0.70982
+340,74,1332,503,23,56,1,1,0.71491
+341,74,1334,503,23,55,1,1,0.69717
+342,74,1336,503,23,55,1,1,0.71354
+343,74,1336,504,24,56,1,1,0.72982
+344,74,1337,506,24,56,1,1,0.73754
+345,74,1338,508,25,56,1,1,0.7247
+346,74,1338,510,26,56,1,1,0.74269
+347,74,1339,512,27,56,1,1,0.73935
+348,74,1340,514,27,56,1,1,0.7594
+349,74,1340,516,29,56,1,1,0.76433
+350,74,1341,518,29,56,1,1,0.77193
+351,74,1342,520,30,57,1,1,0.75862
+352,74,1352,520,22,56,1,1,0.60259
+353,74,1348,522,28,57,1,1,0.75922
+354,74,1351,523,26,57,1,1,0.65006
+355,74,1353,524,24,57,1,1,0.66897
+356,74,1355,525,22,57,1,1,0.65967
+357,74,1358,528,21,57,1,1,0.6826
+358,74,1358,527,20,56,1,1,0.67251
+359,74,1358,528,20,55,1,1,0.67772
+360,74,1359,529,19,54,1,1,0.72364
+361,74,1360,531,19,53,1,1,0.69167
+362,74,1363,538,18,54,1,1,0.56555
+363,74,1359,536,22,53,1,1,0.69082
+364,74,1360,538,22,54,1,1,0.66245
+365,74,1361,541,22,55,1,1,0.62112
+366,74,1361,542,22,56,1,1,0.63844
+367,74,1361,543,22,57,1,1,0.64093
+368,74,1362,545,21,57,1,1,0.64107
+369,74,1362,546,21,58,1,1,0.68413
+370,74,1362,547,21,59,1,1,0.68636
+371,74,1363,549,20,59,1,1,0.69048
+372,74,1363,549,20,59,1,1,0.71746
+373,74,1362,550,20,59,1,1,0.79048
+374,74,1363,550,20,59,1,1,0.71429
+375,74,1361,548,20,59,1,1,0.7381
+376,74,1360,546,20,59,1,1,0.74206
+377,74,1358,544,20,59,1,1,0.74206
+378,74,1357,542,20,59,1,1,0.74603
+379,74,1355,540,20,59,1,1,0.77063
+380,74,1354,538,20,59,1,1,0.74841
+381,74,1353,536,20,59,1,1,0.63175
+382,74,1349,535,20,60,1,1,0.67135
+383,74,1346,535,20,61,1,1,0.64747
+384,74,1342,535,20,61,1,1,0.5576
+385,74,1339,535,20,62,1,1,0.44671
+386,74,1336,535,19,63,1,1,0.32812
+387,74,1332,534,20,64,1,1,0.36996
+388,74,1329,534,19,65,1,1,0.35455
+389,74,1325,534,20,65,1,1,0.32251
+390,74,1322,534,19,66,1,1,0.33358
+391,74,1319,534,19,67,1,1,0.43382
+392,74,1311,533,25,65,1,1,0.4021
+393,74,1303,532,25,65,1,1,0.42483
+394,74,1296,532,24,66,1,1,0.34806
+395,74,1288,531,24,66,1,1,0.3606
+396,74,1281,531,24,66,1,1,0.39821
+397,74,1273,530,25,67,1,1,0.42081
+398,74,1266,530,25,67,1,1,0.45701
+399,74,1258,529,26,68,1,1,0.47665
+400,74,1251,529,26,68,1,1,0.4686
+401,74,1244,529,26,68,1,1,0.71659
+402,74,1236,528,26,69,1,1,0.89206
+403,74,1228,527,26,70,1,1,1
+404,74,1220,527,27,70,1,1,0.97988
+405,74,1210,525,27,70,1,1,0.94266
+406,74,1200,523,28,71,1,1,0.8908
+407,74,1188,523,28,71,1,1,0.8908
+408,74,1177,523,28,72,1,1,0.87104
+409,74,1165,523,29,72,1,1,0.85388
+410,74,1154,523,29,73,1,1,0.83378
+411,74,1143,523,29,73,1,1,0.81081
+412,74,1129,522,29,73,1,1,0.85225
+413,74,1116,521,29,73,1,1,0.83063
+414,74,1102,521,29,73,1,1,0.78514
+415,74,1089,520,29,73,1,1,0.74234
+416,74,1075,520,29,73,1,1,0.7009
+417,74,1062,519,29,73,1,1,0.65495
+418,74,1048,518,29,73,1,1,0.61712
+419,74,1035,518,29,73,1,1,0.54279
+420,74,1021,517,29,73,1,1,0.51351
+317,75,1521,570,47,58,0,10,0.41631
+318,75,1525,569,48,59,0,10,0.39864
+319,75,1530,569,49,59,0,10,0.39167
+320,75,1535,569,50,59,0,10,0.3817
+321,75,1540,569,50,59,0,10,0.37451
+322,75,1545,569,51,59,0,10,0.3891
+323,75,1549,569,53,59,0,10,0.40988
+324,75,1554,569,53,59,0,10,0.40988
+325,75,1559,569,54,59,0,10,0.44727
+326,75,1564,569,55,59,0,10,0.4756
+327,75,1569,569,56,60,0,10,0.51251
+328,75,1573,567,56,61,0,10,0.52999
+329,75,1577,565,56,62,0,10,0.53745
+330,75,1581,563,56,63,0,10,0.53564
+331,75,1586,561,55,64,0,10,0.55275
+332,75,1590,559,55,65,0,10,0.54762
+333,75,1594,557,55,66,0,10,0.54558
+334,75,1599,555,54,67,0,10,0.51471
+335,75,1603,553,54,68,0,10,0.45639
+336,75,1607,551,54,69,0,10,0.48727
+337,75,1612,550,54,69,0,10,0.51429
+338,75,1615,552,54,69,0,10,0.57455
+339,75,1618,555,54,69,0,10,0.66545
+340,75,1622,558,54,69,0,10,0.71247
+341,75,1625,560,54,69,0,10,0.71325
+342,75,1629,563,54,69,0,10,0.65091
+343,75,1632,566,54,69,0,10,0.64338
+344,75,1635,568,54,69,0,10,0.64545
+345,75,1639,571,54,69,0,10,0.64416
+346,75,1642,574,54,69,0,10,0.61247
+347,75,1646,577,54,69,0,10,0.62909
+348,75,1649,578,54,69,0,10,0.66909
+349,75,1653,580,53,69,0,10,0.69921
+350,75,1657,581,53,70,0,10,0.66667
+351,75,1660,583,53,70,0,10,0.59259
+352,75,1664,584,53,71,0,10,0.59259
+353,75,1668,586,52,71,0,10,0.56604
+354,75,1671,587,52,72,0,10,0.54717
+355,75,1675,589,52,72,0,10,0.5283
+356,75,1679,590,51,73,0,10,0.5
+357,75,1683,592,51,73,0,10,0.46154
+358,75,1685,594,51,73,0,10,0.38462
+359,75,1688,596,51,73,0,10,0.32692
+360,75,1691,599,51,73,0,10,0.26923
+361,75,1693,601,51,73,0,10,0.21154
+362,75,1696,604,51,73,0,10,0.15385
+363,75,1699,606,51,73,0,10,0.038462
+364,75,1701,608,51,73,0,10,0
+365,75,1704,611,51,73,0,10,0
+366,75,1707,613,51,73,0,10,0
+367,75,1710,616,51,73,0,10,0
+368,75,1711,615,51,73,0,10,0
+369,75,1712,615,51,73,0,10,0
+370,75,1713,615,51,73,0,10,0
+371,75,1714,614,51,73,0,10,0.0033784
+372,75,1716,614,51,73,0,10,0
+373,75,1717,614,51,73,0,10,0
+374,75,1718,613,51,73,0,10,0
+375,75,1719,613,51,73,0,10,0
+376,75,1720,613,51,73,0,10,0
+377,75,1722,613,51,73,0,10,0
+378,75,1720,612,52,74,0,10,0
+379,75,1718,611,53,75,0,10,0
+380,75,1717,610,53,76,0,10,0
+381,75,1715,609,54,77,0,10,0.072727
+382,75,1714,608,54,79,0,10,0.12727
+383,75,1712,607,55,80,0,10,0.19643
+384,75,1710,606,56,81,0,10,0.26316
+385,75,1709,605,56,82,0,10,0.31579
+386,75,1707,604,57,83,0,10,0.39655
+387,75,1706,603,58,85,0,10,0.44068
+388,75,1701,604,60,85,0,10,0.55738
+389,75,1697,605,62,86,0,10,0.61905
+390,75,1692,606,65,87,0,10,0.65152
+391,75,1688,607,66,87,0,10,0.70251
+392,75,1684,608,68,88,0,10,0.7165
+393,75,1679,609,71,89,0,10,0.71512
+394,75,1675,610,72,89,0,10,0.786
+395,75,1670,611,75,90,0,10,0.78976
+396,75,1666,612,77,91,0,10,0.76923
+397,75,1662,613,79,92,0,10,0.77554
+398,75,1653,612,79,92,0,10,0.85161
+399,75,1644,612,79,92,0,10,0.91694
+400,75,1636,612,78,92,0,10,0.97468
+401,75,1627,612,79,92,0,10,0.98992
+402,75,1619,612,78,92,0,10,0.99156
+403,75,1610,612,78,92,0,10,0.98312
+404,75,1601,612,79,92,0,10,0.975
+405,75,1593,612,78,92,0,10,0.99156
+406,75,1584,612,78,92,0,10,1
+407,75,1576,612,78,92,0,10,1
+408,75,1564,611,78,92,0,10,1
+409,75,1552,610,78,93,0,10,1
+410,75,1541,610,78,93,0,10,1
+411,75,1528,609,78,94,0,10,0.99227
+412,75,1515,609,79,94,0,10,1
+413,75,1502,609,79,94,0,10,1
+414,75,1490,609,79,94,0,10,1
+415,75,1475,608,79,95,0,10,1
+416,75,1460,608,79,95,0,10,1
+417,75,1446,608,78,96,0,10,1
+418,75,1430,608,78,95,0,10,1
+419,75,1414,608,78,95,0,10,1
+420,75,1399,608,78,95,0,10,1
+421,75,1382,607,77,95,0,10,1
+422,75,1365,606,77,95,0,10,1
+423,75,1348,606,77,95,0,10,1
+424,75,1328,605,77,96,0,10,1
+425,75,1308,605,77,96,0,10,1
+426,75,1288,605,77,96,0,10,1
+427,75,1268,605,77,96,0,10,1
+428,75,1247,607,78,97,0,10,1
+429,75,1227,609,78,98,0,10,1
+430,75,1205,610,78,99,0,10,1
+431,75,1183,612,79,99,0,10,1
+432,75,1162,614,79,100,0,10,1
+433,75,1140,616,80,100,0,10,1
+434,75,1118,617,81,101,0,10,0.90244
+435,75,1097,619,81,102,0,10,0.78049
+436,75,1075,621,82,102,0,10,0.6747
+437,75,1054,623,82,103,0,10,0.61446
+438,75,1033,624,82,104,0,10,0.55422
+439,75,1010,624,82,104,0,10,0.50602
+440,75,987,624,83,105,0,10,0.47619
+441,75,962,624,83,106,0,10,0.65476
+442,75,937,625,84,107,0,10,0.83529
+443,75,912,626,84,107,0,10,1
+444,75,887,627,85,108,0,10,1
+445,75,862,628,85,108,0,10,1
+446,75,837,629,86,109,0,10,1
+447,75,813,630,86,110,0,10,1
+448,75,785,629,87,111,0,10,1
+449,75,757,628,88,113,0,10,1
+450,75,729,627,89,114,0,10,1
+451,75,702,627,89,115,0,10,1
+452,75,672,626,89,115,0,10,1
+453,75,646,627,88,116,0,10,1
+454,75,616,628,91,117,0,10,1
+455,75,586,630,95,118,0,10,1
+456,75,556,632,92,120,0,10,1
+457,75,526,635,90,121,0,10,1
+458,75,493,636,92,122,0,10,1
+459,75,461,638,93,122,0,10,1
+460,75,425,640,94,122,0,10,1
+461,75,389,642,95,122,0,10,0.9646
+462,75,354,645,95,122,0,10,0.94131
+463,75,325,654,96,121,0,10,0.90046
+464,75,287,655,97,122,0,10,0.90874
+465,75,250,657,98,122,0,10,0.8879
+466,75,212,658,99,123,0,10,0.84129
+467,75,175,660,100,123,0,10,0.82258
+468,75,132,665,100,122,0,10,0.79675
+469,75,95,668,107,121,0,10,0.81967
+470,75,55,662,105,127,0,10,0.88281
+471,75,13,662,109,133,0,10,0.91045
+472,75,-27,664,108,132,0,10,0.74312
+1,76,1107,539,95,79,0,3,0.21107
+2,76,1107,536,96,79,0,3,0.19098
+3,76,1108,533,96,80,0,3,0.17118
+4,76,1110,536,96,81,0,3,0.093664
+5,76,1112,539,97,82,0,3,0.11224
+6,76,1115,543,97,82,0,3,0.10499
+7,76,1114,537,98,83,0,3,0.1924
+8,76,1117,548,98,84,0,3,0.12406
+9,76,1118,551,98,85,0,3,0.12615
+10,76,1119,555,99,85,0,3,0.12733
+11,76,1121,549,99,86,0,3,0.18966
+12,76,1122,555,100,87,0,3,0.12219
+13,76,1122,544,102,87,0,3,0.22683
+14,76,1122,544,103,88,0,3,0.21402
+15,76,1122,544,105,89,0,3,0.21132
+16,76,1122,544,106,90,0,3,0.19893
+17,76,1122,544,108,91,0,3,0.18628
+18,76,1122,544,109,92,0,3,0.17439
+19,76,1122,545,111,92,0,3,0.16331
+20,76,1122,547,112,93,0,3,0.13368
+21,76,1122,549,114,94,0,3,0.12201
+22,76,1122,551,116,95,0,3,0.11058
+23,76,1123,549,116,95,0,3,0.13248
+24,76,1125,551,116,95,0,3,0.12251
+25,76,1127,554,116,95,0,3,0.094551
+26,76,1129,557,116,95,0,3,0.084491
+27,76,1131,560,116,95,0,3,0.084491
+28,76,1134,563,116,95,0,3,0.092593
+29,76,1135,566,116,95,0,3,0.076389
+30,76,1137,570,116,95,0,3,0.066239
+31,76,1139,574,116,95,0,3,0.058048
+32,76,1139,576,116,95,0,3,0.0625
+33,76,1140,562,117,96,0,3,0.14433
+34,76,1145,567,117,97,0,3,0.057074
+35,76,1146,562,118,98,0,3,0.056532
+36,76,1147,558,119,99,0,3,0.07375
+37,76,1149,555,119,99,0,3,0.09325
+38,76,1150,555,120,100,0,3,0.08469
+39,76,1152,555,121,101,0,3,0.10318
+40,76,1154,555,122,102,0,3,0.12132
+41,76,1156,555,123,103,0,3,0.13911
+42,76,1158,556,123,103,0,3,0.15113
+43,76,1157,560,124,103,0,3,0.11538
+44,76,1157,561,125,103,0,3,0.125
+45,76,1157,562,127,103,0,3,0.125
+46,76,1158,564,128,102,0,3,0.12621
+47,76,1158,565,130,102,0,3,0.12621
+48,76,1158,566,132,102,0,3,0.13592
+49,76,1159,568,133,102,0,3,0.12621
+50,76,1158,568,134,102,0,3,0.14563
+51,76,1157,569,136,102,0,3,0.15534
+52,76,1157,570,137,102,0,3,0.1068
+53,76,1160,572,137,102,0,3,0.067961
+54,76,1160,572,138,102,0,3,0.067961
+55,76,1160,572,139,102,0,3,0.07767
+56,76,1161,573,139,101,0,3,0.078431
+57,76,1161,571,140,101,0,3,0.10784
+58,76,1162,570,141,101,0,3,0.11765
+59,76,1162,568,142,101,0,3,0.14706
+60,76,1162,566,143,101,0,3,0.16667
+61,76,1163,565,144,101,0,3,0.18627
+62,76,1164,571,145,101,0,3,0.12745
+63,76,1163,565,145,102,0,3,0.19417
+64,76,1165,569,146,103,0,3,0.16346
+65,76,1164,569,147,104,0,3,0.1619
+66,76,1163,569,148,105,0,3,0.16981
+67,76,1163,570,148,105,0,3,0.16038
+68,76,1162,570,150,107,0,3,0.16667
+69,76,1161,570,151,108,0,3,0.17431
+70,76,1161,571,151,108,0,3,0.16514
+71,76,1160,571,152,109,0,3,0.17273
+72,76,1160,572,153,110,0,3,0.17117
+73,76,1158,572,153,110,0,3,0.17117
+74,76,1156,572,153,110,0,3,0.18018
+75,76,1154,572,153,110,0,3,0.18919
+76,76,1152,573,153,109,0,3,0.21818
+77,76,1150,573,154,109,0,3,0.21818
+78,76,1148,573,154,109,0,3,0.21818
+79,76,1146,574,154,108,0,3,0.22018
+80,76,1144,574,154,108,0,3,0.22018
+81,76,1142,574,154,108,0,3,0.22936
+82,76,1141,575,154,108,0,3,0.22936
+83,76,1137,576,156,108,0,3,0.22936
+84,76,1134,578,157,108,0,3,0.22936
+85,76,1131,580,158,108,0,3,0.23853
+86,76,1128,582,159,108,0,3,0.24771
+87,76,1125,584,160,108,0,3,0.25688
+88,76,1121,586,162,107,0,3,0.26852
+89,76,1118,588,163,107,0,3,0.28704
+90,76,1115,590,164,107,0,3,0.2963
+91,76,1112,592,165,107,0,3,0.30556
+92,76,1109,594,166,107,0,3,0.31481
+93,76,1104,594,167,108,0,3,0.34862
+94,76,1100,595,168,108,0,3,0.34862
+95,76,1096,596,169,108,0,3,0.34862
+96,76,1092,596,170,109,0,3,0.35455
+97,76,1088,597,171,109,0,3,0.35455
+98,76,1084,598,171,109,0,3,0.35455
+99,76,1080,598,172,110,0,3,0.36036
+100,76,1076,599,173,110,0,3,0.36036
+101,76,1072,600,174,110,0,3,0.36937
+102,76,1068,601,175,110,0,3,0.37838
+103,76,1063,601,176,110,0,3,0.3964
+104,76,1059,601,176,111,0,3,0.40179
+105,76,1054,601,177,111,0,3,0.41071
+106,76,1050,601,177,112,0,3,0.41593
+107,76,1045,602,179,111,0,3,0.41964
+108,76,1041,602,179,112,0,3,0.42478
+109,76,1036,602,180,112,0,3,0.43363
+110,76,1032,602,180,113,0,3,0.4386
+111,76,1028,603,181,113,0,3,0.4386
+112,76,1024,605,176,116,0,3,0.4188
+113,76,1018,604,177,117,0,3,0.4322
+114,76,1013,604,177,117,0,3,0.44068
+115,76,1008,603,177,119,0,3,0.45
+116,76,1003,603,177,119,0,3,0.45833
+117,76,998,603,178,120,0,3,0.46281
+118,76,993,602,178,121,0,3,0.47541
+119,76,988,602,178,121,0,3,0.45082
+120,76,983,601,178,123,0,3,0.42742
+121,76,978,601,178,123,0,3,0.42742
+122,76,973,601,179,124,0,3,0.432
+123,76,967,601,179,124,0,3,0.44
+124,76,962,601,179,124,0,3,0.448
+125,76,956,601,179,124,0,3,0.456
+126,76,951,601,179,124,0,3,0.464
+127,76,945,601,179,124,0,3,0.472
+128,76,940,601,179,124,0,3,0.48
+129,76,934,601,179,124,0,3,0.488
+130,76,929,601,179,124,0,3,0.496
+131,76,924,601,179,124,0,3,0.504
+132,76,916,602,179,124,0,3,0.504
+133,76,911,601,179,124,0,3,0.52
+134,76,906,601,179,124,0,3,0.528
+135,76,901,601,179,124,0,3,0.536
+136,76,896,600,179,124,0,3,0.552
+137,76,891,600,179,124,0,3,0.56
+138,76,886,600,179,124,0,3,0.576
+139,76,881,599,179,124,0,3,0.568
+140,76,876,599,179,124,0,3,0.56
+141,76,871,599,179,124,0,3,0.552
+142,76,867,599,179,124,0,3,0.544
+143,76,862,599,179,124,0,3,0.544
+144,76,857,599,179,124,0,3,0.552
+145,76,852,599,179,124,0,3,0.552
+146,76,847,599,179,124,0,3,0.56
+147,76,842,600,179,123,0,3,0.55645
+148,76,837,600,179,123,0,3,0.56452
+149,76,832,600,179,123,0,3,0.57258
+150,76,827,600,179,123,0,3,0.56452
+151,76,822,601,179,123,0,3,0.55645
+152,76,818,603,173,123,0,3,0.54032
+153,76,810,602,173,123,0,3,0.54839
+154,76,803,601,173,123,0,3,0.55645
+155,76,796,600,174,123,0,3,0.56452
+156,76,790,600,175,122,0,3,0.56098
+157,76,784,599,175,122,0,3,0.56098
+158,76,778,599,176,122,0,3,0.55285
+159,76,773,598,175,123,0,3,0.54839
+160,76,769,598,174,123,0,3,0.54839
+161,76,764,598,174,123,0,3,0.54839
+162,76,760,598,173,123,0,3,0.54839
+163,76,754,597,173,123,0,3,0.55645
+164,76,749,596,173,124,0,3,0.56
+165,76,744,596,173,123,0,3,0.56452
+166,76,739,595,173,124,0,3,0.568
+167,76,734,595,173,124,0,3,0.568
+168,76,729,594,172,124,0,3,0.576
+169,76,725,593,171,124,0,3,0.584
+170,76,721,593,170,124,0,3,0.584
+171,76,717,592,171,125,0,3,0.5873
+172,76,713,592,173,125,0,3,0.5873
+173,76,709,591,172,125,0,3,0.59524
+174,76,706,590,170,125,0,3,0.60317
+175,76,703,590,169,124,0,3,0.608
+176,76,700,587,168,126,0,3,0.62205
+177,76,697,585,168,128,0,3,0.63011
+178,76,694,585,167,127,0,3,0.64156
+179,76,691,585,167,126,0,3,0.64534
+180,76,688,585,167,125,0,3,0.64919
+181,76,685,585,167,124,0,3,0.66048
+182,76,682,586,167,123,0,3,0.65707
+183,76,680,586,164,124,0,3,0.65556
+184,76,677,586,165,124,0,3,0.65759
+185,76,674,586,166,124,0,3,0.66668
+186,76,671,586,167,124,0,3,0.66905
+187,76,669,586,167,124,0,3,0.67214
+188,76,668,586,166,124,0,3,0.6824
+189,76,666,586,166,125,0,3,0.68263
+190,76,665,586,165,125,0,3,0.69339
+191,76,663,586,165,125,0,3,0.69793
+192,76,662,586,165,126,0,3,0.7052
+193,76,659,586,166,126,0,3,0.70956
+194,76,656,586,167,126,0,3,0.71654
+195,76,653,586,168,126,0,3,0.72343
+196,76,651,586,169,126,0,3,0.73543
+197,76,651,586,170,126,0,3,0.74987
+198,76,651,586,171,126,0,3,0.76415
+199,76,650,586,172,127,0,3,0.77348
+200,76,649,586,174,128,0,3,0.78676
+201,76,648,586,176,129,0,3,0.79744
+202,76,647,586,178,130,0,3,0.80809
+203,76,647,586,181,130,0,3,0.82384
+204,76,648,587,183,130,0,3,0.84057
+205,76,649,587,185,130,0,3,0.8573
+206,76,650,588,187,130,0,3,0.87161
+207,76,651,589,189,129,0,3,0.88704
+208,76,651,589,192,130,0,3,0.89368
+209,76,652,590,194,129,0,3,0.90406
+210,76,653,590,196,130,0,3,0.91305
+211,76,654,591,198,129,0,3,0.92346
+212,76,655,592,201,129,0,3,0.93366
+213,76,658,591,203,129,0,3,0.94947
+214,76,661,591,205,129,0,3,0.96497
+215,76,664,591,207,129,0,3,0.97988
+216,76,668,589,210,130,0,3,0.99758
+217,76,673,588,212,130,0,3,1
+218,76,678,587,214,131,0,3,1
+219,76,682,586,217,131,0,3,1
+220,76,687,585,219,131,0,3,1
+221,76,692,584,221,132,0,3,1
+222,76,698,585,220,133,0,3,0.98643
+223,76,705,585,221,131,0,3,0.95045
+224,76,712,585,223,130,0,3,0.91071
+225,76,720,585,224,129,0,3,0.87556
+226,76,726,585,228,128,0,3,0.87773
+227,76,732,585,232,127,0,3,0.87983
+228,76,739,588,234,127,0,3,0.88085
+229,76,747,587,235,127,0,3,0.87712
+230,76,755,586,237,127,0,3,0.88235
+231,76,763,586,239,126,0,3,0.87917
+232,76,773,585,241,126,0,3,0.88017
+233,76,783,584,243,125,0,3,0.88115
+234,76,792,583,245,125,0,3,0.88211
+235,76,802,582,246,125,0,3,0.87482
+236,76,813,581,248,125,0,3,0.87576
+237,76,823,580,250,125,0,3,0.8691
+238,76,835,579,251,125,0,3,0.86558
+239,76,847,578,253,125,0,3,0.85921
+240,76,859,577,254,125,0,3,0.8521
+241,76,871,576,256,125,0,3,0.84911
+242,76,884,576,257,125,0,3,0.84625
+243,76,899,575,258,124,0,3,0.84093
+244,76,915,575,258,123,0,3,0.83497
+245,76,928,573,260,123,0,3,0.83531
+246,76,942,572,262,123,0,3,0.83552
+247,76,958,571,264,123,0,3,0.83929
+248,76,974,570,266,123,0,3,0.79111
+249,76,991,570,267,123,0,3,0.8345
+250,76,1007,569,269,123,0,3,0.93297
+251,76,1023,568,271,123,0,3,0.96771
+252,76,1040,568,273,123,0,3,0.98084
+253,76,1057,567,274,121,0,3,0.98319
+254,76,1075,565,278,121,0,3,0.95252
+255,76,1093,564,282,121,0,3,0.92933
+256,76,1113,562,284,122,0,3,0.90526
+257,76,1134,561,286,123,0,3,0.87805
+258,76,1155,560,287,124,0,3,0.85417
+259,76,1175,559,290,124,0,3,0.81787
+260,76,1196,558,291,125,0,3,0.78425
+261,76,1217,557,293,126,0,3,0.75341
+262,76,1238,556,295,127,0,3,0.72973
+263,76,1260,556,298,127,0,3,0.69706
+264,76,1283,556,301,127,0,3,0.65604
+265,76,1306,556,303,127,0,3,0.61852
+266,76,1329,556,306,127,0,3,0.58291
+267,76,1354,556,308,128,0,3,0.58431
+268,76,1379,556,310,129,0,3,0.62414
+269,76,1404,556,313,131,0,3,0.65026
+270,76,1429,556,315,131,0,3,0.66197
+271,76,1454,556,318,131,0,3,0.72509
+272,76,1479,556,321,131,0,3,0.69043
+273,76,1506,555,326,131,0,3,0.64878
+274,76,1533,554,332,131,0,3,0.60988
+275,76,1560,554,338,130,0,3,0.57952
+276,76,1588,553,339,130,0,3,0.53235
+277,76,1618,552,337,130,0,3,0.4264
+278,76,1648,551,336,131,0,3,0.32686
+279,76,1677,550,332,132,0,3,0.21825
+280,76,1709,552,328,134,0,3,0.27907
+281,76,1743,546,323,140,0,3,0.22885
+282,76,1778,549,320,138,0,3,0.17271
+283,76,1793,549,320,137,0,3,0.12599
+284,76,1834,546,320,137,0,3,0.16667
+285,76,1868,548,320,137,0,3,0.081358
+539,77,1904,627,225,110,0,3,0.075221
+540,77,1887,621,225,110,0,3,0.15044
+541,77,1862,619,225,110,0,3,0.26106
+542,77,1842,631,225,110,0,3,0.34956
+543,77,1826,631,224,117,0,3,0.42222
+544,77,1807,629,222,125,0,3,0.51121
+545,77,1792,629,221,125,0,3,0.58108
+546,77,1773,630,221,126,0,3,0.66667
+547,77,1758,620,221,126,0,3,0.73423
+548,77,1743,625,220,121,0,3,0.80543
+549,77,1726,617,220,121,0,3,0.88235
+550,77,1714,621,220,129,0,3,0.93665
+551,77,1697,616,237,131,0,3,0.94118
+552,77,1684,619,237,133,0,3,0.9958
+553,77,1668,614,237,134,0,3,1
+554,77,1656,614,237,134,0,3,1
+555,77,1644,613,237,134,0,3,1
+556,77,1632,612,238,134,0,3,1
+557,77,1620,611,239,134,0,3,1
+558,77,1608,610,240,134,0,3,1
+559,77,1596,609,241,134,0,3,1
+560,77,1585,609,241,134,0,3,1
+561,77,1572,608,243,134,0,3,1
+562,77,1559,607,245,134,0,3,1
+563,77,1551,611,244,133,0,3,1
+564,77,1541,610,242,134,0,3,1
+565,77,1530,610,244,134,0,3,1
+566,77,1520,611,245,134,0,3,1
+567,77,1511,610,246,135,0,3,1
+568,77,1502,610,248,136,0,3,1
+569,77,1493,609,249,137,0,3,1
+570,77,1485,609,250,138,0,3,1
+571,77,1476,610,252,138,0,3,1
+572,77,1468,611,254,139,0,3,1
+573,77,1459,612,256,140,0,3,1
+574,77,1451,613,258,141,0,3,1
+575,77,1444,613,260,142,0,3,1
+576,77,1438,614,261,142,0,3,1
+577,77,1432,618,261,142,0,3,1
+578,77,1425,617,264,144,0,3,1
+579,77,1418,617,268,146,0,3,1
+580,77,1413,617,269,149,0,3,1
+581,77,1408,617,270,150,0,3,1
+582,77,1404,617,271,151,0,3,1
+583,77,1400,617,271,152,0,3,1
+584,77,1396,617,272,154,0,3,1
+585,77,1392,617,275,156,0,3,0.97464
+586,77,1389,617,277,158,0,3,0.94245
+587,77,1386,617,279,160,0,3,0.91071
+588,77,1383,617,281,162,0,3,0.86879
+589,77,1382,617,282,163,0,3,0.84547
+590,77,1381,617,283,164,0,3,0.81103
+591,77,1380,617,285,166,0,3,0.78029
+592,77,1381,617,288,168,0,3,0.75091
+593,77,1383,617,290,171,0,3,0.72537
+594,77,1385,617,293,174,0,3,0.70212
+595,77,1379,626,297,174,0,3,0.61948
+596,77,1382,620,301,173,0,3,0.60143
+597,77,1385,622,305,174,0,3,0.56575
+598,77,1388,622,308,175,0,3,0.53045
+599,77,1391,622,312,177,0,3,0.49923
+600,77,1395,622,315,178,0,3,0.46362
+601,77,1398,622,319,180,0,3,0.42895
+602,77,1402,622,322,182,0,3,0.38744
+603,77,1401,623,329,183,0,3,0.34091
+604,77,1411,626,328,186,0,3,0.29275
+605,77,1413,626,333,186,0,3,0.26479
+606,77,1415,626,338,186,0,3,0.29412
+607,77,1420,627,343,187,0,3,0.33511
+608,77,1425,628,348,188,0,3,0.33333
+609,77,1430,629,354,190,0,3,0.35079
+610,77,1433,631,359,189,0,3,0.39474
+611,77,1436,634,364,187,0,3,0.43617
+612,77,1440,637,368,186,0,3,0.48128
+613,77,1447,641,372,186,0,3,0.52406
+614,77,1454,646,377,186,0,3,0.5615
+615,77,1458,649,383,191,0,3,0.59896
+616,77,1463,652,389,196,0,3,0.67442
+617,77,1468,655,395,201,0,3,0.72847
+618,77,1473,658,401,206,0,3,0.80388
+619,77,1480,661,408,210,0,3,0.84426
+620,77,1487,668,410,215,0,3,0.87997
+621,77,1494,670,428,226,0,3,0.89085
+622,77,1501,672,426,230,0,3,0.9154
+623,77,1508,674,424,234,0,3,0.9287
+624,77,1515,677,422,238,0,3,0.93482
+625,77,1525,678,423,240,0,3,0.93396
+626,77,1535,679,425,243,0,3,0.9061
+627,77,1547,680,424,242,0,3,0.88
+628,77,1560,681,424,250,0,3,0.84941
+629,77,1570,674,424,259,0,3,0.82588
+630,77,1582,677,425,261,0,3,0.79577
+631,77,1596,680,420,262,0,3,0.77197
+632,77,1607,683,421,268,0,3,0.74408
+633,77,1619,686,422,274,0,3,0.71395
+634,77,1638,690,421,287,0,3,0.67062
+635,77,1652,696,424,282,0,3,0.63294
+636,77,1666,702,427,278,0,3,0.59579
+637,77,1681,709,429,274,0,3,0.55814
+638,77,1699,716,428,270,0,3,0.51748
+639,77,1718,723,426,266,0,3,0.47541
+640,77,1736,730,425,262,0,3,0.43427
+641,77,1755,737,424,258,0,3,0.39059
+642,77,1775,744,422,255,0,3,0.34515
+643,77,1795,751,420,252,0,3,0.29929
+644,77,1815,758,418,250,0,3,0.25298
+645,77,1832,769,416,238,0,3,0.21343
+646,77,1858,779,416,237,0,3,0.15108
+647,77,1885,781,417,242,0,3,0.086124
+524,78,1894,530,128,51,0,3,0.18515
+525,78,1874,535,128,51,0,3,0.28026
+526,78,1848,535,128,51,0,3,0.42442
+527,78,1822,538,128,51,0,3,0.51208
+528,78,1798,540,128,51,0,3,0.57812
+529,78,1774,533,128,50,0,3,0.77063
+530,78,1750,535,128,50,0,3,0.76486
+531,78,1733,532,121,49,0,3,0.88
+532,78,1706,532,121,49,0,3,0.89213
+533,78,1685,532,121,49,0,3,0.9177
+534,78,1666,535,121,49,0,3,0.90328
+535,78,1646,536,121,49,0,3,0.89574
+536,78,1627,536,121,49,0,3,0.92623
+537,78,1609,537,121,48,0,3,0.77551
+538,78,1590,537,121,48,0,3,1
+539,78,1572,538,121,48,0,3,0.95918
+540,78,1553,539,121,47,0,3,0.97917
+541,78,1535,539,121,47,0,3,0.993
+542,78,1516,540,121,47,0,3,0.99419
+543,78,1498,540,121,47,0,3,0.99402
+544,78,1479,541,121,46,0,3,0.98169
+545,78,1461,542,121,46,0,3,0.97279
+546,78,1446,539,119,47,0,3,0.98611
+547,78,1431,536,118,49,0,3,0.98655
+548,78,1415,534,118,48,0,3,0.97393
+549,78,1400,533,118,47,0,3,0.98669
+550,78,1385,532,118,46,0,3,1
+551,78,1370,531,118,45,0,3,0.98648
+552,78,1356,530,118,45,0,3,0.99324
+553,78,1343,529,117,45,0,3,1
+554,78,1329,528,117,45,0,3,1
+555,78,1316,527,117,45,0,3,1
+556,78,1303,524,117,46,0,3,1
+557,78,1291,522,117,46,0,3,1
+558,78,1278,521,117,45,0,3,1
+559,78,1266,520,117,45,0,3,1
+560,78,1255,519,117,45,0,3,1
+561,78,1244,519,117,45,0,3,1
+562,78,1232,518,117,45,0,3,1
+563,78,1221,518,117,45,0,3,1
+564,78,1210,517,117,45,0,3,1
+565,78,1199,517,117,45,0,3,1
+566,78,1189,517,118,44,0,3,1
+567,78,1179,517,119,43,0,3,1
+568,78,1169,517,120,42,0,3,1
+569,78,1159,517,121,42,0,3,1
+570,78,1148,517,122,42,0,3,1
+571,78,1140,517,121,42,0,3,1
+572,78,1132,517,120,43,0,3,1
+573,78,1125,517,119,43,0,3,1
+574,78,1117,517,118,44,0,3,1
+575,78,1110,517,117,45,0,3,0.97623
+576,78,1100,520,117,45,0,3,0.93515
+577,78,1092,519,117,46,0,3,0.90912
+578,78,1085,518,117,47,0,3,0.88612
+579,78,1078,517,117,48,0,3,0.8587
+580,78,1071,516,117,49,0,3,0.83237
+581,78,1061,515,121,49,0,3,0.78656
+582,78,1056,514,120,49,0,3,0.76959
+583,78,1052,514,119,49,0,3,0.754
+584,78,1048,513,117,50,0,3,0.74111
+585,78,1044,513,116,50,0,3,0.71828
+586,78,1040,512,116,51,0,3,0.70414
+587,78,1036,512,116,51,0,3,0.66979
+588,78,1033,512,116,51,0,3,0.64793
+589,78,1029,511,116,52,0,3,0.62748
+590,78,1025,511,116,52,0,3,0.59668
+591,78,1022,511,116,53,0,3,0.56442
+592,78,1020,510,116,54,0,3,0.54188
+593,78,1018,510,116,54,0,3,0.51453
+594,78,1016,510,116,54,0,3,0.48718
+595,78,1014,510,116,54,0,3,0.45983
+596,78,1013,509,116,54,0,3,0.47117
+597,78,1013,509,116,54,0,3,0.47273
+598,78,1013,509,116,54,0,3,0.47677
+599,78,1012,508,116,54,0,3,0.44227
+600,78,1012,508,116,54,0,3,0.41352
+601,78,1012,508,116,54,0,3,0.38477
+602,78,1011,507,116,54,0,3,0.36783
+603,78,1011,507,116,54,0,3,0.34545
+604,78,1011,507,116,54,0,3,0.43636
+605,78,1011,507,116,54,0,3,0.4
+606,78,1010,507,118,54,0,3,0.4
+607,78,1010,507,119,54,0,3,0.41818
+608,78,1010,507,121,54,0,3,0.43636
+609,78,1009,507,123,54,0,3,0.45455
+610,78,1009,507,125,54,0,3,0.45455
+611,78,1009,507,126,54,0,3,0.47273
+612,78,1008,507,128,54,0,3,0.49091
+613,78,1008,507,130,54,0,3,0.49091
+614,78,1008,507,131,54,0,3,0.50909
+615,78,1008,508,133,53,0,3,0.51852
+616,78,1008,511,133,53,0,3,0.51852
+617,78,1008,511,134,53,0,3,0.57407
+618,78,1009,511,134,53,0,3,0.61111
+619,78,1009,512,135,52,0,3,0.61543
+620,78,1010,512,135,53,0,3,0.65142
+621,78,1010,513,136,52,0,3,0.6926
+622,78,1011,513,136,52,0,3,0.73778
+623,78,1012,514,136,52,0,3,0.76243
+624,78,1014,516,137,53,0,3,0.75738
+625,78,1017,518,138,54,0,3,0.75317
+626,78,1020,516,138,54,0,3,0.77606
+627,78,1023,515,138,53,0,3,0.80975
+628,78,1027,518,138,54,0,3,0.77763
+629,78,1031,516,139,56,0,3,0.76667
+630,78,1035,515,140,57,0,3,0.7931
+631,78,1040,514,140,58,0,3,0.81608
+632,78,1043,513,141,58,0,3,0.85629
+633,78,1046,513,142,58,0,3,0.88479
+634,78,1050,513,142,58,0,3,0.90992
+635,78,1055,514,143,60,0,3,0.89162
+636,78,1061,516,144,61,0,3,0.91802
+637,78,1067,518,145,62,0,3,0.93259
+638,78,1072,520,145,62,0,3,0.94423
+639,78,1077,523,146,61,0,3,0.95348
+640,78,1082,525,147,61,0,3,0.96861
+641,78,1087,528,148,61,0,3,0.97337
+642,78,1093,529,148,61,0,3,0.98528
+643,78,1100,530,147,61,0,3,0.99412
+644,78,1107,531,147,61,0,3,1
+645,78,1114,532,146,61,0,3,1
+646,78,1121,533,145,61,0,3,1
+647,78,1128,534,145,62,0,3,1
+648,78,1135,534,147,62,0,3,1
+649,78,1143,534,148,62,0,3,1
+650,78,1150,534,150,62,0,3,1
+651,78,1158,534,152,62,0,3,1
+652,78,1166,531,152,61,0,3,0.99072
+653,78,1175,528,152,61,0,3,0.99114
+654,78,1185,521,153,61,0,3,0.99246
+655,78,1195,523,153,62,0,3,1
+656,78,1205,526,153,62,0,3,0.98825
+657,78,1218,530,154,58,0,3,0.98917
+658,78,1227,538,156,58,0,3,0.98057
+659,78,1237,546,157,59,0,3,0.97722
+660,78,1244,548,158,60,0,3,0.97773
+661,78,1251,551,160,60,0,3,0.97801
+662,78,1258,554,162,60,0,3,0.96741
+663,78,1267,558,164,60,0,3,0.96324
+664,78,1277,562,165,60,0,3,0.95763
+665,78,1286,563,166,61,0,3,0.94978
+666,78,1295,564,168,62,0,3,0.94224
+667,78,1305,566,169,62,0,3,0.93725
+668,78,1315,566,169,70,0,3,0.93099
+669,78,1326,566,169,69,0,3,0.93286
+670,78,1337,567,169,68,0,3,0.92941
+671,78,1347,565,169,68,0,3,0.91586
+672,78,1357,564,169,68,0,3,0.91185
+673,78,1367,563,169,67,0,3,0.90657
+674,78,1378,562,169,67,0,3,0.89836
+675,78,1389,561,167,70,0,3,0.90552
+676,78,1400,560,165,73,0,3,0.90866
+677,78,1410,569,172,65,0,3,0.89595
+678,78,1421,561,170,74,0,3,0.89302
+679,78,1433,566,173,78,0,3,0.87778
+680,78,1445,573,173,78,0,3,0.88608
+681,78,1451,578,180,82,0,3,0.88005
+682,78,1467,560,180,80,0,3,0.91222
+683,78,1469,569,180,78,0,3,0.86908
+684,78,1481,562,180,76,0,3,0.87522
+685,78,1493,549,181,77,0,3,0.87687
+686,78,1505,548,181,75,0,3,0.86813
+687,78,1518,547,180,73,0,3,0.87517
+688,78,1527,550,183,73,0,3,0.85473
+689,78,1536,553,186,73,0,3,0.83697
+690,78,1546,557,188,73,0,3,0.81403
+691,78,1555,548,188,86,0,3,0.81609
+692,78,1565,554,187,84,0,3,0.82278
+693,78,1575,560,186,82,0,3,0.78893
+694,78,1586,566,184,81,0,3,0.78906
+695,78,1596,572,183,79,0,3,0.79063
+696,78,1607,578,181,78,0,3,0.76631
+697,78,1613,583,181,73,0,3,0.73938
+698,78,1624,590,188,73,0,3,0.72201
+699,78,1635,597,196,73,0,3,0.75518
+700,78,1645,595,205,74,0,3,0.76647
+701,78,1655,603,205,74,0,3,0.71709
+702,78,1666,607,205,74,0,3,0.7356
+703,78,1675,618,207,76,0,3,0.70654
+704,78,1685,618,205,83,0,3,0.68759
+705,78,1697,623,206,83,0,3,0.68605
+706,78,1706,632,208,82,0,3,0.65135
+707,78,1715,621,208,82,0,3,0.70554
+708,78,1725,617,209,82,0,3,0.68285
+709,78,1736,613,209,82,0,3,0.66575
+710,78,1744,635,208,81,0,3,0.48092
+711,78,1752,615,210,81,0,3,0.43937
+712,78,1763,620,209,82,0,3,0.41744
+713,78,1772,606,208,94,0,3,0.33921
+714,78,1785,598,208,90,0,3,0.34324
+715,78,1793,596,207,90,0,3,0.33136
+716,78,1801,594,206,90,0,3,0.29941
+717,78,1810,600,208,82,0,3,0.26235
+718,78,1820,594,205,90,0,3,0.25862
+719,78,1830,597,205,89,0,3,0.29941
+720,78,1840,600,206,88,0,3,0.21544
+721,78,1851,604,206,87,0,3,0.18445
+722,78,1861,607,207,86,0,3,0.1691
+723,78,1871,610,207,86,0,3,0.15197
+724,78,1882,614,207,84,0,3,0.12794
+725,78,1892,617,208,84,0,3,0.099578
+726,78,1902,620,209,83,0,3,0.070011
+521,79,1905,594,193,86,0,3,0.082474
+522,79,1883,579,193,86,0,3,0.19588
+523,79,1858,579,193,86,0,3,0.32474
+524,79,1834,576,193,86,0,3,0.44845
+525,79,1810,575,199,90,0,3,0.555
+526,79,1786,574,205,94,0,3,0.65534
+527,79,1762,573,211,98,0,3,0.75
+528,79,1739,572,217,103,0,3,0.83486
+529,79,1719,573,226,104,0,3,0.88987
+530,79,1700,575,235,104,0,3,0.93644
+531,79,1680,576,244,105,0,3,0.98367
+532,79,1661,578,253,106,0,3,1
+533,79,1642,579,261,105,0,3,1
+534,79,1623,581,258,102,0,3,1
+535,79,1607,582,255,102,0,3,1
+536,79,1591,583,253,102,0,3,1
+537,79,1572,575,249,101,0,3,1
+538,79,1553,588,251,101,0,3,1
+539,79,1538,585,250,102,0,3,1
+540,79,1524,586,245,106,0,3,1
+541,79,1509,587,241,105,0,3,1
+542,79,1493,593,238,102,0,3,1
+543,79,1479,593,237,102,0,3,1
+544,79,1465,593,234,105,0,3,1
+545,79,1452,591,228,105,0,3,1
+546,79,1438,590,226,105,0,3,1
+547,79,1425,589,223,106,0,3,1
+548,79,1412,588,221,107,0,3,1
+549,79,1400,586,219,109,0,3,1
+550,79,1389,585,217,110,0,3,1
+551,79,1377,584,215,111,0,3,1
+552,79,1366,583,213,112,0,3,1
+553,79,1354,582,211,113,0,3,1
+554,79,1343,581,209,114,0,3,1
+555,79,1333,581,207,114,0,3,1
+556,79,1324,582,205,114,0,3,1
+557,79,1314,582,205,114,0,3,1
+558,79,1304,582,204,115,0,3,1
+559,79,1295,581,204,118,0,3,1
+560,79,1286,582,202,118,0,3,1
+561,79,1277,583,201,119,0,3,1
+562,79,1268,584,200,121,0,3,1
+563,79,1260,585,198,123,0,3,1
+564,79,1252,586,197,126,0,3,1
+565,79,1244,587,198,127,0,3,1
+566,79,1237,588,199,129,0,3,1
+567,79,1230,590,200,129,0,3,1
+568,79,1222,591,202,131,0,3,1
+569,79,1215,592,203,132,0,3,1
+570,79,1208,594,204,133,0,3,1
+571,79,1201,595,206,134,0,3,1
+572,79,1195,596,207,136,0,3,1
+573,79,1189,597,208,138,0,3,1
+574,79,1183,599,209,139,0,3,1
+575,79,1176,600,213,142,0,3,1
+576,79,1170,602,216,144,0,3,1
+577,79,1164,604,220,146,0,3,1
+578,79,1161,605,224,149,0,3,1
+579,79,1159,607,227,151,0,3,1
+580,79,1156,609,231,153,0,3,1
+581,79,1154,610,235,156,0,3,1
+582,79,1151,612,239,158,0,3,1
+583,79,1149,614,242,160,0,3,1
+584,79,1147,616,246,162,0,3,1
+585,79,1146,615,252,165,0,3,1
+586,79,1146,614,258,169,0,3,1
+587,79,1146,613,264,173,0,3,1
+588,79,1146,615,273,177,0,3,1
+589,79,1145,618,280,182,0,3,1
+590,79,1146,621,289,185,0,3,1
+591,79,1148,625,297,188,0,3,1
+592,79,1153,628,304,191,0,3,1
+593,79,1158,631,311,195,0,3,1
+594,79,1164,634,317,199,0,3,1
+595,79,1168,637,331,206,0,3,1
+596,79,1172,640,345,213,0,3,1
+597,79,1177,643,358,221,0,3,1
+598,79,1186,646,369,228,0,3,1
+599,79,1195,650,381,234,0,3,1
+600,79,1204,653,395,240,0,3,1
+601,79,1213,656,409,247,0,3,1
+602,79,1225,659,424,254,0,3,1
+603,79,1238,662,438,262,0,3,1
+604,79,1251,665,453,270,0,3,1
+605,79,1265,673,475,281,0,3,1
+606,79,1280,681,496,292,0,3,1
+607,79,1295,690,518,302,0,3,1
+608,79,1309,691,545,317,0,3,1
+609,79,1325,696,574,326,0,3,1
+610,79,1344,706,580,339,0,3,0.99312
+611,79,1363,716,586,363,0,3,0.9506
+612,79,1384,727,595,365,0,3,0.87147
+613,79,1406,739,603,367,0,3,0.79241
+614,79,1428,751,612,369,0,3,0.7173
+615,79,1447,764,613,370,0,3,0.65962
+616,79,1474,783,614,368,0,3,0.58698
+617,79,1502,797,614,368,0,3,0.52436
+618,79,1535,817,613,369,0,3,0.44856
+619,79,1569,830,613,370,0,3,0.38786
+620,79,1602,848,613,369,0,3,0.32717
+621,79,1646,860,613,368,0,3,0.26824
+622,79,1689,874,613,370,0,3,0.21082
+623,79,1734,886,613,369,0,3,0.16051
+624,79,1788,897,612,369,0,3,0.1079
+1,80,1163,516,130,57,0,3,0.81574
+2,80,1145,513,133,56,0,3,0.73737
+3,80,1129,514,135,55,0,3,0.63078
+4,80,1113,516,137,54,0,3,0.56653
+5,80,1088,517,148,54,0,3,0.48164
+6,80,1075,530,150,54,0,3,0.387
+7,80,1059,522,151,54,0,3,0.44569
+8,80,1044,528,151,50,0,3,0.58127
+9,80,1031,529,153,52,0,3,0.62632
+10,80,1015,535,154,49,0,3,0.63897
+11,80,999,526,157,56,0,3,0.673
+12,80,980,529,157,56,0,3,0.64801
+13,80,966,522,157,56,0,3,0.70686
+14,80,951,522,158,55,0,3,0.72821
+15,80,936,522,160,55,0,3,0.76786
+16,80,919,522,160,55,0,3,0.77795
+17,80,903,522,159,56,0,3,0.77807
+18,80,887,523,158,56,0,3,0.79124
+19,80,871,523,157,57,0,3,0.83435
+20,80,855,523,156,58,0,3,0.87887
+21,80,839,524,156,58,0,3,0.91687
+22,80,822,525,156,58,0,3,0.95725
+23,80,806,526,156,58,0,3,0.99525
+24,80,788,528,156,58,0,3,1
+25,80,773,534,158,56,0,3,1
+26,80,755,533,159,54,0,3,1
+27,80,737,537,159,54,0,3,1
+28,80,721,540,159,55,0,3,1
+29,80,704,539,162,55,0,3,1
+30,80,682,541,164,61,0,3,0.93118
+31,80,675,552,156,58,0,3,0.91914
+32,80,654,549,162,58,0,3,0.80212
+33,80,638,542,156,58,0,3,0.77038
+34,80,618,546,163,61,0,3,0.66227
+35,80,605,536,158,60,0,3,0.61511
+36,80,586,533,162,59,0,3,0.52249
+37,80,568,532,160,54,0,3,0.45692
+38,80,551,532,158,55,0,3,0.44429
+39,80,534,532,157,56,0,3,0.43904
+40,80,517,532,156,58,0,3,0.43053
+10,81,1510,550,119,46,0,3,0.675
+11,81,1500,541,125,48,0,3,0.61791
+12,81,1491,532,131,51,0,3,0.62107
+13,81,1482,527,137,54,0,3,0.56798
+14,81,1471,519,143,59,0,3,0.55903
+15,81,1466,519,150,58,0,3,0.59558
+16,81,1456,525,155,54,0,3,0.59895
+17,81,1446,524,162,55,0,3,0.56748
+18,81,1437,524,169,55,0,3,0.50987
+19,81,1428,523,176,56,0,3,0.48023
+20,81,1419,523,183,56,0,3,0.47883
+21,81,1409,524,183,55,0,3,0.47913
+22,81,1400,526,182,54,0,3,0.52221
+23,81,1389,527,181,54,0,3,0.58332
+24,81,1382,525,176,54,0,3,0.59784
+25,81,1373,530,177,55,0,3,0.63604
+26,81,1365,532,178,56,0,3,0.68597
+27,81,1354,534,178,55,0,3,0.76796
+28,81,1347,536,178,53,0,3,0.77188
+29,81,1337,539,179,56,0,3,0.77037
+30,81,1324,541,181,54,0,3,0.78102
+31,81,1316,547,181,55,0,3,0.7968
+32,81,1307,549,181,56,0,3,0.84683
+33,81,1299,538,181,56,0,3,0.92288
+34,81,1290,535,181,57,0,3,0.90603
+35,81,1281,533,181,57,0,3,0.92308
+36,81,1272,530,181,58,0,3,0.92308
+37,81,1263,528,181,58,0,3,0.9052
+38,81,1254,526,181,59,0,3,0.87482
+39,81,1245,525,181,59,0,3,0.84341
+40,81,1236,524,182,60,0,3,0.81331
+41,81,1226,526,186,60,0,3,0.77365
+42,81,1218,527,184,60,0,3,0.74284
+43,81,1210,529,183,59,0,3,0.79303
+44,81,1202,531,182,58,0,3,0.77948
+45,81,1195,533,180,58,0,3,0.74398
+46,81,1187,533,180,59,0,3,0.73002
+47,81,1179,534,180,60,0,3,0.69649
+48,81,1171,535,180,61,0,3,0.66396
+49,81,1163,536,181,62,0,3,0.64382
+50,81,1156,536,179,59,0,3,0.64157
+51,81,1148,538,175,58,0,3,0.6121
+52,81,1141,539,174,58,0,3,0.5846
+53,81,1134,539,173,56,0,3,0.62835
+54,81,1127,538,172,55,0,3,0.66422
+55,81,1120,537,171,54,0,3,0.70825
+56,81,1113,536,170,53,0,3,0.76381
+57,81,1106,533,169,53,0,3,0.79521
+58,81,1100,531,168,53,0,3,0.82084
+59,81,1093,529,170,54,0,3,0.82531
+60,81,1087,528,165,59,0,3,0.79347
+61,81,1081,526,162,59,0,3,0.82342
+62,81,1076,525,158,58,0,3,0.90076
+63,81,1071,524,155,57,0,3,0.87776
+64,81,1066,526,153,61,0,3,0.87547
+65,81,1061,526,150,61,0,3,0.88347
+66,81,1056,527,147,60,0,3,0.89466
+67,81,1051,528,145,59,0,3,0.91164
+68,81,1044,528,142,59,0,3,0.93124
+69,81,1037,529,140,58,0,3,0.94843
+70,81,1032,526,139,59,0,3,0.98036
+71,81,1027,526,136,60,0,3,0.98684
+72,81,1023,526,132,61,0,3,0.9886
+73,81,1017,525,129,61,0,3,0.9933
+74,81,1012,525,126,60,0,3,1
+75,81,1007,525,123,59,0,3,1
+76,81,1002,525,120,58,0,3,1
+77,81,997,524,117,58,0,3,1
+78,81,992,524,114,57,0,3,1
+79,81,987,524,111,56,0,3,1
+80,81,982,524,108,55,0,3,1
+81,81,979,524,105,55,0,3,1
+82,81,973,522,103,57,0,3,1
+83,81,968,521,100,59,0,3,1
+84,81,965,518,94,61,0,3,1
+85,81,961,519,92,60,0,3,1
+86,81,957,521,90,59,0,3,1
+87,81,953,523,89,58,0,3,1
+88,81,949,525,87,56,0,3,1
+89,81,945,527,85,55,0,3,1
+90,81,942,529,83,54,0,3,1
+91,81,937,527,84,60,0,3,1
+92,81,932,532,80,53,0,3,1
+93,81,928,534,79,53,0,3,1
+94,81,924,537,79,53,0,3,1
+95,81,920,536,78,53,0,3,1
+96,81,917,536,76,53,0,3,1
+97,81,913,536,74,53,0,3,1
+98,81,909,537,73,52,0,3,1
+99,81,905,537,71,52,0,3,1
+100,81,901,538,70,52,0,3,1
+101,81,897,538,70,52,0,3,1
+102,81,894,538,69,52,0,3,1
+103,81,890,537,69,51,0,3,1
+104,81,886,536,70,51,0,3,1
+105,81,883,535,69,51,0,3,1
+106,81,879,534,70,51,0,3,1
+107,81,875,533,70,51,0,3,1
+108,81,872,532,70,51,0,3,1
+109,81,868,531,70,51,0,3,1
+110,81,865,531,70,50,0,3,1
+111,81,864,532,65,52,0,3,1
+112,81,859,531,65,52,0,3,1
+113,81,855,531,65,52,0,3,1
+114,81,851,530,65,52,0,3,1
+115,81,846,530,65,52,0,3,1
+116,81,842,529,65,52,0,3,1
+117,81,838,529,65,52,0,3,1
+118,81,833,528,65,52,0,3,1
+119,81,829,528,65,52,0,3,1
+120,81,825,528,65,52,0,3,1
+121,81,820,528,66,51,0,3,1
+122,81,816,526,63,51,0,3,1
+123,81,814,526,64,51,0,3,1
+124,81,809,526,64,51,0,3,1
+125,81,805,526,64,51,0,3,1
+126,81,801,526,64,51,0,3,1
+127,81,797,526,63,51,0,3,1
+128,81,793,526,63,51,0,3,1
+129,81,789,526,63,51,0,3,1
+130,81,785,527,63,50,0,3,1
+131,81,781,530,63,50,0,3,1
+132,81,777,529,62,49,0,3,1
+133,81,773,528,61,49,0,3,1
+134,81,769,527,60,48,0,3,1
+135,81,765,527,60,47,0,3,1
+136,81,761,526,60,47,0,3,1
+137,81,757,525,60,47,0,3,1
+138,81,753,524,60,47,0,3,1
+139,81,750,523,59,48,0,3,1
+140,81,748,521,59,49,0,3,1
+141,81,745,522,59,49,0,3,1
+142,81,742,521,58,47,0,3,1
+143,81,739,520,58,46,0,3,1
+144,81,736,522,58,46,0,3,1
+145,81,731,523,58,45,0,3,1
+146,81,730,522,57,44,0,3,1
+147,81,727,524,57,45,0,3,1
+148,81,723,523,58,46,0,3,1
+149,81,719,522,59,47,0,3,1
+150,81,715,523,58,44,0,3,1
+151,81,711,527,58,43,0,3,1
+152,81,706,526,57,43,0,3,1
+153,81,701,525,56,44,0,3,1
+154,81,696,524,56,45,0,3,1
+155,81,692,523,55,44,0,3,1
+156,81,687,523,57,44,0,3,1
+157,81,683,523,56,44,0,3,1
+158,81,679,523,55,44,0,3,1
+159,81,675,524,55,43,0,3,1
+160,81,672,524,53,44,0,3,1
+161,81,668,528,53,42,0,3,1
+162,81,665,527,53,42,0,3,1
+163,81,662,527,53,42,0,3,1
+164,81,658,526,53,42,0,3,1
+165,81,655,526,53,42,0,3,1
+166,81,652,526,52,42,0,3,1
+167,81,649,525,52,43,0,3,1
+168,81,646,525,51,43,0,3,1
+169,81,643,525,51,43,0,3,1
+170,81,640,522,53,43,0,3,1
+171,81,636,523,52,41,0,3,1
+172,81,636,522,52,41,0,3,1
+173,81,633,523,52,40,0,3,1
+174,81,630,524,52,40,0,3,1
+175,81,626,522,53,41,0,3,1
+176,81,622,521,54,41,0,3,1
+177,81,622,519,52,40,0,3,1
+178,81,619,519,51,40,0,3,1
+179,81,618,521,51,39,0,3,1
+180,81,614,519,52,41,0,3,1
+181,81,612,520,51,41,0,3,1
+182,81,610,522,51,40,0,3,1
+183,81,608,522,50,39,0,3,1
+184,81,606,522,50,39,0,3,1
+185,81,604,522,50,39,0,3,1
+186,81,602,522,50,39,0,3,1
+187,81,600,522,50,39,0,3,1
+188,81,598,522,50,39,0,3,1
+189,81,596,522,50,39,0,3,1
+190,81,594,523,50,38,0,3,1
+191,81,593,524,50,37,0,3,1
+192,81,592,527,51,35,0,3,1
+193,81,589,527,50,36,0,3,1
+194,81,587,527,50,36,0,3,1
+195,81,585,527,50,36,0,3,1
+196,81,584,528,50,36,0,3,1
+197,81,582,527,50,36,0,3,1
+198,81,581,527,49,36,0,3,1
+199,81,580,527,48,36,0,3,1
+200,81,579,527,48,36,0,3,1
+201,81,577,527,48,36,0,3,1
+202,81,576,527,48,36,0,3,1
+203,81,575,527,48,36,0,3,1
+204,81,574,527,48,36,0,3,1
+205,81,573,526,49,36,0,3,1
+206,81,571,527,47,35,0,3,1
+207,81,571,528,47,35,0,3,1
+208,81,569,528,47,35,0,3,1
+209,81,568,528,47,36,0,3,1
+210,81,568,528,45,36,0,3,1
+211,81,569,530,45,36,0,3,1
+212,81,569,530,45,36,0,3,1
+213,81,569,531,45,35,0,3,1
+214,81,568,535,44,31,0,3,1
+215,81,569,533,44,31,0,3,1
+216,81,568,535,44,32,0,3,1
+217,81,569,533,44,33,0,3,1
+218,81,569,532,44,33,0,3,1
+219,81,570,531,44,34,0,3,1
+220,81,571,530,44,35,0,3,1
+221,81,571,529,44,35,0,3,1
+222,81,572,529,44,35,0,3,1
+223,81,573,530,44,34,0,3,1
+224,81,574,531,44,34,0,3,1
+225,81,575,532,44,33,0,3,1
+226,81,577,534,43,32,0,3,1
+227,81,578,533,43,32,0,3,1
+228,81,580,532,42,32,0,3,1
+229,81,580,532,42,32,0,3,1
+230,81,580,531,43,33,0,3,1
+231,81,583,534,42,32,0,3,1
+232,81,583,532,41,30,0,3,1
+233,81,587,532,41,30,0,3,1
+234,81,588,530,41,30,0,3,1
+235,81,589,529,41,30,0,3,1
+236,81,590,527,41,31,0,3,1
+237,81,592,526,40,31,0,3,1
+238,81,594,528,41,30,0,3,1
+239,81,599,525,41,31,0,3,1
+240,81,598,522,40,32,0,3,1
+241,81,601,523,40,31,0,3,1
+242,81,604,524,40,30,0,3,1
+243,81,606,523,40,29,0,3,1
+244,81,609,522,39,28,0,3,1
+245,81,612,523,39,28,0,3,1
+246,81,616,524,39,29,0,3,1
+247,81,618,521,39,28,0,3,1
+248,81,623,522,40,29,0,3,1
+249,81,625,521,40,29,0,3,1
+250,81,628,521,40,30,0,3,1
+251,81,633,522,39,29,0,3,1
+252,81,637,522,39,29,0,3,1
+253,81,641,522,39,29,0,3,1
+254,81,645,522,40,30,0,3,1
+255,81,649,522,40,30,0,3,1
+256,81,654,523,40,30,0,3,1
+257,81,659,523,38,29,0,3,1
+258,81,664,524,36,27,0,3,1
+259,81,669,525,35,26,0,3,1
+260,81,671,521,38,29,0,3,1
+261,81,676,522,38,29,0,3,1
+262,81,681,524,38,29,0,3,1
+263,81,685,523,37,29,0,3,1
+264,81,690,523,36,29,0,3,1
+265,81,694,522,36,29,0,3,1
+266,81,699,522,35,29,0,3,1
+267,81,704,522,34,29,0,3,1
+268,81,708,522,35,27,0,3,1
+269,81,713,521,35,26,0,3,1
+270,81,718,520,35,26,0,3,1
+271,81,722,518,35,26,0,3,1
+272,81,727,517,35,26,0,3,1
+273,81,731,516,35,26,0,3,1
+274,81,736,515,35,26,0,3,1
+275,81,739,516,35,26,0,3,1
+276,81,744,514,35,26,0,3,1
+277,81,749,513,35,26,0,3,1
+278,81,753,511,33,29,0,3,1
+279,81,757,513,35,26,0,3,1
+280,81,762,515,35,26,0,3,1
+281,81,765,514,35,26,0,3,1
+282,81,769,514,35,26,0,3,1
+283,81,773,514,35,26,0,3,1
+284,81,777,513,35,26,0,3,1
+285,81,781,513,35,26,0,3,1
+286,81,784,513,35,26,0,3,1
+287,81,788,512,35,26,0,3,1
+288,81,792,512,35,26,0,3,1
+289,81,796,512,35,26,0,3,1
+290,81,800,512,35,26,0,3,1
+291,81,805,513,34,24,0,3,1
+292,81,810,513,35,23,0,3,1
+293,81,813,513,36,24,0,3,1
+294,81,815,513,36,23,0,3,1
+295,81,814,512,37,24,0,3,1
+296,81,820,514,34,24,0,3,1
+297,81,820,512,38,25,0,3,1
+298,81,825,511,38,25,0,3,1
+299,81,828,512,36,26,0,3,1
+300,81,831,513,35,26,0,3,1
+301,81,833,513,35,26,0,3,1
+302,81,836,513,35,26,0,3,1
+303,81,840,515,35,25,0,3,1
+304,81,844,517,35,25,0,3,1
+305,81,845,518,34,25,0,3,1
+306,81,846,520,34,24,0,3,1
+307,81,849,522,34,24,0,3,1
+308,81,852,525,35,24,0,3,1
+309,81,854,524,35,24,0,3,1
+310,81,856,523,36,25,0,3,1
+311,81,857,523,37,25,0,3,1
+312,81,858,524,38,24,0,3,1
+313,81,859,524,39,24,0,3,1
+314,81,861,525,39,24,0,3,1
+315,81,862,524,39,24,0,3,1
+316,81,864,524,38,23,0,3,1
+317,81,866,524,37,22,0,3,1
+318,81,868,524,37,22,0,3,1
+319,81,870,524,36,22,0,3,1
+320,81,872,525,35,22,0,3,1
+321,81,871,523,37,21,0,3,1
+322,81,873,524,37,21,0,3,1
+323,81,874,523,37,21,0,3,1
+324,81,875,522,37,21,0,3,1
+325,81,876,521,37,22,0,3,1
+326,81,876,520,36,22,0,3,1
+327,81,876,520,35,22,0,3,1
+328,81,876,520,35,22,0,3,0.98188
+329,81,876,517,35,22,0,3,1
+330,81,877,516,35,22,0,3,1
+331,81,877,513,35,22,0,3,1
+332,81,875,510,35,22,0,3,1
+333,81,874,508,35,22,0,3,1
+334,81,873,505,35,23,0,3,1
+335,81,871,502,35,23,0,3,1
+336,81,870,500,35,22,0,3,1
+337,81,869,501,35,22,0,3,1
+338,81,868,502,35,22,0,3,1
+339,81,867,504,35,22,0,3,1
+340,81,866,500,36,22,0,3,1
+341,81,863,502,35,23,0,3,1
+342,81,863,503,35,23,0,3,1
+343,81,863,506,35,21,0,3,1
+344,81,860,510,35,21,0,3,1
+345,81,858,514,34,22,0,3,1
+346,81,856,518,35,23,0,3,1
+347,81,854,519,35,22,0,3,1
+348,81,852,520,35,22,0,3,1
+349,81,850,521,35,22,0,3,0.97222
+350,81,849,522,34,22,0,3,0.94286
+351,81,847,521,35,22,0,3,0.86111
+352,81,845,521,36,22,0,3,0.81081
+353,81,844,521,36,23,0,3,0.78378
+354,81,843,522,36,23,0,3,0.75676
+355,81,839,522,36,22,0,3,0.64865
+356,81,837,522,36,22,0,3,0.59459
+357,81,834,522,36,22,0,3,0.53467
+358,81,832,522,36,22,0,3,0.53467
+359,81,832,525,36,22,0,3,0.54054
+360,81,828,527,36,22,0,3,0.48649
+361,81,824,525,36,22,0,3,0.40541
+362,81,823,528,36,23,0,3,0.40541
+363,81,822,531,35,19,0,3,0.38889
+364,81,819,531,36,23,0,3,0.35135
+365,81,818,536,34,18,0,3,0.28571
+366,81,815,535,37,24,0,3,0.28947
+1,82,1019,487,28,15,0,3,1
+2,82,1021,480,26,15,0,3,1
+3,82,1022,486,27,15,0,3,1
+4,82,1026,483,25,15,0,3,1
+5,82,1028,484,26,16,0,3,1
+6,82,1031,495,26,17,0,3,1
+7,82,1031,487,27,17,0,3,1
+8,82,1032,494,27,17,0,3,1
+9,82,1035,496,27,15,0,3,1
+10,82,1037,501,26,14,0,3,1
+11,82,1035,494,26,15,0,3,1
+12,82,1037,499,27,15,0,3,1
+13,82,1036,490,27,15,0,3,1
+14,82,1037,490,27,15,0,3,1
+15,82,1038,490,28,16,0,3,1
+16,82,1039,490,28,16,0,3,1
+17,82,1041,491,27,16,0,3,1
+18,82,1042,491,28,16,0,3,1
+19,82,1044,490,28,16,0,3,0.9432
+20,82,1043,491,29,16,0,3,0.94118
+21,82,1044,491,29,16,0,3,0.88235
+22,82,1045,492,29,16,0,3,0.82157
+23,82,1046,492,29,16,0,3,0.75294
+24,82,1046,492,29,16,0,3,0.77059
+25,82,1048,496,29,16,0,3,0.64706
+26,82,1050,497,28,16,0,3,0.62069
+27,82,1051,498,28,16,0,3,0.71602
+28,82,1053,500,27,16,0,3,0.72269
+29,82,1053,503,26,16,0,3,0.78431
+30,82,1053,506,26,16,0,3,0.57516
+31,82,1055,512,28,17,0,3,0.62644
+32,82,1055,506,28,17,0,3,0.65517
+33,82,1055,500,29,17,0,3,0.72222
+34,82,1056,503,30,17,0,3,0.75806
+35,82,1058,496,30,19,0,3,0.75806
+36,82,1058,493,31,18,0,3,0.80263
+37,82,1059,491,31,17,0,3,0.84375
+38,82,1061,490,32,16,0,3,0.75936
+39,82,1060,489,31,17,0,3,0.73264
+40,82,1060,488,32,17,0,3,0.73737
+41,82,1061,487,32,17,0,3,0.78114
+42,82,1062,487,31,19,0,3,0.775
+43,82,1063,488,31,20,0,3,0.80357
+44,82,1063,489,31,20,0,3,0.82143
+45,82,1064,490,31,20,0,3,0.85714
+46,82,1065,491,30,20,0,3,0.87097
+47,82,1066,492,30,20,0,3,0.89247
+48,82,1067,493,30,20,0,3,0.94009
+49,82,1065,492,33,24,0,3,0.94824
+50,82,1070,492,30,20,0,3,1
+51,82,1072,496,31,21,0,3,1
+52,82,1072,495,31,21,0,3,1
+53,82,1073,495,30,20,0,3,1
+54,82,1075,495,30,21,0,3,1
+55,82,1077,495,30,22,0,3,1
+56,82,1074,495,30,20,0,3,1
+57,82,1074,493,30,20,0,3,1
+58,82,1075,491,29,20,0,3,1
+59,82,1075,491,29,19,0,3,1
+60,82,1075,491,30,19,0,3,1
+61,82,1078,489,29,18,0,3,1
+62,82,1078,487,28,19,0,3,1
+63,82,1077,487,28,19,0,3,1
+64,82,1081,487,30,20,0,3,1
+65,82,1081,488,28,19,0,3,1
+66,82,1081,489,26,19,0,3,1
+67,82,1082,491,24,18,0,3,1
+68,82,1080,491,26,18,0,3,1
+69,82,1078,491,28,19,0,3,1
+70,82,1075,490,28,19,0,3,1
+71,82,1075,490,27,17,0,3,1
+72,82,1074,488,29,22,0,3,1
+73,82,1073,489,29,21,0,3,1
+74,82,1072,490,29,20,0,3,1
+75,82,1071,492,30,18,0,3,1
+76,82,1068,491,30,19,0,3,1
+77,82,1066,491,30,19,0,3,1
+78,82,1064,491,30,20,0,3,1
+79,82,1063,488,28,18,0,3,1
+80,82,1061,488,27,18,0,3,1
+81,82,1060,489,25,18,0,3,1
+82,82,1057,488,27,19,0,3,1
+83,82,1055,488,28,19,0,3,1
+84,82,1052,488,30,19,0,3,1
+85,82,1049,489,29,18,0,3,1
+86,82,1046,490,28,18,0,3,1
+87,82,1043,491,27,18,0,3,1
+88,82,1041,492,26,19,0,3,1
+89,82,1038,493,26,19,0,3,1
+90,82,1036,495,25,19,0,3,1
+91,82,1034,498,29,19,0,3,1
+92,82,1032,498,28,18,0,3,1
+93,82,1029,499,28,18,0,3,1
+94,82,1024,499,30,19,0,3,1
+95,82,1020,500,30,19,0,3,1
+96,82,1019,503,31,20,0,3,1
+97,82,1015,503,31,20,0,3,1
+98,82,1011,503,31,20,0,3,1
+99,82,1007,502,31,20,0,3,1
+100,82,1004,502,31,20,0,3,1
+101,82,1001,502,31,20,0,3,1
+102,82,999,503,31,20,0,3,1
+103,82,997,505,31,19,0,3,1
+104,82,996,504,31,19,0,3,1
+105,82,990,504,30,18,0,3,1
+106,82,987,503,30,18,0,3,1
+107,82,985,502,30,19,0,3,1
+108,82,983,503,30,21,0,3,1
+109,82,980,502,30,20,0,3,1
+110,82,978,502,30,19,0,3,1
+111,82,973,501,30,20,0,3,1
+112,82,969,501,30,21,0,3,1
+113,82,966,501,29,20,0,3,1
+114,82,963,501,28,20,0,3,1
+115,82,960,501,27,20,0,3,1
+116,82,956,502,28,21,0,3,1
+117,82,952,501,28,21,0,3,1
+118,82,948,501,28,21,0,3,1
+119,82,944,501,29,21,0,3,1
+120,82,940,500,29,22,0,3,1
+121,82,937,500,29,22,0,3,1
+122,82,933,500,29,22,0,3,1
+123,82,929,499,30,23,0,3,1
+124,82,925,499,30,23,0,3,1
+125,82,922,499,30,23,0,3,0.98387
+126,82,918,500,30,23,0,3,1
+127,82,915,502,30,22,0,3,0.98036
+128,82,911,502,30,22,0,3,0.98177
+129,82,907,502,30,22,0,3,0.98177
+130,82,904,502,30,22,0,3,0.96353
+131,82,900,502,30,23,0,3,0.98253
+132,82,896,502,30,23,0,3,0.98118
+133,82,893,502,30,23,0,3,0.98118
+134,82,889,502,30,23,0,3,0.98118
+135,82,886,503,30,23,0,3,0.97984
+136,82,883,502,31,24,0,3,0.94375
+137,82,879,501,31,24,0,3,0.965
+138,82,876,501,31,24,0,3,0.9475
+139,82,873,501,31,24,0,3,0.9475
+140,82,870,501,31,24,0,3,0.93
+141,82,867,500,31,24,0,3,0.935
+142,82,864,500,31,24,0,3,0.91875
+143,82,860,500,31,24,0,3,0.935
+144,82,857,501,31,24,0,3,0.9125
+145,82,856,501,30,23,0,3,0.89516
+146,82,852,500,31,24,0,3,0.88625
+147,82,848,500,32,24,0,3,0.8897
+148,82,845,501,32,24,0,3,0.86424
+149,82,841,501,33,24,0,3,0.86824
+150,82,838,502,33,24,0,3,0.84118
+151,82,833,502,33,24,0,3,0.87647
+152,82,828,503,34,24,0,3,0.85371
+153,82,823,503,34,24,0,3,0.872
+154,82,819,504,34,24,0,3,0.872
+155,82,816,504,34,23,0,3,0.83929
+156,82,812,504,33,22,0,3,0.85678
+157,82,807,505,33,23,0,3,0.87132
+158,82,803,505,33,23,0,3,0.88971
+159,82,799,505,33,23,0,3,0.90809
+160,82,796,505,32,24,0,3,0.92727
+161,82,793,505,32,23,0,3,0.92929
+162,82,789,506,32,23,0,3,0.94318
+163,82,786,507,32,24,0,3,0.94182
+164,82,783,506,31,24,0,3,0.96
+165,82,780,506,31,24,0,3,0.96
+166,82,777,506,31,23,0,3,0.95833
+167,82,774,506,31,23,0,3,0.95833
+168,82,772,506,31,23,0,3,0.9375
+169,82,769,506,31,23,0,3,0.93359
+170,82,767,506,31,23,0,3,0.91146
+171,82,764,506,31,22,0,3,0.91304
+172,82,761,506,31,22,0,3,0.91304
+173,82,759,506,31,22,0,3,0.91304
+174,82,756,506,31,22,0,3,0.91304
+175,82,754,506,31,22,0,3,0.91304
+176,82,751,506,32,22,0,3,0.8946
+177,82,749,506,32,23,0,3,0.89268
+178,82,747,506,32,23,0,3,0.87121
+179,82,745,506,32,24,0,3,0.86909
+180,82,742,506,33,24,0,3,0.85176
+181,82,740,506,33,24,0,3,0.86
+182,82,738,506,33,24,0,3,0.84941
+183,82,736,506,33,25,0,3,0.8552
+184,82,734,507,32,25,0,3,0.86946
+185,82,732,508,32,25,0,3,0.85082
+186,82,731,507,33,26,0,3,0.8366
+187,82,728,507,33,26,0,3,0.86275
+188,82,726,507,33,26,0,3,0.85839
+189,82,724,508,33,26,0,3,0.85839
+190,82,722,508,33,26,0,3,0.86928
+191,82,719,509,34,25,0,3,0.88132
+192,82,717,509,34,26,0,3,0.9037
+193,82,715,510,34,25,0,3,0.93407
+194,82,713,510,34,25,0,3,0.96044
+195,82,711,511,34,25,0,3,0.98681
+196,82,709,511,34,25,0,3,0.98681
+197,82,708,511,34,25,0,3,0.98791
+198,82,707,512,34,25,0,3,0.97363
+199,82,705,512,34,25,0,3,0.98791
+200,82,704,513,34,25,0,3,0.97363
+201,82,703,513,34,25,0,3,0.97582
+202,82,701,513,34,25,0,3,0.97802
+203,82,700,514,34,25,0,3,0.96703
+204,82,699,514,34,25,0,3,0.97033
+205,82,698,515,34,25,0,3,0.96703
+206,82,696,515,34,25,0,3,0.99011
+207,82,695,516,34,25,0,3,0.99011
+208,82,694,517,34,25,0,3,1
+209,82,693,518,34,25,0,3,1
+210,82,692,519,34,25,0,3,1
+211,82,691,520,34,25,0,3,1
+212,82,692,523,34,25,0,3,1
+213,82,691,522,34,25,0,3,1
+214,82,690,522,34,25,0,3,1
+215,82,690,522,34,25,0,3,1
+216,82,690,523,35,26,0,3,1
+217,82,690,523,35,25,0,3,1
+218,82,690,523,35,25,0,3,1
+219,82,690,523,36,25,0,3,1
+220,82,690,523,36,25,0,3,1
+221,82,691,523,36,24,0,3,1
+222,82,691,523,36,24,0,3,1
+223,82,691,523,37,24,0,3,1
+224,82,691,523,37,24,0,3,1
+225,82,692,523,37,24,0,3,1
+226,82,693,527,39,29,0,3,1
+227,82,693,524,38,27,0,3,1
+228,82,694,524,38,28,0,3,1
+229,82,695,525,39,28,0,3,1
+230,82,695,523,40,29,0,3,1
+231,82,696,523,40,29,0,3,1
+232,82,698,523,39,29,0,3,1
+233,82,699,522,39,29,0,3,1
+234,82,700,521,40,29,0,3,1
+235,82,701,520,41,30,0,3,1
+236,82,704,523,41,29,0,3,1
+237,82,706,522,40,28,0,3,1
+238,82,708,521,40,28,0,3,1
+239,82,709,521,41,29,0,3,1
+240,82,711,519,42,30,0,3,1
+241,82,713,519,41,29,0,3,1
+242,82,717,520,39,28,0,3,1
+243,82,719,519,40,28,0,3,1
+244,82,722,518,40,29,0,3,1
+245,82,725,518,41,30,0,3,1
+246,82,728,518,41,30,0,3,1
+247,82,731,519,41,30,0,3,1
+248,82,734,520,41,30,0,3,1
+249,82,739,520,41,30,0,3,1
+250,82,741,520,41,30,0,3,1
+251,82,745,520,41,30,0,3,1
+252,82,750,521,40,29,0,3,1
+253,82,754,521,41,30,0,3,1
+254,82,759,522,40,29,0,3,1
+255,82,764,523,40,29,0,3,1
+256,82,769,522,40,30,0,3,1
+257,82,774,522,41,30,0,3,1
+258,82,779,521,41,31,0,3,1
+259,82,784,521,42,31,0,3,1
+260,82,789,520,42,32,0,3,1
+261,82,794,520,43,32,0,3,1
+262,82,799,520,44,32,0,3,1
+263,82,802,520,45,32,0,3,1
+264,82,806,520,45,33,0,3,1
+265,82,811,520,46,34,0,3,1
+266,82,818,520,43,33,0,3,1
+267,82,823,522,43,33,0,3,1
+268,82,828,524,44,34,0,3,1
+269,82,833,522,45,34,0,3,1
+270,82,839,520,45,35,0,3,1
+271,82,843,520,46,35,0,3,1
+272,82,848,520,46,35,0,3,1
+273,82,853,520,46,36,0,3,1
+274,82,859,517,46,36,0,3,1
+275,82,865,518,46,36,0,3,1
+276,82,869,517,47,36,0,3,1
+277,82,874,516,47,36,0,3,1
+278,82,879,516,48,36,0,3,1
+279,82,884,518,48,36,0,3,1
+280,82,889,520,49,36,0,3,1
+281,82,894,519,49,36,0,3,1
+282,82,899,519,49,36,0,3,1
+283,82,904,518,50,37,0,3,1
+284,82,909,518,50,37,0,3,1
+285,82,915,518,50,37,0,3,1
+286,82,920,518,50,37,0,3,1
+287,82,926,518,50,37,0,3,1
+288,82,931,518,50,38,0,3,1
+289,82,937,518,50,38,0,3,1
+290,82,942,518,50,38,0,3,1
+291,82,948,518,50,39,0,3,1
+292,82,953,517,50,40,0,3,1
+293,82,958,517,51,40,0,3,1
+294,82,963,517,51,40,0,3,1
+295,82,968,517,52,40,0,3,1
+296,82,972,518,53,39,0,3,1
+297,82,977,519,53,39,0,3,1
+298,82,982,520,54,39,0,3,1
+299,82,985,520,54,40,0,3,1
+300,82,989,521,54,40,0,3,1
+301,82,993,522,54,41,0,3,1
+302,82,999,523,52,38,0,3,1
+303,82,1003,524,53,40,0,3,1
+304,82,1007,525,54,42,0,3,1
+305,82,1012,527,55,43,0,3,1
+306,82,1016,530,55,43,0,3,1
+307,82,1020,531,55,42,0,3,1
+308,82,1024,532,55,42,0,3,1
+309,82,1028,533,56,42,0,3,1
+310,82,1032,534,56,42,0,3,1
+311,82,1036,535,57,42,0,3,1
+312,82,1040,536,57,42,0,3,1
+313,82,1045,538,57,41,0,3,1
+314,82,1049,536,57,43,0,3,1
+315,82,1054,535,57,45,0,3,1
+316,82,1057,535,58,45,0,3,1
+317,82,1060,536,59,45,0,3,1
+318,82,1063,537,60,45,0,3,1
+319,82,1067,538,60,45,0,3,1
+320,82,1071,537,60,45,0,3,1
+321,82,1074,537,60,45,0,3,1
+322,82,1077,537,61,45,0,3,1
+323,82,1081,537,61,45,0,3,1
+324,82,1084,537,62,45,0,3,1
+325,82,1088,537,62,45,0,3,1
+326,82,1090,536,62,46,0,3,1
+327,82,1092,536,62,46,0,3,1
+328,82,1094,536,63,47,0,3,1
+329,82,1097,532,62,48,0,3,1
+330,82,1097,532,65,47,0,3,1
+331,82,1099,529,64,48,0,3,1
+332,82,1101,526,64,49,0,3,1
+333,82,1103,524,64,49,0,3,1
+334,82,1105,521,64,50,0,3,1
+335,82,1108,519,63,50,0,3,1
+336,82,1109,517,64,51,0,3,1
+337,82,1111,519,64,51,0,3,1
+338,82,1113,521,65,51,0,3,1
+339,82,1113,520,67,51,0,3,1
+340,82,1113,519,69,52,0,3,1
+341,82,1114,521,69,53,0,3,1
+342,82,1115,524,69,54,0,3,1
+343,82,1119,528,70,54,0,3,1
+344,82,1117,529,69,55,0,3,1
+345,82,1118,536,73,54,0,3,1
+346,82,1120,540,73,53,0,3,1
+347,82,1122,543,73,53,0,3,1
+348,82,1123,545,73,54,0,3,1
+349,82,1124,548,74,54,0,3,1
+350,82,1126,551,74,54,0,3,1
+351,82,1126,550,75,55,0,3,1
+352,82,1127,550,75,55,0,3,1
+353,82,1128,550,75,56,0,3,1
+354,82,1128,552,75,56,0,3,1
+355,82,1129,555,75,56,0,3,1
+356,82,1129,555,77,58,0,3,1
+357,82,1129,555,78,59,0,3,1
+358,82,1130,555,79,60,0,3,1
+359,82,1130,557,80,60,0,3,1
+360,82,1130,559,81,61,0,3,1
+361,82,1131,561,81,62,0,3,1
+362,82,1131,563,83,62,0,3,1
+363,82,1132,565,83,63,0,3,1
+364,82,1132,567,84,64,0,3,1
+365,82,1133,569,85,65,0,3,1
+366,82,1133,571,86,66,0,3,1
+367,82,1134,574,87,67,0,3,1
+368,82,1134,577,88,68,0,3,1
+369,82,1134,579,89,67,0,3,1
+370,82,1135,582,90,66,0,3,1
+371,82,1135,582,90,67,0,3,1
+372,82,1136,582,90,68,0,3,1
+373,82,1136,583,91,69,0,3,1
+374,82,1137,583,91,70,0,3,1
+375,82,602,169,127,0,3,1
+441,82,359,604,171,128,0,3,1
+442,82,334,605,171,128,0,3,1
+443,82,309,606,172,129,0,3,0.99546
+444,82,280,608,176,130,0,3,0.97757
+445,82,252,610,180,132,0,3,0.96037
+446,82,225,611,178,133,0,3,0.95139
+447,82,196,613,181,134,0,3,0.9396
+448,82,167,614,183,133,0,3,0.91896
+449,82,136,615,183,134,0,3,0.90531
+450,82,106,616,183,136,0,3,0.88765
+451,82,75,617,184,138,0,3,0.87221
+452,82,43,618,186,141,0,3,0.86292
+453,82,10,618,193,149,0,3,0.84873
+454,82,-17,620,185,144,0,3,0.7564
+455,82,-45,624,180,147,0,3,0.58948
+456,82,-79,629,180,147,0,3,0.39779
+515,83,1860,522,89,74,0,3,0.47556
+516,83,1835,521,88,72,0,3,0.80422
+517,83,1810,521,88,70,0,3,0.86422
+518,83,1786,520,86,70,0,3,0.89639
+519,83,1762,519,85,70,0,3,0.93957
+520,83,1738,518,83,70,0,3,0.98625
+521,83,1714,517,82,70,0,3,1
+522,83,1690,516,88,70,0,3,1
+523,83,1667,515,87,71,0,3,1
+524,83,1644,515,86,71,0,3,1
+525,83,1621,515,85,72,0,3,1
+526,83,1599,515,87,72,0,3,1
+527,83,1578,516,89,71,0,3,1
+528,83,1555,517,89,72,0,3,1
+529,83,1535,517,89,71,0,3,1
+530,83,1515,517,90,71,0,3,1
+531,83,1493,516,90,74,0,3,1
+532,83,1474,516,91,74,0,3,1
+533,83,1456,517,91,74,0,3,1
+534,83,1438,518,91,74,0,3,1
+535,83,1420,519,92,74,0,3,1
+536,83,1403,518,93,74,0,3,1
+537,83,1387,517,93,74,0,3,1
+538,83,1371,525,94,74,0,3,1
+539,83,1354,524,93,75,0,3,1
+540,83,1337,525,94,75,0,3,1
+541,83,1320,526,96,75,0,3,1
+542,83,1304,530,98,76,0,3,1
+543,83,1288,530,99,77,0,3,1
+544,83,1273,531,100,78,0,3,1
+545,83,1259,528,102,79,0,3,1
+546,83,1246,527,102,80,0,3,0.99269
+547,83,1230,526,103,79,0,3,0.98558
+548,83,1216,524,103,79,0,3,0.97163
+549,83,1203,522,103,79,0,3,0.96454
+550,83,1190,521,106,80,0,3,0.94369
+551,83,1177,521,110,80,0,3,0.88277
+552,83,1166,521,110,80,0,3,1
+553,83,1155,521,111,81,0,3,1
+554,83,1144,521,112,81,0,3,1
+555,83,1133,521,113,82,0,3,1
+556,83,1122,518,113,83,0,3,1
+557,83,1112,515,112,85,0,3,1
+558,83,1102,514,115,85,0,3,1
+559,83,1093,514,117,85,0,3,1
+560,83,1084,514,119,85,0,3,1
+561,83,1073,515,121,83,0,3,1
+562,83,1063,516,122,85,0,3,1
+563,83,1055,515,123,86,0,3,1
+564,83,1047,514,125,88,0,3,1
+565,83,1040,513,126,90,0,3,1
+566,83,1030,514,129,91,0,3,1
+567,83,1023,516,130,91,0,3,1
+568,83,1017,518,131,91,0,3,1
+569,83,1009,518,133,91,0,3,1
+570,83,1002,518,134,92,0,3,1
+571,83,995,519,135,91,0,3,1
+572,83,988,519,136,92,0,3,1
+573,83,981,520,138,92,0,3,1
+574,83,976,520,139,92,0,3,1
+575,83,971,520,141,93,0,3,1
+576,83,965,522,142,93,0,3,1
+577,83,960,524,143,93,0,3,1
+578,83,955,523,144,94,0,3,1
+579,83,951,523,145,94,0,3,1
+580,83,947,523,146,94,0,3,1
+581,83,943,523,148,95,0,3,1
+582,83,940,523,149,96,0,3,1
+583,83,937,523,150,98,0,3,1
+584,83,934,523,151,99,0,3,1
+585,83,931,523,153,101,0,3,1
+586,83,930,524,154,103,0,3,1
+587,83,929,523,155,104,0,3,1
+588,83,927,522,156,106,0,3,1
+589,83,925,522,158,108,0,3,1
+590,83,925,523,160,110,0,3,1
+591,83,923,522,162,112,0,3,1
+592,83,924,521,162,114,0,3,1
+593,83,925,521,163,115,0,3,1
+594,83,926,521,164,116,0,3,1
+595,83,927,521,165,118,0,3,1
+596,83,929,523,166,116,0,3,1
+597,83,931,525,168,115,0,3,1
+598,83,934,527,169,114,0,3,1
+599,83,937,526,171,116,0,3,1
+600,83,940,526,173,117,0,3,1
+601,83,943,526,175,118,0,3,1
+602,83,946,526,177,119,0,3,1
+603,83,949,526,179,121,0,3,1
+604,83,952,531,180,121,0,3,1
+605,83,956,529,182,123,0,3,1
+606,83,960,529,184,124,0,3,1
+607,83,964,530,187,124,0,3,1
+608,83,968,531,189,124,0,3,1
+609,83,972,532,192,124,0,3,1
+610,83,976,532,194,127,0,3,1
+611,83,980,533,196,130,0,3,1
+612,83,984,534,199,132,0,3,1
+613,83,988,534,201,136,0,3,1
+614,83,992,535,203,138,0,3,1
+615,83,997,536,205,141,0,3,1
+616,83,1001,539,209,142,0,3,1
+617,83,1006,542,213,144,0,3,1
+618,83,1007,544,214,146,0,3,1
+619,83,1013,544,218,147,0,3,1
+620,83,1018,546,220,149,0,3,1
+621,83,1023,548,223,151,0,3,1
+622,83,1029,550,225,153,0,3,1
+623,83,1034,552,227,155,0,3,1
+624,83,1039,554,230,157,0,3,1
+625,83,1045,556,232,159,0,3,1
+626,83,1052,555,237,162,0,3,1
+627,83,1060,555,241,165,0,3,1
+628,83,1066,556,246,168,0,3,1
+629,83,1073,554,249,171,0,3,1
+630,83,1082,555,254,171,0,3,1
+631,83,1091,556,259,171,0,3,1
+632,83,1099,558,264,174,0,3,1
+633,83,1108,560,268,178,0,3,1
+634,83,1117,562,273,182,0,3,1
+635,83,1131,561,275,184,0,3,1
+636,83,1139,567,281,189,0,3,1
+637,83,1151,571,282,191,0,3,1
+638,83,1161,574,289,195,0,3,1
+639,83,1171,577,297,199,0,3,1
+640,83,1182,581,304,203,0,3,1
+641,83,1195,584,309,207,0,3,1
+642,83,1208,587,315,212,0,3,1
+643,83,1221,590,321,217,0,3,1
+644,83,1234,593,327,222,0,3,1
+645,83,1247,597,333,226,0,3,1
+646,83,1259,600,344,230,0,3,1
+647,83,1272,604,354,234,0,3,1
+648,83,1286,606,363,241,0,3,1
+649,83,1303,606,370,241,0,3,1
+650,83,1318,612,381,251,0,3,1
+651,83,1335,611,390,253,0,3,1
+652,83,1353,609,398,260,0,3,1
+653,83,1371,605,411,265,0,3,1
+654,83,1389,601,425,270,0,3,1
+655,83,1410,608,438,279,0,3,1
+656,83,1430,606,450,284,0,3,1
+657,83,1457,614,460,291,0,3,1
+658,83,1476,623,464,301,0,3,0.95699
+659,83,1496,633,467,311,0,3,0.90812
+660,83,1516,643,471,321,0,3,0.85805
+661,83,1538,653,474,326,0,3,0.80632
+662,83,1560,663,477,332,0,3,0.75523
+663,83,1582,673,480,338,0,3,0.70478
+664,83,1604,684,483,343,0,3,0.65496
+665,83,1627,693,490,354,0,3,0.59878
+666,83,1652,702,492,344,0,3,0.54564
+667,83,1675,706,492,341,0,3,0.49899
+668,83,1702,708,493,342,0,3,0.44332
+669,83,1729,711,495,342,0,3,0.3871
+670,83,1758,713,495,342,0,3,0.32863
+671,83,1788,716,494,342,0,3,0.26869
+672,83,1819,718,492,345,0,3,0.2069
+673,83,1850,720,490,348,0,3,0.1446
+674,83,1882,723,488,350,0,3,0.079755
+520,84,1896,552,95,53,0,3,0.26042
+521,84,1869,544,92,61,0,3,0.52584
+522,84,1844,543,93,61,0,3,0.64962
+523,84,1819,543,95,60,0,3,0.75666
+524,84,1794,543,97,59,0,3,0.73367
+525,84,1769,543,99,59,0,3,0.72467
+526,84,1745,543,100,58,0,3,0.71807
+527,84,1721,543,101,57,0,3,0.71129
+528,84,1698,543,101,56,0,3,0.70623
+529,84,1674,543,102,55,0,3,0.73856
+530,84,1651,543,102,54,0,3,0.78076
+531,84,1628,542,103,58,0,3,0.78814
+532,84,1609,544,101,59,0,3,0.78758
+533,84,1586,545,102,60,0,3,0.79803
+534,84,1567,547,101,60,0,3,0.80039
+535,84,1548,545,101,61,0,3,0.83001
+536,84,1528,541,100,61,0,3,0.87863
+537,84,1508,538,100,60,0,3,0.85587
+538,84,1489,548,99,61,0,3,0.87226
+539,84,1470,546,99,61,0,3,0.88129
+540,84,1450,550,101,61,0,3,0.88488
+541,84,1435,546,100,61,0,3,0.90945
+542,84,1416,554,100,61,0,3,0.91185
+543,84,1398,553,100,61,0,3,0.92973
+544,84,1381,553,100,61,0,3,0.94027
+545,84,1364,550,100,61,0,3,0.9564
+546,84,1348,547,99,61,0,3,0.96935
+547,84,1332,546,100,60,0,3,0.97663
+548,84,1316,545,102,60,0,3,0.97995
+549,84,1302,543,99,60,0,3,0.9941
+550,84,1289,541,95,60,0,3,0.91667
+551,84,1271,540,100,61,0,3,0.83168
+552,84,1256,539,100,61,0,3,0.79208
+553,84,1242,539,100,61,0,3,0.75248
+554,84,1228,539,100,61,0,3,0.71287
+555,84,1214,536,100,61,0,3,0.67327
+556,84,1201,534,100,61,0,3,0.65347
+557,84,1189,533,100,61,0,3,0.64356
+558,84,1177,532,100,61,0,3,0.59406
+559,84,1165,530,100,61,0,3,0.54455
+560,84,1153,529,100,61,0,3,0.49505
+561,84,1141,528,100,61,0,3,0.46535
+562,84,1129,528,100,61,0,3,0.43564
+563,84,1118,529,100,61,0,3,0.39604
+564,84,1107,530,100,61,0,3,0.34653
+565,84,1097,532,99,61,0,3,0.3
+566,84,1086,532,100,61,0,3,0.26733
+567,84,1076,532,100,61,0,3,0.22772
+568,84,1066,533,100,61,0,3,0.17822
+569,84,1056,533,100,61,0,3,0.13861
+570,84,1046,534,100,61,0,3,0.09901
+571,84,1039,533,100,61,0,3,0.089109
+572,84,1029,535,100,61,0,3,0.049505
+573,84,1020,537,100,61,0,3,0.009901
+574,84,1009,536,100,61,0,3,0
+1,85,909,478,41,44,0,3,1
+2,85,911,472,41,42,0,3,1
+3,85,912,480,41,41,0,3,1
+4,85,914,476,40,42,0,3,1
+5,85,916,476,40,43,0,3,1
+6,85,916,488,40,44,0,3,1
+7,85,917,478,40,45,0,3,1
+8,85,918,486,41,45,0,3,1
+9,85,919,486,40,45,0,3,1
+10,85,920,487,40,45,0,3,1
+11,85,916,485,41,44,0,3,1
+12,85,917,488,41,44,0,3,1
+13,85,920,478,40,43,0,3,1
+14,85,918,482,40,42,0,3,0.98639
+15,85,919,481,40,42,0,3,0.97277
+16,85,920,480,41,42,0,3,0.97674
+17,85,920,482,41,43,0,3,0.90909
+18,85,920,481,41,43,0,3,0.95455
+19,85,921,480,41,43,0,3,0.97727
+20,85,920,481,41,43,0,3,0.95455
+21,85,922,480,41,44,0,3,0.97778
+22,85,921,481,41,43,0,3,1
+23,85,921,482,40,42,0,3,1
+24,85,922,485,41,42,0,3,1
+25,85,922,487,41,42,0,3,1
+26,85,922,489,42,42,0,3,1
+27,85,922,490,42,43,0,3,1
+28,85,922,492,43,43,0,3,1
+29,85,922,494,42,43,0,3,1
+30,85,923,497,41,43,0,3,1
+31,85,922,503,42,49,0,3,1
+32,85,922,496,42,48,0,3,1
+33,85,922,489,42,48,0,3,1
+34,85,921,494,43,49,0,3,1
+35,85,924,485,43,47,0,3,1
+36,85,924,484,43,45,0,3,1
+37,85,925,483,43,44,0,3,1
+38,85,924,480,43,44,0,3,1
+39,85,925,479,42,44,0,3,1
+40,85,926,478,42,44,0,3,1
+41,85,927,478,42,43,0,3,1
+42,85,927,478,42,44,0,3,1
+43,85,927,478,42,45,0,3,1
+44,85,927,479,42,45,0,3,1
+45,85,927,479,42,46,0,3,1
+46,85,927,480,43,47,0,3,1
+47,85,927,480,43,48,0,3,1
+48,85,927,481,43,48,0,3,1
+49,85,927,481,43,49,0,3,1
+50,85,927,482,44,50,0,3,1
+51,85,927,484,44,49,0,3,1
+52,85,927,483,43,50,0,3,1
+53,85,927,483,43,50,0,3,1
+54,85,927,483,43,50,0,3,1
+55,85,927,483,43,50,0,3,1
+56,85,927,483,43,50,0,3,1
+57,85,926,481,43,50,0,3,1
+58,85,926,479,43,51,0,3,1
+59,85,926,478,43,51,0,3,1
+60,85,926,477,43,51,0,3,1
+61,85,926,477,43,50,0,3,1
+62,85,926,474,44,50,0,3,1
+63,85,925,475,44,50,0,3,1
+64,85,925,476,43,50,0,3,1
+65,85,924,477,43,50,0,3,1
+66,85,924,478,43,50,0,3,1
+67,85,922,478,43,50,0,3,1
+68,85,920,478,44,50,0,3,1
+69,85,919,478,43,50,0,3,1
+70,85,917,478,44,50,0,3,1
+71,85,916,478,44,50,0,3,1
+72,85,913,477,44,50,0,3,1
+73,85,911,477,44,50,0,3,1
+74,85,909,476,44,50,0,3,1
+75,85,907,476,44,50,0,3,1
+76,85,905,475,44,50,0,3,1
+77,85,902,475,44,50,0,3,1
+78,85,900,474,44,50,0,3,1
+79,85,898,474,44,50,0,3,1
+80,85,896,473,44,50,0,3,1
+81,85,894,473,44,50,0,3,1
+82,85,891,473,43,50,0,3,1
+83,85,888,474,43,50,0,3,1
+84,85,885,475,43,50,0,3,1
+85,85,882,475,43,51,0,3,1
+86,85,879,476,43,51,0,3,1
+87,85,876,477,43,51,0,3,1
+88,85,873,477,43,52,0,3,1
+89,85,870,478,43,52,0,3,1
+90,85,867,479,43,52,0,3,1
+91,85,864,480,43,52,0,3,1
+92,85,860,480,43,52,0,3,1
+93,85,856,481,43,52,0,3,1
+94,85,852,482,44,52,0,3,1
+95,85,849,483,43,52,0,3,1
+96,85,845,484,44,52,0,3,1
+97,85,841,485,44,51,0,3,1
+98,85,838,486,43,51,0,3,1
+99,85,834,487,44,51,0,3,1
+100,85,830,488,44,51,0,3,1
+101,85,827,489,44,51,0,3,1
+102,85,823,488,45,51,0,3,1
+103,85,819,488,46,51,0,3,1
+104,85,816,487,46,52,0,3,1
+105,85,812,487,47,51,0,3,1
+106,85,808,486,48,52,0,3,1
+107,85,805,486,48,52,0,3,1
+108,85,801,485,47,52,0,3,1
+109,85,798,485,46,52,0,3,1
+110,85,794,485,45,51,0,3,1
+111,85,791,485,44,51,0,3,1
+112,85,786,485,44,51,0,3,1
+113,85,781,485,45,51,0,3,1
+114,85,776,485,46,51,0,3,1
+115,85,771,485,47,51,0,3,1
+116,85,767,485,47,51,0,3,1
+117,85,762,485,47,51,0,3,1
+118,85,757,485,48,51,0,3,1
+119,85,752,485,49,51,0,3,1
+120,85,747,485,50,51,0,3,1
+121,85,743,486,50,51,0,3,1
+122,85,739,486,50,51,0,3,1
+123,85,735,486,50,51,0,3,1
+124,85,731,486,50,51,0,3,1
+125,85,727,487,50,51,0,3,1
+126,85,723,487,50,51,0,3,1
+127,85,719,487,50,51,0,3,1
+128,85,715,488,50,51,0,3,1
+129,85,711,488,50,51,0,3,1
+130,85,707,488,50,51,0,3,1
+131,85,703,489,51,51,0,3,0.98891
+132,85,698,488,51,52,0,3,0.98875
+133,85,694,488,51,52,0,3,0.9775
+134,85,690,488,51,53,0,3,0.97792
+135,85,686,487,51,54,0,3,0.96853
+136,85,682,487,51,55,0,3,0.95604
+137,85,678,487,50,55,0,3,0.95518
+138,85,674,486,50,56,0,3,0.94496
+139,85,670,486,50,57,0,3,0.93306
+140,85,666,486,50,57,0,3,1
+141,85,662,486,50,58,0,3,1
+142,85,658,486,50,58,0,3,1
+143,85,654,486,50,58,0,3,1
+144,85,650,486,50,58,0,3,1
+145,85,646,486,50,59,0,3,1
+146,85,642,487,50,58,0,3,1
+147,85,638,487,50,58,0,3,1
+148,85,634,487,50,59,0,3,1
+149,85,630,487,50,59,0,3,1
+150,85,626,487,50,59,0,3,1
+151,85,623,488,50,59,0,3,1
+152,85,618,488,50,59,0,3,1
+153,85,613,488,50,59,0,3,1
+154,85,608,488,51,59,0,3,1
+155,85,603,489,51,59,0,3,1
+156,85,599,489,51,59,0,3,1
+157,85,594,489,51,59,0,3,1
+158,85,589,490,51,59,0,3,1
+159,85,584,490,52,59,0,3,1
+160,85,579,490,52,59,0,3,1
+161,85,575,491,52,59,0,3,1
+162,85,570,492,52,59,0,3,1
+163,85,566,493,52,59,0,3,1
+164,85,562,494,52,59,0,3,1
+165,85,558,495,52,59,0,3,1
+166,85,554,494,52,59,0,3,1
+167,85,550,494,53,58,0,3,0.84181
+168,85,547,493,53,59,0,3,0.85556
+169,85,543,493,54,58,0,3,0.85978
+170,85,539,492,55,58,0,3,0.86229
+171,85,536,492,55,58,0,3,0.86229
+172,85,533,492,55,58,0,3,0.85835
+173,85,531,492,55,58,0,3,0.85835
+174,85,528,492,55,58,0,3,1
+175,85,526,492,55,58,0,3,1
+176,85,523,492,55,58,0,3,1
+177,85,521,492,55,58,0,3,1
+178,85,518,492,55,58,0,3,1
+179,85,516,492,55,58,0,3,1
+180,85,513,492,55,58,0,3,1
+181,85,511,493,55,58,0,3,1
+182,85,507,493,56,58,0,3,0.86798
+183,85,504,494,56,58,0,3,0.87898
+184,85,501,495,56,57,0,3,0.88022
+185,85,498,496,56,57,0,3,0.89111
+186,85,495,497,56,56,0,3,0.90305
+187,85,492,497,56,57,0,3,0.90472
+188,85,489,498,56,56,0,3,0.92675
+189,85,486,499,56,56,0,3,0.94768
+190,85,483,500,56,55,0,3,0.94674
+191,85,480,501,56,55,0,3,0.93421
+192,85,477,501,57,55,0,3,0.94612
+193,85,475,501,57,56,0,3,0.96824
+194,85,473,501,57,57,0,3,0.9893
+195,85,471,501,57,57,0,3,1
+196,85,469,502,57,57,0,3,1
+197,85,466,502,58,58,0,3,1
+198,85,464,502,58,58,0,3,1
+199,85,462,502,58,59,0,3,1
+200,85,460,502,58,60,0,3,1
+201,85,458,503,59,60,0,3,1
+202,85,456,503,59,61,0,3,1
+203,85,455,504,59,61,0,3,1
+204,85,453,505,59,61,0,3,1
+205,85,452,506,59,61,0,3,1
+206,85,451,507,59,61,0,3,1
+207,85,449,508,59,61,0,3,1
+208,85,448,509,59,61,0,3,1
+209,85,446,510,59,61,0,3,1
+210,85,445,511,59,61,0,3,1
+211,85,444,512,59,61,0,3,1
+212,85,443,512,59,61,0,3,1
+213,85,442,512,59,61,0,3,1
+214,85,441,512,59,61,0,3,1
+215,85,440,513,59,61,0,3,1
+216,85,439,513,59,61,0,3,1
+217,85,439,513,59,61,0,3,1
+218,85,439,513,59,61,0,3,1
+219,85,439,513,59,61,0,3,1
+220,85,439,513,59,61,0,3,1
+221,85,439,514,59,60,0,3,1
+222,85,439,514,59,60,0,3,1
+223,85,439,514,59,60,0,3,1
+224,85,439,514,59,60,0,3,1
+225,85,439,514,59,61,0,3,1
+226,85,439,515,59,60,0,3,1
+227,85,439,515,59,60,0,3,1
+228,85,439,515,59,61,0,3,1
+229,85,439,515,59,61,0,3,1
+230,85,439,515,59,61,0,3,1
+231,85,439,516,59,61,0,3,1
+232,85,439,515,59,61,0,3,1
+233,85,440,514,59,61,0,3,1
+234,85,441,513,58,61,0,3,1
+235,85,442,513,58,60,0,3,1
+236,85,443,511,59,63,0,3,1
+237,85,444,510,60,65,0,3,1
+238,85,446,509,60,68,0,3,1
+239,85,447,509,60,66,0,3,1
+240,85,449,510,59,63,0,3,1
+241,85,451,511,59,61,0,3,1
+242,85,453,510,59,61,0,3,1
+243,85,455,510,60,61,0,3,1
+244,85,458,510,60,60,0,3,1
+245,85,460,510,61,60,0,3,1
+246,85,463,510,61,60,0,3,1
+247,85,465,509,62,60,0,3,1
+248,85,468,509,62,60,0,3,1
+249,85,470,509,63,60,0,3,1
+250,85,473,509,63,60,0,3,1
+251,85,476,509,64,60,0,3,1
+252,85,480,513,64,59,0,3,1
+253,85,484,512,64,60,0,3,1
+254,85,489,512,63,60,0,3,1
+255,85,493,511,63,62,0,3,0.99107
+256,85,498,511,62,62,0,3,0.99118
+257,85,503,511,62,63,0,3,0.99157
+258,85,505,514,62,61,0,3,0.97619
+259,85,510,513,62,61,0,3,0.97696
+260,85,515,512,62,61,0,3,0.97773
+261,85,521,512,62,61,0,3,0.9703
+262,85,523,514,63,61,0,3,0.95413
+263,85,528,514,63,61,0,3,0.9496
+264,85,533,514,63,61,0,3,0.94556
+265,85,538,514,63,61,0,3,0.94204
+266,85,543,514,63,62,0,3,0.93725
+267,85,548,514,63,62,0,3,0.93452
+268,85,553,514,63,62,0,3,0.93229
+269,85,558,515,63,62,0,3,0.9256
+270,85,562,512,63,61,0,3,0.94556
+271,85,567,509,62,61,0,3,0.95904
+272,85,571,508,62,61,0,3,0.96416
+273,85,576,508,62,61,0,3,0.96339
+274,85,581,507,62,61,0,3,0.96928
+275,85,586,507,61,61,0,3,0.97138
+276,85,591,506,61,62,0,3,0.97235
+277,85,595,506,62,61,0,3,0.98029
+278,85,600,505,61,62,0,3,0.98592
+279,85,605,505,61,61,0,3,0.98959
+280,85,610,504,61,62,0,3,0.99155
+281,85,615,504,61,62,0,3,0.99437
+282,85,619,504,61,62,0,3,1
+283,85,624,504,61,63,0,3,1
+284,85,628,504,62,64,0,3,1
+285,85,633,504,62,64,0,3,1
+286,85,637,505,63,64,0,3,1
+287,85,642,505,62,65,0,3,1
+288,85,646,505,63,65,0,3,1
+289,85,651,505,63,66,0,3,1
+290,85,655,505,64,67,0,3,1
+291,85,660,506,64,67,0,3,1
+292,85,664,506,64,67,0,3,1
+293,85,668,506,64,67,0,3,1
+294,85,672,506,64,67,0,3,1
+295,85,676,506,64,68,0,3,1
+296,85,681,507,64,67,0,3,1
+297,85,685,507,64,67,0,3,1
+298,85,689,507,64,68,0,3,1
+299,85,693,507,64,68,0,3,1
+300,85,697,507,64,68,0,3,1
+301,85,702,508,64,68,0,3,1
+302,85,705,509,64,68,0,3,1
+303,85,708,510,65,68,0,3,1
+304,85,711,511,66,68,0,3,1
+305,85,715,512,65,68,0,3,1
+306,85,718,513,66,68,0,3,1
+307,85,721,514,67,68,0,3,1
+308,85,725,515,66,68,0,3,1
+309,85,728,516,67,68,0,3,1
+310,85,731,517,68,68,0,3,1
+311,85,735,518,68,69,0,3,1
+312,85,738,517,67,69,0,3,1
+313,85,741,517,67,69,0,3,1
+314,85,744,517,67,68,0,3,1
+315,85,747,517,66,68,0,3,1
+316,85,750,517,66,68,0,3,1
+317,85,753,516,66,68,0,3,1
+318,85,756,516,65,68,0,3,1
+319,85,759,516,65,67,0,3,1
+320,85,762,516,65,67,0,3,1
+321,85,765,516,65,67,0,3,1
+322,85,766,515,65,67,0,3,1
+323,85,767,514,66,67,0,3,1
+324,85,768,513,67,67,0,3,1
+325,85,769,512,68,68,0,3,1
+326,85,771,511,68,68,0,3,1
+327,85,772,510,69,68,0,3,1
+328,85,773,509,70,69,0,3,1
+329,85,774,508,71,69,0,3,1
+330,85,775,507,72,69,0,3,1
+331,85,777,506,72,70,0,3,1
+332,85,777,504,72,70,0,3,1
+333,85,778,502,72,71,0,3,1
+334,85,779,501,72,71,0,3,1
+335,85,779,499,73,71,0,3,1
+336,85,780,497,73,71,0,3,1
+337,85,780,497,73,71,0,3,1
+338,85,780,497,74,71,0,3,1
+339,85,780,497,74,71,0,3,1
+340,85,781,498,74,71,0,3,1
+341,85,782,501,74,72,0,3,1
+342,85,781,503,73,72,0,3,1
+343,85,780,506,73,71,0,3,1
+344,85,779,508,73,71,0,3,1
+345,85,779,511,72,71,0,3,1
+346,85,779,515,72,71,0,3,1
+347,85,779,516,71,73,0,3,1
+348,85,778,516,72,73,0,3,1
+349,85,778,517,72,72,0,3,1
+350,85,778,517,72,72,0,3,1
+351,85,778,518,73,71,0,3,1
+352,85,777,518,74,72,0,3,1
+353,85,777,519,74,72,0,3,1
+354,85,777,520,74,72,0,3,1
+355,85,776,521,75,72,0,3,1
+356,85,776,522,75,72,0,3,1
+357,85,776,523,75,73,0,3,1
+358,85,775,523,74,74,0,3,1
+359,85,774,523,74,76,0,3,1
+360,85,773,523,73,77,0,3,1
+361,85,772,523,73,79,0,3,1
+362,85,771,525,73,79,0,3,1
+363,85,771,527,72,79,0,3,1
+364,85,770,529,72,79,0,3,1
+365,85,770,531,72,79,0,3,1
+366,85,769,533,72,79,0,3,1
+367,85,769,535,71,79,0,3,1
+368,85,768,537,72,79,0,3,1
+369,85,768,539,71,79,0,3,1
+370,85,767,541,71,79,0,3,1
+371,85,767,544,71,78,0,3,1
+372,85,764,543,72,74,0,3,1
+373,85,760,541,76,82,0,3,1
+374,85,759,541,76,82,0,3,1
+375,85,758,542,76,81,0,3,1
+376,85,757,543,76,80,0,3,1
+377,85,756,544,76,80,0,3,1
+378,85,752,542,77,79,0,3,1
+379,85,749,540,77,78,0,3,1
+380,85,745,538,78,77,0,3,1
+381,85,742,536,78,77,0,3,1
+382,85,737,533,79,78,0,3,1
+383,85,732,531,80,79,0,3,1
+384,85,727,529,81,80,0,3,1
+385,85,722,527,82,81,0,3,1
+386,85,717,526,82,79,0,3,1
+387,85,713,525,81,78,0,3,1
+388,85,709,524,80,76,0,3,1
+389,85,705,523,79,75,0,3,1
+390,85,701,522,79,74,0,3,1
+391,85,697,520,77,75,0,3,1
+392,85,689,521,79,81,0,3,1
+393,85,682,521,80,80,0,3,1
+394,85,674,520,80,80,0,3,1
+395,85,666,519,80,80,0,3,1
+396,85,658,518,80,80,0,3,1
+397,85,652,518,80,79,0,3,1
+398,85,643,516,80,80,0,3,1
+399,85,634,515,81,80,0,3,1
+400,85,625,514,81,80,0,3,1
+401,85,616,513,82,80,0,3,1
+402,85,605,512,82,81,0,3,1
+403,85,594,512,83,81,0,3,1
+404,85,584,512,83,82,0,3,1
+405,85,572,512,83,82,0,3,1
+406,85,561,512,83,83,0,3,1
+407,85,549,512,83,82,0,3,1
+408,85,539,511,83,83,0,3,1
+409,85,526,510,83,84,0,3,1
+410,85,513,509,84,85,0,3,1
+411,85,500,508,85,86,0,3,1
+412,85,485,508,85,86,0,3,1
+413,85,471,508,85,87,0,3,1
+414,85,456,508,85,87,0,3,1
+415,85,442,508,85,88,0,3,1
+416,85,425,506,86,89,0,3,1
+417,85,409,505,87,89,0,3,1
+418,85,393,504,88,89,0,3,1
+419,85,377,503,88,89,0,3,1
+420,85,361,502,89,89,0,3,1
+421,85,345,501,90,89,0,3,1
+422,85,325,501,91,87,0,3,1
+423,85,306,502,91,84,0,3,1
+424,85,288,500,92,84,0,3,1
+425,85,267,498,93,85,0,3,1
+426,85,245,498,94,86,0,3,1
+427,85,224,499,95,87,0,3,1
+428,85,202,500,97,87,0,3,1
+429,85,181,501,98,88,0,3,1
+430,85,159,502,99,90,0,3,1
+431,85,138,503,99,93,0,3,1
+432,85,114,503,99,92,0,3,1
+433,85,93,502,99,92,0,3,1
+434,85,68,505,99,92,0,3,1
+435,85,48,507,100,92,0,3,1
+436,85,22,507,100,92,0,3,1
+437,85,-2,507,99,92,0,3,0.97
+438,85,-20,507,100,92,0,3,0.79208
+439,85,-47,507,100,92,0,3,0.52475
+522,86,1552,504,49,42,0,3,0.93907
+523,86,1530,503,49,42,0,3,0.93163
+524,86,1508,503,49,42,0,3,0.90698
+525,86,1486,502,49,42,0,3,0.95349
+526,86,1464,502,49,42,0,3,0.93023
+527,86,1442,501,49,42,0,3,0.95349
+528,86,1420,501,49,42,0,3,0.93023
+529,86,1398,501,50,42,0,3,0.93023
+530,86,1377,503,50,41,0,3,0.92857
+531,86,1359,504,50,42,0,3,0.86047
+532,86,1341,506,50,43,0,3,0.79545
+533,86,1322,506,50,42,0,3,0.7907
+534,86,1305,505,50,42,0,3,0.81395
+535,86,1288,505,50,42,0,3,0.74419
+536,86,1271,505,51,42,0,3,0.76744
+537,86,1252,502,51,42,0,3,0.88596
+538,86,1234,507,50,42,0,3,0.8249
+539,86,1218,505,50,42,0,3,0.77428
+540,86,1200,507,50,40,0,3,0.83644
+541,86,1183,509,49,38,0,3,0.79692
+542,86,1168,511,49,43,0,3,0.79636
+543,86,1153,511,49,42,0,3,0.84279
+544,86,1138,511,49,41,0,3,0.88
+545,86,1120,510,51,42,0,3,0.8873
+546,86,1106,507,52,41,0,3,0.89937
+547,86,1091,506,53,41,0,3,0.92504
+548,86,1077,506,53,41,0,3,0.95767
+549,86,1063,506,54,41,0,3,0.99221
+550,86,1049,505,55,41,0,3,1
+551,86,1035,505,56,41,0,3,1
+552,86,1022,505,57,41,0,3,1
+553,86,1009,504,58,41,0,3,1
+554,86,997,503,59,41,0,3,1
+555,86,985,502,59,41,0,3,1
+556,86,973,501,60,41,0,3,1
+557,86,961,501,61,41,0,3,1
+558,86,950,500,61,41,0,3,1
+559,86,939,499,62,41,0,3,1
+560,86,928,498,62,41,0,3,1
+561,86,917,497,63,41,0,3,1
+562,86,906,496,64,42,0,3,1
+563,86,896,496,64,42,0,3,1
+564,86,886,496,65,42,0,3,1
+565,86,877,496,64,42,0,3,1
+566,86,867,496,65,42,0,3,1
+567,86,858,497,65,42,0,3,1
+568,86,850,499,65,42,0,3,1
+569,86,841,498,65,43,0,3,1
+570,86,832,498,65,44,0,3,1
+571,86,823,498,65,45,0,3,1
+572,86,817,496,65,47,0,3,1
+573,86,808,498,65,47,0,3,1
+574,86,800,499,66,47,0,3,1
+575,86,792,500,68,47,0,3,1
+576,86,785,502,69,46,0,3,1
+577,86,778,499,70,46,0,3,1
+578,86,770,499,70,45,0,3,1
+579,86,764,498,70,47,0,3,1
+580,86,758,498,71,48,0,3,1
+581,86,752,498,72,50,0,3,1
+582,86,748,497,72,49,0,3,1
+583,86,742,497,72,49,0,3,1
+584,86,736,498,73,49,0,3,1
+585,86,732,497,74,50,0,3,1
+586,86,729,497,74,50,0,3,1
+587,86,725,497,75,51,0,3,1
+588,86,722,497,76,51,0,3,1
+589,86,718,497,77,52,0,3,1
+590,86,715,497,77,52,0,3,1
+591,86,712,497,78,53,0,3,1
+592,86,708,499,80,54,0,3,1
+593,86,707,499,81,54,0,3,1
+594,86,706,499,82,55,0,3,1
+595,86,706,500,82,55,0,3,1
+596,86,705,498,85,54,0,3,1
+597,86,705,498,86,55,0,3,1
+598,86,706,499,86,56,0,3,1
+599,86,706,500,87,56,0,3,1
+600,86,707,501,87,57,0,3,1
+601,86,707,502,88,57,0,3,1
+602,86,708,503,89,58,0,3,1
+603,86,709,503,91,58,0,3,1
+604,86,711,503,92,58,0,3,1
+605,86,713,503,93,58,0,3,1
+606,86,715,503,95,59,0,3,1
+607,86,717,503,96,59,0,3,1
+608,86,718,503,98,59,0,3,1
+609,86,720,503,100,60,0,3,1
+610,86,722,503,101,60,0,3,1
+611,86,724,503,102,60,0,3,1
+612,86,726,503,104,61,0,3,1
+613,86,727,500,106,60,0,3,1
+614,86,728,501,107,60,0,3,1
+615,86,730,502,108,61,0,3,1
+616,86,732,503,109,62,0,3,1
+617,86,734,504,109,63,0,3,1
+618,86,736,505,110,63,0,3,1
+619,86,738,506,111,64,0,3,1
+620,86,740,507,111,65,0,3,1
+621,86,742,508,112,66,0,3,1
+622,86,744,510,113,66,0,3,1
+623,86,746,512,114,67,0,3,1
+624,86,749,514,115,68,0,3,1
+625,86,752,517,116,68,0,3,1
+626,86,757,512,117,70,0,3,1
+627,86,760,512,118,70,0,3,1
+628,86,763,513,119,70,0,3,1
+629,86,766,514,121,70,0,3,1
+630,86,774,515,120,70,0,3,1
+631,86,779,516,120,69,0,3,1
+632,86,784,517,121,69,0,3,1
+633,86,789,520,121,69,0,3,0.99368
+634,86,794,517,122,70,0,3,0.98282
+635,86,799,519,123,71,0,3,0.97581
+636,86,805,521,124,72,0,3,0.95781
+637,86,811,523,125,73,0,3,0.94595
+638,86,817,525,126,72,0,3,0.93593
+639,86,823,527,127,72,0,3,0.92487
+640,86,829,529,128,71,0,3,0.91441
+641,86,835,532,130,70,0,3,0.89937
+642,86,840,533,132,70,0,3,0.89537
+643,86,846,533,133,72,0,3,0.899
+644,86,853,534,133,74,0,3,0.89453
+645,86,863,537,132,74,0,3,0.87779
+646,86,869,538,131,75,0,3,0.86842
+647,86,875,540,130,75,0,3,0.87626
+648,86,883,542,130,74,0,3,0.87461
+649,86,891,541,130,74,0,3,0.86891
+650,86,899,540,130,75,0,3,0.86832
+651,86,907,539,131,76,0,3,0.86305
+652,86,915,531,129,78,0,3,0.87527
+653,86,924,532,129,78,0,3,0.87118
+654,86,933,531,129,77,0,3,0.8716
+655,86,942,531,130,77,0,3,0.86044
+656,86,955,534,129,77,0,3,0.83156
+657,86,965,540,129,77,0,3,0.83491
+658,86,975,546,129,78,0,3,0.83797
+659,86,985,553,129,78,0,3,0.84907
+660,86,992,554,130,79,0,3,0.84866
+661,86,1000,555,131,80,0,3,0.84287
+662,86,1008,557,132,81,0,3,0.84596
+663,86,1017,561,132,81,0,3,0.84898
+664,86,1026,562,133,81,0,3,0.84711
+665,86,1035,563,134,82,0,3,0.84212
+666,86,1045,565,134,82,0,3,0.834
+667,86,1054,564,135,83,0,3,0.83447
+668,86,1064,564,136,83,0,3,0.82795
+669,86,1073,563,137,84,0,3,0.82899
+670,86,1083,563,138,84,0,3,0.82818
+671,86,1093,561,137,86,0,3,0.82725
+672,86,1103,560,137,87,0,3,0.82642
+673,86,1112,558,137,86,0,3,0.83783
+674,86,1121,556,137,85,0,3,0.84589
+675,86,1131,557,138,86,0,3,0.83354
+676,86,1141,556,141,85,0,3,0.82607
+677,86,1150,558,142,87,0,3,0.85577
+678,86,1160,560,143,89,0,3,0.83472
+679,86,1169,567,143,91,0,3,0.8362
+680,86,1178,574,144,93,0,3,0.83566
+681,86,1188,582,144,94,0,3,0.8347
+682,86,1200,579,144,94,0,3,0.83797
+683,86,1204,572,146,94,0,3,0.84647
+684,86,1214,566,146,93,0,3,0.82776
+685,86,1222,558,148,94,0,3,0.83214
+686,86,1231,553,149,97,0,3,0.83163
+687,86,1241,552,150,97,0,3,0.83227
+688,86,1249,552,152,97,0,3,0.84154
+689,86,1258,552,154,97,0,3,0.84575
+690,86,1269,552,156,99,0,3,0.83949
+691,86,1281,553,157,100,0,3,0.83074
+692,86,1288,559,157,101,0,3,0.85232
+693,86,1298,561,161,101,0,3,0.84314
+694,86,1307,566,163,102,0,3,0.84869
+695,86,1316,572,165,103,0,3,0.85809
+696,86,1328,572,169,101,0,3,0.85006
+697,86,1337,577,171,103,0,3,0.84956
+698,86,1346,583,173,104,0,3,0.85025
+699,86,1355,589,175,105,0,3,0.86353
+700,86,1362,587,177,106,0,3,0.88055
+701,86,1372,592,179,108,0,3,0.87513
+702,86,1383,598,180,110,0,3,0.8676
+703,86,1391,603,182,109,0,3,0.8773
+704,86,1399,608,184,113,0,3,0.86155
+705,86,1407,612,187,115,0,3,0.85748
+706,86,1415,616,190,117,0,3,0.85691
+707,86,1423,614,191,118,0,3,0.86765
+708,86,1432,613,192,118,0,3,0.87682
+709,86,1440,609,194,121,0,3,0.88903
+710,86,1448,623,197,122,0,3,0.87189
+711,86,1455,608,198,125,0,3,0.88083
+712,86,1464,617,197,126,0,3,0.90098
+713,86,1474,605,201,126,0,3,0.88867
+714,86,1484,601,206,130,0,3,0.87949
+715,86,1487,606,209,134,0,3,0.88825
+716,86,1494,600,212,133,0,3,0.89573
+717,86,1501,601,215,133,0,3,0.89932
+718,86,1509,602,218,134,0,3,0.90039
+719,86,1520,613,221,133,0,3,0.89828
+720,86,1528,607,225,132,0,3,0.89404
+721,86,1536,609,229,134,0,3,0.89333
+722,86,1549,614,233,135,0,3,0.88436
+723,86,1556,618,236,137,0,3,0.89705
+724,86,1564,622,238,140,0,3,0.90819
+725,86,1572,622,241,143,0,3,0.91919
+726,86,1582,634,246,146,0,3,0.9101
+727,86,1590,630,250,146,0,3,0.92398
+728,86,1600,642,253,150,0,3,0.91912
+729,86,1609,643,257,152,0,3,0.91724
+730,86,1619,645,260,153,0,3,0.92118
+731,86,1625,649,264,154,0,3,0.92511
+732,86,1634,648,268,158,0,3,0.90847
+733,86,1645,651,269,157,0,3,0.82883
+734,86,1653,656,269,157,0,3,0.81149
+735,86,1662,654,269,158,0,3,0.76604
+736,86,1671,653,269,158,0,3,0.69783
+737,86,1680,652,270,158,0,3,0.60449
+738,86,1689,656,270,158,0,3,0.53262
+739,86,1699,661,269,157,0,3,0.46709
+740,86,1709,663,269,157,0,3,0.43371
+741,86,1719,665,269,158,0,3,0.45986
+742,86,1729,668,269,158,0,3,0.53629
+743,86,1735,671,269,160,0,3,0.68889
+744,86,1742,675,269,162,0,3,0.66296
+745,86,1749,677,269,165,0,3,0.63704
+746,86,1757,680,269,167,0,3,0.60741
+747,86,1767,678,269,170,0,3,0.57037
+748,86,1775,681,270,157,0,3,0.53875
+749,86,1784,683,270,157,0,3,0.50554
+750,86,1794,685,269,158,0,3,0.47037
+520,87,1475,500,42,29,0,3,1
+521,87,1450,499,42,29,0,3,1
+522,87,1425,499,42,28,0,3,1
+523,87,1403,498,42,28,0,3,1
+524,87,1381,497,42,28,0,3,1
+525,87,1359,496,42,29,0,3,1
+526,87,1337,496,42,28,0,3,1
+527,87,1315,495,42,28,0,3,1
+528,87,1293,494,42,29,0,3,1
+529,87,1271,493,42,29,0,3,1
+530,87,1249,493,42,29,0,3,1
+531,87,1229,494,41,29,0,3,1
+532,87,1209,496,41,29,0,3,1
+533,87,1190,495,41,28,0,3,1
+534,87,1169,495,42,28,0,3,1
+535,87,1149,495,41,28,0,3,1
+536,87,1136,494,37,27,0,3,1
+537,87,1117,490,37,30,0,3,1
+538,87,1101,496,37,28,0,3,1
+539,87,1082,494,38,28,0,3,1
+540,87,1066,495,42,29,0,3,1
+541,87,1049,496,41,29,0,3,1
+542,87,1032,498,41,28,0,3,1
+543,87,1017,497,41,29,0,3,1
+478,88,1892,780,105,153,0,10,0.27358
+479,88,1859,781,105,153,0,10,0.58491
+480,88,1823,782,113,154,0,10,0.85965
+481,88,1787,784,122,154,0,10,1
+482,88,1751,782,121,158,0,10,1
+483,88,1715,781,120,162,0,10,1
+484,88,1679,782,118,163,0,10,1
+485,88,1643,783,117,165,0,10,1
+486,88,1607,785,116,166,0,10,1
+487,88,1571,789,119,165,0,10,1
+488,88,1535,793,122,165,0,10,1
+489,88,1500,798,117,166,0,10,1
+490,88,1460,801,120,166,0,10,1
+491,88,1421,804,122,166,0,10,1
+492,88,1381,807,125,169,0,10,1
+493,88,1343,812,125,171,0,10,1
+494,88,1305,817,125,173,0,10,1
+495,88,1265,824,125,174,0,10,1
+496,88,1225,827,127,176,0,10,1
+497,88,1185,830,129,178,0,10,1
+498,88,1147,829,127,180,0,10,1
+499,88,1110,829,125,181,0,10,1
+500,88,1074,832,121,182,0,10,1
+501,88,1038,835,117,185,0,10,1
+502,88,995,833,118,190,0,10,1
+503,88,952,833,125,186,0,10,1
+504,88,915,836,122,186,0,10,1
+505,88,874,838,124,190,0,10,1
+506,88,829,844,126,191,0,10,1
+507,88,791,844,126,198,0,10,1
+508,88,750,856,124,199,0,10,1
+509,88,705,863,129,205,0,10,1
+510,88,660,872,133,205,0,10,1
+511,88,613,883,135,205,0,10,0.96117
+512,88,567,894,138,204,0,10,0.9122
+513,88,520,900,140,205,0,10,0.87864
+514,88,473,907,143,204,0,10,0.84878
+515,88,423,915,144,203,0,10,0.81373
+516,88,377,920,146,202,0,10,0.7931
+517,88,325,925,148,202,0,10,0.76847
+518,88,273,930,151,202,0,10,0.74384
+519,88,222,935,153,202,0,10,0.71921
+520,88,170,943,154,202,0,10,0.6798
+521,88,114,945,160,206,0,10,0.657
+522,88,58,953,165,205,0,10,0.62136
+523,88,7,957,161,202,0,10,0.61084
+524,88,-47,968,161,202,0,10,0.39172
+81,89,1095,492,36,25,0,3,1
+82,89,1092,492,36,25,0,3,1
+83,89,1090,493,36,25,0,3,1
+84,89,1087,494,37,25,0,3,1
+85,89,1085,495,36,25,0,3,1
+86,89,1083,496,36,25,0,3,1
+87,89,1080,496,37,26,0,3,1
+88,89,1078,497,36,26,0,3,1
+89,89,1075,498,37,26,0,3,1
+90,89,1073,499,37,26,0,3,1
+91,89,1071,500,37,26,0,3,1
+92,89,1067,501,36,25,0,3,1
+93,89,1064,502,36,25,0,3,1
+94,89,1061,503,36,25,0,3,1
+95,89,1058,504,36,25,0,3,1
+96,89,1055,505,36,25,0,3,1
+97,89,1052,506,36,25,0,3,1
+98,89,1049,508,36,25,0,3,1
+99,89,1045,507,36,25,0,3,1
+100,89,1042,507,36,25,0,3,1
+101,89,1039,507,36,25,0,3,1
+102,89,1035,507,36,25,0,3,1
+103,89,1032,507,36,25,0,3,1
+104,89,1029,507,36,25,0,3,1
+105,89,1025,507,36,25,0,3,1
+106,89,1022,507,36,25,0,3,1
+107,89,1019,507,36,25,0,3,1
+108,89,1015,507,36,25,0,3,1
+109,89,1012,507,36,25,0,3,1
+110,89,1009,507,36,25,0,3,1
+111,89,1006,507,36,25,0,3,1
+112,89,1002,507,36,25,0,3,1
+113,89,998,507,36,25,0,3,1
+114,89,994,507,36,25,0,3,1
+115,89,990,508,36,25,0,3,1
+116,89,987,508,36,25,0,3,1
+117,89,983,508,36,25,0,3,1
+118,89,979,509,36,25,0,3,1
+119,89,975,509,36,25,0,3,1
+120,89,971,509,36,25,0,3,1
+121,89,968,510,36,25,0,3,1
+122,89,964,510,36,25,0,3,1
+123,89,960,510,36,25,0,3,1
+124,89,956,510,36,25,0,3,1
+125,89,952,511,36,25,0,3,1
+126,89,949,511,36,25,0,3,1
+127,89,945,511,36,25,0,3,1
+128,89,941,512,36,25,0,3,1
+129,89,937,512,36,25,0,3,1
+130,89,933,512,36,25,0,3,1
+131,89,930,513,36,25,0,3,1
+132,89,926,512,36,26,0,3,1
+133,89,923,512,36,26,0,3,1
+134,89,919,512,37,26,0,3,1
+135,89,916,512,37,26,0,3,1
+136,89,912,512,37,27,0,3,1
+137,89,909,512,37,27,0,3,1
+138,89,905,512,38,27,0,3,1
+139,89,902,512,38,27,0,3,1
+140,89,898,512,38,27,0,3,1
+141,89,895,512,38,28,0,3,1
+142,89,891,512,39,28,0,3,1
+143,89,888,512,39,28,0,3,1
+144,89,884,512,39,28,0,3,1
+145,89,881,512,39,28,0,3,1
+146,89,877,512,40,29,0,3,1
+147,89,874,512,40,29,0,3,1
+148,89,870,512,40,29,0,3,1
+149,89,867,512,40,29,0,3,1
+150,89,863,512,41,29,0,3,1
+151,89,860,512,41,30,0,3,1
+152,89,855,512,41,30,0,3,1
+153,89,851,512,41,31,0,3,1
+154,89,847,513,40,31,0,3,1
+155,89,842,513,41,31,0,3,1
+156,89,838,513,40,32,0,3,1
+157,89,834,514,40,32,0,3,1
+158,89,831,514,39,32,0,3,1
+159,89,828,514,39,33,0,3,1
+160,89,825,515,39,32,0,3,1
+161,89,822,515,39,33,0,3,1
+162,89,819,515,39,33,0,3,1
+163,89,816,516,39,33,0,3,1
+164,89,813,515,39,33,0,3,1
+165,89,810,515,39,33,0,3,1
+166,89,807,514,39,34,0,3,1
+167,89,804,514,39,34,0,3,1
+168,89,801,514,39,34,0,3,1
+169,89,798,513,39,35,0,3,1
+170,89,795,513,39,35,0,3,1
+171,89,792,513,39,35,0,3,1
+172,89,789,513,40,35,0,3,1
+173,89,787,513,40,36,0,3,1
+174,89,784,513,41,36,0,3,1
+175,89,782,513,42,37,0,3,1
+176,89,779,513,43,37,0,3,1
+177,89,777,513,43,38,0,3,1
+178,89,774,513,45,38,0,3,1
+179,89,772,513,45,39,0,3,1
+180,89,769,513,46,39,0,3,1
+181,89,767,514,47,39,0,3,1
+182,89,764,515,47,39,0,3,1
+183,89,762,516,47,39,0,3,1
+184,89,760,517,47,39,0,3,1
+185,89,757,518,48,39,0,3,1
+186,89,755,519,47,39,0,3,1
+187,89,753,520,47,39,0,3,1
+188,89,750,521,48,39,0,3,1
+189,89,748,522,48,39,0,3,1
+190,89,746,523,48,40,0,3,1
+191,89,745,523,48,40,0,3,1
+192,89,745,523,48,40,0,3,1
+193,89,745,524,48,40,0,3,1
+194,89,745,524,48,40,0,3,1
+195,89,745,525,48,40,0,3,1
+196,89,743,525,48,40,0,3,1
+197,89,742,526,47,39,0,3,1
+198,89,740,526,48,40,0,3,1
+199,89,739,527,47,39,0,3,1
+200,89,737,527,47,39,0,3,1
+201,89,736,528,47,39,0,3,1
+202,89,734,529,48,39,0,3,1
+203,89,732,530,49,39,0,3,1
+204,89,731,531,50,40,0,3,1
+205,89,730,531,51,41,0,3,1
+206,89,730,532,51,41,0,3,1
+207,89,729,533,52,42,0,3,1
+208,89,729,534,52,42,0,3,1
+209,89,728,535,53,42,0,3,1
+210,89,728,536,53,43,0,3,1
+211,89,728,536,53,44,0,3,1
+212,89,727,537,54,44,0,3,1
+213,89,727,538,54,45,0,3,1
+214,89,726,539,55,45,0,3,1
+215,89,726,540,55,45,0,3,1
+216,89,726,541,55,46,0,3,1
+217,89,726,541,56,46,0,3,1
+218,89,727,542,56,46,0,3,0.95745
+219,89,728,542,56,47,0,3,0.91667
+220,89,729,543,57,47,0,3,0.875
+221,89,729,543,58,47,0,3,0.85417
+222,89,730,544,58,47,0,3,0.85417
+223,89,731,544,58,48,0,3,0.83673
+224,89,732,545,59,48,0,3,0.81633
+225,89,733,544,60,49,0,3,0.82
+226,89,735,544,60,49,0,3,0.82
+227,89,736,544,61,49,0,3,0.82
+228,89,738,544,62,49,0,3,0.8819
+229,89,739,544,62,49,0,3,0.87778
+230,89,740,544,63,49,0,3,0.8775
+231,89,741,544,64,50,0,3,0.88326
+232,89,743,544,63,50,0,3,0.89583
+233,89,744,544,64,51,0,3,0.90769
+234,89,745,544,65,51,0,3,0.92803
+235,89,747,544,65,52,0,3,0.95283
+236,89,749,543,66,53,0,3,0.98673
+237,89,752,543,66,53,0,3,1
+238,89,754,543,67,53,0,3,1
+239,89,757,542,68,54,0,3,1
+240,89,759,542,69,54,0,3,1
+241,89,762,542,69,54,0,3,1
+242,89,765,542,70,55,0,3,1
+243,89,769,542,71,55,0,3,1
+244,89,774,542,71,56,0,3,1
+245,89,779,542,71,57,0,3,1
+246,89,784,543,71,57,0,3,1
+247,89,787,543,72,58,0,3,1
+248,89,790,544,73,58,0,3,1
+249,89,793,544,74,59,0,3,1
+250,89,796,545,75,59,0,3,1
+251,89,800,546,75,59,0,3,1
+252,89,805,546,76,59,0,3,1
+253,89,811,546,76,60,0,3,1
+254,89,817,546,77,61,0,3,1
+255,89,823,547,77,61,0,3,1
+256,89,829,547,77,62,0,3,1
+257,89,835,547,78,62,0,3,1
+258,89,841,547,78,63,0,3,1
+259,89,847,548,78,63,0,3,1
+260,89,853,548,79,64,0,3,1
+261,89,859,548,79,65,0,3,1
+262,89,865,549,80,65,0,3,1
+263,89,869,549,84,66,0,3,1
+264,89,874,550,87,67,0,3,1
+265,89,879,551,90,67,0,3,1
+266,89,884,552,94,68,0,3,1
+267,89,890,552,96,68,0,3,1
+268,89,897,552,97,69,0,3,1
+269,89,903,552,99,69,0,3,1
+270,89,910,553,100,69,0,3,1
+271,89,918,552,101,70,0,3,1
+272,89,926,552,102,71,0,3,1
+273,89,934,552,103,72,0,3,1
+274,89,941,552,104,73,0,3,1
+275,89,948,553,105,73,0,3,0.99324
+276,89,955,553,107,74,0,3,0.98469
+277,89,962,554,108,74,0,3,1
+278,89,969,554,109,75,0,3,1
+279,89,976,555,111,75,0,3,1
+280,89,983,555,112,76,0,3,0.97724
+281,89,991,556,113,76,0,3,0.95033
+282,89,998,556,115,76,0,3,0.92208
+283,89,1005,556,118,76,0,3,0.90909
+284,89,1013,556,120,76,0,3,0.88312
+285,89,1020,556,123,76,0,3,0.87013
+286,89,1028,556,125,76,0,3,0.85714
+287,89,1035,556,127,76,0,3,0.83117
+288,89,1043,556,129,76,0,3,0.81818
+289,89,1050,556,132,76,0,3,0.80519
+290,89,1058,556,134,76,0,3,0.81818
+291,89,1065,556,137,76,0,3,0.84416
+292,89,1073,557,139,76,0,3,0.85714
+293,89,1080,557,141,76,0,3,0.87013
+294,89,1088,558,143,76,0,3,0.87013
+295,89,1096,559,145,76,0,3,0.87013
+296,89,1104,560,147,75,0,3,0.89474
+297,89,1111,560,150,76,0,3,0.87013
+298,89,1119,561,152,76,0,3,0.85714
+299,89,1127,562,154,75,0,3,0.85526
+300,89,1135,563,156,75,0,3,0.82895
+301,89,1143,564,158,75,0,3,0.81579
+302,89,1150,566,160,76,0,3,0.79221
+303,89,1157,568,162,77,0,3,0.78205
+304,89,1164,570,165,78,0,3,0.77215
+305,89,1171,572,167,80,0,3,0.75309
+306,89,1178,574,170,81,0,3,0.69106
+307,89,1185,576,172,82,0,3,0.65569
+308,89,1193,578,174,84,0,3,0.62319
+309,89,1200,578,176,86,0,3,0.6392
+310,89,1208,579,178,87,0,3,0.62925
+311,89,1215,580,180,88,0,3,0.64467
+312,89,1223,581,182,89,0,3,0.64906
+313,89,1231,582,184,90,0,3,0.67942
+314,89,1237,582,186,91,0,3,0.64706
+315,89,1243,583,188,92,0,3,0.57672
+316,89,1249,583,190,94,0,3,0.50262
+317,89,1255,584,192,95,0,3,0.45078
+318,89,1261,584,194,96,0,3,0.42564
+319,89,1267,585,196,97,0,3,0.40102
+320,89,1273,585,198,99,0,3,0.38693
+321,89,1279,586,200,100,0,3,0.37811
+322,89,1284,585,201,100,0,3,0.37624
+323,89,1289,584,202,101,0,3,0.35468
+324,89,1294,583,203,101,0,3,0.36275
+325,89,1299,582,204,102,0,3,0.38049
+326,89,1304,581,206,103,0,3,0.41546
+327,89,1309,580,207,103,0,3,0.45192
+328,89,1314,579,208,104,0,3,0.48435
+329,89,1319,578,209,104,0,3,0.51887
+330,89,1324,577,210,105,0,3,0.4907
+331,89,1329,576,212,106,0,3,0.41753
+332,89,1331,574,213,107,0,3,0.37673
+333,89,1333,573,214,107,0,3,0.34109
+334,89,1335,571,216,108,0,3,0.34554
+335,89,1337,570,217,108,0,3,0.34395
+336,89,1339,569,219,108,0,3,0.34137
+337,89,1343,569,220,108,0,3,0.34277
+338,89,1347,569,221,109,0,3,0.35168
+339,89,1351,569,222,110,0,3,0.32291
+340,89,1356,569,223,111,0,3,0.30796
+341,89,1358,572,224,111,0,3,0.33484
+342,89,1360,575,226,112,0,3,0.34088
+343,89,1363,578,226,112,0,3,0.36962
+344,89,1365,582,228,112,0,3,0.35657
+345,89,1367,585,229,113,0,3,0.34523
+346,89,1370,588,230,113,0,3,0.3647
+347,89,1372,591,231,114,0,3,0.36079
+348,89,1375,595,232,114,0,3,0.33902
+349,89,1376,596,234,115,0,3,0.32993
+350,89,1377,598,236,116,0,3,0.32929
+351,89,1379,600,237,117,0,3,0.34749
+352,89,1380,602,239,118,0,3,0.33669
+353,89,1381,604,241,119,0,3,0.32769
+354,89,1382,607,244,119,0,3,0.35034
+355,89,1383,609,246,120,0,3,0.37357
+356,89,1385,611,248,122,0,3,0.34313
+357,89,1386,614,250,122,0,3,0.33887
+358,89,1387,616,252,123,0,3,0.32912
+359,89,1388,618,255,124,0,3,0.34056
+360,89,1390,621,256,125,0,3,0.35368
+361,89,1391,623,259,126,0,3,0.36826
+362,89,1392,625,261,127,0,3,0.39346
+363,89,1393,628,263,127,0,3,0.37752
+364,89,1395,630,265,129,0,3,0.39401
+365,89,1396,632,267,130,0,3,0.41011
+366,89,1397,635,270,130,0,3,0.46894
+367,89,1398,637,272,131,0,3,0.50685
+368,89,1400,640,274,132,0,3,0.54977
+369,89,1401,640,276,132,0,3,0.53899
+370,89,1402,640,278,133,0,3,0.52627
+371,89,1403,640,280,134,0,3,0.51256
+372,89,1404,640,282,135,0,3,0.50294
+373,89,1405,640,284,135,0,3,0.48617
+374,89,1406,640,286,136,0,3,0.50334
+375,89,1407,640,288,137,0,3,0.51281
+376,89,1408,640,290,138,0,3,0.54031
+377,89,1410,640,292,139,0,3,0.5658
+378,89,1407,639,294,140,0,3,0.57947
+379,89,1404,639,297,141,0,3,0.60299
+380,89,1401,638,299,142,0,3,0.65023
+381,89,1399,638,301,143,0,3,0.69723
+382,89,1399,636,302,144,0,3,0.71672
+383,89,1399,634,304,146,0,3,0.71498
+384,89,1399,633,306,147,0,3,0.71082
+385,89,1395,633,307,148,0,3,0.71206
+386,89,1391,634,308,148,0,3,0.71037
+387,89,1387,635,310,149,0,3,0.71023
+388,89,1383,636,311,149,0,3,0.7022
+389,89,1380,636,312,151,0,3,0.68446
+390,89,1376,637,313,151,0,3,0.68367
+391,89,1372,638,315,152,0,3,0.69374
+392,89,1368,639,316,152,0,3,0.68827
+393,89,1365,640,317,153,0,3,0.70636
+394,89,1357,640,318,154,0,3,0.721
+395,89,1350,641,319,155,0,3,0.73381
+396,89,1342,642,321,156,0,3,0.74287
+397,89,1335,643,321,157,0,3,0.7523
+398,89,1327,644,323,158,0,3,0.76887
+399,89,1320,645,324,159,0,3,0.772
+400,89,1310,644,325,160,0,3,0.77556
+401,89,1301,644,326,160,0,3,0.77928
+402,89,1291,643,328,162,0,3,0.79018
+403,89,1282,643,329,162,0,3,0.79822
+404,89,1273,643,330,163,0,3,0.80119
+405,89,1262,643,331,164,0,3,0.80234
+406,89,1251,644,332,164,0,3,0.80046
+407,89,1240,645,334,165,0,3,0.79696
+408,89,1227,645,335,166,0,3,0.8091
+409,89,1215,645,336,167,0,3,0.83206
+410,89,1202,645,337,168,0,3,0.84097
+411,89,1190,646,338,168,0,3,0.85111
+412,89,1174,646,339,169,0,3,0.86303
+413,89,1158,646,340,170,0,3,0.91636
+414,89,1142,646,342,172,0,3,0.92922
+415,89,1126,646,343,173,0,3,0.93899
+416,89,1110,646,344,174,0,3,0.95548
+417,89,1095,647,345,175,0,3,0.96231
+418,89,1075,647,346,176,0,3,0.97099
+419,89,1055,647,347,177,0,3,0.98063
+420,89,1035,647,348,178,0,3,0.99376
+421,89,1016,647,349,179,0,3,1
+422,89,996,647,350,180,0,3,1
+423,89,976,647,351,181,0,3,1
+424,89,956,647,352,182,0,3,1
+425,89,937,647,353,183,0,3,1
+426,89,915,648,354,183,0,3,1
+427,89,893,649,355,184,0,3,1
+428,89,872,650,356,185,0,3,1
+429,89,848,653,357,186,0,3,1
+430,89,824,656,358,187,0,3,1
+431,89,801,660,359,188,0,3,1
+432,89,776,661,361,191,0,3,1
+433,89,751,663,363,193,0,3,1
+434,89,726,665,365,195,0,3,1
+435,89,702,667,366,197,0,3,1
+436,89,674,669,368,199,0,3,1
+437,89,646,671,370,201,0,3,1
+438,89,618,673,372,203,0,3,1
+439,89,591,676,374,204,0,3,1
+440,89,563,678,376,206,0,3,1
+441,89,535,680,378,208,0,3,1
+442,89,507,682,380,210,0,3,1
+443,89,480,685,382,212,0,3,1
+444,89,447,687,384,214,0,3,1
+445,89,415,690,385,215,0,3,0.95596
+446,89,382,692,387,217,0,3,0.91495
+447,89,350,695,388,218,0,3,0.88946
+448,89,314,694,390,220,0,3,0.88491
+449,89,278,694,392,222,0,3,0.8855
+450,89,242,694,394,223,0,3,0.88608
+451,89,207,694,395,225,0,3,0.88384
+452,89,174,695,395,226,0,3,0.88131
+453,89,142,697,394,227,0,3,0.87848
+454,89,109,699,395,227,0,3,0.87626
+455,89,77,701,394,228,0,3,0.87342
+456,89,44,703,394,228,0,3,0.87089
+457,89,12,705,394,229,0,3,0.87089
+458,89,-30,709,394,229,0,3,0.92152
+459,89,-72,713,394,230,0,3,0.81519
+460,89,-114,717,394,231,0,3,0.70886
+461,89,-156,721,394,232,0,3,0.60253
+462,89,-200,729,394,232,0,3,0.49114
+463,89,-244,738,394,232,0,3,0.37975
+464,89,-288,747,394,232,0,3,0.26835
+465,89,-339,747,394,232,0,3,0.13924
+98,90,1279,519,7,147,0,10,0.72297
+99,90,1275,519,8,147,0,10,0.73649
+100,90,1272,519,9,148,0,10,0.73826
+101,90,1269,520,10,148,0,10,0.75168
+102,90,1266,520,10,149,0,10,0.76
+103,90,1263,521,11,149,0,10,0.77333
+104,90,1260,521,12,150,0,10,0.77483
+105,90,1257,521,12,151,0,10,0.77632
+106,90,1254,522,13,151,0,10,0.78289
+107,90,1251,522,14,152,0,10,0.78431
+108,90,1248,523,15,152,0,10,0.79085
+109,90,1244,523,15,152,0,10,0.79739
+110,90,1240,523,15,153,0,10,0.7987
+111,90,1236,523,15,154,0,10,0.80645
+112,90,1233,523,15,154,0,10,0.8129
+113,90,1229,523,15,155,0,10,0.8141
+114,90,1225,523,15,156,0,10,0.81529
+115,90,1222,523,14,156,0,10,0.82166
+116,90,1218,523,15,157,0,10,0.82278
+117,90,1214,523,15,158,0,10,0.83019
+118,90,1211,523,14,159,0,10,0.83125
+119,90,1207,523,14,159,0,10,0.8125
+120,90,1203,523,15,160,0,10,0.78882
+121,90,1199,523,15,161,0,10,0.78395
+122,90,1196,523,14,161,0,10,0.79012
+123,90,1192,523,14,162,0,10,0.79141
+124,90,1188,523,15,163,0,10,0.79878
+125,90,1185,523,14,163,0,10,0.80488
+126,90,1181,523,14,164,0,10,0.82949
+127,90,1177,523,14,165,0,10,0.84217
+128,90,1174,523,14,166,0,10,0.86627
+129,90,1170,523,14,167,0,10,0.87857
+130,90,1166,523,14,168,0,10,0.90217
+131,90,1163,523,14,169,0,10,0.93137
+132,90,1159,523,14,170,0,10,0.94308
+133,90,1156,523,14,171,0,10,0.96589
+134,90,1152,523,14,172,0,10,0.98844
+135,90,1149,523,14,173,0,10,0.98851
+136,90,1145,524,14,173,0,10,0.99425
+137,90,1142,524,13,174,0,10,0.99429
+138,90,1138,524,14,175,0,10,0.99432
+139,90,1135,524,13,176,0,10,0.99435
+140,90,1131,524,14,177,0,10,0.99438
+141,90,1128,524,13,178,0,10,0.99441
+142,90,1124,524,14,179,0,10,0.99444
+143,90,1121,524,13,180,0,10,0.98895
+144,90,1117,525,13,180,0,10,0.99448
+145,90,1114,525,13,181,0,10,0.99451
+146,90,1110,525,13,182,0,10,0.99454
+147,90,1107,525,13,183,0,10,0.99457
+148,90,1103,525,13,184,0,10,0.98919
+149,90,1100,525,13,185,0,10,0.98925
+150,90,1096,525,13,186,0,10,0.9893
+151,90,1093,526,13,187,0,10,0.99468
+152,90,1088,526,13,188,0,10,0.99471
+153,90,1083,527,13,188,0,10,0.99471
+154,90,1078,527,13,190,0,10,0.99476
+155,90,1074,528,13,190,0,10,1
+156,90,1069,528,13,192,0,10,1
+157,90,1064,529,13,192,0,10,1
+158,90,1060,530,13,193,0,10,1
+159,90,1056,530,14,194,0,10,1
+160,90,1053,530,14,196,0,10,1
+161,90,1050,530,14,197,0,10,1
+162,90,1047,530,14,199,0,10,1
+163,90,1044,531,14,199,0,10,1
+164,90,1041,531,14,201,0,10,1
+165,90,1038,531,14,203,0,10,1
+166,90,1034,531,15,204,0,10,1
+167,90,1031,532,15,205,0,10,1
+168,90,1028,532,15,206,0,10,1
+169,90,1025,532,15,208,0,10,1
+170,90,1022,532,15,209,0,10,1
+171,90,1019,532,15,211,0,10,1
+172,90,1016,533,15,212,0,10,1
+173,90,1013,533,15,213,0,10,1
+174,90,1009,533,17,215,0,10,0.99537
+175,90,1006,533,17,216,0,10,0.99539
+176,90,1003,534,17,217,0,10,0.99541
+177,90,1000,534,17,219,0,10,0.99091
+178,90,997,534,17,220,0,10,0.98643
+179,90,994,534,17,222,0,10,0.98655
+180,90,991,534,17,223,0,10,0.98214
+181,90,988,535,17,224,0,10,0.98222
+182,90,984,535,18,225,0,10,0.97788
+183,90,981,535,18,227,0,10,0.97368
+184,90,978,535,18,229,0,10,0.96957
+185,90,975,536,18,229,0,10,0.97391
+186,90,972,536,18,231,0,10,0.96983
+187,90,969,536,18,232,0,10,0.96567
+188,90,966,536,18,234,0,10,0.9617
+189,90,963,537,19,235,0,10,0.96186
+190,90,960,537,20,237,0,10,0.95798
+191,90,958,538,20,238,0,10,0.95816
+192,90,956,539,20,239,0,10,0.9625
+193,90,954,540,20,240,0,10,0.96266
+194,90,952,541,20,242,0,10,0.96296
+195,90,950,542,20,243,0,10,0.96311
+196,90,948,543,20,244,0,10,0.96327
+197,90,946,544,20,245,0,10,0.96748
+198,90,944,545,20,246,0,10,0.96761
+199,90,942,546,20,248,0,10,0.96787
+200,90,940,546,20,250,0,10,0.96414
+201,90,938,547,20,251,0,10,0.96429
+202,90,936,548,20,252,0,10,0.96443
+203,90,934,549,20,253,0,10,0.9685
+204,90,932,549,21,255,0,10,0.96484
+205,90,930,550,21,256,0,10,0.96498
+206,90,928,551,21,257,0,10,0.96512
+207,90,926,552,21,258,0,10,0.96525
+208,90,924,553,22,259,0,10,0.96538
+209,90,922,553,22,262,0,10,0.96198
+210,90,921,554,22,265,0,10,0.96241
+211,90,920,555,22,267,0,10,0.96269
+212,90,918,556,23,270,0,10,0.9631
+213,90,917,557,23,272,0,10,0.96337
+214,90,916,558,23,275,0,10,0.96377
+215,90,916,558,23,278,0,10,0.96057
+216,90,916,559,23,280,0,10,0.96085
+217,90,916,559,24,283,0,10,0.95775
+218,90,916,560,24,286,0,10,0.95819
+219,90,916,560,24,289,0,10,0.95862
+220,90,916,561,25,291,0,10,0.9589
+221,90,916,561,25,295,0,10,0.95946
+222,90,916,562,26,297,0,10,0.95973
+223,90,916,562,26,300,0,10,0.96013
+224,90,916,563,26,303,0,10,0.96053
+225,90,916,563,27,306,0,10,0.95765
+226,90,916,564,27,308,0,10,0.96117
+227,90,917,565,27,311,0,10,0.96154
+228,90,918,566,27,313,0,10,0.96497
+229,90,919,567,28,316,0,10,0.9653
+230,90,921,568,27,319,0,10,0.96562
+231,90,922,569,28,321,0,10,0.96584
+232,90,923,570,28,324,0,10,0.96615
+233,90,925,571,28,327,0,10,0.96646
+234,90,926,572,28,330,0,10,0.96677
+235,90,927,573,29,332,0,10,0.96697
+236,90,929,574,28,335,0,10,0.96726
+237,90,930,575,29,338,0,10,0.96755
+238,90,932,576,29,341,0,10,0.96784
+239,90,935,574,30,346,0,10,0.95965
+240,90,938,572,31,352,0,10,0.95184
+241,90,942,571,31,357,0,10,0.94693
+242,90,946,572,32,362,0,10,0.95041
+243,90,950,573,33,368,0,10,0.95393
+244,90,954,575,34,372,0,10,0.9571
+245,90,959,576,34,378,0,10,0.96042
+246,90,963,578,35,383,0,10,0.96354
+247,90,967,579,36,388,0,10,0.96658
+248,90,972,580,36,394,0,10,0.96709
+249,90,976,582,37,398,0,10,0.96992
+250,90,980,583,38,404,0,10,0.9679
+251,90,985,585,39,409,0,10,0.97073
+252,90,992,587,39,414,0,10,0.97108
+253,90,999,589,40,420,0,10,0.9715
+254,90,1006,592,41,424,0,10,0.97412
+255,90,1013,594,42,430,0,10,0.97448
+256,90,1020,596,43,435,0,10,0.97477
+257,90,1027,599,44,440,0,10,0.97732
+258,90,1034,601,45,445,0,10,0.97758
+259,90,1042,604,45,450,0,10,0.98004
+260,90,1052,606,46,452,0,10,0.98013
+261,90,1063,609,46,453,0,10,0.98238
+262,90,1073,611,48,455,0,10,0.98246
+263,90,1084,614,48,457,0,10,0.98472
+264,90,1094,616,49,459,0,10,0.98478
+265,90,1105,619,50,460,0,10,0.98698
+266,90,1115,621,51,462,0,10,0.98056
+267,90,1126,624,52,464,0,10,0.97204
+268,90,1139,626,51,461,0,10,0.97403
+269,90,1152,629,50,458,0,10,0.97603
+270,90,1165,632,49,455,0,10,0.97807
+271,90,1178,635,48,451,0,10,0.98009
+272,90,1191,638,47,448,0,10,0.97773
+273,90,1204,641,46,445,0,10,0.97534
+274,90,1218,644,45,442,0,10,0.97291
+275,90,1234,647,46,439,0,10,0.97045
+276,90,1251,651,46,436,0,10,0.97025
+277,90,1267,655,47,433,0,10,0.96774
+278,90,1284,659,48,430,0,10,0.9652
+279,90,1301,664,49,430,0,10,0.95592
+280,90,1318,669,51,430,0,10,0.94664
+281,90,1335,675,52,430,0,10,0.93735
+282,90,1352,680,54,430,0,10,0.92343
+283,90,1369,685,55,430,0,10,0.90951
+284,90,1386,691,57,430,0,10,0.89559
+285,90,1409,696,59,430,0,10,0.88167
+286,90,1432,701,61,430,0,10,0.86775
+287,90,1455,706,63,430,0,10,0.85383
+288,90,1478,711,65,430,0,10,0.83991
+289,90,1502,716,66,430,0,10,0.82599
+290,90,1531,724,68,430,0,10,0.80974
+291,90,1561,732,69,430,0,10,0.78886
+292,90,1595,744,70,430,0,10,0.76566
+293,90,1629,757,72,429,0,10,0.74419
+294,90,1663,769,74,429,0,10,0.72093
+295,90,1698,782,75,429,0,10,0.6814
+296,90,1742,797,76,429,0,10,0.64186
+297,90,1786,812,78,429,0,10,0.60233
+298,90,1831,827,79,429,0,10,0.56047
+98,91,1270,446,39,83,0,11,1
+99,91,1267,445,39,83,0,11,1
+100,91,1264,445,39,83,0,11,1
+101,91,1261,445,39,83,0,11,1
+102,91,1258,445,39,83,0,11,1
+103,91,1255,445,39,83,0,11,1
+104,91,1252,445,39,83,0,11,1
+105,91,1249,445,39,83,0,11,1
+106,91,1246,445,39,83,0,11,1
+107,91,1243,445,39,83,0,11,1
+108,91,1240,445,39,83,0,11,1
+109,91,1237,445,39,83,0,11,1
+110,91,1235,445,39,83,0,11,1
+111,91,1231,444,39,83,0,11,1
+112,91,1227,444,39,83,0,11,1
+113,91,1224,444,39,83,0,11,1
+114,91,1220,444,39,83,0,11,1
+115,91,1216,444,39,83,0,11,1
+116,91,1213,444,39,83,0,11,1
+117,91,1209,443,39,83,0,11,1
+118,91,1206,443,39,83,0,11,1
+119,91,1202,443,39,83,0,11,1
+120,91,1198,443,39,83,0,11,1
+121,91,1195,443,39,83,0,11,1
+122,91,1191,443,39,83,0,11,1
+123,91,1188,443,39,83,0,11,1
+124,91,1184,442,39,83,0,11,1
+125,91,1180,442,39,83,0,11,1
+126,91,1176,442,39,83,0,11,1
+127,91,1172,442,39,83,0,11,1
+128,91,1168,442,39,83,0,11,1
+129,91,1164,442,39,83,0,11,1
+130,91,1160,442,39,83,0,11,1
+131,91,1156,441,39,83,0,11,1
+132,91,1152,441,39,83,0,11,1
+133,91,1148,441,39,83,0,11,1
+134,91,1144,441,39,83,0,11,1
+135,91,1140,441,39,83,0,11,1
+136,91,1136,441,39,83,0,11,1
+137,91,1132,441,39,83,0,11,1
+138,91,1128,441,39,83,0,11,1
+139,91,1124,440,39,84,0,11,1
+140,91,1120,440,39,84,0,11,1
+141,91,1116,439,40,85,0,11,1
+142,91,1112,439,40,85,0,11,1
+143,91,1108,439,40,86,0,11,1
+144,91,1104,438,41,87,0,11,1
+145,91,1100,438,41,87,0,11,1
+146,91,1096,438,41,87,0,11,1
+147,91,1092,437,42,88,0,11,1
+148,91,1088,437,42,89,0,11,1
+149,91,1084,437,42,89,0,11,1
+150,91,1080,436,43,90,0,11,1
+151,91,1076,436,43,90,0,11,1
+152,91,1072,435,43,91,0,11,1
+153,91,1068,435,44,92,0,11,1
+154,91,1064,435,44,92,0,11,1
+155,91,1060,434,44,93,0,11,1
+156,91,1056,434,45,93,0,11,1
+157,91,1052,434,45,94,0,11,1
+158,91,1048,433,45,95,0,11,1
+159,91,1044,433,46,95,0,11,1
+160,91,1040,433,46,95,0,11,1
+161,91,1036,432,46,96,0,11,1
+162,91,1032,432,47,97,0,11,1
+163,91,1028,431,47,98,0,11,1
+164,91,1024,431,47,98,0,11,1
+165,91,1020,431,48,98,0,11,1
+166,91,1016,430,48,99,0,11,1
+167,91,1012,430,48,100,0,11,1
+168,91,1008,430,49,100,0,11,1
+169,91,1004,429,49,101,0,11,1
+170,91,1000,429,49,101,0,11,1
+171,91,997,429,49,102,0,11,1
+172,91,994,429,50,102,0,11,1
+173,91,992,429,50,103,0,11,1
+174,91,990,429,50,104,0,11,1
+175,91,987,429,51,104,0,11,1
+176,91,985,429,51,105,0,11,1
+177,91,983,429,51,106,0,11,1
+178,91,981,430,51,106,0,11,1
+179,91,977,429,52,107,0,11,1
+180,91,974,429,52,108,0,11,1
+181,91,971,429,53,109,0,11,1
+182,91,968,429,53,110,0,11,1
+183,91,965,429,54,111,0,11,1
+184,91,962,429,54,112,0,11,1
+185,91,958,428,56,113,0,11,1
+186,91,955,428,56,114,0,11,1
+187,91,952,428,57,115,0,11,1
+188,91,949,428,57,116,0,11,1
+189,91,946,428,58,117,0,11,1
+190,91,943,428,58,118,0,11,1
+191,91,940,428,59,119,0,11,1
+192,91,937,427,60,120,0,11,1
+193,91,935,427,60,121,0,11,1
+194,91,932,427,61,122,0,11,1
+195,91,930,427,61,123,0,11,1
+196,91,927,427,62,124,0,11,1
+197,91,925,427,62,124,0,11,1
+198,91,922,427,63,125,0,11,1
+199,91,920,427,63,126,0,11,1
+200,91,917,426,65,128,0,11,1
+201,91,915,426,65,129,0,11,1
+202,91,912,426,66,130,0,11,1
+203,91,910,426,66,130,0,11,1
+204,91,907,426,67,131,0,11,1
+205,91,905,426,67,132,0,11,1
+206,91,902,426,68,133,0,11,1
+207,91,900,426,68,134,0,11,1
+208,91,898,426,69,135,0,11,1
+209,91,897,426,70,136,0,11,1
+210,91,896,426,71,137,0,11,1
+211,91,896,426,71,138,0,11,1
+212,91,895,426,72,139,0,11,1
+213,91,895,426,72,140,0,11,1
+214,91,894,426,73,141,0,11,1
+215,91,893,426,74,142,0,11,1
+216,91,893,426,74,143,0,11,1
+217,91,892,426,75,144,0,11,1
+218,91,892,426,75,145,0,11,1
+219,91,891,425,76,146,0,11,1
+220,91,891,424,76,148,0,11,1
+221,91,890,423,78,149,0,11,1
+222,91,890,422,78,151,0,11,1
+223,91,889,421,79,152,0,11,1
+224,91,889,420,80,154,0,11,1
+225,91,889,419,80,156,0,11,1
+226,91,888,418,81,157,0,11,1
+227,91,888,417,82,159,0,11,1
+228,91,887,416,83,160,0,11,1
+229,91,887,415,83,162,0,11,1
+230,91,887,414,84,164,0,11,1
+231,91,888,412,85,167,0,11,1
+232,91,890,411,86,169,0,11,1
+233,91,892,410,86,171,0,11,1
+234,91,894,408,87,174,0,11,1
+235,91,896,407,87,176,0,11,1
+236,91,897,406,89,178,0,11,1
+237,91,899,405,89,180,0,11,1
+238,91,901,403,90,183,0,11,1
+239,91,903,402,90,185,0,11,1
+240,91,905,401,91,187,0,11,1
+241,91,907,400,92,189,0,11,1
+242,91,911,399,92,190,0,11,1
+243,91,915,398,93,191,0,11,1
+244,91,919,397,94,193,0,11,1
+245,91,923,396,94,194,0,11,1
+246,91,927,395,95,196,0,11,1
+247,91,931,394,96,197,0,11,1
+248,91,936,394,96,198,0,11,1
+249,91,942,392,97,201,0,11,1
+250,91,948,390,98,205,0,11,1
+251,91,954,388,99,208,0,11,1
+252,91,960,386,100,212,0,11,1
+253,91,965,384,104,216,0,11,1
+254,91,971,382,107,220,0,11,1
+255,91,977,380,110,224,0,11,1
+256,91,983,378,114,228,0,11,1
+257,91,989,376,117,232,0,11,1
+258,91,995,374,120,236,0,11,1
+259,91,1001,372,123,240,0,11,1
+260,91,1007,370,127,244,0,11,1
+261,91,1017,368,130,248,0,11,1
+262,91,1028,366,132,252,0,11,1
+263,91,1039,364,134,256,0,11,1
+264,91,1050,362,137,260,0,11,1
+265,91,1061,361,139,263,0,11,1
+266,91,1071,359,142,267,0,11,1
+267,91,1082,357,145,271,0,11,1
+268,91,1093,355,147,275,0,11,1
+269,91,1104,353,149,279,0,11,1
+270,91,1115,352,152,282,0,11,1
+271,91,1129,348,156,289,0,11,1
+272,91,1144,344,159,297,0,11,1
+273,91,1159,340,162,305,0,11,1
+274,91,1173,336,166,313,0,11,1
+275,91,1188,332,169,321,0,11,1
+276,91,1203,329,173,327,0,11,1
+277,91,1218,325,176,335,0,11,1
+278,91,1232,321,180,343,0,11,1
+279,91,1247,317,183,351,0,11,1
+280,91,1262,313,186,359,0,11,1
+281,91,1277,310,190,366,0,11,1
+282,91,1297,302,198,380,0,11,1
+283,91,1317,295,207,393,0,11,1
+284,91,1338,288,214,406,0,11,1
+285,91,1358,281,223,419,0,11,1
+286,91,1379,274,230,432,0,11,1
+287,91,1399,267,239,445,0,11,1
+288,91,1420,260,246,458,0,11,1
+289,91,1440,253,255,471,0,11,1
+290,91,1461,246,263,485,0,11,1
+291,91,1491,235,276,505,0,11,1
+292,91,1522,224,289,526,0,11,1
+293,91,1553,213,302,547,0,11,1
+294,91,1584,203,315,567,0,11,1
+295,91,1625,196,309,591,0,11,1
+296,91,1667,189,303,615,0,11,1
+297,91,1708,182,298,639,0,11,1
+298,91,1750,176,292,663,0,11,1
+299,91,1801,167,292,698,0,11,1
+18,92,1339,398,13,188,0,10,1
+19,92,1341,398,13,188,0,10,1
+20,92,1343,398,13,188,0,10,1
+21,92,1345,398,13,188,0,10,1
+22,92,1347,398,13,188,0,10,1
+23,92,1349,399,13,188,0,10,1
+24,92,1351,399,13,188,0,10,1
+25,92,1353,399,13,188,0,10,1
+26,92,1355,399,13,188,0,10,0.91534
+27,92,1357,399,13,188,0,10,0.71429
+28,92,1359,400,13,188,0,10,0.71958
+29,92,1360,400,13,188,0,10,0.73545
+30,92,1362,401,13,188,0,10,0.74074
+31,92,1364,402,13,188,0,10,0.7672
+32,92,1366,403,13,188,0,10,0.77249
+33,92,1368,404,13,188,0,10,0.70899
+34,92,1370,404,13,188,0,10,0.69312
+35,92,1372,405,13,188,0,10,1
+36,92,1374,406,13,188,0,10,1
+37,92,1376,407,13,188,0,10,1
+38,92,1378,408,13,188,0,10,1
+39,92,1380,411,13,188,0,10,1
+40,92,1383,415,13,188,0,10,1
+41,92,1385,418,13,188,0,10,1
+42,92,1388,422,13,188,0,10,1
+43,92,1391,426,13,188,0,10,1
+44,92,1393,429,13,188,0,10,1
+45,92,1396,433,13,188,0,10,1
+46,92,1398,436,13,188,0,10,1
+47,92,1401,440,13,188,0,10,1
+48,92,1404,444,13,188,0,10,1
+49,92,1406,444,13,188,0,10,1
+50,92,1408,444,13,188,0,10,1
+51,92,1410,444,13,188,0,10,1
+52,92,1412,444,13,188,0,10,1
+53,92,1414,444,13,188,0,10,1
+54,92,1416,444,13,188,0,10,1
+55,92,1418,444,13,188,0,10,1
+56,92,1420,444,13,188,0,10,1
+57,92,1422,444,13,188,0,10,1
+58,92,1424,445,13,188,0,10,1
+59,92,1425,445,13,188,0,10,1
+60,92,1426,445,13,188,0,10,1
+61,92,1428,445,13,188,0,10,1
+62,92,1429,445,13,188,0,10,1
+63,92,1431,445,13,188,0,10,1
+64,92,1432,445,13,188,0,10,1
+65,92,1433,445,13,188,0,10,1
+66,92,1435,445,13,188,0,10,1
+67,92,1436,445,13,188,0,10,1
+68,92,1438,445,13,188,0,10,1
+69,92,1437,445,13,188,0,10,1
+70,92,1437,445,13,188,0,10,1
+71,92,1437,446,13,188,0,10,1
+72,92,1437,446,13,188,0,10,1
+73,92,1437,447,13,188,0,10,1
+74,92,1437,447,13,188,0,10,1
+75,92,1437,448,13,188,0,10,1
+76,92,1435,448,13,188,0,10,1
+77,92,1434,449,13,188,0,10,1
+78,92,1433,449,13,188,0,10,1
+79,92,1432,450,13,188,0,10,1
+80,92,1430,450,13,188,0,10,1
+81,92,1429,451,13,188,0,10,1
+82,92,1428,452,13,188,0,10,1
+83,92,1427,452,13,188,0,10,1
+84,92,1425,453,13,188,0,10,1
+85,92,1424,453,13,188,0,10,1
+86,92,1423,454,13,188,0,10,1
+87,92,1422,455,13,188,0,10,1
+88,92,1419,455,13,188,0,10,1
+89,92,1417,456,13,188,0,10,1
+90,92,1415,456,13,188,0,10,1
+91,92,1413,457,13,188,0,10,1
+92,92,1411,457,13,188,0,10,1
+93,92,1409,458,13,188,0,10,1
+94,92,1407,458,13,188,0,10,1
+95,92,1405,459,13,188,0,10,1
+96,92,1403,459,13,188,0,10,1
+97,92,1401,460,13,188,0,10,1
+98,92,1399,461,13,188,0,10,1
+99,92,1396,461,13,188,0,10,1
+100,92,1393,462,13,188,0,10,1
+101,92,1390,463,13,188,0,10,1
+102,92,1387,464,13,188,0,10,1
+103,92,1385,465,13,188,0,10,1
+104,92,1382,466,13,188,0,10,1
+105,92,1379,467,13,188,0,10,1
+106,92,1376,468,13,188,0,10,1
+107,92,1373,469,13,188,0,10,1
+108,92,1371,469,13,188,0,10,1
+109,92,1368,470,13,188,0,10,1
+110,92,1365,471,13,188,0,10,1
+111,92,1362,472,13,188,0,10,1
+112,92,1359,473,13,188,0,10,1
+113,92,1357,474,13,188,0,10,1
+114,92,1354,475,13,188,0,10,1
+115,92,1351,476,13,188,0,10,1
+116,92,1348,477,13,188,0,10,1
+117,92,1346,478,13,188,0,10,1
+118,92,1342,478,13,188,0,10,1
+119,92,1339,479,13,188,0,10,1
+120,92,1336,480,13,188,0,10,1
+121,92,1333,481,13,188,0,10,1
+122,92,1329,482,13,188,0,10,1
+123,92,1326,483,13,188,0,10,1
+124,92,1323,484,13,188,0,10,1
+125,92,1320,485,13,188,0,10,1
+126,92,1316,486,13,188,0,10,1
+127,92,1313,487,13,188,0,10,1
+128,92,1310,488,13,188,0,10,1
+129,92,1307,489,13,188,0,10,1
+130,92,1303,490,13,188,0,10,1
+131,92,1300,491,13,188,0,10,0.95465
+132,92,1297,492,13,188,0,10,0.94142
+133,92,1294,493,13,188,0,10,0.93953
+134,92,1290,494,13,188,0,10,0.95011
+135,92,1287,495,13,188,0,10,0.95314
+136,92,1284,496,13,188,0,10,0.95616
+137,92,1281,497,13,188,0,10,0.94709
+138,92,1278,498,13,188,0,10,0.94898
+139,92,1275,497,13,190,0,10,0.94951
+140,92,1272,497,14,191,0,10,0.95312
+141,92,1270,496,13,193,0,10,0.94845
+142,92,1267,496,14,194,0,10,0.95214
+143,92,1265,495,14,196,0,10,0.94112
+144,92,1262,495,14,197,0,10,0.95118
+145,92,1259,494,15,199,0,10,0.94375
+146,92,1257,494,14,200,0,10,0.95025
+147,92,1254,493,15,202,0,10,0.94273
+148,92,1252,493,15,204,0,10,0.94329
+149,92,1248,492,15,206,0,10,0.95169
+150,92,1244,492,15,207,0,10,0.95343
+151,92,1240,491,16,209,0,10,0.95518
+152,92,1237,491,15,210,0,10,0.95261
+153,92,1233,490,16,212,0,10,0.95581
+154,92,1229,490,16,213,0,10,0.9365
+155,92,1225,489,17,215,0,10,0.9321
+156,92,1222,489,16,216,0,10,0.9306
+157,92,1218,488,17,218,0,10,0.92237
+158,92,1214,488,17,220,0,10,0.92534
+159,92,1210,487,18,222,0,10,0.92211
+160,92,1207,487,17,223,0,10,0.93254
+161,92,1203,486,18,225,0,10,0.93479
+162,92,1199,486,18,226,0,10,0.94319
+163,92,1195,485,19,228,0,10,0.94498
+164,92,1192,485,18,229,0,10,0.95057
+165,92,1188,484,19,231,0,10,0.94569
+166,92,1184,484,19,232,0,10,0.94292
+167,92,1181,484,19,234,0,10,0.94043
+168,92,1179,483,19,236,0,10,0.95063
+169,92,1177,483,19,237,0,10,1
+170,92,1175,483,20,239,0,10,1
+171,92,1173,483,20,240,0,10,1
+172,92,1171,482,20,242,0,10,1
+173,92,1169,482,21,244,0,10,1
+174,92,1167,482,21,245,0,10,1
+175,92,1165,482,21,246,0,10,1
+176,92,1164,482,21,248,0,10,1
+177,92,1162,482,21,249,0,10,1
+178,92,1160,482,22,251,0,10,1
+179,92,1158,482,22,253,0,10,1
+180,92,1157,483,22,254,0,10,0.94408
+181,92,1155,483,22,256,0,10,0.95145
+182,92,1153,483,23,258,0,10,0.94723
+183,92,1151,483,23,260,0,10,0.94764
+184,92,1150,484,23,261,0,10,0.94132
+185,92,1148,484,24,262,0,10,0.94388
+186,92,1147,484,24,264,0,10,0.9443
+187,92,1146,484,24,266,0,10,0.94472
+188,92,1145,485,24,267,0,10,0.9403
+189,92,1144,483,24,271,0,10,0.93206
+190,92,1143,481,25,276,0,10,0.92974
+191,92,1142,479,25,280,0,10,1
+192,92,1141,478,26,284,0,10,1
+193,92,1140,476,26,288,0,10,1
+194,92,1139,474,27,293,0,10,1
+195,92,1138,472,27,297,0,10,1
+196,92,1137,471,28,301,0,10,1
+197,92,1136,469,28,306,0,10,1
+198,92,1135,467,29,310,0,10,1
+199,92,1134,466,29,314,0,10,1
+200,92,1133,464,30,318,0,10,1
+201,92,1132,462,30,323,0,10,1
+202,92,1131,460,31,327,0,10,1
+203,92,1130,459,31,331,0,10,1
+204,92,1129,457,32,335,0,10,1
+205,92,1128,455,32,340,0,10,1
+206,92,1128,454,32,344,0,10,1
+207,92,1128,452,32,348,0,10,1
+208,92,1128,451,33,352,0,10,1
+209,92,1128,450,33,356,0,10,1
+210,92,1128,448,34,361,0,10,1
+211,92,1128,447,34,365,0,10,1
+212,92,1128,446,35,369,0,10,1
+213,92,1128,444,35,374,0,10,1
+214,92,1128,443,36,378,0,10,1
+215,92,1128,442,36,382,0,10,1
+216,92,1128,440,37,387,0,10,1
+217,92,1128,439,37,391,0,10,1
+218,92,1128,438,38,395,0,10,1
+219,92,1129,437,38,399,0,10,1
+220,92,1131,436,39,403,0,10,1
+221,92,1134,435,39,407,0,10,1
+222,92,1137,434,39,412,0,10,1
+223,92,1139,433,40,416,0,10,1
+224,92,1142,432,40,421,0,10,1
+225,92,1145,432,41,424,0,10,1
+226,92,1147,431,42,428,0,10,1
+227,92,1150,430,42,433,0,10,1
+228,92,1153,429,42,437,0,10,1
+229,92,1155,428,43,442,0,10,1
+230,92,1158,427,43,446,0,10,1
+231,92,1161,427,44,450,0,10,1
+232,92,1166,427,44,454,0,10,1
+233,92,1171,427,45,459,0,10,1
+234,92,1176,427,45,463,0,10,1
+235,92,1181,428,46,467,0,10,1
+236,92,1186,428,46,471,0,10,1
+237,92,1191,428,47,476,0,10,1
+238,92,1197,429,47,480,0,10,1
+239,92,1204,426,47,489,0,10,1
+240,92,1212,424,47,497,0,10,1
+241,92,1219,422,48,505,0,10,1
+242,92,1227,420,47,513,0,10,1
+243,92,1234,417,48,522,0,10,1
+244,92,1242,415,48,530,0,10,1
+245,92,1249,413,48,538,0,10,1
+246,92,1257,411,48,546,0,10,1
+247,92,1265,409,48,554,0,10,1
+248,92,1276,407,48,562,0,10,1
+249,92,1287,405,48,570,0,10,1
+250,92,1298,403,48,579,0,10,1
+251,92,1309,401,48,587,0,10,1
+252,92,1320,399,48,596,0,10,1
+253,92,1331,397,48,604,0,10,1
+254,92,1342,396,49,612,0,10,1
+255,92,1356,394,49,620,0,10,0.87053
+256,92,1371,393,49,628,0,10,0.87644
+257,92,1386,391,49,637,0,10,0.88238
+258,92,1401,390,49,645,0,10,0.88384
+259,92,1413,401,49,645,0,10,0.90043
+260,92,1425,413,49,645,0,10,0.89672
+261,92,1438,425,49,645,0,10,0.90043
+262,92,1454,427,49,645,0,10,0.91146
+263,92,1471,429,49,645,0,10,0.90805
+264,92,1488,431,49,645,0,10,0.90464
+265,92,1505,434,49,645,0,10,0.90898
+266,92,1526,441,49,645,0,10,0.88966
+267,92,1548,448,49,645,0,10,0.90341
+268,92,1570,455,49,645,0,10,0.8961
+269,92,1588,453,49,645,0,10,0.97214
+270,92,1607,452,49,645,0,10,0.97368
+271,92,1626,451,49,645,0,10,0.97523
+272,92,1654,450,49,645,0,10,0.97678
+273,92,1682,449,49,645,0,10,0.97833
+274,92,1710,448,49,645,0,10,0.97988
+275,92,1737,447,49,645,0,10,0.98142
+276,92,1765,447,49,645,0,10,0.98142
+277,92,1792,446,49,645,0,10,0.98297
+278,92,1820,446,49,645,0,10,0.98297
+279,92,1850,449,49,645,0,10,0.97833
+122,93,1364,458,15,203,0,10,1
+123,93,1360,457,15,204,0,10,1
+124,93,1357,457,15,205,0,10,1
+125,93,1354,457,15,206,0,10,1
+126,93,1351,457,15,207,0,10,1
+127,93,1348,457,14,208,0,10,1
+128,93,1344,457,15,208,0,10,1
+129,93,1341,457,15,209,0,10,1
+130,93,1338,457,15,210,0,10,1
+131,93,1335,456,14,212,0,10,0.70423
+132,93,1332,456,14,213,0,10,0.70561
+133,93,1328,456,15,213,0,10,0.70561
+134,93,1325,456,15,214,0,10,0.70698
+135,93,1322,456,14,215,0,10,0.70833
+136,93,1319,456,14,216,0,10,0.70968
+137,93,1316,456,14,217,0,10,0.71101
+138,93,1313,456,14,218,0,10,0.71233
+139,93,1310,456,14,218,0,10,0.71233
+140,93,1307,456,14,219,0,10,0.71364
+141,93,1305,456,14,220,0,10,0.71493
+142,93,1302,456,14,221,0,10,0.71622
+143,93,1299,456,14,222,0,10,0.71749
+144,93,1297,456,14,223,0,10,0.71875
+145,93,1294,456,14,224,0,10,0.72
+146,93,1291,456,14,225,0,10,0.72124
+147,93,1289,456,14,226,0,10,0.72247
+148,93,1286,456,14,227,0,10,0.72368
+149,93,1283,456,14,228,0,10,0.72489
+150,93,1281,456,14,229,0,10,0.73043
+151,93,1278,456,14,230,0,10,0.7316
+152,93,1276,456,14,231,0,10,0.73276
+153,93,1272,455,14,232,0,10,0.73391
+154,93,1269,454,14,233,0,10,0.73504
+155,93,1265,453,14,234,0,10,0.73617
+156,93,1262,452,14,235,0,10,0.74153
+157,93,1258,451,14,236,0,10,0.7384
+158,93,1255,450,14,237,0,10,0.7395
+159,93,1251,449,14,238,0,10,0.74059
+160,93,1248,448,14,239,0,10,0.7375
+161,93,1245,448,14,240,0,10,0.73859
+162,93,1242,447,14,241,0,10,0.73967
+163,93,1239,447,14,242,0,10,0.74074
+164,93,1237,447,13,242,0,10,0.74074
+165,93,1234,446,14,244,0,10,0.74286
+166,93,1231,446,14,245,0,10,0.73171
+167,93,1229,446,13,245,0,10,0.72358
+168,93,1226,446,13,246,0,10,0.7247
+169,93,1223,445,14,248,0,10,1
+170,93,1221,445,13,248,0,10,1
+171,93,1218,445,13,249,0,10,1
+172,93,1216,445,13,250,0,10,1
+173,93,1214,445,13,250,0,10,1
+174,93,1213,445,13,251,0,10,1
+175,93,1211,445,13,252,0,10,1
+176,93,1210,445,13,253,0,10,1
+177,93,1209,445,13,254,0,10,1
+178,93,1207,445,13,255,0,10,1
+179,93,1206,445,13,256,0,10,1
+180,93,1204,445,13,257,0,10,0.72868
+181,93,1203,445,13,258,0,10,0.72973
+182,93,1202,445,13,259,0,10,0.73077
+183,93,1200,444,13,261,0,10,0.73282
+184,93,1199,443,13,264,0,10,0.73585
+185,93,1198,442,13,266,0,10,0.73783
+186,93,1196,442,14,268,0,10,0.73978
+187,93,1195,441,14,270,0,10,0.7417
+188,93,1194,440,14,273,0,10,0.74453
+189,93,1193,440,14,275,0,10,0.74638
+190,93,1191,439,15,277,0,10,0.73741
+191,93,1190,438,15,280,0,10,1
+192,93,1189,437,15,282,0,10,1
+193,93,1187,437,16,284,0,10,1
+194,93,1186,436,16,286,0,10,1
+195,93,1185,435,16,289,0,10,1
+196,93,1184,435,16,291,0,10,1
+197,93,1183,434,17,294,0,10,1
+198,93,1183,434,17,296,0,10,1
+199,93,1183,434,17,298,0,10,1
+200,93,1183,434,17,300,0,10,1
+201,93,1183,433,17,303,0,10,1
+202,93,1183,433,17,305,0,10,1
+203,93,1182,433,18,307,0,10,1
+204,93,1182,433,18,309,0,10,1
+205,93,1182,432,18,312,0,10,1
+206,93,1182,432,18,314,0,10,1
+207,93,1182,432,18,316,0,10,1
+208,93,1182,432,18,318,0,10,1
+209,93,1182,432,18,320,0,10,1
+210,93,1183,431,18,322,0,10,1
+211,93,1184,430,19,324,0,10,1
+212,93,1186,429,18,327,0,10,1
+213,93,1187,428,19,329,0,10,1
+214,93,1189,428,18,331,0,10,1
+215,93,1190,427,19,333,0,10,1
+216,93,1192,426,18,336,0,10,1
+217,93,1193,425,19,338,0,10,1
+218,93,1195,425,19,340,0,10,1
+219,93,1197,425,19,342,0,10,1
+220,93,1199,425,20,345,0,10,1
+221,93,1202,425,19,347,0,10,1
+222,93,1204,426,20,349,0,10,1
+223,93,1206,426,20,182,0,10,1
+336,94,1239,526,18,184,0,10,1
+337,94,1241,525,19,187,0,10,1
+338,94,1244,524,18,190,0,10,0.98953
+339,94,1247,524,18,192,0,10,0.98446
+340,94,1249,526,18,191,0,10,0.98438
+341,94,1251,528,18,191,0,10,0.98438
+342,94,1254,530,18,191,0,10,0.97917
+343,94,1256,532,18,191,0,10,0.97917
+344,94,1259,534,18,191,0,10,0.97917
+345,94,1261,536,18,191,0,10,0.97396
+346,94,1264,538,18,191,0,10,0.97396
+347,94,1266,540,18,191,0,10,0.97396
+348,94,1269,542,18,191,0,10,0.96875
+349,94,1271,544,18,191,0,10,0.96875
+350,94,1274,546,18,191,0,10,0.96354
+351,94,1275,548,18,196,0,10,0.96447
+352,94,1277,550,18,201,0,10,0.96535
+353,94,1279,552,18,206,0,10,0.96618
+354,94,1281,554,17,211,0,10,0.96698
+355,94,1282,557,18,215,0,10,0.96759
+356,94,1284,559,18,220,0,10,0.96833
+357,94,1286,561,17,225,0,10,0.96903
+358,94,1288,563,17,230,0,10,0.9697
+359,94,1289,565,18,235,0,10,0.97034
+360,94,1291,568,18,239,0,10,0.97083
+361,94,1293,570,17,244,0,10,0.97143
+362,94,1295,572,17,249,0,10,0.86311
+363,94,1296,574,18,254,0,10,0.8388
+364,94,1298,576,17,259,0,10,0.82692
+365,94,1300,579,17,263,0,10,0.82197
+366,94,1302,581,17,268,0,10,0.81784
+367,94,1303,583,17,273,0,10,0.82948
+368,94,1305,585,17,278,0,10,0.82597
+369,94,1307,587,17,283,0,10,0.80869
+370,94,1309,590,17,287,0,10,0.80671
+371,94,1308,589,18,290,0,10,0.84409
+372,94,1308,589,18,292,0,10,0.87354
+373,94,1308,589,18,295,0,10,0.90149
+374,94,1307,588,19,298,0,10,0.8903
+375,94,1307,588,19,300,0,10,0.88987
+376,94,1307,588,19,303,0,10,0.8898
+377,94,1307,588,19,305,0,10,0.88938
+378,94,1306,587,20,308,0,10,0.89105
+379,94,1306,587,20,311,0,10,0.88996
+380,94,1306,587,20,313,0,10,0.8896
+381,94,1306,587,20,316,0,10,0.88959
+382,94,1302,586,21,319,0,10,0.92557
+383,94,1299,586,21,321,0,10,0.95822
+384,94,1296,586,21,324,0,10,0.95105
+385,94,1293,586,21,326,0,10,0.9412
+386,94,1290,586,22,329,0,10,0.92398
+387,94,1287,585,22,332,0,10,0.91579
+388,94,1284,585,23,334,0,10,0.90547
+389,94,1281,584,23,337,0,10,0.89867
+390,94,1279,584,23,339,0,10,0.8864
+391,94,1272,586,23,341,0,10,0.91813
+392,94,1266,588,23,344,0,10,0.93696
+393,94,1259,590,24,346,0,10,0.9668
+394,94,1253,592,24,349,0,10,0.94491
+395,94,1245,591,24,352,0,10,0.93598
+396,94,1237,591,25,354,0,10,0.93261
+397,94,1229,590,25,357,0,10,0.93038
+398,94,1221,590,26,359,0,10,0.93374
+399,94,1213,589,26,362,0,10,0.98623
+400,94,1206,589,26,365,0,10,0.98361
+401,94,1192,589,26,365,0,10,0.98361
+402,94,1178,589,26,365,0,10,0.98087
+403,94,1164,589,26,365,0,10,0.97814
+404,94,1150,590,26,365,0,10,0.97814
+405,94,1136,590,26,365,0,10,0.97541
+406,94,1122,590,26,365,0,10,0.97268
+407,94,1108,591,26,365,0,10,0.97268
+408,94,1094,591,26,365,0,10,0.47966
+409,94,1080,591,26,365,0,10,0.51063
+410,94,1067,592,26,365,0,10,0.5936
+411,94,1048,592,26,369,0,10,0.602
+412,94,1029,592,26,373,0,10,0.54427
+413,94,1011,593,25,376,0,10,0.65181
+414,94,992,593,26,380,0,10,0.97638
+415,94,973,593,26,384,0,10,0.97922
+416,94,955,594,25,387,0,10,0.98196
+417,94,936,594,25,391,0,10,0.98469
+418,94,918,595,25,394,0,10,0.98734
+419,94,891,593,25,398,0,10,0.98496
+420,94,865,592,25,401,0,10,0.98259
+421,94,841,594,25,401,0,10,0.89437
+422,94,817,596,25,401,0,10,0.77497
+423,94,793,599,25,401,0,10,0.53157
+424,94,761,600,25,401,0,10,0.5
+425,94,730,601,25,401,0,10,0.50498
+426,94,699,603,25,401,0,10,0.50746
+427,94,668,604,25,401,0,10,0.51741
+428,94,637,606,25,401,0,10,0.52488
+429,94,604,608,25,401,0,10,0.55473
+430,94,571,610,25,401,0,10,0.56468
+431,94,533,613,25,401,0,10,0.58209
+432,94,495,617,25,401,0,10,0.59204
+433,94,458,621,25,401,0,10,0.59357
+434,94,420,624,25,401,0,10,0.56372
+435,94,383,628,25,401,0,10,0.52545
+436,94,345,632,25,401,0,10,0.48259
+437,94,308,636,25,401,0,10,0.49751
+438,94,261,638,25,401,0,10,0.49254
+439,94,214,640,25,401,0,10,0.50995
+440,94,168,643,25,401,0,10,0.52488
+441,94,121,647,25,401,0,10,0.5398
+442,94,74,652,25,401,0,10,0.56716
+330,95,1204,428,52,109,0,11,1
+331,95,1207,424,53,109,0,11,1
+332,95,1210,420,54,110,0,11,1
+333,95,1213,416,55,110,0,11,1
+334,95,1217,412,55,111,0,11,1
+335,95,1218,412,56,111,0,11,1
+336,95,1220,412,56,112,0,11,1
+337,95,1221,412,57,112,0,11,1
+338,95,1223,412,57,113,0,11,1
+339,95,1225,413,58,113,0,11,1
+340,95,1226,414,59,114,0,11,1
+341,95,1228,416,60,114,0,11,1
+342,95,1230,418,60,115,0,11,1
+343,95,1232,420,61,115,0,11,1
+344,95,1234,422,62,115,0,11,1
+345,95,1236,424,62,116,0,11,1
+346,95,1238,426,63,116,0,11,1
+347,95,1240,428,64,116,0,11,1
+348,95,1242,430,64,117,0,11,1
+349,95,1244,432,65,117,0,11,1
+350,95,1246,434,66,118,0,11,1
+351,95,1247,434,66,120,0,11,1
+352,95,1249,435,66,121,0,11,1
+353,95,1251,436,66,122,0,11,1
+354,95,1253,437,66,123,0,11,1
+355,95,1255,438,65,125,0,11,1
+356,95,1256,439,66,126,0,11,1
+357,95,1258,440,66,127,0,11,1
+358,95,1260,441,66,128,0,11,1
+359,95,1262,442,65,129,0,11,1
+360,95,1264,443,65,131,0,11,1
+361,95,1265,443,66,133,0,11,1
+362,95,1267,444,66,134,0,11,1
+363,95,1269,445,65,135,0,11,1
+364,95,1271,446,65,136,0,11,1
+365,95,1273,447,65,138,0,11,1
+366,95,1274,448,66,139,0,11,1
+367,95,1276,449,65,140,0,11,1
+368,95,1278,450,65,141,0,11,1
+369,95,1280,451,65,142,0,11,1
+370,95,1282,452,65,144,0,11,1
+371,95,1281,450,66,146,0,11,1
+372,95,1281,449,67,147,0,11,1
+373,95,1281,448,67,148,0,11,1
+374,95,1280,447,69,149,0,11,1
+375,95,1280,446,70,150,0,11,1
+376,95,1280,444,70,152,0,11,1
+377,95,1280,443,71,153,0,11,1
+378,95,1279,442,73,154,0,11,1
+379,95,1279,441,73,155,0,11,1
+380,95,1279,440,74,156,0,11,1
+381,95,1279,439,75,157,0,11,1
+382,95,1276,437,76,158,0,11,1
+383,95,1274,435,77,160,0,11,1
+384,95,1271,434,78,160,0,11,1
+385,95,1269,432,79,162,0,11,1
+386,95,1267,431,80,163,0,11,1
+387,95,1262,428,81,165,0,11,1
+388,95,1258,426,82,166,0,11,1
+389,95,1254,424,83,167,0,11,1
+390,95,1250,422,84,168,0,11,1
+391,95,1243,421,85,169,0,11,1
+392,95,1237,421,86,170,0,11,1
+393,95,1230,420,87,172,0,11,1
+394,95,1224,420,88,173,0,11,1
+395,95,1215,419,89,174,0,11,1
+396,95,1206,418,90,175,0,11,1
+397,95,1197,417,91,176,0,11,1
+398,95,1188,416,92,177,0,11,1
+399,95,1179,415,93,178,0,11,1
+400,95,1171,414,94,180,0,11,1
+401,95,1157,412,94,182,0,11,1
+402,95,1144,411,94,184,0,11,1
+403,95,1131,409,94,187,0,11,1
+404,95,1118,408,94,189,0,11,1
+405,95,1105,406,94,192,0,11,1
+406,95,1092,405,93,194,0,11,1
+407,95,1079,403,93,197,0,11,1
+408,95,1066,402,93,199,0,11,1
+409,95,1053,400,93,202,0,11,1
+410,95,1040,399,93,204,0,11,1
+411,95,1018,397,95,205,0,11,1
+412,95,996,396,98,206,0,11,1
+413,95,974,394,100,207,0,11,1
+414,95,952,393,103,208,0,11,1
+415,95,930,391,105,209,0,11,1
+416,95,908,390,108,210,0,11,1
+417,95,886,388,110,211,0,11,1
+418,95,864,387,113,212,0,11,1
+419,95,842,385,115,213,0,11,1
+420,95,820,384,118,214,0,11,1
+421,95,794,380,119,218,0,11,1
+422,95,768,377,120,221,0,11,1
+423,95,742,373,121,225,0,11,1
+424,95,716,370,123,229,0,11,1
+425,95,682,369,124,233,0,11,1
+426,95,649,369,125,237,0,11,1
+427,95,616,369,126,240,0,11,1
+428,95,583,369,127,244,0,11,1
+429,95,547,369,128,248,0,11,1
+430,95,512,370,129,252,0,11,1
+431,95,474,370,129,255,0,11,1
+432,95,436,370,129,258,0,11,1
+433,95,398,370,129,262,0,11,1
+434,95,360,371,129,264,0,11,1
+435,95,322,371,129,268,0,11,1
+436,95,284,371,129,271,0,11,1
+437,95,247,372,128,274,0,11,1
+438,95,200,369,128,277,0,11,1
+439,95,153,367,128,280,0,11,1
+440,95,106,365,128,283,0,11,1
+441,95,64,362,127,288,0,11,1
+442,95,22,359,127,293,0,11,1
+270,96,1102,435,19,233,0,10,0.70085
+271,96,1109,435,19,233,0,10,1
+272,96,1116,436,19,233,0,10,1
+273,96,1123,437,19,233,0,10,1
+274,96,1130,438,19,233,0,10,1
+275,96,1138,439,19,233,0,10,1
+276,96,1145,440,19,233,0,10,1
+277,96,1152,441,19,233,0,10,1
+278,96,1159,442,19,233,0,10,1
+279,96,1166,443,19,233,0,10,1
+280,96,1174,444,19,233,0,10,1
+281,96,1181,444,19,233,0,10,1
+282,96,1188,445,19,233,0,10,1
+283,96,1195,445,20,233,0,10,1
+284,96,1202,446,20,233,0,10,1
+285,96,1209,447,21,232,0,10,1
+286,96,1216,447,21,233,0,10,1
+287,96,1223,448,21,232,0,10,1
+288,96,1230,448,22,233,0,10,1
+289,96,1237,449,22,232,0,10,0.92834
+290,96,1244,450,23,232,0,10,0.75966
+291,96,1251,449,23,232,0,10,0.7382
+292,96,1258,449,23,232,0,10,0.74678
+293,96,1265,448,23,232,0,10,0.75536
+294,96,1272,448,23,232,0,10,0.75966
+295,96,1279,447,23,232,0,10,0.73498
+296,96,1286,447,23,232,0,10,0.7103
+297,96,1293,446,23,232,0,10,0.68187
+298,96,1300,446,23,232,0,10,0.65236
+299,96,1307,445,23,232,0,10,0.6309
+300,96,1315,445,23,232,0,10,0.59675
+301,96,1322,446,23,232,0,10,0.57189
+302,96,1329,447,23,232,0,10,0.55794
+303,96,1337,449,23,232,0,10,0.55365
+304,96,1344,450,23,232,0,10,0.55794
+305,96,1352,452,23,232,0,10,0.55794
+306,96,1359,453,23,232,0,10,0.56223
+307,96,1366,454,23,232,0,10,0.56652
+308,96,1374,456,23,232,0,10,0.56223
+309,96,1381,457,23,232,0,10,0.56652
+310,96,1389,459,23,232,0,10,0.56652
+311,96,1395,451,23,236,0,10,0.49367
+312,96,1402,454,23,239,0,10,0.47917
+313,96,1410,457,22,243,0,10,0.46311
+314,96,1417,460,23,247,0,10,0.59543
+315,96,1425,463,22,251,0,10,0.60386
+316,96,1432,467,23,253,0,10,0.62057
+317,96,1440,470,22,257,0,10,0.63313
+318,96,1447,473,23,261,0,10,0.95833
+319,96,1455,476,22,265,0,10,1
+320,96,1463,480,22,268,0,10,1
+321,96,1469,479,23,270,0,10,1
+322,96,1475,479,24,271,0,10,1
+323,96,1482,479,24,273,0,10,1
+324,96,1488,479,25,274,0,10,1
+325,96,1495,479,25,275,0,10,1
+326,96,1501,479,26,277,0,10,1
+327,96,1508,479,26,278,0,10,1
+328,96,1514,479,27,279,0,10,1
+329,96,1521,479,27,281,0,10,1
+330,96,1529,479,27,282,0,10,1
+331,96,1534,479,27,282,0,10,1
+332,96,1540,480,27,282,0,10,1
+333,96,1545,481,27,282,0,10,1
+334,96,1551,481,27,282,0,10,1
+335,96,1557,482,27,282,0,10,1
+336,96,1562,483,27,282,0,10,1
+337,96,1568,483,27,282,0,10,1
+338,96,1573,484,27,282,0,10,1
+339,96,1579,485,27,282,0,10,1
+340,96,1585,486,27,282,0,10,1
+341,96,1590,491,27,282,0,10,1
+342,96,1596,497,27,282,0,10,1
+343,96,1602,502,27,282,0,10,1
+344,96,1608,508,27,282,0,10,1
+345,96,1614,514,27,282,0,10,1
+346,96,1619,519,27,282,0,10,1
+347,96,1625,525,27,282,0,10,1
+348,96,1631,530,27,282,0,10,1
+349,96,1637,536,27,282,0,10,1
+350,96,1643,542,27,282,0,10,1
+351,96,1647,535,28,293,0,10,1
+352,96,1652,529,29,304,0,10,1
+353,96,1657,522,30,315,0,10,1
+354,96,1661,516,32,326,0,10,1
+355,96,1666,510,33,337,0,10,1
+356,96,1671,503,33,348,0,10,1
+357,96,1675,497,35,359,0,10,1
+358,96,1680,490,36,370,0,10,1
+359,96,1685,484,37,381,0,10,1
+360,96,1690,478,38,392,0,10,1
+361,96,1695,483,38,392,0,10,1
+362,96,1701,489,38,392,0,10,1
+363,96,1707,495,38,392,0,10,1
+364,96,1712,501,38,392,0,10,1
+365,96,1718,507,38,392,0,10,1
+366,96,1724,513,38,392,0,10,1
+367,96,1729,519,38,392,0,10,1
+368,96,1735,525,38,392,0,10,1
+369,96,1741,531,38,392,0,10,1
+370,96,1747,537,38,392,0,10,1
+371,96,1752,539,38,392,0,10,1
+372,96,1757,541,38,392,0,10,1
+373,96,1762,543,38,392,0,10,1
+374,96,1767,545,38,392,0,10,1
+375,96,1773,547,38,392,0,10,1
+376,96,1778,549,38,392,0,10,1
+377,96,1783,551,38,392,0,10,1
+378,96,1788,553,38,392,0,10,1
+379,96,1793,555,38,392,0,10,1
+380,96,1799,558,38,392,0,10,1
+381,96,1801,554,38,400,0,10,1
+382,96,1804,551,38,407,0,10,1
+383,96,1807,548,37,414,0,10,1
+384,96,1809,545,38,421,0,10,1
+385,96,1812,542,38,429,0,10,1
+386,96,1815,538,37,437,0,10,1
+387,96,1817,535,38,444,0,10,1
+388,96,1820,532,37,451,0,10,1
+389,96,1823,529,37,458,0,10,1
+390,96,1826,526,37,466,0,10,1
+391,96,1823,521,38,476,0,10,1
+392,96,1821,517,38,486,0,10,1
+393,96,1818,513,39,496,0,10,1
+394,96,1816,509,40,506,0,10,1
+395,96,1812,505,40,516,0,10,1
+396,96,1808,501,41,526,0,10,1
+397,96,1804,497,42,536,0,10,1
+398,96,1800,493,43,546,0,10,1
+399,96,1796,489,44,556,0,10,1
+400,96,1792,485,45,566,0,10,1
+401,96,1789,482,39,570,0,10,1
+402,96,1780,481,39,575,0,10,1
+403,96,1771,480,40,580,0,10,1
+404,96,1762,479,41,585,0,10,1
+405,96,1753,479,42,590,0,10,1
+406,96,1744,478,42,595,0,10,1
+407,96,1735,477,43,600,0,10,1
+408,96,1726,476,44,605,0,10,0.99835
+409,96,1718,476,44,610,0,10,0.99018
+410,96,1702,472,44,615,0,10,0.98864
+411,96,1689,471,43,615,0,10,0.99026
+412,96,1677,471,41,614,0,10,0.99187
+413,96,1665,470,39,614,0,10,0.9935
+414,96,1653,470,37,614,0,10,0.9935
+415,96,1637,469,38,615,0,10,0.99351
+416,96,1622,469,39,615,0,10,0.99351
+417,96,1606,469,41,615,0,10,0.99351
+418,96,1591,469,41,615,0,10,0.99351
+419,96,1575,469,43,615,0,10,0.99351
+420,96,1560,469,44,615,0,10,0.99351
+421,96,1536,468,43,615,0,10,0.99513
+422,96,1512,468,42,615,0,10,0.99513
+423,96,1488,468,42,614,0,10,0.99675
+424,96,1465,468,40,614,0,10,0.99675
+425,96,1441,467,39,615,0,10,0.99675
+426,96,1417,467,39,614,0,10,0.99837
+427,96,1393,467,38,614,0,10,0.99837
+428,96,1370,467,37,614,0,10,0.99837
+429,96,1342,467,40,614,0,10,0.99837
+430,96,1314,467,44,615,0,10,0.99675
+431,96,1283,468,42,615,0,10,0.99513
+432,96,1253,469,40,615,0,10,0.99351
+433,96,1222,470,39,615,0,10,0.99188
+434,96,1192,472,36,614,0,10,0.99024
+435,96,1161,473,35,614,0,10,0.98862
+436,96,1131,474,33,614,0,10,0.98699
+437,96,1101,476,31,614,0,10,0.98374
+438,96,1062,481,36,614,0,10,0.97561
+439,96,1024,486,40,614,0,10,0.96748
+440,96,986,491,44,615,0,10,0.95779
+441,96,947,489,43,615,0,10,0.96104
+442,96,909,488,41,615,0,10,0.96266
+443,96,870,487,40,614,0,10,0.96585
+444,96,832,486,38,614,0,10,0.96748
+445,96,784,484,40,614,0,10,0.97073
+446,96,737,483,41,614,0,10,0.97236
+447,96,690,481,42,615,0,10,0.97403
+448,96,643,480,44,615,0,10,0.97565
+449,96,588,479,44,615,0,10,0.97727
+450,96,534,479,44,615,0,10,0.97727
+451,96,485,434,45,655,0,10,0.98628
+452,96,417,393,46,695,0,10,0.98851
+453,96,350,353,47,734,0,10,0.99048
+454,96,283,313,48,774,0,10,0.99097
+455,96,216,273,49,813,0,10,0.99263
+456,96,149,233,50,853,0,10,0.99297
+457,96,74,231,50,853,0,10,0.99532
+509,97,1884,644,71,94,0,4,0.51389
+510,97,1854,645,73,97,0,4,0.90541
+511,97,1824,646,76,100,0,4,1
+512,97,1794,647,79,103,0,4,1
+513,97,1766,647,79,102,0,4,1
+514,97,1738,647,79,102,0,4,1
+515,97,1711,647,78,102,0,4,1
+516,97,1683,647,78,102,0,4,1
+517,97,1656,647,77,102,0,4,1
+518,97,1628,647,77,102,0,4,1
+519,97,1601,647,77,102,0,4,1
+520,97,1573,647,77,102,0,4,1
+521,97,1546,647,76,102,0,4,1
+522,97,1518,647,76,102,0,4,1
+523,97,1491,647,75,102,0,4,1
+524,97,1463,647,75,102,0,4,1
+525,97,1436,647,75,102,0,4,1
+526,97,1411,648,75,102,0,4,1
+527,97,1387,650,75,102,0,4,1
+528,97,1363,652,74,101,0,4,1
+529,97,1339,654,74,101,0,4,1
+530,97,1315,656,73,100,0,4,1
+531,97,1291,658,73,100,0,4,1
+532,97,1267,660,73,100,0,4,1
+533,97,1245,660,74,101,0,4,0.98588
+534,97,1224,661,75,101,0,4,0.95124
+535,97,1203,661,76,102,0,4,0.9188
+536,97,1181,662,78,102,0,4,0.91053
+537,97,1160,663,79,103,0,4,0.85
+538,97,1139,663,80,104,0,4,0.83974
+539,97,1117,664,81,104,0,4,0.80256
+540,97,1096,664,82,105,0,4,0.81541
+541,97,1075,665,83,106,0,4,0.78304
+542,97,1053,666,85,106,0,4,0.78537
+543,97,1032,666,86,107,0,4,0.82759
+544,97,1011,667,87,107,0,4,0.87963
+545,97,990,668,88,108,0,4,0.79817
+546,97,971,668,87,109,0,4,0.80909
+547,97,952,669,87,110,0,4,0.79279
+548,97,934,670,86,110,0,4,0.77477
+549,97,915,670,86,112,0,4,0.75221
+550,97,897,671,85,112,0,4,0.73204
+551,97,878,672,85,113,0,4,0.7144
+552,97,860,673,84,113,0,4,0.72126
+553,97,841,673,84,115,0,4,0.76897
+554,97,823,674,83,115,0,4,0.81527
+555,97,804,675,83,116,0,4,0.86569
+556,97,786,676,82,117,0,4,0.87135
+557,97,769,676,80,117,0,4,0.8847
+558,97,752,676,79,118,0,4,0.91597
+559,97,735,676,78,119,0,4,0.91646
+560,97,718,676,77,119,0,4,0.95417
+561,97,701,676,76,120,0,4,0.98283
+562,97,684,676,75,121,0,4,1
+563,97,667,678,76,122,0,4,1
+564,97,650,680,77,124,0,4,1
+565,97,633,682,79,125,0,4,1
+566,97,616,684,80,127,0,4,1
+567,97,600,686,81,129,0,4,1
+568,97,583,688,82,130,0,4,1
+569,97,566,690,84,132,0,4,1
+570,97,549,692,85,133,0,4,1
+571,97,533,694,86,135,0,4,1
+572,97,516,696,87,137,0,4,1
+573,97,499,698,89,138,0,4,1
+574,97,482,700,90,140,0,4,1
+575,97,466,702,91,142,0,4,1
+576,97,450,704,92,143,0,4,1
+577,97,435,706,93,145,0,4,1
+578,97,419,709,95,146,0,4,1
+579,97,404,711,96,148,0,4,1
+580,97,389,713,96,149,0,4,1
+581,97,373,716,98,150,0,4,1
+582,97,358,718,99,152,0,4,1
+583,97,343,721,100,153,0,4,1
+584,97,328,724,101,154,0,4,1
+585,97,313,727,102,156,0,4,1
+586,97,299,730,102,158,0,4,1
+587,97,284,733,103,160,0,4,1
+588,97,270,736,103,162,0,4,1
+589,97,255,739,104,164,0,4,1
+590,97,241,743,105,165,0,4,1
+591,97,228,747,107,167,0,4,1
+592,97,216,752,108,169,0,4,1
+593,97,203,756,110,172,0,4,1
+594,97,191,761,111,174,0,4,1
+595,97,179,765,112,177,0,4,1
+596,97,166,770,114,179,0,4,1
+597,97,154,774,115,182,0,4,1
+598,97,142,779,117,184,0,4,1
+599,97,127,784,119,186,0,4,1
+600,97,113,789,120,189,0,4,1
+601,97,99,795,121,191,0,4,1
+602,97,85,800,122,194,0,4,1
+603,97,71,805,124,197,0,4,1
+604,97,57,811,125,199,0,4,1
+605,97,43,816,126,202,0,4,1
+606,97,29,821,127,205,0,4,1
+607,97,15,827,129,207,0,4,1
+608,97,0,840,129,207,0,4,0.99231
+609,97,-16,845,129,207,0,4,0.86923
+610,97,-32,850,129,207,0,4,0.74615
+611,97,-48,855,129,207,0,4,0.62308
+600,98,293,477,66,27,0,11,1
+601,98,287,480,67,25,0,11,1
+602,98,285,479,67,25,0,11,1
+603,98,284,479,67,25,0,11,1
+604,98,278,480,66,30,0,11,1
+605,98,275,478,66,30,0,11,1
+606,98,272,477,67,30,0,11,1
+607,98,270,476,67,29,0,11,1
+608,98,267,474,67,30,0,11,1
+609,98,265,473,67,29,0,11,1
+610,98,262,472,68,29,0,11,1
+611,98,260,471,68,29,0,11,1
+612,98,255,472,67,29,0,11,1
+613,98,255,468,67,29,0,11,1
+614,98,251,469,67,29,0,11,1
+615,98,247,469,67,29,0,11,1
+616,98,244,467,67,29,0,11,1
+617,98,243,467,67,29,0,11,1
+618,98,238,467,67,29,0,11,1
+619,98,232,467,67,29,0,11,1
+620,98,230,467,71,29,0,11,1
+621,98,225,469,71,29,0,11,1
+622,98,221,469,71,29,0,11,1
+623,98,219,474,71,29,0,11,1
+624,98,218,471,71,29,0,11,1
+625,98,217,477,71,29,0,11,1
+626,98,215,474,71,30,0,11,1
+627,98,210,479,71,31,0,11,1
+628,98,208,481,72,32,0,11,1
+629,98,207,484,73,33,0,11,1
+630,98,207,483,74,34,0,11,1
+631,98,208,483,74,35,0,11,1
+632,98,207,485,75,36,0,11,1
+633,98,207,485,75,36,0,11,1
+634,98,207,485,75,37,0,11,1
+635,98,205,483,76,38,0,11,1
+636,98,207,487,75,38,0,11,1
+637,98,208,489,74,37,0,11,1
+638,98,209,492,74,35,0,11,1
+639,98,211,493,74,35,0,11,1
+640,98,213,494,74,36,0,11,1
+641,98,215,496,75,36,0,11,1
+642,98,215,496,75,36,0,11,1
+643,98,216,496,75,37,0,11,1
+644,98,219,496,75,37,0,11,1
+645,98,222,497,75,37,0,11,1
+646,98,223,497,76,37,0,11,1
+647,98,225,498,76,37,0,11,1
+648,98,227,499,77,37,0,11,1
+649,98,232,492,77,37,0,11,1
+650,98,234,495,77,37,0,11,1
+651,98,238,498,77,37,0,11,1
+652,98,241,489,78,36,0,11,1
+653,98,244,491,79,35,0,11,1
+654,98,248,493,79,35,0,11,1
+655,98,253,490,79,35,0,11,1
+656,98,258,500,79,35,0,11,1
+657,98,264,503,79,35,0,11,1
+658,98,270,505,80,36,0,11,1
+659,98,276,517,81,37,0,11,1
+660,98,278,515,81,38,0,11,1
+661,98,280,514,82,38,0,11,1
+662,98,284,512,82,39,0,11,1
+663,98,288,511,83,39,0,11,1
+664,98,293,507,84,40,0,11,1
+665,98,295,505,85,40,0,11,1
+666,98,299,502,86,40,0,11,1
+667,98,304,500,86,40,0,11,1
+668,98,309,498,87,40,0,11,1
+669,98,314,495,87,40,0,11,1
+670,98,319,492,88,41,0,11,1
+671,98,324,490,89,40,0,11,1
+672,98,329,487,90,41,0,11,1
+673,98,334,485,91,41,0,11,1
+674,98,338,476,92,41,0,11,1
+675,98,340,469,93,41,0,11,1
+676,98,345,477,93,41,0,11,1
+131,99,1310,458,58,62,0,11,1
+132,99,1306,460,58,62,0,11,1
+133,99,1303,462,58,62,0,11,1
+134,99,1300,464,58,62,0,11,1
+135,99,1297,463,58,62,0,11,1
+136,99,1294,462,58,62,0,11,1
+137,99,1290,462,58,62,0,11,1
+138,99,1287,462,58,62,0,11,1
+139,99,1284,461,58,62,0,11,1
+140,99,1282,461,58,62,0,11,1
+141,99,1279,461,58,62,0,11,1
+142,99,1277,461,58,62,0,11,1
+143,99,1274,461,58,62,0,11,1
+144,99,1272,461,58,62,0,11,1
+145,99,1269,461,58,62,0,11,1
+146,99,1267,461,58,62,0,11,1
+147,99,1264,461,58,62,0,11,1
+148,99,1262,461,58,62,0,11,1
+149,99,1259,461,58,62,0,11,1
+150,99,1255,461,60,61,0,11,1
+151,99,1252,461,61,61,0,11,1
+152,99,1248,461,61,61,0,11,1
+153,99,1245,460,61,61,0,11,1
+154,99,1239,461,61,61,0,11,1
+155,99,1235,460,62,61,0,11,1
+156,99,1231,460,63,60,0,11,1
+157,99,1227,460,62,61,0,11,1
+158,99,1223,459,62,61,0,11,1
+159,99,1219,458,62,61,0,11,1
+160,99,1217,458,61,62,0,11,1
+161,99,1214,458,61,62,0,11,1
+162,99,1211,458,61,62,0,11,1
+163,99,1208,458,61,62,0,11,1
+164,99,1205,458,61,62,0,11,1
+165,99,1201,457,61,62,0,11,1
+166,99,1197,456,62,65,0,11,1
+167,99,1194,456,62,67,0,11,1
+168,99,1193,454,62,67,0,11,1
+1,100,1860,557,41,111,0,8,1
+2,100,1870,559,40,115,0,8,1
+3,100,1880,547,40,115,0,8,1
+4,100,1890,548,39,120,0,8,0.775
+46,101,1480,496,16,72,0,10,1
+47,101,1482,499,16,72,0,10,1
+48,101,1483,499,15,72,0,10,1
+49,101,1484,499,15,72,0,10,1
+50,101,1485,499,15,72,0,10,1
+51,101,1487,500,15,72,0,10,1
+52,101,1490,501,15,72,0,10,1
+53,101,1494,503,15,72,0,10,1
+54,101,1495,503,15,72,0,10,1
+55,101,1496,504,15,72,0,10,1
+56,101,1497,505,15,72,0,10,1
+57,101,1499,503,15,72,0,10,1
+58,101,1499,501,15,73,0,10,1
+59,101,1500,499,14,74,0,10,1
+60,101,1501,499,14,74,0,10,1
+61,101,1503,494,14,74,0,10,1
+44,102,1562,514,12,60,0,10,0.65952
+45,102,1564,518,11,59,0,10,0.61806
+46,102,1566,518,11,59,0,10,0.51389
+47,102,1569,519,11,59,0,10,0.46667
+48,102,1570,518,11,59,0,10,0.30833
+49,102,1575,522,11,59,0,10,0.33333
+50,102,1577,521,11,59,0,10,0.225
+51,102,1581,525,11,59,0,10,0.17222
+52,102,1582,525,11,59,0,10,0.1
+53,102,1583,525,11,59,0,10,0.055556
+54,102,1584,522,11,59,0,10,0.025
+55,102,1590,520,11,59,0,10,0.034722
+362,103,1303,773,60,129,0,10,1
+363,103,1303,775,60,129,0,10,1
+364,103,1304,779,61,130,0,10,1
+365,103,1306,783,62,132,0,10,1
+366,103,1308,787,63,134,0,10,1
+367,103,1310,792,63,134,0,10,1
+368,103,1312,796,64,136,0,10,1
+369,103,1313,800,66,138,0,10,1
+370,103,1315,805,66,138,0,10,1
+371,103,1317,809,67,140,0,10,1
+372,103,1319,813,68,142,0,10,1
+373,103,1321,818,69,143,0,10,1
+374,103,1320,819,69,144,0,10,1
+375,103,1320,820,69,146,0,10,1
+376,103,1320,822,69,147,0,10,1
+377,103,1320,823,68,149,0,10,1
+378,103,1320,825,68,150,0,10,1
+379,103,1320,826,68,151,0,10,1
+380,103,1320,827,67,153,0,10,1
+381,103,1320,829,67,154,0,10,1
+382,103,1320,830,67,156,0,10,1
+383,103,1320,832,67,157,0,10,1
+384,103,1316,835,68,159,0,10,1
+385,103,1312,838,69,161,0,10,1
+386,103,1308,842,70,162,0,10,1
+387,103,1304,845,71,165,0,10,1
+388,103,1300,849,72,166,0,10,1
+389,103,1296,852,73,168,0,10,1
+390,103,1292,855,74,171,0,10,1
+391,103,1288,859,75,172,0,10,1
+392,103,1284,862,76,174,0,10,1
+393,103,1281,866,77,176,0,10,1
+394,103,1272,870,77,176,0,10,1
+395,103,1263,874,77,176,0,10,1
+396,103,1255,878,77,176,0,10,1
+397,103,1247,880,77,176,0,10,1
+398,103,1240,883,77,176,0,10,1
+1,104,773,530,19,31,0,10,1
+2,104,773,521,19,31,0,10,1
+3,104,774,531,18,30,0,10,1
+4,104,777,529,18,30,0,10,1
+5,104,776,528,18,30,0,10,1
+6,104,777,538,17,32,0,10,1
+7,104,777,532,17,32,0,10,1
+8,104,778,539,17,32,0,10,1
+9,104,777,539,17,32,0,10,1
+10,104,776,538,17,32,0,10,1
+11,104,775,539,17,32,0,10,1
+12,104,775,540,17,32,0,10,1
+13,104,775,527,17,32,0,10,1
+14,104,773,533,17,32,0,10,1
+15,104,774,532,17,32,0,10,1
+16,104,773,532,17,32,0,10,1
+17,104,773,532,17,32,0,10,1
+18,104,772,532,17,32,0,10,1
+19,104,772,532,17,32,0,10,1
+20,104,772,532,17,32,0,10,1
+21,104,772,533,17,32,0,10,1
+22,104,771,534,17,32,0,10,1
+23,104,771,536,17,32,0,10,1
+24,104,771,538,17,32,0,10,0.94444
+25,104,771,540,17,32,0,10,0.11111
+26,104,770,541,17,32,0,10,0
+27,104,770,542,17,32,0,10,0
+28,104,769,545,17,32,0,10,0
+29,104,769,549,17,32,0,10,0
+30,104,769,552,17,32,0,10,0
+31,104,768,560,17,32,0,10,0
+32,104,768,559,17,32,0,10,0
+33,104,768,549,17,32,0,10,0
+34,104,766,550,16,37,0,10,0.058824
+35,104,767,544,16,37,0,10,1
+36,104,765,541,16,37,0,10,1
+37,104,765,539,16,37,0,10,1
+38,104,764,538,16,37,0,10,1
+39,104,765,534,16,37,0,10,1
+40,104,763,533,16,37,0,10,1
+41,104,762,534,16,37,0,10,1
+42,104,762,535,16,37,0,10,1
+43,104,762,536,16,37,0,10,1
+44,104,762,538,16,37,0,10,1
+45,104,763,538,16,37,0,10,1
+46,104,762,539,16,37,0,10,1
+47,104,761,540,16,37,0,10,1
+48,104,760,542,16,37,0,10,1
+49,104,759,544,16,37,0,10,1
+50,104,760,543,16,37,0,10,1
+51,104,759,544,16,37,0,10,1
+52,104,758,544,16,37,0,10,1
+53,104,758,545,16,37,0,10,1
+54,104,756,544,16,37,0,10,1
+55,104,755,544,16,37,0,10,1
+56,104,754,544,16,37,0,10,1
+57,104,754,544,16,37,0,10,1
+58,104,754,541,16,37,0,10,1
+59,104,752,540,16,37,0,10,1
+60,104,750,539,16,37,0,10,1
+61,104,748,538,16,37,0,10,1
+62,104,747,537,16,38,0,10,1
+63,104,747,543,16,38,0,10,1
+64,104,747,536,16,38,0,10,1
+65,104,744,541,16,38,0,10,1
+66,104,743,543,16,38,0,10,1
+67,104,741,538,16,38,0,10,1
+68,104,739,542,16,38,0,10,1
+69,104,736,541,16,38,0,10,1
+70,104,734,540,16,38,0,10,1
+71,104,731,540,16,38,0,10,1
+72,104,729,539,16,38,0,10,1
+73,104,727,539,16,38,0,10,1
+74,104,723,538,16,39,0,10,1
+75,104,720,538,16,39,0,10,1
+76,104,716,538,16,40,0,10,1
+77,104,713,538,16,40,0,10,1
+78,104,709,538,16,41,0,10,1
+79,104,706,538,16,41,0,10,1
+80,104,703,538,16,42,0,10,1
+81,104,698,537,16,42,0,10,1
+82,104,694,537,16,42,0,10,1
+83,104,691,538,16,42,0,10,1
+84,104,686,540,16,42,0,10,1
+85,104,682,541,16,42,0,10,1
+86,104,677,541,16,42,0,10,1
+87,104,674,542,16,42,0,10,1
+88,104,670,543,16,42,0,10,1
+89,104,665,544,16,42,0,10,1
+90,104,660,547,16,42,0,10,1
+91,104,655,551,16,42,0,10,1
+92,104,651,552,16,42,0,10,1
+93,104,646,553,16,42,0,10,1
+94,104,642,557,16,42,0,10,1
+95,104,636,556,16,42,0,10,1
+96,104,633,561,16,42,0,10,1
+97,104,627,558,16,42,0,10,1
+98,104,622,560,15,47,0,10,1
+99,104,617,559,15,47,0,10,1
+100,104,613,560,15,47,0,10,1
+101,104,608,560,15,47,0,10,1
+102,104,602,561,15,47,0,10,1
+103,104,598,561,15,47,0,10,1
+104,104,592,559,15,47,0,10,1
+105,104,587,560,15,47,0,10,1
+106,104,581,559,15,47,0,10,1
+107,104,578,559,15,47,0,10,1
+108,104,572,558,15,47,0,10,1
+109,104,568,558,15,47,0,10,1
+110,104,561,557,15,47,0,10,1
+111,104,555,558,15,47,0,10,1
+112,104,550,559,15,47,0,10,1
+113,104,543,560,15,47,0,10,1
+114,104,537,560,15,47,0,10,1
+1,105,672,510,15,87,0,10,0.60227
+2,105,672,501,15,87,0,10,0.59659
+3,105,669,513,15,87,0,10,0.53977
+4,105,673,510,15,87,0,10,0.79545
+5,105,672,506,15,87,0,10,0.74787
+6,105,673,522,14,80,0,10,0.67407
+7,105,672,515,14,80,0,10,0.77942
+8,105,672,523,14,80,0,10,0.77613
+9,105,672,518,13,84,0,10,0.82605
+10,105,669,518,13,83,0,10,0.81633
+11,105,669,518,12,86,0,10,1
+12,105,668,520,12,86,0,10,1
+13,105,667,504,11,91,0,10,1
+14,105,666,512,11,91,0,10,0.73551
+15,105,665,512,11,91,0,10,1
+16,105,665,512,11,91,0,10,1
+17,105,662,512,11,91,0,10,0.60326
+18,105,660,512,11,91,0,10,0.53714
+19,105,659,512,11,91,0,10,0.6087
+20,105,658,513,11,91,0,10,0.66938
+21,105,658,516,11,91,0,10,0.72826
+22,105,658,520,11,91,0,10,1
+23,105,656,520,11,91,0,10,0.79076
+24,105,653,522,11,91,0,10,0.72101
+25,105,653,523,11,91,0,10,0.79348
+26,105,652,525,11,91,0,10,0.79348
+27,105,649,529,11,91,0,10,0.72101
+28,105,650,532,11,91,0,10,0.8587
+6,106,699,524,15,85,0,10,1
+7,106,700,514,12,84,0,10,1
+8,106,699,518,12,84,0,10,1
+9,106,697,518,12,84,0,10,1
+10,106,696,519,12,84,0,10,1
+11,106,695,520,12,84,0,10,1
+12,106,693,519,11,88,0,10,1
+13,106,693,508,11,87,0,10,1
+14,106,690,513,11,87,0,10,1
+15,106,690,512,11,87,0,10,1
+16,106,690,512,11,87,0,10,1
+17,106,688,515,11,87,0,10,1
+18,106,687,515,11,87,0,10,1
+19,106,687,515,11,87,0,10,1
+20,106,685,516,11,87,0,10,1
+21,106,684,517,11,87,0,10,1
+22,106,683,518,11,87,0,10,1
+23,106,683,519,11,87,0,10,1
+24,106,682,520,10,90,0,10,1
+25,106,681,522,10,92,0,10,1
+26,106,680,522,10,92,0,10,1
+27,106,678,524,10,92,0,10,1
+28,106,677,525,10,92,0,10,1
+29,106,676,531,10,92,0,10,1
+30,106,675,538,10,92,0,10,1
+31,106,674,545,10,92,0,10,1
+32,106,672,540,10,91,0,10,1
+33,106,669,532,10,91,0,10,1
+34,106,669,537,12,90,0,10,1
+35,106,669,528,12,90,0,10,1
+36,106,667,525,12,90,0,10,1
+37,106,665,523,12,90,0,10,1
+38,106,664,521,12,91,0,10,1
+39,106,663,519,12,93,0,10,1
+40,106,662,517,12,94,0,10,1
+41,106,662,515,11,96,0,10,1
+42,106,660,516,11,96,0,10,1
+43,106,659,517,11,96,0,10,1
+44,106,658,520,11,96,0,10,1
+45,106,657,520,11,96,0,10,1
+46,106,657,521,11,96,0,10,1
+47,106,657,522,11,96,0,10,1
+48,106,653,521,10,101,0,10,1
+49,106,653,524,10,101,0,10,1
+50,106,652,523,10,101,0,10,1
+51,106,651,522,10,101,0,10,0.11765
+52,106,649,524,12,100,0,10,1
+53,106,648,526,13,100,0,10,1
+54,106,645,525,13,100,0,10,1
+55,106,643,525,13,100,0,10,1
+56,106,640,524,13,100,0,10,1
+57,106,638,524,13,100,0,10,1
+58,106,635,523,13,100,0,10,1
+59,106,633,523,13,100,0,10,1
+60,106,631,523,13,100,0,10,1
+61,106,629,520,13,102,0,10,1
+62,106,628,518,12,103,0,10,1
+63,106,627,529,13,103,0,10,0.88462
+64,106,624,521,13,102,0,10,0.18585
+65,106,621,528,13,101,0,10,0.11765
+66,106,618,536,13,100,0,10,0.42079
+67,106,617,525,13,99,0,10,0.13
+68,106,613,533,13,99,0,10,0.56
+69,106,607,524,12,107,0,10,0.29487
+70,106,605,524,12,107,0,10,0.21368
+71,106,602,522,12,107,0,10,0.35185
+72,106,597,525,12,107,0,10,0.26353
+73,106,594,523,12,107,0,10,0.34473
+74,106,590,523,12,107,0,10,0.34473
+75,106,586,525,12,107,0,10,0.33048
+76,106,580,524,14,106,0,10,0.31215
+77,106,578,526,14,106,0,10,0.41433
+78,106,572,523,13,111,0,10,0.38776
+79,106,569,522,13,111,0,10,0.51531
+80,106,565,522,13,111,0,10,0.58036
+81,106,560,522,13,111,0,10,0.58036
+82,106,554,524,13,111,0,10,0.51531
+83,106,549,523,13,111,0,10,0.52041
+84,106,541,521,13,111,0,10,0.13393
+85,106,536,528,13,111,0,10,0.3125
+86,106,530,530,13,111,0,10,0.24235
+87,106,525,532,13,111,0,10,0.3125
+88,106,519,534,13,111,0,10,0.3125
+89,106,514,536,13,111,0,10,0.375
+90,106,508,537,13,111,0,10,0.098214
+91,106,502,539,13,111,0,10,0.089286
+92,106,496,541,13,111,0,10,0.089286
+93,106,490,543,12,111,0,10,0.080357
+94,106,484,546,12,110,0,10,0.063063
+95,106,479,549,11,110,0,10,0.045045
+96,106,470,547,13,115,0,10,0.086207
+97,106,465,548,13,115,0,10,0.086207
+98,106,458,549,13,115,0,10,0.094828
+99,106,451,552,13,115,0,10,0.45135
+100,106,444,550,13,115,0,10,0.077586
+101,106,438,549,13,115,0,10,0.086207
+102,106,432,551,13,115,0,10,0.068966
+103,106,423,553,13,115,0,10,0.58621
+104,106,416,552,13,115,0,10,0.59483
+105,106,411,544,11,126,0,10,0.74803
+106,106,407,548,12,122,0,10,0.94059
+107,106,399,547,12,122,0,10,1
+108,106,391,546,12,122,0,10,1
+109,106,385,549,12,122,0,10,1
+110,106,377,548,12,122,0,10,1
+111,106,368,550,12,122,0,10,1
+112,106,363,552,12,122,0,10,1
+113,106,354,552,12,122,0,10,1
+114,106,345,554,12,122,0,10,1
+115,106,338,555,12,122,0,10,1
+116,106,328,552,11,127,0,10,1
+117,106,320,553,10,127,0,10,1
+118,106,312,554,10,127,0,10,1
+119,106,304,555,10,127,0,10,1
+120,106,297,556,9,128,0,10,1
+121,106,289,558,10,125,0,10,1
+122,106,278,559,13,130,0,10,1
+123,106,271,562,10,126,0,10,1
+124,106,261,558,9,131,0,10,1
+125,106,253,559,11,132,0,10,1
+126,106,244,561,14,133,0,10,1
+127,106,239,553,11,144,0,10,1
+128,106,230,557,11,141,0,10,1
+129,106,221,555,11,143,0,10,1
+130,106,211,562,12,141,0,10,1
+131,106,202,540,11,160,0,10,0.21118
+132,106,196,552,10,154,0,10,1
+133,106,183,552,17,153,0,10,0.15584
+134,106,177,556,17,153,0,10,1
+135,106,164,563,16,147,0,10,1
+136,106,156,564,16,147,0,10,1
+137,106,150,565,16,147,0,10,1
+138,106,137,569,16,147,0,10,1
+139,106,128,568,16,147,0,10,1
+140,106,124,568,16,147,0,10,1
+141,106,115,569,16,147,0,10,0.087838
+142,106,106,572,16,147,0,10,1
+143,106,100,569,16,147,0,10,0.081081
+144,106,91,571,16,147,0,10,1
+145,106,81,570,16,147,0,10,0.074324
+146,106,72,574,16,147,0,10,1
+147,106,61,574,16,147,0,10,1
+148,106,53,573,15,151,0,10,1
+149,106,44,576,15,151,0,10,1
+150,106,33,577,15,151,0,10,1
+151,106,23,581,15,151,0,10,1
+152,106,13,582,15,151,0,10,1
+153,106,4,583,15,151,0,10,1
+76,107,1419,541,13,43,0,10,1
+77,107,1418,541,12,46,0,10,1
+78,107,1416,541,16,46,0,10,1
+79,107,1415,541,16,44,0,10,1
+80,107,1414,539,14,46,0,10,1
+81,107,1414,540,15,45,0,10,0.9375
+82,107,1408,540,17,44,0,10,1
+83,107,1407,541,15,44,0,10,1
+84,107,1406,540,16,45,0,10,1
+85,107,1403,542,22,46,0,10,0.91304
+86,107,1401,540,19,48,0,10,1
+87,107,1399,542,16,47,0,10,1
+88,107,1398,542,16,49,0,10,1
+89,107,1396,544,16,49,0,10,1
+90,107,1392,545,16,51,0,10,1
+91,107,1391,545,16,51,0,10,1
+92,107,1387,547,16,48,0,10,1
+93,107,1384,551,16,45,0,10,1
+94,107,1382,550,16,47,0,10,1
+95,107,1380,550,16,47,0,10,1
+96,107,1377,554,16,46,0,10,1
+97,107,1375,554,16,47,0,10,1
+98,107,1373,556,16,47,0,10,1
+99,107,1370,556,16,48,0,10,1
+100,107,1366,556,16,47,0,10,1
+101,107,1364,552,16,52,0,10,1
+102,107,1361,557,16,47,0,10,1
+103,107,1358,557,16,47,0,10,1
+104,107,1356,559,16,45,0,10,1
+105,107,1355,558,16,46,0,10,1
+106,107,1351,561,16,44,0,10,1
+107,107,1347,559,16,45,0,10,1
+108,107,1345,556,16,48,0,10,1
+109,107,1344,559,16,47,0,10,1
+110,107,1339,561,16,45,0,10,1
+111,107,1336,560,16,46,0,10,1
+112,107,1334,559,16,48,0,10,1
+113,107,1329,561,16,46,0,10,1
+114,107,1325,557,16,49,0,10,0.058824
+115,107,1321,562,16,44,0,10,0
+116,107,1319,559,16,47,0,10,1
+117,107,1313,561,16,44,0,10,0
+118,107,1313,561,16,45,0,10,0
+119,107,1308,561,16,45,0,10,1
+120,107,1304,559,16,47,0,10,1
+121,107,1300,559,16,47,0,10,0
+122,107,1297,556,16,50,0,10,0
+123,107,1294,559,16,49,0,10,1
+124,107,1291,559,16,47,0,10,0
+125,107,1287,558,16,48,0,10,0
+126,107,1284,558,15,48,0,10,0
+127,107,1280,559,15,48,0,10,0
+128,107,1277,561,15,47,0,10,0
+129,107,1274,561,15,48,0,10,0
+130,107,1271,561,15,48,0,10,0
+131,107,1266,562,17,51,0,10,1
+132,107,1264,559,16,51,0,10,0.17647
+133,107,1259,559,16,53,0,10,0.29412
+134,107,1255,559,15,54,0,10,0.5625
+135,107,1252,559,18,54,0,10,0.42105
+136,107,1248,558,16,55,0,10,0.47059
+137,107,1245,559,15,55,0,10,0.5
+138,107,1241,559,18,53,0,10,0.52632
+69,108,1478,503,8,89,0,10,1
+70,108,1476,501,12,89,0,10,1
+71,108,1478,502,10,90,0,10,1
+72,108,1478,527,9,66,0,10,1
+144,109,1265,515,13,103,0,10,0.13049
+145,109,1262,514,13,103,0,10,0.06456
+146,109,1258,520,13,103,0,10,0
+147,109,1255,522,13,103,0,10,0
+148,109,1251,516,12,108,0,10,0.076923
+149,109,1249,515,12,108,0,10,0
+150,109,1247,517,12,108,0,10,0
+151,109,1242,516,12,108,0,10,0
+152,109,1237,516,12,108,0,10,0
+153,109,1232,515,12,108,0,10,0.076923
+154,109,1227,515,12,108,0,10,0.15385
+155,109,1224,515,12,108,0,10,0.076923
+156,109,1220,515,12,108,0,10,0.15385
+157,109,1217,516,12,108,0,10,0.076923
+158,109,1214,516,12,108,0,10,0
+159,109,1211,516,12,108,0,10,0
+160,109,1209,516,12,108,0,10,0
+161,109,1205,515,12,109,0,10,0
+162,109,1201,515,12,109,0,10,0
+163,109,1197,514,12,110,0,10,0
+164,109,1194,514,12,111,0,10,0
+165,109,1191,514,12,112,0,10,0
+166,109,1189,514,12,113,0,10,0
+167,109,1186,512,12,114,0,10,0
+168,109,1183,511,12,115,0,10,0
+169,109,1180,509,12,116,0,10,0
+170,109,1178,508,11,117,0,10,0
+171,109,1177,507,11,117,0,10,0
+172,109,1176,507,11,117,0,10,0
+173,109,1175,507,11,117,0,10,0
+174,109,1172,511,11,117,0,10,0
+175,109,1170,507,11,117,0,10,0
+176,109,1169,507,11,117,0,10,0
+350,110,1638,614,24,142,0,10,0.0044755
+351,110,1641,618,24,142,0,10,0.0083916
+352,110,1645,622,24,142,0,10,0.0058741
+353,110,1648,626,23,142,0,10,0.0078671
+354,110,1651,630,22,142,0,10,0.0091213
+355,110,1654,634,22,142,0,10,0.010946
+356,110,1659,632,22,142,0,10,0.23016
+357,110,1668,638,22,142,0,10,0.30435
+358,110,1669,637,22,146,0,10,0.47826
+359,110,1671,637,21,150,0,10,0.63636
+360,110,1676,643,21,150,0,10,0.63636
+361,110,1683,644,21,150,0,10,0.54545
+362,110,1686,651,21,150,0,10,0.68182
+363,110,1689,655,21,152,0,10,0.81818
+364,110,1695,663,22,152,0,10,0.73913
+365,110,1701,661,22,152,0,10,0.73913
+366,110,1703,666,22,152,0,10,0.91304
+367,110,1711,671,22,152,0,10,0.78261
+368,110,1716,679,22,152,0,10,0.82609
+369,110,1722,679,22,152,0,10,0.82609
+370,110,1726,681,22,152,0,10,0.91304
+371,110,1730,683,22,152,0,10,0.95652
+372,110,1733,683,22,152,0,10,1
+373,110,1737,683,22,152,0,10,1
+374,110,1737,680,27,156,0,10,1
+375,110,1738,677,31,161,0,10,1
+376,110,1738,680,31,161,0,10,1
+377,110,1743,680,31,161,0,10,1
+378,110,1749,682,31,161,0,10,1
+379,110,1750,681,31,161,0,10,1
+380,110,1752,681,31,161,0,10,1
+381,110,1753,681,31,161,0,10,1
+382,110,1754,681,31,161,0,10,1
+383,110,1757,678,30,169,0,10,1
+384,110,1759,678,29,172,0,10,1
+385,110,1761,678,29,176,0,10,1
+386,110,1760,677,29,178,0,10,1
+387,110,1760,677,28,179,0,10,1
+388,110,1760,677,28,180,0,10,1
+389,110,1758,679,28,181,0,10,1
+390,110,1756,682,28,182,0,10,1
+391,110,1754,684,28,183,0,10,1
+392,110,1752,687,28,184,0,10,1
+393,110,1747,688,29,185,0,10,1
+394,110,1743,689,29,186,0,10,1
+395,110,1739,690,29,187,0,10,1
+396,110,1735,691,29,188,0,10,1
+397,110,1731,692,29,189,0,10,1
+398,110,1727,693,30,191,0,10,1
+399,110,1720,696,30,191,0,10,1
+400,110,1713,699,30,191,0,10,1
+401,110,1705,698,31,194,0,10,1
+402,110,1698,698,31,197,0,10,1
+403,110,1691,697,31,201,0,10,1
+404,110,1684,697,32,204,0,10,1
+525,111,1367,541,13,140,0,10,1
+526,111,1344,541,12,141,0,10,1
+527,111,1316,536,11,141,0,10,1
+528,111,1294,538,11,142,0,10,1
+529,111,1270,542,11,142,0,10,1
+530,111,1250,540,11,142,0,10,1
+531,111,1224,541,11,142,0,10,1
+532,111,1200,541,13,140,0,10,1
+533,111,1180,542,13,142,0,10,1
+534,111,1154,542,13,142,0,10,1
+535,111,1133,544,15,142,0,10,1
+536,111,1114,537,15,148,0,10,1
+537,111,1092,536,15,148,0,10,1
+538,111,1070,539,15,148,0,10,1
+539,111,1048,540,15,148,0,10,1
+540,111,1027,534,14,155,0,10,1
+541,111,1007,538,14,155,0,10,1
+542,111,988,541,14,155,0,10,1
+543,111,974,533,15,162,0,10,1
+544,111,948,537,15,162,0,10,0.91411
+545,111,929,534,15,162,0,10,1
+546,111,915,534,15,162,0,10,1
+547,111,893,534,17,161,0,10,1
+548,111,878,530,14,165,0,10,1
+549,111,860,530,14,165,0,10,1
+550,111,842,532,15,165,0,10,1
+551,111,823,532,15,165,0,10,1
+552,111,804,523,15,175,0,10,1
+553,111,785,523,15,175,0,10,1
+554,111,768,524,15,175,0,10,1
+561,112,689,408,85,135,0,11,1
+562,112,668,409,95,135,0,11,1
+563,112,654,409,95,135,0,11,1
+564,112,638,410,95,135,0,11,1
+565,112,620,409,95,135,0,11,1
+566,112,605,409,95,135,0,11,1
+567,112,589,410,95,135,0,11,1
+568,112,565,409,95,135,0,11,1
+569,112,554,409,95,135,0,11,1
+570,112,538,408,95,135,0,11,1
+571,112,521,406,95,143,0,11,1
+572,112,507,406,95,143,0,11,1
+573,112,485,403,95,143,0,11,1
+574,112,471,406,95,143,0,11,1
+575,112,453,400,98,154,0,11,1
+576,112,439,403,98,154,0,11,1
+577,112,419,399,98,155,0,11,1
+578,112,406,401,96,155,0,11,1
+579,112,394,397,96,155,0,11,1
+580,112,372,393,105,162,0,11,1
+581,112,362,393,105,162,0,11,1
+582,112,340,391,110,161,0,11,1
+583,112,327,391,110,161,0,11,1
+584,112,310,386,112,165,0,11,1
+585,112,294,388,114,165,0,11,1
+567,113,621,544,16,255,0,10,0.54688
+568,113,602,545,15,264,0,10,0.53962
+569,113,588,545,14,272,0,10,0.53114
+570,113,571,545,14,272,0,10,0.53846
+571,113,556,550,14,272,0,10,0.52747
+572,113,536,547,13,275,0,10,0.52899
+573,113,523,548,15,275,0,10,0.54348
+574,113,504,549,15,285,0,10,0.52448
+575,113,491,551,15,285,0,10,0.51399
+579,114,490,514,24,303,0,10,0.84
+580,114,475,518,24,304,0,10,0.82636
+581,114,463,522,25,304,0,10,0.85259
+582,114,446,522,25,304,0,10,0.81551
+583,114,432,525,25,304,0,10,0.81387
+584,114,421,527,25,305,0,10,0.87041
+585,114,406,523,25,311,0,10,0.8554
+586,114,395,528,25,311,0,10,0.90508
+587,114,381,519,25,325,0,10,0.9075
+588,114,369,523,25,325,0,10,0.93334
+589,114,356,518,24,335,0,10,0.94524
+590,114,345,518,25,335,0,10,0.97459
+591,114,332,523,25,335,0,10,0.94872
+592,114,319,520,24,344,0,10,0.92139
+620,115,265,491,11,135,0,10,0.26471
+621,115,265,495,11,131,0,10,0.27273
+622,115,261,495,15,133,0,10,0.27612
+623,115,256,501,12,135,0,10,0.25
+624,115,255,500,13,130,0,10,0.27481
+625,115,253,501,15,144,0,10,0.24828
+626,115,250,500,13,135,0,10,0.25
+627,115,245,505,12,138,0,10,0.28058
+628,115,247,510,13,135,0,10,0.25
+629,115,246,511,12,141,0,10,0.23239
+630,115,246,512,12,139,0,10,0.24286
+631,115,246,513,12,138,0,10,0.22302
+632,115,246,515,12,142,0,10,0.22378
+633,115,246,516,12,139,0,10,0.22857
+634,115,247,518,12,145,0,10,0.21918
+635,115,247,519,12,139,0,10,0.22143
+636,115,248,520,13,144,0,10,0.2
+637,115,248,521,12,145,0,10,0.20548
+638,115,248,526,14,147,0,10,0.20946
+639,115,250,525,12,144,0,10,0.22069
+640,115,252,526,15,148,0,10,0.26174
+641,115,253,527,15,147,0,10,0.35008
+1,116,806,503,9,51,0,10,0.73462
+2,116,807,492,9,57,0,10,1
+3,116,807,495,10,57,0,10,0.8558
+4,116,808,499,10,56,0,10,1
+5,116,809,502,10,56,0,10,1
+6,116,810,506,10,56,0,10,1
+7,116,810,506,10,56,0,10,1
+8,116,810,506,10,57,0,10,1
+9,116,810,507,10,57,0,10,1
+10,116,810,507,10,57,0,10,1
+11,116,810,507,10,58,0,10,1
+569,117,1872,555,29,196,0,10,0.778
+570,117,1867,556,29,196,0,10,1
+571,117,1862,558,29,196,0,10,1
+572,117,1857,560,29,195,0,10,1
+573,117,1852,561,29,196,0,10,1
+574,117,1847,563,29,196,0,10,1
+575,117,1842,565,29,195,0,10,1
+576,117,1837,566,29,196,0,10,1
+577,117,1832,568,29,195,0,10,1
+578,117,1827,570,29,195,0,10,1
+579,117,1822,572,29,195,0,10,1
+580,117,1819,573,29,195,0,10,1
+581,117,1817,574,29,196,0,10,1
+582,117,1814,576,29,195,0,10,1
+583,117,1812,577,29,196,0,10,1
+584,117,1810,579,29,196,0,10,1
+585,117,1810,579,29,195,0,10,1
+586,117,1810,579,29,195,0,10,1
+587,117,1810,579,29,195,0,10,1
+588,117,1811,579,29,196,0,10,1
+589,117,1814,575,28,201,0,10,1
+590,117,1815,569,28,211,0,10,1
+595,118,1735,563,24,201,0,10,1
+596,118,1741,561,24,202,0,10,1
+597,118,1747,559,24,203,0,10,1
+598,118,1753,558,24,204,0,10,1
+599,118,1759,558,24,205,0,10,1
+600,118,1766,558,24,206,0,10,1
+601,118,1773,558,23,208,0,10,1
+602,118,1780,558,23,209,0,10,1
+603,118,1787,558,22,211,0,10,1
+604,118,1794,558,22,212,0,10,1
+605,118,1801,559,22,213,0,10,1
+606,118,1811,562,22,213,0,10,1
+607,118,1821,565,22,214,0,10,1
+608,118,1831,568,22,215,0,10,0.56944
+609,118,1841,571,22,215,0,10,0.5787
+610,118,1851,574,22,216,0,10,0.60829
+611,118,1861,577,22,217,0,10,0.63761
+612,118,1871,580,22,218,0,10,0.67123
+613,118,1881,581,21,223,0,10,0.70536
+614,118,1891,583,20,227,0,10,0.73684
+707,119,1316,542,31,62,0,10,1
+708,119,1322,541,30,62,0,10,1
+709,119,1328,541,30,62,0,10,1
+710,119,1335,541,28,61,0,10,1
+711,119,1341,541,28,61,0,10,1
+712,119,1348,541,26,61,0,10,1
+713,119,1354,540,26,61,0,10,1
+714,119,1360,540,25,61,0,10,1
+715,119,1367,540,24,60,0,10,1
+716,119,1373,540,23,60,0,10,1
+717,119,1380,540,22,60,0,10,1
+718,119,1385,537,23,59,0,10,1
+719,119,1391,543,23,60,0,10,1
+720,119,1397,545,23,60,0,10,1
+721,119,1403,547,23,60,0,10,1
+722,119,1409,549,23,60,0,10,1
+723,119,1415,552,23,59,0,10,1
+724,119,1421,554,23,59,0,10,1
+725,119,1427,556,23,59,0,10,1
+726,119,1433,558,23,59,0,10,1
+727,119,1440,561,22,59,0,10,1
+728,119,1446,569,22,60,0,10,1
+729,119,1451,569,23,60,0,10,1
+730,119,1457,570,23,60,0,10,1
+731,119,1463,571,23,60,0,10,1
+732,119,1468,570,23,60,0,10,1
+733,119,1473,569,24,61,0,10,1
+734,119,1478,568,24,61,0,10,1
+735,119,1483,567,25,62,0,10,1
+736,119,1488,566,25,62,0,10,1
+737,119,1494,565,25,63,0,10,1
+738,119,1500,568,25,63,0,10,1
+739,119,1506,571,25,64,0,10,1
+740,119,1510,572,25,64,0,10,1
+741,119,1514,573,25,64,0,10,1
+742,119,1518,575,26,64,0,10,1
+743,119,1522,576,26,64,0,10,1
+744,119,1526,577,26,64,0,10,1
+745,119,1531,579,26,64,0,10,1
+746,119,1535,580,25,63,0,10,1
+747,119,1539,581,25,63,0,10,1
+748,119,1542,581,25,63,0,10,1
+749,119,1545,582,25,63,0,10,1
+750,119,1549,583,25,63,0,10,1
+259,120,1258,516,16,93,0,10,0.45745
+260,120,1265,511,17,93,0,10,0.5
+261,120,1270,514,16,93,0,10,0.45745
+262,120,1278,514,16,97,0,10,0.42857
+263,120,1286,510,16,100,0,10,0.45545
+264,120,1294,507,16,108,0,10,0.44954
+265,120,1300,500,13,121,0,10,0.69087
+266,120,1311,505,13,121,0,10,1
+267,120,1319,507,13,121,0,10,1
+268,120,1327,505,13,124,0,10,1
+269,120,1335,503,14,127,0,10,1
+270,120,1343,501,14,130,0,10,1
+271,120,1352,499,14,134,0,10,1
+272,120,1360,498,15,136,0,10,1
+273,120,1368,496,15,139,0,10,1
+274,120,1377,494,15,143,0,10,1
+275,120,1385,492,15,146,0,10,1
+276,120,1393,490,16,149,0,10,1
+277,120,1402,489,16,152,0,10,1
+278,120,1410,490,16,152,0,10,0.82353
+474,121,1181,763,75,509,0,10,0.62353
+475,121,1122,766,75,509,0,10,0.61765
+476,121,1063,770,76,508,0,10,0.611
+477,121,1005,774,76,508,0,10,0.17878
+478,121,938,784,75,510,0,10,0.58121
+479,121,871,794,74,512,0,10,0.55945
+480,121,804,804,74,514,0,10,0.53786
+481,121,727,795,74,516,0,10,0.55319
+504,122,1881,551,15,112,0,10,0.89381
+505,122,1851,552,15,112,0,10,0.90265
+506,122,1822,554,15,112,0,10,0.90265
+507,122,1792,556,15,112,0,10,0.91482
+508,122,1763,557,15,112,0,10,0.89491
+509,122,1734,559,14,112,0,10,0.88555
+510,122,1704,561,15,112,0,10,0.88496
+511,122,1675,562,14,112,0,10,0.9115
+512,122,1645,564,15,112,0,10,0.90265
+513,122,1616,566,14,112,0,10,0.14218
+514,122,1587,568,14,112,0,10,0.14159
+515,122,1558,567,14,112,0,10,0.3056
+675,123,1107,516,22,55,0,10,1
+676,123,1115,517,21,55,0,10,1
+677,123,1123,518,21,55,0,10,1
+678,123,1131,519,21,55,0,10,1
+679,123,1139,521,21,54,0,10,1
+680,123,1150,527,21,55,0,10,1
+681,123,1152,541,22,55,0,10,1
+682,123,1161,541,22,55,0,10,1
+683,123,1168,532,22,55,0,10,1
+684,123,1175,523,22,55,0,10,1
+512,124,1858,559,106,106,0,3,0.56223
+513,124,1828,555,121,110,0,3,0.73704
+514,124,1798,560,134,108,0,3,0.88121
+515,124,1760,558,134,108,0,3,0.95923
+516,124,1732,555,129,109,0,3,0.96224
+517,124,1703,553,128,107,0,3,0.96885
+518,124,1675,551,126,105,0,3,0.97697
+519,124,1645,549,125,104,0,3,0.98201
+520,124,1615,548,124,103,0,3,0.98615
+521,124,1585,547,123,102,0,3,0.99107
+522,124,1558,545,122,102,0,3,0.99708
+523,124,1531,543,121,102,0,3,1
+524,124,1505,542,119,102,0,3,1
+525,124,1480,543,117,97,0,3,1
+526,124,1452,542,117,97,0,3,1
+527,124,1427,542,114,96,0,3,1
+528,124,1403,541,112,95,0,3,1
+529,124,1379,541,110,94,0,3,1
+530,124,1355,542,110,94,0,3,1
+531,124,1332,541,109,93,0,3,1
+532,124,1309,541,108,92,0,3,1
+533,124,1286,540,107,92,0,3,1
+534,124,1263,540,106,91,0,3,1
+535,124,1241,537,105,90,0,3,1
+536,124,1220,538,104,90,0,3,1
+537,124,1199,540,103,89,0,3,1
+538,124,1179,542,102,89,0,3,1
+539,124,1159,537,103,89,0,3,1
+540,124,1136,539,101,88,0,3,1
+541,124,1117,537,101,93,0,3,1
+542,124,1099,541,100,92,0,3,1
+543,124,1079,541,99,91,0,3,1
+544,124,1060,541,98,90,0,3,1
+545,124,1039,539,98,88,0,3,1
+546,124,1023,533,96,90,0,3,1
+547,124,1004,531,96,87,0,3,1
+548,124,985,532,97,85,0,3,1
+549,124,966,530,97,83,0,3,1
+550,124,951,527,93,86,0,3,1
+551,124,936,526,92,86,0,3,1
+552,124,921,525,92,86,0,3,1
+553,124,906,524,92,86,0,3,1
+554,124,892,524,88,85,0,3,1
+555,124,878,524,85,85,0,3,1
+556,124,862,521,85,86,0,3,1
+557,124,847,518,85,87,0,3,1
+558,124,832,515,85,89,0,3,1
+559,124,815,514,86,88,0,3,1
+560,124,799,514,87,86,0,3,1
+561,124,783,513,88,86,0,3,1
+562,124,767,512,90,86,0,3,1
+563,124,751,511,91,86,0,3,1
+564,124,735,510,93,86,0,3,1
+565,124,726,510,90,82,0,3,1
+566,124,713,510,90,81,0,3,1
+567,124,700,511,90,80,0,3,1
+568,124,687,511,90,80,0,3,1
+569,124,675,512,90,79,0,3,1
+570,124,663,511,90,79,0,3,1
+571,124,652,510,89,79,0,3,1
+572,124,640,510,89,78,0,3,1
+573,124,629,509,88,78,0,3,1
+574,124,617,508,88,78,0,3,1
+575,124,606,508,88,78,0,3,1
+576,124,597,509,85,78,0,3,1
+577,124,585,508,86,77,0,3,1
+578,124,574,507,86,77,0,3,1
+579,124,564,506,86,77,0,3,1
+580,124,554,505,86,77,0,3,1
+581,124,544,504,87,78,0,3,1
+582,124,536,502,86,79,0,3,1
+583,124,528,501,86,80,0,3,1
+584,124,520,500,85,80,0,3,1
+585,124,512,499,85,81,0,3,1
+586,124,506,498,84,82,0,3,1
+587,124,496,496,85,81,0,3,1
+588,124,490,497,84,81,0,3,1
+589,124,484,498,84,81,0,3,1
+590,124,478,497,85,81,0,3,1
+591,124,470,496,85,82,0,3,1
+592,124,466,496,82,81,0,3,1
+593,124,462,496,80,81,0,3,1
+594,124,458,498,81,81,0,3,1
+595,124,454,495,80,81,0,3,1
+596,124,447,495,84,81,0,3,1
+597,124,444,495,81,79,0,3,1
+598,124,441,496,82,78,0,3,1
+599,124,439,497,82,77,0,3,1
+600,124,437,498,82,76,0,3,1
+601,124,436,499,82,76,0,3,1
+602,124,431,500,82,77,0,3,1
+603,124,429,499,81,77,0,3,1
+604,124,427,499,81,76,0,3,1
+605,124,425,497,81,76,0,3,1
+606,124,423,495,81,76,0,3,1
+607,124,422,494,80,75,0,3,1
+608,124,421,493,80,75,0,3,1
+609,124,420,492,79,74,0,3,1
+610,124,419,490,78,74,0,3,1
+611,124,418,489,78,74,0,3,1
+612,124,417,488,77,73,0,3,1
+613,124,416,487,77,73,0,3,1
+614,124,415,486,78,74,0,3,1
+615,124,414,485,79,75,0,3,1
+616,124,412,484,78,73,0,3,1
+617,124,410,484,78,74,0,3,1
+618,124,408,485,79,74,0,3,1
+619,124,407,485,79,73,0,3,1
+620,124,407,485,79,73,0,3,1
+621,124,405,484,78,74,0,3,1
+622,124,404,485,78,74,0,3,1
+623,124,404,486,77,74,0,3,1
+624,124,404,484,77,73,0,3,1
+625,124,405,490,77,75,0,3,1
+626,124,403,486,77,74,0,3,1
+627,124,403,491,77,73,0,3,1
+628,124,405,491,77,73,0,3,1
+629,124,407,492,77,73,0,3,1
+630,124,409,491,77,73,0,3,1
+631,124,412,491,76,73,0,3,1
+632,124,415,491,75,73,0,3,1
+633,124,417,491,75,73,0,3,1
+634,124,420,491,74,73,0,3,1
+635,124,423,491,73,73,0,3,1
+636,124,424,491,73,71,0,3,1
+637,124,428,496,73,71,0,3,1
+638,124,432,501,73,70,0,3,1
+639,124,435,500,73,71,0,3,1
+640,124,439,500,73,71,0,3,1
+641,124,442,500,74,71,0,3,1
+642,124,446,500,74,71,0,3,1
+643,124,450,500,74,71,0,3,1
+644,124,455,500,74,71,0,3,1
+645,124,461,500,73,71,0,3,1
+646,124,466,503,72,67,0,3,1
+647,124,471,501,72,66,0,3,1
+648,124,476,499,73,66,0,3,1
+649,124,482,497,73,66,0,3,1
+650,124,488,501,73,66,0,3,1
+651,124,494,500,70,66,0,3,1
+652,124,501,494,69,66,0,3,1
+653,124,507,493,70,67,0,3,1
+654,124,513,492,72,68,0,3,1
+655,124,520,491,73,69,0,3,1
+656,124,527,494,73,70,0,3,1
+657,124,539,499,74,69,0,3,1
+658,124,549,503,69,65,0,3,1
+659,124,555,516,69,66,0,3,1
+660,124,560,511,70,67,0,3,1
+661,124,564,514,69,66,0,3,1
+662,124,573,511,70,69,0,3,1
+663,124,580,508,69,70,0,3,1
+664,124,587,506,68,70,0,3,1
+665,124,594,504,68,71,0,3,1
+666,124,601,503,69,69,0,3,1
+667,124,607,503,69,67,0,3,1
+668,124,613,503,69,65,0,3,1
+669,124,621,501,69,65,0,3,1
+670,124,629,499,69,65,0,3,1
+671,124,636,497,69,65,0,3,1
+672,124,643,495,70,65,0,3,1
+673,124,651,494,70,64,0,3,1
+674,124,661,488,70,62,0,3,1
+675,124,666,483,72,65,0,3,1
+676,124,673,484,71,64,0,3,1
+677,124,681,485,70,63,0,3,1
+678,124,689,487,69,62,0,3,1
+679,124,696,491,68,66,0,3,1
+680,124,706,491,69,65,0,3,1
+681,124,707,514,70,66,0,3,1
+682,124,715,528,66,65,0,3,1
+683,124,720,504,65,65,0,3,1
+684,124,724,497,68,61,0,3,1
+685,124,730,492,69,63,0,3,1
+686,124,737,486,66,62,0,3,1
+687,124,744,483,66,61,0,3,1
+688,124,752,483,67,61,0,3,1
+689,124,758,480,67,62,0,3,1
+690,124,764,478,68,63,0,3,1
+691,124,770,475,69,63,0,3,1
+692,124,778,477,66,61,0,3,1
+693,124,784,475,65,61,0,3,1
+694,124,790,478,67,64,0,3,1
+695,124,796,482,69,66,0,3,1
+696,124,803,481,68,65,0,3,1
+697,124,810,480,68,65,0,3,1
+698,124,816,481,68,64,0,3,1
+699,124,823,482,67,63,0,3,1
+700,124,830,483,66,63,0,3,1
+701,124,837,484,65,62,0,3,1
+702,124,844,485,65,62,0,3,1
+703,124,849,487,65,63,0,3,1
+704,124,855,490,65,64,0,3,1
+705,124,861,489,65,66,0,3,1
+706,124,865,495,65,64,0,3,1
+707,124,869,493,65,64,0,3,1
+708,124,873,495,65,65,0,3,1
+709,124,877,495,64,65,0,3,1
+710,124,884,507,64,61,0,3,1
+711,124,887,504,64,61,0,3,1
+712,124,892,508,64,61,0,3,1
+713,124,894,506,65,62,0,3,1
+714,124,898,508,65,61,0,3,1
+715,124,903,508,64,59,0,3,1
+716,124,905,508,65,57,0,3,1
+717,124,908,509,65,57,0,3,1
+718,124,912,510,64,57,0,3,1
+719,124,916,510,64,57,0,3,1
+720,124,920,510,65,57,0,3,1
+721,124,924,511,66,57,0,3,1
+722,124,926,511,66,58,0,3,1
+723,124,932,513,65,58,0,3,1
+724,124,936,520,66,59,0,3,1
+725,124,941,516,65,61,0,3,1
+726,124,945,516,66,61,0,3,1
+727,124,949,521,64,60,0,3,1
+728,124,955,523,64,61,0,3,1
+729,124,958,523,65,60,0,3,1
+730,124,962,523,65,60,0,3,1
+731,124,965,522,65,60,0,3,1
+732,124,969,521,64,60,0,3,1
+733,124,973,520,63,60,0,3,1
+734,124,977,519,63,61,0,3,1
+735,124,979,518,62,62,0,3,1
+736,124,983,518,62,61,0,3,1
+737,124,985,515,61,62,0,3,1
+738,124,989,516,62,62,0,3,1
+739,124,991,517,62,62,0,3,1
+740,124,994,518,61,62,0,3,1
+741,124,997,520,61,61,0,3,1
+742,124,998,520,61,61,0,3,1
+743,124,1000,521,61,60,0,3,1
+744,124,1001,522,61,59,0,3,1
+745,124,1003,523,61,59,0,3,1
+746,124,1004,522,61,60,0,3,1
+747,124,1005,522,61,60,0,3,1
+748,124,1006,521,61,61,0,3,1
+749,124,1008,521,61,61,0,3,1
+750,124,1013,522,61,62,0,3,1
+53,125,548,552,29,72,1,1,0.48128
+54,125,544,552,29,72,1,1,0.54292
+55,125,541,552,29,72,1,1,0.57306
+56,125,537,552,29,72,1,1,0.67215
+57,125,534,552,29,73,1,1,0.70631
+58,125,530,551,29,73,1,1,0.73784
+59,125,527,551,29,73,1,1,0.73784
+60,125,523,550,29,74,1,1,0.77289
+61,125,520,550,29,74,1,1,0.772
+62,125,519,543,29,75,1,1,0.70351
+63,125,514,560,29,75,1,1,0.8
+64,125,511,546,29,75,1,1,0.77281
+65,125,508,552,29,76,1,1,0.74242
+66,125,506,559,29,76,1,1,0.74026
+67,125,499,550,29,76,1,1,0.86667
+68,125,495,557,29,76,1,1,0.86667
+69,125,491,554,29,76,1,1,0.9
+70,125,486,555,29,76,1,1,0.86667
+71,125,481,556,29,76,1,1,0.93333
+72,125,476,557,29,77,1,1,0.86667
+73,125,471,558,29,76,1,1,0.9
+74,125,467,559,29,76,1,1,1
+75,125,462,560,29,75,1,1,1
+76,125,458,562,29,74,1,1,0.93333
+77,125,451,559,29,77,1,1,1
+78,125,444,557,29,79,1,1,1
+79,125,437,555,30,82,1,1,1
+80,125,430,556,30,82,1,1,1
+81,125,424,557,30,83,1,1,1
+82,125,417,558,30,84,1,1,1
+83,125,411,559,30,85,1,1,1
+84,125,404,560,30,86,1,1,1
+85,125,398,562,30,86,1,1,1
+86,125,390,564,30,86,1,1,1
+87,125,383,566,30,87,1,1,1
+88,125,376,568,30,88,1,1,0.96774
+89,125,369,570,30,89,1,1,0.96774
+90,125,362,572,30,90,1,1,0.93548
+91,125,355,574,30,91,1,1,0.93548
+92,125,348,577,30,91,1,1,0.93548
+93,125,339,577,30,92,1,1,1
+94,125,330,578,31,92,1,1,1
+95,125,322,579,30,93,1,1,1
+96,125,313,579,31,94,1,1,1
+97,125,305,580,30,95,1,1,1
+98,125,296,581,31,95,1,1,1
+99,125,288,582,30,95,1,1,1
+100,125,279,582,31,97,1,1,1
+101,125,271,583,30,97,1,1,1
+102,125,262,584,31,98,1,1,1
+103,125,254,585,30,98,1,1,1
+104,125,245,585,31,99,1,1,1
+105,125,237,586,30,100,1,1,1
+106,125,228,587,31,100,1,1,1
+107,125,220,588,31,101,1,1,0.96906
+108,125,210,589,31,101,1,1,1
+109,125,200,590,31,102,1,1,1
+110,125,190,591,31,103,1,1,1
+111,125,181,592,31,104,1,1,0.96875
+112,125,171,593,31,104,1,1,0.96875
+113,125,161,594,31,105,1,1,0.90625
+114,125,151,595,31,106,1,1,0.84375
+115,125,142,597,31,106,1,1,0.75
+116,125,131,598,31,106,1,1,0.71875
+117,125,120,599,31,107,1,1,0.6875
+118,125,110,600,31,107,1,1,0.65625
+119,125,100,601,31,108,1,1,0.59375
+120,125,90,602,31,109,1,1,0.5625
+121,125,78,604,31,110,1,1,0.59375
+122,125,67,606,31,111,1,1,0.59375
+123,125,55,608,32,112,1,1,0.57576
+124,125,44,611,32,112,1,1,0.57576
+125,125,32,613,33,113,1,1,0.58824
+126,125,21,615,33,114,1,1,0.58824
+127,125,9,617,34,115,1,1,0.57143
+179,126,1175,531,26,66,1,1,0.023217
+180,126,1172,531,26,66,1,1,0.010503
+181,126,1169,531,26,66,1,1,0.0099502
+182,126,1166,531,26,67,1,1,0.012527
+183,126,1164,531,26,67,1,1,0.021786
+184,126,1161,531,26,68,1,1,0.032206
+185,126,1158,531,26,68,1,1,0.034353
+186,126,1156,532,26,68,1,1,0.05314
+187,126,1153,533,26,67,1,1,0.019063
+188,126,1150,534,26,66,1,1,0.01382
+189,126,1147,535,26,66,1,1,0.0088447
+190,126,1144,536,26,65,1,1,0.0044893
+191,126,1141,537,26,65,1,1,0
+192,126,1138,538,26,64,1,1,0
+193,126,1135,540,27,63,1,1,0
+194,126,1132,540,27,63,1,1,0
+195,126,1129,540,27,63,1,1,0
+196,126,1126,540,27,64,1,1,0
+197,126,1124,541,27,63,1,1,0
+198,126,1121,541,27,63,1,1,0
+199,126,1118,541,27,64,1,1,0
+200,126,1115,541,27,64,1,1,0
+201,126,1113,542,27,64,1,1,0
+202,126,1111,542,28,65,1,1,0
+203,126,1109,542,30,67,1,1,0
+204,126,1106,542,28,68,1,1,0
+205,126,1103,542,27,69,1,1,0.035714
+206,126,1101,543,25,69,1,1,0.076923
+207,126,1098,543,26,69,1,1,0.074074
+208,126,1096,543,26,70,1,1,0.074074
+209,126,1094,543,26,71,1,1,0
+210,126,1092,544,26,71,1,1,0.89558
+211,126,1089,544,27,71,1,1,0.86111
+212,126,1087,545,28,70,1,1,0.042739
+213,126,1084,545,29,71,1,1,0.6
+214,126,1082,546,29,71,1,1,0.60833
+215,126,1079,546,30,72,1,1,0.62042
+216,126,1077,547,30,73,1,1,0.6347
+217,126,1075,547,29,73,1,1,0.66577
+218,126,1074,547,28,73,1,1,0.67474
+219,126,1072,548,28,72,1,1,0.71752
+220,126,1071,548,27,72,1,1,0.71624
+221,126,1070,549,26,72,1,1,0.79401
+222,126,1068,548,28,73,1,1,0.83038
+223,126,1066,548,30,74,1,1,0.86753
+224,126,1064,548,32,74,1,1,0.87556
+225,126,1062,548,35,75,1,1,0.31871
+226,126,1056,547,39,81,1,1,0.92957
+227,126,1059,547,36,80,1,1,0.95996
+228,126,1062,547,34,80,1,1,0.96825
+229,126,1065,547,32,80,1,1,0.9783
+230,126,1064,547,33,79,1,1,0.98971
+231,126,1063,547,34,79,1,1,0.74286
+232,126,1063,547,35,79,1,1,0.72222
+233,126,1062,547,36,79,1,1,0.72973
+234,126,1062,547,37,79,1,1,0.73684
+235,126,1063,546,36,80,1,1,0.72973
+236,126,1064,546,35,81,1,1,0.75
+237,126,1065,546,34,81,1,1,0.59233
+238,126,1066,546,33,82,1,1,0.62792
+239,126,1068,546,31,83,1,1,0.38095
+240,126,1069,545,31,84,1,1,0.37647
+241,126,1070,544,32,85,1,1,0.37209
+242,126,1072,544,31,85,1,1,0.37209
+243,126,1073,543,32,86,1,1,0.36782
+244,126,1075,543,32,86,1,1,0.36782
+245,126,1077,543,32,86,1,1,0.34483
+246,126,1080,543,32,87,1,1,0.32955
+247,126,1082,543,33,87,1,1,0.31818
+248,126,1085,543,33,88,1,1,0.30337
+249,126,1087,543,34,88,1,1,0.30337
+250,126,1090,543,34,89,1,1,0.28889
+251,126,1093,543,34,90,1,1,0.27473
+252,126,1097,543,34,90,1,1,0.27473
+253,126,1101,543,34,91,1,1,0.26087
+254,126,1105,543,35,92,1,1,0.23656
+255,126,1109,543,35,93,1,1,0.2234
+256,126,1113,543,35,94,1,1,0.2
+257,126,1117,544,36,94,1,1,0.55619
+258,126,1121,544,37,94,1,1,0.91247
+259,126,1126,544,37,95,1,1,1
+260,126,1132,544,37,96,1,1,0.94221
+261,126,1138,545,37,96,1,1,0.80467
+262,126,1144,546,38,97,1,1,0.6753
+263,126,1149,547,39,97,1,1,0.52806
+264,126,1155,548,39,98,1,1,0.375
+265,126,1161,549,39,99,1,1,0.24
+266,126,1167,551,39,99,1,1,0.24
+267,126,1173,553,40,100,1,1,0.2113
+268,126,1179,551,40,101,1,1,0.15256
+269,126,1185,549,41,102,1,1,0.10541
+270,126,1192,548,41,102,1,1,0.070273
+271,126,1196,549,42,103,1,1,0.04025
+272,126,1201,551,42,103,1,1,0.014535
+273,126,1204,552,43,103,1,1,0
+274,126,1208,553,43,104,1,1,0.017316
+275,126,1212,554,43,104,1,1,0.02381
+276,126,1216,555,43,105,1,1,0.030017
+277,126,1220,556,43,105,1,1,0.009434
+278,126,1224,557,43,106,1,1,0.18182
+279,126,1228,558,44,107,1,1,0.42222
+280,126,1232,558,44,107,1,1,0.66667
+281,126,1236,558,45,108,1,1,0.8913
+282,126,1241,558,45,109,1,1,1
+283,126,1246,557,45,110,1,1,1
+284,126,1251,557,46,110,1,1,1
+285,126,1257,557,46,111,1,1,1
+286,126,1262,557,46,112,1,1,1
+287,126,1263,556,46,112,1,1,1
+288,126,1269,556,42,113,1,1,1
+289,126,1275,556,39,114,1,1,1
+290,126,1281,556,36,115,1,1,1
+291,126,1284,557,46,117,1,1,0.97079
+292,126,1288,559,47,117,1,1,0.83792
+293,126,1292,560,47,118,1,1,0.67262
+294,126,1296,562,47,119,1,1,0.525
+295,126,1300,564,48,119,1,1,0.51667
+296,126,1304,566,48,120,1,1,0.5124
+297,126,1308,568,49,120,1,1,0.4876
+298,126,1312,569,49,122,1,1,0.47154
+299,126,1316,571,50,122,1,1,0.45528
+300,126,1320,573,50,123,1,1,0.42742
+301,126,1324,575,51,123,1,1,0.41129
+302,126,1329,577,50,124,1,1,0.4
+303,126,1333,578,50,126,1,1,0.40157
+304,126,1337,580,51,126,1,1,0.40157
+305,126,1341,582,51,127,1,1,0.39844
+306,126,1345,584,52,127,1,1,0.375
+307,126,1349,586,52,128,1,1,0.35659
+308,126,1353,587,53,129,1,1,0.34615
+309,126,1357,589,53,130,1,1,0.32061
+310,126,1361,591,54,130,1,1,0.30534
+311,126,1365,593,54,131,1,1,0.28788
+312,126,1370,595,54,132,1,1,0.27068
+313,126,1374,595,54,133,1,1,0.26866
+314,126,1378,596,54,133,1,1,0.26119
+315,126,1382,597,54,134,1,1,0.46438
+316,126,1386,599,54,134,1,1,0.72148
+317,126,1390,602,54,134,1,1,1
+318,126,1394,604,54,135,1,1,1
+319,126,1398,607,54,134,1,1,1
+320,126,1402,609,54,135,1,1,1
+321,126,1406,612,54,135,1,1,1
+322,126,1406,610,56,138,1,1,1
+323,126,1406,608,58,141,1,1,1
+324,126,1406,606,61,144,1,1,1
+325,126,1413,606,63,147,1,1,1
+326,126,1420,606,65,150,1,1,1
+327,126,1428,607,55,149,1,1,1
+328,126,1428,605,55,151,1,1,1
+329,126,1429,604,54,152,1,1,1
+330,126,1430,602,53,154,1,1,1
+331,126,1431,601,52,155,1,1,1
+332,126,1427,599,59,158,1,1,1
+333,126,1423,597,66,161,1,1,1
+334,126,1420,596,72,163,1,1,1
+335,126,1422,595,73,162,1,1,1
+336,126,1426,595,73,165,1,1,1
+337,126,1431,596,70,170,1,1,1
+338,126,1436,597,69,172,1,1,1
+339,126,1441,599,69,173,1,1,1
+340,126,1442,602,70,173,1,1,1
+341,126,1443,605,72,173,1,1,1
+342,126,1445,609,73,173,1,1,1
+343,126,1443,612,70,177,1,1,1
+344,126,1443,619,68,178,1,1,1
+345,126,1444,626,65,179,1,1,1
+346,126,1448,629,57,181,1,1,1
+347,126,1448,633,60,185,1,1,1
+348,126,1449,637,61,186,1,1,1
+349,126,1449,640,65,186,1,1,1
+350,126,1444,643,69,189,1,1,1
+351,126,1445,646,70,191,1,1,1
+352,126,1446,650,72,192,1,1,1
+353,126,1447,654,73,193,1,1,1
+354,126,1448,658,75,194,1,1,1
+355,126,1449,662,76,195,1,1,1
+356,126,1451,666,77,196,1,1,1
+357,126,1451,669,71,199,1,1,1
+358,126,1452,671,69,201,1,1,1
+359,126,1453,674,68,203,1,1,1
+360,126,1454,677,66,205,1,1,1
+361,126,1455,680,65,207,1,1,1
+362,126,1453,685,70,209,1,1,1
+363,126,1451,690,76,211,1,1,1
+364,126,1450,695,81,213,1,1,1
+365,126,1451,700,81,215,1,1,1
+366,126,1453,706,81,216,1,1,1
+367,126,1454,712,81,217,1,1,1
+368,126,1456,718,81,219,1,1,1
+369,126,1457,720,83,224,1,1,1
+370,126,1458,723,86,228,1,1,1
+371,126,1456,721,86,233,1,1,1
+372,126,1455,720,85,237,1,1,1
+373,126,1454,719,84,241,1,1,1
+374,126,1454,720,84,244,1,1,1
+375,126,1454,722,85,247,1,1,1
+376,126,1454,723,86,250,1,1,1
+377,126,1455,725,86,253,1,1,1
+378,126,1453,726,87,256,1,1,1
+379,126,1452,728,87,259,1,1,1
+380,126,1451,729,87,263,1,1,1
+381,126,1449,731,88,265,1,1,1
+382,126,1448,732,88,269,1,1,1
+383,126,1447,734,88,272,1,1,1
+384,126,1442,736,89,275,1,1,1
+385,126,1438,739,90,278,1,1,1
+386,126,1433,741,91,281,1,1,1
+387,126,1429,744,92,284,1,1,1
+388,126,1423,745,93,287,1,1,1
+389,126,1417,747,94,290,1,1,1
+390,126,1412,749,95,293,1,1,1
+391,126,1403,754,96,296,1,1,1
+392,126,1397,756,97,299,1,1,1
+393,126,1391,758,98,303,1,1,1
+394,126,1385,760,99,307,1,1,1
+395,126,1380,763,99,310,1,1,1
+396,126,1368,765,100,314,1,1,1
+397,126,1356,768,101,317,1,1,0.98428
+398,126,1348,770,103,314,1,1,0.9873
+399,126,1341,773,104,310,1,1,0.99035
+400,126,1330,775,109,312,1,1,0.97764
+401,126,1319,777,114,315,1,1,0.96203
+402,126,1309,781,115,318,1,1,0.94044
+403,126,1299,785,116,321,1,1,0.91925
+404,126,1285,787,117,324,1,1,0.90462
+405,126,1271,790,118,326,1,1,0.88991
+406,126,1257,792,120,330,1,1,0.87311
+407,126,1243,795,121,332,1,1,0.85886
+408,126,1230,798,122,335,1,1,0.84226
+409,126,1212,802,124,337,1,1,0.82544
+410,126,1195,806,125,340,1,1,0.80645
+411,126,1178,810,126,343,1,1,0.78779
+412,126,1155,813,127,346,1,1,0.77233
+413,126,1132,816,128,349,1,1,0.75714
+414,126,1110,820,129,352,1,1,0.73938
+415,126,1085,823,130,355,1,1,0.72472
+416,126,1060,826,131,358,1,1,0.71031
+417,126,1035,830,133,361,1,1,0.69337
+418,126,1013,831,131,365,1,1,0.68306
+419,126,991,833,129,368,1,1,0.67209
+420,126,963,841,119,372,1,1,0.64343
+421,126,939,844,126,376,1,1,0.62865
+422,126,907,848,127,381,1,1,0.60995
+423,126,875,852,128,386,1,1,0.59173
+424,126,843,857,129,390,1,1,0.57289
+425,126,808,865,130,395,1,1,0.54545
+426,126,773,874,131,399,1,1,0.5175
+427,126,738,883,132,403,1,1,0.4901
+428,126,703,892,134,408,1,1,0.4621
+429,126,663,900,136,413,1,1,0.4372
+430,126,624,909,137,417,1,1,0.41148
+431,126,585,918,138,422,1,1,0.38534
+432,126,538,929,138,413,1,1,0.36715
+433,126,491,940,139,404,1,1,0.34815
+434,126,444,951,140,395,1,1,0.32828
+435,126,397,962,141,386,1,1,0.30749
+436,126,351,973,141,378,1,1,0.28496
+437,126,292,984,140,367,1,1,0.26359
+438,126,234,995,138,356,1,1,0.2409
+439,126,176,1006,136,345,1,1,0.21676
+440,126,118,1018,135,333,1,1,0.18862
+441,126,98,1025,98,326,1,1,0.17125
+442,126,42,1032,92,318,1,1,0.15361
+284,127,1280,546,37,108,1,1,0
+285,127,1287,550,38,106,1,1,0
+286,127,1293,546,35,110,1,1,0
+287,127,1301,549,34,107,1,1,0.0092593
+288,127,1308,545,35,113,1,1,0.0026803
+296,128,1366,548,42,119,1,1,0.023256
+297,128,1373,549,43,119,1,1,0.090909
+298,128,1380,551,44,118,1,1,0.099346
+299,128,1388,553,44,118,1,1,0.23492
+300,128,1392,557,45,116,1,1,0.58974
+301,128,1399,557,45,118,1,1,0.57983
+302,128,1406,558,46,120,1,1,0.57025
+303,128,1414,559,46,122,1,1,0.56911
+304,128,1420,561,46,123,1,1,0.56452
+305,128,1426,564,47,124,1,1,0.552
+306,128,1432,566,48,125,1,1,0.52381
+307,128,1438,569,48,126,1,1,0.49606
+308,128,1444,571,49,127,1,1,0.47656
+309,128,1451,574,49,128,1,1,0.44186
+310,128,1457,575,49,129,1,1,0.43077
+311,128,1463,576,50,130,1,1,0.41985
+312,128,1469,577,51,131,1,1,0.40909
+313,128,1475,578,52,132,1,1,0.3985
+314,128,1482,579,52,133,1,1,0.38806
+315,128,1488,580,53,134,1,1,0.40741
+316,128,1494,581,54,135,1,1,0.43382
+317,128,1500,582,55,136,1,1,0.40146
+318,128,1507,583,55,137,1,1,0.36957
+319,128,1513,584,56,138,1,1,0.33813
+320,128,1520,585,56,140,1,1,0.41471
+321,128,1527,587,56,141,1,1,0.65641
+322,128,1532,586,55,143,1,1,0.96205
+323,128,1537,586,54,145,1,1,1
+324,128,1543,586,53,147,1,1,1
+325,128,1546,585,52,149,1,1,1
+326,128,1550,585,51,151,1,1,1
+327,128,1554,585,49,153,1,1,1
+328,128,1558,585,48,155,1,1,1
+329,128,1562,584,47,156,1,1,1
+330,128,1566,583,47,157,1,1,1
+331,128,1570,582,46,158,1,1,1
+332,128,1574,581,46,160,1,1,1
+333,128,1578,580,45,161,1,1,1
+334,128,1582,579,45,162,1,1,1
+335,128,1586,579,45,163,1,1,1
+336,128,1586,572,44,164,1,1,0.91111
+337,128,1585,577,44,166,1,1,0.75556
+338,128,1590,574,44,169,1,1,0.75556
+339,128,1590,578,50,170,1,1,0.66667
+340,128,1588,581,56,170,1,1,0.5614
+341,128,1586,584,62,170,1,1,0.55556
+342,128,1585,587,67,171,1,1,0.58824
+343,128,1581,595,75,170,1,1,0.63158
+344,128,1577,603,83,169,1,1,0.66667
+345,128,1574,611,91,169,1,1,0.69565
+346,128,1583,618,90,168,1,1,0.69231
+347,128,1582,619,90,171,1,1,0.69231
+348,128,1581,620,90,174,1,1,0.69231
+349,128,1581,621,89,178,1,1,0.68889
+350,128,1580,622,89,181,1,1,0.7
+351,128,1579,623,89,184,1,1,0.75556
+352,128,1579,625,89,187,1,1,0.81111
+353,128,1578,629,89,186,1,1,0.87778
+354,128,1578,633,88,185,1,1,0.93258
+355,128,1578,637,88,185,1,1,0.98876
+356,128,1577,638,88,192,1,1,1
+357,128,1578,643,88,191,1,1,1
+358,128,1579,648,88,190,1,1,1
+359,128,1581,653,87,190,1,1,1
+360,128,1581,656,87,195,1,1,1
+361,128,1582,660,87,199,1,1,1
+362,128,1583,664,87,203,1,1,1
+363,128,1583,666,83,205,1,1,1
+364,128,1583,669,79,206,1,1,1
+365,128,1584,672,74,208,1,1,1
+366,128,1583,675,73,210,1,1,1
+367,128,1582,679,73,212,1,1,1
+368,128,1581,683,73,214,1,1,1
+369,128,1569,685,86,215,1,1,1
+370,128,1558,687,98,216,1,1,1
+371,128,1547,690,110,217,1,1,1
+372,128,1546,693,117,216,1,1,1
+373,128,1546,697,123,215,1,1,1
+374,128,1547,696,122,220,1,1,1
+375,128,1548,695,121,226,1,1,1
+376,128,1550,694,111,228,1,1,1
+377,128,1553,693,100,230,1,1,1
+378,128,1552,692,90,233,1,1,1
+379,128,1551,692,80,236,1,1,1
+380,128,1551,692,69,239,1,1,1
+381,128,1542,694,65,240,1,1,1
+382,128,1528,694,75,244,1,1,0.89995
+383,128,1514,694,85,248,1,1,0.78528
+384,128,1504,695,95,250,1,1,0.75598
+385,128,1494,697,106,252,1,1,0.7272
+386,128,1492,699,103,253,1,1,0.73516
+387,128,1490,702,101,253,1,1,0.73815
+388,128,1478,705,105,254,1,1,0.68979
+389,128,1467,708,109,256,1,1,0.65299
+390,128,1459,709,99,259,1,1,0.58538
+391,128,1451,711,90,261,1,1,0.54991
+392,128,1443,713,80,263,1,1,0.46259
+393,128,1435,715,71,266,1,1,0.35913
+394,128,1419,717,77,270,1,1,0.28811
+395,128,1403,720,83,274,1,1,0.22667
+396,128,1387,722,90,277,1,1,0.23828
+397,128,1371,725,97,279,1,1,0.24858
+398,128,1355,727,105,282,1,1,0.22395
+399,128,1340,730,111,284,1,1,0.20395
+400,128,1324,732,119,287,1,1,0.2202
+401,128,1308,735,126,289,1,1,0.22563
+402,128,1293,738,133,292,1,1,0.26137
+403,128,1282,740,124,295,1,1,0.26735
+404,128,1271,743,115,297,1,1,0.25052
+405,128,1256,747,118,301,1,1,0.25049
+406,128,1236,745,115,308,1,1,0.3056
+407,128,1216,748,114,310,1,1,0.35043
+408,128,1196,752,114,312,1,1,0.39917
+409,128,1177,756,113,314,1,1,0.40821
+410,128,1167,758,104,321,1,1,0.37598
+411,128,1140,760,112,329,1,1,0.42767
+412,128,18,16,40,1,1,1
+267,129,460,537,15,41,1,1,1
+268,129,464,537,15,41,1,1,1
+269,129,469,537,15,42,1,1,1
+270,129,473,536,15,42,1,1,1
+271,129,478,535,15,42,1,1,1
+272,129,482,534,15,42,1,1,1
+273,129,487,533,15,42,1,1,1
+274,129,492,532,15,42,1,1,1
+275,129,496,531,15,42,1,1,1
+276,129,501,530,15,42,1,1,1
+277,129,505,529,15,42,1,1,1
+278,129,510,528,15,42,1,1,1
+417,130,992,509,26,68,1,1,0.81481
+418,130,976,507,26,68,1,1,0.92593
+419,130,961,506,26,68,1,1,1
+420,130,948,505,26,68,1,1,1
+421,130,930,505,26,68,1,1,1
+422,130,913,505,26,68,1,1,1
+423,130,895,505,26,68,1,1,1
+424,130,878,505,26,68,1,1,1
+425,130,860,505,26,68,1,1,1
+426,130,843,505,26,68,1,1,1
+427,130,826,506,26,67,1,1,1
+428,130,806,505,23,66,1,1,1
+429,130,785,507,23,66,1,1,1
+430,130,764,509,24,66,1,1,1
+431,130,744,505,32,65,1,1,1
+432,130,732,505,29,65,1,1,1
+433,130,711,506,29,65,1,1,1
+434,130,690,507,30,65,1,1,1
+435,130,670,509,30,65,1,1,1
+436,130,651,511,28,66,1,1,1
+437,130,633,514,26,66,1,1,1
+438,130,614,512,24,66,1,1,1
+439,130,593,511,25,67,1,1,1
+440,130,573,511,26,68,1,1,1
+441,130,551,513,27,69,1,1,0.99388
+442,130,527,512,28,70,1,1,0.98932
+443,130,503,511,29,71,1,1,0.97454
+444,130,479,511,30,71,1,1,0.96864
+445,130,455,510,31,72,1,1,0.96147
+446,130,431,509,32,73,1,1,0.96069
+447,130,408,509,33,74,1,1,0.92
+448,130,182,508,32,73,1,1,1
+449,130,362,509,33,73,1,1,0.86049
+450,130,337,510,32,73,1,1,0.81572
+451,130,311,509,32,73,1,1,0.7973
+452,130,284,508,32,73,1,1,0.81081
+453,130,258,511,32,73,1,1,0.77027
+454,130,232,508,32,73,1,1,0.82432
+188,131,1175,526,23,70,1,1,0.13908
+189,131,1174,524,24,71,1,1,0.14778
+190,131,1171,523,24,71,1,1,0.14444
+191,131,1168,523,25,74,1,1,0.23231
+192,131,1165,523,26,77,1,1,0.17949
+193,131,1162,524,27,80,1,1,0.14991
+194,131,1156,525,27,79,1,1,0.12143
+195,131,1149,524,31,78,1,1,0.1068
+196,131,1149,525,30,79,1,1,0.10161
+197,131,1143,525,35,78,1,1,0.083685
+198,131,1141,525,34,78,1,1,0.063653
+199,131,1140,525,33,79,1,1,0.066176
+200,131,1139,525,32,79,1,1,0.051515
+201,131,1138,526,31,79,1,1,0.11875
+202,131,1136,527,31,78,1,1,0
+203,131,1135,528,31,78,1,1,0
+204,131,1134,526,33,83,1,1,0.13095
+205,131,1130,527,30,82,1,1,0
+206,131,1126,528,28,81,1,1,0.040791
+207,131,1122,529,26,80,1,1,0.12986
+208,131,1119,531,23,79,1,1,0.23229
+209,131,1117,534,23,81,1,1,0.45833
+210,131,1114,532,23,81,1,1,0.40142
+211,131,1112,537,26,76,1,1,0.42039
+212,131,1110,537,26,79,1,1,0.66667
+213,131,1108,538,26,82,1,1,0.74074
+214,131,1107,541,26,82,1,1,0.77778
+215,131,1106,540,27,83,1,1,0.78571
+216,131,1105,539,28,85,1,1,0.7931
+217,131,1103,536,29,87,1,1,0.83333
+218,131,1101,534,30,88,1,1,0.87097
+219,131,1100,534,28,87,1,1,0.84796
+220,131,1099,534,27,86,1,1,0.94048
+221,131,1098,535,26,85,1,1,0.80534
+222,131,1097,535,28,85,1,1,0.87009
+223,131,1096,535,28,85,1,1,0.68685
+224,131,1095,535,29,86,1,1,0.66513
+225,131,1094,535,29,86,1,1,0.64176
+226,131,1093,536,30,86,1,1,0.63849
+227,131,1092,536,30,86,1,1,0.63589
+228,131,1091,536,31,87,1,1,0.57955
+229,131,1090,537,32,87,1,1,0.52755
+230,131,1089,539,33,86,1,1,0.5497
+231,131,1089,542,34,85,1,1,0.77841
+232,131,1089,541,34,86,1,1,0.8
+233,131,1089,540,35,87,1,1,0.82008
+234,131,1090,539,35,88,1,1,0.83552
+235,131,1090,538,36,89,1,1,0.77177
+236,131,1091,537,36,90,1,1,0.66498
+237,131,1091,536,37,91,1,1,0.68593
+238,131,1091,535,38,92,1,1,0.71381
+239,131,1092,534,38,93,1,1,0.75668
+240,131,1092,533,39,94,1,1,0.61658
+241,131,1093,533,39,94,1,1,0.43211
+242,131,1096,534,37,92,1,1,0.37408
+243,131,1099,534,36,92,1,1,0.22871
+244,131,1102,534,35,93,1,1,0.36584
+245,131,1105,534,34,93,1,1,0.33708
+246,131,1108,535,33,93,1,1,0.31602
+247,131,1111,534,32,94,1,1,0.31547
+248,131,1114,533,32,96,1,1,0.30272
+249,131,1117,533,31,96,1,1,0.30026
+250,131,1120,532,31,98,1,1,0.28851
+251,131,1123,532,31,99,1,1,0.27875
+252,131,1126,532,32,99,1,1,0.27333
+253,131,1129,532,34,100,1,1,0.29901
+254,131,1132,533,36,100,1,1,0.26385
+255,131,1135,533,37,100,1,1,0.25221
+256,131,1138,534,39,100,1,1,0.2255
+257,131,1141,534,41,101,1,1,0.21312
+258,131,1144,535,43,101,1,1,0.19162
+259,131,1147,533,45,104,1,1,0.37474
+260,131,1150,532,47,106,1,1,0.59852
+261,131,1154,531,49,109,1,1,0.616
+262,131,1158,531,48,109,1,1,0.55102
+263,131,1163,532,46,108,1,1,0.25669
+264,131,1167,532,42,108,1,1,0.2332
+265,131,1171,537,41,107,1,1,0.28571
+280,132,1246,535,40,125,1,1,0.071235
+281,132,1243,535,43,120,1,1,0.14688
+282,132,1248,536,42,119,1,1,0.2593
+283,132,1253,537,42,118,1,1,0.13289
+284,132,1259,539,41,117,1,1,0.14165
+285,132,1265,543,40,117,1,1,0.10418
+286,132,1263,543,50,114,1,1,0.095482
+287,132,1261,544,60,111,1,1,0.10319
+288,132,1265,544,64,110,1,1,0.12654
+289,132,1270,545,68,108,1,1,0.20343
+290,132,1275,544,65,110,1,1,0.24242
+291,132,1280,543,62,112,1,1,0.13626
+292,132,1286,542,58,115,1,1,0.128
+293,132,1291,541,55,117,1,1,0.12182
+294,132,1297,540,51,120,1,1,0.11538
+295,132,1305,542,47,121,1,1,0.093921
+296,132,1309,543,44,118,1,1,0.11597
+297,132,1314,545,41,116,1,1,0.12637
+298,132,1317,545,38,113,1,1,0.14575
+299,132,1320,548,39,125,1,1,0.10496
+300,132,1323,549,35,119,1,1,0.1
+301,132,1327,551,31,113,1,1,0.085526
+302,132,1330,552,27,108,1,1,0.040957
+303,132,1334,554,23,102,1,1,0.029126
+304,132,1338,558,25,104,1,1,0.048352
+305,132,1341,561,27,106,1,1,0.077103
+306,132,1343,565,29,108,1,1,0.12232
+307,132,1343,566,32,110,1,1,0.20093
+308,132,1344,566,34,112,1,1,0.26169
+309,132,1353,568,30,116,1,1,0.20844
+310,132,1352,567,30,121,1,1,0.29191
+311,132,1356,569,30,126,1,1,0.27584
+312,132,1357,575,32,132,1,1,0.25701
+313,132,1359,577,43,140,1,1,0.2147
+314,132,1358,578,48,139,1,1,0.42085
+315,132,1352,579,60,140,1,1,0.55668
+316,132,1345,578,65,141,1,1,0.67723
+317,132,1342,579,70,144,1,1,0.72744
+318,132,1344,581,75,143,1,1,0.71254
+319,132,1346,582,81,143,1,1,0.69766
+320,132,1350,582,79,145,1,1,0.68236
+321,132,1355,582,76,147,1,1,0.69393
+322,132,1360,581,72,147,1,1,0.66772
+323,132,1361,581,74,148,1,1,0.64107
+324,132,1368,583,69,148,1,1,0.58696
+325,132,1374,582,63,150,1,1,0.64911
+326,132,1379,580,55,154,1,1,0.76509
+327,132,1382,579,47,153,1,1,0.96212
+328,132,1379,579,44,159,1,1,1
+329,132,1379,576,41,159,1,1,1
+330,132,1377,577,50,159,1,1,1
+331,132,1367,575,62,159,1,1,0.98413
+332,132,1357,573,71,157,1,1,0.97679
+333,132,1350,571,82,160,1,1,0.72289
+334,132,1349,569,92,157,1,1,0.63441
+335,132,1350,567,94,160,1,1,0.61053
+336,132,1352,565,93,160,1,1,0.60638
+337,132,1353,570,93,160,1,1,0.61702
+338,132,1358,571,88,159,1,1,0.61798
+339,132,1358,571,85,163,1,1,0.68605
+340,132,1362,571,77,164,1,1,0.78205
+341,132,1366,575,68,165,1,1,0.76812
+342,132,1370,575,56,171,1,1,0.84211
+343,132,1372,577,43,173,1,1,1
+344,132,1370,578,45,178,1,1,0.8913
+345,132,1371,585,42,180,1,1,0.65116
+346,132,1368,585,47,181,1,1,0.51648
+347,132,1358,594,56,178,1,1,0.45614
+348,132,1350,598,61,175,1,1,0.6129
+349,132,1344,605,69,174,1,1,0.62857
+350,132,1345,605,68,177,1,1,0.65217
+351,132,1345,605,69,175,1,1,0.7
+352,132,1345,605,68,180,1,1,0.78261
+353,132,1348,607,70,184,1,1,0.73239
+354,132,1352,608,69,187,1,1,0.58571
+355,132,1355,610,69,187,1,1,0.47143
+356,132,1355,611,61,189,1,1,0.41935
+357,132,1354,611,56,191,1,1,0.3644
+358,132,1352,612,54,188,1,1,0.37374
+359,132,1349,612,49,193,1,1,0.35701
+360,132,1345,618,51,193,1,1,0.37847
+361,132,1342,620,56,193,1,1,0.39546
+362,132,1341,624,55,196,1,1,0.28644
+363,132,1341,625,54,196,1,1,0.29303
+364,132,1339,631,54,196,1,1,0.33484
+365,132,1337,635,57,195,1,1,0.39796
+366,132,1336,639,65,198,1,1,0.37437
+367,132,1336,641,63,198,1,1,0.4218
+368,132,1330,643,71,203,1,1,0.41299
+369,132,1330,646,70,202,1,1,0.38708
+370,132,1328,645,64,204,1,1,0.44533
+371,132,1328,648,61,203,1,1,0.47494
+372,132,1322,648,61,203,1,1,0.50024
+373,132,1324,649,68,201,1,1,0.36225
+374,132,1322,648,65,201,1,1,0.38141
+375,132,1314,649,58,202,1,1,0.34566
+376,132,1315,647,50,199,1,1,0.40716
+377,132,1306,645,55,198,1,1,0.38092
+378,132,1302,648,56,199,1,1,0.41789
+379,132,1298,646,54,209,1,1,0.43221
+380,132,1294,644,57,212,1,1,0.40724
+381,132,1284,645,57,212,1,1,0.47377
+382,132,1273,645,63,214,1,1,0.51083
+383,132,1263,644,72,213,1,1,0.52138
+384,132,1257,644,69,214,1,1,0.62219
+385,132,1250,648,72,216,1,1,0.59005
+386,132,1245,645,75,217,1,1,0.59452
+387,132,1241,644,74,218,1,1,0.61479
+388,132,1235,648,74,218,1,1,0.58667
+389,132,1230,646,74,224,1,1,0.43342
+390,132,1225,644,71,229,1,1,0.39293
+391,132,1218,647,71,229,1,1,0.41636
+392,132,1213,647,70,232,1,1,0.42586
+393,132,1204,648,61,233,1,1,0.49104
+394,132,1193,651,61,233,1,1,0.56272
+395,132,1185,647,59,239,1,1,0.59014
+396,132,1169,647,57,245,1,1,0.77138
+397,132,1163,652,51,245,1,1,0.79448
+398,132,1147,651,52,247,1,1,0.87165
+399,132,1125,653,63,247,1,1,0.80261
+400,132,1102,656,81,247,1,1,0.68804
+401,132,1087,658,83,248,1,1,0.67202
+402,132,1070,659,83,250,1,1,0.7177
+403,132,1054,661,83,252,1,1,0.69415
+404,132,1038,663,82,254,1,1,0.60865
+405,132,1022,664,82,257,1,1,0.50574
+406,132,1005,666,82,258,1,1,0.41876
+407,132,989,668,82,260,1,1,0.3475
+408,132,973,669,81,263,1,1,0.33689
+409,132,957,671,81,265,1,1,0.35137
+410,132,941,673,81,267,1,1,0.31962
+411,132,925,671,81,272,1,1,0.30157
+412,132,909,669,82,278,1,1,0.23332
+413,132,884,669,82,281,1,1,0.18098
+414,132,860,669,82,284,1,1,0.11786
+415,132,834,670,82,286,1,1,0.068301
+416,132,809,671,82,289,1,1,0.034483
+417,132,784,672,82,292,1,1,0.040956
+418,132,759,673,82,295,1,1,0.030405
+419,132,734,674,82,298,1,1,0.0301
+420,132,711,677,90,298,1,1,0.0301
+421,132,674,678,99,297,1,1,0.036913
+422,132,638,679,107,297,1,1,0.033557
+423,132,602,680,115,297,1,1,0.040268
+424,132,548,677,123,297,1,1,0.15891
+425,132,510,682,131,297,1,1,0.16123
+426,132,472,688,139,297,1,1,0.18212
+427,132,434,695,147,296,1,1,0.17945
+428,132,396,702,155,295,1,1,0.18579
+429,132,358,709,164,295,1,1,0.18342
+430,132,320,714,160,303,1,1,0.25008
+431,132,282,717,155,312,1,1,0.26399
+432,132,244,721,151,320,1,1,0.33522
+433,132,202,724,147,323,1,1,0.30368
+434,132,160,727,144,326,1,1,0.34603
+435,132,119,730,140,329,1,1,0.32128
+436,132,55,735,137,328,1,1,0.21307
+437,132,-8,740,133,327,1,1,0.098835
+438,132,-70,741,146,325,1,1,0.017445
+195,133,970,530,18,49,1,1,0.54947
+196,133,968,525,16,57,1,1,0.50304
+197,133,966,525,16,57,1,1,0.50304
+198,133,964,526,17,56,1,1,0.49708
+199,133,963,527,17,55,1,1,0.51786
+200,133,961,527,18,55,1,1,0.5
+201,133,960,528,18,54,1,1,0.49091
+202,133,958,529,19,53,1,1,0.48148
+203,133,957,529,19,53,1,1,0.48148
+204,133,955,530,20,52,1,1,0.44924
+205,133,954,531,20,52,1,1,0.47439
+206,133,951,531,21,52,1,1,0.45712
+207,133,949,531,22,52,1,1,0.35111
+208,133,947,532,23,52,1,1,0.35456
+209,133,946,532,22,53,1,1,0.33977
+210,133,945,533,22,53,1,1,0.31481
+211,133,944,533,22,54,1,1,0.30909
+212,133,944,534,20,55,1,1,0.28571
+213,133,943,534,20,56,1,1,0.22055
+214,133,942,535,20,56,1,1,0.2005
+271,134,1124,516,28,65,1,1,0
+272,134,1129,516,28,66,1,1,0.27586
+273,134,1135,516,27,67,1,1,0.57143
+274,134,1141,517,27,67,1,1,0.67857
+275,134,1147,516,27,67,1,1,0.60714
+276,134,1153,516,27,67,1,1,0.57143
+313,135,1387,539,28,58,1,1,0.049679
+314,135,1389,541,27,60,1,1,0.057377
+315,135,1399,539,26,61,1,1,0.11649
+316,135,1400,541,28,66,1,1,0.073598
+317,135,1408,541,28,70,1,1,0.1151
+318,135,1412,541,28,76,1,1,0.098074
+319,135,1416,542,29,82,1,1,0.29518
+320,135,1421,542,30,82,1,1,0.34473
+321,135,1426,542,31,82,1,1,0.30648
+322,135,1434,541,26,81,1,1,0.34824
+323,135,1442,541,26,81,1,1,0.3645
+324,135,1445,540,27,81,1,1,0.34495
+325,135,1448,539,29,82,1,1,0.40161
+326,135,1451,538,30,82,1,1,0.44656
+327,135,1454,537,32,83,1,1,0.39538
+328,135,1457,534,32,83,1,1,0.48846
+329,135,1461,532,32,83,1,1,0.50577
+330,135,1465,531,30,83,1,1,0.51959
+331,135,1469,530,28,84,1,1,0.29006
+332,135,1473,529,27,85,1,1,0.5
+333,135,1476,525,26,86,1,1,0.52448
+334,135,1479,522,26,86,1,1,0.55981
+335,135,1482,519,26,86,1,1,0.58323
+336,135,1482,519,26,86,1,1,0.5513
+337,135,1488,519,26,92,1,1,0.53445
+338,135,1491,514,26,91,1,1,0.59783
+339,135,1491,517,27,91,1,1,0.56522
+340,135,1495,519,28,89,1,1,0.55556
+341,135,1500,521,28,88,1,1,0.1976
+342,135,1501,521,28,88,1,1,0.25107
+343,135,1502,523,29,88,1,1,0.26779
+344,135,1504,526,30,88,1,1,0.28416
+345,135,1506,529,31,88,1,1,0.29494
+346,135,1508,532,31,87,1,1,0.33807
+347,135,1510,534,32,88,1,1,0.29111
+348,135,1512,537,33,88,1,1,0.29379
+349,135,1514,540,33,87,1,1,0.28075
+350,135,1516,543,34,87,1,1,0.28571
+351,135,1518,546,35,87,1,1,0.28977
+352,135,1521,547,35,89,1,1,0.2716
+353,135,1525,549,35,90,1,1,0.23504
+354,135,1526,550,35,91,1,1,0.61957
+355,135,1528,552,35,92,1,1,0.6129
+356,135,1530,553,34,94,1,1,0.61053
+357,135,1532,555,34,95,1,1,0.61458
+358,135,1534,556,34,97,1,1,0.61224
+359,135,1536,558,33,98,1,1,0.60606
+360,135,1538,559,33,100,1,1,0.61386
+361,135,1540,561,33,101,1,1,0.60784
+362,135,1541,563,33,101,1,1,0.60784
+363,135,1543,565,33,101,1,1,0.61765
+364,135,1545,567,33,101,1,1,0.61765
+365,135,1547,570,33,101,1,1,0.60784
+366,135,1549,572,33,101,1,1,0.61765
+367,135,1551,574,33,101,1,1,0.61765
+368,135,1553,577,33,101,1,1,0.61765
+369,135,1555,579,33,101,1,1,0.59804
+370,135,1557,581,33,101,1,1,0.57843
+371,135,1559,584,33,101,1,1,0.54902
+372,135,1559,582,33,101,1,1,0.56863
+373,135,1559,581,33,101,1,1,0.57843
+374,135,1559,579,33,101,1,1,0.59804
+375,135,1559,578,34,101,1,1,0.60784
+376,135,1559,576,33,101,1,1,0.31373
+377,135,1559,574,33,101,1,1,0.34256
+378,135,1559,573,33,101,1,1,0.64706
+379,135,1559,571,33,101,1,1,0.66667
+380,135,1559,569,33,101,1,1,0.67647
+381,135,1559,568,33,101,1,1,0.68627
+382,135,1557,568,33,101,1,1,0.66667
+383,135,1556,568,33,101,1,1,0.64706
+384,135,1554,569,33,101,1,1,0.62745
+385,135,1553,569,33,101,1,1,0.62745
+386,135,1552,570,33,101,1,1,0.62745
+387,135,1549,570,33,101,1,1,0.63725
+388,135,1546,570,33,101,1,1,0.26644
+389,135,1543,571,33,101,1,1,0.24366
+390,135,1540,571,33,101,1,1,0.64706
+391,135,1538,572,33,101,1,1,0.17128
+392,135,1530,571,33,101,1,1,0.21569
+393,135,1523,571,33,101,1,1,0.25865
+394,135,1516,570,33,101,1,1,0.28258
+395,135,1509,570,33,101,1,1,0.32757
+396,135,1502,569,33,101,1,1,0.31574
+397,135,1495,569,33,101,1,1,0.40542
+398,135,1488,568,33,101,1,1,0.37255
+399,135,1481,568,33,101,1,1,0.33304
+400,135,1474,567,33,101,1,1,0.28864
+401,135,1467,567,33,101,1,1,0.22203
+402,135,1457,566,33,101,1,1,0.24423
+403,135,1447,566,33,101,1,1,0.26644
+404,135,1437,566,33,101,1,1,0.28864
+405,135,1427,566,34,101,1,1,0.30196
+406,135,1417,566,34,101,1,1,0.26218
+407,135,1407,566,34,101,1,1,0.35406
+408,135,1398,566,34,101,1,1,0.26555
+409,135,1386,566,34,101,1,1,0.26555
+410,135,1374,566,34,101,1,1,0
+411,135,1363,567,33,101,1,1,0.045559
+412,135,1349,565,34,104,1,1,0
+413,135,1336,563,34,107,1,1,0
+414,135,1321,562,35,109,1,1,0
+415,135,1307,561,35,112,1,1,0
+416,135,1292,560,36,114,1,1,0.38402
+417,135,1278,559,37,117,1,1,0.74576
+418,135,1261,558,37,116,1,1,0.76068
+419,135,1244,557,38,115,1,1,0
+420,135,1227,556,39,114,1,1,0
+421,135,1210,556,41,108,1,1,0
+422,135,1191,554,41,112,1,1,0
+423,135,1172,553,42,116,1,1,0
+424,135,1152,552,43,117,1,1,0
+425,135,1133,551,43,119,1,1,0
+426,135,1114,550,43,121,1,1,0
+427,135,1096,549,43,124,1,1,0
+428,135,1075,552,43,126,1,1,0.70222
+429,135,1050,554,44,128,1,1,0.64806
+430,135,1031,556,40,129,1,1,0.60375
+431,135,1012,558,37,130,1,1,0.67818
+432,135,992,557,40,134,1,1,0.6439
+433,135,973,564,41,129,1,1,0.63462
+434,135,951,565,40,130,1,1,0.61441
+435,135,930,566,39,131,1,1,0.66951
+436,135,908,566,39,132,1,1,0.69699
+437,135,886,566,39,134,1,1,0.7587
+438,135,865,567,39,135,1,1,0.74044
+439,135,843,568,39,136,1,1,0.70949
+440,135,821,569,39,137,1,1,0.67138
+441,135,799,571,40,137,1,1,0.53941
+442,135,775,571,39,139,1,1,0.43607
+443,135,750,570,39,141,1,1,0.34824
+444,135,725,570,39,142,1,1,0.25035
+445,135,701,569,39,145,1,1,0.28784
+446,135,676,569,39,146,1,1,0.32653
+447,135,652,569,39,148,1,1,0.35302
+448,135,627,567,39,149,1,1,0.018667
+449,135,603,566,39,150,1,1,0.21192
+450,135,579,564,39,152,1,1,0.45752
+451,135,555,563,39,153,1,1,0.62029
+452,135,524,565,44,153,1,1,0.49048
+453,135,494,567,48,153,1,1,0.55314
+454,135,463,569,53,153,1,1,0.62867
+455,135,433,571,57,153,1,1,0.69145
+456,135,403,573,62,153,1,1,0.73676
+457,135,372,575,64,153,1,1,0.73427
+458,135,342,577,65,154,1,1,0.76764
+459,135,312,580,66,153,1,1,0.73134
+460,135,282,582,67,154,1,1,0.33824
+461,135,252,585,68,154,1,1,0.36232
+462,135,218,585,66,156,1,1,0.68657
+463,135,185,586,63,157,1,1,0.6875
+464,135,152,586,61,159,1,1,0.16129
+465,135,119,587,58,160,1,1,0.13559
+466,135,86,587,56,162,1,1,0.070175
+467,135,53,588,53,163,1,1,0.92593
+468,135,20,589,51,164,1,1,1
+292,136,1511,519,28,100,1,1,0.37931
+293,136,1518,519,30,101,1,1,0.67742
+294,136,1526,519,32,102,1,1,0.75758
+295,136,1533,520,35,101,1,1,1
+296,136,1541,521,38,101,1,1,1
+297,136,1549,521,36,102,1,1,1
+298,136,1557,522,34,102,1,1,1
+299,136,1565,523,33,102,1,1,1
+300,136,1575,526,33,101,1,1,1
+301,136,1579,528,39,101,1,1,1
+302,136,1592,529,34,102,1,1,1
+303,136,1598,530,33,105,1,1,1
+304,136,1609,537,34,103,1,1,1
+305,136,1615,535,35,110,1,1,1
+306,136,1623,541,35,110,1,1,0.96496
+307,136,1630,541,35,110,1,1,0.85986
+308,136,1638,541,35,110,1,1,0.81982
+309,136,1646,546,34,104,1,1,0.80952
+310,136,1650,543,35,110,1,1,0.79279
+311,136,1661,544,35,110,1,1,0.78378
+312,136,1667,544,35,110,1,1,0.78378
+313,136,1674,545,35,110,1,1,0.77477
+314,136,1682,545,34,107,1,1,0.7963
+315,136,1693,545,32,104,1,1,0.85714
+316,136,1701,545,32,104,1,1,0.90476
+317,136,1708,545,32,104,1,1,0.87619
+318,136,1715,545,35,103,1,1,0.85577
+319,136,1721,545,37,102,1,1,0.83495
+320,136,1729,544,37,102,1,1,0.81553
+321,136,1738,544,37,102,1,1,0.79612
+322,136,1742,545,37,102,1,1,0.80583
+323,136,1748,544,37,102,1,1,0.84466
+324,136,1757,545,37,102,1,1,0.86408
+325,136,1766,547,37,102,1,1,0.86408
+326,136,1771,544,36,112,1,1,0.84071
+327,136,1773,544,43,117,1,1,0.83051
+328,136,1780,544,42,120,1,1,0.80992
+329,136,1788,541,42,120,1,1,0.83471
+330,136,1797,540,41,123,1,1,0.91551
+331,136,1802,537,41,123,1,1,1
+332,136,1810,537,40,120,1,1,1
+333,136,1815,534,39,123,1,1,1
+334,136,1817,526,42,130,1,1,1
+335,136,1828,527,39,123,1,1,1
+336,136,1831,520,38,130,1,1,1
+337,136,1835,527,41,129,1,1,1
+338,136,1840,521,41,129,1,1,1
+339,136,1847,522,40,130,1,1,1
+340,136,1852,522,40,130,1,1,1
+341,136,1858,528,40,130,1,1,1
+342,136,1863,528,40,130,1,1,1
+343,136,1866,533,44,131,1,1,1
+344,136,1874,536,44,131,1,1,1
+345,136,1877,541,46,137,1,1,0.93617
+346,136,1881,541,46,137,1,1,0.85106
+347,136,1884,545,46,137,1,1,0.78723
+348,136,1891,548,46,137,1,1,0.6383
+349,136,1895,548,46,137,1,1,0.55319
+350,136,1901,551,46,137,1,1,0.42553
+351,136,1906,553,46,137,1,1,0.31915
+352,136,1911,554,46,137,1,1,0.21277
+410,137,1911,606,46,137,1,1,0.21277
+411,137,1900,594,45,185,1,1,0.45652
+412,137,1886,592,55,185,1,1,0.625
+413,137,1873,591,55,185,1,1,0.85714
+414,137,1860,591,62,192,1,1,0.96825
+415,137,1846,589,65,191,1,1,1
+416,137,1830,587,65,191,1,1,1
+417,137,1815,588,65,191,1,1,1
+418,137,1801,588,65,191,1,1,1
+419,137,1785,585,65,191,1,1,1
+420,137,1771,588,65,191,1,1,1
+421,137,1754,585,64,197,1,1,1
+422,137,1739,585,63,194,1,1,1
+423,137,1717,584,62,197,1,1,1
+424,137,1695,584,65,197,1,1,1
+425,137,1676,584,65,197,1,1,1
+426,137,1657,582,65,197,1,1,1
+427,137,1635,585,65,197,1,1,1
+428,137,1610,585,72,201,1,1,1
+429,137,1589,588,72,201,1,1,1
+430,137,1563,589,75,203,1,1,1
+431,137,1538,596,80,198,1,1,1
+432,137,1514,594,82,202,1,1,1
+433,137,1493,598,75,203,1,1,1
+434,137,1470,600,75,203,1,1,1
+435,137,1449,603,73,203,1,1,1
+436,137,1425,602,79,206,1,1,1
+437,137,1403,605,76,205,1,1,1
+438,137,1379,605,81,207,1,1,1
+439,137,1351,606,85,205,1,1,0.96935
+440,137,1330,607,83,209,1,1,0.98957
+441,137,1304,607,82,212,1,1,0.96861
+442,137,1283,607,76,211,1,1,1
+443,137,1258,611,79,208,1,1,0.989
+444,137,1231,612,81,210,1,1,0.94625
+445,137,1203,614,81,210,1,1,0.89192
+446,137,1172,614,81,210,1,1,0.79575
+447,137,1146,615,81,210,1,1,0.75275
+448,137,1117,612,80,213,1,1,0.67982
+449,137,1084,612,80,213,1,1,0.58602
+450,137,1054,607,78,219,1,1,0.513
+451,137,1025,607,78,219,1,1,0.49735
+452,137,998,612,78,219,1,1,0.463
+453,137,972,612,77,222,1,1,0.46372
+454,137,944,612,76,229,1,1,0.44709
+455,137,920,617,76,229,1,1,0.46877
+456,137,885,620,76,229,1,1,0.35483
+457,137,847,623,76,229,1,1,0.22857
+458,137,803,624,78,213,1,1,0.14409
+459,137,774,627,74,212,1,1,0.14817
+460,137,736,630,74,212,1,1,0.13746
+461,137,700,635,74,212,1,1,0.12851
+462,137,662,638,79,217,1,1,0.12408
+463,137,625,639,78,228,1,1,0.1231
+464,137,587,643,86,230,1,1,0.1233
+465,137,548,646,77,229,1,1,0.12207
+466,137,507,649,77,229,1,1,0.11054
+467,137,470,657,77,229,1,1,0.091973
+468,137,432,657,77,246,1,1,0.094571
+469,137,387,656,77,246,1,1,0.090626
+470,137,350,660,71,245,1,1,0.079268
+471,137,307,656,71,245,1,1,0.086721
+472,137,261,655,73,252,1,1,0.082897
+473,137,208,660,79,257,1,1,0.054651
+474,137,167,660,75,264,1,1,0.075074
+475,137,119,659,75,264,1,1,0.096326
+476,137,65,664,75,264,1,1,0.09007
+477,137,1,676,75,264,1,1,0.075472
+85,138,1619,510,22,59,1,1,0.38551
+86,138,1615,509,22,59,1,1,0.54783
+87,138,1611,510,22,59,1,1,0.69855
+88,138,1608,511,22,59,1,1,0.77391
+89,138,1603,512,23,60,1,1,0.92623
+90,138,1599,513,23,61,1,1,1
+91,138,1595,514,24,62,1,1,1
+92,138,1590,515,25,63,1,1,0.88221
+93,138,1586,516,25,64,1,1,0.80118
+94,138,1582,517,26,65,1,1,0.74747
+95,138,1578,517,29,63,1,1,0.70625
+96,138,1574,518,28,62,1,1,0.711
+97,138,1571,519,27,62,1,1,0.70068
+98,138,1568,520,26,62,1,1,0.68959
+99,138,1565,521,24,61,1,1,0.65935
+100,138,1562,522,23,61,1,1,0.6371
+101,138,1559,523,22,61,1,1,0.62132
+102,138,1556,521,21,60,1,1,0.62444
+103,138,1553,522,21,60,1,1,0.6155
+104,138,1550,523,21,61,1,1,0.6393
+105,138,1545,523,21,61,1,1,0.6305
+106,138,1541,523,21,61,1,1,0.66935
+107,138,1536,523,22,61,1,1,0.73492
+108,138,1532,523,21,61,1,1,0.78446
+109,138,1528,523,21,62,1,1,0.77273
+110,138,1523,523,22,62,1,1,0.90269
+111,138,1519,523,21,62,1,1,0.96609
+112,138,1514,523,22,62,1,1,0
+113,138,1510,523,22,62,1,1,0
+114,138,1506,523,22,63,1,1,0
+115,138,1501,522,22,63,1,1,0
+116,138,1496,522,23,63,1,1,0
+117,138,1491,522,23,63,1,1,0.015625
+118,138,1486,521,24,64,1,1,0.015385
+119,138,1482,521,24,64,1,1,0.015385
+120,138,1477,521,24,63,1,1,0.055
+121,138,1472,520,25,64,1,1,0.038462
+122,138,1467,520,25,64,1,1,0.038462
+123,138,1462,520,26,64,1,1,0.11111
+124,138,1458,520,26,64,1,1,0.18519
+125,138,1454,520,25,64,1,1,0.26923
+126,138,1450,520,25,65,1,1,0.26923
+127,138,1446,521,24,65,1,1,0.28
+128,138,1442,521,24,66,1,1,0.28
+129,138,1439,522,22,66,1,1,0.30435
+130,138,1435,522,22,66,1,1,0.30435
+131,138,1431,522,21,67,1,1,0.27273
+132,138,1427,523,21,67,1,1,1
+133,138,1423,523,20,68,1,1,1
+134,138,1420,524,19,68,1,1,1
+135,138,1416,523,19,69,1,1,1
+136,138,1412,523,19,69,1,1,1
+137,138,1408,523,20,69,1,1,1
+138,138,1405,523,19,69,1,1,1
+139,138,1401,523,20,69,1,1,1
+140,138,1397,523,20,69,1,1,1
+141,138,1394,523,19,69,1,1,1
+142,138,1390,523,20,69,1,1,1
+143,138,1386,523,20,69,1,1,1
+144,138,1383,523,20,70,1,1,1
+145,138,1377,522,22,71,1,1,1
+146,138,1372,522,23,71,1,1,1
+147,138,1366,522,25,71,1,1,1
+148,138,1361,522,26,71,1,1,1
+149,138,1355,522,28,71,1,1,1
+150,138,1350,522,29,71,1,1,1
+151,138,1344,522,31,71,1,1,1
+152,138,1339,522,32,71,1,1,1
+153,138,1334,522,33,71,1,1,1
+154,138,1329,523,29,71,1,1,1
+155,138,1323,522,29,71,1,1,1
+156,138,1318,522,29,71,1,1,1
+157,138,1312,522,30,71,1,1,1
+158,138,1307,522,29,71,1,1,1
+159,138,1302,522,29,71,1,1,1
+160,138,1296,521,30,71,1,1,1
+161,138,1291,521,29,71,1,1,1
+162,138,1285,521,30,71,1,1,1
+163,138,1280,521,30,71,1,1,0.53629
+164,138,1275,521,30,71,1,1,1
+165,138,1270,521,29,71,1,1,1
+166,138,1267,521,24,71,1,1,1
+167,138,1259,521,29,74,1,1,1
+168,138,1250,519,27,74,1,1,0.82
+169,138,1248,521,26,70,1,1,0.85185
+170,138,1246,520,25,73,1,1,0.84615
+171,138,1244,518,23,75,1,1,0.875
+172,138,1238,519,29,74,1,1,0.73333
+173,138,1237,521,29,71,1,1,0.73333
+174,138,1236,518,23,75,1,1,0.75
+175,138,1228,520,31,74,1,1,0.625
+176,138,1227,522,29,74,1,1,1
+177,138,1223,522,29,74,1,1,1
+178,138,1220,524,30,74,1,1,0.96774
+179,138,1216,521,30,74,1,1,0.41935
+180,138,1213,523,30,74,1,1,0.3828
+181,138,1209,522,30,74,1,1,0.28258
+182,138,1208,522,30,74,1,1,0.72215
+195,139,1167,526,29,74,1,1,0.028444
+196,139,1166,526,29,75,1,1,0.029825
+197,139,1165,525,30,75,1,1,0.028862
+198,139,1162,525,30,76,1,1,0.046921
+199,139,1160,525,30,77,1,1,0.066998
+200,139,1157,526,31,77,1,1,0.070513
+201,139,1155,526,30,78,1,1,0.084933
+202,139,1153,527,30,78,1,1,0.097999
+203,139,1150,527,31,80,1,1,0.22994
+204,139,1148,528,31,80,1,1,0.078704
+205,139,1146,528,30,81,1,1,0.25098
+206,139,1143,529,31,81,1,1,0.24162
+207,139,1141,529,31,82,1,1,0.2387
+208,139,1139,530,31,83,1,1,0.19159
+209,139,1138,532,30,83,1,1,0.22581
+210,139,1138,533,30,81,1,1,0.19355
+211,139,1140,533,31,82,1,1,0.23306
+212,139,1138,533,31,83,1,1,0.1875
+213,139,1137,534,31,83,1,1,0.15625
+214,139,1136,534,31,84,1,1,0.09375
+215,139,1135,535,31,84,1,1,0.0625
+216,139,1134,535,31,86,1,1,0
+217,139,1133,536,31,86,1,1,0
+218,139,1132,537,31,87,1,1,0
+219,139,1126,536,31,86,1,1,0.09375
+220,139,1122,533,31,86,1,1,0.1268
+221,139,1123,534,29,87,1,1,0.36667
+222,139,1123,533,29,86,1,1,0.36897
+223,139,1121,534,28,87,1,1,0.62069
+224,139,1121,533,29,88,1,1,0.56966
+225,139,1121,533,30,89,1,1,0.77419
+226,139,1121,533,32,89,1,1,0.7
+227,139,1121,533,33,90,1,1,0.85294
+228,139,1121,533,35,90,1,1,0.80739
+229,139,1121,533,36,91,1,1,0.84019
+230,139,1121,533,37,91,1,1,0.87185
+231,139,1121,533,39,92,1,1,0.85726
+232,139,1121,533,40,92,1,1,0.91896
+233,139,1122,533,41,93,1,1,0.90451
+234,139,1122,532,38,94,1,1,0.85641
+235,139,1122,532,35,95,1,1,0.79803
+236,139,1122,532,33,94,1,1,0.74303
+237,139,1122,531,31,94,1,1,0.69145
+238,139,1122,530,29,95,1,1,0.62083
+239,139,1122,530,32,95,1,1,0.58302
+240,139,1122,530,35,95,1,1,0.5463
+241,139,1123,531,37,94,1,1,0.55762
+242,139,1123,531,40,94,1,1,0.50347
+243,139,1124,532,43,94,1,1,0.41627
+244,139,1126,531,43,94,1,1,0.34545
+245,139,1129,531,42,93,1,1,0.34067
+246,139,1132,531,41,93,1,1,0.34245
+247,139,1134,530,40,93,1,1,0.34017
+248,139,1137,530,39,92,1,1,0.33065
+249,139,1140,530,38,91,1,1,0.34197
+250,139,1144,530,36,90,1,1,0.34066
+251,139,1148,530,35,89,1,1,0.34444
+252,139,1153,530,33,88,1,1,0.35558
+253,139,1157,530,34,90,1,1,0.32967
+254,139,1161,529,33,92,1,1,0.30614
+255,139,1165,529,33,94,1,1,0.29164
+256,139,1169,528,33,97,1,1,0.27131
+257,139,1173,528,34,99,1,1,0.25286
+258,139,1177,528,34,101,1,1,0.23669
+259,139,1182,528,34,103,1,1,0.21951
+260,139,1186,527,34,106,1,1,0.20641
+261,139,1190,527,35,108,1,1,0.44419
+262,139,1194,527,35,110,1,1,0.6519
+263,139,1199,527,35,113,1,1,0.70785
+264,139,1204,529,41,111,1,1,0.86097
+265,139,1209,525,32,116,1,1,0.89122
+266,139,1212,532,36,110,1,1,0.95374
+267,139,1219,530,41,115,1,1,0.81712
+268,139,1222,532,43,116,1,1,0.63462
+269,139,1228,534,43,116,1,1,0.5
+270,139,1237,532,39,116,1,1,0.31774
+271,139,1245,534,35,116,1,1,0.11111
+283,140,1287,536,50,123,1,1,0.5068
+284,140,1298,537,56,131,1,1,0.70175
+285,140,1301,537,61,126,1,1,0.87859
+286,140,1303,537,58,126,1,1,0.91432
+287,140,1306,537,53,126,1,1,0.93701
+288,140,1309,532,54,132,1,1,0.9553
+289,140,1320,532,30,129,1,1,1
+290,140,1324,533,34,129,1,1,1
+291,140,1331,534,36,129,1,1,1
+292,140,1330,535,45,130,1,1,0.89346
+293,140,1330,536,54,132,1,1,0.85099
+294,140,1330,537,63,133,1,1,0.80061
+295,140,1330,538,72,135,1,1,0.68795
+296,140,1337,539,70,133,1,1,0.63559
+297,140,1344,541,68,131,1,1,0.56083
+298,140,1351,543,66,129,1,1,0.5729
+299,140,1354,541,61,133,1,1,0.55416
+300,140,1357,543,59,128,1,1,0.32468
+301,140,1361,546,56,123,1,1,0.34295
+302,140,1365,548,53,119,1,1,0.39907
+303,140,1369,551,50,113,1,1,0.46594
+304,140,1373,553,47,109,1,1,0.51364
+305,140,1377,556,44,104,1,1,0.56063
+306,140,1379,559,44,107,1,1,0.4677
+307,140,1382,564,44,110,1,1,0.39319
+308,140,1384,565,44,113,1,1,0.32593
+309,140,1387,566,44,116,1,1,0.28547
+310,140,1390,567,44,120,1,1,0.23655
+311,140,1393,568,44,123,1,1,0.32419
+312,140,1395,569,44,126,1,1,0.29921
+313,140,1398,570,44,130,1,1,0.1391
+314,140,1401,571,44,133,1,1,0.098176
+315,140,1404,573,44,136,1,1,0.065531
+316,140,1406,573,48,139,1,1,0.083236
+317,140,1408,573,53,143,1,1,0.10455
+318,140,1411,573,56,147,1,1,0.10775
+319,140,1413,573,61,151,1,1,0.13678
+320,140,1416,574,65,154,1,1,0.23118
+321,140,1418,574,66,155,1,1,0.23555
+322,140,1420,574,67,157,1,1,0.32055
+323,140,1423,574,68,159,1,1,0.37572
+324,140,1426,574,68,160,1,1,0.41084
+325,140,1429,575,62,164,1,1,0.38124
+326,140,1431,577,58,162,1,1,0.23365
+327,140,1429,571,57,170,1,1,0.25136
+328,140,1432,574,46,168,1,1,0.18343
+329,140,1432,571,38,166,1,1,0.1976
+330,140,1433,571,38,168,1,1,0.18343
+331,140,1429,567,50,171,1,1,0.22914
+332,140,1430,567,50,171,1,1,0.18605
+333,140,1410,565,73,168,1,1,0.33176
+334,140,1408,563,71,168,1,1,0.32939
+335,140,1408,563,74,167,1,1,0.34159
+336,140,1409,558,77,170,1,1,0.38716
+337,140,1411,561,77,170,1,1,0.40861
+338,140,1413,561,76,174,1,1,0.44297
+339,140,1417,563,71,173,1,1,0.47126
+340,140,1423,562,69,177,1,1,0.43515
+341,140,1419,567,63,177,1,1,0.50843
+342,140,1418,567,60,184,1,1,0.56916
+343,140,1416,573,57,185,1,1,0.57759
+344,140,1411,578,69,184,1,1,0.57745
+345,140,1399,584,85,185,1,1,0.63091
+346,140,1392,591,91,184,1,1,0.68907
+347,140,1384,594,102,188,1,1,0.69949
+348,140,1388,597,108,187,1,1,0.65333
+349,140,1388,597,107,192,1,1,0.66177
+350,140,1390,600,107,192,1,1,0.6114
+351,140,1394,602,86,190,1,1,0.68153
+352,140,1399,600,80,195,1,1,0.68733
+353,140,1400,602,81,198,1,1,0.6847
+354,140,1393,608,71,196,1,1,0.82382
+355,140,1388,607,61,202,1,1,0.98824
+356,140,1381,609,69,204,1,1,1
+357,140,1374,615,78,200,1,1,0.98148
+358,140,1372,615,82,202,1,1,0.97383
+359,140,1366,617,90,206,1,1,0.96815
+360,140,1364,622,94,205,1,1,0.96142
+361,140,1364,623,94,209,1,1,0.96932
+362,140,1361,629,96,211,1,1,0.95215
+363,140,1361,630,103,210,1,1,0.89464
+364,140,1362,638,98,209,1,1,0.90577
+365,140,1367,638,92,212,1,1,0.92453
+366,140,1369,640,76,213,1,1,0.9878
+367,140,1371,644,70,214,1,1,0.98683
+368,140,1369,646,63,218,1,1,0.96062
+369,140,1366,647,62,219,1,1,0.93232
+370,140,1364,651,59,219,1,1,0.91
+371,140,1365,650,55,222,1,1,0.8975
+372,140,1365,651,58,225,1,1,0.88961
+373,140,1356,653,73,223,1,1,0.87542
+374,140,1355,657,73,222,1,1,0.87062
+375,140,1350,658,79,222,1,1,0.86323
+376,140,1350,655,78,226,1,1,0.86617
+377,140,1349,655,78,226,1,1,0.8684
+378,140,1349,655,77,227,1,1,0.86955
+379,140,1345,655,77,226,1,1,0.86084
+380,140,1340,652,76,231,1,1,0.84684
+381,140,1333,652,73,232,1,1,0.82137
+382,140,1328,651,65,231,1,1,0.79232
+383,140,1323,649,54,228,1,1,0.79913
+384,140,1323,650,50,227,1,1,0.8114
+385,140,1314,650,50,226,1,1,0.81195
+386,140,1312,650,47,230,1,1,0.81385
+387,140,1307,648,47,229,1,1,0.80299
+388,140,1279,648,69,246,1,1,0.54806
+389,140,1262,652,77,242,1,1,0.6129
+390,140,1252,655,79,241,1,1,0.63709
+391,140,1247,656,79,246,1,1,0.63097
+392,140,1242,659,76,244,1,1,0.62375
+393,140,1233,661,76,244,1,1,0.6202
+394,140,1227,659,74,253,1,1,0.61249
+395,140,1219,660,74,253,1,1,0.61627
+396,140,1213,660,76,256,1,1,0.60913
+397,140,1204,659,64,261,1,1,0.56629
+398,140,1193,658,59,264,1,1,0.53742
+399,140,1176,660,58,266,1,1,0.62712
+400,140,1158,660,57,272,1,1,0.82759
+401,140,1143,662,61,274,1,1,0.79032
+402,140,1130,662,60,277,1,1,0.78689
+403,140,1112,664,67,278,1,1,0.76471
+404,140,1088,667,76,277,1,1,0.80519
+405,140,1063,670,88,276,1,1,0.82022
+406,140,1039,670,106,280,1,1,0.7757
+407,140,1017,672,105,283,1,1,0.85849
+408,140,1000,672,110,286,1,1,1
+409,140,985,675,110,286,1,1,1
+410,140,967,674,112,290,1,1,1
+411,140,948,679,112,290,1,1,1
+412,140,926,679,117,292,1,1,1
+413,140,896,681,125,295,1,1,1
+414,140,866,683,123,297,1,1,1
+415,140,836,683,125,297,1,1,1
+416,140,803,681,109,308,1,1,1
+417,140,778,684,109,308,1,1,1
+418,140,750,682,119,311,1,1,1
+419,140,718,683,124,316,1,1,1
+420,140,688,686,129,315,1,1,1
+421,140,659,689,135,314,1,1,1
+422,140,624,689,140,319,1,1,1
+423,140,596,692,139,322,1,1,1
+424,140,561,695,148,320,1,1,1
+425,140,525,698,154,323,1,1,1
+426,140,491,704,154,323,1,1,1
+427,140,455,708,154,328,1,1,1
+428,140,421,711,149,335,1,1,1
+429,140,385,716,138,334,1,1,1
+430,140,353,722,123,339,1,1,1
+431,140,310,728,118,337,1,1,1
+432,140,266,736,105,340,1,1,1
+433,140,214,730,104,353,1,1,0.99153
+434,140,162,731,95,358,1,1,0.97493
+435,140,114,741,103,360,1,1,0.94183
+436,140,65,745,111,359,1,1,0.93333
+437,140,10,752,119,363,1,1,0.90385
+438,140,-27,752,119,363,1,1,0.69295
+257,141,-19,602,33,103,1,1,0.019796
+258,141,-17,607,33,103,1,1,0.47059
+259,141,-15,607,33,103,1,1,0.52941
+260,141,-13,607,33,103,1,1,0.58824
+261,141,-10,608,33,102,1,1,0.67647
+262,141,-8,609,33,102,1,1,0.73529
+263,141,-5,610,32,102,1,1,0.81818
+264,141,-6,609,32,101,1,1,0.78788
+265,141,-7,609,33,100,1,1,0.33227
+266,141,-8,608,34,105,1,1,0.74286
+267,141,-5,607,34,105,1,1,0.47466
+268,141,-1,607,33,104,1,1,0.49748
+269,141,2,607,33,103,1,1,0.59219
+270,141,6,607,32,103,1,1,1
+271,141,6,605,36,102,1,1,1
+272,141,7,603,40,102,1,1,0.55008
+273,141,10,603,40,102,1,1,0.50272
+274,141,13,604,40,102,1,1,1
+275,141,17,605,39,102,1,1,1
+276,141,18,604,40,102,1,1,0.41463
+277,141,18,603,39,104,1,1,1
+278,141,19,603,39,106,1,1,1
+279,141,21,603,39,109,1,1,1
+280,141,23,604,40,110,1,1,1
+281,141,26,606,40,111,1,1,1
+282,141,27,607,40,112,1,1,1
+283,141,28,609,40,112,1,1,1
+284,141,31,612,39,112,1,1,1
+285,141,30,611,47,113,1,1,1
+286,141,30,611,54,113,1,1,1
+287,141,36,614,51,112,1,1,0.37662
+288,141,37,615,48,114,1,1,1
+289,141,38,616,45,117,1,1,1
+290,141,40,616,50,116,1,1,1
+291,141,41,618,51,119,1,1,1
+292,141,41,621,48,118,1,1,1
+293,141,42,621,49,118,1,1,1
+294,141,45,621,49,117,1,1,1
+295,141,45,621,50,119,1,1,1
+296,141,46,621,51,121,1,1,1
+297,141,46,625,51,121,1,1,1
+298,141,47,625,51,121,1,1,1
+299,141,46,626,51,121,1,1,1
+300,141,46,627,51,121,1,1,1
+301,141,46,628,51,121,1,1,1
+302,141,46,630,51,121,1,1,1
+303,141,47,633,50,121,1,1,1
+304,141,46,636,50,121,1,1,1
+305,141,45,639,51,121,1,1,1
+306,141,44,634,50,122,1,1,1
+307,141,45,633,49,124,1,1,0.37168
+308,141,43,640,49,123,1,1,0.395
+309,141,41,640,50,124,1,1,1
+310,141,40,641,51,125,1,1,1
+311,141,40,641,48,130,1,1,1
+312,141,39,641,50,130,1,1,1
+313,141,37,643,51,131,1,1,1
+314,141,36,646,51,131,1,1,1
+315,141,34,644,51,132,1,1,1
+316,141,33,646,50,131,1,1,1
+317,141,32,646,49,131,1,1,1
+318,141,32,647,49,133,1,1,1
+319,141,29,650,51,132,1,1,1
+320,141,25,648,53,135,1,1,1
+321,141,23,648,52,139,1,1,1
+322,141,18,647,55,140,1,1,1
+323,141,16,646,55,140,1,1,1
+324,141,15,646,54,140,1,1,1
+325,141,14,648,54,140,1,1,1
+326,141,10,647,52,141,1,1,1
+327,141,5,646,52,141,1,1,1
+328,141,1,650,52,141,1,1,1
+329,141,-4,645,60,144,1,1,0.91803
+330,141,-8,645,60,144,1,1,0.85246
+331,141,-14,645,61,144,1,1,0.75806
+332,141,-23,643,61,142,1,1,0.6129
+333,141,-29,645,61,143,1,1,0.51613
+334,141,-31,645,61,143,1,1,0.48387
+335,141,-38,645,61,141,1,1,0.37097
+336,141,-44,646,60,142,1,1,0.2623
+707,142,1313,536,23,53,1,1,0.22222
+708,142,1319,536,23,53,1,1,0.20602
+709,142,1325,531,24,53,1,1,0.28296
+710,142,1333,543,24,55,1,1,0.08
+711,142,1338,539,24,55,1,1,0.15143
+712,142,1344,535,23,56,1,1,0.25439
+713,142,1349,533,23,56,1,1,0.30556
+714,142,1354,531,24,57,1,1,0.35793
+715,142,1360,529,24,58,1,1,0.41424
+716,142,1365,527,24,58,1,1,0.46983
+717,142,1370,525,25,59,1,1,0.53846
+718,142,1376,524,25,59,1,1,0.48782
+719,142,1382,530,25,60,1,1,0.4855
+720,142,1385,526,25,61,1,1,0.62655
+721,142,1391,527,25,61,1,1,0.63524
+722,142,1397,529,25,60,1,1,0.63808
+723,142,1402,531,25,61,1,1,0.66935
+724,142,1406,538,25,60,1,1,0.68789
+725,142,1414,535,24,60,1,1,0.68525
+726,142,1418,542,25,61,1,1,0.6861
+727,142,1424,543,25,61,1,1,0.72705
+728,142,1430,549,24,61,1,1,0.75613
+729,142,1436,545,24,60,1,1,0.75738
+730,142,1442,549,25,62,1,1,0.71795
+731,142,1448,554,26,64,1,1,0.67179
+732,142,1454,552,25,64,1,1,0.66627
+733,142,1459,552,26,65,1,1,0.64254
+734,142,1464,552,27,66,1,1,0.6194
+735,142,1468,547,27,67,1,1,0.67227
+736,142,1472,547,27,68,1,1,0.68944
+737,142,1477,547,27,69,1,1,0.70816
+738,142,1482,547,27,70,1,1,0.74849
+739,142,1487,547,27,72,1,1,0.78425
+740,142,1489,550,28,68,1,1,0.81209
+741,142,1492,551,28,70,1,1,0.83341
+742,142,1496,552,28,72,1,1,0.83467
+743,142,1499,553,28,74,1,1,0.85655
+744,142,1503,555,28,75,1,1,0.85299
+745,142,1506,554,28,75,1,1,0.90744
+746,142,1509,554,28,75,1,1,0.93194
+747,142,1513,553,28,75,1,1,0.93466
+748,142,1516,553,28,75,1,1,0.93466
+749,142,1520,553,28,75,1,1,0.9147
+750,142,1522,552,29,75,1,1,0.94079
+137,143,1308,520,19,61,1,1,0.25161
+138,143,1302,520,19,62,1,1,0.40635
+139,143,1296,520,19,63,1,1,0.54375
+140,143,1292,519,19,63,1,1,0.58203
+141,143,1288,518,19,63,1,1,0.67969
+142,143,1284,517,19,63,1,1,0.66797
+143,143,1280,517,19,62,1,1,0.62222
+144,143,1276,517,19,62,1,1,0.48889
+145,143,1272,517,19,62,1,1,0.4
+146,143,1268,517,19,62,1,1,0.4
+147,143,1264,517,19,62,1,1,0.31111
+148,143,1258,517,19,61,1,1,0.17742
+149,143,1252,517,19,61,1,1,0.17742
+150,143,1247,517,19,61,1,1,0.13548
+151,143,1241,517,19,61,1,1,0.090323
+152,143,1236,517,18,61,1,1,0.028862
+153,143,1230,517,19,61,1,1,0.032258
+154,143,1225,517,18,61,1,1,0.032258
+155,143,1219,517,18,61,1,1,0.080645
+156,143,1214,517,18,61,1,1,0.091681
+157,143,1208,517,18,61,1,1,0.13752
+158,143,1203,517,18,61,1,1,0.15874
+159,143,1197,517,18,61,1,1,0.30221
+160,143,1191,517,18,61,1,1,0.4601
+161,143,1185,517,18,61,1,1,0.59593
+162,143,1180,517,17,61,1,1,0.74731
+163,143,1177,518,17,61,1,1,0.78047
+164,143,1175,513,18,66,1,1,0.74077
+165,143,1170,512,18,66,1,1,0.91045
+166,143,1165,512,18,66,1,1,1
+167,143,1161,512,18,66,1,1,1
+168,143,1156,511,18,67,1,1,1
+169,143,1151,511,18,67,1,1,1
+170,143,1147,511,18,67,1,1,1
+171,143,1146,513,19,61,1,1,1
+172,143,1146,514,16,62,1,1,0.9253
+173,143,1141,514,18,62,1,1,0.90476
+174,143,1137,514,19,62,1,1,0.87937
+175,143,1133,514,21,63,1,1,0.85156
+176,143,1129,515,22,62,1,1,0.83851
+177,143,1124,515,24,62,1,1,0.8273
+178,143,1120,515,26,63,1,1,0.82292
+179,143,1116,515,27,63,1,1,0.83036
+180,143,1112,516,29,63,1,1,0.83177
+181,143,1108,516,29,63,1,1,0.83177
+182,143,1105,516,29,64,1,1,0.82462
+183,143,1101,516,30,65,1,1,0.84213
+184,143,1098,516,29,66,1,1,0.85821
+185,143,1095,516,29,67,1,1,0.84167
+186,143,1091,516,30,67,1,1,0.84677
+187,143,1088,516,29,68,1,1,0.85217
+188,143,1084,516,30,69,1,1,0.87558
+189,143,1081,516,30,70,1,1,0.88551
+190,143,1078,516,30,71,1,1,0.90323
+191,143,1075,516,30,70,1,1,0.92004
+192,143,1072,517,30,69,1,1,0.93779
+193,143,1070,517,29,69,1,1,0.95667
+194,143,1067,518,30,68,1,1,0.96353
+195,143,1065,518,29,68,1,1,0.98116
+196,143,1062,519,29,67,1,1,0.98382
+197,143,1059,519,30,67,1,1,0.98435
+198,143,1057,520,29,66,1,1,0.99502
+199,143,1054,520,29,66,1,1,1
+200,143,1052,521,29,65,1,1,1
+201,143,1049,521,29,65,1,1,1
+202,143,1047,521,29,66,1,1,1
+203,143,1044,522,30,66,1,1,1
+204,143,1042,522,29,67,1,1,1
+205,143,1040,523,29,67,1,1,1
+206,143,1037,523,30,68,1,1,1
+207,143,1035,523,29,69,1,1,1
+208,143,1032,524,30,69,1,1,1
+209,143,1030,524,30,70,1,1,1
+210,143,1028,525,30,70,1,1,1
+211,143,1026,525,29,70,1,1,1
+212,143,1024,525,28,70,1,1,1
+213,143,1022,526,28,70,1,1,1
+214,143,1020,526,27,70,1,1,1
+215,143,1019,527,26,70,1,1,1
+216,143,1017,527,27,70,1,1,1
+217,143,1016,528,28,70,1,1,1
+218,143,1014,529,30,69,1,1,1
+219,143,1013,530,31,69,1,1,1
+220,143,1012,531,32,69,1,1,1
+221,143,1012,530,31,69,1,1,1
+222,143,1012,529,30,69,1,1,1
+223,143,1013,528,28,69,1,1,1
+224,143,1010,528,32,70,1,1,1
+225,143,1011,528,28,71,1,1,1
+226,143,1013,528,23,73,1,1,1
+227,143,1011,529,25,72,1,1,1
+228,143,1010,530,27,71,1,1,1
+229,143,1009,531,29,70,1,1,1
+230,143,1008,532,31,69,1,1,1
+231,143,1008,531,30,69,1,1,1
+232,143,1008,530,30,69,1,1,0.95161
+233,143,1008,529,30,70,1,1,0.86188
+234,143,1009,528,29,70,1,1,0.78216
+235,143,1010,528,29,70,1,1,0.76056
+236,143,1012,527,28,70,1,1,0.76056
+237,143,1013,527,28,70,1,1,0.74648
+238,143,1015,526,27,70,1,1,0.74648
+239,143,1016,526,27,70,1,1,0.73239
+240,143,1018,526,26,70,1,1,0.71831
+241,143,1020,526,27,70,1,1,0.70423
+242,143,1022,526,28,70,1,1,0.70423
+243,143,1025,526,28,70,1,1,0.69014
+244,143,1027,526,29,70,1,1,0.69014
+245,143,1029,526,30,70,1,1,0.66197
+246,143,1032,526,30,70,1,1,0.64789
+247,143,1034,526,31,70,1,1,0.6338
+248,143,1037,526,31,71,1,1,0.61111
+249,143,1041,526,31,70,1,1,0.61972
+250,143,1045,526,32,70,1,1,0.56893
+251,143,1050,527,31,72,1,1,0.49144
+252,143,1057,526,31,73,1,1,0.49662
+253,143,1060,528,31,72,1,1,0.36729
+254,143,1062,529,31,72,1,1,0.23116
+296,144,1266,525,26,77,1,1,0.18993
+297,144,1271,525,26,77,1,1,0.27493
+298,144,1277,526,26,77,1,1,0.35043
+299,144,1282,527,26,77,1,1,0.42735
+300,144,1287,529,28,84,1,1,0.55375
+301,144,1294,530,28,85,1,1,0.48998
+302,144,1296,528,36,89,1,1,0.42342
+303,144,1303,530,29,87,1,1,0.50985
+304,144,1308,537,29,86,1,1,0.45747
+305,144,1311,536,31,87,1,1,0.42969
+306,144,1314,539,31,86,1,1,0.3926
+307,144,1319,541,30,88,1,1,0.36789
+308,144,1325,541,30,87,1,1,0.36767
+309,144,1329,543,30,86,1,1,0.37634
+310,144,1335,542,30,85,1,1,0.36722
+311,144,1339,542,30,85,1,1,0.3841
+312,144,1343,543,30,84,1,1,0.40835
+313,144,1347,542,36,82,1,1,0.44122
+314,144,1349,541,36,85,1,1,0.44155
+315,144,1352,540,35,88,1,1,0.4382
+316,144,1355,540,34,91,1,1,0.41304
+317,144,1360,543,33,90,1,1,0.3956
+318,144,1364,544,33,89,1,1,0.41111
+319,144,1369,546,33,87,1,1,0.40909
+320,144,1371,544,33,86,1,1,0.43678
+321,144,1376,546,32,85,1,1,0.4186
+322,144,1379,546,31,86,1,1,0.4023
+323,144,1382,546,31,87,1,1,0.39773
+324,144,1384,542,35,84,1,1,0.48235
+325,144,1386,541,34,82,1,1,0.49398
+326,144,1389,540,33,81,1,1,0.4878
+327,144,1392,542,32,80,1,1,0.45679
+328,144,1394,540,30,82,1,1,0.46988
+329,144,1398,538,32,84,1,1,0.45419
+330,144,1399,540,30,84,1,1,0.43529
+331,144,1401,538,29,81,1,1,0.44472
+332,144,1403,536,29,78,1,1,0.46118
+333,144,1405,534,29,75,1,1,0.42105
+334,144,1407,532,28,72,1,1,0.42749
+335,144,1409,530,28,69,1,1,0.47143
+336,144,1411,528,28,66,1,1,0.44776
+337,144,1411,527,28,69,1,1,0.48571
+338,144,1411,526,28,73,1,1,0.48043
+339,144,1412,525,27,77,1,1,0.50092
+340,144,1412,525,27,77,1,1,0.49542
+341,144,1413,528,31,75,1,1,0.49836
+342,144,1413,531,31,75,1,1,0.44572
+343,144,1414,534,31,75,1,1,0.45888
+344,144,1415,538,31,74,1,1,0.45625
+345,144,1415,542,31,74,1,1,0.56
+346,144,1416,546,31,74,1,1,0.56
+347,144,1416,547,32,75,1,1,0.57895
+348,144,1416,548,33,76,1,1,0.59244
+349,144,1416,550,35,76,1,1,0.5974
+350,144,1416,551,35,77,1,1,0.60256
+351,144,1416,552,35,78,1,1,0.60759
+352,144,1417,554,35,78,1,1,0.58228
+353,144,1417,555,35,80,1,1,0.58025
+354,144,1418,557,35,80,1,1,0.61728
+355,144,1418,558,35,81,1,1,0.60027
+356,144,1419,560,35,82,1,1,0.59304
+357,144,1419,562,35,83,1,1,0.61905
+358,144,1419,564,35,84,1,1,0.6
+359,144,1419,567,35,84,1,1,0.58824
+360,144,1419,569,36,85,1,1,0.60465
+361,144,1419,572,36,86,1,1,0.58621
+362,144,1419,574,36,87,1,1,0.57955
+363,144,1419,576,37,88,1,1,0.58427
+364,144,1419,579,37,88,1,1,0.57303
+365,144,1419,581,37,89,1,1,0.55175
+366,144,1420,584,37,90,1,1,0.54569
+367,144,1420,584,36,90,1,1,0.55094
+368,144,1420,585,36,90,1,1,0.55539
+369,144,1420,585,35,91,1,1,0.54801
+370,144,1420,586,35,91,1,1,0.52174
+371,144,1420,586,35,92,1,1,0.5
+372,144,1420,587,34,91,1,1,0.47733
+373,144,1420,587,34,92,1,1,0.45591
+374,144,1420,588,33,92,1,1,0.47691
+375,144,1420,588,33,93,1,1,0.48811
+376,144,1420,589,33,93,1,1,0.49468
+377,144,1416,587,34,94,1,1,0.4782
+378,144,1413,585,34,95,1,1,0.45
+379,144,1410,584,35,95,1,1,0.57292
+380,144,1407,582,35,96,1,1,0.57732
+381,144,1404,581,36,97,1,1,0.58163
+382,144,1400,579,37,98,1,1,0.57576
+383,144,1397,577,37,99,1,1,0.59263
+384,144,1394,576,38,99,1,1,0.62513
+385,144,1391,574,38,100,1,1,0.62681
+386,144,1388,573,39,101,1,1,0.62819
+387,144,1382,572,39,103,1,1,0.65505
+388,144,1376,572,39,104,1,1,0.67786
+389,144,1370,572,39,105,1,1,0.70283
+390,144,1364,572,40,106,1,1,0.72236
+391,144,1358,572,40,108,1,1,0.74021
+392,144,1352,571,40,110,1,1,0.76379
+393,144,1346,571,41,111,1,1,0.78975
+394,144,1340,571,41,112,1,1,0.76823
+395,144,1334,571,41,113,1,1,0.76107
+396,144,1328,571,42,115,1,1,0.73837
+397,144,1318,570,43,115,1,1,0.77253
+398,144,1309,569,44,116,1,1,0.78462
+399,144,1300,569,44,116,1,1,0.80532
+400,144,1291,568,45,116,1,1,0.79431
+401,144,1282,567,45,117,1,1,0.79606
+402,144,1273,567,46,117,1,1,0.78038
+403,144,1262,566,46,117,1,1,0.8004
+404,144,1251,566,46,117,1,1,0.81518
+405,144,1240,566,46,117,1,1,0.81518
+406,144,1230,566,46,117,1,1,0.81248
+407,144,1217,565,46,117,1,1,0.83556
+408,144,1204,565,46,117,1,1,0.83556
+409,144,1191,565,46,117,1,1,0.84241
+410,144,1178,565,46,117,1,1,0.84241
+411,144,1165,565,46,117,1,1,0.85323
+412,144,1152,565,46,117,1,1,0.83321
+413,144,1136,563,46,118,1,1,0.83908
+414,144,1120,562,46,118,1,1,0.84355
+415,144,1105,561,45,118,1,1,0.84472
+416,144,1089,560,45,119,1,1,0.84601
+417,144,1074,559,45,119,1,1,0.85507
+418,144,1058,557,45,120,1,1,0.83848
+419,144,1042,556,45,121,1,1,0.81771
+420,144,1027,555,44,121,1,1,0.79781
+421,144,1011,554,44,121,1,1,0.78871
+422,144,996,553,44,122,1,1,0.76423
+423,144,976,551,43,123,1,1,0.77419
+424,144,956,550,42,123,1,1,0.78226
+425,144,936,549,41,123,1,1,0.79531
+426,144,916,548,41,124,1,1,0.8
+427,144,895,550,41,123,1,1,0.79839
+428,144,874,553,41,122,1,1,0.78862
+429,144,853,556,42,121,1,1,0.79508
+430,144,832,559,42,119,1,1,0.80833
+431,144,811,562,42,118,1,1,0.82353
+432,144,791,565,42,117,1,1,0.81356
+433,144,767,565,43,118,1,1,0.82353
+434,144,743,566,44,118,1,1,0.83193
+435,144,720,566,44,119,1,1,0.84167
+436,144,696,567,46,119,1,1,0.85
+437,144,673,567,46,120,1,1,0.8595
+438,144,649,568,47,120,1,1,0.86777
+439,144,626,569,48,120,1,1,0.8843
+440,144,602,570,48,120,1,1,0.89256
+441,144,578,571,48,121,1,1,0.89344
+442,144,554,572,49,122,1,1,0.89431
+443,144,528,572,49,121,1,1,0.92623
+444,144,503,573,49,120,1,1,0.94215
+445,144,477,574,50,119,1,1,0.96667
+446,144,452,575,50,118,1,1,0.98319
+447,144,425,572,51,122,1,1,1
+448,144,398,570,52,125,1,1,0.98413
+449,144,369,570,53,125,1,1,0.98413
+450,144,340,569,53,125,1,1,0.99206
+451,144,311,568,54,126,1,1,0.99213
+452,144,282,568,55,126,1,1,1
+453,144,250,568,56,127,1,1,1
+454,144,218,569,57,128,1,1,1
+455,144,187,569,57,129,1,1,0.5
+456,144,155,570,58,130,1,1,0.23729
+457,144,123,570,59,131,1,1,0.96667
+458,144,92,571,59,132,1,1,1
+459,144,54,574,60,133,1,1,1
+117,145,1419,524,21,59,1,1,0.05
+118,145,1414,523,21,59,1,1,0.058333
+119,145,1409,523,21,59,1,1,0.058333
+120,145,1404,522,21,60,1,1,0.21386
+121,145,1399,522,22,60,1,1,0.19886
+122,145,1394,522,22,60,1,1,0.18532
+123,145,1389,521,22,61,1,1,0.14306
+124,145,1384,521,22,61,1,1,0.13114
+125,145,1379,521,23,61,1,1,0.12097
+126,145,1374,520,23,61,1,1,0.19892
+127,145,1369,520,23,61,1,1,0.1828
+128,145,1364,519,23,62,1,1,0.18122
+129,145,1359,519,24,62,1,1,0.13143
+130,145,1354,519,24,62,1,1,0.12571
+131,145,1349,518,24,63,1,1,0.19437
+132,145,1344,518,24,63,1,1,0.335
+133,145,1340,518,24,63,1,1,0.24938
+134,145,1335,520,24,63,1,1,0.24938
+135,145,1330,519,24,63,1,1,0.285
+136,145,1326,519,24,63,1,1,0.25375
+137,145,1321,519,25,63,1,1,0.24399
+138,145,1317,518,24,63,1,1,0.285
+139,145,1312,518,25,63,1,1,0.3137
+140,145,1308,518,25,63,1,1,0.34856
+141,145,1303,517,25,63,1,1,0.30829
+142,145,1299,517,25,63,1,1,0.27404
+143,145,1294,517,26,63,1,1,0.36227
+144,145,1290,517,25,63,1,1,0.33534
+145,145,1285,517,26,63,1,1,0.32639
+146,145,1281,516,26,64,1,1,0.30484
+147,145,1277,516,25,64,1,1,0.31598
+148,145,1272,516,26,64,1,1,0.37208
+149,145,1268,516,26,63,1,1,0.41088
+150,145,1263,516,27,63,1,1,0.45145
+151,145,1259,516,26,63,1,1,0.47859
+152,145,1254,515,27,64,1,1,0.54066
+153,145,1250,515,27,64,1,1,0.54396
+154,145,1246,515,26,64,1,1,0.53162
+155,145,1241,515,27,64,1,1,0.48242
+156,145,1237,515,27,64,1,1,0.48462
+157,145,1232,515,27,63,1,1,0.46038
+158,145,1228,514,27,64,1,1,0.48462
+159,145,1223,514,28,64,1,1,0.43607
+160,145,1219,514,28,64,1,1,0.34058
+161,145,1215,514,27,64,1,1,0.24011
+162,145,1210,514,28,64,1,1,0.18302
+163,145,1206,513,28,65,1,1,0.11442
+164,145,1201,513,28,65,1,1,0.096134
+165,145,1197,513,28,64,1,1,0.10716
+166,145,1192,513,29,64,1,1,0.089231
+167,145,1188,513,28,64,1,1,0.075332
+168,145,1184,513,28,64,1,1,0.077984
+169,145,1179,512,29,65,1,1,0.12626
+170,145,1175,512,29,65,1,1,0.1
+171,145,1170,512,29,65,1,1,0.16667
+172,145,1166,512,29,65,1,1,0.21515
+173,145,1161,512,30,64,1,1,0.26998
+174,145,1157,512,29,64,1,1,0.33333
+175,145,1153,511,29,65,1,1,0.33636
+176,145,1148,511,30,65,1,1,0.39492
+177,145,1144,511,29,65,1,1,0.44343
+178,145,1139,511,30,65,1,1,0.435
+179,145,1135,511,30,65,1,1,0.46921
+180,145,1131,511,30,65,1,1,0.51075
+181,145,1128,511,30,65,1,1,0.57283
+182,145,1125,512,30,64,1,1,0.6005
+183,145,1122,512,30,64,1,1,0.63275
+184,145,1119,513,30,64,1,1,0.72308
+185,145,1117,514,29,63,1,1,0.74167
+186,145,1114,514,29,63,1,1,0.74167
+187,145,1111,515,29,63,1,1,0.75781
+188,145,1108,515,29,63,1,1,0.7474
+189,145,1105,516,29,62,1,1,0.74021
+190,145,1103,517,29,62,1,1,0.76296
+191,145,1100,517,29,62,1,1,0.7619
+192,145,1097,517,29,63,1,1,0.75313
+193,145,1094,518,29,62,1,1,0.75556
+194,145,1091,518,29,63,1,1,0.7125
+195,145,1088,519,29,62,1,1,0.69894
+196,145,1085,519,29,63,1,1,0.70833
+197,145,1082,519,29,63,1,1,0.675
+198,145,1079,520,29,63,1,1,0.66771
+199,145,1076,520,29,63,1,1,0.67396
+200,145,1074,521,29,63,1,1,0.66406
+201,145,1072,521,28,63,1,1,0.6945
+202,145,1070,521,28,63,1,1,0.70205
+203,145,1068,521,28,63,1,1,0.71336
+204,145,1067,521,27,63,1,1,0.78404
+205,145,1065,521,27,64,1,1,0.7967
+206,145,1063,521,27,64,1,1,0.80055
+207,145,1062,521,26,64,1,1,0.87863
+208,145,1060,521,26,64,1,1,0.88832
+209,145,1058,521,26,64,1,1,0.89402
+210,145,1057,521,25,65,1,1,0.92774
+211,145,1056,522,24,70,1,1,0.98873
+212,145,1055,523,24,70,1,1,0.99155
+213,145,1054,525,24,70,1,1,0.99662
+214,145,1053,527,24,70,1,1,1
+215,145,1052,527,24,69,1,1,1
+216,145,1051,527,24,68,1,1,1
+217,145,1050,527,25,68,1,1,0.97269
+218,145,1049,527,25,67,1,1,0.97285
+219,145,1048,527,25,66,1,1,0.94719
+220,145,1048,528,25,65,1,1,0.91958
+221,145,1048,527,24,66,1,1,0.9194
+222,145,1048,527,24,66,1,1,0.85552
+223,145,1048,527,24,67,1,1,0.79765
+224,145,1048,527,24,67,1,1,0.74235
+225,145,1048,527,24,68,1,1,0.68812
+226,145,1048,527,24,68,1,1,0.51536
+227,145,1048,527,24,68,1,1,0.59884
+228,145,1048,527,24,69,1,1,0.68343
+229,145,1048,527,24,69,1,1,0.76571
+230,145,1049,527,23,70,1,1,0.72477
+231,145,1049,526,23,70,1,1,0.69777
+232,145,1050,526,23,70,1,1,0.66667
+233,145,1051,525,23,71,1,1,0.60532
+234,145,1051,525,23,70,1,1,0.60739
+235,145,1052,525,23,70,1,1,0.6027
+236,145,1053,524,23,71,1,1,0.52257
+237,145,1053,524,23,70,1,1,0.52347
+238,145,1054,523,23,71,1,1,0.51389
+239,145,1055,523,23,71,1,1,0.48553
+240,145,1056,523,23,71,1,1,0.45833
+241,145,1058,522,23,71,1,1,0.46644
+242,145,1061,522,23,71,1,1,0.46644
+243,145,1063,522,23,71,1,1,0.46181
+244,145,1066,521,23,72,1,1,0.45091
+245,145,1068,521,24,72,1,1,0.43507
+246,145,1071,521,23,71,1,1,0.44271
+247,145,1073,520,24,72,1,1,0.44603
+248,145,1076,520,23,72,1,1,0.44692
+249,145,1078,520,24,72,1,1,0.44164
+250,145,1081,520,24,72,1,1,0.43671
+251,145,1085,520,24,72,1,1,0.41753
+252,145,1089,520,24,72,1,1,0.41699
+253,145,1093,520,24,72,1,1,0.42027
+254,145,1098,520,23,72,1,1,0.40297
+255,145,1102,520,24,72,1,1,0.38411
+256,145,1106,520,24,72,1,1,0.45205
+257,145,1111,520,23,72,1,1,0.40068
+258,145,1115,520,23,72,1,1,0.33048
+259,145,1119,520,23,72,1,1,0.24658
+307,146,1354,541,23,61,1,1,0.090726
+308,146,1358,541,24,63,1,1,0.145
+309,146,1362,541,25,66,1,1,0.19116
+310,146,1367,541,25,69,1,1,0.22143
+311,146,1371,541,26,72,1,1,0.25571
+312,146,1376,541,27,75,1,1,0.30827
+313,146,1380,542,28,73,1,1,0.30149
+314,146,1384,543,29,71,1,1,0.35972
+315,146,1389,544,30,70,1,1,0.38392
+316,146,1392,544,32,67,1,1,0.3975
+317,146,1396,544,30,72,1,1,0.41052
+318,146,1401,544,28,78,1,1,0.38717
+319,146,1404,544,28,75,1,1,0.19465
+320,146,1409,543,27,74,1,1,0.20381
+321,146,1414,542,26,73,1,1,0.20821
+322,146,1420,541,25,72,1,1,0.24341
+323,146,1422,542,27,71,1,1,0.32093
+324,146,1424,543,29,70,1,1,0.31408
+325,146,1427,545,30,68,1,1,0.30108
+326,146,1427,544,32,66,1,1,0.36364
+327,146,1433,542,28,66,1,1,0.31343
+328,146,1433,542,31,67,1,1,0.35294
+329,146,1435,541,29,71,1,1,0.36111
+330,146,1437,540,28,76,1,1,0.4026
+331,146,1438,536,28,72,1,1,0.42466
+332,146,1440,533,28,67,1,1,0.5
+333,146,1441,530,29,67,1,1,0.34314
+334,146,1442,528,30,67,1,1,0.11622
+335,146,1443,526,31,66,1,1,0.13806
+336,146,1444,524,32,66,1,1,0.15378
+337,146,1444,522,33,70,1,1,0.21002
+338,146,1444,521,35,74,1,1,0.22222
+339,146,1444,524,37,73,1,1,0.52703
+340,146,1444,525,39,72,1,1,0.50685
+341,146,1445,526,40,71,1,1,0.30556
+342,146,1451,528,35,71,1,1,0.27083
+343,146,1449,531,37,73,1,1,0.32859
+344,146,1450,535,40,76,1,1,0.57111
+345,146,1449,541,43,78,1,1,0.54661
+346,146,1450,541,46,80,1,1,0.58025
+347,146,1449,543,47,79,1,1,0.6
+348,146,1449,546,44,81,1,1,0.59756
+349,146,1454,547,40,80,1,1,0.60494
+350,146,1457,550,35,80,1,1,0.59259
+351,146,1457,549,39,80,1,1,0.62963
+352,146,1458,551,37,78,1,1,0.59694
+353,146,1458,553,39,79,1,1,0.57469
+354,146,1458,555,41,81,1,1,0.58885
+355,146,1458,557,39,81,1,1,0.63415
+356,146,1458,558,35,80,1,1,0.65432
+357,146,1459,562,35,79,1,1,0.65
+358,146,1459,564,35,79,1,1,0.65
+359,146,1458,563,35,79,1,1,0.63021
+360,146,1457,568,37,80,1,1,0.65432
+361,146,1458,569,38,80,1,1,0.63248
+362,146,1455,571,39,83,1,1,0.62768
+363,146,1455,572,38,89,1,1,0.59259
+364,146,1456,574,37,90,1,1,0.60064
+365,146,1457,576,36,91,1,1,0.6087
+366,146,1458,578,36,91,1,1,0.61957
+367,146,1458,581,40,91,1,1,0.6087
+368,146,1458,584,43,89,1,1,0.62222
+369,146,1456,585,43,90,1,1,0.6044
+370,146,1459,586,43,91,1,1,0.58696
+371,146,1460,589,43,89,1,1,0.56667
+372,146,1457,586,45,91,1,1,0.52316
+373,146,1456,584,44,92,1,1,0.54863
+374,146,1455,582,43,93,1,1,0.61702
+375,146,1455,581,42,93,1,1,0.62766
+376,146,1459,581,40,93,1,1,0.62766
+377,146,1458,580,41,93,1,1,0.6383
+378,146,1456,579,42,94,1,1,0.63158
+379,146,1453,576,43,91,1,1,0.68478
+380,146,1453,573,41,94,1,1,0.68421
+381,146,1452,571,40,94,1,1,0.70526
+382,146,1446,572,44,93,1,1,0.68085
+383,146,1443,570,44,94,1,1,0.67368
+384,146,1440,569,44,94,1,1,0.67368
+385,146,1438,568,43,95,1,1,0.67708
+386,146,1435,568,44,99,1,1,0.66
+387,146,1432,564,44,102,1,1,0.68932
+388,146,1425,565,45,103,1,1,0.68269
+389,146,1419,566,50,103,1,1,0.67308
+390,146,1415,566,50,104,1,1,0.67619
+391,146,1412,570,49,104,1,1,0.64762
+392,146,1408,567,48,109,1,1,0.65455
+393,146,1401,566,50,115,1,1,0.63793
+394,146,1394,566,50,111,1,1,0.66071
+395,146,1387,566,51,108,1,1,0.68807
+396,146,1381,566,50,111,1,1,0.67857
+397,146,1372,566,50,112,1,1,0.68142
+398,146,1364,566,52,112,1,1,0.69027
+399,146,1357,566,51,111,1,1,0.70536
+400,146,1345,566,51,111,1,1,0.69643
+401,146,1337,566,52,111,1,1,0.69643
+402,146,1329,563,52,121,1,1,0.65574
+403,146,1316,562,54,122,1,1,0.65854
+404,146,1307,562,54,122,1,1,0.65854
+405,146,1300,562,51,123,1,1,0.65323
+406,146,1288,561,51,121,1,1,0.68033
+407,146,1278,563,51,121,1,1,0.67213
+408,146,1266,563,51,118,1,1,0.68908
+409,146,1258,563,51,119,1,1,0.68333
+410,146,1241,563,51,117,1,1,0.69492
+411,146,1229,563,51,121,1,1,0.68033
+412,146,1215,563,51,120,1,1,0.68595
+413,146,1201,560,51,121,1,1,0.70492
+414,146,1186,560,51,121,1,1,0.70492
+415,146,1168,560,51,121,1,1,0.70492
+416,146,1153,560,51,121,1,1,0.70492
+417,146,1136,556,51,121,1,1,0.7459
+418,146,1129,555,42,119,1,1,0.76667
+419,146,1112,553,42,119,1,1,0.78333
+420,146,1091,552,53,124,1,1,0.76
+421,146,1074,549,52,129,1,1,0.75385
+422,146,1055,548,52,131,1,1,0.75
+423,146,1036,546,52,133,1,1,0.75373
+424,146,1017,548,52,130,1,1,0.75573
+425,146,995,548,52,131,1,1,0.75
+426,146,977,548,52,125,1,1,0.79365
+427,146,956,551,60,122,1,1,0.79675
+428,146,936,549,60,123,1,1,0.81452
+429,146,913,552,60,118,1,1,0.84874
+430,146,895,561,59,115,1,1,0.81897
+431,146,871,556,60,121,1,1,0.85246
+432,146,849,561,58,122,1,1,0.81301
+433,146,823,561,60,124,1,1,0.816
+434,146,806,566,59,115,1,1,0.85345
+435,146,776,559,60,122,1,1,0.87805
+436,146,762,559,50,120,1,1,0.90909
+437,146,744,556,42,128,1,1,0.89147
+438,146,717,558,44,129,1,1,0.88462
+439,146,693,558,43,129,1,1,0.90769
+440,146,673,559,43,129,1,1,0.91538
+441,146,648,557,44,134,1,1,0.91111
+442,146,617,557,50,135,1,1,0.91912
+443,146,592,562,52,132,1,1,0.92481
+444,146,567,566,51,131,1,1,0.91667
+445,146,552,566,44,121,1,1,1
+446,146,522,566,44,121,1,1,1
+447,146,491,563,43,123,1,1,1
+448,146,472,551,34,138,1,1,1
+449,146,440,552,34,138,1,1,1
+450,146,409,556,43,132,1,1,1
+451,146,379,561,43,132,1,1,1
+452,146,350,563,41,132,1,1,0.99248
+455,147,258,568,43,132,1,1,0.81818
+456,147,223,568,43,132,1,1,1
+457,147,192,570,43,132,1,1,1
+458,147,160,569,43,132,1,1,1
+459,147,129,573,42,136,1,1,1
+460,147,87,570,50,140,1,1,1
+461,147,50,573,54,139,1,1,1
+462,147,13,574,54,139,1,1,1
+290,148,1232,532,30,88,1,1,0.3784
+291,148,1242,535,31,87,1,1,0.27486
+292,148,1249,534,31,89,1,1,0.27813
+293,148,1256,533,31,91,1,1,0.27819
+294,148,1263,533,31,93,1,1,0.27527
+295,148,1270,533,31,92,1,1,0.28125
+296,148,1277,534,31,91,1,1,0.28125
+297,148,1284,535,31,89,1,1,0.28125
+298,148,1291,536,31,88,1,1,0.28125
+299,148,1298,537,31,87,1,1,0.28125
+300,148,1305,538,31,85,1,1,0.3125
+301,148,1312,539,31,84,1,1,0.3125
+302,148,1319,540,31,83,1,1,0.3125
+303,148,1327,544,31,84,1,1,0.21103
+304,148,1335,548,31,85,1,1,0.09375
+305,148,1341,549,30,88,1,1,0.047843
+306,148,1348,550,29,91,1,1,0.059783
+307,148,1355,551,31,91,1,1,0.056046
+308,148,1362,552,30,92,1,1,0.058273
+309,148,1369,553,30,93,1,1,0.061771
+310,148,1376,554,29,95,1,1,0.092014
+311,148,1383,555,27,93,1,1,0.088146
+312,148,1390,556,28,95,1,1,0.077586
+313,148,1397,558,29,87,1,1,0.061742
+314,148,1406,557,29,92,1,1,0.055197
+315,148,1411,557,30,91,1,1,0.078541
+316,148,1416,558,31,89,1,1,0.083333
+317,148,1424,559,31,84,1,1,0.082353
+318,148,1428,556,31,100,1,1,0.099938
+319,148,1433,558,27,103,1,1,0.11332
+320,148,1445,559,32,92,1,1,0.087977
+321,148,1444,559,31,97,1,1,0.11958
+322,148,1453,559,30,87,1,1,0.12097
+323,148,1463,560,29,77,1,1,0.11368
+324,148,1463,558,27,77,1,1,0.18315
+325,148,1473,559,27,78,1,1,0.16863
+326,148,1479,557,24,80,1,1,0.23901
+327,148,1485,558,26,82,1,1,0.21776
+328,148,1489,558,27,86,1,1,0.21552
+329,148,1492,555,29,88,1,1,0.24981
+330,148,1496,553,30,89,1,1,0.26667
+331,148,1499,551,32,90,1,1,0.27473
+332,148,1503,549,33,91,1,1,0.27174
+333,148,1507,547,35,93,1,1,0.2766
+334,148,1511,544,35,94,1,1,0.28421
+335,148,1519,542,36,94,1,1,0.3138
+336,148,1521,540,36,93,1,1,0.30851
+337,148,1527,542,38,93,1,1,0.32379
+338,148,1531,542,38,94,1,1,0.28259
+339,148,1535,543,39,94,1,1,0.27211
+340,148,1540,541,40,93,1,1,0.29476
+341,148,1544,544,41,93,1,1,0.29939
+342,148,1549,547,41,93,1,1,0.30091
+343,148,1554,551,41,93,1,1,0.29787
+344,148,1561,554,35,94,1,1,0.30351
+345,148,1568,557,37,94,1,1,0.31717
+346,148,1571,559,39,94,1,1,0.32632
+347,148,1575,562,40,93,1,1,0.33342
+348,148,1578,565,42,93,1,1,0.34166
+349,148,1582,568,43,92,1,1,0.33407
+350,148,1586,571,45,92,1,1,0.3324
+351,148,1589,572,47,92,1,1,0.35036
+352,148,1592,574,49,92,1,1,0.36731
+353,148,1595,576,51,92,1,1,0.37945
+354,148,1609,578,42,93,1,1,0.40995
+355,148,1610,580,45,97,1,1,0.40728
+356,148,1614,581,44,103,1,1,0.23397
+357,148,1618,582,44,109,1,1,0.22727
+358,148,1622,581,43,117,1,1,0.22939
+359,148,1623,584,47,125,1,1,0.39732
+360,148,1625,588,50,133,1,1,0.42025
+361,148,1632,591,48,134,1,1,0.47377
+362,148,1639,594,46,135,1,1,0.54537
+363,148,1647,598,43,136,1,1,0.65893
+364,148,1651,605,48,137,1,1,0.74682
+365,148,1651,606,52,137,1,1,0.76689
+366,148,1656,608,51,137,1,1,0.75864
+367,148,1661,610,51,138,1,1,0.82346
+368,148,1666,612,51,138,1,1,0.84186
+369,148,1671,614,51,139,1,1,0.88008
+370,148,1677,616,50,140,1,1,0.91378
+371,148,1682,614,50,141,1,1,0.93772
+372,148,1688,613,49,142,1,1,0.94895
+373,148,1694,612,48,143,1,1,0.93793
+374,148,1700,611,47,144,1,1,0.87989
+375,148,1703,608,48,148,1,1,0.8466
+376,148,1706,606,49,150,1,1,0.81642
+377,148,1709,604,50,153,1,1,0.83117
+378,148,1711,603,54,153,1,1,0.84947
+379,148,1714,603,57,152,1,1,0.81406
+380,148,1717,603,61,152,1,1,0.78653
+381,148,1719,603,75,151,1,1,0.79501
+382,148,1723,606,76,150,1,1,0.79083
+383,148,1727,606,74,152,1,1,0.78118
+384,148,1731,606,72,154,1,1,0.77994
+385,148,1732,605,69,155,1,1,0.77198
+386,148,1733,604,67,157,1,1,0.76266
+387,148,1734,604,65,157,1,1,0.76362
+388,148,1735,603,63,159,1,1,0.75645
+389,148,1736,603,61,160,1,1,0.75306
+390,148,1735,606,64,160,1,1,0.76445
+391,148,1735,609,66,161,1,1,0.76755
+392,148,1734,610,70,163,1,1,0.78332
+393,148,1733,611,74,166,1,1,0.78443
+394,148,1733,612,77,169,1,1,0.78959
+395,148,1730,612,86,169,1,1,0.75592
+396,148,1726,612,91,169,1,1,0.71675
+397,148,1724,615,90,167,1,1,0.70055
+398,148,1721,618,89,168,1,1,0.68619
+399,148,1718,616,84,170,1,1,0.72356
+400,148,1715,615,80,172,1,1,0.76643
+401,148,1711,614,78,175,1,1,0.8153
+402,148,1708,613,74,176,1,1,0.80753
+403,148,1705,612,71,178,1,1,0.78538
+404,148,1702,611,66,180,1,1,0.77802
+405,148,1695,612,65,179,1,1,0.87879
+406,148,1689,613,64,179,1,1,0.84615
+407,148,1684,616,68,182,1,1,0.73913
+408,148,1674,617,68,187,1,1,0.75362
+409,148,1667,618,66,185,1,1,0.76119
+410,148,1657,620,69,184,1,1,0.64286
+411,148,1648,622,71,183,1,1,0.56944
+412,148,1638,622,69,182,1,1,0.55714
+413,148,1628,622,68,181,1,1,0.53623
+414,148,1614,622,71,180,1,1,0.54167
+415,148,1604,622,64,181,1,1,0.50769
+416,148,1590,622,87,182,1,1,0.54545
+417,148,1576,622,86,184,1,1,0.51724
+418,148,1563,622,84,187,1,1,0.50588
+419,148,1549,622,83,189,1,1,0.47619
+420,148,1536,623,81,191,1,1,0.45122
+421,148,1522,623,80,193,1,1,0.45679
+422,148,1509,623,78,196,1,1,0.4557
+423,148,1496,624,76,198,1,1,0.54545
+424,148,1482,624,78,201,1,1,0.6962
+425,148,1463,625,80,203,1,1,0.77778
+426,148,1444,626,82,205,1,1,0.84337
+427,148,1425,628,84,206,1,1,0.91765
+428,148,1406,632,85,206,1,1,0.97674
+429,148,1388,636,86,207,1,1,1
+430,148,1370,640,87,207,1,1,1
+431,148,1351,644,88,208,1,1,1
+432,148,1333,648,89,208,1,1,1
+433,148,1315,653,90,208,1,1,1
+434,148,1295,653,91,209,1,1,1
+435,148,1271,655,92,211,1,1,1
+436,148,1247,657,93,214,1,1,1
+437,148,1223,660,94,216,1,1,1
+438,148,1199,662,95,219,1,1,1
+439,148,1176,665,95,221,1,1,1
+440,148,1152,667,96,223,1,1,1
+441,148,1128,669,97,226,1,1,1
+442,148,1104,672,98,228,1,1,1
+443,148,1080,674,99,231,1,1,1
+444,148,1057,677,100,233,1,1,1
+445,148,1029,676,100,241,1,1,1
+446,148,1002,676,99,249,1,1,1
+447,148,973,671,98,263,1,1,1
+448,148,942,672,104,266,1,1,1
+449,148,912,674,110,268,1,1,1
+450,148,880,672,107,275,1,1,1
+451,148,853,680,104,278,1,1,1
+452,148,819,685,106,276,1,1,1
+453,148,785,691,101,276,1,1,1
+454,148,752,697,95,277,1,1,1
+455,148,715,697,90,283,1,1,1
+456,148,679,696,91,294,1,1,1
+457,148,646,696,85,309,1,1,1
+458,148,609,699,84,316,1,1,1
+459,148,564,706,89,323,1,1,1
+460,148,520,714,94,329,1,1,1
+461,148,474,727,100,332,1,1,1
+462,148,429,735,105,335,1,1,1
+463,148,384,745,119,338,1,1,0.99115
+464,148,335,756,137,330,1,1,0.98187
+465,148,284,759,151,341,1,1,0.94152
+466,148,230,758,160,354,1,1,0.90986
+467,148,174,762,167,369,1,1,0.86216
+468,148,113,763,179,377,1,1,0.84127
+469,148,49,768,188,376,1,1,0.83024
+470,148,-10,775,196,386,1,1,0.74655
+471,148,-65,784,196,386,1,1,0.51033
+472,148,-125,799,196,386,1,1,0.26262
+74,149,1604,515,23,50,1,1,0.16422
+75,149,1601,520,24,49,1,1,0.2552
+76,149,1598,519,24,49,1,1,0.4408
+77,149,1595,518,25,50,1,1,0.46908
+78,149,1592,517,25,51,1,1,0.40385
+79,149,1589,516,26,51,1,1,0.37678
+80,149,1586,515,26,52,1,1,0.34451
+81,149,1584,515,26,52,1,1,0.31307
+82,149,1581,514,25,53,1,1,0.39601
+83,149,1578,513,24,54,1,1,0.40727
+84,149,1575,513,23,54,1,1,0.49773
+85,149,1573,515,23,52,1,1,0.50943
+86,149,1569,513,21,55,1,1,0.44075
+87,149,1566,514,20,54,1,1,0.38182
+88,149,1563,515,19,54,1,1,0.27273
+89,149,1560,516,19,54,1,1,0.27273
+90,149,1557,517,18,54,1,1,0.23445
+91,149,1554,519,18,53,1,1,0.22027
+92,149,1550,520,19,53,1,1,0.21296
+93,149,1547,521,19,53,1,1,0.21296
+94,149,1544,522,19,53,1,1,0.21296
+95,149,1541,523,19,53,1,1,0.16667
+96,149,1538,524,20,54,1,1,0.50476
+97,149,1534,525,21,54,1,1,0.4843
+98,149,1531,526,21,54,1,1,0.4843
+99,149,1528,527,21,54,1,1,0.4843
+100,149,1525,528,21,54,1,1,0.44132
+101,149,1522,529,22,55,1,1,0.46506
+102,149,1517,528,23,56,1,1,0.42982
+103,149,1513,528,23,56,1,1,0.36623
+104,149,1509,528,23,56,1,1,0.36623
+105,149,1505,528,23,56,1,1,0.36623
+106,149,1501,528,23,56,1,1,0.36623
+107,149,1497,527,23,57,1,1,0.29023
+108,149,1493,527,23,57,1,1,0.19397
+109,149,1489,527,23,57,1,1,0.24569
+110,149,1485,527,23,57,1,1,0.31753
+111,149,1481,527,23,58,1,1,0.35169
+112,149,1477,527,22,58,1,1,0.36109
+113,149,1473,527,22,58,1,1,0.39867
+114,149,1470,527,21,58,1,1,0.44992
+115,149,1466,527,21,58,1,1,0.48921
+116,149,1463,527,20,58,1,1,0.55609
+117,149,1459,527,20,58,1,1,0.58838
+118,149,1455,527,20,58,1,1,0.62954
+119,149,1452,527,19,58,1,1,0.64746
+120,149,1448,527,19,58,1,1,0.69153
+121,149,1445,528,18,57,1,1,0.71688
+122,149,1440,527,18,58,1,1,0.62177
+123,149,1436,527,18,58,1,1,0.57449
+124,149,1432,527,18,58,1,1,0.61463
+125,149,1427,527,19,58,1,1,0.58814
+126,149,1423,527,19,58,1,1,0.58814
+127,149,1419,526,18,59,1,1,0.72105
+128,149,1414,526,19,59,1,1,0.78333
+129,149,1410,526,19,59,1,1,0.915
+130,149,1406,526,19,59,1,1,1
+131,149,1402,526,19,60,1,1,1
+132,149,1398,525,19,61,1,1,1
+133,149,1394,525,19,61,1,1,1
+134,149,1390,525,19,61,1,1,1
+135,149,1386,524,20,62,1,1,0.95238
+136,149,1383,524,19,62,1,1,0.7
+137,149,1379,524,19,62,1,1,0.65
+138,149,1375,523,20,63,1,1,0.57143
+139,149,1371,523,20,63,1,1,0.57143
+140,149,1367,523,20,63,1,1,0.57143
+141,149,1364,523,20,63,1,1,0.47619
+142,149,1360,523,20,63,1,1,0.42857
+143,149,1357,523,20,64,1,1,0.38095
+144,149,1353,523,20,64,1,1,0.33333
+145,149,1350,523,20,65,1,1,0.28571
+146,149,1346,524,21,65,1,1,0.22727
+147,149,1343,524,20,65,1,1,0.19048
+148,149,1339,524,21,66,1,1,0.13636
+149,149,1336,524,20,66,1,1,0.095238
+150,149,1332,524,21,67,1,1,0.045455
+284,150,1307,542,36,114,1,1,0
+285,150,1314,541,42,112,1,1,0
+286,150,1322,541,43,112,1,1,0.090909
+287,150,1330,541,39,113,1,1,0.25
+288,150,1338,541,35,114,1,1,0.27778
+289,150,1343,542,39,113,1,1,0.8
+290,150,1348,540,36,116,1,1,0.7027
+291,150,1353,540,31,115,1,1,0.53125
+292,150,1358,541,32,114,1,1,0.45455
+293,150,1363,542,33,113,1,1,0.35294
+294,150,1368,544,34,113,1,1,0.25714
+295,150,1373,546,34,113,1,1,0.14286
+296,150,1378,545,39,114,1,1,0.22565
+297,150,1383,546,40,114,1,1,0.17328
+298,150,1388,548,41,114,1,1,0.086128
+299,150,1393,549,44,117,1,1,0.086252
+300,150,1398,551,49,116,1,1,0.14974
+301,150,1403,553,47,120,1,1,0.10434
+302,150,1408,555,51,119,1,1,0.1024
+303,150,1413,557,50,118,1,1,0.062943
+304,150,1418,559,49,118,1,1,0.052101
+305,150,1424,561,47,118,1,1,0.04937
+306,150,1429,563,46,117,1,1,0.061125
+307,150,1435,565,45,117,1,1,0.068718
+308,150,1440,567,44,117,1,1,0.079849
+309,150,1446,569,42,116,1,1,0.099384
+310,150,1451,571,41,116,1,1,0.10256
+311,150,1457,573,40,116,1,1,0.094434
+367,150,1595,660,48,205,1,1,0.092233
+368,150,1597,663,54,206,1,1,0.096618
+369,150,1594,665,62,214,1,1,0.10742
+370,150,1586,667,75,219,1,1,0.15072
+371,150,1576,673,88,214,1,1,0.1515
+372,150,1563,674,101,216,1,1,0.096503
+373,150,1563,675,99,219,1,1,0.1
+374,150,1564,676,97,223,1,1,0.089286
+375,150,1565,677,95,227,1,1,0.078947
+376,150,1567,677,93,227,1,1,0.074561
+377,150,1569,678,91,227,1,1,0.13687
+378,150,1571,678,83,227,1,1,0.19549
+379,150,1564,680,84,228,1,1,0.24192
+380,150,1556,682,79,228,1,1,0.22298
+381,150,1568,682,52,227,1,1,0.285
+382,150,1560,682,57,229,1,1,0.28096
+383,150,1553,682,62,231,1,1,0.29256
+384,150,1538,682,74,233,1,1,0.21926
+385,150,1513,681,90,235,1,1,0.098529
+386,150,1514,684,90,237,1,1,0.15569
+387,150,1512,684,90,239,1,1,0.18681
+388,150,1511,687,90,241,1,1,0.25747
+389,150,1513,686,90,243,1,1,0.36012
+390,150,1498,690,101,245,1,1,0.44815
+391,150,1479,692,108,247,1,1,0.4663
+392,150,1472,694,113,249,1,1,0.57853
+393,150,1463,696,107,252,1,1,0.62319
+394,150,1455,698,100,255,1,1,0.61502
+395,150,1447,700,93,258,1,1,0.60733
+396,150,1433,700,88,260,1,1,0.537
+397,150,1420,700,82,263,1,1,0.46554
+398,150,1406,703,77,262,1,1,0.35922
+399,150,1392,703,77,266,1,1,0.30856
+400,150,1384,705,73,267,1,1,0.27088
+401,150,1376,707,69,268,1,1,0.24488
+402,150,1360,713,71,269,1,1,0.15561
+403,150,1351,716,69,270,1,1,0.17501
+404,150,1333,719,78,271,1,1,0.22487
+405,150,1314,721,87,273,1,1,0.24506
+406,150,1296,723,93,278,1,1,0.24304
+407,150,1282,720,94,283,1,1,0.27168
+408,150,1266,720,90,289,1,1,0.22266
+409,150,1245,724,86,295,1,1,0.18135
+410,150,1221,730,94,300,1,1,0.16688
+411,150,1199,731,94,305,1,1,0.16529
+412,150,1177,733,92,311,1,1,0.15647
+413,150,1155,734,59,316,1,1,0.10095
+414,150,1131,735,60,324,1,1,0.11491
+415,150,1107,737,62,331,1,1,0.13224
+416,150,1079,737,62,337,1,1,0.14117
+417,150,1059,738,62,334,1,1,0.17114
+418,150,1033,743,63,334,1,1,0.17127
+419,150,1005,745,64,333,1,1,0.17725
+420,150,974,748,65,333,1,1,0.17746
+421,150,945,752,66,332,1,1,0.1765
+422,150,915,751,67,332,1,1,0.18636
+423,150,880,756,68,331,1,1,0.19072
+424,150,846,761,69,330,1,1,0.2006
+425,150,812,766,70,329,1,1,0.20431
+426,150,772,768,71,347,1,1,0.19145
+427,150,730,773,73,355,1,1,0.18069
+428,150,689,779,78,347,1,1,0.18093
+429,150,647,783,79,357,1,1,0.19291
+430,150,610,791,76,373,1,1,0.18849
+431,150,572,798,74,348,1,1,0.20867
+432,150,528,805,78,370,1,1,0.21365
+433,150,483,812,82,402,1,1,0.20909
+434,150,438,819,86,423,1,1,0.21031
+435,150,393,827,91,403,1,1,0.22955
+436,150,342,837,90,416,1,1,0.23522
+437,150,298,847,91,416,1,1,0.26632
+438,150,247,845,91,415,1,1,0.31041
+439,150,193,853,91,440,1,1,0.30854
+440,150,136,860,99,423,1,1,0.33816
+441,150,77,868,91,414,1,1,0.40911
+442,150,18,881,108,405,1,1,0.3985
+170,151,976,519,17,61,1,1,1
+171,151,973,518,17,61,1,1,1
+172,151,972,516,17,61,1,1,0.79211
+173,151,971,515,17,61,1,1,0.84677
+174,151,969,515,20,60,1,1,0.91257
+175,151,967,516,20,60,1,1,0.89696
+176,151,965,516,21,61,1,1,0.8871
+177,151,962,520,21,61,1,1,0.98827
+178,151,961,517,21,61,1,1,0.88416
+179,151,957,513,23,65,1,1,0.7904
+180,151,952,516,27,64,1,1,0.92747
+181,151,950,516,27,64,1,1,0.91154
+182,151,953,516,27,65,1,1,0.83117
+183,151,948,515,27,65,1,1,0.65043
+184,151,946,515,27,65,1,1,0.63312
+185,151,943,515,27,65,1,1,0.58658
+186,151,941,516,27,65,1,1,0.56818
+187,151,941,517,26,65,1,1,0.55556
+188,151,941,518,25,65,1,1,0.51632
+189,151,941,519,24,65,1,1,0.41697
+190,151,942,521,23,64,1,1,0.35256
+191,151,941,521,23,64,1,1,0.34103
+192,151,940,522,23,64,1,1,0.35
+193,151,939,523,24,64,1,1,0.312
+194,151,935,522,26,65,1,1,0.27722
+195,151,934,522,27,66,1,1,0.24307
+196,151,934,522,28,67,1,1,0.23124
+197,151,935,524,22,66,1,1,0.27839
+198,151,935,524,22,66,1,1,0.22193
+199,151,934,524,22,67,1,1,0.19437
+200,151,931,526,22,68,1,1,0.22684
+207,152,932,522,22,68,1,1,0.13233
+208,152,929,526,23,68,1,1,0.11957
+209,152,928,527,23,68,1,1,0.13949
+210,152,927,530,23,68,1,1,0.14795
+211,152,926,532,23,68,1,1,0.15217
+212,152,927,532,23,69,1,1,0.19286
+213,152,929,533,23,69,1,1,0.25714
+214,152,929,536,23,70,1,1,0.29754
+215,152,928,535,23,71,1,1,0.26389
+216,152,925,533,23,72,1,1,0.18493
+217,152,925,531,23,72,1,1,0.15068
+218,152,928,531,23,72,1,1,0.20091
+219,152,925,531,23,72,1,1,0.14612
+220,152,926,530,23,72,1,1,0.13699
+221,152,927,528,23,72,1,1,0.14384
+222,152,930,528,23,72,1,1,0.16952
+223,152,930,531,23,72,1,1,0.18836
+224,152,931,530,23,72,1,1,0.19178
+225,152,931,530,23,73,1,1,0.16273
+226,152,933,530,23,74,1,1,0.087222
+227,152,933,529,27,73,1,1,0.061776
+228,152,931,529,27,73,1,1,0.069015
+229,152,933,533,27,73,1,1,0.056467
+230,152,935,533,27,74,1,1,0.046667
+231,152,936,533,27,75,1,1,0.036654
+300,153,1373,539,29,89,1,1,0.044444
+301,153,1380,537,25,90,1,1,0.098901
+302,153,1386,538,28,95,1,1,0.10417
+303,153,1394,541,28,82,1,1,0.12796
+304,153,1401,544,29,86,1,1,0.12644
+305,153,1407,546,28,86,1,1,0.19976
+306,153,1413,550,29,90,1,1,0.25311
+307,153,1411,551,32,93,1,1,0.31657
+308,153,1418,551,36,98,1,1,0.35081
+309,153,1426,552,29,95,1,1,0.47222
+310,153,1434,554,34,102,1,1,0.43024
+311,153,1443,553,28,102,1,1,0.46602
+312,153,1448,553,25,101,1,1,0.51131
+313,153,1453,553,25,109,1,1,0.5014
+314,153,1459,554,25,106,1,1,0.49533
+315,153,1465,555,25,101,1,1,0.53884
+316,153,1471,556,28,102,1,1,0.49414
+317,153,1477,557,29,102,1,1,0.44466
+318,153,1483,555,28,102,1,1,0.43555
+319,153,1489,559,29,103,1,1,0.48846
+320,153,1493,555,25,106,1,1,0.57728
+321,153,1499,556,26,102,1,1,0.53398
+322,153,1504,556,25,99,1,1,0.58
+323,153,1509,557,26,91,1,1,0.56522
+324,153,1514,558,27,84,1,1,0.5563
+325,153,1519,559,28,77,1,1,0.50663
+326,153,1524,557,28,79,1,1,0.3625
+327,153,1530,556,28,80,1,1,0.24691
+328,153,1536,555,28,81,1,1,0.18377
+329,153,1542,554,28,82,1,1,0.17366
+330,153,1548,553,28,84,1,1,0.15416
+331,153,1552,548,28,87,1,1,0.17124
+332,153,1557,546,29,88,1,1,0.17079
+333,153,1562,545,30,88,1,1,0.17398
+334,153,1567,543,31,89,1,1,0.17361
+335,153,1572,542,32,89,1,1,0.16835
+336,153,1578,541,33,89,1,1,0.17255
+337,153,1584,544,34,88,1,1,0.11814
+338,153,1590,537,33,89,1,1,0.21797
+339,153,1595,538,31,88,1,1,0.24228
+340,153,1600,539,30,87,1,1,0.15836
+341,153,1606,541,28,86,1,1,0.19461
+342,153,1608,545,30,87,1,1,0.14296
+343,153,1610,549,33,89,1,1,0.21046
+344,153,1613,553,34,90,1,1,0.18838
+345,153,1615,557,37,92,1,1,0.16808
+346,153,1617,561,39,93,1,1,0.17021
+347,153,1620,566,41,94,1,1,0.1609
+348,153,1623,566,40,94,1,1,0.14326
+349,153,1626,566,41,96,1,1,0.1458
+350,153,1633,569,41,97,1,1,0.19291
+351,153,1639,570,42,98,1,1,0.23209
+352,153,1642,572,43,104,1,1,0.20108
+353,153,1646,574,44,110,1,1,0.18238
+354,153,1650,576,44,116,1,1,0.13561
+355,153,1654,578,45,122,1,1,0.11877
+356,153,1660,581,40,122,1,1,0.11124
+357,153,1668,584,40,121,1,1,0.07557
+358,153,1670,586,43,121,1,1,0.095007
+359,153,1673,589,45,121,1,1,0.10264
+360,153,1680,592,41,118,1,1,0.10204
+361,153,1688,595,41,117,1,1,0.069209
+362,153,1687,597,48,118,1,1,0.12965
+363,153,1696,599,52,114,1,1,0.056604
+364,153,1700,601,52,117,1,1,0.1567
+365,153,1704,603,49,125,1,1,0.12889
+366,153,1708,605,49,130,1,1,0.14901
+367,153,1712,607,52,130,1,1,0.14792
+368,153,1717,609,54,126,1,1,0.17079
+369,153,1722,611,49,133,1,1,0.18313
+370,153,1729,613,47,132,1,1,0.19173
+371,153,1737,615,45,131,1,1,0.16798
+372,153,1740,613,47,132,1,1,0.19627
+373,153,1743,611,49,133,1,1,0.22269
+374,153,1746,609,49,137,1,1,0.21551
+375,153,1750,608,52,138,1,1,0.22519
+376,153,1754,607,56,137,1,1,0.27028
+377,153,1757,605,53,138,1,1,0.29803
+378,153,1761,604,49,138,1,1,0.30835
+379,153,1765,603,49,138,1,1,0.33223
+380,153,1769,602,50,138,1,1,0.35125
+381,153,1773,601,53,138,1,1,0.11697
+382,153,1774,601,53,140,1,1,0.091148
+383,153,1775,601,54,142,1,1,0.10807
+384,153,1776,601,55,144,1,1,0.10653
+385,153,1777,601,56,146,1,1,0.18737
+386,153,1778,601,57,148,1,1,0.24936
+387,153,1779,601,58,150,1,1,0.29521
+388,153,1780,601,59,152,1,1,0.35414
+389,153,1781,601,60,154,1,1,0.41343
+390,153,1782,601,61,156,1,1,0.4286
+391,153,1784,602,61,158,1,1,0.35149
+392,153,1783,602,61,158,1,1,0.27592
+393,153,1782,603,61,158,1,1,0.18239
+394,153,1781,604,61,157,1,1,0.10514
+395,153,1780,605,61,157,1,1,0.022866
+396,153,1779,606,62,157,1,1,0.01748
+397,153,1774,606,60,158,1,1,0.027838
+398,153,1773,607,70,157,1,1,0.026475
+399,153,1772,608,65,157,1,1,0.018412
+400,153,1771,609,70,158,1,1,0.067499
+401,153,1770,610,76,162,1,1,0.23982
+402,153,1762,611,86,161,1,1,0.33589
+403,153,1754,612,90,165,1,1,0.36264
+404,153,1747,614,88,166,1,1,0.35955
+405,153,1739,616,88,160,1,1,0.35955
+406,153,1732,618,88,154,1,1,0.38202
+407,153,1725,612,85,163,1,1,0.37493
+408,153,1717,612,83,163,1,1,0.36041
+409,153,1710,613,80,162,1,1,0.34871
+410,153,1705,609,73,165,1,1,0.43243
+411,153,1706,613,60,162,1,1,0.55738
+412,153,1695,612,61,164,1,1,0.6129
+413,153,1684,612,62,166,1,1,0.66667
+414,153,1673,612,63,167,1,1,0.71875
+415,153,1662,612,65,169,1,1,0.78788
+416,153,1649,611,67,170,1,1,0.58867
+417,153,1637,611,69,170,1,1,0.64236
+418,153,1625,610,71,172,1,1,0.69501
+419,153,1613,610,73,172,1,1,0.74285
+420,153,1601,609,75,173,1,1,0.79008
+421,153,1589,609,77,174,1,1,0.83487
+422,153,1570,609,76,175,1,1,0.78483
+423,153,1552,609,74,176,1,1,0.74373
+424,153,1534,609,73,177,1,1,0.66588
+425,153,1516,609,74,179,1,1,0.65985
+426,153,1498,609,75,181,1,1,0.65406
+427,153,1480,610,77,182,1,1,0.65322
+428,153,1462,610,80,183,1,1,0.67391
+429,153,1444,611,84,184,1,1,0.68458
+430,153,1426,614,85,186,1,1,0.67964
+431,153,1414,619,84,185,1,1,0.73523
+432,153,1398,621,93,186,1,1,0.77244
+433,153,1376,624,101,185,1,1,0.75174
+434,153,1357,627,105,186,1,1,0.75633
+435,153,1338,630,104,187,1,1,0.78531
+436,153,1318,630,104,190,1,1,0.81192
+437,153,1299,633,101,190,1,1,0.84006
+438,153,1275,633,101,194,1,1,0.83308
+439,153,1256,631,97,197,1,1,0.86477
+440,153,1237,633,93,198,1,1,0.89415
+441,153,1218,635,88,197,1,1,0.92555
+442,153,1195,635,87,199,1,1,0.92591
+443,153,1172,636,86,200,1,1,0.92543
+444,153,1150,637,85,202,1,1,0.92531
+445,153,1127,638,85,205,1,1,0.97155
+446,153,1105,639,85,208,1,1,1
+447,153,1083,640,85,211,1,1,1
+448,153,1061,641,85,214,1,1,1
+449,153,1037,642,85,213,1,1,1
+450,153,1013,643,86,213,1,1,1
+451,153,987,645,85,214,1,1,1
+452,153,963,649,85,212,1,1,1
+453,153,936,649,85,216,1,1,1
+454,153,909,650,85,219,1,1,1
+455,153,883,651,84,222,1,1,1
+456,153,854,653,88,221,1,1,1
+457,153,826,655,89,226,1,1,1
+458,153,795,657,92,226,1,1,1
+459,153,762,660,92,230,1,1,1
+460,153,730,662,96,234,1,1,1
+461,153,696,666,97,238,1,1,1
+462,153,661,670,105,238,1,1,1
+463,153,626,673,116,238,1,1,1
+464,153,592,678,121,238,1,1,1
+465,153,558,683,128,238,1,1,1
+466,153,507,685,138,245,1,1,1
+467,153,473,690,133,246,1,1,1
+468,153,439,693,128,250,1,1,1
+469,153,396,694,132,254,1,1,1
+470,153,359,697,125,258,1,1,1
+471,153,324,696,124,262,1,1,1
+472,153,277,696,129,265,1,1,1
+473,153,237,696,127,270,1,1,1
+474,153,197,697,126,274,1,1,1
+475,153,157,698,125,278,1,1,1
+476,153,115,698,123,284,1,1,1
+477,153,74,699,120,290,1,1,1
+478,153,24,706,120,302,1,1,1
+479,153,-26,714,121,314,1,1,0.77869
+356,154,1645,565,37,127,1,1,0.2354
+357,154,1648,568,38,128,1,1,0.30888
+358,154,1651,569,39,129,1,1,0.13577
+359,154,1655,571,39,129,1,1,0.10692
+360,154,1658,573,39,130,1,1,0.14122
+361,154,1661,576,39,130,1,1,0.19752
+362,154,1664,578,39,131,1,1,0.13087
+363,154,1667,581,40,132,1,1,0.17898
+364,154,1669,584,41,130,1,1,0.15231
+365,154,1671,588,42,128,1,1,0.13413
+366,154,1673,592,43,126,1,1,0.12115
+367,154,1676,596,44,124,1,1,0.1072
+368,154,1681,597,45,125,1,1,0.11387
+369,154,1686,598,47,126,1,1,0.12008
+370,154,1687,598,48,127,1,1,0.14764
+371,154,1688,598,50,129,1,1,0.16501
+372,154,1689,598,52,130,1,1,0.13467
+373,154,1691,599,53,131,1,1,0.14829
+374,154,1704,601,42,132,1,1,0.074838
+375,154,1706,599,44,134,1,1,0.066667
+376,154,1709,597,46,136,1,1,0.065693
+377,154,1711,595,48,138,1,1,0.064748
+378,154,1714,594,50,140,1,1,0.06383
+379,154,1718,589,52,142,1,1,0.097902
+380,154,1719,588,53,144,1,1,0.10294
+381,154,1720,587,55,146,1,1,0.10811
+382,154,1721,586,57,148,1,1,0.16119
+383,154,1723,586,58,150,1,1,0.18734
+384,154,1725,586,58,151,1,1,0.21543
+385,154,1727,586,58,153,1,1,0.1937
+386,154,1730,586,57,154,1,1,0.15851
+387,154,1732,586,57,156,1,1,0.14156
+388,154,1735,587,56,157,1,1,0.098601
+389,154,1737,586,56,158,1,1,0.10405
+390,154,1739,585,57,159,1,1,0.12317
+391,154,1738,589,58,160,1,1,0.11464
+392,154,1738,590,58,161,1,1,0.11174
+393,154,1738,591,59,162,1,1,0.10961
+394,154,1735,592,59,162,1,1,0.11125
+395,154,1732,592,59,162,1,1,0.11411
+396,154,1729,593,59,162,1,1,0.11043
+397,154,1726,593,59,162,1,1,0.12393
+398,154,1723,593,59,162,1,1,0.14213
+399,154,1718,593,59,162,1,1,0.1362
+400,154,1713,593,59,162,1,1,0.15092
+401,154,1709,594,59,162,1,1,0.13988
+402,154,1705,592,59,162,1,1,0.15429
+403,154,1701,591,59,162,1,1,0.1636
+404,154,1692,591,60,162,1,1,0.20919
+405,154,1684,591,60,163,1,1,0.28529
+406,154,1676,591,60,164,1,1,0.31803
+407,154,1668,591,60,165,1,1,0.37182
+408,154,1660,592,60,165,1,1,0.34357
+409,154,1651,592,61,165,1,1,0.37281
+410,154,1643,592,61,166,1,1,0.3475
+411,154,1635,592,61,167,1,1,0.32776
+412,154,1627,592,61,168,1,1,0.28908
+413,154,1619,593,62,168,1,1,0.24364
+414,154,1606,592,62,168,1,1,0.23687
+415,154,1594,592,62,168,1,1,0.25171
+416,154,1582,592,62,168,1,1,0.21715
+417,154,1570,592,62,168,1,1,0.17977
+418,154,1558,592,62,168,1,1,0.15826
+419,154,1546,592,62,168,1,1,0.12088
+420,154,1534,592,62,168,1,1,0.10162
+421,154,1522,592,62,168,1,1,0.055321
+422,154,1510,592,62,168,1,1,0.054288
+423,154,1498,592,62,168,1,1,0.077487
+424,154,1479,593,62,169,1,1,0.092997
+425,154,1460,595,63,170,1,1,0.10618
+426,154,1442,597,62,171,1,1,0.11748
+427,154,1423,599,63,172,1,1,0.13268
+428,154,1405,601,63,173,1,1,0.15598
+429,154,1386,603,63,173,1,1,0.20151
+430,154,1367,605,64,174,1,1,0.22321
+431,154,1349,607,63,175,1,1,0.23491
+432,154,1330,609,64,176,1,1,0.25632
+433,154,1312,611,64,177,1,1,0.26871
+434,154,1291,611,64,178,1,1,0.28174
+435,154,1271,612,64,179,1,1,0.23889
+436,154,1250,612,64,181,1,1,0.24725
+437,154,1230,613,64,182,1,1,0.25683
+438,154,1210,613,63,184,1,1,0.26486
+439,154,1189,614,64,185,1,1,0.27419
+440,154,1169,614,63,187,1,1,0.28191
+441,154,1148,615,64,188,1,1,0.28571
+442,154,1128,615,63,190,1,1,0.29843
+443,154,1108,616,63,191,1,1,0.30208
+444,154,1084,616,67,195,1,1,0.30522
+445,154,1060,617,71,198,1,1,0.28322
+446,154,1036,617,75,202,1,1,0.30185
+447,154,1012,618,79,205,1,1,0.34248
+448,154,989,618,82,209,1,1,0.36288
+449,154,965,619,86,212,1,1,0.35168
+450,154,941,619,90,216,1,1,0.42396
+451,154,917,620,94,219,1,1,0.45287
+452,154,893,620,98,223,1,1,0.50839
+453,154,870,621,102,227,1,1,0.57052
+454,154,839,624,100,228,1,1,0.66721
+455,154,808,628,99,229,1,1,0.775
+456,154,777,631,98,231,1,1,0.79885
+457,154,746,635,97,232,1,1,0.83209
+458,154,715,638,96,234,1,1,0.83891
+459,154,684,642,95,235,1,1,0.8268
+460,154,653,645,94,237,1,1,0.82406
+461,154,622,649,93,238,1,1,0.80237
+462,154,591,652,92,240,1,1,0.77116
+463,154,560,656,91,241,1,1,0.73724
+464,154,520,657,93,244,1,1,0.78602
+465,154,481,659,95,247,1,1,0.82124
+466,154,442,660,97,251,1,1,0.69667
+467,154,402,662,100,254,1,1,0.73559
+468,154,363,664,102,257,1,1,0.76733
+469,154,324,665,104,261,1,1,0.7205
+470,154,284,667,107,264,1,1,0.72904
+471,154,245,668,109,268,1,1,0.74752
+472,154,206,670,111,271,1,1,0.66892
+473,154,167,672,113,274,1,1,0.64772
+474,154,122,677,109,276,1,1,0.70479
+475,154,77,682,105,278,1,1,0.76878
+476,154,32,687,102,280,1,1,0.81343
+477,154,-23,696,120,272,1,1,0.60549
+127,155,1169,524,18,46,1,1,0.40985
+128,155,1164,524,18,46,1,1,0.51288
+129,155,1160,524,18,46,1,1,0.51288
+130,155,1155,524,19,46,1,1,0.53723
+131,155,1151,524,18,46,1,1,0.62374
+132,155,1147,524,18,47,1,1,0.6239
+133,155,1142,524,19,47,1,1,0.69167
+134,155,1138,524,18,47,1,1,0.72807
+135,155,1133,524,19,47,1,1,0.79063
+136,155,1129,524,19,47,1,1,0.79063
+137,155,1125,524,19,48,1,1,0.8398
+138,155,1121,523,19,48,1,1,0.82959
+139,155,1117,523,19,48,1,1,0.87755
+140,155,1113,523,19,48,1,1,0.87755
+141,155,1110,522,18,49,1,1,0.90947
+142,155,1106,522,19,49,1,1,0.864
+143,155,1102,522,19,48,1,1,0.89694
+144,155,1099,521,18,49,1,1,0.87895
+145,155,1095,521,18,49,1,1,0.92632
+146,155,1091,521,18,49,1,1,0.92632
+147,155,1088,521,18,49,1,1,0.92105
+148,155,1083,521,18,49,1,1,0.91158
+149,155,1078,521,18,49,1,1,0.91789
+150,155,1073,521,18,49,1,1,0.92421
+151,155,1068,521,19,50,1,1,0.92941
+152,155,1063,521,19,50,1,1,0.93529
+153,155,1058,521,19,50,1,1,0.93137
+154,155,1054,522,19,50,1,1,0.94118
+155,155,1050,521,19,50,1,1,0.93137
+156,155,1045,523,19,51,1,1,0.95673
+157,155,1036,523,23,50,1,1,0.87745
+158,155,1032,523,22,49,1,1,0.87652
+159,155,1028,523,22,49,1,1,0.92
+160,155,1024,523,22,49,1,1,0.92
+161,155,1020,523,23,49,1,1,0.835
+162,155,1017,523,22,49,1,1,0.82087
+163,155,1013,523,23,50,1,1,0.82353
+164,155,1009,523,23,50,1,1,0.78186
+165,155,1006,523,22,50,1,1,0.81586
+166,155,1002,523,23,50,1,1,0.77614
+167,155,998,523,23,50,1,1,0.76797
+168,155,995,523,23,51,1,1,0.92949
+169,155,989,522,23,51,1,1,0.9351
+170,155,983,522,23,51,1,1,0.49119
+171,155,980,522,23,51,1,1,0.48558
+263,156,1028,524,30,77,1,1,0.35484
+264,156,1032,525,31,76,1,1,0.5625
+265,156,1036,526,32,76,1,1,0.75758
+266,156,1040,528,33,75,1,1,0.91176
+267,156,1049,529,33,75,1,1,0.97059
+268,156,1049,529,37,77,1,1,1
+269,156,1055,530,37,77,1,1,1
+270,156,1060,529,37,77,1,1,1
+271,156,1065,529,37,76,1,1,1
+272,156,1071,529,37,75,1,1,0.87361
+273,156,1075,528,37,76,1,1,0.90021
+274,156,1080,527,36,77,1,1,0.9501
+275,156,1085,527,36,77,1,1,0.94941
+276,156,1090,527,36,77,1,1,0.94941
+277,156,1095,528,36,77,1,1,0.94802
+278,156,1100,528,36,77,1,1,0.94802
+279,156,1105,528,36,77,1,1,0.94733
+280,156,1110,529,37,77,1,1,0.92206
+281,156,1115,529,38,77,1,1,0.89875
+282,156,1121,529,38,77,1,1,0.87344
+283,156,1127,529,38,77,1,1,0.84813
+284,156,1133,529,38,77,1,1,0.80605
+285,156,1137,528,38,76,1,1,0.73393
+286,156,1142,527,38,76,1,1,0.65634
+287,156,1147,527,37,75,1,1,0.60976
+288,156,1152,526,37,75,1,1,0.53566
+289,156,1157,525,36,75,1,1,0.47866
+290,156,1162,525,36,74,1,1,0.4018
+291,156,1167,525,35,72,1,1,0.39041
+292,156,1172,526,35,70,1,1,0.40023
+293,156,1177,527,35,68,1,1,0.39855
+294,156,1182,528,35,66,1,1,0.41045
+295,156,1186,527,36,70,1,1,0.41416
+296,156,1191,526,36,74,1,1,0.41766
+297,156,1196,526,36,77,1,1,0.4359
+298,156,1201,527,39,73,1,1,0.39459
+299,156,1206,527,39,77,1,1,0.44872
+300,156,1211,529,41,70,1,1,0.39302
+301,156,1216,532,44,63,1,1,0.37778
+302,156,1221,532,42,64,1,1,0.42004
+303,156,1226,532,40,65,1,1,0.46009
+304,156,1231,535,37,68,1,1,0.46949
+305,156,1236,538,35,66,1,1,0.47927
+306,156,1241,542,34,64,1,1,0.47824
+307,156,1246,543,32,63,1,1,0.51562
+308,156,1251,544,31,62,1,1,0.53968
+309,156,1256,545,31,62,1,1,0.52381
+310,156,1261,547,31,61,1,1,0.51613
+311,156,1259,547,36,62,1,1,0.52381
+312,156,1267,547,33,61,1,1,0.54839
+313,156,1269,548,34,64,1,1,0.52308
+314,156,1272,548,34,63,1,1,0.53125
+315,156,1276,548,34,62,1,1,0.55556
+316,156,1280,547,35,62,1,1,0.57143
+317,156,1285,546,35,63,1,1,0.59375
+318,156,1291,545,35,64,1,1,0.6
+319,156,1291,545,39,70,1,1,0.56338
+320,156,1296,545,41,71,1,1,0.55556
+321,156,1295,545,42,74,1,1,0.54667
+322,156,1304,546,42,71,1,1,0.54167
+323,156,1307,543,42,75,1,1,0.53947
+324,156,1311,541,42,75,1,1,0.55263
+325,156,1313,540,42,76,1,1,0.54545
+326,156,1316,540,42,76,1,1,0.53247
+327,156,1319,540,41,78,1,1,0.50633
+328,156,1323,540,43,77,1,1,0.5
+329,156,1326,539,43,75,1,1,0.51316
+330,156,1329,539,43,75,1,1,0.5
+331,156,1331,537,43,75,1,1,0.51077
+332,156,1333,534,43,78,1,1,0.50058
+333,156,1335,531,44,74,1,1,0.54222
+334,156,1337,527,44,75,1,1,0.55965
+335,156,1340,525,44,76,1,1,0.55411
+336,156,1343,524,44,77,1,1,0.4698
+337,156,1342,523,44,77,1,1,0.55185
+338,156,1342,522,44,78,1,1,0.60394
+339,156,1344,521,44,79,1,1,0.62778
+340,156,1346,521,44,80,1,1,0.64911
+341,156,1347,522,46,81,1,1,0.64971
+342,156,1349,524,47,81,1,1,0.64456
+343,156,1350,526,46,82,1,1,0.67598
+344,156,1351,529,46,83,1,1,0.67503
+345,156,1352,531,46,85,1,1,0.74666
+346,156,1353,534,46,85,1,1,0.72291
+347,156,1354,537,46,86,1,1,0.66324
+348,156,1356,539,45,88,1,1,0.64314
+349,156,1357,542,45,89,1,1,0.6413
+350,156,1358,545,45,89,1,1,0.62101
+351,156,1359,547,45,91,1,1,0.59972
+352,156,1360,550,45,92,1,1,0.56989
+353,156,1362,553,44,93,1,1,0.55272
+354,156,1362,554,45,94,1,1,0.56247
+355,156,1363,556,45,94,1,1,0.55286
+356,156,1364,557,45,96,1,1,0.5437
+357,156,1365,559,45,96,1,1,0.53608
+358,156,1366,561,46,97,1,1,0.52432
+359,156,1366,562,47,98,1,1,0.52083
+360,156,1367,564,47,98,1,1,0.55682
+361,156,1368,565,47,100,1,1,0.55507
+362,156,1369,567,47,100,1,1,0.56848
+363,156,1370,569,48,101,1,1,0.56283
+364,156,1370,570,48,101,1,1,0.59464
+365,156,1371,571,48,102,1,1,0.60769
+366,156,1372,572,48,103,1,1,0.62539
+367,156,1372,574,49,103,1,1,0.62577
+368,156,1373,575,49,104,1,1,0.63448
+369,156,1374,576,48,104,1,1,0.64101
+370,156,1374,578,49,104,1,1,0.62743
+371,156,1375,579,49,105,1,1,0.62264
+372,156,1376,580,49,106,1,1,0.61383
+373,156,1377,582,49,106,1,1,0.59813
+374,156,1375,580,49,106,1,1,0.63738
+375,156,1374,578,49,106,1,1,0.69047
+376,156,1373,577,49,106,1,1,0.68692
+377,156,1371,575,49,106,1,1,0.66729
+378,156,1370,574,49,106,1,1,0.64748
+379,156,1369,572,49,106,1,1,0.63832
+380,156,1367,570,49,106,1,1,0.61981
+381,156,1366,569,49,106,1,1,0.60336
+382,156,1365,567,49,106,1,1,0.60187
+383,156,1364,566,49,106,1,1,0.63215
+384,156,1360,565,49,106,1,1,0.65533
+385,156,1356,565,49,106,1,1,0.68822
+386,156,1352,564,49,106,1,1,0.71215
+387,156,1349,564,49,106,1,1,0.65963
+388,156,1345,564,49,106,1,1,0.63121
+389,156,1341,563,49,106,1,1,0.61533
+390,156,1338,563,49,106,1,1,0.56037
+391,156,1334,562,49,106,1,1,0.5286
+392,156,1330,562,49,106,1,1,0.4871
+393,156,1327,562,49,106,1,1,0.43215
+394,156,1320,561,49,106,1,1,0.45607
+395,156,1313,561,49,106,1,1,0.47421
+396,156,1306,561,49,106,1,1,0.49234
+397,156,1300,560,49,106,1,1,0.41981
+398,156,1293,560,49,106,1,1,0.3772
+399,156,1286,560,49,106,1,1,0.34056
+400,156,1280,559,49,106,1,1,0.28561
+401,156,1273,559,49,106,1,1,0.24131
+402,156,1266,559,49,106,1,1,0.2043
+403,156,1260,559,49,106,1,1,0.1172
+404,156,1247,558,49,106,1,1,0.14879
+405,156,1235,558,49,106,1,1,0.16729
+406,156,1223,557,49,106,1,1,0.21234
+407,156,1211,557,49,106,1,1,0.18579
+408,156,1199,557,49,106,1,1,0.16729
+409,156,1187,556,49,106,1,1,0.15738
+410,156,1175,556,49,106,1,1,0.13907
+411,156,1163,555,49,106,1,1,0.14486
+412,156,1151,555,49,106,1,1,0.14187
+413,156,1139,555,49,106,1,1,0.16785
+414,156,1123,553,49,107,1,1,0.17667
+415,156,1108,551,49,109,1,1,0.19909
+416,156,1093,550,49,109,1,1,0.216
+417,156,1078,548,49,111,1,1,0.22393
+418,156,1063,547,49,111,1,1,0.23393
+419,156,1048,545,48,113,1,1,0.24311
+420,156,1033,543,48,114,1,1,0.26761
+421,156,1018,542,48,115,1,1,0.28343
+422,156,1003,540,48,116,1,1,0.29147
+423,156,988,539,48,117,1,1,0.36648
+424,156,968,540,48,117,1,1,0.38672
+425,156,948,541,48,117,1,1,0.35559
+426,156,928,542,48,117,1,1,0.37945
+427,156,908,543,48,117,1,1,0.38481
+428,156,889,545,48,117,1,1,0.40194
+429,156,869,546,48,117,1,1,0.36648
+430,156,849,547,48,117,1,1,0.43826
+431,156,829,548,48,117,1,1,0.39952
+432,156,809,549,48,117,1,1,0.37842
+433,156,790,551,48,117,1,1,0.31097
+434,156,767,551,48,117,1,1,0.43532
+435,156,745,551,48,117,1,1,0.29747
+436,156,722,551,48,117,1,1,0.45832
+437,156,700,551,48,117,1,1,0.54946
+438,156,678,552,48,117,1,1,0.47112
+439,156,655,552,48,117,1,1,0.43756
+440,156,633,552,48,117,1,1,0.51591
+441,156,610,552,48,117,1,1,0.49395
+442,156,588,552,48,117,1,1,0.33795
+443,156,566,553,48,117,1,1,0.36095
+444,156,539,553,48,117,1,1,0.38136
+445,156,515,557,48,117,1,1,0.5467
+446,156,493,557,49,117,1,1,0.44254
+447,156,467,559,49,117,1,1,0.31966
+448,156,441,556,49,117,1,1,0.44373
+449,156,422,556,49,117,1,1,0.34237
+450,156,395,557,49,117,1,1,0.28
+451,156,366,557,49,117,1,1,0.28508
+452,156,322,550,48,123,1,1,0.33723
+453,156,294,552,48,123,1,1,0.76893
+453,157,504,560,44,147,1,1,0.17432
+454,157,471,561,45,150,1,1,0.051828
+455,157,438,562,46,153,1,1,0.055955
+456,157,406,564,47,155,1,1,0.053686
+457,157,373,565,48,159,1,1,0.057526
+458,157,340,566,49,162,1,1,0.061595
+459,157,308,568,50,164,1,1,0.059655
+460,157,275,569,51,167,1,1,0.059066
+461,157,243,571,52,170,1,1,0.46044
+462,157,211,573,50,165,1,1,0.055752
+463,157,180,575,56,165,1,1,0.055696
+464,157,146,577,57,174,1,1,0.58867
+465,157,100,578,69,171,1,1,0.52326
+466,157,66,576,72,174,1,1,0.61487
+467,157,31,576,69,174,1,1,0.068571
+468,157,-4,576,69,174,1,1,0.32024
+452,158,448,571,44,157,1,1,0.10464
+453,158,423,570,44,158,1,1,0.426
+454,158,395,571,44,157,1,1,0.48608
+455,158,368,572,41,158,1,1,0.5602
+456,158,338,574,41,162,1,1,0.56529
+457,158,307,576,45,162,1,1,0.55055
+458,158,276,578,49,162,1,1,0.5465
+459,158,241,580,56,162,1,1,0.50102
+460,158,206,582,63,162,1,1,0.5047
+461,158,172,584,69,163,1,1,0.47735
+462,158,134,587,70,162,1,1,0.52761
+463,158,100,589,70,162,1,1,0.55362
+464,158,61,589,73,170,1,1,0.60139
+465,158,23,589,77,170,1,1,0.5063
+466,158,-12,588,76,169,1,1,0.31169
+31,159,1473,522,22,51,1,1,0.020903
+32,159,1473,520,25,51,1,1,0.064349
+33,159,1474,508,24,51,1,1,0.11154
+34,159,1476,506,23,51,1,1,0.45192
+35,159,1478,504,23,51,1,1,0.38462
+36,159,1479,501,22,51,1,1,0.50669
+37,159,1479,500,22,51,1,1,0.60368
+38,159,1480,499,21,51,1,1,0.73601
+39,159,1483,502,21,51,1,1,0.76399
+40,159,1482,498,20,51,1,1,0.89011
+41,159,1483,499,20,52,1,1,0.91105
+42,159,1485,501,19,52,1,1,0.93774
+43,159,1486,506,18,47,1,1,0.98026
+44,159,1486,504,19,52,1,1,1
+45,159,1487,508,19,52,1,1,1
+46,159,1489,505,19,52,1,1,0.6
+47,159,1488,507,19,52,1,1,0.45
+48,159,1487,509,19,52,1,1,0.4
+49,159,1487,512,19,52,1,1,0.35
+50,159,1487,510,19,52,1,1,0.3
+51,159,1487,510,19,52,1,1,0.2
+52,159,1487,510,19,52,1,1,0.2
+53,159,1487,511,19,52,1,1,0.35
+54,159,1487,511,19,52,1,1,0.4
+55,159,1487,511,19,52,1,1,0.45
+56,159,1488,512,19,52,1,1,0.45
+57,159,1488,510,19,52,1,1,0.55
+58,159,1488,508,19,52,1,1,0.55
+59,159,1488,506,19,52,1,1,0.6
+60,159,1488,504,19,52,1,1,0.65
+61,159,1488,502,19,52,1,1,0.75
+62,159,1489,507,19,52,1,1,1
+63,159,1488,493,19,52,1,1,1
+64,159,1488,503,19,52,1,1,1
+65,159,1487,500,19,52,1,1,1
+66,159,1486,497,19,52,1,1,1
+67,159,1486,508,22,51,1,1,1
+68,159,1484,502,23,51,1,1,1
+69,159,1484,510,19,52,1,1,0.85
+70,159,1482,506,19,52,1,1,0.65
+71,159,1479,510,19,52,1,1,0.5
+72,159,1479,507,19,52,1,1,0.71981
+97,160,1395,522,19,52,1,1,0.15
+98,160,1390,521,18,54,1,1,0.26699
+99,160,1385,521,18,56,1,1,0.53832
+100,160,1382,520,19,54,1,1,0.35727
+101,160,1376,522,20,52,1,1,0.38095
+102,160,1372,520,20,52,1,1,0.43935
+103,160,1368,518,21,52,1,1,0.50858
+104,160,1364,519,21,52,1,1,0.52744
+105,160,1360,518,21,52,1,1,0.5446
+106,160,1356,518,21,52,1,1,0.60549
+107,160,1352,518,21,52,1,1,0.57633
+108,160,1348,517,22,52,1,1,0.55373
+109,160,1344,517,22,52,1,1,0.47006
+110,160,1340,517,22,52,1,1,0.56932
+111,160,1337,517,22,52,1,1,0.49713
+112,160,1332,517,22,52,1,1,0.43888
+113,160,1327,517,22,52,1,1,0.39869
+114,160,1322,517,22,52,1,1,0.35603
+115,160,1317,517,22,52,1,1,0.24364
+116,160,1312,517,23,52,1,1,0.2272
+117,160,1307,517,23,52,1,1,0.21698
+118,160,1302,517,23,52,1,1,0.19182
+119,160,1297,517,23,52,1,1,0.12893
+120,160,1292,517,23,52,1,1,0.038522
+121,160,1288,518,23,51,1,1,0.14183
+122,160,1284,518,23,51,1,1,0.14103
+123,160,1281,518,23,51,1,1,0.15385
+124,160,1278,519,23,51,1,1,0.14583
+125,160,1274,519,24,51,1,1,0.14462
+126,160,1271,519,24,51,1,1,0.18846
+127,160,1268,520,24,51,1,1,0.16538
+128,160,1264,520,24,51,1,1,0.15462
+129,160,1261,521,24,51,1,1,0.23692
+130,160,1258,521,24,51,1,1,0.30769
+131,160,1254,521,25,51,1,1,0.36982
+132,160,1251,522,25,51,1,1,0.40163
+133,160,1248,522,25,51,1,1,0.4253
+134,160,1245,523,25,51,1,1,0.49926
+135,160,1241,522,24,52,1,1,0.51774
+136,160,1237,522,24,52,1,1,0.52075
+137,160,1232,522,24,52,1,1,0.53962
+138,160,1228,522,24,52,1,1,0.57585
+139,160,1224,522,23,52,1,1,0.75
+140,160,1219,522,24,52,1,1,0.72
+141,160,1215,522,24,53,1,1,0.72
+142,160,1211,522,23,53,1,1,0.70833
+143,160,1206,522,24,53,1,1,0.68
+144,160,1202,522,23,53,1,1,0.70833
+145,160,1198,522,23,53,1,1,0.70833
+146,160,1194,523,23,53,1,1,1
+147,160,1189,522,23,53,1,1,0.66667
+148,160,1184,522,23,53,1,1,0.625
+149,160,1180,522,22,53,1,1,1
+150,160,1175,522,22,53,1,1,1
+151,160,1171,522,21,53,1,1,1
+152,160,1166,522,21,53,1,1,1
+153,160,1162,522,21,53,1,1,1
+154,160,1155,522,22,53,1,1,1
+155,160,1148,522,23,53,1,1,1
+200,161,900,529,24,55,1,1,0.44
+201,161,898,529,24,55,1,1,0.84571
+202,161,896,530,24,55,1,1,0.82643
+203,161,894,530,24,56,1,1,0.82947
+204,161,892,531,24,56,1,1,0.81053
+205,161,891,531,23,57,1,1,0.79885
+206,161,889,532,23,56,1,1,0.77485
+207,161,887,532,23,57,1,1,0.77083
+208,161,885,533,23,57,1,1,0.77083
+209,161,883,533,23,58,1,1,0.78814
+210,161,882,534,23,58,1,1,0.78814
+211,161,881,533,23,59,1,1,0.8
+212,161,880,533,23,59,1,1,0.79375
+213,161,880,533,23,60,1,1,0.79098
+214,161,879,533,23,60,1,1,0.78484
+215,161,879,533,23,60,1,1,0.7541
+216,161,878,533,23,61,1,1,0.77218
+217,161,878,533,23,61,1,1,0.70699
+218,161,877,533,23,61,1,1,0.67809
+219,161,877,533,23,62,1,1,0.58995
+220,161,878,536,23,62,1,1,0.5086
+221,161,878,539,22,58,1,1,0.4871
+222,161,876,534,22,60,1,1,0.57947
+223,161,876,533,22,61,1,1,0.55119
+224,161,877,533,21,61,1,1,0.53079
+225,161,877,533,22,62,1,1,0.49896
+226,161,878,533,21,62,1,1,0.4531
+227,161,878,533,21,62,1,1,0.44444
+228,161,879,533,21,63,1,1,0.42188
+229,161,879,533,21,63,1,1,0.39631
+230,161,880,533,21,64,1,1,0.33287
+231,161,881,532,21,64,1,1,0.32727
+232,161,882,532,22,64,1,1,0.32375
+233,161,884,532,21,63,1,1,0.31534
+234,161,885,531,22,64,1,1,0.31304
+235,161,886,531,22,63,1,1,0.34647
+236,161,888,531,22,63,1,1,0.30571
+237,161,888,531,23,61,1,1,0.36223
+238,161,888,531,24,60,1,1,0.40918
+239,161,889,531,25,59,1,1,0.42179
+240,161,891,530,27,60,1,1,0.38525
+241,161,892,529,27,60,1,1,0.41276
+242,161,893,529,25,63,1,1,0.50841
+243,161,898,529,25,68,1,1,0.44872
+244,161,900,529,25,67,1,1,0.681
+245,161,905,529,25,67,1,1,0.70928
+246,161,907,529,25,67,1,1,0.7862
+247,161,910,529,25,67,1,1,0.82183
+248,161,913,529,25,67,1,1,0.8914
+249,161,917,529,25,67,1,1,0.96324
+250,161,921,529,25,67,1,1,1
+251,161,925,530,25,67,1,1,1
+252,161,930,530,25,67,1,1,1
+253,161,934,532,25,67,1,1,1
+254,161,940,531,25,67,1,1,1
+255,161,944,531,25,67,1,1,1
+256,161,950,531,25,67,1,1,1
+257,161,954,531,25,67,1,1,1
+258,161,959,531,25,67,1,1,1
+259,161,964,531,25,67,1,1,1
+260,161,969,531,25,67,1,1,1
+261,161,974,531,25,67,1,1,1
+262,161,980,531,25,67,1,1,1
+263,161,985,531,25,67,1,1,1
+264,161,990,531,25,67,1,1,1
+265,161,995,531,25,67,1,1,1
+266,161,1000,531,25,67,1,1,1
+267,161,1006,532,25,67,1,1,1
+268,161,1011,531,24,72,1,1,1
+269,161,1016,530,24,71,1,1,1
+270,161,1022,530,23,69,1,1,1
+271,161,1027,529,25,70,1,1,1
+272,161,1032,528,28,72,1,1,1
+273,161,1040,530,23,70,1,1,1
+274,161,1046,529,23,70,1,1,1
+275,161,1052,529,23,70,1,1,0.94484
+276,161,1058,528,23,70,1,1,0.86502
+277,161,1064,528,24,70,1,1,0.82254
+278,161,1070,528,24,68,1,1,0.77565
+279,161,1076,528,24,67,1,1,0.71059
+280,161,1082,528,24,65,1,1,0.66909
+281,161,1088,528,24,64,1,1,0.61292
+282,161,1095,528,24,63,1,1,0.5725
+283,161,1100,528,24,61,1,1,0.47355
+284,161,1106,528,24,60,1,1,0.45902
+285,161,1112,528,24,59,1,1,0.46667
+286,161,1118,529,24,58,1,1,0.43932
+287,161,1125,529,24,57,1,1,0.40966
+288,161,1130,528,24,57,1,1,0.42483
+289,161,1136,528,23,56,1,1,0.42982
+290,161,1142,528,23,55,1,1,0.41667
+291,161,1148,527,23,55,1,1,0.40997
+292,161,1154,527,23,54,1,1,0.40909
+293,161,1160,527,23,53,1,1,0.39352
+294,161,1165,527,23,52,1,1,0.41981
+295,161,1170,527,23,51,1,1,0.41026
+296,161,1175,527,23,50,1,1,0.43137
+297,161,1180,527,23,50,1,1,0.43137
+298,161,1188,528,23,50,1,1,0.35049
+299,161,1193,529,23,50,1,1,0.35049
+300,161,1198,531,23,50,1,1,0.33987
+301,161,1204,532,23,50,1,1,0.31373
+302,161,1209,534,23,50,1,1,0.31373
+303,161,1214,535,23,50,1,1,0.32353
+304,161,1220,537,23,50,1,1,0.29657
+305,161,1225,538,23,50,1,1,0.30556
+306,161,1230,539,23,50,1,1,0.34641
+281,162,1165,530,26,71,1,1,0.22222
+282,162,1170,530,27,72,1,1,0.28571
+283,162,1175,530,28,73,1,1,0.37931
+284,162,1181,530,29,74,1,1,0.43333
+285,162,1189,530,24,74,1,1,0.64
+286,162,1194,528,26,75,1,1,0.66667
+287,162,1199,526,28,76,1,1,0.69324
+288,162,1204,525,30,77,1,1,0.71299
+289,162,1209,525,30,77,1,1,0.80893
+290,162,1214,525,30,78,1,1,0.5194
+291,162,1219,525,30,79,1,1,0.77419
+292,162,1224,525,30,79,1,1,0.82823
+293,162,1229,525,30,80,1,1,0.88371
+294,162,1234,526,30,80,1,1,0.94106
+295,162,1237,525,30,80,1,1,0.90641
+296,162,1242,526,30,80,1,1,0.81282
+297,162,1248,528,29,79,1,1,0.72
+298,162,1253,530,29,78,1,1,0.61519
+299,162,1259,532,28,78,1,1,0.50808
+300,162,1264,531,27,77,1,1,0.337
+301,162,1269,530,26,76,1,1,0.40885
+302,162,1274,530,26,75,1,1,0.38596
+303,162,1279,533,25,74,1,1,0.43077
+304,162,1285,537,24,73,1,1,0.41027
+305,162,1287,541,24,73,1,1,0.40216
+306,162,1291,541,25,73,1,1,0.39449
+307,162,1296,542,26,72,1,1,0.39675
+308,162,1300,543,27,74,1,1,0.41667
+309,162,1305,545,26,73,1,1,0.3964
+310,162,1309,545,27,73,1,1,0.42664
+311,162,1313,545,26,74,1,1,0.44938
+312,162,1318,546,24,74,1,1,0.46667
+313,162,1323,547,22,74,1,1,0.46667
+314,162,1327,548,23,68,1,1,0.45169
+315,162,1332,550,27,64,1,1,0.36264
+316,162,1336,550,27,64,1,1,0.31703
+317,162,1340,551,27,64,1,1,0.31319
+318,162,1344,552,27,64,1,1,0.31868
+319,162,1348,553,27,64,1,1,0.33462
+320,162,1351,548,27,63,1,1,0.20089
+321,162,1355,548,26,63,1,1,0.22801
+322,162,1359,548,26,63,1,1,0.20255
+323,162,1363,549,26,63,1,1,0.17245
+324,162,1367,549,26,63,1,1,0.14931
+325,162,1371,550,26,63,1,1,0.12963
+326,162,1376,548,26,63,1,1,0.12963
+327,162,1379,546,26,63,1,1,0.13368
+328,162,1382,544,26,63,1,1,0.14178
+329,162,1385,542,26,63,1,1,0.1603
+330,162,1386,539,26,63,1,1,0.14815
+331,162,1388,537,26,63,1,1,0.14815
+332,162,1390,535,26,63,1,1,0.13194
+333,162,1392,532,26,63,1,1,0.12731
+334,162,1394,530,26,63,1,1,0.11285
+335,162,1396,528,26,63,1,1,0.14062
+336,162,1399,528,26,63,1,1,0.11458
+270,163,1093,532,21,72,1,1,0.18182
+271,163,1098,532,21,72,1,1,0.27273
+272,163,1104,532,21,72,1,1,0.31818
+273,163,1109,532,22,72,1,1,0.43478
+274,163,1115,533,22,72,1,1,0.65217
+275,163,1120,532,23,73,1,1,0.75
+276,163,1125,532,24,73,1,1,0.8
+277,163,1130,531,25,74,1,1,0.76923
+278,163,1135,531,26,74,1,1,0.81481
+279,163,1140,530,25,75,1,1,0.92308
+280,163,1145,530,25,76,1,1,0.88462
+281,163,1150,530,24,77,1,1,1
+282,163,1155,530,24,77,1,1,1
+283,163,1160,530,23,78,1,1,1
+284,163,1165,530,23,79,1,1,1
+285,163,1170,529,22,79,1,1,1
+286,163,1175,528,22,79,1,1,1
+287,163,1180,528,22,78,1,1,1
+288,163,1185,527,22,78,1,1,1
+289,163,1190,527,21,77,1,1,1
+290,163,1195,526,21,77,1,1,0.86364
+291,163,1200,526,21,76,1,1,0.7804
+292,163,1205,525,21,76,1,1,0.65112
+293,163,1210,525,21,75,1,1,0.54785
+294,163,1215,525,21,75,1,1,0.42823
+295,163,1220,526,22,74,1,1,0.32522
+296,163,1225,527,23,73,1,1,0.26014
+297,163,1230,528,24,72,1,1,0.26301
+298,163,1235,529,26,71,1,1,0.20216
+299,163,1240,530,25,70,1,1,0.23294
+300,163,1245,531,25,70,1,1,0.32936
+301,163,1250,532,24,70,1,1,0.34254
+302,163,1255,534,24,69,1,1,0.34743
+303,163,1260,535,24,69,1,1,0.35829
+304,163,1266,537,24,68,1,1,0.36348
+305,163,1270,538,24,67,1,1,0.35412
+306,163,1275,539,24,67,1,1,0.32118
+307,163,1279,540,24,67,1,1,0.36941
+308,163,1284,541,24,67,1,1,0.35882
+309,163,1289,543,24,66,1,1,0.34507
+310,163,1293,544,24,65,1,1,0.34485
+311,163,1298,545,24,65,1,1,0.31818
+312,163,1302,546,24,65,1,1,0.33939
+313,163,1307,547,24,65,1,1,0.33939
+314,163,1312,549,24,64,1,1,0.30462
+315,163,1316,549,24,64,1,1,0.34031
+316,163,1320,549,24,64,1,1,0.34031
+317,163,1324,549,24,64,1,1,0.35569
+318,163,1328,549,24,64,1,1,0.36123
+319,163,1332,550,24,64,1,1,0.35754
+320,163,1336,550,24,64,1,1,0.47508
+321,163,1340,550,24,64,1,1,0.52923
+322,163,1344,550,24,64,1,1,0.45169
+323,163,1348,550,24,64,1,1,0.45908
+324,163,1352,551,24,64,1,1,0.45292
+325,163,1354,549,24,64,1,1,0.30954
+326,163,1357,547,24,64,1,1,0.35938
+327,163,1359,546,25,64,1,1,0.48107
+328,163,1362,544,24,64,1,1,0.43077
+329,163,1364,543,25,64,1,1,0.40118
+330,163,1367,541,25,64,1,1,0.42604
+331,163,1369,539,25,64,1,1,0.42604
+332,163,1372,538,25,64,1,1,0.43491
+333,163,1374,536,26,64,1,1,0.4188
+334,163,1377,535,26,64,1,1,0.42621
+335,163,1378,535,26,65,1,1,0.35915
+336,163,1380,536,26,65,1,1,0.3092
+337,163,1382,536,25,66,1,1,0.49254
+338,163,1383,537,26,67,1,1,0.47059
+339,163,1385,538,26,67,1,1,0.45588
+340,163,1387,538,25,68,1,1,0.44928
+341,163,1388,539,26,69,1,1,0.47143
+342,163,1390,539,25,70,1,1,0.50704
+343,163,1392,540,25,70,1,1,0.51679
+344,163,1394,541,25,71,1,1,0.336
+345,163,1395,542,25,72,1,1,0.35406
+346,163,1396,544,26,72,1,1,0.33993
+347,163,1398,546,26,73,1,1,0.34234
+348,163,1399,548,26,73,1,1,0.32933
+349,163,1401,550,26,74,1,1,0.29531
+350,163,1402,551,27,75,1,1,0.26504
+351,163,1403,553,27,75,1,1,0.24295
+352,163,1405,555,27,76,1,1,0.22959
+353,163,1406,557,28,76,1,1,0.20152
+507,164,1905,503,61,53,0,3,0.25806
+508,164,1872,507,69,49,0,3,0.7
+509,164,1843,507,72,50,0,3,1
+510,164,1815,507,70,53,0,3,1
+511,164,1785,508,70,52,0,3,1
+512,164,1756,510,70,51,0,3,1
+513,164,1727,511,69,51,0,3,1
+514,164,1698,513,69,50,0,3,1
+515,164,1670,512,68,50,0,3,1
+516,164,1643,511,66,50,0,3,1
+517,164,1615,510,65,50,0,3,1
+518,164,1588,509,64,50,0,3,1
+519,164,1563,507,64,50,0,3,1
+520,164,1539,506,63,50,0,3,1
+521,164,1514,505,63,50,0,3,1
+522,164,1490,504,62,50,0,3,1
+523,164,1466,503,61,50,0,3,1
+524,164,1442,502,60,50,0,3,1
+525,164,1418,501,60,50,0,3,1
+526,164,1394,500,59,50,0,3,0.99412
+527,164,1370,499,59,50,0,3,0.99216
+528,164,1347,499,58,49,0,3,0.99186
+529,164,1325,498,58,49,0,3,0.98814
+530,164,1304,497,57,49,0,3,0.98793
+531,164,1280,498,57,50,0,3,0.98377
+532,164,1261,499,58,49,0,3,0.97017
+533,164,1238,497,58,49,0,3,0.9739
+546,165,999,511,58,49,0,3,0.6678
+547,165,982,505,58,46,0,3,0.7198
+548,165,966,505,57,45,0,3,0.72226
+549,165,949,500,57,45,0,3,0.75412
+550,165,935,494,56,43,0,3,0.82018
+551,165,921,493,55,42,0,3,0.82973
+552,165,908,492,54,41,0,3,0.83636
+553,165,895,491,53,40,0,3,0.84463
+554,165,882,491,52,39,0,3,0.85802
+555,165,868,490,52,38,0,3,0.89598
+556,165,855,489,51,37,0,3,0.86336
+557,165,842,488,50,36,0,3,0.82936
+558,165,829,488,49,35,0,3,0.765
+559,165,814,487,51,36,0,3,0.73493
+560,165,799,487,53,37,0,3,0.71053
+561,165,787,486,53,37,0,3,0.71053
+562,165,775,486,53,37,0,3,0.68421
+563,165,763,486,54,37,0,3,0.65789
+564,165,751,486,54,37,0,3,0.63158
+565,165,739,485,54,38,0,3,0.64103
+566,165,727,485,55,38,0,3,0.64103
+567,165,715,485,55,38,0,3,0.66667
+568,165,703,485,56,38,0,3,0.66667
+569,165,693,484,54,38,0,3,0.71795
+570,165,683,484,53,37,0,3,0.71053
+571,165,673,483,53,37,0,3,0.71053
+572,165,663,483,54,37,0,3,0.71053
+573,165,654,482,54,38,0,3,0.69231
+574,165,644,482,55,38,0,3,0.66667
+575,165,634,482,55,37,0,3,0.68421
+576,165,625,481,55,38,0,3,0.71795
+577,165,615,481,56,38,0,3,0.69231
+578,165,606,481,56,38,0,3,0.67836
+579,165,600,482,52,38,0,3,0.6299
+580,165,594,483,49,38,0,3,0.59026
+581,165,586,482,50,38,0,3,0.60684
+582,165,579,481,50,39,0,3,0.5902
+583,165,571,481,51,39,0,3,0.57692
+584,165,564,480,52,40,0,3,0.59411
+585,165,557,479,52,41,0,3,0.59479
+586,165,549,479,53,41,0,3,0.57407
+587,165,542,478,53,42,0,3,0.56934
+588,165,535,478,54,42,0,3,0.59408
+589,165,531,477,53,42,0,3,0.63997
+590,165,527,477,52,41,0,3,0.63432
+591,165,523,477,52,41,0,3,0.65903
+592,165,520,477,52,41,0,3,0.70036
+593,165,516,477,52,41,0,3,0.72102
+594,165,513,477,52,41,0,3,0.74528
+595,165,509,477,53,41,0,3,0.72487
+596,165,506,477,52,41,0,3,0.71968
+597,165,502,477,53,41,0,3,0.74603
+598,165,499,477,53,42,0,3,0.7416
+599,165,498,481,53,42,0,3,0.72093
+600,165,498,486,53,42,0,3,0.70629
+601,165,497,484,53,42,0,3,0.73471
+602,165,496,483,53,42,0,3,0.79845
+603,165,495,482,53,42,0,3,0.82084
+604,165,494,481,53,42,0,3,0.8385
+605,165,493,480,53,42,0,3,0.84324
+606,165,492,479,53,42,0,3,0.84884
+607,165,491,478,53,42,0,3,0.86047
+608,165,491,477,53,42,0,3,0.87209
+609,165,490,476,53,42,0,3,0.88372
+610,165,489,476,53,42,0,3,0.8876
+611,165,488,475,53,42,0,3,0.8876
+612,165,488,475,53,42,0,3,0.90956
+613,165,487,475,53,42,0,3,0.90655
+614,165,486,474,53,42,0,3,0.8932
+615,165,486,474,53,42,0,3,0.88975
+616,165,485,473,53,42,0,3,0.91731
+617,165,484,473,53,42,0,3,0.93109
+618,165,484,473,53,42,0,3,0.9466
+619,165,483,473,53,42,0,3,0.9466
+620,165,483,474,53,42,0,3,0.94488
+621,165,482,475,53,42,0,3,0.97071
+622,165,482,476,53,42,0,3,0.98536
+623,165,483,476,53,42,0,3,1
+624,165,484,477,53,42,0,3,1
+625,165,485,478,53,42,0,3,1
+626,165,486,479,53,42,0,3,1
+627,165,487,480,53,42,0,3,1
+628,165,488,481,53,42,0,3,1
+629,165,491,485,53,42,0,3,1
+630,165,494,485,53,42,0,3,1
+631,165,497,486,53,41,0,3,1
+632,165,500,486,53,41,0,3,1
+633,165,504,487,53,41,0,3,1
+634,165,507,488,53,41,0,3,1
+635,165,510,489,53,41,0,3,1
+636,165,514,490,53,42,0,3,1
+637,165,517,491,53,42,0,3,1
+638,165,521,493,53,42,0,3,1
+639,165,525,493,53,42,0,3,1
+640,165,530,493,53,42,0,3,1
+641,165,535,494,53,42,0,3,1
+642,165,540,494,53,42,0,3,1
+643,165,545,495,53,42,0,3,1
+644,165,549,495,53,42,0,3,1
+645,165,554,495,53,42,0,3,1
+646,165,559,496,53,42,0,3,1
+647,165,564,496,53,42,0,3,1
+648,165,569,497,53,42,0,3,1
+649,165,574,497,53,41,0,3,1
+650,165,579,497,53,41,0,3,1
+651,165,587,494,53,41,0,3,1
+652,165,595,491,54,41,0,3,1
+653,165,599,491,53,41,0,3,1
+654,165,607,490,53,41,0,3,1
+655,165,615,489,54,42,0,3,1
+656,165,622,493,53,42,0,3,1
+657,165,631,495,53,41,0,3,1
+658,165,641,496,53,43,0,3,1
+659,165,648,510,53,42,0,3,1
+660,165,654,509,53,42,0,3,1
+661,165,659,509,53,42,0,3,1
+662,165,665,509,53,42,0,3,1
+663,165,672,507,53,42,0,3,1
+664,165,679,506,53,42,0,3,1
+665,165,686,504,53,42,0,3,1
+666,165,693,503,53,42,0,3,1
+667,165,700,501,53,43,0,3,1
+668,165,707,500,53,43,0,3,1
+669,165,716,497,53,42,0,3,1
+670,165,723,494,53,43,0,3,1
+671,165,730,492,53,43,0,3,1
+672,165,738,490,53,43,0,3,1
+673,165,745,488,53,43,0,3,1
+674,165,752,486,53,43,0,3,1
+675,165,760,484,53,43,0,3,1
+676,165,767,484,53,43,0,3,1
+677,165,774,484,53,43,0,3,1
+678,165,782,484,53,43,0,3,1
+679,165,788,492,53,43,0,3,1
+680,165,798,490,53,43,0,3,1
+681,165,800,511,53,42,0,3,1
+682,165,804,525,54,42,0,3,1
+683,165,811,503,53,43,0,3,1
+684,165,816,495,53,41,0,3,1
+685,165,823,490,53,41,0,3,1
+686,165,830,485,53,42,0,3,1
+687,165,837,482,53,43,0,3,1
+688,165,845,480,53,43,0,3,1
+689,165,851,479,53,42,0,3,1
+690,165,857,479,53,41,0,3,1
+691,165,863,478,53,42,0,3,1
+692,165,869,477,53,44,0,3,1
+693,165,876,477,53,45,0,3,1
+694,165,883,480,53,45,0,3,1
+695,165,891,483,53,45,0,3,1
+696,165,896,483,53,46,0,3,1
+697,165,902,483,53,47,0,3,1
+698,165,908,483,53,49,0,3,1
+699,165,918,485,53,48,0,3,1
+700,165,922,486,54,48,0,3,1
+701,165,928,486,54,48,0,3,1
+702,165,934,487,54,48,0,3,1
+703,165,939,489,54,49,0,3,1
+704,165,944,492,55,49,0,3,1
+705,165,950,494,54,49,0,3,1
+706,165,956,496,54,49,0,3,1
+707,165,959,496,55,49,0,3,1
+708,165,962,497,56,49,0,3,1
+709,165,967,500,58,50,0,3,1
+710,165,973,508,57,49,0,3,1
+711,165,976,504,57,50,0,3,1
+712,165,981,506,57,49,0,3,1
+713,165,984,504,58,50,0,3,1
+714,165,988,504,57,50,0,3,1
+715,165,992,504,57,50,0,3,1
+716,165,996,504,56,50,0,3,1
+717,165,1000,504,56,50,0,3,1
+718,165,1004,505,56,49,0,3,1
+719,165,1008,506,56,49,0,3,1
+720,165,1012,507,56,49,0,3,1
+721,165,1016,508,57,49,0,3,1
+722,165,1020,509,57,49,0,3,1
+723,165,1025,511,57,49,0,3,1
+724,165,1027,520,58,48,0,3,1
+725,165,1032,517,57,49,0,3,1
+726,165,1037,519,57,49,0,3,1
+727,165,1042,522,57,49,0,3,1
+728,165,1047,525,58,49,0,3,1
+729,165,1050,524,58,49,0,3,1
+730,165,1054,524,58,49,0,3,1
+731,165,1057,523,59,49,0,3,1
+732,165,1061,522,59,49,0,3,1
+733,165,1064,522,60,49,0,3,1
+734,165,1068,521,60,49,0,3,1
+735,165,1071,521,61,49,0,3,1
+736,165,1075,520,61,49,0,3,1
+737,165,1079,520,62,49,0,3,1
+738,165,1081,521,61,49,0,3,1
+739,165,1084,521,61,49,0,3,1
+740,165,1087,521,61,50,0,3,1
+741,165,1089,523,61,50,0,3,1
+742,165,1091,525,61,50,0,3,1
+743,165,1093,528,61,49,0,3,1
+744,165,1094,528,61,49,0,3,1
+745,165,1096,528,61,49,0,3,1
+746,165,1098,528,61,49,0,3,1
+747,165,1100,528,61,49,0,3,1
+748,165,1102,528,61,50,0,3,1
+749,165,1104,528,61,50,0,3,1
+750,165,1107,528,61,50,0,3,1
+586,166,920,526,100,61,0,3,0.09901
+587,166,915,525,100,61,0,3,0.13861
+588,166,910,524,100,61,0,3,0.16832
+589,166,906,524,100,61,0,3,0.18812
+590,166,901,523,100,61,0,3,0.23762
+591,166,897,523,100,61,0,3,0.25743
+592,166,894,522,102,62,0,3,0.29126
+593,166,891,522,104,63,0,3,0.32381
+594,166,889,522,105,63,0,3,0.34906
+595,166,886,522,107,64,0,3,0.37963
+596,166,884,522,108,65,0,3,0.42174
+597,166,883,521,110,69,0,3,0.46486
+598,166,882,521,111,68,0,3,0.51087
+599,166,881,521,113,68,0,3,0.5281
+600,166,880,521,114,68,0,3,0.5564
+601,166,880,521,115,68,0,3,0.57621
+602,166,879,521,115,69,0,3,0.60776
+603,166,878,522,116,70,0,3,0.62899
+604,166,878,523,116,71,0,3,0.67331
+605,166,878,522,116,72,0,3,0.69863
+606,166,878,522,117,73,0,3,0.72377
+607,166,878,522,118,73,0,3,0.75267
+608,166,879,521,117,75,0,3,0.78657
+609,166,879,521,118,75,0,3,0.81314
+610,166,879,521,119,76,0,3,0.83571
+611,166,880,521,119,77,0,3,0.85897
+612,166,880,521,119,77,0,3,0.88889
+613,166,880,522,120,77,0,3,0.90909
+614,166,880,522,120,78,0,3,0.93786
+615,166,880,523,121,77,0,3,0.96585
+616,166,880,523,121,78,0,3,0.99346
+617,166,880,524,122,78,0,3,1
+618,166,880,524,122,78,0,3,1
+619,166,880,525,123,78,0,3,1
+620,166,880,525,123,79,0,3,1
+621,166,881,526,123,79,0,3,1
+622,166,881,527,124,80,0,3,1
+623,166,882,529,124,80,0,3,1
+624,166,883,532,125,80,0,3,1
+625,166,885,535,125,80,0,3,1
+626,166,886,531,124,80,0,3,1
+627,166,890,534,123,79,0,3,1
+628,166,893,533,125,79,0,3,1
+629,166,896,533,127,79,0,3,1
+630,166,899,532,129,79,0,3,1
+631,166,903,532,130,79,0,3,1
+632,166,906,534,131,79,0,3,1
+633,166,910,536,131,79,0,3,1
+634,166,914,538,131,80,0,3,1
+635,166,919,537,132,80,0,3,1
+636,166,923,539,133,80,0,3,1
+637,166,928,541,133,81,0,3,1
+638,166,933,544,133,80,0,3,1
+639,166,938,546,133,81,0,3,1
+640,166,943,548,133,81,0,3,1
+641,166,948,551,134,81,0,3,1
+642,166,954,552,135,82,0,3,1
+643,166,961,554,135,83,0,3,1
+644,166,967,556,136,83,0,3,1
+645,166,973,559,138,83,0,3,1
+646,166,977,559,139,83,0,3,1
+647,166,984,560,140,84,0,3,1
+648,166,992,561,141,86,0,3,1
+649,166,999,560,142,87,0,3,1
+650,166,1007,559,142,89,0,3,1
+651,166,1015,558,142,91,0,3,1
+652,166,1024,549,143,92,0,3,1
+653,166,1033,548,143,93,0,3,1
+654,166,1042,547,144,93,0,3,1
+655,166,1050,547,144,94,0,3,1
+656,166,1057,551,150,87,0,3,1
+657,166,1068,556,152,88,0,3,1
+658,166,1079,561,152,92,0,3,1
+659,166,1090,570,152,93,0,3,1
+660,166,1097,573,152,96,0,3,1
+661,166,1104,576,152,100,0,3,1
+662,166,1113,579,153,99,0,3,1
+663,166,1123,582,153,98,0,3,1
+664,166,1132,584,155,100,0,3,1
+665,166,1141,585,157,100,0,3,1
+666,166,1150,586,159,100,0,3,1
+667,166,1159,587,161,101,0,3,1
+668,166,1168,588,163,101,0,3,1
+669,166,1177,589,165,101,0,3,1
+670,166,1187,590,167,102,0,3,1
+671,166,1197,587,170,103,0,3,1
+672,166,1207,586,171,103,0,3,1
+673,166,1217,586,173,103,0,3,1
+674,166,1228,583,174,104,0,3,1
+675,166,1237,583,174,106,0,3,1
+676,166,1247,583,174,109,0,3,1
+677,166,1260,591,176,112,0,3,1
+678,166,1270,587,178,113,0,3,1
+679,166,1282,589,180,114,0,3,1
+680,166,1291,598,182,115,0,3,1
+681,166,1300,608,184,116,0,3,1
+682,166,1314,602,185,119,0,3,1
+683,166,1319,600,188,119,0,3,1
+684,166,1326,592,191,118,0,3,1
+685,166,1338,581,192,121,0,3,1
+686,166,1348,576,194,122,0,3,1
+687,166,1358,577,197,122,0,3,1
+688,166,1369,578,200,123,0,3,1
+689,166,1380,579,202,123,0,3,1
+690,166,1391,580,205,124,0,3,1
+691,166,1402,581,208,125,0,3,1
+692,166,1412,591,211,125,0,3,1
+693,166,1424,591,213,129,0,3,1
+694,166,1435,598,214,130,0,3,1
+695,166,1447,606,215,131,0,3,1
+696,166,1458,609,218,133,0,3,1
+697,166,1470,612,220,136,0,3,1
+698,166,1482,616,222,138,0,3,1
+699,166,1493,628,224,140,0,3,1
+700,166,1505,629,227,141,0,3,1
+701,166,1517,631,230,142,0,3,1
+702,166,1526,639,234,144,0,3,1
+703,166,1536,648,238,146,0,3,1
+704,166,1544,649,242,149,0,3,1
+705,166,1553,654,246,150,0,3,1
+706,166,1563,659,250,152,0,3,1
+707,166,1573,661,254,153,0,3,1
+708,166,1584,663,258,154,0,3,1
+709,166,1595,665,261,155,0,3,1
+710,166,1606,668,265,156,0,3,1
+711,166,1618,651,269,157,0,3,1
+712,166,1632,661,269,158,0,3,1
+713,166,1642,648,269,160,0,3,1
+714,166,1653,646,269,161,0,3,0.99259
+715,166,1664,645,269,162,0,3,0.95185
+716,166,1675,641,269,163,0,3,0.91111
+717,166,1686,641,269,164,0,3,0.87037
+718,166,1697,642,270,164,0,3,0.82657
+719,166,1708,658,270,166,0,3,0.78598
+720,166,1719,649,269,166,0,3,0.74815
+721,166,1730,652,268,168,0,3,0.71004
+722,166,1743,658,267,168,0,3,0.66418
+723,166,1756,665,267,168,0,3,0.61567
+724,166,1769,672,267,168,0,3,0.56716
+725,166,1782,678,267,168,0,3,0.51866
+726,166,1795,685,267,168,0,3,0.47015
+727,166,1808,692,267,168,0,3,0.42164
+728,166,1821,699,267,168,0,3,0.37313
+729,166,1834,697,268,168,0,3,0.32342
+730,166,1847,703,268,168,0,3,0.27509
+731,166,1861,709,268,168,0,3,0.22305
+732,166,1870,710,267,168,0,3,0.1903
+733,166,1879,711,267,168,0,3,0.15672
+734,166,1898,716,269,169,0,3,0.085185
+563,167,732,482,42,28,0,3,0.34082
+564,167,720,479,41,29,0,3,0.46587
+565,167,710,479,41,29,0,3,0.60952
+566,167,701,479,41,29,0,3,0.69524
+567,167,692,479,41,29,0,3,0.6381
+568,167,682,479,41,29,0,3,0.6
+569,167,673,479,41,29,0,3,0.56349
+570,167,664,479,41,29,0,3,0.54365
+571,167,655,479,41,29,0,3,0.50476
+572,167,646,479,41,29,0,3,0.48413
+573,167,637,479,41,29,0,3,0.46429
+574,167,629,479,41,29,0,3,0.40952
+575,167,620,479,41,29,0,3,0.38889
+576,167,611,479,41,29,0,3,0.37778
+577,167,603,479,41,29,0,3,0.32381
+578,167,594,479,41,29,0,3,0.31429
+579,167,585,479,41,29,0,3,0.38571
+580,167,577,479,41,29,0,3,0.43016
+581,167,570,477,42,29,0,3,0.43953
+582,167,564,476,42,29,0,3,0.41085
+583,167,557,475,42,30,0,3,0.4036
+584,167,550,475,42,30,0,3,0.37134
+585,167,544,475,41,30,0,3,0.32873
+586,167,539,474,41,30,0,3,0.30722
+587,167,534,474,41,30,0,3,0.23963
+588,167,530,474,41,30,0,3,0.202
+589,167,525,474,41,30,0,3,0.19355
+590,167,521,474,41,30,0,3,0.18894
+591,167,517,474,41,30,0,3,0.18433
+592,167,514,475,41,30,0,3,0.15207
+593,167,510,475,41,30,0,3,0.15207
+594,167,506,475,41,30,0,3,0.17742
+595,167,505,472,42,29,0,3,0.22248
+596,167,501,472,42,29,0,3,0.23643
+597,167,498,473,42,29,0,3,0.18915
+598,167,496,475,42,29,0,3,0.11085
+599,167,494,477,42,29,0,3,0.18295
+600,167,493,479,41,30,0,3,0.27189
+601,167,495,478,33,30,0,3,0.22201
+602,167,494,477,34,30,0,3,0.22488
+603,167,493,476,35,30,0,3,0.22401
+604,167,493,476,36,30,0,3,0.17698
+605,167,492,475,37,30,0,3,0.17572
+606,167,492,475,37,30,0,3,0.12903
+607,167,491,474,39,30,0,3,0.12903
+608,167,491,474,39,30,0,3,0.096774
+609,167,490,473,40,30,0,3,0.096774
+180,168,1172,454,69,69,0,11,1
+181,168,1171,454,69,69,0,11,1
+182,168,1169,454,69,69,0,11,1
+183,168,1167,454,69,69,0,11,1
+184,168,1165,455,69,69,0,11,1
+185,168,1164,455,69,69,0,11,1
+186,168,1163,455,69,69,0,11,1
+187,168,1162,455,69,69,0,11,1
+188,168,1160,455,69,69,0,11,1
+189,168,1158,455,69,69,0,11,1
+190,168,1158,454,68,72,0,11,1
+255,169,1376,425,140,133,0,11,1
+256,169,1392,423,140,133,0,11,1
+257,169,1408,422,140,133,0,11,1
+258,169,1423,420,140,133,0,11,1
+259,169,1439,418,140,133,0,11,1
+260,169,1451,416,143,138,0,11,1
+261,169,1464,415,146,143,0,11,1
+262,169,1482,414,150,142,0,11,1
+263,169,1499,413,155,150,0,11,1
+264,169,1516,413,160,157,0,11,1
+265,169,1534,413,165,160,0,11,1
+266,169,1552,414,170,162,0,11,1
+267,169,1579,415,170,162,0,11,1
+268,169,1601,416,170,162,0,11,1
+114,170,1413,517,14,78,0,10,1
+115,170,1411,517,14,78,0,10,1
+116,170,1407,514,13,83,0,10,1
+117,170,1405,513,13,83,0,10,1
+118,170,1402,511,13,83,0,10,1
+119,170,1400,510,13,83,0,10,1
+120,170,1396,510,13,83,0,10,1
+121,170,1393,510,13,83,0,10,1
+122,170,1389,510,13,83,0,10,1
+123,170,1386,510,13,83,0,10,1
+124,170,1382,511,13,83,0,10,1
+125,170,1379,511,13,83,0,10,1
+126,170,1375,511,13,83,0,10,1
+127,170,1372,511,13,83,0,10,1
+128,170,1368,511,13,83,0,10,1
+129,170,1365,512,13,83,0,10,1
+130,170,1361,512,13,83,0,10,1
+131,170,1358,513,13,82,0,10,0.92427
+132,170,1355,513,12,83,0,10,0.90842
+133,170,1351,514,13,82,0,10,0.89587
+134,170,1348,514,12,82,0,10,0.86747
+135,170,1345,515,12,82,0,10,0.88786
+136,170,1341,515,12,81,0,10,0.88743
+137,170,1338,515,12,81,0,10,0.89681
+138,170,1336,514,12,81,0,10,0.89681
+139,170,1334,514,12,81,0,10,0.91557
+140,170,1332,514,12,81,0,10,0.91557
+141,170,1330,514,12,81,0,10,0.92495
+142,170,1328,514,12,81,0,10,0.92495
+143,170,1325,514,12,81,0,10,0.92495
+144,170,1322,514,12,81,0,10,0.91557
+145,170,1319,516,12,81,0,10,0.93246
+146,170,1316,518,12,81,0,10,0.94371
+147,170,1313,517,12,81,0,10,0.93433
+148,170,1311,517,12,81,0,10,0.93433
+149,170,1307,518,12,80,0,10,0.93732
+150,170,1304,520,12,79,0,10,0.96538
+151,170,1300,520,12,79,0,10,0.9625
+152,170,1296,520,12,79,0,10,0.9625
+153,170,1292,518,12,79,0,10,0.95
+154,170,1288,516,12,79,0,10,0.9125
+155,170,1284,515,12,79,0,10,0.9125
+156,170,1280,515,12,79,0,10,0.925
+157,170,1276,515,12,79,0,10,0.9125
+158,170,1272,515,12,79,0,10,0.925
+159,170,1268,516,12,79,0,10,0.95
+160,170,1264,516,12,79,0,10,0.9375
+161,170,1260,516,12,79,0,10,0.9375
+162,170,1256,517,12,79,0,10,0.87692
+163,170,1254,515,12,81,0,10,0.92683
+164,170,1252,513,12,83,0,10,0.90476
+165,170,1251,512,11,84,0,10,0.90588
+166,170,1248,511,11,84,0,10,0.87059
+167,170,1245,511,11,84,0,10,0.84706
+168,170,1243,511,11,84,0,10,0.87059
+169,170,1240,511,11,84,0,10,1
+170,170,1238,511,11,84,0,10,1
+171,170,1235,510,11,84,0,10,1
+172,170,1234,510,11,84,0,10,1
+173,170,1233,511,11,84,0,10,1
+174,170,1230,513,11,84,0,10,1
+175,170,1228,515,11,84,0,10,1
+176,170,1227,509,13,83,0,10,0.15476
+177,170,1225,510,13,83,0,10,0.14286
+178,170,1224,512,13,83,0,10,0.14286
+179,170,1223,514,13,83,0,10,1
+180,170,1222,516,13,83,0,10,0.90476
+181,170,1219,518,13,83,0,10,0.92857
+66,171,1606,511,11,59,0,10,0.11667
+67,171,1609,527,11,59,0,10,0.36667
+68,171,1607,525,10,51,0,10,0.26923
+69,171,1610,537,10,51,0,10,0.48077
+70,171,1609,535,10,51,0,10,0.42308
+71,171,1608,535,10,51,0,10,0.60839
+72,171,1608,535,10,51,0,10,0.72902
+73,171,1607,536,10,51,0,10,0.8951
+74,171,1607,536,10,51,0,10,1
+75,171,1607,537,10,51,0,10,1
+76,171,1606,537,10,51,0,10,1
+77,171,1605,537,10,51,0,10,1
+78,171,1604,537,10,51,0,10,1
+79,171,1604,538,10,51,0,10,1
+80,171,1604,535,10,51,0,10,1
+81,171,1602,535,10,51,0,10,1
+82,171,1601,535,10,51,0,10,1
+83,171,1599,535,10,51,0,10,1
+92,172,1584,530,9,64,0,10,1
+93,172,1581,533,11,63,0,10,1
+94,172,1579,533,11,63,0,10,1
+95,172,1578,534,11,63,0,10,1
+96,172,1575,537,11,63,0,10,1
+97,172,1573,538,11,63,0,10,1
+98,172,1570,539,11,63,0,10,1
+99,172,1568,539,11,63,0,10,1
+100,172,1564,539,11,63,0,10,1
+101,172,1563,540,11,63,0,10,1
+102,172,1561,540,11,63,0,10,1
+103,172,1558,540,11,63,0,10,1
+104,172,1555,544,11,63,0,10,1
+105,172,1553,543,11,63,0,10,1
+106,172,1552,544,11,63,0,10,1
+107,172,1550,543,11,63,0,10,1
+108,172,1547,543,11,63,0,10,1
+109,172,1543,541,11,63,0,10,1
+110,172,1543,539,11,63,0,10,1
+111,172,1540,539,10,68,0,10,1
+421,173,817,989,84,186,0,10,0.49198
+422,173,784,996,83,186,0,10,0.45455
+423,173,754,1001,83,186,0,10,0.42781
+424,173,715,1007,83,186,0,10,0.39572
+425,173,686,1014,83,186,0,10,0.35829
+426,173,649,1025,83,186,0,10,0.29947
+427,173,614,1034,83,186,0,10,0.25134
+428,173,572,1044,83,186,0,10,0.19786
+429,173,534,1057,83,186,0,10,0.039725
+172,174,1131,557,18,69,0,10,1
+173,174,1128,558,18,69,0,10,1
+174,174,1126,558,18,69,0,10,1
+175,174,1125,559,18,69,0,10,1
+176,174,1123,560,18,69,0,10,1
+177,174,1121,561,18,69,0,10,1
+178,174,1119,562,18,69,0,10,1
+179,174,1118,563,18,69,0,10,1
+180,174,1115,563,18,69,0,10,1
+181,174,1113,563,18,69,0,10,1
+182,174,1112,563,18,69,0,10,1
+183,174,1110,565,18,69,0,10,1
+184,174,1108,568,18,69,0,10,1
+185,174,1105,567,18,69,0,10,1
+186,174,1103,567,18,69,0,10,1
+187,174,1101,567,18,69,0,10,1
+188,174,1100,568,18,69,0,10,1
+189,174,1098,569,18,69,0,10,1
+190,174,1097,570,18,69,0,10,1
+191,174,1095,571,18,69,0,10,1
+192,174,1094,572,18,69,0,10,1
+193,174,1093,574,18,69,0,10,1
+194,174,1092,574,18,69,0,10,1
+195,174,1092,574,18,69,0,10,1
+196,174,1089,576,18,69,0,10,1
+197,174,1087,576,18,69,0,10,1
+198,174,1086,577,18,69,0,10,1
+199,174,1085,578,18,69,0,10,1
+200,174,1084,578,18,69,0,10,1
+201,174,1084,578,18,69,0,10,1
+202,174,1084,578,18,69,0,10,1
+203,174,1084,578,18,69,0,10,1
+204,174,1083,579,19,71,0,10,1
+205,174,1082,581,21,72,0,10,1
+206,174,1079,582,21,72,0,10,1
+207,174,1077,584,21,72,0,10,1
+208,174,1077,585,21,72,0,10,1
+209,174,1077,586,21,72,0,10,1
+210,174,1077,587,21,72,0,10,1
+211,174,1077,588,21,72,0,10,1
+212,174,1077,589,21,72,0,10,1
+213,174,1078,590,21,72,0,10,1
+214,174,1078,591,21,72,0,10,1
+215,174,1078,592,21,72,0,10,1
+216,174,1078,593,21,72,0,10,1
+217,174,1078,594,21,72,0,10,1
+218,174,1079,596,21,72,0,10,1
+219,174,1079,596,25,74,0,10,1
+220,174,1079,592,24,78,0,10,1
+221,174,1083,593,24,78,0,10,1
+222,174,1084,594,24,78,0,10,1
+223,174,1086,595,24,78,0,10,1
+224,174,1086,595,24,78,0,10,1
+225,174,1087,595,24,78,0,10,1
+226,174,1089,596,24,79,0,10,1
+227,174,1092,598,23,80,0,10,1
+228,174,1094,598,23,80,0,10,1
+229,174,1096,599,23,80,0,10,1
+230,174,1097,599,23,80,0,10,1
+231,174,1100,599,22,84,0,10,1
+232,174,1103,599,22,84,0,10,1
+233,174,1106,598,22,84,0,10,1
+234,174,1109,597,22,84,0,10,1
+235,174,1112,597,22,84,0,10,1
+236,174,1115,598,22,84,0,10,1
+237,174,1117,598,22,84,0,10,1
+238,174,1120,598,22,84,0,10,1
+239,174,1125,597,22,84,0,10,1
+240,174,1131,597,22,84,0,10,1
+241,174,1134,597,22,87,0,10,1
+242,174,1138,597,21,91,0,10,0.81818
+243,174,1142,597,21,91,0,10,0.27273
+244,174,1147,598,21,91,0,10,0
+245,174,1152,599,21,91,0,10,0
+246,174,1158,601,21,91,0,10,0
+247,174,1163,601,21,91,0,10,0
+248,174,1168,602,21,91,0,10,0
+249,174,1173,602,21,91,0,10,0
+131,175,1330,546,9,73,0,10,0.5
+132,175,1328,544,9,75,0,10,0.4
+133,175,1325,553,9,66,0,10,0.3
+134,175,1321,554,9,67,0,10,0.4
+135,175,1317,544,9,76,0,10,0.5
+136,175,1314,550,11,66,0,10,0.41667
+137,175,1312,546,9,73,0,10,0.4
+138,175,1310,541,9,81,0,10,0.3
+139,175,1306,548,8,71,0,10,0.44444
+140,175,1303,548,8,72,0,10,0.44444
+141,175,1301,553,9,67,0,10,0.4
+142,175,1301,550,9,68,0,10,0.1
+143,175,1297,552,8,66,0,10,0.22222
+144,175,1294,558,8,62,0,10,0.33333
+145,175,1290,551,7,69,0,10,0.5
+146,175,1288,548,9,77,0,10,0.3
+147,175,1284,551,9,75,0,10,0.5
+148,175,1281,552,9,73,0,10,0.5
+149,175,1278,554,10,71,0,10,0.45455
+150,175,1274,549,9,77,0,10,0.7
+151,175,1270,548,8,79,0,10,0.88889
+152,175,1267,550,9,76,0,10,0.9
+153,175,1263,553,8,72,0,10,1
+154,175,1260,550,9,77,0,10,0.9
+155,175,1255,549,10,75,0,10,0.90909
+156,175,1251,546,9,79,0,10,1
+157,175,1247,546,8,79,0,10,1
+158,175,1243,545,7,80,0,10,1
+159,175,1240,542,7,84,0,10,1
+160,175,1237,543,8,83,0,10,1
+161,175,1233,541,9,85,0,10,1
+162,175,1230,547,11,79,0,10,1
+163,175,1227,543,11,83,0,10,1
+164,175,1224,544,11,83,0,10,1
+165,175,1221,542,11,85,0,10,1
+166,175,1219,541,11,85,0,10,0.75
+167,175,1213,544,13,83,0,10,0.35714
+168,175,1213,545,11,81,0,10,0.33333
+169,175,1211,543,10,82,0,10,0.18182
+170,175,1209,543,10,83,0,10,1
+171,175,1207,544,9,82,0,10,1
+172,175,1206,544,9,85,0,10,1
+173,175,1204,543,10,86,0,10,0
+174,175,1201,543,9,85,0,10,0
+175,175,1200,550,10,79,0,10,1
+176,175,1197,542,10,88,0,10,0
+177,175,1196,546,9,84,0,10,0
+178,175,1195,545,9,85,0,10,0
+179,175,1194,543,9,88,0,10,1
+180,175,1192,544,8,87,0,10,0
+181,175,1190,546,8,86,0,10,0
+182,175,1190,546,10,89,0,10,0
+183,175,1188,553,9,82,0,10,0
+184,175,1186,561,9,74,0,10,0
+185,175,1184,557,10,78,0,10,0
+186,175,1182,555,9,81,0,10,0
+187,175,1180,551,8,86,0,10,0
+188,175,1179,550,8,88,0,10,0
+189,175,1178,553,11,86,0,10,0
+190,175,1176,551,8,88,0,10,0
+191,175,1176,549,9,93,0,10,0
+192,175,1174,556,11,85,0,10,0
+193,175,1173,555,9,88,0,10,0
+194,175,1172,564,8,81,0,10,0
+195,175,1171,562,10,82,0,10,0
+196,175,1170,556,9,89,0,10,0
+197,175,1169,550,10,95,0,10,0
+198,175,1168,561,9,85,0,10,0
+199,175,1167,560,8,86,0,10,0
+200,175,1169,561,8,87,0,10,0
+201,175,1168,564,9,84,0,10,0
+202,175,1167,565,9,84,0,10,1
+203,175,1166,568,9,84,0,10,1
+204,175,1166,567,8,86,0,10,1
+205,175,1166,566,8,88,0,10,1
+206,175,1166,564,9,91,0,10,1
+207,175,1166,565,10,90,0,10,0.36364
+208,175,1166,569,7,88,0,10,1
+184,176,1150,524,12,116,0,10,0
+185,176,1150,527,12,116,0,10,0
+186,176,1148,527,12,116,0,10,0
+187,176,1147,524,12,116,0,10,0
+188,176,1147,522,12,116,0,10,0
+189,176,1144,529,12,116,0,10,0
+190,176,1142,530,12,116,0,10,0.076923
+191,176,1140,529,12,117,0,10,0.15385
+192,176,1138,528,12,118,0,10,0.23077
+193,176,1137,527,11,120,0,10,0.25
+194,176,1136,536,11,119,0,10,0.25
+195,176,1136,536,11,119,0,10,0.16667
+196,176,1135,533,11,123,0,10,0.16667
+197,176,1134,530,11,127,0,10,0.16667
+198,176,1133,527,11,131,0,10,0.16667
+199,176,1132,525,11,134,0,10,0.16667
+200,176,1136,492,11,170,0,10,0
+201,176,1133,502,11,161,0,10,0
+202,176,1131,512,10,152,0,10,0
+203,176,1129,522,10,143,0,10,0.090909
+204,176,1129,519,9,141,0,10,0
+205,176,1129,516,8,139,0,10,0
+206,176,1130,513,9,146,0,10,0
+207,176,1130,510,8,148,0,10,0
+208,176,1130,507,8,151,0,10,0
+209,176,1131,504,9,158,0,10,0
+210,176,1131,501,11,160,0,10,0
+211,176,1130,511,11,152,0,10,0
+212,176,1129,522,11,143,0,10,0
+213,176,1129,533,11,134,0,10,0
+214,176,1130,531,11,135,0,10,0
+215,176,1131,529,11,137,0,10,0
+216,176,1132,527,11,139,0,10,0
+217,176,1133,525,11,141,0,10,0
+218,176,1134,523,11,143,0,10,0
+219,176,1135,521,11,145,0,10,0
+220,176,1136,519,11,147,0,10,0
+221,176,1138,519,11,147,0,10,0
+222,176,1140,519,11,147,0,10,0
+223,176,1142,520,11,147,0,10,0
+224,176,1144,520,11,147,0,10,0
+225,176,1146,521,11,147,0,10,0
+226,176,1148,521,11,147,0,10,0
+227,176,1150,521,11,147,0,10,0
+228,176,1152,522,11,147,0,10,0.083333
+229,176,1154,522,11,147,0,10,0.083333
+230,176,1156,523,11,147,0,10,0.16667
+231,176,1158,523,11,147,0,10,0.25
+46,177,803,504,9,61,0,10,1
+47,177,802,503,9,62,0,10,1
+48,177,802,503,9,63,0,10,1
+49,177,801,503,10,63,0,10,1
+50,177,801,503,9,64,0,10,1
+51,177,801,503,9,64,0,10,1
+52,177,800,503,10,65,0,10,1
+53,177,800,503,9,65,0,10,1
+54,177,799,503,10,66,0,10,1
+55,177,799,503,10,66,0,10,1
+56,177,799,503,10,67,0,10,1
+57,177,798,502,10,67,0,10,1
+58,177,797,501,10,67,0,10,1
+59,177,796,500,11,67,0,10,1
+60,177,795,499,11,67,0,10,1
+61,177,794,498,11,67,0,10,1
+62,177,794,497,11,67,0,10,1
+63,177,793,498,10,67,0,10,1
+64,177,792,500,10,67,0,10,1
+65,177,791,501,10,67,0,10,1
+66,177,790,503,10,67,0,10,1
+67,177,787,502,10,67,0,10,1
+68,177,785,501,10,67,0,10,1
+69,177,782,501,11,66,0,10,1
+70,177,780,500,10,66,0,10,1
+71,177,778,500,10,66,0,10,1
+72,177,775,499,11,66,0,10,1
+73,177,773,498,10,66,0,10,1
+74,177,770,498,11,65,0,10,1
+75,177,768,497,11,65,0,10,1
+76,177,766,497,11,65,0,10,1
+77,177,763,499,11,65,0,10,1
+78,177,761,499,11,65,0,10,1
+79,177,759,499,11,65,0,10,1
+80,177,755,499,11,65,0,10,1
+81,177,751,498,11,65,0,10,1
+82,177,747,498,11,65,0,10,1
+83,177,744,499,11,65,0,10,1
+84,177,739,498,11,65,0,10,0.13636
+85,177,735,499,11,65,0,10,0.13636
+86,177,732,501,11,65,0,10,0.13636
+87,177,728,503,11,65,0,10,1
+88,177,725,504,11,65,0,10,1
+89,177,723,504,11,65,0,10,0.13636
+90,177,715,508,11,65,0,10,1
+91,177,711,511,11,65,0,10,1
+92,177,706,511,11,65,0,10,1
+93,177,700,513,11,65,0,10,1
+94,177,696,509,10,70,0,10,1
+95,177,694,510,10,70,0,10,1
+96,177,691,513,10,70,0,10,1
+97,177,686,513,10,70,0,10,1
+98,177,681,516,10,70,0,10,1
+99,177,675,513,10,70,0,10,1
+100,177,672,515,10,70,0,10,1
+101,177,666,509,9,75,0,10,0.59868
+102,177,663,511,11,74,0,10,1
+103,177,659,513,11,74,0,10,1
+104,177,653,510,10,77,0,10,1
+105,177,650,510,10,77,0,10,1
+106,177,643,506,10,77,0,10,0.63869
+107,177,639,509,11,75,0,10,0.58553
+108,177,635,511,11,75,0,10,1
+109,177,629,510,11,76,0,10,1
+110,177,624,510,11,76,0,10,1
+111,177,619,510,11,76,0,10,1
+112,177,614,510,10,76,0,10,1
+113,177,609,510,10,77,0,10,1
+114,177,603,510,11,77,0,10,1
+115,177,598,510,10,77,0,10,1
+116,177,593,510,10,77,0,10,1
+117,177,588,510,10,77,0,10,1
+118,177,583,510,10,78,0,10,1
+119,177,577,510,10,78,0,10,1
+120,177,572,510,10,79,0,10,1
+121,177,566,510,10,79,0,10,1
+122,177,561,511,10,79,0,10,1
+123,177,556,511,10,80,0,10,1
+124,177,550,511,10,80,0,10,1
+125,177,545,512,10,80,0,10,1
+126,177,539,512,10,80,0,10,1
+127,177,534,512,10,81,0,10,1
+128,177,529,513,10,81,0,10,1
+129,177,523,513,10,81,0,10,1
+130,177,518,514,10,81,0,10,1
+131,177,512,515,10,81,0,10,1
+132,177,507,515,10,81,0,10,1
+133,177,502,516,10,81,0,10,1
+134,177,496,517,10,81,0,10,1
+135,177,491,517,10,81,0,10,1
+136,177,485,518,10,81,0,10,1
+137,177,480,519,10,81,0,10,1
+138,177,475,520,10,81,0,10,1
+139,177,470,519,10,82,0,10,1
+140,177,465,519,10,82,0,10,1
+141,177,460,519,10,82,0,10,1
+142,177,455,519,10,82,0,10,1
+143,177,450,519,10,82,0,10,1
+144,177,445,518,10,83,0,10,1
+145,177,440,518,10,83,0,10,1
+146,177,435,518,10,83,0,10,1
+147,177,430,518,10,83,0,10,1
+148,177,426,518,9,83,0,10,1
+149,177,419,518,10,84,0,10,1
+150,177,413,519,10,84,0,10,1
+151,177,406,520,11,85,0,10,1
+152,177,400,520,11,86,0,10,1
+153,177,394,521,11,87,0,10,1
+154,177,387,522,12,87,0,10,1
+155,177,381,522,12,88,0,10,1
+156,177,374,523,13,89,0,10,1
+157,177,368,524,13,89,0,10,1
+158,177,362,525,13,90,0,10,1
+159,177,356,525,13,90,0,10,1
+160,177,350,526,13,90,0,10,1
+161,177,345,527,13,90,0,10,1
+162,177,339,527,13,90,0,10,1
+163,177,334,528,13,90,0,10,1
+164,177,328,529,13,90,0,10,1
+165,177,322,529,13,90,0,10,1
+166,177,317,530,13,90,0,10,1
+167,177,311,531,13,90,0,10,1
+168,177,306,532,13,90,0,10,1
+169,177,301,532,13,90,0,10,1
+170,177,296,532,13,90,0,10,1
+171,177,291,532,13,90,0,10,1
+172,177,287,533,13,90,0,10,1
+173,177,282,533,13,90,0,10,1
+174,177,277,533,13,90,0,10,1
+175,177,273,534,13,90,0,10,1
+176,177,268,534,13,90,0,10,1
+177,177,263,534,13,90,0,10,1
+292,178,1523,471,26,177,0,10,0
+293,178,1539,482,26,176,0,10,0.51852
+294,178,1551,483,25,174,0,10,1
diff --git a/Yolov5-Deepsort/image.png b/Yolov5-Deepsort/image.png
new file mode 100644
index 0000000000000000000000000000000000000000..ace8fcff2c3fa4f16cd87a47467f0f755beaed1e
Binary files /dev/null and b/Yolov5-Deepsort/image.png differ
diff --git a/Yolov5-Deepsort/manbo.mp4 b/Yolov5-Deepsort/manbo.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..840289199ef681528e7898a57105787f19bbff46
Binary files /dev/null and b/Yolov5-Deepsort/manbo.mp4 differ
diff --git a/Yolov5-Deepsort/models/__init__.py b/Yolov5-Deepsort/models/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Yolov5-Deepsort/models/__pycache__/__init__.cpython-36.pyc b/Yolov5-Deepsort/models/__pycache__/__init__.cpython-36.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..e9746b6598ac986fbff7cb2365a7a441cec36779
Binary files /dev/null and b/Yolov5-Deepsort/models/__pycache__/__init__.cpython-36.pyc differ
diff --git a/Yolov5-Deepsort/models/__pycache__/__init__.cpython-37.pyc b/Yolov5-Deepsort/models/__pycache__/__init__.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..652f93beb9f9231da6eb6ec57d6160ad011178fd
Binary files /dev/null and b/Yolov5-Deepsort/models/__pycache__/__init__.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/models/__pycache__/common.cpython-36.pyc b/Yolov5-Deepsort/models/__pycache__/common.cpython-36.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..9734cfb03cba91dbf15e38722d0509cb47641a91
Binary files /dev/null and b/Yolov5-Deepsort/models/__pycache__/common.cpython-36.pyc differ
diff --git a/Yolov5-Deepsort/models/__pycache__/common.cpython-37.pyc b/Yolov5-Deepsort/models/__pycache__/common.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b4edaea39d903d09c0ad337ec4bff5b9565ea21b
Binary files /dev/null and b/Yolov5-Deepsort/models/__pycache__/common.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/models/__pycache__/experimental.cpython-36.pyc b/Yolov5-Deepsort/models/__pycache__/experimental.cpython-36.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..caa1ef7d5155d2c5bf348930ddf08fbcb5131007
Binary files /dev/null and b/Yolov5-Deepsort/models/__pycache__/experimental.cpython-36.pyc differ
diff --git a/Yolov5-Deepsort/models/__pycache__/experimental.cpython-37.pyc b/Yolov5-Deepsort/models/__pycache__/experimental.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..03d97117b57b37f651134f40a2305512b53bc8dc
Binary files /dev/null and b/Yolov5-Deepsort/models/__pycache__/experimental.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/models/__pycache__/yolo.cpython-37.pyc b/Yolov5-Deepsort/models/__pycache__/yolo.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..7c4abfe75e25b31af450916e37b66ea4aeb10c72
Binary files /dev/null and b/Yolov5-Deepsort/models/__pycache__/yolo.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/models/common.py b/Yolov5-Deepsort/models/common.py
new file mode 100644
index 0000000000000000000000000000000000000000..4211db406c3d85e652bc11280cf9856f500ef835
--- /dev/null
+++ b/Yolov5-Deepsort/models/common.py
@@ -0,0 +1,395 @@
+# YOLOv5 common modules
+
+import math
+from copy import copy
+from pathlib import Path
+
+import numpy as np
+import pandas as pd
+import requests
+import torch
+import torch.nn as nn
+from PIL import Image
+from torch.cuda import amp
+
+from utils.datasets import letterbox
+from utils.general import non_max_suppression, make_divisible, scale_coords, increment_path, xyxy2xywh, save_one_box
+from utils.plots import colors, plot_one_box
+from utils.torch_utils import time_synchronized
+
+
+def autopad(k, p=None): # kernel, padding
+ # Pad to 'same'
+ if p is None:
+ p = k // 2 if isinstance(k, int) else [x // 2 for x in k] # auto-pad
+ return p
+
+
+def DWConv(c1, c2, k=1, s=1, act=True):
+ # Depthwise convolution
+ return Conv(c1, c2, k, s, g=math.gcd(c1, c2), act=act)
+
+
+class Conv(nn.Module):
+ # Standard convolution
+ def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True): # ch_in, ch_out, kernel, stride, padding, groups
+ super(Conv, self).__init__()
+ self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p), groups=g, bias=False)
+ self.bn = nn.BatchNorm2d(c2)
+ self.act = nn.SiLU() if act is True else (act if isinstance(act, nn.Module) else nn.Identity())
+
+ def forward(self, x):
+ return self.act(self.bn(self.conv(x)))
+
+ def fuseforward(self, x):
+ return self.act(self.conv(x))
+
+
+class TransformerLayer(nn.Module):
+ # Transformer layer https://arxiv.org/abs/2010.11929 (LayerNorm layers removed for better performance)
+ def __init__(self, c, num_heads):
+ super().__init__()
+ self.q = nn.Linear(c, c, bias=False)
+ self.k = nn.Linear(c, c, bias=False)
+ self.v = nn.Linear(c, c, bias=False)
+ self.ma = nn.MultiheadAttention(embed_dim=c, num_heads=num_heads)
+ self.fc1 = nn.Linear(c, c, bias=False)
+ self.fc2 = nn.Linear(c, c, bias=False)
+
+ def forward(self, x):
+ x = self.ma(self.q(x), self.k(x), self.v(x))[0] + x
+ x = self.fc2(self.fc1(x)) + x
+ return x
+
+
+class TransformerBlock(nn.Module):
+ # Vision Transformer https://arxiv.org/abs/2010.11929
+ def __init__(self, c1, c2, num_heads, num_layers):
+ super().__init__()
+ self.conv = None
+ if c1 != c2:
+ self.conv = Conv(c1, c2)
+ self.linear = nn.Linear(c2, c2) # learnable position embedding
+ self.tr = nn.Sequential(*[TransformerLayer(c2, num_heads) for _ in range(num_layers)])
+ self.c2 = c2
+
+ def forward(self, x):
+ if self.conv is not None:
+ x = self.conv(x)
+ b, _, w, h = x.shape
+ p = x.flatten(2)
+ p = p.unsqueeze(0)
+ p = p.transpose(0, 3)
+ p = p.squeeze(3)
+ e = self.linear(p)
+ x = p + e
+
+ x = self.tr(x)
+ x = x.unsqueeze(3)
+ x = x.transpose(0, 3)
+ x = x.reshape(b, self.c2, w, h)
+ return x
+
+
+class Bottleneck(nn.Module):
+ # Standard bottleneck
+ def __init__(self, c1, c2, shortcut=True, g=1, e=0.5): # ch_in, ch_out, shortcut, groups, expansion
+ super(Bottleneck, self).__init__()
+ c_ = int(c2 * e) # hidden channels
+ self.cv1 = Conv(c1, c_, 1, 1)
+ self.cv2 = Conv(c_, c2, 3, 1, g=g)
+ self.add = shortcut and c1 == c2
+
+ def forward(self, x):
+ return x + self.cv2(self.cv1(x)) if self.add else self.cv2(self.cv1(x))
+
+
+class BottleneckCSP(nn.Module):
+ # CSP Bottleneck https://github.com/WongKinYiu/CrossStagePartialNetworks
+ def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ch_out, number, shortcut, groups, expansion
+ super(BottleneckCSP, self).__init__()
+ c_ = int(c2 * e) # hidden channels
+ self.cv1 = Conv(c1, c_, 1, 1)
+ self.cv2 = nn.Conv2d(c1, c_, 1, 1, bias=False)
+ self.cv3 = nn.Conv2d(c_, c_, 1, 1, bias=False)
+ self.cv4 = Conv(2 * c_, c2, 1, 1)
+ self.bn = nn.BatchNorm2d(2 * c_) # applied to cat(cv2, cv3)
+ self.act = nn.LeakyReLU(0.1, inplace=True)
+ self.m = nn.Sequential(*[Bottleneck(c_, c_, shortcut, g, e=1.0) for _ in range(n)])
+
+ def forward(self, x):
+ y1 = self.cv3(self.m(self.cv1(x)))
+ y2 = self.cv2(x)
+ return self.cv4(self.act(self.bn(torch.cat((y1, y2), dim=1))))
+
+
+class C3(nn.Module):
+ # CSP Bottleneck with 3 convolutions
+ def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): # ch_in, ch_out, number, shortcut, groups, expansion
+ super(C3, self).__init__()
+ c_ = int(c2 * e) # hidden channels
+ self.cv1 = Conv(c1, c_, 1, 1)
+ self.cv2 = Conv(c1, c_, 1, 1)
+ self.cv3 = Conv(2 * c_, c2, 1) # act=FReLU(c2)
+ self.m = nn.Sequential(*[Bottleneck(c_, c_, shortcut, g, e=1.0) for _ in range(n)])
+ # self.m = nn.Sequential(*[CrossConv(c_, c_, 3, 1, g, 1.0, shortcut) for _ in range(n)])
+
+ def forward(self, x):
+ return self.cv3(torch.cat((self.m(self.cv1(x)), self.cv2(x)), dim=1))
+
+
+class C3TR(C3):
+ # C3 module with TransformerBlock()
+ def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5):
+ super().__init__(c1, c2, n, shortcut, g, e)
+ c_ = int(c2 * e)
+ self.m = TransformerBlock(c_, c_, 4, n)
+
+
+class SPP(nn.Module):
+ # Spatial pyramid pooling layer used in YOLOv3-SPP
+ def __init__(self, c1, c2, k=(5, 9, 13)):
+ super(SPP, self).__init__()
+ c_ = c1 // 2 # hidden channels
+ self.cv1 = Conv(c1, c_, 1, 1)
+ self.cv2 = Conv(c_ * (len(k) + 1), c2, 1, 1)
+ self.m = nn.ModuleList([nn.MaxPool2d(kernel_size=x, stride=1, padding=x // 2) for x in k])
+
+ def forward(self, x):
+ x = self.cv1(x)
+ return self.cv2(torch.cat([x] + [m(x) for m in self.m], 1))
+
+
+class Focus(nn.Module):
+ # Focus wh information into c-space
+ def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True): # ch_in, ch_out, kernel, stride, padding, groups
+ super(Focus, self).__init__()
+ self.conv = Conv(c1 * 4, c2, k, s, p, g, act)
+ # self.contract = Contract(gain=2)
+
+ def forward(self, x): # x(b,c,w,h) -> y(b,4c,w/2,h/2)
+ return self.conv(torch.cat([x[..., ::2, ::2], x[..., 1::2, ::2], x[..., ::2, 1::2], x[..., 1::2, 1::2]], 1))
+ # return self.conv(self.contract(x))
+
+
+class Contract(nn.Module):
+ # Contract width-height into channels, i.e. x(1,64,80,80) to x(1,256,40,40)
+ def __init__(self, gain=2):
+ super().__init__()
+ self.gain = gain
+
+ def forward(self, x):
+ N, C, H, W = x.size() # assert (H / s == 0) and (W / s == 0), 'Indivisible gain'
+ s = self.gain
+ x = x.view(N, C, H // s, s, W // s, s) # x(1,64,40,2,40,2)
+ x = x.permute(0, 3, 5, 1, 2, 4).contiguous() # x(1,2,2,64,40,40)
+ return x.view(N, C * s * s, H // s, W // s) # x(1,256,40,40)
+
+
+class Expand(nn.Module):
+ # Expand channels into width-height, i.e. x(1,64,80,80) to x(1,16,160,160)
+ def __init__(self, gain=2):
+ super().__init__()
+ self.gain = gain
+
+ def forward(self, x):
+ N, C, H, W = x.size() # assert C / s ** 2 == 0, 'Indivisible gain'
+ s = self.gain
+ x = x.view(N, s, s, C // s ** 2, H, W) # x(1,2,2,16,80,80)
+ x = x.permute(0, 3, 4, 1, 5, 2).contiguous() # x(1,16,80,2,80,2)
+ return x.view(N, C // s ** 2, H * s, W * s) # x(1,16,160,160)
+
+
+class Concat(nn.Module):
+ # Concatenate a list of tensors along dimension
+ def __init__(self, dimension=1):
+ super(Concat, self).__init__()
+ self.d = dimension
+
+ def forward(self, x):
+ return torch.cat(x, self.d)
+
+
+class NMS(nn.Module):
+ # Non-Maximum Suppression (NMS) module
+ conf = 0.25 # confidence threshold
+ iou = 0.45 # IoU threshold
+ classes = None # (optional list) filter by class
+ max_det = 1000 # maximum number of detections per image
+
+ def __init__(self):
+ super(NMS, self).__init__()
+
+ def forward(self, x):
+ return non_max_suppression(x[0], self.conf, iou_thres=self.iou, classes=self.classes, max_det=self.max_det)
+
+
+class AutoShape(nn.Module):
+ # input-robust model wrapper for passing cv2/np/PIL/torch inputs. Includes preprocessing, inference and NMS
+ conf = 0.25 # NMS confidence threshold
+ iou = 0.45 # NMS IoU threshold
+ classes = None # (optional list) filter by class
+ max_det = 1000 # maximum number of detections per image
+
+ def __init__(self, model):
+ super(AutoShape, self).__init__()
+ self.model = model.eval()
+
+ def autoshape(self):
+ print('AutoShape already enabled, skipping... ') # model already converted to model.autoshape()
+ return self
+
+ @torch.no_grad()
+ def forward(self, imgs, size=640, augment=False, profile=False):
+ # Inference from various sources. For height=640, width=1280, RGB images example inputs are:
+ # filename: imgs = 'data/images/zidane.jpg'
+ # URI: = 'https://github.com/ultralytics/yolov5/releases/download/v1.0/zidane.jpg'
+ # OpenCV: = cv2.imread('image.jpg')[:,:,::-1] # HWC BGR to RGB x(640,1280,3)
+ # PIL: = Image.open('image.jpg') # HWC x(640,1280,3)
+ # numpy: = np.zeros((640,1280,3)) # HWC
+ # torch: = torch.zeros(16,3,320,640) # BCHW (scaled to size=640, 0-1 values)
+ # multiple: = [Image.open('image1.jpg'), Image.open('image2.jpg'), ...] # list of images
+
+ t = [time_synchronized()]
+ p = next(self.model.parameters()) # for device and type
+ if isinstance(imgs, torch.Tensor): # torch
+ with amp.autocast(enabled=p.device.type != 'cpu'):
+ return self.model(imgs.to(p.device).type_as(p), augment, profile) # inference
+
+ # Pre-process
+ n, imgs = (len(imgs), imgs) if isinstance(imgs, list) else (1, [imgs]) # number of images, list of images
+ shape0, shape1, files = [], [], [] # image and inference shapes, filenames
+ for i, im in enumerate(imgs):
+ f = f'image{i}' # filename
+ if isinstance(im, str): # filename or uri
+ im, f = np.asarray(Image.open(requests.get(im, stream=True).raw if im.startswith('http') else im)), im
+ elif isinstance(im, Image.Image): # PIL Image
+ im, f = np.asarray(im), getattr(im, 'filename', f) or f
+ files.append(Path(f).with_suffix('.jpg').name)
+ if im.shape[0] < 5: # image in CHW
+ im = im.transpose((1, 2, 0)) # reverse dataloader .transpose(2, 0, 1)
+ im = im[:, :, :3] if im.ndim == 3 else np.tile(im[:, :, None], 3) # enforce 3ch input
+ s = im.shape[:2] # HWC
+ shape0.append(s) # image shape
+ g = (size / max(s)) # gain
+ shape1.append([y * g for y in s])
+ imgs[i] = im if im.data.contiguous else np.ascontiguousarray(im) # update
+ shape1 = [make_divisible(x, int(self.stride.max())) for x in np.stack(shape1, 0).max(0)] # inference shape
+ x = [letterbox(im, new_shape=shape1, auto=False)[0] for im in imgs] # pad
+ x = np.stack(x, 0) if n > 1 else x[0][None] # stack
+ x = np.ascontiguousarray(x.transpose((0, 3, 1, 2))) # BHWC to BCHW
+ x = torch.from_numpy(x).to(p.device).type_as(p) / 255. # uint8 to fp16/32
+ t.append(time_synchronized())
+
+ with amp.autocast(enabled=p.device.type != 'cpu'):
+ # Inference
+ y = self.model(x, augment, profile)[0] # forward
+ t.append(time_synchronized())
+
+ # Post-process
+ y = non_max_suppression(y, self.conf, iou_thres=self.iou, classes=self.classes, max_det=self.max_det) # NMS
+ for i in range(n):
+ scale_coords(shape1, y[i][:, :4], shape0[i])
+
+ t.append(time_synchronized())
+ return Detections(imgs, y, files, t, self.names, x.shape)
+
+
+class Detections:
+ # detections class for YOLOv5 inference results
+ def __init__(self, imgs, pred, files, times=None, names=None, shape=None):
+ super(Detections, self).__init__()
+ d = pred[0].device # device
+ gn = [torch.tensor([*[im.shape[i] for i in [1, 0, 1, 0]], 1., 1.], device=d) for im in imgs] # normalizations
+ self.imgs = imgs # list of images as numpy arrays
+ self.pred = pred # list of tensors pred[0] = (xyxy, conf, cls)
+ self.names = names # class names
+ self.files = files # image filenames
+ self.xyxy = pred # xyxy pixels
+ self.xywh = [xyxy2xywh(x) for x in pred] # xywh pixels
+ self.xyxyn = [x / g for x, g in zip(self.xyxy, gn)] # xyxy normalized
+ self.xywhn = [x / g for x, g in zip(self.xywh, gn)] # xywh normalized
+ self.n = len(self.pred) # number of images (batch size)
+ self.t = tuple((times[i + 1] - times[i]) * 1000 / self.n for i in range(3)) # timestamps (ms)
+ self.s = shape # inference BCHW shape
+
+ def display(self, pprint=False, show=False, save=False, crop=False, render=False, save_dir=Path('')):
+ for i, (im, pred) in enumerate(zip(self.imgs, self.pred)):
+ str = f'image {i + 1}/{len(self.pred)}: {im.shape[0]}x{im.shape[1]} '
+ if pred is not None:
+ for c in pred[:, -1].unique():
+ n = (pred[:, -1] == c).sum() # detections per class
+ str += f"{n} {self.names[int(c)]}{'s' * (n > 1)}, " # add to string
+ if show or save or render or crop:
+ for *box, conf, cls in pred: # xyxy, confidence, class
+ label = f'{self.names[int(cls)]} {conf:.2f}'
+ if crop:
+ save_one_box(box, im, file=save_dir / 'crops' / self.names[int(cls)] / self.files[i])
+ else: # all others
+ plot_one_box(box, im, label=label, color=colors(cls))
+
+ im = Image.fromarray(im.astype(np.uint8)) if isinstance(im, np.ndarray) else im # from np
+ if pprint:
+ print(str.rstrip(', '))
+ if show:
+ im.show(self.files[i]) # show
+ if save:
+ f = self.files[i]
+ im.save(save_dir / f) # save
+ print(f"{'Saved' * (i == 0)} {f}", end=',' if i < self.n - 1 else f' to {save_dir}\n')
+ if render:
+ self.imgs[i] = np.asarray(im)
+
+ def print(self):
+ self.display(pprint=True) # print results
+ print(f'Speed: %.1fms pre-process, %.1fms inference, %.1fms NMS per image at shape {tuple(self.s)}' % self.t)
+
+ def show(self):
+ self.display(show=True) # show results
+
+ def save(self, save_dir='runs/hub/exp'):
+ save_dir = increment_path(save_dir, exist_ok=save_dir != 'runs/hub/exp', mkdir=True) # increment save_dir
+ self.display(save=True, save_dir=save_dir) # save results
+
+ def crop(self, save_dir='runs/hub/exp'):
+ save_dir = increment_path(save_dir, exist_ok=save_dir != 'runs/hub/exp', mkdir=True) # increment save_dir
+ self.display(crop=True, save_dir=save_dir) # crop results
+ print(f'Saved results to {save_dir}\n')
+
+ def render(self):
+ self.display(render=True) # render results
+ return self.imgs
+
+ def pandas(self):
+ # return detections as pandas DataFrames, i.e. print(results.pandas().xyxy[0])
+ new = copy(self) # return copy
+ ca = 'xmin', 'ymin', 'xmax', 'ymax', 'confidence', 'class', 'name' # xyxy columns
+ cb = 'xcenter', 'ycenter', 'width', 'height', 'confidence', 'class', 'name' # xywh columns
+ for k, c in zip(['xyxy', 'xyxyn', 'xywh', 'xywhn'], [ca, ca, cb, cb]):
+ a = [[x[:5] + [int(x[5]), self.names[int(x[5])]] for x in x.tolist()] for x in getattr(self, k)] # update
+ setattr(new, k, [pd.DataFrame(x, columns=c) for x in a])
+ return new
+
+ def tolist(self):
+ # return a list of Detections objects, i.e. 'for result in results.tolist():'
+ x = [Detections([self.imgs[i]], [self.pred[i]], self.names, self.s) for i in range(self.n)]
+ for d in x:
+ for k in ['imgs', 'pred', 'xyxy', 'xyxyn', 'xywh', 'xywhn']:
+ setattr(d, k, getattr(d, k)[0]) # pop out of list
+ return x
+
+ def __len__(self):
+ return self.n
+
+
+class Classify(nn.Module):
+ # Classification head, i.e. x(b,c1,20,20) to x(b,c2)
+ def __init__(self, c1, c2, k=1, s=1, p=None, g=1): # ch_in, ch_out, kernel, stride, padding, groups
+ super(Classify, self).__init__()
+ self.aap = nn.AdaptiveAvgPool2d(1) # to x(b,c1,1,1)
+ self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p), groups=g) # to x(b,c2,1,1)
+ self.flat = nn.Flatten()
+
+ def forward(self, x):
+ z = torch.cat([self.aap(y) for y in (x if isinstance(x, list) else [x])], 1) # cat if list
+ return self.flat(self.conv(z)) # flatten to x(b,c2)
diff --git a/Yolov5-Deepsort/models/experimental.py b/Yolov5-Deepsort/models/experimental.py
new file mode 100644
index 0000000000000000000000000000000000000000..afa787907104f1134335ed3ac7bfdd8ac4fd4ae9
--- /dev/null
+++ b/Yolov5-Deepsort/models/experimental.py
@@ -0,0 +1,137 @@
+# YOLOv5 experimental modules
+
+import numpy as np
+import torch
+import torch.nn as nn
+
+from models.common import Conv, DWConv
+from utils.google_utils import attempt_download
+
+
+class CrossConv(nn.Module):
+ # Cross Convolution Downsample
+ def __init__(self, c1, c2, k=3, s=1, g=1, e=1.0, shortcut=False):
+ # ch_in, ch_out, kernel, stride, groups, expansion, shortcut
+ super(CrossConv, self).__init__()
+ c_ = int(c2 * e) # hidden channels
+ self.cv1 = Conv(c1, c_, (1, k), (1, s))
+ self.cv2 = Conv(c_, c2, (k, 1), (s, 1), g=g)
+ self.add = shortcut and c1 == c2
+
+ def forward(self, x):
+ return x + self.cv2(self.cv1(x)) if self.add else self.cv2(self.cv1(x))
+
+
+class Sum(nn.Module):
+ # Weighted sum of 2 or more layers https://arxiv.org/abs/1911.09070
+ def __init__(self, n, weight=False): # n: number of inputs
+ super(Sum, self).__init__()
+ self.weight = weight # apply weights boolean
+ self.iter = range(n - 1) # iter object
+ if weight:
+ self.w = nn.Parameter(-torch.arange(1., n) / 2, requires_grad=True) # layer weights
+
+ def forward(self, x):
+ y = x[0] # no weight
+ if self.weight:
+ w = torch.sigmoid(self.w) * 2
+ for i in self.iter:
+ y = y + x[i + 1] * w[i]
+ else:
+ for i in self.iter:
+ y = y + x[i + 1]
+ return y
+
+
+class GhostConv(nn.Module):
+ # Ghost Convolution https://github.com/huawei-noah/ghostnet
+ def __init__(self, c1, c2, k=1, s=1, g=1, act=True): # ch_in, ch_out, kernel, stride, groups
+ super(GhostConv, self).__init__()
+ c_ = c2 // 2 # hidden channels
+ self.cv1 = Conv(c1, c_, k, s, None, g, act)
+ self.cv2 = Conv(c_, c_, 5, 1, None, c_, act)
+
+ def forward(self, x):
+ y = self.cv1(x)
+ return torch.cat([y, self.cv2(y)], 1)
+
+
+class GhostBottleneck(nn.Module):
+ # Ghost Bottleneck https://github.com/huawei-noah/ghostnet
+ def __init__(self, c1, c2, k=3, s=1): # ch_in, ch_out, kernel, stride
+ super(GhostBottleneck, self).__init__()
+ c_ = c2 // 2
+ self.conv = nn.Sequential(GhostConv(c1, c_, 1, 1), # pw
+ DWConv(c_, c_, k, s, act=False) if s == 2 else nn.Identity(), # dw
+ GhostConv(c_, c2, 1, 1, act=False)) # pw-linear
+ self.shortcut = nn.Sequential(DWConv(c1, c1, k, s, act=False),
+ Conv(c1, c2, 1, 1, act=False)) if s == 2 else nn.Identity()
+
+ def forward(self, x):
+ return self.conv(x) + self.shortcut(x)
+
+
+class MixConv2d(nn.Module):
+ # Mixed Depthwise Conv https://arxiv.org/abs/1907.09595
+ def __init__(self, c1, c2, k=(1, 3), s=1, equal_ch=True):
+ super(MixConv2d, self).__init__()
+ groups = len(k)
+ if equal_ch: # equal c_ per group
+ i = torch.linspace(0, groups - 1E-6, c2).floor() # c2 indices
+ c_ = [(i == g).sum() for g in range(groups)] # intermediate channels
+ else: # equal weight.numel() per group
+ b = [c2] + [0] * groups
+ a = np.eye(groups + 1, groups, k=-1)
+ a -= np.roll(a, 1, axis=1)
+ a *= np.array(k) ** 2
+ a[0] = 1
+ c_ = np.linalg.lstsq(a, b, rcond=None)[0].round() # solve for equal weight indices, ax = b
+
+ self.m = nn.ModuleList([nn.Conv2d(c1, int(c_[g]), k[g], s, k[g] // 2, bias=False) for g in range(groups)])
+ self.bn = nn.BatchNorm2d(c2)
+ self.act = nn.LeakyReLU(0.1, inplace=True)
+
+ def forward(self, x):
+ return x + self.act(self.bn(torch.cat([m(x) for m in self.m], 1)))
+
+
+class Ensemble(nn.ModuleList):
+ # Ensemble of models
+ def __init__(self):
+ super(Ensemble, self).__init__()
+
+ def forward(self, x, augment=False):
+ y = []
+ for module in self:
+ y.append(module(x, augment)[0])
+ # y = torch.stack(y).max(0)[0] # max ensemble
+ # y = torch.stack(y).mean(0) # mean ensemble
+ y = torch.cat(y, 1) # nms ensemble
+ return y, None # inference, train output
+
+
+def attempt_load(weights, map_location=None, inplace=True):
+ from models.yolo import Detect, Model
+
+ # Loads an ensemble of models weights=[a,b,c] or a single model weights=[a] or weights=a
+ model = Ensemble()
+ for w in weights if isinstance(weights, list) else [weights]:
+ attempt_download(w)
+ ckpt = torch.load(w, map_location=map_location) # load
+ model.append(ckpt['ema' if ckpt.get('ema') else 'model'].float().fuse().eval()) # FP32 model
+
+ # Compatibility updates
+ for m in model.modules():
+ if type(m) in [nn.Hardswish, nn.LeakyReLU, nn.ReLU, nn.ReLU6, nn.SiLU, Detect, Model]:
+ m.inplace = inplace # pytorch 1.7.0 compatibility
+ elif type(m) is Conv:
+ m._non_persistent_buffers_set = set() # pytorch 1.6.0 compatibility
+
+ if len(model) == 1:
+ return model[-1] # return model
+ else:
+ print(f'Ensemble created with {weights}\n')
+ for k in ['names']:
+ setattr(model, k, getattr(model[-1], k))
+ model.stride = model[torch.argmax(torch.tensor([m.stride.max() for m in model])).int()].stride # max stride
+ return model # return ensemble
diff --git a/Yolov5-Deepsort/models/export.py b/Yolov5-Deepsort/models/export.py
new file mode 100644
index 0000000000000000000000000000000000000000..65721f65d88835bfba6a7b5318af26ae8890bd8a
--- /dev/null
+++ b/Yolov5-Deepsort/models/export.py
@@ -0,0 +1,143 @@
+"""Exports a YOLOv5 *.pt model to TorchScript, ONNX, CoreML formats
+
+Usage:
+ $ python path/to/models/export.py --weights yolov5s.pt --img 640 --batch 1
+"""
+
+import argparse
+import sys
+import time
+from pathlib import Path
+
+sys.path.append(Path(__file__).parent.parent.absolute().__str__()) # to run '$ python *.py' files in subdirectories
+
+import torch
+import torch.nn as nn
+from torch.utils.mobile_optimizer import optimize_for_mobile
+
+import models
+from models.experimental import attempt_load
+from utils.activations import Hardswish, SiLU
+from utils.general import colorstr, check_img_size, check_requirements, file_size, set_logging
+from utils.torch_utils import select_device
+
+if __name__ == '__main__':
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--weights', type=str, default='./yolov5s.pt', help='weights path')
+ parser.add_argument('--img-size', nargs='+', type=int, default=[640, 640], help='image size') # height, width
+ parser.add_argument('--batch-size', type=int, default=1, help='batch size')
+ parser.add_argument('--device', default='cpu', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
+ parser.add_argument('--include', nargs='+', default=['torchscript', 'onnx', 'coreml'], help='include formats')
+ parser.add_argument('--half', action='store_true', help='FP16 half-precision export')
+ parser.add_argument('--inplace', action='store_true', help='set YOLOv5 Detect() inplace=True')
+ parser.add_argument('--train', action='store_true', help='model.train() mode')
+ parser.add_argument('--optimize', action='store_true', help='optimize TorchScript for mobile') # TorchScript-only
+ parser.add_argument('--dynamic', action='store_true', help='dynamic ONNX axes') # ONNX-only
+ parser.add_argument('--simplify', action='store_true', help='simplify ONNX model') # ONNX-only
+ parser.add_argument('--opset-version', type=int, default=12, help='ONNX opset version') # ONNX-only
+ opt = parser.parse_args()
+ opt.img_size *= 2 if len(opt.img_size) == 1 else 1 # expand
+ opt.include = [x.lower() for x in opt.include]
+ print(opt)
+ set_logging()
+ t = time.time()
+
+ # Load PyTorch model
+ device = select_device(opt.device)
+ model = attempt_load(opt.weights, map_location=device) # load FP32 model
+ labels = model.names
+
+ # Checks
+ gs = int(max(model.stride)) # grid size (max stride)
+ opt.img_size = [check_img_size(x, gs) for x in opt.img_size] # verify img_size are gs-multiples
+ assert not (opt.device.lower() == 'cpu' and opt.half), '--half only compatible with GPU export, i.e. use --device 0'
+
+ # Input
+ img = torch.zeros(opt.batch_size, 3, *opt.img_size).to(device) # image size(1,3,320,192) iDetection
+
+ # Update model
+ if opt.half:
+ img, model = img.half(), model.half() # to FP16
+ if opt.train:
+ model.train() # training mode (no grid construction in Detect layer)
+ for k, m in model.named_modules():
+ m._non_persistent_buffers_set = set() # pytorch 1.6.0 compatibility
+ if isinstance(m, models.common.Conv): # assign export-friendly activations
+ if isinstance(m.act, nn.Hardswish):
+ m.act = Hardswish()
+ elif isinstance(m.act, nn.SiLU):
+ m.act = SiLU()
+ elif isinstance(m, models.yolo.Detect):
+ m.inplace = opt.inplace
+ m.onnx_dynamic = opt.dynamic
+ # m.forward = m.forward_export # assign forward (optional)
+
+ for _ in range(2):
+ y = model(img) # dry runs
+ print(f"\n{colorstr('PyTorch:')} starting from {opt.weights} ({file_size(opt.weights):.1f} MB)")
+
+ # TorchScript export -----------------------------------------------------------------------------------------------
+ if 'torchscript' in opt.include or 'coreml' in opt.include:
+ prefix = colorstr('TorchScript:')
+ try:
+ print(f'\n{prefix} starting export with torch {torch.__version__}...')
+ f = opt.weights.replace('.pt', '.torchscript.pt') # filename
+ ts = torch.jit.trace(model, img, strict=False)
+ (optimize_for_mobile(ts) if opt.optimize else ts).save(f)
+ print(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)')
+ except Exception as e:
+ print(f'{prefix} export failure: {e}')
+
+ # ONNX export ------------------------------------------------------------------------------------------------------
+ if 'onnx' in opt.include:
+ prefix = colorstr('ONNX:')
+ try:
+ import onnx
+
+ print(f'{prefix} starting export with onnx {onnx.__version__}...')
+ f = opt.weights.replace('.pt', '.onnx') # filename
+ torch.onnx.export(model, img, f, verbose=False, opset_version=opt.opset_version, input_names=['images'],
+ dynamic_axes={'images': {0: 'batch', 2: 'height', 3: 'width'}, # size(1,3,640,640)
+ 'output': {0: 'batch', 2: 'y', 3: 'x'}} if opt.dynamic else None)
+
+ # Checks
+ model_onnx = onnx.load(f) # load onnx model
+ onnx.checker.check_model(model_onnx) # check onnx model
+ # print(onnx.helper.printable_graph(model_onnx.graph)) # print
+
+ # Simplify
+ if opt.simplify:
+ try:
+ check_requirements(['onnx-simplifier'])
+ import onnxsim
+
+ print(f'{prefix} simplifying with onnx-simplifier {onnxsim.__version__}...')
+ model_onnx, check = onnxsim.simplify(
+ model_onnx,
+ dynamic_input_shape=opt.dynamic,
+ input_shapes={'images': list(img.shape)} if opt.dynamic else None)
+ assert check, 'assert check failed'
+ onnx.save(model_onnx, f)
+ except Exception as e:
+ print(f'{prefix} simplifier failure: {e}')
+ print(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)')
+ except Exception as e:
+ print(f'{prefix} export failure: {e}')
+
+ # CoreML export ----------------------------------------------------------------------------------------------------
+ if 'coreml' in opt.include:
+ prefix = colorstr('CoreML:')
+ try:
+ import coremltools as ct
+
+ print(f'{prefix} starting export with coremltools {ct.__version__}...')
+ assert opt.train, 'CoreML exports should be placed in model.train() mode with `python export.py --train`'
+ model = ct.convert(ts, inputs=[ct.ImageType('image', shape=img.shape, scale=1 / 255.0, bias=[0, 0, 0])])
+ f = opt.weights.replace('.pt', '.mlmodel') # filename
+ model.save(f)
+ print(f'{prefix} export success, saved as {f} ({file_size(f):.1f} MB)')
+ except Exception as e:
+ print(f'{prefix} export failure: {e}')
+
+ # Finish
+ print(f'\nExport complete ({time.time() - t:.2f}s). Visualize with https://github.com/lutzroeder/netron.')
diff --git a/Yolov5-Deepsort/models/hub/anchors.yaml b/Yolov5-Deepsort/models/hub/anchors.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..a07a4dc72387ef79ee0d473ac1055d23c6543ee9
--- /dev/null
+++ b/Yolov5-Deepsort/models/hub/anchors.yaml
@@ -0,0 +1,58 @@
+# Default YOLOv5 anchors for COCO data
+
+
+# P5 -------------------------------------------------------------------------------------------------------------------
+# P5-640:
+anchors_p5_640:
+ - [ 10,13, 16,30, 33,23 ] # P3/8
+ - [ 30,61, 62,45, 59,119 ] # P4/16
+ - [ 116,90, 156,198, 373,326 ] # P5/32
+
+
+# P6 -------------------------------------------------------------------------------------------------------------------
+# P6-640: thr=0.25: 0.9964 BPR, 5.54 anchors past thr, n=12, img_size=640, metric_all=0.281/0.716-mean/best, past_thr=0.469-mean: 9,11, 21,19, 17,41, 43,32, 39,70, 86,64, 65,131, 134,130, 120,265, 282,180, 247,354, 512,387
+anchors_p6_640:
+ - [ 9,11, 21,19, 17,41 ] # P3/8
+ - [ 43,32, 39,70, 86,64 ] # P4/16
+ - [ 65,131, 134,130, 120,265 ] # P5/32
+ - [ 282,180, 247,354, 512,387 ] # P6/64
+
+# P6-1280: thr=0.25: 0.9950 BPR, 5.55 anchors past thr, n=12, img_size=1280, metric_all=0.281/0.714-mean/best, past_thr=0.468-mean: 19,27, 44,40, 38,94, 96,68, 86,152, 180,137, 140,301, 303,264, 238,542, 436,615, 739,380, 925,792
+anchors_p6_1280:
+ - [ 19,27, 44,40, 38,94 ] # P3/8
+ - [ 96,68, 86,152, 180,137 ] # P4/16
+ - [ 140,301, 303,264, 238,542 ] # P5/32
+ - [ 436,615, 739,380, 925,792 ] # P6/64
+
+# P6-1920: thr=0.25: 0.9950 BPR, 5.55 anchors past thr, n=12, img_size=1920, metric_all=0.281/0.714-mean/best, past_thr=0.468-mean: 28,41, 67,59, 57,141, 144,103, 129,227, 270,205, 209,452, 455,396, 358,812, 653,922, 1109,570, 1387,1187
+anchors_p6_1920:
+ - [ 28,41, 67,59, 57,141 ] # P3/8
+ - [ 144,103, 129,227, 270,205 ] # P4/16
+ - [ 209,452, 455,396, 358,812 ] # P5/32
+ - [ 653,922, 1109,570, 1387,1187 ] # P6/64
+
+
+# P7 -------------------------------------------------------------------------------------------------------------------
+# P7-640: thr=0.25: 0.9962 BPR, 6.76 anchors past thr, n=15, img_size=640, metric_all=0.275/0.733-mean/best, past_thr=0.466-mean: 11,11, 13,30, 29,20, 30,46, 61,38, 39,92, 78,80, 146,66, 79,163, 149,150, 321,143, 157,303, 257,402, 359,290, 524,372
+anchors_p7_640:
+ - [ 11,11, 13,30, 29,20 ] # P3/8
+ - [ 30,46, 61,38, 39,92 ] # P4/16
+ - [ 78,80, 146,66, 79,163 ] # P5/32
+ - [ 149,150, 321,143, 157,303 ] # P6/64
+ - [ 257,402, 359,290, 524,372 ] # P7/128
+
+# P7-1280: thr=0.25: 0.9968 BPR, 6.71 anchors past thr, n=15, img_size=1280, metric_all=0.273/0.732-mean/best, past_thr=0.463-mean: 19,22, 54,36, 32,77, 70,83, 138,71, 75,173, 165,159, 148,334, 375,151, 334,317, 251,626, 499,474, 750,326, 534,814, 1079,818
+anchors_p7_1280:
+ - [ 19,22, 54,36, 32,77 ] # P3/8
+ - [ 70,83, 138,71, 75,173 ] # P4/16
+ - [ 165,159, 148,334, 375,151 ] # P5/32
+ - [ 334,317, 251,626, 499,474 ] # P6/64
+ - [ 750,326, 534,814, 1079,818 ] # P7/128
+
+# P7-1920: thr=0.25: 0.9968 BPR, 6.71 anchors past thr, n=15, img_size=1920, metric_all=0.273/0.732-mean/best, past_thr=0.463-mean: 29,34, 81,55, 47,115, 105,124, 207,107, 113,259, 247,238, 222,500, 563,227, 501,476, 376,939, 749,711, 1126,489, 801,1222, 1618,1227
+anchors_p7_1920:
+ - [ 29,34, 81,55, 47,115 ] # P3/8
+ - [ 105,124, 207,107, 113,259 ] # P4/16
+ - [ 247,238, 222,500, 563,227 ] # P5/32
+ - [ 501,476, 376,939, 749,711 ] # P6/64
+ - [ 1126,489, 801,1222, 1618,1227 ] # P7/128
diff --git a/Yolov5-Deepsort/models/hub/yolov3-spp.yaml b/Yolov5-Deepsort/models/hub/yolov3-spp.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..38dcc449f0d0c1b85b4e6ff426da0d9e9df07d4e
--- /dev/null
+++ b/Yolov5-Deepsort/models/hub/yolov3-spp.yaml
@@ -0,0 +1,51 @@
+# parameters
+nc: 80 # number of classes
+depth_multiple: 1.0 # model depth multiple
+width_multiple: 1.0 # layer channel multiple
+
+# anchors
+anchors:
+ - [10,13, 16,30, 33,23] # P3/8
+ - [30,61, 62,45, 59,119] # P4/16
+ - [116,90, 156,198, 373,326] # P5/32
+
+# darknet53 backbone
+backbone:
+ # [from, number, module, args]
+ [[-1, 1, Conv, [32, 3, 1]], # 0
+ [-1, 1, Conv, [64, 3, 2]], # 1-P1/2
+ [-1, 1, Bottleneck, [64]],
+ [-1, 1, Conv, [128, 3, 2]], # 3-P2/4
+ [-1, 2, Bottleneck, [128]],
+ [-1, 1, Conv, [256, 3, 2]], # 5-P3/8
+ [-1, 8, Bottleneck, [256]],
+ [-1, 1, Conv, [512, 3, 2]], # 7-P4/16
+ [-1, 8, Bottleneck, [512]],
+ [-1, 1, Conv, [1024, 3, 2]], # 9-P5/32
+ [-1, 4, Bottleneck, [1024]], # 10
+ ]
+
+# YOLOv3-SPP head
+head:
+ [[-1, 1, Bottleneck, [1024, False]],
+ [-1, 1, SPP, [512, [5, 9, 13]]],
+ [-1, 1, Conv, [1024, 3, 1]],
+ [-1, 1, Conv, [512, 1, 1]],
+ [-1, 1, Conv, [1024, 3, 1]], # 15 (P5/32-large)
+
+ [-2, 1, Conv, [256, 1, 1]],
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [[-1, 8], 1, Concat, [1]], # cat backbone P4
+ [-1, 1, Bottleneck, [512, False]],
+ [-1, 1, Bottleneck, [512, False]],
+ [-1, 1, Conv, [256, 1, 1]],
+ [-1, 1, Conv, [512, 3, 1]], # 22 (P4/16-medium)
+
+ [-2, 1, Conv, [128, 1, 1]],
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [[-1, 6], 1, Concat, [1]], # cat backbone P3
+ [-1, 1, Bottleneck, [256, False]],
+ [-1, 2, Bottleneck, [256, False]], # 27 (P3/8-small)
+
+ [[27, 22, 15], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
+ ]
diff --git a/Yolov5-Deepsort/models/hub/yolov3-tiny.yaml b/Yolov5-Deepsort/models/hub/yolov3-tiny.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ff7638cad3beb5a0186cc67b84e23799ffb53bae
--- /dev/null
+++ b/Yolov5-Deepsort/models/hub/yolov3-tiny.yaml
@@ -0,0 +1,41 @@
+# parameters
+nc: 80 # number of classes
+depth_multiple: 1.0 # model depth multiple
+width_multiple: 1.0 # layer channel multiple
+
+# anchors
+anchors:
+ - [10,14, 23,27, 37,58] # P4/16
+ - [81,82, 135,169, 344,319] # P5/32
+
+# YOLOv3-tiny backbone
+backbone:
+ # [from, number, module, args]
+ [[-1, 1, Conv, [16, 3, 1]], # 0
+ [-1, 1, nn.MaxPool2d, [2, 2, 0]], # 1-P1/2
+ [-1, 1, Conv, [32, 3, 1]],
+ [-1, 1, nn.MaxPool2d, [2, 2, 0]], # 3-P2/4
+ [-1, 1, Conv, [64, 3, 1]],
+ [-1, 1, nn.MaxPool2d, [2, 2, 0]], # 5-P3/8
+ [-1, 1, Conv, [128, 3, 1]],
+ [-1, 1, nn.MaxPool2d, [2, 2, 0]], # 7-P4/16
+ [-1, 1, Conv, [256, 3, 1]],
+ [-1, 1, nn.MaxPool2d, [2, 2, 0]], # 9-P5/32
+ [-1, 1, Conv, [512, 3, 1]],
+ [-1, 1, nn.ZeroPad2d, [[0, 1, 0, 1]]], # 11
+ [-1, 1, nn.MaxPool2d, [2, 1, 0]], # 12
+ ]
+
+# YOLOv3-tiny head
+head:
+ [[-1, 1, Conv, [1024, 3, 1]],
+ [-1, 1, Conv, [256, 1, 1]],
+ [-1, 1, Conv, [512, 3, 1]], # 15 (P5/32-large)
+
+ [-2, 1, Conv, [128, 1, 1]],
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [[-1, 8], 1, Concat, [1]], # cat backbone P4
+ [-1, 1, Conv, [256, 3, 1]], # 19 (P4/16-medium)
+
+ [[19, 15], 1, Detect, [nc, anchors]], # Detect(P4, P5)
+ ]
diff --git a/Yolov5-Deepsort/models/hub/yolov3.yaml b/Yolov5-Deepsort/models/hub/yolov3.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f2e76135546945f3ccbb3311c99bf3882a90c199
--- /dev/null
+++ b/Yolov5-Deepsort/models/hub/yolov3.yaml
@@ -0,0 +1,51 @@
+# parameters
+nc: 80 # number of classes
+depth_multiple: 1.0 # model depth multiple
+width_multiple: 1.0 # layer channel multiple
+
+# anchors
+anchors:
+ - [10,13, 16,30, 33,23] # P3/8
+ - [30,61, 62,45, 59,119] # P4/16
+ - [116,90, 156,198, 373,326] # P5/32
+
+# darknet53 backbone
+backbone:
+ # [from, number, module, args]
+ [[-1, 1, Conv, [32, 3, 1]], # 0
+ [-1, 1, Conv, [64, 3, 2]], # 1-P1/2
+ [-1, 1, Bottleneck, [64]],
+ [-1, 1, Conv, [128, 3, 2]], # 3-P2/4
+ [-1, 2, Bottleneck, [128]],
+ [-1, 1, Conv, [256, 3, 2]], # 5-P3/8
+ [-1, 8, Bottleneck, [256]],
+ [-1, 1, Conv, [512, 3, 2]], # 7-P4/16
+ [-1, 8, Bottleneck, [512]],
+ [-1, 1, Conv, [1024, 3, 2]], # 9-P5/32
+ [-1, 4, Bottleneck, [1024]], # 10
+ ]
+
+# YOLOv3 head
+head:
+ [[-1, 1, Bottleneck, [1024, False]],
+ [-1, 1, Conv, [512, [1, 1]]],
+ [-1, 1, Conv, [1024, 3, 1]],
+ [-1, 1, Conv, [512, 1, 1]],
+ [-1, 1, Conv, [1024, 3, 1]], # 15 (P5/32-large)
+
+ [-2, 1, Conv, [256, 1, 1]],
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [[-1, 8], 1, Concat, [1]], # cat backbone P4
+ [-1, 1, Bottleneck, [512, False]],
+ [-1, 1, Bottleneck, [512, False]],
+ [-1, 1, Conv, [256, 1, 1]],
+ [-1, 1, Conv, [512, 3, 1]], # 22 (P4/16-medium)
+
+ [-2, 1, Conv, [128, 1, 1]],
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [[-1, 6], 1, Concat, [1]], # cat backbone P3
+ [-1, 1, Bottleneck, [256, False]],
+ [-1, 2, Bottleneck, [256, False]], # 27 (P3/8-small)
+
+ [[27, 22, 15], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
+ ]
diff --git a/Yolov5-Deepsort/models/hub/yolov5-fpn.yaml b/Yolov5-Deepsort/models/hub/yolov5-fpn.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e772bffecbbca75c536cd43d9e1659e41910b337
--- /dev/null
+++ b/Yolov5-Deepsort/models/hub/yolov5-fpn.yaml
@@ -0,0 +1,42 @@
+# parameters
+nc: 80 # number of classes
+depth_multiple: 1.0 # model depth multiple
+width_multiple: 1.0 # layer channel multiple
+
+# anchors
+anchors:
+ - [10,13, 16,30, 33,23] # P3/8
+ - [30,61, 62,45, 59,119] # P4/16
+ - [116,90, 156,198, 373,326] # P5/32
+
+# YOLOv5 backbone
+backbone:
+ # [from, number, module, args]
+ [[-1, 1, Focus, [64, 3]], # 0-P1/2
+ [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
+ [-1, 3, Bottleneck, [128]],
+ [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
+ [-1, 9, BottleneckCSP, [256]],
+ [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
+ [-1, 9, BottleneckCSP, [512]],
+ [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
+ [-1, 1, SPP, [1024, [5, 9, 13]]],
+ [-1, 6, BottleneckCSP, [1024]], # 9
+ ]
+
+# YOLOv5 FPN head
+head:
+ [[-1, 3, BottleneckCSP, [1024, False]], # 10 (P5/32-large)
+
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [[-1, 6], 1, Concat, [1]], # cat backbone P4
+ [-1, 1, Conv, [512, 1, 1]],
+ [-1, 3, BottleneckCSP, [512, False]], # 14 (P4/16-medium)
+
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [[-1, 4], 1, Concat, [1]], # cat backbone P3
+ [-1, 1, Conv, [256, 1, 1]],
+ [-1, 3, BottleneckCSP, [256, False]], # 18 (P3/8-small)
+
+ [[18, 14, 10], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
+ ]
diff --git a/Yolov5-Deepsort/models/hub/yolov5-p2.yaml b/Yolov5-Deepsort/models/hub/yolov5-p2.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..0633a90fd065efce8d9c771da36815ae353fa2f2
--- /dev/null
+++ b/Yolov5-Deepsort/models/hub/yolov5-p2.yaml
@@ -0,0 +1,54 @@
+# parameters
+nc: 80 # number of classes
+depth_multiple: 1.0 # model depth multiple
+width_multiple: 1.0 # layer channel multiple
+
+# anchors
+anchors: 3
+
+# YOLOv5 backbone
+backbone:
+ # [from, number, module, args]
+ [ [ -1, 1, Focus, [ 64, 3 ] ], # 0-P1/2
+ [ -1, 1, Conv, [ 128, 3, 2 ] ], # 1-P2/4
+ [ -1, 3, C3, [ 128 ] ],
+ [ -1, 1, Conv, [ 256, 3, 2 ] ], # 3-P3/8
+ [ -1, 9, C3, [ 256 ] ],
+ [ -1, 1, Conv, [ 512, 3, 2 ] ], # 5-P4/16
+ [ -1, 9, C3, [ 512 ] ],
+ [ -1, 1, Conv, [ 1024, 3, 2 ] ], # 7-P5/32
+ [ -1, 1, SPP, [ 1024, [ 5, 9, 13 ] ] ],
+ [ -1, 3, C3, [ 1024, False ] ], # 9
+ ]
+
+# YOLOv5 head
+head:
+ [ [ -1, 1, Conv, [ 512, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 6 ], 1, Concat, [ 1 ] ], # cat backbone P4
+ [ -1, 3, C3, [ 512, False ] ], # 13
+
+ [ -1, 1, Conv, [ 256, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 4 ], 1, Concat, [ 1 ] ], # cat backbone P3
+ [ -1, 3, C3, [ 256, False ] ], # 17 (P3/8-small)
+
+ [ -1, 1, Conv, [ 128, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 2 ], 1, Concat, [ 1 ] ], # cat backbone P2
+ [ -1, 1, C3, [ 128, False ] ], # 21 (P2/4-xsmall)
+
+ [ -1, 1, Conv, [ 128, 3, 2 ] ],
+ [ [ -1, 18 ], 1, Concat, [ 1 ] ], # cat head P3
+ [ -1, 3, C3, [ 256, False ] ], # 24 (P3/8-small)
+
+ [ -1, 1, Conv, [ 256, 3, 2 ] ],
+ [ [ -1, 14 ], 1, Concat, [ 1 ] ], # cat head P4
+ [ -1, 3, C3, [ 512, False ] ], # 27 (P4/16-medium)
+
+ [ -1, 1, Conv, [ 512, 3, 2 ] ],
+ [ [ -1, 10 ], 1, Concat, [ 1 ] ], # cat head P5
+ [ -1, 3, C3, [ 1024, False ] ], # 30 (P5/32-large)
+
+ [ [ 24, 27, 30 ], 1, Detect, [ nc, anchors ] ], # Detect(P3, P4, P5)
+ ]
diff --git a/Yolov5-Deepsort/models/hub/yolov5-p6.yaml b/Yolov5-Deepsort/models/hub/yolov5-p6.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..3728a118f09016eebc68538e7651134e070bd79f
--- /dev/null
+++ b/Yolov5-Deepsort/models/hub/yolov5-p6.yaml
@@ -0,0 +1,56 @@
+# parameters
+nc: 80 # number of classes
+depth_multiple: 1.0 # model depth multiple
+width_multiple: 1.0 # layer channel multiple
+
+# anchors
+anchors: 3
+
+# YOLOv5 backbone
+backbone:
+ # [from, number, module, args]
+ [ [ -1, 1, Focus, [ 64, 3 ] ], # 0-P1/2
+ [ -1, 1, Conv, [ 128, 3, 2 ] ], # 1-P2/4
+ [ -1, 3, C3, [ 128 ] ],
+ [ -1, 1, Conv, [ 256, 3, 2 ] ], # 3-P3/8
+ [ -1, 9, C3, [ 256 ] ],
+ [ -1, 1, Conv, [ 512, 3, 2 ] ], # 5-P4/16
+ [ -1, 9, C3, [ 512 ] ],
+ [ -1, 1, Conv, [ 768, 3, 2 ] ], # 7-P5/32
+ [ -1, 3, C3, [ 768 ] ],
+ [ -1, 1, Conv, [ 1024, 3, 2 ] ], # 9-P6/64
+ [ -1, 1, SPP, [ 1024, [ 3, 5, 7 ] ] ],
+ [ -1, 3, C3, [ 1024, False ] ], # 11
+ ]
+
+# YOLOv5 head
+head:
+ [ [ -1, 1, Conv, [ 768, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 8 ], 1, Concat, [ 1 ] ], # cat backbone P5
+ [ -1, 3, C3, [ 768, False ] ], # 15
+
+ [ -1, 1, Conv, [ 512, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 6 ], 1, Concat, [ 1 ] ], # cat backbone P4
+ [ -1, 3, C3, [ 512, False ] ], # 19
+
+ [ -1, 1, Conv, [ 256, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 4 ], 1, Concat, [ 1 ] ], # cat backbone P3
+ [ -1, 3, C3, [ 256, False ] ], # 23 (P3/8-small)
+
+ [ -1, 1, Conv, [ 256, 3, 2 ] ],
+ [ [ -1, 20 ], 1, Concat, [ 1 ] ], # cat head P4
+ [ -1, 3, C3, [ 512, False ] ], # 26 (P4/16-medium)
+
+ [ -1, 1, Conv, [ 512, 3, 2 ] ],
+ [ [ -1, 16 ], 1, Concat, [ 1 ] ], # cat head P5
+ [ -1, 3, C3, [ 768, False ] ], # 29 (P5/32-large)
+
+ [ -1, 1, Conv, [ 768, 3, 2 ] ],
+ [ [ -1, 12 ], 1, Concat, [ 1 ] ], # cat head P6
+ [ -1, 3, C3, [ 1024, False ] ], # 32 (P5/64-xlarge)
+
+ [ [ 23, 26, 29, 32 ], 1, Detect, [ nc, anchors ] ], # Detect(P3, P4, P5, P6)
+ ]
diff --git a/Yolov5-Deepsort/models/hub/yolov5-p7.yaml b/Yolov5-Deepsort/models/hub/yolov5-p7.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ca8f8492ce0e9750e1856ac67f19ff4bf92d1948
--- /dev/null
+++ b/Yolov5-Deepsort/models/hub/yolov5-p7.yaml
@@ -0,0 +1,67 @@
+# parameters
+nc: 80 # number of classes
+depth_multiple: 1.0 # model depth multiple
+width_multiple: 1.0 # layer channel multiple
+
+# anchors
+anchors: 3
+
+# YOLOv5 backbone
+backbone:
+ # [from, number, module, args]
+ [ [ -1, 1, Focus, [ 64, 3 ] ], # 0-P1/2
+ [ -1, 1, Conv, [ 128, 3, 2 ] ], # 1-P2/4
+ [ -1, 3, C3, [ 128 ] ],
+ [ -1, 1, Conv, [ 256, 3, 2 ] ], # 3-P3/8
+ [ -1, 9, C3, [ 256 ] ],
+ [ -1, 1, Conv, [ 512, 3, 2 ] ], # 5-P4/16
+ [ -1, 9, C3, [ 512 ] ],
+ [ -1, 1, Conv, [ 768, 3, 2 ] ], # 7-P5/32
+ [ -1, 3, C3, [ 768 ] ],
+ [ -1, 1, Conv, [ 1024, 3, 2 ] ], # 9-P6/64
+ [ -1, 3, C3, [ 1024 ] ],
+ [ -1, 1, Conv, [ 1280, 3, 2 ] ], # 11-P7/128
+ [ -1, 1, SPP, [ 1280, [ 3, 5 ] ] ],
+ [ -1, 3, C3, [ 1280, False ] ], # 13
+ ]
+
+# YOLOv5 head
+head:
+ [ [ -1, 1, Conv, [ 1024, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 10 ], 1, Concat, [ 1 ] ], # cat backbone P6
+ [ -1, 3, C3, [ 1024, False ] ], # 17
+
+ [ -1, 1, Conv, [ 768, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 8 ], 1, Concat, [ 1 ] ], # cat backbone P5
+ [ -1, 3, C3, [ 768, False ] ], # 21
+
+ [ -1, 1, Conv, [ 512, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 6 ], 1, Concat, [ 1 ] ], # cat backbone P4
+ [ -1, 3, C3, [ 512, False ] ], # 25
+
+ [ -1, 1, Conv, [ 256, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 4 ], 1, Concat, [ 1 ] ], # cat backbone P3
+ [ -1, 3, C3, [ 256, False ] ], # 29 (P3/8-small)
+
+ [ -1, 1, Conv, [ 256, 3, 2 ] ],
+ [ [ -1, 26 ], 1, Concat, [ 1 ] ], # cat head P4
+ [ -1, 3, C3, [ 512, False ] ], # 32 (P4/16-medium)
+
+ [ -1, 1, Conv, [ 512, 3, 2 ] ],
+ [ [ -1, 22 ], 1, Concat, [ 1 ] ], # cat head P5
+ [ -1, 3, C3, [ 768, False ] ], # 35 (P5/32-large)
+
+ [ -1, 1, Conv, [ 768, 3, 2 ] ],
+ [ [ -1, 18 ], 1, Concat, [ 1 ] ], # cat head P6
+ [ -1, 3, C3, [ 1024, False ] ], # 38 (P6/64-xlarge)
+
+ [ -1, 1, Conv, [ 1024, 3, 2 ] ],
+ [ [ -1, 14 ], 1, Concat, [ 1 ] ], # cat head P7
+ [ -1, 3, C3, [ 1280, False ] ], # 41 (P7/128-xxlarge)
+
+ [ [ 29, 32, 35, 38, 41 ], 1, Detect, [ nc, anchors ] ], # Detect(P3, P4, P5, P6, P7)
+ ]
diff --git a/Yolov5-Deepsort/models/hub/yolov5-panet.yaml b/Yolov5-Deepsort/models/hub/yolov5-panet.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..340f95a4dbc9a7a3250cd6e41422ea4c520991c8
--- /dev/null
+++ b/Yolov5-Deepsort/models/hub/yolov5-panet.yaml
@@ -0,0 +1,48 @@
+# parameters
+nc: 80 # number of classes
+depth_multiple: 1.0 # model depth multiple
+width_multiple: 1.0 # layer channel multiple
+
+# anchors
+anchors:
+ - [10,13, 16,30, 33,23] # P3/8
+ - [30,61, 62,45, 59,119] # P4/16
+ - [116,90, 156,198, 373,326] # P5/32
+
+# YOLOv5 backbone
+backbone:
+ # [from, number, module, args]
+ [[-1, 1, Focus, [64, 3]], # 0-P1/2
+ [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
+ [-1, 3, BottleneckCSP, [128]],
+ [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
+ [-1, 9, BottleneckCSP, [256]],
+ [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
+ [-1, 9, BottleneckCSP, [512]],
+ [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
+ [-1, 1, SPP, [1024, [5, 9, 13]]],
+ [-1, 3, BottleneckCSP, [1024, False]], # 9
+ ]
+
+# YOLOv5 PANet head
+head:
+ [[-1, 1, Conv, [512, 1, 1]],
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [[-1, 6], 1, Concat, [1]], # cat backbone P4
+ [-1, 3, BottleneckCSP, [512, False]], # 13
+
+ [-1, 1, Conv, [256, 1, 1]],
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [[-1, 4], 1, Concat, [1]], # cat backbone P3
+ [-1, 3, BottleneckCSP, [256, False]], # 17 (P3/8-small)
+
+ [-1, 1, Conv, [256, 3, 2]],
+ [[-1, 14], 1, Concat, [1]], # cat head P4
+ [-1, 3, BottleneckCSP, [512, False]], # 20 (P4/16-medium)
+
+ [-1, 1, Conv, [512, 3, 2]],
+ [[-1, 10], 1, Concat, [1]], # cat head P5
+ [-1, 3, BottleneckCSP, [1024, False]], # 23 (P5/32-large)
+
+ [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
+ ]
diff --git a/Yolov5-Deepsort/models/hub/yolov5l6.yaml b/Yolov5-Deepsort/models/hub/yolov5l6.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..11298b01f47915d729c747714caf308b676ec579
--- /dev/null
+++ b/Yolov5-Deepsort/models/hub/yolov5l6.yaml
@@ -0,0 +1,60 @@
+# parameters
+nc: 80 # number of classes
+depth_multiple: 1.0 # model depth multiple
+width_multiple: 1.0 # layer channel multiple
+
+# anchors
+anchors:
+ - [ 19,27, 44,40, 38,94 ] # P3/8
+ - [ 96,68, 86,152, 180,137 ] # P4/16
+ - [ 140,301, 303,264, 238,542 ] # P5/32
+ - [ 436,615, 739,380, 925,792 ] # P6/64
+
+# YOLOv5 backbone
+backbone:
+ # [from, number, module, args]
+ [ [ -1, 1, Focus, [ 64, 3 ] ], # 0-P1/2
+ [ -1, 1, Conv, [ 128, 3, 2 ] ], # 1-P2/4
+ [ -1, 3, C3, [ 128 ] ],
+ [ -1, 1, Conv, [ 256, 3, 2 ] ], # 3-P3/8
+ [ -1, 9, C3, [ 256 ] ],
+ [ -1, 1, Conv, [ 512, 3, 2 ] ], # 5-P4/16
+ [ -1, 9, C3, [ 512 ] ],
+ [ -1, 1, Conv, [ 768, 3, 2 ] ], # 7-P5/32
+ [ -1, 3, C3, [ 768 ] ],
+ [ -1, 1, Conv, [ 1024, 3, 2 ] ], # 9-P6/64
+ [ -1, 1, SPP, [ 1024, [ 3, 5, 7 ] ] ],
+ [ -1, 3, C3, [ 1024, False ] ], # 11
+ ]
+
+# YOLOv5 head
+head:
+ [ [ -1, 1, Conv, [ 768, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 8 ], 1, Concat, [ 1 ] ], # cat backbone P5
+ [ -1, 3, C3, [ 768, False ] ], # 15
+
+ [ -1, 1, Conv, [ 512, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 6 ], 1, Concat, [ 1 ] ], # cat backbone P4
+ [ -1, 3, C3, [ 512, False ] ], # 19
+
+ [ -1, 1, Conv, [ 256, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 4 ], 1, Concat, [ 1 ] ], # cat backbone P3
+ [ -1, 3, C3, [ 256, False ] ], # 23 (P3/8-small)
+
+ [ -1, 1, Conv, [ 256, 3, 2 ] ],
+ [ [ -1, 20 ], 1, Concat, [ 1 ] ], # cat head P4
+ [ -1, 3, C3, [ 512, False ] ], # 26 (P4/16-medium)
+
+ [ -1, 1, Conv, [ 512, 3, 2 ] ],
+ [ [ -1, 16 ], 1, Concat, [ 1 ] ], # cat head P5
+ [ -1, 3, C3, [ 768, False ] ], # 29 (P5/32-large)
+
+ [ -1, 1, Conv, [ 768, 3, 2 ] ],
+ [ [ -1, 12 ], 1, Concat, [ 1 ] ], # cat head P6
+ [ -1, 3, C3, [ 1024, False ] ], # 32 (P6/64-xlarge)
+
+ [ [ 23, 26, 29, 32 ], 1, Detect, [ nc, anchors ] ], # Detect(P3, P4, P5, P6)
+ ]
diff --git a/Yolov5-Deepsort/models/hub/yolov5m6.yaml b/Yolov5-Deepsort/models/hub/yolov5m6.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..48afc865593ae964493e8fbd042a72209ab6487f
--- /dev/null
+++ b/Yolov5-Deepsort/models/hub/yolov5m6.yaml
@@ -0,0 +1,60 @@
+# parameters
+nc: 80 # number of classes
+depth_multiple: 0.67 # model depth multiple
+width_multiple: 0.75 # layer channel multiple
+
+# anchors
+anchors:
+ - [ 19,27, 44,40, 38,94 ] # P3/8
+ - [ 96,68, 86,152, 180,137 ] # P4/16
+ - [ 140,301, 303,264, 238,542 ] # P5/32
+ - [ 436,615, 739,380, 925,792 ] # P6/64
+
+# YOLOv5 backbone
+backbone:
+ # [from, number, module, args]
+ [ [ -1, 1, Focus, [ 64, 3 ] ], # 0-P1/2
+ [ -1, 1, Conv, [ 128, 3, 2 ] ], # 1-P2/4
+ [ -1, 3, C3, [ 128 ] ],
+ [ -1, 1, Conv, [ 256, 3, 2 ] ], # 3-P3/8
+ [ -1, 9, C3, [ 256 ] ],
+ [ -1, 1, Conv, [ 512, 3, 2 ] ], # 5-P4/16
+ [ -1, 9, C3, [ 512 ] ],
+ [ -1, 1, Conv, [ 768, 3, 2 ] ], # 7-P5/32
+ [ -1, 3, C3, [ 768 ] ],
+ [ -1, 1, Conv, [ 1024, 3, 2 ] ], # 9-P6/64
+ [ -1, 1, SPP, [ 1024, [ 3, 5, 7 ] ] ],
+ [ -1, 3, C3, [ 1024, False ] ], # 11
+ ]
+
+# YOLOv5 head
+head:
+ [ [ -1, 1, Conv, [ 768, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 8 ], 1, Concat, [ 1 ] ], # cat backbone P5
+ [ -1, 3, C3, [ 768, False ] ], # 15
+
+ [ -1, 1, Conv, [ 512, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 6 ], 1, Concat, [ 1 ] ], # cat backbone P4
+ [ -1, 3, C3, [ 512, False ] ], # 19
+
+ [ -1, 1, Conv, [ 256, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 4 ], 1, Concat, [ 1 ] ], # cat backbone P3
+ [ -1, 3, C3, [ 256, False ] ], # 23 (P3/8-small)
+
+ [ -1, 1, Conv, [ 256, 3, 2 ] ],
+ [ [ -1, 20 ], 1, Concat, [ 1 ] ], # cat head P4
+ [ -1, 3, C3, [ 512, False ] ], # 26 (P4/16-medium)
+
+ [ -1, 1, Conv, [ 512, 3, 2 ] ],
+ [ [ -1, 16 ], 1, Concat, [ 1 ] ], # cat head P5
+ [ -1, 3, C3, [ 768, False ] ], # 29 (P5/32-large)
+
+ [ -1, 1, Conv, [ 768, 3, 2 ] ],
+ [ [ -1, 12 ], 1, Concat, [ 1 ] ], # cat head P6
+ [ -1, 3, C3, [ 1024, False ] ], # 32 (P6/64-xlarge)
+
+ [ [ 23, 26, 29, 32 ], 1, Detect, [ nc, anchors ] ], # Detect(P3, P4, P5, P6)
+ ]
diff --git a/Yolov5-Deepsort/models/hub/yolov5s-transformer.yaml b/Yolov5-Deepsort/models/hub/yolov5s-transformer.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f2d666722b30508eea865cf4d51ce607589a60ec
--- /dev/null
+++ b/Yolov5-Deepsort/models/hub/yolov5s-transformer.yaml
@@ -0,0 +1,48 @@
+# parameters
+nc: 80 # number of classes
+depth_multiple: 0.33 # model depth multiple
+width_multiple: 0.50 # layer channel multiple
+
+# anchors
+anchors:
+ - [10,13, 16,30, 33,23] # P3/8
+ - [30,61, 62,45, 59,119] # P4/16
+ - [116,90, 156,198, 373,326] # P5/32
+
+# YOLOv5 backbone
+backbone:
+ # [from, number, module, args]
+ [[-1, 1, Focus, [64, 3]], # 0-P1/2
+ [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
+ [-1, 3, C3, [128]],
+ [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
+ [-1, 9, C3, [256]],
+ [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
+ [-1, 9, C3, [512]],
+ [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
+ [-1, 1, SPP, [1024, [5, 9, 13]]],
+ [-1, 3, C3TR, [1024, False]], # 9 <-------- C3TR() Transformer module
+ ]
+
+# YOLOv5 head
+head:
+ [[-1, 1, Conv, [512, 1, 1]],
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [[-1, 6], 1, Concat, [1]], # cat backbone P4
+ [-1, 3, C3, [512, False]], # 13
+
+ [-1, 1, Conv, [256, 1, 1]],
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [[-1, 4], 1, Concat, [1]], # cat backbone P3
+ [-1, 3, C3, [256, False]], # 17 (P3/8-small)
+
+ [-1, 1, Conv, [256, 3, 2]],
+ [[-1, 14], 1, Concat, [1]], # cat head P4
+ [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
+
+ [-1, 1, Conv, [512, 3, 2]],
+ [[-1, 10], 1, Concat, [1]], # cat head P5
+ [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
+
+ [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
+ ]
diff --git a/Yolov5-Deepsort/models/hub/yolov5s6.yaml b/Yolov5-Deepsort/models/hub/yolov5s6.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..1df577a2cc97c66763eafd37c70b97f6e893d4fd
--- /dev/null
+++ b/Yolov5-Deepsort/models/hub/yolov5s6.yaml
@@ -0,0 +1,60 @@
+# parameters
+nc: 80 # number of classes
+depth_multiple: 0.33 # model depth multiple
+width_multiple: 0.50 # layer channel multiple
+
+# anchors
+anchors:
+ - [ 19,27, 44,40, 38,94 ] # P3/8
+ - [ 96,68, 86,152, 180,137 ] # P4/16
+ - [ 140,301, 303,264, 238,542 ] # P5/32
+ - [ 436,615, 739,380, 925,792 ] # P6/64
+
+# YOLOv5 backbone
+backbone:
+ # [from, number, module, args]
+ [ [ -1, 1, Focus, [ 64, 3 ] ], # 0-P1/2
+ [ -1, 1, Conv, [ 128, 3, 2 ] ], # 1-P2/4
+ [ -1, 3, C3, [ 128 ] ],
+ [ -1, 1, Conv, [ 256, 3, 2 ] ], # 3-P3/8
+ [ -1, 9, C3, [ 256 ] ],
+ [ -1, 1, Conv, [ 512, 3, 2 ] ], # 5-P4/16
+ [ -1, 9, C3, [ 512 ] ],
+ [ -1, 1, Conv, [ 768, 3, 2 ] ], # 7-P5/32
+ [ -1, 3, C3, [ 768 ] ],
+ [ -1, 1, Conv, [ 1024, 3, 2 ] ], # 9-P6/64
+ [ -1, 1, SPP, [ 1024, [ 3, 5, 7 ] ] ],
+ [ -1, 3, C3, [ 1024, False ] ], # 11
+ ]
+
+# YOLOv5 head
+head:
+ [ [ -1, 1, Conv, [ 768, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 8 ], 1, Concat, [ 1 ] ], # cat backbone P5
+ [ -1, 3, C3, [ 768, False ] ], # 15
+
+ [ -1, 1, Conv, [ 512, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 6 ], 1, Concat, [ 1 ] ], # cat backbone P4
+ [ -1, 3, C3, [ 512, False ] ], # 19
+
+ [ -1, 1, Conv, [ 256, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 4 ], 1, Concat, [ 1 ] ], # cat backbone P3
+ [ -1, 3, C3, [ 256, False ] ], # 23 (P3/8-small)
+
+ [ -1, 1, Conv, [ 256, 3, 2 ] ],
+ [ [ -1, 20 ], 1, Concat, [ 1 ] ], # cat head P4
+ [ -1, 3, C3, [ 512, False ] ], # 26 (P4/16-medium)
+
+ [ -1, 1, Conv, [ 512, 3, 2 ] ],
+ [ [ -1, 16 ], 1, Concat, [ 1 ] ], # cat head P5
+ [ -1, 3, C3, [ 768, False ] ], # 29 (P5/32-large)
+
+ [ -1, 1, Conv, [ 768, 3, 2 ] ],
+ [ [ -1, 12 ], 1, Concat, [ 1 ] ], # cat head P6
+ [ -1, 3, C3, [ 1024, False ] ], # 32 (P6/64-xlarge)
+
+ [ [ 23, 26, 29, 32 ], 1, Detect, [ nc, anchors ] ], # Detect(P3, P4, P5, P6)
+ ]
diff --git a/Yolov5-Deepsort/models/hub/yolov5x6.yaml b/Yolov5-Deepsort/models/hub/yolov5x6.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..5ebc02124fe785d730316fde42bde40c830eac66
--- /dev/null
+++ b/Yolov5-Deepsort/models/hub/yolov5x6.yaml
@@ -0,0 +1,60 @@
+# parameters
+nc: 80 # number of classes
+depth_multiple: 1.33 # model depth multiple
+width_multiple: 1.25 # layer channel multiple
+
+# anchors
+anchors:
+ - [ 19,27, 44,40, 38,94 ] # P3/8
+ - [ 96,68, 86,152, 180,137 ] # P4/16
+ - [ 140,301, 303,264, 238,542 ] # P5/32
+ - [ 436,615, 739,380, 925,792 ] # P6/64
+
+# YOLOv5 backbone
+backbone:
+ # [from, number, module, args]
+ [ [ -1, 1, Focus, [ 64, 3 ] ], # 0-P1/2
+ [ -1, 1, Conv, [ 128, 3, 2 ] ], # 1-P2/4
+ [ -1, 3, C3, [ 128 ] ],
+ [ -1, 1, Conv, [ 256, 3, 2 ] ], # 3-P3/8
+ [ -1, 9, C3, [ 256 ] ],
+ [ -1, 1, Conv, [ 512, 3, 2 ] ], # 5-P4/16
+ [ -1, 9, C3, [ 512 ] ],
+ [ -1, 1, Conv, [ 768, 3, 2 ] ], # 7-P5/32
+ [ -1, 3, C3, [ 768 ] ],
+ [ -1, 1, Conv, [ 1024, 3, 2 ] ], # 9-P6/64
+ [ -1, 1, SPP, [ 1024, [ 3, 5, 7 ] ] ],
+ [ -1, 3, C3, [ 1024, False ] ], # 11
+ ]
+
+# YOLOv5 head
+head:
+ [ [ -1, 1, Conv, [ 768, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 8 ], 1, Concat, [ 1 ] ], # cat backbone P5
+ [ -1, 3, C3, [ 768, False ] ], # 15
+
+ [ -1, 1, Conv, [ 512, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 6 ], 1, Concat, [ 1 ] ], # cat backbone P4
+ [ -1, 3, C3, [ 512, False ] ], # 19
+
+ [ -1, 1, Conv, [ 256, 1, 1 ] ],
+ [ -1, 1, nn.Upsample, [ None, 2, 'nearest' ] ],
+ [ [ -1, 4 ], 1, Concat, [ 1 ] ], # cat backbone P3
+ [ -1, 3, C3, [ 256, False ] ], # 23 (P3/8-small)
+
+ [ -1, 1, Conv, [ 256, 3, 2 ] ],
+ [ [ -1, 20 ], 1, Concat, [ 1 ] ], # cat head P4
+ [ -1, 3, C3, [ 512, False ] ], # 26 (P4/16-medium)
+
+ [ -1, 1, Conv, [ 512, 3, 2 ] ],
+ [ [ -1, 16 ], 1, Concat, [ 1 ] ], # cat head P5
+ [ -1, 3, C3, [ 768, False ] ], # 29 (P5/32-large)
+
+ [ -1, 1, Conv, [ 768, 3, 2 ] ],
+ [ [ -1, 12 ], 1, Concat, [ 1 ] ], # cat head P6
+ [ -1, 3, C3, [ 1024, False ] ], # 32 (P6/64-xlarge)
+
+ [ [ 23, 26, 29, 32 ], 1, Detect, [ nc, anchors ] ], # Detect(P3, P4, P5, P6)
+ ]
diff --git a/Yolov5-Deepsort/models/yolo.py b/Yolov5-Deepsort/models/yolo.py
new file mode 100644
index 0000000000000000000000000000000000000000..06b80032d3d3b6d84162e040e45e0e276a619a34
--- /dev/null
+++ b/Yolov5-Deepsort/models/yolo.py
@@ -0,0 +1,304 @@
+# YOLOv5 YOLO-specific modules
+
+import argparse
+import logging
+import sys
+from copy import deepcopy
+from pathlib import Path
+
+sys.path.append(Path(__file__).parent.parent.absolute().__str__()) # to run '$ python *.py' files in subdirectories
+logger = logging.getLogger(__name__)
+
+from models.common import *
+from models.experimental import *
+from utils.autoanchor import check_anchor_order
+from utils.general import make_divisible, check_file, set_logging
+from utils.torch_utils import time_synchronized, fuse_conv_and_bn, model_info, scale_img, initialize_weights, \
+ select_device, copy_attr
+
+try:
+ import thop # for FLOPS computation
+except ImportError:
+ thop = None
+
+
+class Detect(nn.Module):
+ stride = None # strides computed during build
+ onnx_dynamic = False # ONNX export parameter
+
+ def __init__(self, nc=80, anchors=(), ch=(), inplace=True): # detection layer
+ super(Detect, self).__init__()
+ self.nc = nc # number of classes
+ self.no = nc + 5 # number of outputs per anchor
+ self.nl = len(anchors) # number of detection layers
+ self.na = len(anchors[0]) // 2 # number of anchors
+ self.grid = [torch.zeros(1)] * self.nl # init grid
+ a = torch.tensor(anchors).float().view(self.nl, -1, 2)
+ self.register_buffer('anchors', a) # shape(nl,na,2)
+ self.register_buffer('anchor_grid', a.clone().view(self.nl, 1, -1, 1, 1, 2)) # shape(nl,1,na,1,1,2)
+ self.m = nn.ModuleList(nn.Conv2d(x, self.no * self.na, 1) for x in ch) # output conv
+ self.inplace = inplace # use in-place ops (e.g. slice assignment)
+
+ def forward(self, x):
+ # x = x.copy() # for profiling
+ z = [] # inference output
+ for i in range(self.nl):
+ x[i] = self.m[i](x[i]) # conv
+ bs, _, ny, nx = x[i].shape # x(bs,255,20,20) to x(bs,3,20,20,85)
+ x[i] = x[i].view(bs, self.na, self.no, ny, nx).permute(0, 1, 3, 4, 2).contiguous()
+
+ if not self.training: # inference
+ if self.grid[i].shape[2:4] != x[i].shape[2:4] or self.onnx_dynamic:
+ self.grid[i] = self._make_grid(nx, ny).to(x[i].device)
+
+ y = x[i].sigmoid()
+ if self.inplace:
+ y[..., 0:2] = (y[..., 0:2] * 2. - 0.5 + self.grid[i]) * self.stride[i] # xy
+ y[..., 2:4] = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i] # wh
+ else: # for YOLOv5 on AWS Inferentia https://github.com/ultralytics/yolov5/pull/2953
+ xy = (y[..., 0:2] * 2. - 0.5 + self.grid[i]) * self.stride[i] # xy
+ wh = (y[..., 2:4] * 2) ** 2 * self.anchor_grid[i].view(1, self.na, 1, 1, 2) # wh
+ y = torch.cat((xy, wh, y[..., 4:]), -1)
+ z.append(y.view(bs, -1, self.no))
+
+ return x if self.training else (torch.cat(z, 1), x)
+
+ @staticmethod
+ def _make_grid(nx=20, ny=20):
+ yv, xv = torch.meshgrid([torch.arange(ny), torch.arange(nx)])
+ return torch.stack((xv, yv), 2).view((1, 1, ny, nx, 2)).float()
+
+
+class Model(nn.Module):
+ def __init__(self, cfg='yolov5s.yaml', ch=3, nc=None, anchors=None): # model, input channels, number of classes
+ super(Model, self).__init__()
+ if isinstance(cfg, dict):
+ self.yaml = cfg # model dict
+ else: # is *.yaml
+ import yaml # for torch hub
+ self.yaml_file = Path(cfg).name
+ with open(cfg) as f:
+ self.yaml = yaml.safe_load(f) # model dict
+
+ # Define model
+ ch = self.yaml['ch'] = self.yaml.get('ch', ch) # input channels
+ if nc and nc != self.yaml['nc']:
+ logger.info(f"Overriding model.yaml nc={self.yaml['nc']} with nc={nc}")
+ self.yaml['nc'] = nc # override yaml value
+ if anchors:
+ logger.info(f'Overriding model.yaml anchors with anchors={anchors}')
+ self.yaml['anchors'] = round(anchors) # override yaml value
+ self.model, self.save = parse_model(deepcopy(self.yaml), ch=[ch]) # model, savelist
+ self.names = [str(i) for i in range(self.yaml['nc'])] # default names
+ self.inplace = self.yaml.get('inplace', True)
+ # logger.info([x.shape for x in self.forward(torch.zeros(1, ch, 64, 64))])
+
+ # Build strides, anchors
+ m = self.model[-1] # Detect()
+ if isinstance(m, Detect):
+ s = 256 # 2x min stride
+ m.inplace = self.inplace
+ m.stride = torch.tensor([s / x.shape[-2] for x in self.forward(torch.zeros(1, ch, s, s))]) # forward
+ m.anchors /= m.stride.view(-1, 1, 1)
+ check_anchor_order(m)
+ self.stride = m.stride
+ self._initialize_biases() # only run once
+ # logger.info('Strides: %s' % m.stride.tolist())
+
+ # Init weights, biases
+ initialize_weights(self)
+ self.info()
+ logger.info('')
+
+ def forward(self, x, augment=False, profile=False):
+ if augment:
+ return self.forward_augment(x) # augmented inference, None
+ else:
+ return self.forward_once(x, profile) # single-scale inference, train
+
+ def forward_augment(self, x):
+ img_size = x.shape[-2:] # height, width
+ s = [1, 0.83, 0.67] # scales
+ f = [None, 3, None] # flips (2-ud, 3-lr)
+ y = [] # outputs
+ for si, fi in zip(s, f):
+ xi = scale_img(x.flip(fi) if fi else x, si, gs=int(self.stride.max()))
+ yi = self.forward_once(xi)[0] # forward
+ # cv2.imwrite(f'img_{si}.jpg', 255 * xi[0].cpu().numpy().transpose((1, 2, 0))[:, :, ::-1]) # save
+ yi = self._descale_pred(yi, fi, si, img_size)
+ y.append(yi)
+ return torch.cat(y, 1), None # augmented inference, train
+
+ def forward_once(self, x, profile=False):
+ y, dt = [], [] # outputs
+ for m in self.model:
+ if m.f != -1: # if not from previous layer
+ x = y[m.f] if isinstance(m.f, int) else [x if j == -1 else y[j] for j in m.f] # from earlier layers
+
+ if profile:
+ o = thop.profile(m, inputs=(x,), verbose=False)[0] / 1E9 * 2 if thop else 0 # FLOPS
+ t = time_synchronized()
+ for _ in range(10):
+ _ = m(x)
+ dt.append((time_synchronized() - t) * 100)
+ if m == self.model[0]:
+ logger.info(f"{'time (ms)':>10s} {'GFLOPS':>10s} {'params':>10s} {'module'}")
+ logger.info(f'{dt[-1]:10.2f} {o:10.2f} {m.np:10.0f} {m.type}')
+
+ x = m(x) # run
+ y.append(x if m.i in self.save else None) # save output
+
+ if profile:
+ logger.info('%.1fms total' % sum(dt))
+ return x
+
+ def _descale_pred(self, p, flips, scale, img_size):
+ # de-scale predictions following augmented inference (inverse operation)
+ if self.inplace:
+ p[..., :4] /= scale # de-scale
+ if flips == 2:
+ p[..., 1] = img_size[0] - p[..., 1] # de-flip ud
+ elif flips == 3:
+ p[..., 0] = img_size[1] - p[..., 0] # de-flip lr
+ else:
+ x, y, wh = p[..., 0:1] / scale, p[..., 1:2] / scale, p[..., 2:4] / scale # de-scale
+ if flips == 2:
+ y = img_size[0] - y # de-flip ud
+ elif flips == 3:
+ x = img_size[1] - x # de-flip lr
+ p = torch.cat((x, y, wh, p[..., 4:]), -1)
+ return p
+
+ def _initialize_biases(self, cf=None): # initialize biases into Detect(), cf is class frequency
+ # https://arxiv.org/abs/1708.02002 section 3.3
+ # cf = torch.bincount(torch.tensor(np.concatenate(dataset.labels, 0)[:, 0]).long(), minlength=nc) + 1.
+ m = self.model[-1] # Detect() module
+ for mi, s in zip(m.m, m.stride): # from
+ b = mi.bias.view(m.na, -1) # conv.bias(255) to (3,85)
+ b.data[:, 4] += math.log(8 / (640 / s) ** 2) # obj (8 objects per 640 image)
+ b.data[:, 5:] += math.log(0.6 / (m.nc - 0.99)) if cf is None else torch.log(cf / cf.sum()) # cls
+ mi.bias = torch.nn.Parameter(b.view(-1), requires_grad=True)
+
+ def _print_biases(self):
+ m = self.model[-1] # Detect() module
+ for mi in m.m: # from
+ b = mi.bias.detach().view(m.na, -1).T # conv.bias(255) to (3,85)
+ logger.info(
+ ('%6g Conv2d.bias:' + '%10.3g' * 6) % (mi.weight.shape[1], *b[:5].mean(1).tolist(), b[5:].mean()))
+
+ # def _print_weights(self):
+ # for m in self.model.modules():
+ # if type(m) is Bottleneck:
+ # logger.info('%10.3g' % (m.w.detach().sigmoid() * 2)) # shortcut weights
+
+ def fuse(self): # fuse model Conv2d() + BatchNorm2d() layers
+ logger.info('Fusing layers... ')
+ for m in self.model.modules():
+ if type(m) is Conv and hasattr(m, 'bn'):
+ m.conv = fuse_conv_and_bn(m.conv, m.bn) # update conv
+ delattr(m, 'bn') # remove batchnorm
+ m.forward = m.fuseforward # update forward
+ self.info()
+ return self
+
+ def nms(self, mode=True): # add or remove NMS module
+ present = type(self.model[-1]) is NMS # last layer is NMS
+ if mode and not present:
+ logger.info('Adding NMS... ')
+ m = NMS() # module
+ m.f = -1 # from
+ m.i = self.model[-1].i + 1 # index
+ self.model.add_module(name='%s' % m.i, module=m) # add
+ self.eval()
+ elif not mode and present:
+ logger.info('Removing NMS... ')
+ self.model = self.model[:-1] # remove
+ return self
+
+ def autoshape(self): # add AutoShape module
+ logger.info('Adding AutoShape... ')
+ m = AutoShape(self) # wrap model
+ copy_attr(m, self, include=('yaml', 'nc', 'hyp', 'names', 'stride'), exclude=()) # copy attributes
+ return m
+
+ def info(self, verbose=False, img_size=640): # print model information
+ model_info(self, verbose, img_size)
+
+
+def parse_model(d, ch): # model_dict, input_channels(3)
+ logger.info('\n%3s%18s%3s%10s %-40s%-30s' % ('', 'from', 'n', 'params', 'module', 'arguments'))
+ anchors, nc, gd, gw = d['anchors'], d['nc'], d['depth_multiple'], d['width_multiple']
+ na = (len(anchors[0]) // 2) if isinstance(anchors, list) else anchors # number of anchors
+ no = na * (nc + 5) # number of outputs = anchors * (classes + 5)
+
+ layers, save, c2 = [], [], ch[-1] # layers, savelist, ch out
+ for i, (f, n, m, args) in enumerate(d['backbone'] + d['head']): # from, number, module, args
+ m = eval(m) if isinstance(m, str) else m # eval strings
+ for j, a in enumerate(args):
+ try:
+ args[j] = eval(a) if isinstance(a, str) else a # eval strings
+ except:
+ pass
+
+ n = max(round(n * gd), 1) if n > 1 else n # depth gain
+ if m in [Conv, GhostConv, Bottleneck, GhostBottleneck, SPP, DWConv, MixConv2d, Focus, CrossConv, BottleneckCSP,
+ C3, C3TR]:
+ c1, c2 = ch[f], args[0]
+ if c2 != no: # if not output
+ c2 = make_divisible(c2 * gw, 8)
+
+ args = [c1, c2, *args[1:]]
+ if m in [BottleneckCSP, C3, C3TR]:
+ args.insert(2, n) # number of repeats
+ n = 1
+ elif m is nn.BatchNorm2d:
+ args = [ch[f]]
+ elif m is Concat:
+ c2 = sum([ch[x] for x in f])
+ elif m is Detect:
+ args.append([ch[x] for x in f])
+ if isinstance(args[1], int): # number of anchors
+ args[1] = [list(range(args[1] * 2))] * len(f)
+ elif m is Contract:
+ c2 = ch[f] * args[0] ** 2
+ elif m is Expand:
+ c2 = ch[f] // args[0] ** 2
+ else:
+ c2 = ch[f]
+
+ m_ = nn.Sequential(*[m(*args) for _ in range(n)]) if n > 1 else m(*args) # module
+ t = str(m)[8:-2].replace('__main__.', '') # module type
+ np = sum([x.numel() for x in m_.parameters()]) # number params
+ m_.i, m_.f, m_.type, m_.np = i, f, t, np # attach index, 'from' index, type, number params
+ logger.info('%3s%18s%3s%10.0f %-40s%-30s' % (i, f, n, np, t, args)) # print
+ save.extend(x % i for x in ([f] if isinstance(f, int) else f) if x != -1) # append to savelist
+ layers.append(m_)
+ if i == 0:
+ ch = []
+ ch.append(c2)
+ return nn.Sequential(*layers), sorted(save)
+
+
+if __name__ == '__main__':
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--cfg', type=str, default='yolov5s.yaml', help='model.yaml')
+ parser.add_argument('--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
+ opt = parser.parse_args()
+ opt.cfg = check_file(opt.cfg) # check file
+ set_logging()
+ device = select_device(opt.device)
+
+ # Create model
+ model = Model(opt.cfg).to(device)
+ model.train()
+
+ # Profile
+ # img = torch.rand(8 if torch.cuda.is_available() else 1, 3, 320, 320).to(device)
+ # y = model(img, profile=True)
+
+ # Tensorboard (not working https://github.com/ultralytics/yolov5/issues/2898)
+ # from torch.utils.tensorboard import SummaryWriter
+ # tb_writer = SummaryWriter('.')
+ # logger.info("Run 'tensorboard --logdir=models' to view tensorboard at http://localhost:6006/")
+ # tb_writer.add_graph(torch.jit.trace(model, img, strict=False), []) # add model graph
+ # tb_writer.add_image('test', img[0], dataformats='CWH') # add model to tensorboard
diff --git a/Yolov5-Deepsort/models/yolov5l.yaml b/Yolov5-Deepsort/models/yolov5l.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..71ebf86e57918ca222264d47fa6f04205be445a7
--- /dev/null
+++ b/Yolov5-Deepsort/models/yolov5l.yaml
@@ -0,0 +1,48 @@
+# parameters
+nc: 80 # number of classes
+depth_multiple: 1.0 # model depth multiple
+width_multiple: 1.0 # layer channel multiple
+
+# anchors
+anchors:
+ - [10,13, 16,30, 33,23] # P3/8
+ - [30,61, 62,45, 59,119] # P4/16
+ - [116,90, 156,198, 373,326] # P5/32
+
+# YOLOv5 backbone
+backbone:
+ # [from, number, module, args]
+ [[-1, 1, Focus, [64, 3]], # 0-P1/2
+ [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
+ [-1, 3, C3, [128]],
+ [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
+ [-1, 9, C3, [256]],
+ [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
+ [-1, 9, C3, [512]],
+ [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
+ [-1, 1, SPP, [1024, [5, 9, 13]]],
+ [-1, 3, C3, [1024, False]], # 9
+ ]
+
+# YOLOv5 head
+head:
+ [[-1, 1, Conv, [512, 1, 1]],
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [[-1, 6], 1, Concat, [1]], # cat backbone P4
+ [-1, 3, C3, [512, False]], # 13
+
+ [-1, 1, Conv, [256, 1, 1]],
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [[-1, 4], 1, Concat, [1]], # cat backbone P3
+ [-1, 3, C3, [256, False]], # 17 (P3/8-small)
+
+ [-1, 1, Conv, [256, 3, 2]],
+ [[-1, 14], 1, Concat, [1]], # cat head P4
+ [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
+
+ [-1, 1, Conv, [512, 3, 2]],
+ [[-1, 10], 1, Concat, [1]], # cat head P5
+ [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
+
+ [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
+ ]
diff --git a/Yolov5-Deepsort/models/yolov5m.yaml b/Yolov5-Deepsort/models/yolov5m.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..3c749c916246815fbfaa3ac96506c85a65466c02
--- /dev/null
+++ b/Yolov5-Deepsort/models/yolov5m.yaml
@@ -0,0 +1,48 @@
+# parameters
+nc: 80 # number of classes
+depth_multiple: 0.67 # model depth multiple
+width_multiple: 0.75 # layer channel multiple
+
+# anchors
+anchors:
+ - [10,13, 16,30, 33,23] # P3/8
+ - [30,61, 62,45, 59,119] # P4/16
+ - [116,90, 156,198, 373,326] # P5/32
+
+# YOLOv5 backbone
+backbone:
+ # [from, number, module, args]
+ [[-1, 1, Focus, [64, 3]], # 0-P1/2
+ [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
+ [-1, 3, C3, [128]],
+ [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
+ [-1, 9, C3, [256]],
+ [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
+ [-1, 9, C3, [512]],
+ [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
+ [-1, 1, SPP, [1024, [5, 9, 13]]],
+ [-1, 3, C3, [1024, False]], # 9
+ ]
+
+# YOLOv5 head
+head:
+ [[-1, 1, Conv, [512, 1, 1]],
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [[-1, 6], 1, Concat, [1]], # cat backbone P4
+ [-1, 3, C3, [512, False]], # 13
+
+ [-1, 1, Conv, [256, 1, 1]],
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [[-1, 4], 1, Concat, [1]], # cat backbone P3
+ [-1, 3, C3, [256, False]], # 17 (P3/8-small)
+
+ [-1, 1, Conv, [256, 3, 2]],
+ [[-1, 14], 1, Concat, [1]], # cat head P4
+ [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
+
+ [-1, 1, Conv, [512, 3, 2]],
+ [[-1, 10], 1, Concat, [1]], # cat head P5
+ [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
+
+ [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
+ ]
diff --git a/Yolov5-Deepsort/models/yolov5s.yaml b/Yolov5-Deepsort/models/yolov5s.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..aca669d60d8b5db54963302b1ae629afe4499565
--- /dev/null
+++ b/Yolov5-Deepsort/models/yolov5s.yaml
@@ -0,0 +1,48 @@
+# parameters
+nc: 80 # number of classes
+depth_multiple: 0.33 # model depth multiple
+width_multiple: 0.50 # layer channel multiple
+
+# anchors
+anchors:
+ - [10,13, 16,30, 33,23] # P3/8
+ - [30,61, 62,45, 59,119] # P4/16
+ - [116,90, 156,198, 373,326] # P5/32
+
+# YOLOv5 backbone
+backbone:
+ # [from, number, module, args]
+ [[-1, 1, Focus, [64, 3]], # 0-P1/2
+ [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
+ [-1, 3, C3, [128]],
+ [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
+ [-1, 9, C3, [256]],
+ [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
+ [-1, 9, C3, [512]],
+ [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
+ [-1, 1, SPP, [1024, [5, 9, 13]]],
+ [-1, 3, C3, [1024, False]], # 9
+ ]
+
+# YOLOv5 head
+head:
+ [[-1, 1, Conv, [512, 1, 1]],
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [[-1, 6], 1, Concat, [1]], # cat backbone P4
+ [-1, 3, C3, [512, False]], # 13
+
+ [-1, 1, Conv, [256, 1, 1]],
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [[-1, 4], 1, Concat, [1]], # cat backbone P3
+ [-1, 3, C3, [256, False]], # 17 (P3/8-small)
+
+ [-1, 1, Conv, [256, 3, 2]],
+ [[-1, 14], 1, Concat, [1]], # cat head P4
+ [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
+
+ [-1, 1, Conv, [512, 3, 2]],
+ [[-1, 10], 1, Concat, [1]], # cat head P5
+ [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
+
+ [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
+ ]
diff --git a/Yolov5-Deepsort/models/yolov5x.yaml b/Yolov5-Deepsort/models/yolov5x.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..d3babdf7baf01a95a2a8da760a6db41bb8c7dd79
--- /dev/null
+++ b/Yolov5-Deepsort/models/yolov5x.yaml
@@ -0,0 +1,48 @@
+# parameters
+nc: 80 # number of classes
+depth_multiple: 1.33 # model depth multiple
+width_multiple: 1.25 # layer channel multiple
+
+# anchors
+anchors:
+ - [10,13, 16,30, 33,23] # P3/8
+ - [30,61, 62,45, 59,119] # P4/16
+ - [116,90, 156,198, 373,326] # P5/32
+
+# YOLOv5 backbone
+backbone:
+ # [from, number, module, args]
+ [[-1, 1, Focus, [64, 3]], # 0-P1/2
+ [-1, 1, Conv, [128, 3, 2]], # 1-P2/4
+ [-1, 3, C3, [128]],
+ [-1, 1, Conv, [256, 3, 2]], # 3-P3/8
+ [-1, 9, C3, [256]],
+ [-1, 1, Conv, [512, 3, 2]], # 5-P4/16
+ [-1, 9, C3, [512]],
+ [-1, 1, Conv, [1024, 3, 2]], # 7-P5/32
+ [-1, 1, SPP, [1024, [5, 9, 13]]],
+ [-1, 3, C3, [1024, False]], # 9
+ ]
+
+# YOLOv5 head
+head:
+ [[-1, 1, Conv, [512, 1, 1]],
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [[-1, 6], 1, Concat, [1]], # cat backbone P4
+ [-1, 3, C3, [512, False]], # 13
+
+ [-1, 1, Conv, [256, 1, 1]],
+ [-1, 1, nn.Upsample, [None, 2, 'nearest']],
+ [[-1, 4], 1, Concat, [1]], # cat backbone P3
+ [-1, 3, C3, [256, False]], # 17 (P3/8-small)
+
+ [-1, 1, Conv, [256, 3, 2]],
+ [[-1, 14], 1, Concat, [1]], # cat head P4
+ [-1, 3, C3, [512, False]], # 20 (P4/16-medium)
+
+ [-1, 1, Conv, [512, 3, 2]],
+ [[-1, 10], 1, Concat, [1]], # cat head P5
+ [-1, 3, C3, [1024, False]], # 23 (P5/32-large)
+
+ [[17, 20, 23], 1, Detect, [nc, anchors]], # Detect(P3, P4, P5)
+ ]
diff --git a/Yolov5-Deepsort/mot.mp4 b/Yolov5-Deepsort/mot.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..ad233d76ae04637c5d8950a7e50482f82400168f
--- /dev/null
+++ b/Yolov5-Deepsort/mot.mp4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:19075cdf256ef23ce5432e16ab4b6a8c5a75b5d8f0c5548955f6eacf672a06c5
+size 7869562
diff --git a/Yolov5-Deepsort/myresult.txt b/Yolov5-Deepsort/myresult.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8535951ffaed1fefe8d6a09be3a3c00d3074f50c
--- /dev/null
+++ b/Yolov5-Deepsort/myresult.txt
@@ -0,0 +1,6619 @@
+3, 1, 477, 269, 43, 35, 1, 2, 1
+3, 2, 0, 339, 20, 108, 1, 0, 1
+3, 3, 540, 269, 56, 53, 1, 2, 1
+3, 4, 686, 256, 18, 49, 1, 0, 1
+3, 5, 810, 272, 28, 61, 1, 0, 1
+3, 6, 767, 277, 25, 58, 1, 0, 1
+3, 7, 250, 272, 17, 47, 1, 0, 1
+3, 8, 725, 243, 15, 44, 1, 0, 1
+3, 9, 267, 268, 19, 52, 1, 0, 1
+3, 10, 744, 255, 13, 35, 1, 0, 1
+3, 11, 52, 359, 24, 47, 1, 0, 1
+3, 12, 130, 298, 22, 68, 1, 0, 1
+4, 1, 478, 270, 43, 35, 1, 2, 1
+4, 2, 0, 346, 17, 92, 1, 0, 1
+4, 3, 541, 269, 57, 53, 1, 2, 1
+4, 4, 688, 253, 20, 52, 1, 0, 1
+4, 5, 815, 274, 29, 61, 1, 0, 1
+4, 6, 771, 278, 24, 58, 1, 0, 1
+4, 7, 249, 272, 19, 48, 1, 0, 1
+4, 8, 727, 243, 15, 44, 1, 0, 1
+4, 9, 268, 270, 18, 51, 1, 0, 1
+4, 10, 747, 255, 12, 34, 1, 0, 1
+4, 11, 46, 361, 23, 47, 1, 0, 1
+4, 12, 129, 299, 22, 69, 1, 0, 1
+5, 1, 479, 271, 43, 35, 1, 2, 1
+5, 2, 0, 350, 15, 88, 1, 0, 1
+5, 3, 541, 268, 59, 56, 1, 2, 1
+5, 4, 690, 256, 19, 54, 1, 0, 1
+5, 5, 818, 278, 29, 61, 1, 0, 1
+5, 6, 773, 283, 25, 56, 1, 0, 1
+5, 7, 248, 270, 18, 50, 1, 0, 1
+5, 8, 729, 246, 15, 44, 1, 0, 1
+5, 9, 267, 265, 19, 54, 1, 0, 1
+5, 10, 748, 256, 14, 37, 1, 0, 1
+5, 11, 38, 361, 23, 47, 1, 0, 1
+6, 1, 480, 275, 43, 35, 1, 2, 1
+6, 3, 542, 273, 60, 57, 1, 2, 1
+6, 4, 692, 259, 20, 55, 1, 0, 1
+6, 5, 821, 282, 30, 63, 1, 0, 1
+6, 6, 778, 287, 25, 59, 1, 0, 1
+6, 7, 247, 274, 19, 50, 1, 0, 1
+6, 8, 731, 251, 15, 43, 1, 0, 1
+6, 9, 268, 269, 18, 53, 1, 0, 1
+6, 10, 751, 261, 13, 36, 1, 0, 1
+6, 11, 31, 364, 25, 51, 1, 0, 1
+7, 1, 479, 273, 45, 37, 1, 2, 1
+7, 3, 543, 271, 61, 59, 1, 2, 1
+7, 4, 694, 260, 19, 53, 1, 0, 1
+7, 5, 825, 284, 30, 63, 1, 0, 1
+7, 6, 781, 288, 25, 57, 1, 0, 1
+7, 7, 246, 272, 19, 51, 1, 0, 1
+7, 8, 731, 250, 15, 44, 1, 0, 1
+7, 9, 268, 269, 18, 53, 1, 0, 1
+7, 10, 753, 260, 13, 38, 1, 0, 1
+7, 11, 25, 368, 24, 50, 1, 0, 1
+7, 12, 115, 306, 22, 67, 1, 0, 1
+8, 1, 480, 278, 43, 35, 1, 2, 1
+8, 3, 545, 274, 61, 59, 1, 2, 1
+8, 4, 695, 262, 20, 56, 1, 0, 1
+8, 5, 829, 288, 30, 63, 1, 0, 1
+8, 6, 785, 291, 25, 58, 1, 0, 1
+8, 7, 245, 273, 19, 52, 1, 0, 1
+8, 8, 733, 252, 15, 44, 1, 0, 1
+8, 9, 266, 270, 19, 55, 1, 0, 1
+8, 10, 755, 263, 14, 38, 1, 0, 1
+8, 11, 17, 371, 25, 53, 1, 0, 1
+8, 12, 111, 306, 22, 71, 1, 0, 1
+9, 1, 481, 279, 42, 35, 1, 2, 1
+9, 3, 545, 276, 61, 58, 1, 2, 1
+9, 4, 696, 265, 20, 54, 1, 0, 1
+9, 5, 833, 292, 29, 63, 1, 0, 1
+9, 6, 788, 293, 26, 60, 1, 0, 1
+9, 7, 244, 273, 19, 52, 1, 0, 1
+9, 8, 734, 253, 15, 46, 1, 0, 1
+9, 9, 265, 271, 19, 55, 1, 0, 1
+9, 10, 756, 264, 14, 39, 1, 0, 1
+9, 11, 7, 372, 26, 54, 1, 0, 1
+9, 12, 107, 309, 23, 69, 1, 0, 1
+9, 18, 338, 261, 14, 41, 1, 0, 1
+10, 1, 481, 281, 42, 34, 1, 2, 1
+10, 3, 545, 276, 63, 61, 1, 2, 1
+10, 4, 698, 269, 19, 54, 1, 0, 1
+10, 5, 835, 298, 31, 64, 1, 0, 1
+10, 6, 791, 297, 26, 63, 1, 0, 1
+10, 7, 243, 270, 20, 53, 1, 0, 1
+10, 8, 735, 258, 15, 45, 1, 0, 1
+10, 9, 264, 270, 18, 53, 1, 0, 1
+10, 10, 758, 272, 13, 35, 1, 0, 1
+10, 11, 0, 369, 25, 55, 1, 0, 1
+10, 12, 101, 300, 24, 76, 1, 0, 1
+10, 18, 337, 260, 14, 40, 1, 0, 1
+11, 1, 480, 280, 44, 35, 1, 2, 1
+11, 3, 545, 276, 63, 61, 1, 2, 1
+11, 4, 699, 266, 19, 53, 1, 0, 1
+11, 5, 840, 295, 30, 63, 1, 0, 1
+11, 6, 794, 295, 27, 64, 1, 0, 1
+11, 7, 242, 273, 19, 51, 1, 0, 1
+11, 8, 737, 256, 15, 44, 1, 0, 1
+11, 9, 262, 274, 18, 50, 1, 0, 1
+11, 10, 760, 268, 13, 35, 1, 0, 1
+11, 11, 0, 374, 21, 57, 1, 0, 1
+11, 12, 96, 298, 27, 83, 1, 0, 1
+11, 18, 337, 262, 13, 39, 1, 0, 1
+11, 20, 40, 308, 33, 67, 1, 0, 1
+12, 1, 479, 279, 45, 36, 1, 2, 1
+12, 3, 546, 278, 63, 59, 1, 2, 1
+12, 4, 701, 267, 19, 54, 1, 0, 1
+12, 5, 843, 295, 31, 64, 1, 0, 1
+12, 6, 797, 297, 27, 62, 1, 0, 1
+12, 7, 240, 274, 20, 51, 1, 0, 1
+12, 8, 737, 257, 16, 42, 1, 0, 1
+12, 9, 260, 272, 19, 54, 1, 0, 1
+12, 10, 763, 271, 12, 35, 1, 0, 1
+12, 11, 0, 377, 15, 57, 1, 0, 1
+12, 12, 92, 299, 27, 84, 1, 0, 1
+12, 18, 336, 262, 14, 39, 1, 0, 1
+12, 20, 34, 307, 34, 70, 1, 0, 1
+13, 1, 480, 277, 45, 36, 1, 2, 1
+13, 3, 546, 275, 63, 61, 1, 2, 1
+13, 4, 702, 266, 19, 52, 1, 0, 1
+13, 5, 846, 296, 31, 64, 1, 0, 1
+13, 6, 801, 298, 26, 62, 1, 0, 1
+13, 7, 239, 270, 19, 52, 1, 0, 1
+13, 8, 739, 258, 15, 42, 1, 0, 1
+13, 9, 258, 266, 20, 55, 1, 0, 1
+13, 10, 765, 272, 13, 35, 1, 0, 1
+13, 12, 85, 294, 28, 85, 1, 0, 1
+13, 20, 31, 307, 35, 71, 1, 0, 1
+13, 23, 509, 264, 46, 31, 1, 2, 1
+14, 1, 479, 277, 46, 37, 1, 2, 1
+14, 3, 546, 275, 63, 61, 1, 2, 1
+14, 4, 704, 264, 18, 51, 1, 0, 1
+14, 5, 851, 294, 30, 64, 1, 0, 1
+14, 6, 805, 295, 26, 63, 1, 0, 1
+14, 7, 239, 269, 19, 53, 1, 0, 1
+14, 8, 740, 258, 15, 43, 1, 0, 1
+14, 9, 258, 265, 19, 57, 1, 0, 1
+14, 10, 767, 268, 13, 36, 1, 0, 1
+14, 12, 81, 293, 29, 88, 1, 0, 1
+14, 18, 335, 261, 14, 40, 1, 0, 1
+14, 20, 22, 303, 37, 78, 1, 0, 1
+14, 23, 506, 264, 37, 24, 1, 2, 1
+15, 1, 478, 276, 48, 38, 1, 2, 1
+15, 3, 546, 275, 65, 62, 1, 2, 1
+15, 4, 705, 264, 18, 51, 1, 0, 1
+15, 5, 854, 293, 32, 68, 1, 0, 1
+15, 6, 808, 296, 27, 65, 1, 0, 1
+15, 7, 238, 268, 19, 54, 1, 0, 1
+15, 9, 258, 266, 19, 55, 1, 0, 1
+15, 10, 767, 262, 15, 42, 1, 0, 1
+15, 18, 335, 260, 14, 39, 1, 0, 1
+15, 20, 13, 296, 39, 83, 1, 0, 1
+15, 23, 507, 262, 34, 23, 1, 2, 1
+16, 1, 479, 278, 47, 37, 1, 2, 1
+16, 3, 547, 274, 65, 63, 1, 2, 1
+16, 4, 707, 265, 19, 53, 1, 0, 1
+16, 5, 858, 294, 31, 68, 1, 0, 1
+16, 6, 812, 297, 27, 65, 1, 0, 1
+16, 7, 237, 266, 20, 56, 1, 0, 1
+16, 8, 744, 257, 15, 41, 1, 0, 1
+16, 9, 258, 266, 19, 55, 1, 0, 1
+16, 10, 769, 264, 15, 40, 1, 0, 1
+16, 18, 336, 260, 13, 39, 1, 0, 1
+16, 20, 7, 294, 41, 86, 1, 0, 1
+16, 23, 507, 262, 32, 20, 1, 2, 1
+16, 24, 642, 282, 34, 29, 1, 2, 1
+17, 1, 480, 280, 45, 35, 1, 2, 1
+17, 3, 548, 274, 65, 64, 1, 2, 1
+17, 4, 708, 266, 19, 53, 1, 0, 1
+17, 5, 862, 295, 31, 69, 1, 0, 1
+17, 6, 816, 297, 27, 65, 1, 0, 1
+17, 7, 237, 269, 19, 53, 1, 0, 1
+17, 8, 745, 257, 15, 41, 1, 0, 1
+17, 9, 256, 268, 19, 54, 1, 0, 1
+17, 10, 772, 268, 13, 37, 1, 0, 1
+17, 12, 60, 297, 33, 100, 1, 0, 1
+17, 18, 335, 259, 14, 41, 1, 0, 1
+17, 20, 0, 297, 40, 86, 1, 0, 1
+17, 23, 504, 263, 30, 20, 1, 2, 1
+17, 24, 643, 282, 34, 29, 1, 2, 1
+18, 1, 481, 279, 45, 35, 1, 2, 1
+18, 3, 549, 275, 65, 63, 1, 2, 1
+18, 4, 710, 266, 19, 53, 1, 0, 1
+18, 5, 865, 296, 32, 68, 1, 0, 1
+18, 6, 820, 297, 28, 66, 1, 0, 1
+18, 7, 236, 268, 19, 54, 1, 0, 1
+18, 9, 256, 267, 19, 55, 1, 0, 1
+18, 10, 773, 268, 13, 36, 1, 0, 1
+18, 12, 55, 296, 34, 104, 1, 0, 1
+18, 18, 334, 258, 15, 42, 1, 0, 1
+18, 20, 0, 292, 36, 94, 1, 0, 1
+18, 23, 503, 262, 27, 18, 1, 2, 1
+18, 24, 643, 282, 34, 29, 1, 2, 1
+19, 1, 481, 280, 44, 35, 1, 2, 1
+19, 3, 550, 275, 65, 63, 1, 2, 1
+19, 4, 711, 265, 19, 54, 1, 0, 1
+19, 5, 869, 297, 32, 69, 1, 0, 1
+19, 6, 825, 296, 28, 67, 1, 0, 1
+19, 7, 235, 267, 19, 55, 1, 0, 1
+19, 8, 752, 259, 14, 39, 1, 0, 1
+19, 9, 255, 268, 19, 54, 1, 0, 1
+19, 10, 775, 266, 14, 39, 1, 0, 1
+19, 18, 334, 257, 15, 43, 1, 0, 1
+19, 20, 0, 291, 31, 97, 1, 0, 1
+20, 1, 481, 280, 45, 35, 1, 2, 1
+20, 3, 550, 275, 67, 66, 1, 2, 1
+20, 4, 712, 265, 19, 55, 1, 0, 1
+20, 5, 873, 297, 32, 70, 1, 0, 1
+20, 6, 829, 296, 28, 67, 1, 0, 1
+20, 7, 234, 272, 19, 52, 1, 0, 1
+20, 8, 754, 259, 14, 39, 1, 0, 1
+20, 9, 255, 271, 18, 53, 1, 0, 1
+20, 10, 778, 268, 13, 38, 1, 0, 1
+20, 18, 333, 258, 15, 43, 1, 0, 1
+20, 24, 646, 283, 33, 28, 1, 2, 1
+21, 1, 480, 279, 47, 37, 1, 2, 1
+21, 3, 551, 276, 67, 66, 1, 2, 1
+21, 4, 712, 265, 20, 56, 1, 0, 1
+21, 5, 878, 299, 32, 69, 1, 0, 1
+21, 6, 832, 297, 29, 69, 1, 0, 1
+21, 7, 234, 273, 18, 51, 1, 0, 1
+21, 9, 253, 273, 18, 52, 1, 0, 1
+21, 10, 780, 269, 13, 39, 1, 0, 1
+21, 18, 333, 258, 15, 43, 1, 0, 1
+21, 24, 648, 284, 33, 28, 1, 2, 1
+22, 1, 481, 281, 46, 35, 1, 2, 1
+22, 3, 551, 277, 68, 66, 1, 2, 1
+22, 4, 713, 265, 21, 57, 1, 0, 1
+22, 5, 883, 300, 32, 69, 1, 0, 1
+22, 6, 836, 298, 29, 70, 1, 0, 1
+22, 7, 234, 273, 19, 53, 1, 0, 1
+22, 9, 251, 272, 19, 54, 1, 0, 1
+22, 10, 781, 265, 14, 42, 1, 0, 1
+22, 18, 332, 259, 15, 44, 1, 0, 1
+22, 24, 649, 285, 33, 27, 1, 2, 1
+22, 29, 419, 263, 60, 27, 1, 2, 1
+23, 1, 480, 281, 47, 36, 1, 2, 1
+23, 3, 552, 276, 68, 67, 1, 2, 1
+23, 4, 714, 265, 21, 57, 1, 0, 1
+23, 5, 888, 300, 32, 71, 1, 0, 1
+23, 6, 839, 299, 29, 72, 1, 0, 1
+23, 7, 231, 273, 19, 54, 1, 0, 1
+23, 9, 250, 273, 19, 54, 1, 0, 1
+23, 10, 782, 264, 14, 39, 1, 0, 1
+23, 18, 332, 261, 14, 43, 1, 0, 1
+23, 29, 408, 263, 63, 27, 1, 2, 1
+24, 1, 480, 281, 48, 37, 1, 2, 1
+24, 3, 553, 276, 69, 67, 1, 2, 1
+24, 4, 716, 265, 20, 56, 1, 0, 1
+24, 5, 892, 299, 33, 72, 1, 0, 1
+24, 6, 843, 300, 29, 71, 1, 0, 1
+24, 7, 229, 275, 19, 53, 1, 0, 1
+24, 8, 760, 259, 14, 37, 1, 0, 1
+24, 9, 249, 275, 19, 53, 1, 0, 1
+24, 10, 784, 267, 13, 37, 1, 0, 1
+24, 18, 332, 262, 14, 42, 1, 0, 1
+24, 29, 399, 265, 62, 27, 1, 2, 1
+25, 1, 480, 282, 49, 38, 1, 2, 1
+25, 3, 553, 278, 68, 68, 1, 2, 1
+25, 4, 718, 266, 20, 58, 1, 0, 1
+25, 5, 897, 302, 33, 73, 1, 0, 1
+25, 6, 847, 301, 29, 74, 1, 0, 1
+25, 7, 229, 273, 20, 57, 1, 0, 1
+25, 8, 761, 259, 16, 42, 1, 0, 1
+25, 9, 249, 275, 19, 55, 1, 0, 1
+25, 10, 787, 271, 12, 38, 1, 0, 1
+25, 18, 332, 265, 14, 40, 1, 0, 1
+25, 29, 392, 267, 66, 29, 1, 2, 1
+26, 1, 480, 283, 50, 38, 1, 2, 1
+26, 3, 553, 280, 69, 68, 1, 2, 1
+26, 4, 720, 268, 20, 56, 1, 0, 1
+26, 5, 901, 302, 35, 76, 1, 0, 1
+26, 6, 851, 302, 30, 76, 1, 0, 1
+26, 7, 228, 275, 19, 55, 1, 0, 1
+26, 8, 763, 259, 16, 43, 1, 0, 1
+26, 9, 248, 275, 19, 57, 1, 0, 1
+26, 10, 789, 274, 13, 37, 1, 0, 1
+26, 18, 333, 265, 13, 41, 1, 0, 1
+26, 29, 393, 269, 59, 26, 1, 2, 1
+27, 1, 479, 284, 51, 39, 1, 2, 1
+27, 3, 553, 281, 69, 69, 1, 2, 1
+27, 4, 722, 270, 20, 56, 1, 0, 1
+27, 5, 907, 304, 34, 76, 1, 0, 1
+27, 6, 855, 305, 30, 75, 1, 0, 1
+27, 7, 226, 274, 20, 58, 1, 0, 1
+27, 8, 765, 260, 16, 43, 1, 0, 1
+27, 9, 247, 277, 19, 56, 1, 0, 1
+27, 10, 791, 270, 13, 40, 1, 0, 1
+27, 18, 332, 267, 13, 40, 1, 0, 1
+27, 29, 379, 269, 62, 27, 1, 2, 1
+28, 1, 479, 285, 51, 39, 1, 2, 1
+28, 3, 554, 282, 70, 70, 1, 2, 1
+28, 4, 724, 271, 20, 56, 1, 0, 1
+28, 5, 910, 305, 34, 76, 1, 0, 1
+28, 6, 859, 306, 30, 76, 1, 0, 1
+28, 7, 224, 271, 21, 62, 1, 0, 1
+28, 8, 767, 259, 16, 44, 1, 0, 1
+28, 9, 246, 278, 19, 55, 1, 0, 1
+28, 10, 791, 262, 16, 48, 1, 0, 1
+28, 18, 331, 269, 13, 38, 1, 0, 1
+28, 29, 370, 270, 62, 27, 1, 2, 1
+28, 36, 497, 250, 17, 13, 1, 2, 1
+29, 1, 480, 286, 51, 40, 1, 2, 1
+29, 3, 555, 285, 70, 70, 1, 2, 1
+29, 4, 725, 273, 20, 56, 1, 0, 1
+29, 5, 915, 310, 35, 76, 1, 0, 1
+29, 6, 864, 309, 30, 78, 1, 0, 1
+29, 7, 223, 272, 21, 61, 1, 0, 1
+29, 8, 768, 261, 16, 45, 1, 0, 1
+29, 9, 245, 277, 19, 56, 1, 0, 1
+29, 10, 793, 261, 16, 49, 1, 0, 1
+29, 12, 0, 284, 32, 153, 1, 0, 1
+29, 18, 330, 271, 13, 37, 1, 0, 1
+29, 29, 364, 271, 64, 27, 1, 2, 1
+29, 36, 496, 250, 19, 15, 1, 2, 1
+30, 1, 480, 289, 51, 38, 1, 2, 1
+30, 3, 555, 286, 70, 70, 1, 2, 1
+30, 4, 726, 274, 21, 57, 1, 0, 1
+30, 5, 921, 311, 33, 73, 1, 0, 1
+30, 6, 868, 311, 29, 75, 1, 0, 1
+30, 7, 222, 278, 20, 57, 1, 0, 1
+30, 8, 769, 262, 16, 45, 1, 0, 1
+30, 9, 243, 279, 20, 57, 1, 0, 1
+30, 10, 794, 260, 16, 51, 1, 0, 1
+30, 12, 0, 291, 29, 138, 1, 0, 1
+30, 18, 330, 272, 13, 36, 1, 0, 1
+30, 29, 371, 272, 59, 26, 1, 2, 1
+30, 36, 495, 250, 21, 17, 1, 2, 1
+31, 1, 481, 292, 51, 39, 1, 2, 1
+31, 3, 556, 288, 70, 71, 1, 2, 1
+31, 4, 727, 276, 21, 58, 1, 0, 1
+31, 5, 925, 312, 34, 73, 1, 0, 1
+31, 6, 873, 313, 30, 75, 1, 0, 1
+31, 7, 220, 284, 21, 58, 1, 0, 1
+31, 8, 771, 264, 17, 46, 1, 0, 1
+31, 9, 243, 285, 20, 56, 1, 0, 1
+31, 10, 796, 262, 17, 52, 1, 0, 1
+31, 12, 0, 291, 24, 141, 1, 0, 1
+31, 18, 330, 277, 13, 40, 1, 0, 1
+31, 29, 366, 273, 59, 25, 1, 2, 1
+31, 36, 494, 250, 23, 18, 1, 2, 1
+32, 1, 481, 294, 51, 38, 1, 2, 1
+32, 3, 556, 288, 71, 71, 1, 2, 1
+32, 4, 728, 276, 22, 61, 1, 0, 1
+32, 5, 928, 316, 31, 75, 1, 0, 1
+32, 6, 878, 313, 29, 75, 1, 0, 1
+32, 7, 220, 285, 19, 57, 1, 0, 1
+32, 8, 772, 265, 17, 45, 1, 0, 1
+32, 9, 242, 285, 20, 56, 1, 0, 1
+32, 10, 800, 275, 14, 42, 1, 0, 1
+32, 18, 328, 277, 14, 40, 1, 0, 1
+33, 1, 481, 290, 51, 38, 1, 2, 1
+33, 3, 557, 286, 71, 71, 1, 2, 1
+33, 4, 730, 273, 23, 63, 1, 0, 1
+33, 5, 930, 312, 29, 77, 1, 0, 1
+33, 6, 882, 311, 30, 76, 1, 0, 1
+33, 7, 218, 281, 20, 57, 1, 0, 1
+33, 8, 775, 261, 17, 46, 1, 0, 1
+33, 9, 240, 280, 21, 59, 1, 0, 1
+33, 10, 802, 266, 15, 48, 1, 0, 1
+33, 18, 326, 275, 14, 39, 1, 0, 1
+33, 36, 496, 249, 20, 16, 1, 2, 1
+34, 1, 481, 289, 52, 39, 1, 2, 1
+34, 3, 557, 285, 72, 73, 1, 2, 1
+34, 4, 732, 271, 23, 65, 1, 0, 1
+34, 5, 935, 313, 24, 75, 1, 0, 1
+34, 6, 888, 311, 30, 76, 1, 0, 1
+34, 7, 217, 283, 19, 56, 1, 0, 1
+34, 8, 777, 261, 17, 46, 1, 0, 1
+34, 9, 239, 280, 21, 59, 1, 0, 1
+34, 10, 802, 262, 16, 50, 1, 0, 1
+34, 18, 324, 275, 14, 40, 1, 0, 1
+34, 36, 497, 250, 19, 16, 1, 2, 1
+35, 1, 481, 287, 53, 40, 1, 2, 1
+35, 3, 557, 283, 74, 74, 1, 2, 1
+35, 4, 734, 271, 22, 63, 1, 0, 1
+35, 5, 940, 315, 19, 58, 1, 0, 1
+35, 6, 892, 310, 31, 78, 1, 0, 1
+35, 7, 216, 277, 20, 58, 1, 0, 1
+35, 8, 780, 259, 16, 46, 1, 0, 1
+35, 9, 237, 275, 22, 61, 1, 0, 1
+35, 10, 805, 266, 14, 45, 1, 0, 1
+35, 18, 323, 271, 15, 41, 1, 0, 1
+35, 36, 496, 250, 21, 17, 1, 2, 1
+36, 1, 481, 285, 54, 41, 1, 2, 1
+36, 3, 558, 282, 74, 75, 1, 2, 1
+36, 4, 737, 270, 21, 61, 1, 0, 1
+36, 5, 945, 316, 14, 57, 1, 0, 1
+36, 6, 897, 309, 32, 81, 1, 0, 1
+36, 7, 215, 276, 20, 58, 1, 0, 1
+36, 8, 782, 257, 17, 47, 1, 0, 1
+36, 9, 235, 272, 22, 63, 1, 0, 1
+36, 10, 809, 270, 12, 39, 1, 0, 1
+36, 18, 322, 269, 16, 42, 1, 0, 1
+36, 41, 307, 272, 15, 37, 1, 0, 1
+37, 1, 480, 284, 55, 41, 1, 2, 1
+37, 3, 559, 281, 74, 75, 1, 2, 1
+37, 4, 739, 269, 21, 62, 1, 0, 1
+37, 6, 901, 309, 34, 84, 1, 0, 1
+37, 7, 215, 276, 19, 55, 1, 0, 1
+37, 8, 785, 257, 17, 46, 1, 0, 1
+37, 9, 234, 270, 22, 63, 1, 0, 1
+37, 10, 812, 273, 11, 37, 1, 0, 1
+37, 18, 321, 268, 16, 41, 1, 0, 1
+37, 41, 307, 271, 15, 37, 1, 0, 1
+38, 1, 481, 283, 54, 40, 1, 2, 1
+38, 3, 559, 279, 75, 76, 1, 2, 1
+38, 4, 741, 268, 21, 61, 1, 0, 1
+38, 6, 907, 309, 34, 85, 1, 0, 1
+38, 7, 214, 276, 18, 55, 1, 0, 1
+38, 8, 786, 253, 17, 47, 1, 0, 1
+38, 9, 234, 270, 21, 63, 1, 0, 1
+38, 10, 813, 272, 12, 38, 1, 0, 1
+38, 18, 321, 269, 15, 39, 1, 0, 1
+38, 41, 307, 272, 15, 36, 1, 0, 1
+39, 1, 480, 282, 55, 40, 1, 2, 1
+39, 3, 560, 279, 75, 77, 1, 2, 1
+39, 4, 743, 269, 21, 61, 1, 0, 1
+39, 6, 912, 312, 35, 85, 1, 0, 1
+39, 7, 213, 273, 19, 55, 1, 0, 1
+39, 8, 789, 251, 18, 51, 1, 0, 1
+39, 9, 232, 266, 22, 64, 1, 0, 1
+39, 10, 815, 274, 12, 36, 1, 0, 1
+39, 18, 323, 266, 16, 40, 1, 0, 1
+39, 41, 306, 267, 16, 39, 1, 0, 1
+39, 46, 646, 263, 47, 21, 1, 2, 1
+39, 47, 500, 242, 17, 15, 1, 2, 1
+40, 1, 480, 281, 55, 41, 1, 2, 1
+40, 3, 562, 278, 74, 77, 1, 2, 1
+40, 4, 745, 268, 21, 61, 1, 0, 1
+40, 6, 917, 313, 36, 87, 1, 0, 1
+40, 7, 211, 272, 19, 57, 1, 0, 1
+40, 8, 791, 249, 19, 51, 1, 0, 1
+40, 9, 232, 265, 21, 64, 1, 0, 1
+40, 10, 817, 272, 11, 36, 1, 0, 1
+40, 18, 321, 263, 17, 43, 1, 0, 1
+40, 24, 665, 281, 43, 37, 1, 0, 1
+40, 41, 305, 265, 17, 41, 1, 0, 1
+40, 46, 646, 262, 47, 21, 1, 2, 1
+40, 47, 500, 242, 16, 15, 1, 2, 1
+40, 48, 289, 265, 14, 40, 1, 0, 1
+41, 1, 480, 282, 55, 41, 1, 2, 1
+41, 3, 563, 280, 74, 76, 1, 2, 1
+41, 4, 747, 270, 22, 61, 1, 0, 1
+41, 6, 923, 315, 36, 88, 1, 0, 1
+41, 7, 210, 270, 20, 58, 1, 0, 1
+41, 8, 794, 250, 18, 51, 1, 0, 1
+41, 9, 231, 265, 22, 63, 1, 0, 1
+41, 10, 819, 272, 11, 35, 1, 0, 1
+41, 18, 321, 260, 18, 46, 1, 0, 1
+41, 24, 666, 280, 44, 39, 1, 0, 1
+41, 41, 305, 264, 17, 42, 1, 0, 1
+41, 46, 641, 262, 51, 22, 1, 2, 1
+41, 47, 500, 243, 16, 14, 1, 2, 1
+41, 48, 288, 262, 15, 43, 1, 0, 1
+42, 1, 481, 282, 55, 42, 1, 2, 1
+42, 3, 564, 281, 75, 77, 1, 2, 1
+42, 4, 749, 270, 22, 63, 1, 0, 1
+42, 6, 927, 317, 32, 88, 1, 0, 1
+42, 7, 209, 269, 21, 60, 1, 0, 1
+42, 8, 795, 251, 19, 51, 1, 0, 1
+42, 9, 231, 266, 21, 63, 1, 0, 1
+42, 10, 822, 274, 12, 37, 1, 0, 1
+42, 18, 322, 259, 18, 48, 1, 0, 1
+42, 41, 304, 264, 17, 43, 1, 0, 1
+42, 46, 640, 263, 48, 21, 1, 2, 1
+42, 47, 500, 244, 15, 13, 1, 2, 1
+42, 48, 289, 262, 15, 44, 1, 0, 1
+42, 49, 253, 262, 16, 43, 1, 0, 1
+43, 1, 481, 284, 55, 41, 1, 2, 1
+43, 3, 564, 281, 77, 79, 1, 2, 1
+43, 4, 752, 272, 22, 64, 1, 0, 1
+43, 6, 931, 319, 28, 87, 1, 0, 1
+43, 7, 207, 267, 23, 65, 1, 0, 1
+43, 8, 798, 253, 19, 51, 1, 0, 1
+43, 9, 229, 266, 22, 64, 1, 0, 1
+43, 10, 825, 276, 12, 35, 1, 0, 1
+43, 18, 322, 261, 17, 46, 1, 0, 1
+43, 41, 304, 263, 17, 44, 1, 0, 1
+43, 46, 638, 262, 47, 21, 1, 2, 1
+43, 47, 500, 245, 16, 14, 1, 2, 1
+43, 48, 288, 263, 15, 44, 1, 0, 1
+43, 49, 252, 262, 16, 43, 1, 0, 1
+43, 50, 783, 256, 11, 28, 1, 0, 1
+44, 1, 481, 285, 55, 42, 1, 2, 1
+44, 3, 565, 283, 76, 79, 1, 2, 1
+44, 4, 754, 273, 22, 64, 1, 0, 1
+44, 6, 935, 319, 24, 88, 1, 0, 1
+44, 7, 206, 267, 23, 67, 1, 0, 1
+44, 8, 800, 254, 19, 52, 1, 0, 1
+44, 9, 226, 266, 23, 65, 1, 0, 1
+44, 10, 828, 276, 11, 35, 1, 0, 1
+44, 18, 321, 262, 17, 46, 1, 0, 1
+44, 47, 500, 246, 16, 13, 1, 2, 1
+44, 48, 288, 262, 15, 46, 1, 0, 1
+44, 49, 251, 263, 16, 42, 1, 0, 1
+44, 50, 783, 256, 11, 29, 1, 0, 1
+45, 1, 481, 286, 55, 41, 1, 2, 1
+45, 3, 566, 284, 77, 81, 1, 2, 1
+45, 4, 756, 275, 23, 65, 1, 0, 1
+45, 6, 939, 328, 20, 84, 1, 0, 1
+45, 7, 206, 267, 23, 66, 1, 0, 1
+45, 8, 802, 256, 19, 52, 1, 0, 1
+45, 9, 228, 267, 22, 65, 1, 0, 1
+45, 18, 322, 262, 16, 44, 1, 0, 1
+45, 47, 501, 246, 16, 14, 1, 2, 1
+45, 49, 251, 264, 15, 41, 1, 0, 1
+45, 50, 784, 257, 11, 29, 1, 0, 1
+46, 1, 481, 286, 56, 42, 1, 2, 1
+46, 3, 566, 283, 79, 83, 1, 2, 1
+46, 4, 759, 275, 23, 67, 1, 0, 1
+46, 6, 943, 329, 16, 85, 1, 0, 1
+46, 7, 206, 264, 24, 71, 1, 0, 1
+46, 8, 803, 256, 20, 52, 1, 0, 1
+46, 9, 225, 263, 24, 70, 1, 0, 1
+46, 18, 322, 262, 16, 43, 1, 0, 1
+46, 47, 501, 245, 17, 15, 1, 2, 1
+46, 49, 248, 264, 16, 42, 1, 0, 1
+46, 50, 784, 256, 11, 30, 1, 0, 1
+47, 1, 481, 286, 57, 43, 1, 2, 1
+47, 3, 567, 284, 79, 83, 1, 2, 1
+47, 4, 761, 276, 23, 68, 1, 0, 1
+47, 7, 205, 264, 24, 71, 1, 0, 1
+47, 8, 807, 259, 18, 49, 1, 0, 1
+47, 9, 225, 264, 23, 69, 1, 0, 1
+47, 18, 321, 261, 16, 44, 1, 0, 1
+47, 47, 501, 246, 17, 14, 1, 2, 1
+47, 49, 247, 265, 16, 43, 1, 0, 1
+47, 50, 784, 256, 12, 31, 1, 0, 1
+48, 1, 481, 287, 57, 43, 1, 2, 1
+48, 3, 567, 283, 81, 84, 1, 2, 1
+48, 4, 763, 278, 23, 67, 1, 0, 1
+48, 7, 202, 266, 24, 69, 1, 0, 1
+48, 8, 810, 262, 17, 47, 1, 0, 1
+48, 9, 224, 267, 23, 68, 1, 0, 1
+48, 18, 320, 262, 16, 44, 1, 0, 1
+48, 49, 245, 264, 18, 48, 1, 0, 1
+48, 50, 788, 257, 11, 30, 1, 0, 1
+49, 1, 480, 289, 58, 44, 1, 2, 1
+49, 3, 567, 285, 83, 87, 1, 2, 1
+49, 4, 766, 279, 23, 68, 1, 0, 1
+49, 7, 201, 268, 23, 67, 1, 0, 1
+49, 8, 812, 265, 17, 45, 1, 0, 1
+49, 9, 223, 271, 22, 65, 1, 0, 1
+49, 18, 319, 266, 16, 42, 1, 0, 1
+49, 49, 243, 265, 18, 48, 1, 0, 1
+49, 50, 789, 258, 11, 30, 1, 0, 1
+50, 1, 480, 289, 58, 44, 1, 2, 1
+50, 3, 568, 284, 84, 88, 1, 2, 1
+50, 4, 768, 278, 23, 69, 1, 0, 1
+50, 7, 200, 268, 23, 67, 1, 0, 1
+50, 8, 814, 266, 17, 44, 1, 0, 1
+50, 9, 222, 271, 21, 65, 1, 0, 1
+50, 10, 840, 277, 11, 35, 1, 0, 1
+50, 18, 319, 266, 15, 43, 1, 0, 1
+50, 48, 281, 267, 14, 43, 1, 0, 1
+50, 49, 242, 264, 18, 50, 1, 0, 1
+51, 1, 481, 289, 57, 44, 1, 2, 1
+51, 3, 569, 284, 84, 90, 1, 2, 1
+51, 4, 770, 279, 24, 70, 1, 0, 1
+51, 7, 199, 270, 23, 66, 1, 0, 1
+51, 8, 817, 266, 16, 45, 1, 0, 1
+51, 9, 221, 275, 21, 62, 1, 0, 1
+51, 10, 842, 277, 11, 35, 1, 0, 1
+51, 18, 318, 267, 16, 43, 1, 0, 1
+51, 41, 298, 274, 15, 38, 1, 0, 1
+51, 48, 280, 267, 15, 45, 1, 0, 1
+51, 49, 241, 264, 18, 49, 1, 0, 1
+51, 55, 408, 256, 13, 28, 1, 0, 1
+51, 56, 171, 277, 16, 55, 1, 0, 1
+52, 1, 481, 290, 57, 43, 1, 2, 1
+52, 3, 569, 285, 84, 91, 1, 2, 1
+52, 4, 772, 278, 25, 72, 1, 0, 1
+52, 7, 197, 271, 22, 65, 1, 0, 1
+52, 8, 819, 265, 17, 46, 1, 0, 1
+52, 9, 219, 278, 21, 60, 1, 0, 1
+52, 18, 317, 267, 17, 44, 1, 0, 1
+52, 41, 297, 274, 16, 38, 1, 0, 1
+52, 48, 279, 267, 15, 45, 1, 0, 1
+52, 49, 240, 265, 17, 46, 1, 0, 1
+52, 50, 800, 257, 13, 32, 1, 0, 1
+52, 55, 408, 256, 13, 28, 1, 0, 1
+52, 56, 169, 278, 16, 56, 1, 0, 1
+53, 1, 482, 290, 57, 44, 1, 2, 1
+53, 3, 569, 285, 85, 92, 1, 2, 1
+53, 4, 775, 279, 25, 73, 1, 0, 1
+53, 7, 196, 272, 23, 66, 1, 0, 1
+53, 8, 821, 267, 16, 43, 1, 0, 1
+53, 9, 218, 278, 21, 61, 1, 0, 1
+53, 10, 847, 278, 12, 36, 1, 0, 1
+53, 18, 316, 268, 17, 44, 1, 0, 1
+53, 41, 296, 274, 16, 41, 1, 0, 1
+53, 48, 279, 269, 15, 44, 1, 0, 1
+53, 49, 238, 266, 17, 46, 1, 0, 1
+53, 50, 802, 257, 13, 32, 1, 0, 1
+53, 55, 408, 257, 13, 27, 1, 0, 1
+53, 56, 167, 278, 16, 56, 1, 0, 1
+53, 57, 378, 258, 9, 27, 1, 0, 1
+54, 1, 481, 291, 58, 44, 1, 2, 1
+54, 3, 571, 288, 84, 91, 1, 2, 1
+54, 4, 777, 279, 25, 74, 1, 0, 1
+54, 7, 194, 271, 24, 68, 1, 0, 1
+54, 8, 824, 268, 15, 41, 1, 0, 1
+54, 9, 217, 279, 21, 61, 1, 0, 1
+54, 10, 849, 279, 12, 35, 1, 0, 1
+54, 18, 316, 268, 17, 45, 1, 0, 1
+54, 41, 295, 274, 16, 41, 1, 0, 1
+54, 48, 277, 269, 15, 45, 1, 0, 1
+54, 49, 237, 266, 16, 44, 1, 0, 1
+54, 50, 803, 258, 12, 31, 1, 0, 1
+54, 55, 408, 257, 13, 27, 1, 0, 1
+54, 56, 165, 278, 17, 57, 1, 0, 1
+54, 57, 378, 258, 9, 27, 1, 0, 1
+55, 1, 481, 290, 58, 45, 1, 2, 1
+55, 3, 572, 288, 84, 91, 1, 2, 1
+55, 4, 779, 279, 25, 74, 1, 0, 1
+55, 7, 193, 271, 23, 69, 1, 0, 1
+55, 8, 825, 267, 16, 43, 1, 0, 1
+55, 9, 216, 277, 21, 62, 1, 0, 1
+55, 10, 851, 279, 12, 35, 1, 0, 1
+55, 18, 315, 269, 17, 44, 1, 0, 1
+55, 41, 296, 275, 16, 39, 1, 0, 1
+55, 48, 276, 270, 15, 45, 1, 0, 1
+55, 49, 236, 268, 17, 44, 1, 0, 1
+55, 50, 805, 258, 12, 32, 1, 0, 1
+55, 55, 408, 258, 13, 26, 1, 0, 1
+55, 56, 163, 278, 17, 58, 1, 0, 1
+55, 57, 378, 257, 9, 29, 1, 0, 1
+56, 1, 481, 291, 58, 45, 1, 2, 1
+56, 3, 572, 288, 85, 93, 1, 2, 1
+56, 4, 781, 280, 25, 74, 1, 0, 1
+56, 7, 190, 273, 23, 65, 1, 0, 1
+56, 8, 828, 267, 16, 44, 1, 0, 1
+56, 9, 214, 278, 22, 62, 1, 0, 1
+56, 18, 314, 269, 17, 44, 1, 0, 1
+56, 41, 295, 275, 16, 40, 1, 0, 1
+56, 48, 277, 272, 14, 44, 1, 0, 1
+56, 49, 235, 270, 17, 43, 1, 0, 1
+56, 55, 408, 258, 13, 27, 1, 0, 1
+56, 56, 162, 278, 17, 59, 1, 0, 1
+56, 57, 377, 256, 10, 29, 1, 0, 1
+56, 61, 573, 269, 48, 28, 1, 2, 1
+57, 1, 480, 290, 59, 46, 1, 2, 1
+57, 3, 573, 289, 85, 92, 1, 2, 1
+57, 4, 782, 277, 27, 77, 1, 0, 1
+57, 7, 189, 273, 23, 67, 1, 0, 1
+57, 8, 829, 264, 18, 47, 1, 0, 1
+57, 9, 212, 275, 23, 65, 1, 0, 1
+57, 18, 314, 269, 17, 44, 1, 0, 1
+57, 48, 276, 271, 15, 45, 1, 0, 1
+57, 49, 232, 268, 17, 46, 1, 0, 1
+57, 55, 408, 256, 13, 27, 1, 0, 1
+57, 56, 160, 278, 18, 60, 1, 0, 1
+57, 57, 377, 256, 9, 29, 1, 0, 1
+57, 61, 569, 266, 54, 31, 1, 2, 1
+58, 1, 479, 289, 61, 46, 1, 2, 1
+58, 3, 573, 288, 85, 92, 1, 2, 1
+58, 4, 785, 276, 27, 78, 1, 0, 1
+58, 7, 187, 274, 23, 66, 1, 0, 1
+58, 8, 830, 261, 18, 51, 1, 0, 1
+58, 9, 210, 270, 24, 71, 1, 0, 1
+58, 18, 313, 267, 17, 46, 1, 0, 1
+58, 48, 275, 269, 14, 45, 1, 0, 1
+58, 49, 229, 265, 18, 50, 1, 0, 1
+58, 55, 408, 256, 13, 26, 1, 0, 1
+58, 56, 157, 277, 18, 60, 1, 0, 1
+58, 61, 566, 266, 56, 31, 1, 2, 1
+59, 1, 478, 288, 61, 47, 1, 2, 1
+59, 3, 574, 287, 86, 94, 1, 2, 1
+59, 4, 788, 277, 26, 77, 1, 0, 1
+59, 7, 185, 273, 23, 66, 1, 0, 1
+59, 8, 831, 259, 20, 52, 1, 0, 1
+59, 9, 207, 267, 25, 73, 1, 0, 1
+59, 18, 313, 265, 17, 47, 1, 0, 1
+59, 41, 288, 272, 16, 40, 1, 0, 1
+59, 48, 274, 269, 15, 44, 1, 0, 1
+59, 49, 226, 265, 19, 50, 1, 0, 1
+59, 55, 408, 255, 13, 26, 1, 0, 1
+59, 56, 154, 276, 19, 62, 1, 0, 1
+59, 57, 376, 256, 11, 31, 1, 0, 1
+59, 61, 563, 265, 55, 30, 1, 2, 1
+60, 1, 478, 287, 61, 47, 1, 2, 1
+60, 3, 574, 287, 87, 94, 1, 2, 1
+60, 4, 790, 278, 27, 77, 1, 0, 1
+60, 7, 182, 273, 23, 67, 1, 0, 1
+60, 8, 833, 258, 20, 54, 1, 0, 1
+60, 9, 207, 270, 24, 70, 1, 0, 1
+60, 18, 312, 265, 17, 46, 1, 0, 1
+60, 41, 287, 271, 16, 41, 1, 0, 1
+60, 48, 272, 268, 15, 45, 1, 0, 1
+60, 49, 225, 265, 19, 50, 1, 0, 1
+60, 55, 408, 255, 13, 26, 1, 0, 1
+60, 56, 153, 276, 19, 60, 1, 0, 1
+60, 57, 375, 255, 11, 33, 1, 0, 1
+60, 61, 557, 264, 57, 31, 1, 2, 1
+61, 1, 478, 287, 62, 48, 1, 2, 1
+61, 3, 576, 287, 86, 93, 1, 2, 1
+61, 4, 792, 277, 26, 77, 1, 0, 1
+61, 7, 181, 275, 22, 64, 1, 0, 1
+61, 8, 833, 256, 21, 55, 1, 0, 1
+61, 9, 206, 271, 23, 69, 1, 0, 1
+61, 18, 312, 266, 16, 45, 1, 0, 1
+61, 41, 284, 272, 17, 42, 1, 0, 1
+61, 47, 503, 240, 19, 17, 1, 2, 1
+61, 48, 271, 268, 16, 46, 1, 0, 1
+61, 55, 408, 254, 12, 26, 1, 0, 1
+61, 56, 151, 277, 20, 59, 1, 0, 1
+61, 57, 373, 253, 12, 35, 1, 0, 1
+61, 61, 551, 263, 60, 31, 1, 2, 1
+62, 1, 478, 287, 61, 47, 1, 2, 1
+62, 3, 576, 287, 86, 94, 1, 2, 1
+62, 4, 794, 278, 26, 75, 1, 0, 1
+62, 7, 180, 273, 21, 63, 1, 0, 1
+62, 8, 834, 256, 21, 55, 1, 0, 1
+62, 9, 205, 270, 23, 69, 1, 0, 1
+62, 18, 311, 265, 16, 46, 1, 0, 1
+62, 41, 282, 272, 17, 43, 1, 0, 1
+62, 47, 503, 240, 20, 17, 1, 2, 1
+62, 55, 407, 254, 13, 26, 1, 0, 1
+62, 56, 149, 274, 20, 61, 1, 0, 1
+62, 57, 373, 252, 12, 37, 1, 0, 1
+62, 61, 546, 263, 63, 31, 1, 2, 1
+63, 1, 477, 287, 64, 49, 1, 2, 1
+63, 3, 577, 287, 88, 94, 1, 2, 1
+63, 4, 798, 274, 26, 75, 1, 0, 1
+63, 7, 177, 276, 23, 66, 1, 0, 1
+63, 8, 838, 253, 20, 52, 1, 0, 1
+63, 9, 205, 273, 24, 71, 1, 0, 1
+63, 41, 281, 273, 19, 47, 1, 0, 1
+63, 48, 265, 271, 15, 44, 1, 0, 1
+63, 55, 406, 256, 13, 28, 1, 0, 1
+63, 56, 147, 280, 21, 61, 1, 0, 1
+63, 57, 372, 251, 12, 39, 1, 0, 1
+63, 61, 544, 262, 64, 32, 1, 2, 1
+64, 1, 477, 287, 64, 49, 1, 2, 1
+64, 3, 576, 287, 90, 97, 1, 2, 1
+64, 4, 800, 279, 27, 76, 1, 0, 1
+64, 7, 176, 273, 22, 65, 1, 0, 1
+64, 8, 842, 260, 19, 49, 1, 0, 1
+64, 9, 204, 271, 23, 69, 1, 0, 1
+64, 18, 309, 265, 16, 46, 1, 0, 1
+64, 41, 281, 269, 19, 48, 1, 0, 1
+64, 48, 264, 266, 15, 46, 1, 0, 1
+64, 49, 235, 274, 14, 37, 1, 0, 1
+64, 55, 406, 256, 13, 28, 1, 0, 1
+64, 56, 146, 276, 20, 60, 1, 0, 1
+64, 57, 371, 251, 13, 39, 1, 0, 1
+65, 1, 477, 288, 63, 49, 1, 2, 1
+65, 3, 576, 287, 90, 98, 1, 2, 1
+65, 4, 803, 280, 26, 74, 1, 0, 1
+65, 7, 173, 274, 23, 66, 1, 0, 1
+65, 8, 844, 261, 18, 47, 1, 0, 1
+65, 9, 201, 274, 23, 66, 1, 0, 1
+65, 18, 308, 264, 16, 47, 1, 0, 1
+65, 41, 282, 272, 18, 46, 1, 0, 1
+65, 47, 502, 240, 21, 18, 1, 2, 1
+65, 48, 263, 267, 15, 46, 1, 0, 1
+65, 49, 235, 277, 13, 34, 1, 0, 1
+65, 55, 405, 256, 12, 27, 1, 0, 1
+65, 56, 143, 278, 20, 59, 1, 0, 1
+65, 57, 371, 253, 10, 33, 1, 0, 1
+66, 1, 477, 289, 64, 49, 1, 2, 1
+66, 3, 576, 287, 92, 99, 1, 2, 1
+66, 4, 806, 280, 26, 74, 1, 0, 1
+66, 7, 172, 276, 23, 68, 1, 0, 1
+66, 8, 846, 259, 18, 47, 1, 0, 1
+66, 9, 200, 277, 23, 66, 1, 0, 1
+66, 41, 280, 275, 19, 46, 1, 0, 1
+66, 47, 502, 239, 21, 19, 1, 2, 1
+66, 48, 262, 268, 16, 50, 1, 0, 1
+66, 49, 234, 280, 13, 34, 1, 0, 1
+66, 50, 831, 250, 11, 27, 1, 0, 1
+66, 55, 404, 256, 13, 27, 1, 0, 1
+66, 56, 142, 280, 20, 60, 1, 0, 1
+66, 57, 370, 254, 11, 32, 1, 0, 1
+66, 61, 531, 261, 69, 34, 1, 2, 1
+67, 1, 476, 289, 64, 50, 1, 2, 1
+67, 3, 576, 288, 92, 101, 1, 2, 1
+67, 4, 807, 284, 26, 74, 1, 0, 1
+67, 7, 170, 275, 23, 66, 1, 0, 1
+67, 8, 849, 265, 17, 46, 1, 0, 1
+67, 9, 198, 277, 22, 63, 1, 0, 1
+67, 18, 299, 263, 18, 52, 1, 0, 1
+67, 41, 276, 273, 19, 46, 1, 0, 1
+67, 47, 502, 240, 22, 19, 1, 2, 1
+67, 48, 261, 268, 16, 49, 1, 0, 1
+67, 49, 231, 277, 13, 34, 1, 0, 1
+67, 50, 833, 250, 11, 27, 1, 0, 1
+67, 56, 140, 274, 21, 62, 1, 0, 1
+67, 57, 369, 253, 11, 34, 1, 0, 1
+67, 61, 527, 262, 67, 33, 1, 2, 1
+68, 1, 476, 289, 64, 51, 1, 2, 1
+68, 3, 576, 288, 93, 101, 1, 2, 1
+68, 4, 808, 283, 27, 76, 1, 0, 1
+68, 7, 168, 276, 23, 66, 1, 0, 1
+68, 8, 850, 264, 17, 45, 1, 0, 1
+68, 9, 196, 280, 22, 61, 1, 0, 1
+68, 18, 298, 266, 18, 52, 1, 0, 1
+68, 41, 273, 274, 20, 47, 1, 0, 1
+68, 47, 501, 240, 22, 19, 1, 2, 1
+68, 48, 259, 269, 17, 51, 1, 0, 1
+68, 49, 228, 278, 14, 36, 1, 0, 1
+68, 50, 831, 251, 12, 28, 1, 0, 1
+68, 56, 139, 278, 21, 60, 1, 0, 1
+68, 57, 369, 252, 11, 35, 1, 0, 1
+68, 61, 523, 261, 69, 34, 1, 2, 1
+69, 1, 474, 291, 64, 50, 1, 2, 1
+69, 3, 575, 290, 94, 103, 1, 2, 1
+69, 4, 810, 286, 28, 77, 1, 0, 1
+69, 7, 167, 274, 24, 68, 1, 0, 1
+69, 8, 852, 266, 17, 46, 1, 0, 1
+69, 9, 193, 278, 22, 63, 1, 0, 1
+69, 18, 298, 266, 18, 52, 1, 0, 1
+69, 41, 272, 273, 19, 48, 1, 0, 1
+69, 47, 501, 242, 20, 17, 1, 2, 1
+69, 48, 256, 268, 16, 48, 1, 0, 1
+69, 49, 225, 277, 14, 36, 1, 0, 1
+69, 50, 830, 254, 13, 29, 1, 0, 1
+69, 56, 137, 275, 22, 63, 1, 0, 1
+69, 57, 367, 253, 11, 33, 1, 0, 1
+69, 61, 520, 262, 67, 32, 1, 2, 1
+70, 1, 473, 291, 64, 51, 1, 2, 1
+70, 3, 574, 289, 96, 105, 1, 2, 1
+70, 4, 812, 286, 28, 77, 1, 0, 1
+70, 7, 164, 274, 24, 69, 1, 0, 1
+70, 8, 852, 266, 18, 46, 1, 0, 1
+70, 9, 190, 276, 23, 66, 1, 0, 1
+70, 18, 297, 268, 18, 50, 1, 0, 1
+70, 41, 270, 275, 19, 46, 1, 0, 1
+70, 47, 500, 242, 20, 17, 1, 2, 1
+70, 48, 253, 270, 17, 48, 1, 0, 1
+70, 49, 223, 276, 14, 36, 1, 0, 1
+70, 50, 832, 254, 12, 29, 1, 0, 1
+70, 56, 134, 274, 23, 66, 1, 0, 1
+70, 57, 365, 253, 12, 34, 1, 0, 1
+70, 61, 517, 262, 64, 31, 1, 2, 1
+71, 1, 472, 292, 64, 50, 1, 2, 1
+71, 3, 574, 291, 96, 106, 1, 2, 1
+71, 4, 814, 286, 29, 79, 1, 0, 1
+71, 7, 162, 273, 25, 70, 1, 0, 1
+71, 8, 852, 268, 18, 46, 1, 0, 1
+71, 9, 188, 275, 23, 66, 1, 0, 1
+71, 18, 296, 268, 18, 51, 1, 0, 1
+71, 41, 268, 275, 18, 47, 1, 0, 1
+71, 47, 499, 243, 18, 15, 1, 2, 1
+71, 48, 252, 269, 17, 51, 1, 0, 1
+71, 49, 220, 276, 13, 36, 1, 0, 1
+71, 56, 131, 273, 22, 64, 1, 0, 1
+71, 57, 365, 252, 11, 35, 1, 0, 1
+71, 61, 515, 262, 63, 31, 1, 2, 1
+71, 82, 558, 243, 17, 13, 1, 2, 1
+72, 1, 471, 291, 64, 51, 1, 2, 1
+72, 3, 573, 291, 98, 107, 1, 2, 1
+72, 4, 817, 286, 29, 80, 1, 0, 1
+72, 7, 160, 274, 24, 70, 1, 0, 1
+72, 8, 853, 268, 18, 46, 1, 0, 1
+72, 9, 186, 275, 23, 68, 1, 0, 1
+72, 41, 266, 277, 18, 46, 1, 0, 1
+72, 47, 498, 243, 18, 15, 1, 2, 1
+72, 48, 250, 270, 18, 52, 1, 0, 1
+72, 49, 217, 277, 14, 35, 1, 0, 1
+72, 55, 398, 256, 13, 27, 1, 0, 1
+72, 56, 128, 278, 22, 61, 1, 0, 1
+72, 57, 364, 253, 11, 36, 1, 0, 1
+72, 61, 511, 262, 64, 30, 1, 2, 1
+72, 82, 557, 241, 18, 15, 1, 2, 1
+73, 1, 469, 292, 65, 51, 1, 2, 1
+73, 3, 572, 292, 98, 108, 1, 2, 1
+73, 4, 819, 286, 29, 81, 1, 0, 1
+73, 7, 158, 273, 25, 70, 1, 0, 1
+73, 8, 854, 269, 18, 46, 1, 0, 1
+73, 9, 183, 275, 23, 66, 1, 0, 1
+73, 18, 294, 268, 16, 48, 1, 0, 1
+73, 41, 264, 276, 18, 45, 1, 0, 1
+73, 47, 496, 242, 20, 16, 1, 2, 1
+73, 48, 249, 271, 18, 51, 1, 0, 1
+73, 49, 214, 277, 13, 35, 1, 0, 1
+73, 55, 397, 256, 13, 28, 1, 0, 1
+73, 56, 125, 275, 22, 64, 1, 0, 1
+73, 57, 363, 252, 11, 37, 1, 0, 1
+73, 61, 509, 263, 62, 29, 1, 2, 1
+73, 82, 557, 242, 17, 14, 1, 2, 1
+74, 1, 468, 292, 65, 51, 1, 2, 1
+74, 3, 572, 291, 98, 110, 1, 2, 1
+74, 4, 821, 286, 30, 81, 1, 0, 1
+74, 7, 157, 273, 25, 70, 1, 0, 1
+74, 8, 855, 270, 17, 44, 1, 0, 1
+74, 9, 181, 274, 24, 69, 1, 0, 1
+74, 18, 293, 269, 16, 46, 1, 0, 1
+74, 24, 695, 303, 43, 35, 1, 2, 1
+74, 41, 262, 276, 18, 46, 1, 0, 1
+74, 47, 495, 242, 20, 17, 1, 2, 1
+74, 48, 243, 266, 19, 54, 1, 0, 1
+74, 49, 211, 277, 14, 35, 1, 0, 1
+74, 55, 396, 255, 13, 28, 1, 0, 1
+74, 56, 123, 273, 23, 67, 1, 0, 1
+74, 57, 361, 252, 12, 38, 1, 0, 1
+74, 61, 508, 263, 59, 28, 1, 2, 1
+74, 82, 556, 242, 18, 14, 1, 2, 1
+75, 1, 466, 291, 67, 53, 1, 2, 1
+75, 3, 571, 292, 99, 110, 1, 2, 1
+75, 4, 823, 288, 30, 82, 1, 0, 1
+75, 7, 153, 273, 24, 69, 1, 0, 1
+75, 8, 856, 270, 18, 47, 1, 0, 1
+75, 9, 178, 276, 24, 67, 1, 0, 1
+75, 18, 291, 268, 16, 48, 1, 0, 1
+75, 24, 696, 304, 42, 35, 1, 2, 1
+75, 41, 260, 276, 18, 46, 1, 0, 1
+75, 47, 494, 242, 20, 17, 1, 2, 1
+75, 48, 240, 265, 18, 51, 1, 0, 1
+75, 49, 207, 276, 14, 36, 1, 0, 1
+75, 55, 395, 255, 13, 27, 1, 0, 1
+75, 56, 120, 275, 22, 66, 1, 0, 1
+75, 57, 359, 252, 12, 38, 1, 0, 1
+75, 61, 504, 264, 58, 27, 1, 2, 1
+75, 82, 554, 241, 19, 16, 1, 2, 1
+75, 85, 799, 259, 11, 29, 1, 0, 1
+76, 1, 465, 291, 68, 54, 1, 2, 1
+76, 3, 571, 292, 100, 111, 1, 2, 1
+76, 4, 825, 288, 31, 83, 1, 0, 1
+76, 7, 149, 273, 25, 69, 1, 0, 1
+76, 8, 856, 269, 18, 47, 1, 0, 1
+76, 9, 175, 274, 24, 68, 1, 0, 1
+76, 18, 289, 268, 16, 46, 1, 0, 1
+76, 41, 257, 278, 18, 44, 1, 0, 1
+76, 48, 239, 265, 18, 51, 1, 0, 1
+76, 49, 203, 276, 14, 35, 1, 0, 1
+76, 55, 394, 254, 12, 27, 1, 0, 1
+76, 56, 117, 275, 22, 65, 1, 0, 1
+76, 57, 358, 252, 12, 38, 1, 0, 1
+76, 61, 499, 262, 61, 29, 1, 2, 1
+76, 82, 553, 241, 19, 15, 1, 2, 1
+76, 85, 799, 259, 11, 29, 1, 0, 1
+77, 1, 464, 291, 68, 54, 1, 2, 1
+77, 3, 570, 293, 100, 111, 1, 2, 1
+77, 4, 825, 289, 32, 86, 1, 0, 1
+77, 7, 146, 272, 26, 71, 1, 0, 1
+77, 8, 856, 270, 19, 47, 1, 0, 1
+77, 9, 173, 274, 23, 67, 1, 0, 1
+77, 18, 286, 268, 16, 47, 1, 0, 1
+77, 41, 254, 278, 18, 44, 1, 0, 1
+77, 48, 237, 268, 19, 52, 1, 0, 1
+77, 49, 200, 276, 14, 36, 1, 0, 1
+77, 55, 392, 254, 13, 28, 1, 0, 1
+77, 56, 114, 278, 21, 62, 1, 0, 1
+77, 57, 356, 251, 13, 39, 1, 0, 1
+77, 61, 495, 262, 63, 29, 1, 2, 1
+77, 82, 552, 242, 19, 15, 1, 2, 1
+77, 85, 798, 259, 11, 29, 1, 0, 1
+78, 1, 462, 291, 68, 54, 1, 2, 1
+78, 3, 568, 293, 102, 113, 1, 2, 1
+78, 4, 827, 289, 32, 87, 1, 0, 1
+78, 7, 143, 271, 26, 73, 1, 0, 1
+78, 8, 857, 270, 18, 48, 1, 0, 1
+78, 9, 169, 274, 24, 68, 1, 0, 1
+78, 18, 282, 269, 17, 49, 1, 0, 1
+78, 41, 251, 276, 18, 47, 1, 0, 1
+78, 48, 235, 271, 19, 51, 1, 0, 1
+78, 49, 194, 275, 15, 38, 1, 0, 1
+78, 55, 391, 254, 13, 28, 1, 0, 1
+78, 56, 111, 275, 23, 66, 1, 0, 1
+78, 57, 354, 252, 12, 37, 1, 0, 1
+78, 61, 493, 261, 61, 29, 1, 2, 1
+78, 82, 551, 241, 20, 16, 1, 2, 1
+78, 85, 797, 259, 11, 29, 1, 0, 1
+79, 1, 461, 291, 66, 53, 1, 2, 1
+79, 3, 568, 294, 100, 113, 1, 2, 1
+79, 4, 829, 290, 32, 86, 1, 0, 1
+79, 7, 138, 270, 27, 74, 1, 0, 1
+79, 8, 856, 270, 20, 48, 1, 0, 1
+79, 9, 167, 274, 23, 69, 1, 0, 1
+79, 18, 278, 266, 18, 53, 1, 0, 1
+79, 41, 248, 276, 18, 47, 1, 0, 1
+79, 48, 230, 265, 21, 56, 1, 0, 1
+79, 49, 192, 275, 15, 37, 1, 0, 1
+79, 56, 107, 276, 23, 65, 1, 0, 1
+79, 57, 353, 252, 11, 35, 1, 0, 1
+79, 61, 491, 261, 59, 29, 1, 2, 1
+79, 82, 550, 242, 19, 15, 1, 2, 1
+79, 85, 797, 259, 11, 29, 1, 0, 1
+80, 1, 459, 291, 66, 53, 1, 2, 1
+80, 3, 566, 293, 102, 115, 1, 2, 1
+80, 4, 829, 288, 33, 88, 1, 0, 1
+80, 7, 135, 270, 27, 74, 1, 0, 1
+80, 8, 856, 269, 19, 46, 1, 0, 1
+80, 9, 165, 274, 23, 70, 1, 0, 1
+80, 18, 274, 269, 19, 52, 1, 0, 1
+80, 41, 244, 276, 19, 48, 1, 0, 1
+80, 48, 228, 267, 20, 56, 1, 0, 1
+80, 49, 189, 277, 14, 36, 1, 0, 1
+80, 56, 105, 277, 22, 65, 1, 0, 1
+80, 57, 352, 252, 11, 35, 1, 0, 1
+80, 61, 489, 261, 58, 28, 1, 2, 1
+80, 82, 549, 242, 19, 15, 1, 2, 1
+80, 85, 796, 258, 11, 31, 1, 0, 1
+81, 1, 457, 291, 67, 54, 1, 2, 1
+81, 3, 564, 293, 104, 116, 1, 2, 1
+81, 4, 830, 287, 34, 90, 1, 0, 1
+81, 7, 133, 273, 26, 70, 1, 0, 1
+81, 8, 856, 268, 18, 46, 1, 0, 1
+81, 9, 161, 275, 24, 68, 1, 0, 1
+81, 18, 271, 270, 18, 52, 1, 0, 1
+81, 41, 241, 276, 19, 48, 1, 0, 1
+81, 48, 226, 269, 19, 56, 1, 0, 1
+81, 49, 185, 277, 14, 37, 1, 0, 1
+81, 56, 102, 277, 22, 65, 1, 0, 1
+81, 57, 349, 252, 12, 37, 1, 0, 1
+81, 61, 487, 261, 56, 27, 1, 2, 1
+81, 82, 548, 243, 17, 13, 1, 2, 1
+81, 85, 795, 258, 12, 31, 1, 0, 1
+81, 91, 75, 277, 20, 65, 1, 0, 1
+82, 1, 455, 291, 68, 54, 1, 2, 1
+82, 3, 562, 293, 106, 118, 1, 2, 1
+82, 4, 831, 287, 34, 91, 1, 0, 1
+82, 7, 130, 274, 26, 70, 1, 0, 1
+82, 8, 855, 267, 19, 47, 1, 0, 1
+82, 9, 158, 277, 23, 68, 1, 0, 1
+82, 18, 264, 273, 18, 50, 1, 0, 1
+82, 41, 237, 275, 20, 50, 1, 0, 1
+82, 48, 224, 272, 18, 52, 1, 0, 1
+82, 49, 180, 277, 16, 37, 1, 0, 1
+82, 56, 99, 276, 22, 67, 1, 0, 1
+82, 57, 348, 252, 12, 37, 1, 0, 1
+82, 61, 484, 261, 55, 27, 1, 2, 1
+82, 82, 547, 243, 17, 13, 1, 2, 1
+82, 85, 795, 258, 12, 32, 1, 0, 1
+82, 91, 70, 277, 21, 66, 1, 0, 1
+83, 1, 452, 291, 69, 56, 1, 2, 1
+83, 3, 561, 294, 106, 119, 1, 2, 1
+83, 4, 832, 287, 35, 92, 1, 0, 1
+83, 7, 127, 277, 24, 66, 1, 0, 1
+83, 8, 855, 266, 19, 48, 1, 0, 1
+83, 9, 154, 277, 24, 69, 1, 0, 1
+83, 18, 265, 271, 19, 51, 1, 0, 1
+83, 41, 234, 274, 21, 51, 1, 0, 1
+83, 48, 222, 269, 20, 57, 1, 0, 1
+83, 49, 177, 277, 16, 37, 1, 0, 1
+83, 55, 382, 255, 13, 27, 1, 0, 1
+83, 56, 96, 276, 23, 68, 1, 0, 1
+83, 57, 346, 252, 12, 39, 1, 0, 1
+83, 61, 482, 261, 55, 28, 1, 2, 1
+83, 82, 546, 244, 16, 12, 1, 2, 1
+83, 91, 66, 279, 20, 64, 1, 0, 1
+84, 1, 449, 291, 70, 56, 1, 2, 1
+84, 3, 560, 294, 106, 119, 1, 2, 1
+84, 4, 833, 286, 35, 93, 1, 0, 1
+84, 7, 122, 275, 26, 70, 1, 0, 1
+84, 8, 855, 265, 20, 49, 1, 0, 1
+84, 9, 151, 276, 24, 69, 1, 0, 1
+84, 18, 265, 269, 19, 53, 1, 0, 1
+84, 41, 232, 276, 20, 50, 1, 0, 1
+84, 48, 217, 270, 20, 56, 1, 0, 1
+84, 49, 173, 278, 16, 38, 1, 0, 1
+84, 55, 381, 255, 13, 27, 1, 0, 1
+84, 56, 93, 274, 24, 73, 1, 0, 1
+84, 57, 343, 251, 12, 38, 1, 0, 1
+84, 61, 480, 261, 54, 28, 1, 2, 1
+84, 82, 544, 243, 17, 12, 1, 2, 1
+84, 85, 792, 257, 12, 30, 1, 0, 1
+84, 91, 63, 280, 20, 64, 1, 0, 1
+85, 1, 448, 292, 69, 56, 1, 2, 1
+85, 3, 560, 295, 105, 118, 1, 2, 1
+85, 4, 834, 288, 34, 91, 1, 0, 1
+85, 7, 119, 276, 26, 70, 1, 0, 1
+85, 8, 854, 265, 20, 49, 1, 0, 1
+85, 9, 147, 278, 24, 68, 1, 0, 1
+85, 18, 264, 269, 19, 53, 1, 0, 1
+85, 41, 229, 275, 20, 51, 1, 0, 1
+85, 48, 213, 271, 20, 56, 1, 0, 1
+85, 49, 168, 278, 17, 42, 1, 0, 1
+85, 55, 379, 255, 13, 27, 1, 0, 1
+85, 56, 90, 274, 25, 73, 1, 0, 1
+85, 57, 341, 254, 12, 36, 1, 0, 1
+85, 61, 478, 261, 53, 27, 1, 2, 1
+85, 82, 543, 243, 17, 12, 1, 2, 1
+85, 85, 791, 257, 12, 30, 1, 0, 1
+85, 91, 58, 281, 21, 66, 1, 0, 1
+86, 1, 446, 293, 69, 55, 1, 2, 1
+86, 3, 559, 295, 106, 119, 1, 2, 1
+86, 4, 835, 288, 34, 90, 1, 0, 1
+86, 7, 115, 275, 26, 71, 1, 0, 1
+86, 8, 853, 264, 20, 49, 1, 0, 1
+86, 9, 143, 279, 24, 68, 1, 0, 1
+86, 18, 259, 270, 20, 54, 1, 0, 1
+86, 41, 226, 277, 20, 51, 1, 0, 1
+86, 48, 211, 274, 19, 53, 1, 0, 1
+86, 49, 165, 279, 17, 40, 1, 0, 1
+86, 55, 378, 255, 13, 27, 1, 0, 1
+86, 57, 339, 255, 11, 34, 1, 0, 1
+86, 61, 475, 261, 51, 27, 1, 2, 1
+86, 91, 54, 280, 23, 69, 1, 0, 1
+87, 1, 444, 293, 70, 57, 1, 2, 1
+87, 3, 557, 296, 108, 122, 1, 2, 1
+87, 4, 835, 287, 35, 93, 1, 0, 1
+87, 7, 111, 275, 27, 73, 1, 0, 1
+87, 8, 853, 266, 19, 47, 1, 0, 1
+87, 9, 141, 280, 23, 69, 1, 0, 1
+87, 18, 253, 272, 19, 54, 1, 0, 1
+87, 41, 222, 277, 20, 52, 1, 0, 1
+87, 48, 206, 273, 19, 54, 1, 0, 1
+87, 49, 162, 280, 16, 40, 1, 0, 1
+87, 57, 337, 257, 11, 34, 1, 0, 1
+87, 61, 472, 262, 52, 28, 1, 2, 1
+87, 82, 540, 244, 17, 14, 1, 2, 1
+87, 91, 51, 282, 23, 67, 1, 0, 1
+88, 1, 442, 295, 69, 56, 1, 2, 1
+88, 3, 554, 297, 110, 124, 1, 2, 1
+88, 4, 836, 287, 36, 95, 1, 0, 1
+88, 7, 107, 275, 27, 74, 1, 0, 1
+88, 8, 852, 266, 18, 45, 1, 0, 1
+88, 9, 136, 281, 24, 68, 1, 0, 1
+88, 18, 253, 271, 20, 54, 1, 0, 1
+88, 41, 219, 276, 21, 54, 1, 0, 1
+88, 48, 203, 272, 20, 57, 1, 0, 1
+88, 49, 157, 280, 18, 46, 1, 0, 1
+88, 55, 372, 257, 14, 28, 1, 0, 1
+88, 57, 334, 257, 12, 35, 1, 0, 1
+88, 61, 472, 263, 50, 27, 1, 2, 1
+88, 82, 538, 244, 18, 14, 1, 2, 1
+88, 91, 46, 282, 24, 72, 1, 0, 1
+88, 97, 188, 282, 16, 40, 1, 0, 1
+89, 1, 441, 296, 69, 56, 1, 2, 1
+89, 3, 552, 297, 112, 126, 1, 2, 1
+89, 4, 838, 291, 35, 93, 1, 0, 1
+89, 7, 104, 275, 28, 75, 1, 0, 1
+89, 8, 851, 266, 19, 44, 1, 0, 1
+89, 9, 134, 283, 23, 66, 1, 0, 1
+89, 18, 250, 271, 21, 56, 1, 0, 1
+89, 41, 215, 277, 22, 57, 1, 0, 1
+89, 48, 199, 274, 20, 55, 1, 0, 1
+89, 49, 153, 283, 17, 44, 1, 0, 1
+89, 55, 371, 257, 13, 29, 1, 0, 1
+89, 57, 332, 257, 12, 35, 1, 0, 1
+89, 61, 470, 264, 48, 26, 1, 2, 1
+89, 82, 537, 245, 18, 14, 1, 2, 1
+89, 91, 43, 282, 24, 68, 1, 0, 1
+89, 97, 184, 283, 16, 40, 1, 0, 1
+90, 1, 440, 297, 69, 56, 1, 2, 1
+90, 3, 551, 300, 112, 127, 1, 2, 1
+90, 4, 840, 292, 35, 94, 1, 0, 1
+90, 7, 101, 276, 28, 76, 1, 0, 1
+90, 8, 851, 267, 18, 43, 1, 0, 1
+90, 9, 130, 282, 24, 70, 1, 0, 1
+90, 18, 248, 272, 20, 57, 1, 0, 1
+90, 41, 211, 279, 22, 57, 1, 0, 1
+90, 48, 195, 274, 21, 59, 1, 0, 1
+90, 49, 150, 286, 16, 40, 1, 0, 1
+90, 55, 368, 259, 13, 27, 1, 0, 1
+90, 57, 330, 261, 10, 32, 1, 0, 1
+90, 61, 467, 264, 49, 28, 1, 2, 1
+90, 82, 536, 248, 16, 12, 1, 2, 1
+90, 91, 39, 283, 25, 71, 1, 0, 1
+90, 97, 181, 285, 16, 40, 1, 0, 1
+91, 1, 437, 297, 70, 57, 1, 2, 1
+91, 3, 550, 303, 112, 126, 1, 2, 1
+91, 4, 841, 297, 35, 92, 1, 0, 1
+91, 7, 98, 277, 27, 76, 1, 0, 1
+91, 8, 851, 269, 17, 39, 1, 0, 1
+91, 9, 127, 283, 24, 70, 1, 0, 1
+91, 18, 246, 273, 20, 57, 1, 0, 1
+91, 41, 208, 280, 22, 57, 1, 0, 1
+91, 48, 192, 280, 20, 56, 1, 0, 1
+91, 49, 147, 286, 16, 41, 1, 0, 1
+91, 55, 366, 259, 13, 27, 1, 0, 1
+91, 56, 73, 278, 24, 73, 1, 0, 1
+91, 57, 328, 260, 11, 32, 1, 0, 1
+91, 61, 464, 264, 49, 27, 1, 2, 1
+91, 82, 535, 249, 16, 12, 1, 2, 1
+91, 91, 34, 284, 26, 72, 1, 0, 1
+91, 97, 177, 286, 16, 39, 1, 0, 1
+92, 1, 436, 298, 70, 57, 1, 2, 1
+92, 3, 548, 304, 113, 128, 1, 2, 1
+92, 4, 843, 299, 35, 93, 1, 0, 1
+92, 7, 93, 277, 29, 79, 1, 0, 1
+92, 8, 851, 270, 17, 37, 1, 0, 1
+92, 9, 124, 283, 25, 71, 1, 0, 1
+92, 18, 238, 280, 19, 54, 1, 0, 1
+92, 41, 205, 282, 21, 57, 1, 0, 1
+92, 48, 189, 278, 21, 60, 1, 0, 1
+92, 55, 364, 261, 12, 26, 1, 0, 1
+92, 56, 70, 278, 24, 73, 1, 0, 1
+92, 57, 326, 259, 12, 35, 1, 0, 1
+92, 61, 461, 264, 48, 28, 1, 2, 1
+92, 82, 532, 249, 17, 12, 1, 2, 1
+92, 85, 794, 256, 14, 38, 1, 0, 1
+92, 91, 31, 285, 25, 71, 1, 0, 1
+92, 97, 174, 287, 16, 39, 1, 0, 1
+92, 101, 757, 259, 12, 30, 1, 0, 1
+93, 1, 433, 300, 70, 56, 1, 2, 1
+93, 3, 544, 302, 116, 132, 1, 2, 1
+93, 4, 844, 302, 35, 92, 1, 0, 1
+93, 7, 90, 279, 28, 78, 1, 0, 1
+93, 8, 850, 271, 17, 38, 1, 0, 1
+93, 9, 121, 287, 24, 68, 1, 0, 1
+93, 18, 237, 278, 19, 55, 1, 0, 1
+93, 41, 201, 282, 22, 58, 1, 0, 1
+93, 48, 185, 279, 21, 61, 1, 0, 1
+93, 49, 137, 288, 17, 44, 1, 0, 1
+93, 55, 361, 261, 13, 28, 1, 0, 1
+93, 57, 324, 259, 12, 36, 1, 0, 1
+93, 61, 459, 265, 48, 27, 1, 2, 1
+93, 82, 530, 249, 19, 13, 1, 2, 1
+93, 85, 794, 257, 15, 39, 1, 0, 1
+93, 91, 27, 287, 25, 69, 1, 0, 1
+93, 97, 169, 290, 16, 40, 1, 0, 1
+93, 101, 756, 260, 12, 30, 1, 0, 1
+94, 1, 431, 301, 69, 55, 1, 2, 1
+94, 3, 542, 303, 118, 133, 1, 2, 1
+94, 4, 845, 303, 36, 93, 1, 0, 1
+94, 7, 86, 281, 29, 78, 1, 0, 1
+94, 8, 849, 272, 19, 40, 1, 0, 1
+94, 9, 117, 288, 25, 70, 1, 0, 1
+94, 18, 229, 283, 20, 54, 1, 0, 1
+94, 41, 198, 287, 21, 54, 1, 0, 1
+94, 48, 185, 279, 22, 63, 1, 0, 1
+94, 49, 134, 289, 17, 44, 1, 0, 1
+94, 55, 359, 261, 13, 29, 1, 0, 1
+94, 56, 68, 285, 21, 64, 1, 0, 1
+94, 57, 321, 261, 12, 36, 1, 0, 1
+94, 61, 458, 266, 46, 27, 1, 2, 1
+94, 82, 529, 249, 19, 14, 1, 2, 1
+94, 85, 790, 258, 14, 38, 1, 0, 1
+94, 91, 22, 289, 25, 68, 1, 0, 1
+94, 97, 165, 291, 16, 41, 1, 0, 1
+94, 101, 753, 261, 12, 29, 1, 0, 1
+95, 1, 430, 302, 68, 55, 1, 2, 1
+95, 3, 541, 307, 117, 131, 1, 2, 1
+95, 4, 846, 305, 36, 93, 1, 0, 1
+95, 7, 83, 283, 28, 77, 1, 0, 1
+95, 8, 848, 272, 18, 42, 1, 0, 1
+95, 9, 112, 289, 26, 71, 1, 0, 1
+95, 18, 224, 284, 20, 55, 1, 0, 1
+95, 41, 195, 289, 21, 54, 1, 0, 1
+95, 48, 179, 279, 22, 64, 1, 0, 1
+95, 55, 357, 261, 13, 29, 1, 0, 1
+95, 56, 57, 287, 21, 68, 1, 0, 1
+95, 57, 319, 260, 13, 39, 1, 0, 1
+95, 61, 457, 266, 45, 27, 1, 2, 1
+95, 82, 528, 249, 19, 14, 1, 2, 1
+95, 85, 786, 259, 14, 38, 1, 0, 1
+95, 91, 18, 288, 26, 71, 1, 0, 1
+95, 97, 161, 292, 17, 42, 1, 0, 1
+95, 101, 751, 261, 13, 31, 1, 0, 1
+96, 1, 427, 303, 69, 55, 1, 2, 1
+96, 3, 539, 307, 118, 133, 1, 2, 1
+96, 4, 848, 305, 37, 94, 1, 0, 1
+96, 7, 80, 285, 28, 77, 1, 0, 1
+96, 8, 846, 273, 20, 44, 1, 0, 1
+96, 9, 109, 291, 25, 70, 1, 0, 1
+96, 18, 221, 284, 20, 56, 1, 0, 1
+96, 41, 191, 289, 21, 55, 1, 0, 1
+96, 48, 175, 283, 21, 60, 1, 0, 1
+96, 55, 355, 262, 13, 30, 1, 0, 1
+96, 56, 53, 288, 21, 67, 1, 0, 1
+96, 57, 317, 261, 13, 39, 1, 0, 1
+96, 61, 456, 267, 42, 26, 1, 2, 1
+96, 85, 784, 260, 13, 37, 1, 0, 1
+96, 91, 14, 291, 26, 71, 1, 0, 1
+96, 97, 158, 293, 16, 41, 1, 0, 1
+96, 101, 749, 261, 13, 32, 1, 0, 1
+97, 1, 424, 303, 70, 55, 1, 2, 1
+97, 3, 538, 310, 116, 131, 1, 2, 1
+97, 4, 849, 305, 37, 95, 1, 0, 1
+97, 7, 78, 286, 27, 75, 1, 0, 1
+97, 8, 845, 272, 21, 48, 1, 0, 1
+97, 9, 106, 291, 25, 70, 1, 0, 1
+97, 18, 221, 282, 21, 57, 1, 0, 1
+97, 41, 187, 287, 22, 58, 1, 0, 1
+97, 48, 170, 279, 23, 66, 1, 0, 1
+97, 55, 354, 263, 13, 29, 1, 0, 1
+97, 56, 49, 289, 22, 67, 1, 0, 1
+97, 57, 314, 267, 12, 33, 1, 0, 1
+97, 61, 453, 268, 42, 25, 1, 2, 1
+97, 82, 524, 250, 21, 15, 1, 2, 1
+97, 85, 783, 260, 13, 37, 1, 0, 1
+97, 91, 11, 286, 28, 78, 1, 0, 1
+97, 97, 153, 290, 18, 47, 1, 0, 1
+97, 101, 748, 261, 13, 31, 1, 0, 1
+97, 108, 554, 300, 75, 22, 1, 2, 1
+98, 1, 421, 303, 70, 57, 1, 2, 1
+98, 3, 536, 312, 117, 131, 1, 2, 1
+98, 4, 851, 306, 38, 96, 1, 0, 1
+98, 7, 75, 288, 27, 73, 1, 0, 1
+98, 8, 843, 273, 22, 49, 1, 0, 1
+98, 9, 101, 290, 27, 74, 1, 0, 1
+98, 18, 220, 283, 21, 55, 1, 0, 1
+98, 41, 183, 288, 23, 58, 1, 0, 1
+98, 48, 166, 278, 22, 66, 1, 0, 1
+98, 55, 352, 263, 13, 30, 1, 0, 1
+98, 56, 45, 290, 19, 60, 1, 0, 1
+98, 57, 312, 267, 12, 34, 1, 0, 1
+98, 61, 451, 268, 42, 26, 1, 2, 1
+98, 82, 522, 250, 21, 15, 1, 2, 1
+98, 85, 781, 260, 14, 36, 1, 0, 1
+98, 91, 7, 286, 29, 79, 1, 0, 1
+98, 97, 149, 293, 17, 44, 1, 0, 1
+98, 101, 746, 261, 13, 31, 1, 0, 1
+98, 108, 553, 299, 77, 23, 1, 2, 1
+99, 1, 419, 303, 70, 56, 1, 2, 1
+99, 3, 534, 312, 119, 133, 1, 2, 1
+99, 4, 853, 307, 38, 98, 1, 0, 1
+99, 7, 70, 287, 28, 75, 1, 0, 1
+99, 8, 842, 274, 21, 49, 1, 0, 1
+99, 9, 98, 290, 26, 73, 1, 0, 1
+99, 18, 212, 282, 21, 58, 1, 0, 1
+99, 41, 179, 287, 23, 60, 1, 0, 1
+99, 48, 161, 284, 21, 61, 1, 0, 1
+99, 56, 42, 291, 19, 59, 1, 0, 1
+99, 57, 308, 264, 13, 37, 1, 0, 1
+99, 61, 450, 268, 40, 26, 1, 2, 1
+99, 82, 520, 250, 21, 16, 1, 2, 1
+99, 85, 780, 259, 14, 39, 1, 0, 1
+99, 91, 3, 287, 30, 79, 1, 0, 1
+99, 97, 144, 294, 18, 45, 1, 0, 1
+99, 101, 745, 261, 13, 32, 1, 0, 1
+99, 108, 551, 300, 78, 23, 1, 2, 1
+100, 1, 416, 304, 71, 56, 1, 2, 1
+100, 3, 532, 313, 120, 135, 1, 2, 1
+100, 4, 854, 307, 39, 99, 1, 0, 1
+100, 7, 66, 290, 27, 74, 1, 0, 1
+100, 8, 842, 274, 21, 50, 1, 0, 1
+100, 9, 94, 291, 26, 72, 1, 0, 1
+100, 18, 206, 280, 22, 63, 1, 0, 1
+100, 41, 175, 289, 23, 59, 1, 0, 1
+100, 48, 158, 280, 22, 67, 1, 0, 1
+100, 55, 347, 264, 13, 29, 1, 0, 1
+100, 57, 306, 263, 13, 39, 1, 0, 1
+100, 61, 448, 268, 41, 26, 1, 2, 1
+100, 82, 519, 250, 21, 15, 1, 2, 1
+100, 85, 778, 259, 14, 41, 1, 0, 1
+100, 97, 140, 294, 18, 47, 1, 0, 1
+100, 101, 743, 262, 13, 31, 1, 0, 1
+100, 108, 548, 300, 77, 23, 1, 2, 1
+101, 1, 415, 304, 69, 56, 1, 2, 1
+101, 3, 529, 314, 122, 137, 1, 2, 1
+101, 4, 855, 308, 39, 101, 1, 0, 1
+101, 7, 61, 288, 28, 75, 1, 0, 1
+101, 8, 842, 275, 21, 51, 1, 0, 1
+101, 9, 90, 289, 27, 74, 1, 0, 1
+101, 18, 200, 281, 22, 64, 1, 0, 1
+101, 41, 171, 288, 24, 60, 1, 0, 1
+101, 48, 154, 288, 20, 58, 1, 0, 1
+101, 55, 344, 263, 13, 30, 1, 0, 1
+101, 57, 303, 264, 14, 39, 1, 0, 1
+101, 61, 446, 268, 40, 26, 1, 2, 1
+101, 82, 518, 251, 19, 14, 1, 2, 1
+101, 85, 776, 259, 14, 42, 1, 0, 1
+101, 97, 135, 295, 18, 45, 1, 0, 1
+101, 101, 741, 262, 13, 32, 1, 0, 1
+101, 108, 543, 300, 83, 26, 1, 2, 1
+102, 1, 412, 305, 70, 55, 1, 2, 1
+102, 3, 527, 316, 121, 137, 1, 2, 1
+102, 4, 856, 308, 40, 102, 1, 0, 1
+102, 7, 57, 290, 27, 73, 1, 0, 1
+102, 8, 841, 275, 21, 52, 1, 0, 1
+102, 9, 85, 289, 28, 75, 1, 0, 1
+102, 18, 196, 284, 22, 63, 1, 0, 1
+102, 41, 166, 287, 24, 62, 1, 0, 1
+102, 48, 150, 287, 20, 60, 1, 0, 1
+102, 55, 342, 264, 13, 29, 1, 0, 1
+102, 61, 445, 268, 39, 26, 1, 2, 1
+102, 82, 516, 252, 19, 14, 1, 2, 1
+102, 85, 773, 258, 15, 42, 1, 0, 1
+102, 97, 131, 294, 18, 47, 1, 0, 1
+102, 101, 740, 262, 13, 31, 1, 0, 1
+102, 108, 540, 301, 85, 25, 1, 2, 1
+102, 114, 213, 282, 18, 50, 1, 0, 1
+103, 1, 409, 304, 71, 57, 1, 2, 1
+103, 3, 525, 314, 123, 140, 1, 2, 1
+103, 4, 857, 308, 41, 104, 1, 0, 1
+103, 7, 52, 290, 28, 74, 1, 0, 1
+103, 8, 840, 274, 21, 54, 1, 0, 1
+103, 9, 81, 291, 27, 74, 1, 0, 1
+103, 18, 192, 282, 24, 67, 1, 0, 1
+103, 41, 163, 288, 24, 61, 1, 0, 1
+103, 48, 146, 282, 22, 66, 1, 0, 1
+103, 55, 340, 264, 13, 29, 1, 0, 1
+103, 57, 300, 264, 13, 38, 1, 0, 1
+103, 61, 443, 268, 39, 26, 1, 2, 1
+103, 82, 514, 251, 19, 15, 1, 2, 1
+103, 85, 771, 258, 14, 43, 1, 0, 1
+103, 97, 127, 295, 18, 47, 1, 0, 1
+103, 101, 737, 261, 13, 32, 1, 0, 1
+103, 108, 539, 300, 83, 26, 1, 2, 1
+103, 114, 210, 281, 18, 52, 1, 0, 1
+104, 1, 407, 304, 71, 57, 1, 2, 1
+104, 3, 522, 314, 124, 141, 1, 2, 1
+104, 4, 858, 311, 41, 104, 1, 0, 1
+104, 7, 49, 290, 27, 74, 1, 0, 1
+104, 8, 839, 275, 21, 53, 1, 0, 1
+104, 9, 77, 292, 27, 73, 1, 0, 1
+104, 18, 188, 285, 22, 65, 1, 0, 1
+104, 41, 158, 288, 24, 62, 1, 0, 1
+104, 48, 142, 288, 19, 59, 1, 0, 1
+104, 55, 338, 264, 13, 30, 1, 0, 1
+104, 56, 20, 290, 21, 69, 1, 0, 1
+104, 57, 297, 263, 13, 38, 1, 0, 1
+104, 61, 442, 267, 37, 26, 1, 2, 1
+104, 82, 513, 251, 20, 15, 1, 2, 1
+104, 85, 770, 259, 14, 41, 1, 0, 1
+104, 97, 122, 295, 18, 46, 1, 0, 1
+104, 101, 735, 262, 13, 32, 1, 0, 1
+104, 108, 538, 300, 83, 26, 1, 2, 1
+104, 114, 207, 281, 18, 51, 1, 0, 1
+105, 1, 405, 304, 71, 56, 1, 2, 1
+105, 3, 521, 317, 123, 139, 1, 2, 1
+105, 4, 860, 311, 42, 106, 1, 0, 1
+105, 7, 43, 290, 27, 74, 1, 0, 1
+105, 8, 838, 276, 21, 52, 1, 0, 1
+105, 9, 72, 293, 27, 73, 1, 0, 1
+105, 18, 184, 284, 23, 65, 1, 0, 1
+105, 41, 153, 287, 25, 63, 1, 0, 1
+105, 48, 137, 289, 19, 59, 1, 0, 1
+105, 55, 335, 263, 14, 31, 1, 0, 1
+105, 56, 15, 288, 22, 69, 1, 0, 1
+105, 57, 294, 264, 14, 37, 1, 0, 1
+105, 61, 440, 267, 37, 25, 1, 2, 1
+105, 82, 511, 251, 20, 15, 1, 2, 1
+105, 85, 769, 259, 13, 40, 1, 0, 1
+105, 97, 119, 297, 17, 45, 1, 0, 1
+105, 101, 734, 264, 12, 30, 1, 0, 1
+105, 108, 536, 301, 84, 26, 1, 2, 1
+105, 114, 203, 281, 18, 51, 1, 0, 1
+105, 118, 324, 262, 12, 32, 1, 0, 1
+106, 1, 403, 304, 70, 55, 1, 2, 1
+106, 3, 519, 318, 123, 139, 1, 2, 1
+106, 4, 861, 311, 42, 108, 1, 0, 1
+106, 7, 38, 288, 28, 77, 1, 0, 1
+106, 8, 838, 276, 20, 52, 1, 0, 1
+106, 9, 67, 289, 29, 76, 1, 0, 1
+106, 18, 179, 283, 22, 66, 1, 0, 1
+106, 41, 147, 284, 27, 68, 1, 0, 1
+106, 48, 132, 293, 18, 55, 1, 0, 1
+106, 55, 333, 262, 13, 32, 1, 0, 1
+106, 56, 8, 287, 23, 69, 1, 0, 1
+106, 57, 292, 263, 14, 37, 1, 0, 1
+106, 61, 438, 266, 37, 26, 1, 2, 1
+106, 82, 510, 251, 19, 15, 1, 2, 1
+106, 85, 767, 259, 14, 40, 1, 0, 1
+106, 97, 115, 296, 17, 45, 1, 0, 1
+106, 101, 732, 264, 13, 31, 1, 0, 1
+106, 108, 533, 301, 83, 26, 1, 2, 1
+106, 114, 200, 281, 17, 50, 1, 0, 1
+106, 118, 322, 262, 12, 32, 1, 0, 1
+107, 1, 401, 303, 70, 56, 1, 2, 1
+107, 3, 517, 319, 124, 140, 1, 2, 1
+107, 4, 861, 310, 43, 110, 1, 0, 1
+107, 7, 33, 287, 29, 77, 1, 0, 1
+107, 8, 837, 275, 19, 51, 1, 0, 1
+107, 9, 62, 287, 30, 78, 1, 0, 1
+107, 18, 175, 284, 22, 66, 1, 0, 1
+107, 41, 144, 287, 26, 64, 1, 0, 1
+107, 48, 128, 294, 18, 55, 1, 0, 1
+107, 55, 331, 262, 13, 31, 1, 0, 1
+107, 56, 4, 287, 23, 71, 1, 0, 1
+107, 57, 290, 263, 14, 38, 1, 0, 1
+107, 61, 437, 266, 35, 25, 1, 2, 1
+107, 82, 507, 250, 21, 16, 1, 2, 1
+107, 85, 767, 258, 14, 40, 1, 0, 1
+107, 97, 110, 296, 17, 45, 1, 0, 1
+107, 101, 730, 265, 12, 28, 1, 0, 1
+107, 108, 527, 300, 88, 28, 1, 2, 1
+107, 114, 197, 281, 17, 50, 1, 0, 1
+107, 118, 319, 261, 12, 32, 1, 0, 1
+108, 1, 398, 303, 71, 56, 1, 2, 1
+108, 3, 514, 318, 126, 143, 1, 2, 1
+108, 4, 862, 311, 43, 111, 1, 0, 1
+108, 7, 28, 286, 29, 77, 1, 0, 1
+108, 8, 836, 275, 19, 51, 1, 0, 1
+108, 9, 59, 287, 29, 79, 1, 0, 1
+108, 18, 170, 282, 22, 68, 1, 0, 1
+108, 41, 138, 282, 28, 70, 1, 0, 1
+108, 48, 124, 286, 21, 63, 1, 0, 1
+108, 55, 329, 263, 13, 30, 1, 0, 1
+108, 56, 0, 287, 24, 71, 1, 0, 1
+108, 61, 435, 266, 35, 25, 1, 2, 1
+108, 82, 506, 249, 20, 16, 1, 2, 1
+108, 85, 765, 259, 13, 38, 1, 0, 1
+108, 97, 105, 294, 18, 48, 1, 0, 1
+108, 101, 729, 265, 12, 29, 1, 0, 1
+108, 108, 519, 300, 97, 32, 1, 2, 1
+108, 114, 193, 280, 18, 51, 1, 0, 1
+108, 118, 317, 261, 11, 31, 1, 0, 1
+109, 1, 396, 303, 71, 56, 1, 2, 1
+109, 3, 511, 319, 127, 143, 1, 2, 1
+109, 4, 863, 311, 44, 113, 1, 0, 1
+109, 7, 23, 286, 29, 77, 1, 0, 1
+109, 8, 834, 275, 20, 52, 1, 0, 1
+109, 9, 55, 288, 29, 79, 1, 0, 1
+109, 18, 166, 280, 23, 72, 1, 0, 1
+109, 41, 135, 287, 25, 64, 1, 0, 1
+109, 48, 119, 290, 20, 62, 1, 0, 1
+109, 55, 326, 262, 13, 31, 1, 0, 1
+109, 56, 0, 287, 21, 73, 1, 0, 1
+109, 57, 287, 261, 14, 39, 1, 0, 1
+109, 61, 432, 266, 37, 25, 1, 2, 1
+109, 82, 505, 251, 19, 14, 1, 2, 1
+109, 85, 763, 259, 13, 37, 1, 0, 1
+109, 97, 99, 294, 19, 51, 1, 0, 1
+109, 101, 727, 265, 12, 29, 1, 0, 1
+109, 108, 522, 301, 88, 28, 1, 2, 1
+109, 114, 190, 280, 17, 52, 1, 0, 1
+109, 118, 315, 262, 11, 30, 1, 0, 1
+110, 1, 394, 302, 70, 56, 1, 2, 1
+110, 3, 509, 320, 128, 145, 1, 2, 1
+110, 4, 864, 312, 45, 115, 1, 0, 1
+110, 7, 17, 284, 31, 80, 1, 0, 1
+110, 8, 834, 277, 19, 52, 1, 0, 1
+110, 9, 50, 289, 30, 78, 1, 0, 1
+110, 18, 162, 282, 23, 70, 1, 0, 1
+110, 41, 131, 287, 25, 65, 1, 0, 1
+110, 48, 114, 293, 19, 57, 1, 0, 1
+110, 55, 324, 262, 13, 31, 1, 0, 1
+110, 56, 0, 284, 19, 75, 1, 0, 1
+110, 57, 285, 261, 14, 39, 1, 0, 1
+110, 61, 430, 265, 37, 26, 1, 2, 1
+110, 82, 503, 251, 19, 14, 1, 2, 1
+110, 85, 762, 260, 13, 37, 1, 0, 1
+110, 97, 95, 295, 19, 50, 1, 0, 1
+110, 108, 521, 301, 87, 28, 1, 2, 1
+110, 114, 186, 279, 18, 53, 1, 0, 1
+110, 118, 313, 261, 11, 31, 1, 0, 1
+111, 1, 391, 302, 71, 55, 1, 2, 1
+111, 3, 506, 320, 130, 147, 1, 2, 1
+111, 4, 865, 312, 45, 116, 1, 0, 1
+111, 7, 11, 283, 32, 83, 1, 0, 1
+111, 8, 832, 277, 19, 52, 1, 0, 1
+111, 9, 46, 289, 29, 79, 1, 0, 1
+111, 18, 158, 282, 23, 71, 1, 0, 1
+111, 41, 127, 290, 24, 61, 1, 0, 1
+111, 48, 108, 293, 19, 58, 1, 0, 1
+111, 55, 321, 262, 13, 31, 1, 0, 1
+111, 56, 0, 284, 15, 75, 1, 0, 1
+111, 61, 429, 264, 35, 26, 1, 2, 1
+111, 82, 501, 250, 20, 15, 1, 2, 1
+111, 85, 760, 259, 13, 37, 1, 0, 1
+111, 97, 90, 295, 19, 50, 1, 0, 1
+111, 108, 517, 301, 87, 28, 1, 2, 1
+111, 114, 181, 277, 19, 57, 1, 0, 1
+111, 118, 313, 261, 11, 32, 1, 0, 1
+112, 1, 390, 303, 71, 56, 1, 2, 1
+112, 3, 502, 321, 131, 147, 1, 2, 1
+112, 4, 866, 314, 44, 115, 1, 0, 1
+112, 7, 6, 284, 32, 82, 1, 0, 1
+112, 8, 831, 277, 19, 52, 1, 0, 1
+112, 9, 42, 289, 30, 79, 1, 0, 1
+112, 18, 153, 284, 22, 69, 1, 0, 1
+112, 41, 122, 289, 24, 63, 1, 0, 1
+112, 48, 103, 294, 18, 57, 1, 0, 1
+112, 55, 318, 262, 13, 31, 1, 0, 1
+112, 61, 426, 264, 37, 26, 1, 2, 1
+112, 82, 499, 250, 21, 16, 1, 2, 1
+112, 85, 758, 261, 13, 35, 1, 0, 1
+112, 97, 85, 296, 18, 49, 1, 0, 1
+112, 108, 512, 302, 93, 30, 1, 2, 1
+112, 114, 178, 279, 19, 55, 1, 0, 1
+112, 118, 311, 261, 12, 32, 1, 0, 1
+113, 1, 387, 303, 71, 56, 1, 2, 1
+113, 3, 500, 321, 131, 148, 1, 2, 1
+113, 4, 867, 316, 44, 114, 1, 0, 1
+113, 7, 1, 283, 32, 83, 1, 0, 1
+113, 9, 36, 288, 29, 80, 1, 0, 1
+113, 18, 148, 285, 22, 68, 1, 0, 1
+113, 41, 116, 287, 26, 66, 1, 0, 1
+113, 48, 96, 296, 19, 55, 1, 0, 1
+113, 55, 316, 262, 13, 31, 1, 0, 1
+113, 57, 277, 260, 14, 37, 1, 0, 1
+113, 61, 424, 264, 37, 26, 1, 2, 1
+113, 82, 498, 252, 19, 14, 1, 2, 1
+113, 85, 756, 262, 13, 34, 1, 0, 1
+113, 97, 80, 296, 18, 52, 1, 0, 1
+113, 108, 498, 303, 115, 38, 1, 2, 1
+113, 114, 175, 280, 18, 54, 1, 0, 1
+113, 118, 306, 261, 12, 32, 1, 0, 1
+114, 1, 385, 304, 71, 55, 1, 2, 1
+114, 3, 497, 322, 133, 149, 1, 2, 1
+114, 4, 869, 317, 43, 114, 1, 0, 1
+114, 7, 0, 284, 30, 82, 1, 0, 1
+114, 9, 30, 286, 31, 82, 1, 0, 1
+114, 18, 144, 286, 21, 68, 1, 0, 1
+114, 41, 110, 287, 26, 68, 1, 0, 1
+114, 48, 92, 296, 18, 56, 1, 0, 1
+114, 55, 313, 262, 13, 31, 1, 0, 1
+114, 57, 275, 260, 13, 37, 1, 0, 1
+114, 61, 423, 265, 34, 25, 1, 2, 1
+114, 82, 496, 251, 19, 15, 1, 2, 1
+114, 85, 755, 263, 13, 33, 1, 0, 1
+114, 97, 74, 297, 19, 51, 1, 0, 1
+114, 108, 489, 302, 129, 45, 1, 2, 1
+114, 114, 170, 280, 18, 55, 1, 0, 1
+114, 118, 302, 262, 12, 31, 1, 0, 1
+115, 1, 382, 303, 71, 56, 1, 2, 1
+115, 3, 494, 321, 134, 152, 1, 2, 1
+115, 4, 869, 318, 45, 115, 1, 0, 1
+115, 7, 0, 283, 28, 85, 1, 0, 1
+115, 9, 25, 288, 30, 81, 1, 0, 1
+115, 18, 139, 288, 21, 67, 1, 0, 1
+115, 41, 105, 290, 26, 65, 1, 0, 1
+115, 55, 311, 262, 13, 31, 1, 0, 1
+115, 61, 420, 263, 36, 26, 1, 2, 1
+115, 82, 494, 252, 19, 14, 1, 2, 1
+115, 85, 754, 262, 12, 33, 1, 0, 1
+115, 97, 70, 297, 19, 51, 1, 0, 1
+115, 108, 501, 302, 102, 35, 1, 2, 1
+115, 114, 166, 282, 19, 54, 1, 0, 1
+115, 118, 300, 262, 12, 31, 1, 0, 1
+116, 1, 379, 303, 71, 55, 1, 2, 1
+116, 3, 491, 321, 136, 153, 1, 2, 1
+116, 4, 871, 319, 44, 115, 1, 0, 1
+116, 7, 0, 289, 23, 79, 1, 0, 1
+116, 9, 20, 285, 31, 86, 1, 0, 1
+116, 18, 133, 289, 21, 68, 1, 0, 1
+116, 41, 99, 291, 26, 65, 1, 0, 1
+116, 48, 88, 285, 22, 66, 1, 0, 1
+116, 55, 309, 262, 13, 31, 1, 0, 1
+116, 61, 419, 265, 34, 25, 1, 2, 1
+116, 82, 492, 252, 19, 14, 1, 2, 1
+116, 85, 752, 262, 13, 34, 1, 0, 1
+116, 97, 65, 299, 19, 52, 1, 0, 1
+116, 108, 495, 302, 106, 37, 1, 2, 1
+116, 114, 163, 282, 18, 53, 1, 0, 1
+117, 1, 376, 303, 72, 55, 1, 2, 1
+117, 3, 488, 322, 136, 153, 1, 2, 1
+117, 4, 872, 320, 45, 117, 1, 0, 1
+117, 7, 0, 290, 22, 80, 1, 0, 1
+117, 9, 15, 288, 31, 82, 1, 0, 1
+117, 18, 128, 289, 21, 68, 1, 0, 1
+117, 41, 94, 288, 27, 71, 1, 0, 1
+117, 48, 80, 292, 19, 61, 1, 0, 1
+117, 55, 304, 262, 14, 31, 1, 0, 1
+117, 61, 417, 266, 33, 23, 1, 2, 1
+117, 82, 490, 252, 20, 15, 1, 2, 1
+117, 85, 751, 262, 12, 34, 1, 0, 1
+117, 97, 60, 299, 18, 53, 1, 0, 1
+117, 108, 492, 303, 106, 37, 1, 2, 1
+117, 114, 157, 279, 20, 58, 1, 0, 1
+118, 1, 372, 302, 73, 56, 1, 2, 1
+118, 3, 485, 323, 136, 153, 1, 2, 1
+118, 4, 872, 320, 46, 119, 1, 0, 1
+118, 7, 0, 294, 19, 77, 1, 0, 1
+118, 9, 10, 287, 31, 84, 1, 0, 1
+118, 18, 123, 288, 21, 71, 1, 0, 1
+118, 41, 88, 290, 28, 70, 1, 0, 1
+118, 48, 73, 297, 18, 58, 1, 0, 1
+118, 55, 301, 261, 14, 33, 1, 0, 1
+118, 57, 264, 261, 13, 36, 1, 0, 1
+118, 61, 415, 265, 33, 24, 1, 2, 1
+118, 82, 488, 252, 20, 15, 1, 2, 1
+118, 85, 743, 261, 12, 32, 1, 0, 1
+118, 97, 54, 299, 19, 53, 1, 0, 1
+118, 108, 484, 302, 116, 43, 1, 2, 1
+118, 114, 154, 280, 19, 58, 1, 0, 1
+119, 1, 369, 302, 74, 57, 1, 2, 1
+119, 3, 482, 323, 137, 154, 1, 2, 1
+119, 4, 873, 321, 46, 119, 1, 0, 1
+119, 7, 0, 295, 15, 77, 1, 0, 1
+119, 9, 5, 287, 32, 86, 1, 0, 1
+119, 18, 118, 288, 22, 73, 1, 0, 1
+119, 41, 83, 291, 29, 74, 1, 0, 1
+119, 48, 65, 299, 19, 59, 1, 0, 1
+119, 55, 297, 261, 15, 33, 1, 0, 1
+119, 57, 262, 261, 13, 36, 1, 0, 1
+119, 61, 413, 265, 33, 24, 1, 2, 1
+119, 82, 487, 252, 18, 15, 1, 2, 1
+119, 85, 741, 261, 12, 31, 1, 0, 1
+119, 97, 50, 301, 18, 51, 1, 0, 1
+119, 108, 485, 302, 109, 40, 1, 2, 1
+119, 114, 150, 281, 19, 57, 1, 0, 1
+120, 1, 367, 302, 73, 57, 1, 2, 1
+120, 3, 478, 324, 138, 155, 1, 2, 1
+120, 4, 873, 322, 47, 119, 1, 0, 1
+120, 9, 0, 286, 32, 89, 1, 0, 1
+120, 18, 112, 289, 22, 74, 1, 0, 1
+120, 41, 77, 291, 29, 76, 1, 0, 1
+120, 48, 58, 299, 20, 62, 1, 0, 1
+120, 55, 295, 262, 15, 32, 1, 0, 1
+120, 57, 260, 262, 12, 33, 1, 0, 1
+120, 61, 411, 265, 33, 24, 1, 2, 1
+120, 82, 484, 252, 19, 14, 1, 2, 1
+120, 97, 43, 301, 20, 54, 1, 0, 1
+120, 108, 486, 302, 101, 38, 1, 2, 1
+120, 114, 145, 279, 21, 61, 1, 0, 1
+121, 1, 364, 301, 75, 58, 1, 2, 1
+121, 3, 475, 323, 139, 156, 1, 2, 1
+121, 4, 876, 324, 47, 120, 1, 0, 1
+121, 9, 0, 279, 29, 96, 1, 0, 1
+121, 18, 107, 288, 23, 77, 1, 0, 1
+121, 41, 73, 294, 27, 72, 1, 0, 1
+121, 48, 52, 300, 20, 63, 1, 0, 1
+121, 55, 292, 262, 14, 32, 1, 0, 1
+121, 57, 257, 262, 12, 33, 1, 0, 1
+121, 61, 408, 264, 34, 24, 1, 2, 1
+121, 82, 482, 252, 19, 14, 1, 2, 1
+121, 85, 738, 261, 13, 33, 1, 0, 1
+121, 97, 38, 301, 18, 54, 1, 0, 1
+121, 108, 487, 302, 95, 35, 1, 2, 1
+121, 114, 141, 279, 21, 61, 1, 0, 1
+122, 1, 360, 300, 77, 59, 1, 2, 1
+122, 3, 473, 322, 139, 157, 1, 2, 1
+122, 4, 877, 324, 48, 122, 1, 0, 1
+122, 9, 0, 279, 26, 97, 1, 0, 1
+122, 18, 102, 289, 23, 75, 1, 0, 1
+122, 41, 68, 295, 27, 71, 1, 0, 1
+122, 48, 47, 301, 20, 63, 1, 0, 1
+122, 55, 289, 262, 15, 32, 1, 0, 1
+122, 57, 254, 262, 12, 34, 1, 0, 1
+122, 61, 406, 264, 33, 23, 1, 2, 1
+122, 82, 481, 252, 18, 14, 1, 2, 1
+122, 85, 733, 260, 13, 32, 1, 0, 1
+122, 97, 32, 302, 19, 55, 1, 0, 1
+122, 108, 488, 301, 87, 33, 1, 2, 1
+122, 114, 136, 278, 22, 63, 1, 0, 1
+123, 1, 358, 300, 77, 60, 1, 2, 1
+123, 3, 471, 322, 139, 158, 1, 2, 1
+123, 4, 879, 323, 49, 127, 1, 0, 1
+123, 9, 0, 282, 23, 96, 1, 0, 1
+123, 18, 97, 288, 23, 78, 1, 0, 1
+123, 41, 63, 297, 27, 69, 1, 0, 1
+123, 48, 40, 302, 20, 63, 1, 0, 1
+123, 55, 286, 262, 15, 33, 1, 0, 1
+123, 57, 251, 262, 12, 33, 1, 0, 1
+123, 61, 404, 264, 33, 24, 1, 2, 1
+123, 82, 479, 252, 19, 13, 1, 2, 1
+123, 85, 730, 260, 12, 31, 1, 0, 1
+123, 97, 27, 303, 18, 55, 1, 0, 1
+123, 108, 488, 301, 85, 32, 1, 2, 1
+123, 114, 132, 277, 23, 66, 1, 0, 1
+124, 1, 357, 301, 75, 58, 1, 2, 1
+124, 3, 467, 322, 140, 159, 1, 2, 1
+124, 4, 881, 323, 50, 128, 1, 0, 1
+124, 9, 0, 290, 19, 88, 1, 0, 1
+124, 18, 92, 292, 23, 77, 1, 0, 1
+124, 41, 58, 298, 27, 70, 1, 0, 1
+124, 48, 35, 304, 19, 61, 1, 0, 1
+124, 55, 282, 261, 17, 35, 1, 0, 1
+124, 57, 248, 262, 11, 33, 1, 0, 1
+124, 61, 402, 264, 33, 23, 1, 2, 1
+124, 82, 477, 252, 19, 14, 1, 2, 1
+124, 85, 727, 260, 13, 31, 1, 0, 1
+124, 97, 21, 303, 19, 56, 1, 0, 1
+124, 108, 488, 300, 81, 30, 1, 2, 1
+124, 114, 128, 278, 22, 65, 1, 0, 1
+125, 1, 355, 300, 75, 59, 1, 2, 1
+125, 3, 464, 322, 141, 160, 1, 2, 1
+125, 4, 883, 323, 50, 130, 1, 0, 1
+125, 7, 0, 308, 13, 53, 1, 0, 1
+125, 9, 0, 291, 15, 88, 1, 0, 1
+125, 18, 87, 292, 23, 77, 1, 0, 1
+125, 41, 53, 302, 26, 69, 1, 0, 1
+125, 48, 29, 306, 20, 63, 1, 0, 1
+125, 55, 279, 261, 17, 35, 1, 0, 1
+125, 57, 246, 262, 11, 31, 1, 0, 1
+125, 61, 401, 264, 32, 23, 1, 2, 1
+125, 82, 475, 253, 19, 14, 1, 2, 1
+125, 85, 725, 260, 13, 32, 1, 0, 1
+125, 97, 16, 306, 18, 55, 1, 0, 1
+125, 108, 484, 301, 80, 29, 1, 2, 1
+125, 114, 124, 278, 22, 65, 1, 0, 1
+126, 1, 352, 301, 75, 58, 1, 2, 1
+126, 3, 460, 322, 143, 163, 1, 2, 1
+126, 4, 884, 325, 51, 130, 1, 0, 1
+126, 7, 0, 310, 11, 51, 1, 0, 1
+126, 18, 82, 292, 24, 78, 1, 0, 1
+126, 41, 48, 304, 26, 68, 1, 0, 1
+126, 48, 24, 306, 20, 65, 1, 0, 1
+126, 55, 277, 262, 16, 34, 1, 0, 1
+126, 57, 244, 263, 11, 31, 1, 0, 1
+126, 61, 399, 264, 32, 23, 1, 2, 1
+126, 82, 473, 253, 19, 14, 1, 2, 1
+126, 85, 723, 260, 13, 33, 1, 0, 1
+126, 97, 12, 307, 18, 56, 1, 0, 1
+126, 101, 703, 263, 13, 32, 1, 0, 1
+126, 108, 479, 301, 83, 30, 1, 2, 1
+126, 114, 119, 279, 23, 67, 1, 0, 1
+127, 1, 350, 301, 74, 57, 1, 2, 1
+127, 3, 457, 321, 144, 165, 1, 2, 1
+127, 4, 887, 325, 51, 131, 1, 0, 1
+127, 18, 76, 294, 24, 78, 1, 0, 1
+127, 41, 41, 304, 28, 71, 1, 0, 1
+127, 48, 17, 308, 20, 62, 1, 0, 1
+127, 55, 275, 262, 17, 35, 1, 0, 1
+127, 57, 240, 262, 12, 31, 1, 0, 1
+127, 61, 397, 264, 32, 23, 1, 2, 1
+127, 82, 471, 253, 19, 14, 1, 2, 1
+127, 85, 720, 260, 13, 33, 1, 0, 1
+127, 97, 3, 309, 18, 53, 1, 0, 1
+127, 101, 701, 262, 14, 33, 1, 0, 1
+127, 108, 472, 301, 92, 34, 1, 2, 1
+127, 114, 116, 279, 23, 68, 1, 0, 1
+128, 1, 347, 301, 75, 58, 1, 2, 1
+128, 3, 452, 319, 146, 168, 1, 2, 1
+128, 4, 890, 323, 53, 137, 1, 0, 1
+128, 18, 71, 295, 24, 78, 1, 0, 1
+128, 41, 36, 304, 27, 71, 1, 0, 1
+128, 48, 11, 308, 20, 64, 1, 0, 1
+128, 55, 272, 261, 17, 35, 1, 0, 1
+128, 57, 237, 264, 11, 29, 1, 0, 1
+128, 61, 395, 265, 32, 23, 1, 2, 1
+128, 82, 470, 253, 19, 14, 1, 2, 1
+128, 85, 718, 260, 13, 33, 1, 0, 1
+128, 97, 0, 309, 16, 53, 1, 0, 1
+128, 108, 468, 301, 95, 35, 1, 2, 1
+128, 114, 112, 279, 23, 69, 1, 0, 1
+129, 1, 345, 302, 74, 57, 1, 2, 1
+129, 3, 451, 319, 146, 169, 1, 2, 1
+129, 4, 892, 324, 54, 140, 1, 0, 1
+129, 18, 65, 297, 25, 78, 1, 0, 1
+129, 41, 29, 303, 30, 75, 1, 0, 1
+129, 48, 4, 309, 21, 63, 1, 0, 1
+129, 55, 270, 262, 17, 35, 1, 0, 1
+129, 57, 235, 264, 11, 30, 1, 0, 1
+129, 61, 393, 265, 31, 22, 1, 2, 1
+129, 82, 468, 252, 19, 15, 1, 2, 1
+129, 85, 716, 260, 13, 32, 1, 0, 1
+129, 97, 0, 310, 11, 53, 1, 0, 1
+129, 108, 459, 301, 105, 39, 1, 2, 1
+129, 114, 108, 278, 23, 71, 1, 0, 1
+130, 1, 343, 303, 73, 56, 1, 2, 1
+130, 3, 448, 320, 148, 171, 1, 2, 1
+130, 4, 894, 324, 56, 144, 1, 0, 1
+130, 18, 61, 299, 24, 77, 1, 0, 1
+130, 41, 23, 302, 30, 77, 1, 0, 1
+130, 48, 0, 308, 21, 67, 1, 0, 1
+130, 55, 267, 263, 17, 34, 1, 0, 1
+130, 57, 231, 264, 12, 31, 1, 0, 1
+130, 61, 390, 264, 33, 23, 1, 2, 1
+130, 82, 465, 252, 20, 16, 1, 2, 1
+130, 85, 714, 260, 13, 33, 1, 0, 1
+130, 108, 462, 301, 96, 37, 1, 2, 1
+130, 114, 104, 279, 22, 71, 1, 0, 1
+131, 1, 340, 303, 72, 55, 1, 2, 1
+131, 3, 446, 325, 145, 166, 1, 2, 1
+131, 4, 897, 326, 55, 143, 1, 0, 1
+131, 18, 54, 299, 25, 78, 1, 0, 1
+131, 41, 18, 301, 30, 77, 1, 0, 1
+131, 48, 0, 309, 15, 67, 1, 0, 1
+131, 55, 265, 262, 16, 35, 1, 0, 1
+131, 57, 229, 264, 11, 30, 1, 0, 1
+131, 61, 389, 265, 31, 22, 1, 2, 1
+131, 82, 463, 253, 20, 15, 1, 2, 1
+131, 85, 712, 260, 13, 34, 1, 0, 1
+131, 101, 695, 262, 14, 33, 1, 0, 1
+131, 108, 456, 301, 103, 40, 1, 2, 1
+131, 114, 99, 281, 22, 69, 1, 0, 1
+132, 1, 338, 303, 71, 54, 1, 2, 1
+132, 3, 443, 326, 145, 165, 1, 2, 1
+132, 4, 899, 329, 56, 143, 1, 0, 1
+132, 18, 47, 299, 25, 80, 1, 0, 1
+132, 41, 13, 306, 28, 72, 1, 0, 1
+132, 48, 0, 302, 16, 74, 1, 0, 1
+132, 55, 262, 262, 17, 35, 1, 0, 1
+132, 57, 226, 264, 11, 29, 1, 0, 1
+132, 61, 387, 264, 31, 23, 1, 2, 1
+132, 82, 461, 254, 18, 13, 1, 2, 1
+132, 85, 710, 260, 13, 34, 1, 0, 1
+132, 101, 693, 262, 14, 33, 1, 0, 1
+132, 108, 451, 300, 107, 42, 1, 2, 1
+132, 114, 95, 282, 22, 69, 1, 0, 1
+133, 1, 335, 302, 71, 55, 1, 2, 1
+133, 3, 441, 327, 145, 166, 1, 2, 1
+133, 4, 902, 330, 56, 147, 1, 0, 1
+133, 18, 40, 300, 25, 80, 1, 0, 1
+133, 41, 6, 305, 30, 75, 1, 0, 1
+133, 48, 0, 300, 16, 78, 1, 0, 1
+133, 55, 260, 262, 17, 36, 1, 0, 1
+133, 57, 224, 265, 11, 29, 1, 0, 1
+133, 61, 385, 263, 31, 23, 1, 2, 1
+133, 82, 459, 254, 19, 14, 1, 2, 1
+133, 85, 707, 261, 13, 33, 1, 0, 1
+133, 108, 449, 300, 106, 43, 1, 2, 1
+133, 114, 91, 283, 22, 67, 1, 0, 1
+134, 1, 333, 303, 71, 53, 1, 2, 1
+134, 3, 438, 329, 144, 165, 1, 2, 1
+134, 4, 903, 331, 56, 148, 1, 0, 1
+134, 18, 35, 303, 25, 79, 1, 0, 1
+134, 41, 0, 305, 30, 77, 1, 0, 1
+134, 48, 0, 300, 11, 79, 1, 0, 1
+134, 55, 258, 264, 16, 36, 1, 0, 1
+134, 57, 220, 266, 12, 30, 1, 0, 1
+134, 61, 384, 264, 31, 22, 1, 2, 1
+134, 82, 457, 253, 20, 15, 1, 2, 1
+134, 85, 706, 261, 13, 33, 1, 0, 1
+134, 108, 447, 302, 104, 42, 1, 2, 1
+134, 114, 86, 284, 21, 68, 1, 0, 1
+135, 1, 330, 303, 71, 53, 1, 2, 1
+135, 3, 433, 330, 145, 165, 1, 2, 1
+135, 4, 903, 332, 56, 151, 1, 0, 1
+135, 18, 27, 297, 27, 86, 1, 0, 1
+135, 41, 0, 308, 25, 76, 1, 0, 1
+135, 55, 255, 263, 17, 37, 1, 0, 1
+135, 57, 217, 266, 11, 29, 1, 0, 1
+135, 61, 382, 264, 31, 22, 1, 2, 1
+135, 82, 456, 254, 19, 14, 1, 2, 1
+135, 85, 703, 260, 14, 34, 1, 0, 1
+135, 108, 447, 302, 99, 40, 1, 2, 1
+135, 114, 82, 287, 21, 65, 1, 0, 1
+136, 1, 327, 303, 71, 53, 1, 2, 1
+136, 3, 430, 331, 145, 164, 1, 2, 1
+136, 4, 905, 333, 54, 154, 1, 0, 1
+136, 18, 19, 293, 29, 92, 1, 0, 1
+136, 41, 0, 311, 21, 75, 1, 0, 1
+136, 55, 253, 263, 16, 37, 1, 0, 1
+136, 57, 214, 266, 12, 29, 1, 0, 1
+136, 61, 379, 264, 31, 22, 1, 2, 1
+136, 82, 453, 252, 21, 16, 1, 2, 1
+136, 85, 701, 260, 14, 35, 1, 0, 1
+136, 108, 446, 301, 96, 40, 1, 2, 1
+136, 114, 77, 284, 22, 69, 1, 0, 1
+136, 166, 336, 243, 28, 27, 1, 2, 1
+137, 1, 324, 302, 73, 55, 1, 2, 1
+137, 3, 427, 330, 145, 166, 1, 2, 1
+137, 4, 906, 337, 53, 154, 1, 0, 1
+137, 18, 12, 289, 31, 98, 1, 0, 1
+137, 41, 0, 312, 19, 76, 1, 0, 1
+137, 55, 250, 263, 17, 37, 1, 0, 1
+137, 57, 211, 267, 12, 30, 1, 0, 1
+137, 61, 376, 262, 33, 24, 1, 2, 1
+137, 82, 451, 251, 22, 17, 1, 2, 1
+137, 85, 699, 260, 14, 35, 1, 0, 1
+137, 108, 445, 300, 94, 40, 1, 2, 1
+137, 114, 73, 282, 23, 72, 1, 0, 1
+137, 166, 333, 243, 28, 27, 1, 2, 1
+137, 168, 850, 275, 23, 59, 1, 0, 1
+138, 1, 321, 301, 74, 56, 1, 2, 1
+138, 3, 426, 335, 141, 160, 1, 2, 1
+138, 4, 910, 340, 49, 151, 1, 0, 1
+138, 18, 6, 290, 30, 99, 1, 0, 1
+138, 41, 0, 313, 14, 77, 1, 0, 1
+138, 55, 247, 263, 17, 37, 1, 0, 1
+138, 57, 208, 267, 13, 30, 1, 0, 1
+138, 61, 375, 262, 31, 23, 1, 2, 1
+138, 82, 450, 252, 21, 16, 1, 2, 1
+138, 85, 697, 260, 14, 35, 1, 0, 1
+138, 108, 441, 300, 95, 40, 1, 2, 1
+138, 114, 68, 281, 23, 75, 1, 0, 1
+138, 166, 331, 243, 29, 27, 1, 2, 1
+138, 168, 850, 275, 23, 59, 1, 0, 1
+139, 1, 319, 300, 74, 55, 1, 2, 1
+139, 3, 424, 336, 141, 159, 1, 2, 1
+139, 4, 911, 342, 48, 150, 1, 0, 1
+139, 18, 0, 289, 31, 101, 1, 0, 1
+139, 55, 246, 263, 16, 37, 1, 0, 1
+139, 57, 206, 266, 12, 29, 1, 0, 1
+139, 61, 373, 261, 32, 23, 1, 2, 1
+139, 82, 448, 252, 22, 17, 1, 2, 1
+139, 85, 695, 260, 14, 35, 1, 0, 1
+139, 108, 439, 299, 95, 40, 1, 2, 1
+139, 114, 63, 279, 24, 77, 1, 0, 1
+139, 168, 849, 275, 23, 58, 1, 0, 1
+140, 1, 317, 298, 73, 56, 1, 2, 1
+140, 3, 420, 334, 142, 160, 1, 2, 1
+140, 4, 914, 343, 45, 150, 1, 0, 1
+140, 8, 782, 276, 20, 56, 1, 0, 1
+140, 18, 0, 288, 26, 103, 1, 0, 1
+140, 55, 244, 263, 16, 37, 1, 0, 1
+140, 57, 203, 266, 12, 29, 1, 0, 1
+140, 61, 372, 261, 31, 23, 1, 2, 1
+140, 82, 447, 253, 20, 15, 1, 2, 1
+140, 85, 692, 259, 15, 35, 1, 0, 1
+140, 108, 438, 299, 92, 39, 1, 2, 1
+140, 114, 59, 278, 23, 77, 1, 0, 1
+140, 168, 849, 275, 22, 57, 1, 0, 1
+141, 1, 315, 298, 74, 56, 1, 2, 1
+141, 3, 416, 332, 145, 162, 1, 2, 1
+141, 4, 916, 345, 43, 149, 1, 0, 1
+141, 8, 780, 275, 20, 57, 1, 0, 1
+141, 18, 0, 288, 23, 105, 1, 0, 1
+141, 55, 242, 263, 15, 37, 1, 0, 1
+141, 57, 201, 266, 12, 30, 1, 0, 1
+141, 61, 370, 262, 32, 24, 1, 2, 1
+141, 82, 446, 253, 19, 15, 1, 2, 1
+141, 85, 691, 259, 14, 34, 1, 0, 1
+141, 108, 437, 299, 90, 38, 1, 2, 1
+141, 114, 54, 278, 24, 78, 1, 0, 1
+141, 168, 850, 276, 21, 55, 1, 0, 1
+142, 1, 313, 298, 74, 56, 1, 2, 1
+142, 3, 413, 330, 148, 167, 1, 2, 1
+142, 4, 920, 350, 39, 142, 1, 0, 1
+142, 8, 779, 275, 19, 56, 1, 0, 1
+142, 18, 0, 285, 21, 112, 1, 0, 1
+142, 55, 240, 263, 16, 36, 1, 0, 1
+142, 57, 199, 266, 13, 31, 1, 0, 1
+142, 61, 369, 262, 31, 23, 1, 2, 1
+142, 82, 445, 252, 20, 15, 1, 2, 1
+142, 85, 689, 259, 14, 34, 1, 0, 1
+142, 108, 436, 298, 88, 38, 1, 2, 1
+142, 168, 850, 277, 21, 54, 1, 0, 1
+143, 1, 311, 296, 75, 57, 1, 2, 1
+143, 3, 409, 329, 150, 167, 1, 2, 1
+143, 4, 922, 349, 37, 144, 1, 0, 1
+143, 8, 778, 274, 20, 57, 1, 0, 1
+143, 18, 0, 284, 16, 114, 1, 0, 1
+143, 55, 238, 262, 15, 36, 1, 0, 1
+143, 57, 195, 265, 13, 31, 1, 0, 1
+143, 61, 367, 261, 31, 23, 1, 2, 1
+143, 82, 444, 252, 19, 15, 1, 2, 1
+143, 85, 687, 259, 14, 33, 1, 0, 1
+143, 108, 431, 298, 93, 40, 1, 2, 1
+143, 168, 850, 281, 20, 51, 1, 0, 1
+144, 1, 309, 296, 74, 57, 1, 2, 1
+144, 3, 406, 333, 147, 163, 1, 2, 1
+144, 4, 925, 354, 34, 135, 1, 0, 1
+144, 8, 776, 275, 20, 56, 1, 0, 1
+144, 55, 236, 262, 15, 37, 1, 0, 1
+144, 57, 193, 265, 13, 31, 1, 0, 1
+144, 61, 366, 262, 30, 22, 1, 2, 1
+144, 82, 442, 252, 20, 15, 1, 2, 1
+144, 85, 685, 260, 14, 34, 1, 0, 1
+144, 108, 429, 298, 92, 40, 1, 2, 1
+144, 168, 849, 284, 20, 52, 1, 0, 1
+145, 1, 306, 296, 72, 55, 1, 2, 1
+145, 3, 402, 332, 148, 164, 1, 2, 1
+145, 4, 927, 356, 32, 134, 1, 0, 1
+145, 8, 773, 276, 20, 56, 1, 0, 1
+145, 55, 234, 263, 15, 37, 1, 0, 1
+145, 57, 191, 264, 13, 31, 1, 0, 1
+145, 61, 364, 261, 31, 23, 1, 2, 1
+145, 82, 440, 252, 20, 16, 1, 2, 1
+145, 85, 683, 260, 14, 34, 1, 0, 1
+145, 108, 427, 298, 88, 38, 1, 2, 1
+145, 168, 847, 286, 20, 51, 1, 0, 1
+146, 1, 304, 296, 71, 54, 1, 2, 1
+146, 3, 398, 329, 150, 167, 1, 2, 1
+146, 8, 772, 276, 19, 57, 1, 0, 1
+146, 55, 231, 262, 15, 37, 1, 0, 1
+146, 57, 188, 264, 14, 32, 1, 0, 1
+146, 61, 363, 260, 30, 23, 1, 2, 1
+146, 82, 438, 252, 21, 17, 1, 2, 1
+146, 108, 427, 299, 84, 37, 1, 2, 1
+146, 168, 846, 287, 20, 49, 1, 0, 1
+147, 1, 303, 297, 71, 54, 1, 2, 1
+147, 3, 395, 329, 152, 169, 1, 2, 1
+147, 8, 770, 277, 19, 57, 1, 0, 1
+147, 55, 229, 263, 15, 36, 1, 0, 1
+147, 57, 186, 265, 14, 32, 1, 0, 1
+147, 61, 362, 261, 29, 22, 1, 2, 1
+147, 82, 437, 254, 19, 15, 1, 2, 1
+147, 108, 426, 300, 81, 36, 1, 2, 1
+147, 168, 844, 287, 20, 51, 1, 0, 1
+148, 1, 301, 296, 71, 55, 1, 2, 1
+148, 3, 393, 329, 151, 169, 1, 2, 1
+148, 8, 767, 277, 20, 58, 1, 0, 1
+148, 55, 226, 263, 15, 37, 1, 0, 1
+148, 57, 183, 266, 13, 30, 1, 0, 1
+148, 61, 359, 261, 31, 24, 1, 2, 1
+148, 82, 435, 253, 19, 15, 1, 2, 1
+148, 85, 677, 261, 14, 34, 1, 0, 1
+148, 108, 423, 300, 83, 36, 1, 2, 1
+148, 168, 843, 288, 20, 49, 1, 0, 1
+149, 1, 298, 296, 72, 55, 1, 2, 1
+149, 3, 389, 327, 153, 170, 1, 2, 1
+149, 8, 764, 278, 21, 57, 1, 0, 1
+149, 55, 223, 264, 15, 37, 1, 0, 1
+149, 57, 180, 266, 14, 32, 1, 0, 1
+149, 61, 358, 262, 29, 23, 1, 2, 1
+149, 82, 433, 254, 19, 15, 1, 2, 1
+149, 85, 674, 261, 15, 35, 1, 0, 1
+149, 108, 424, 302, 77, 33, 1, 2, 1
+149, 168, 842, 289, 20, 48, 1, 0, 1
+150, 1, 296, 296, 71, 54, 1, 2, 1
+150, 3, 385, 326, 154, 171, 1, 2, 1
+150, 8, 761, 277, 22, 57, 1, 0, 1
+150, 55, 221, 264, 15, 37, 1, 0, 1
+150, 57, 177, 266, 14, 32, 1, 0, 1
+150, 61, 356, 261, 30, 23, 1, 2, 1
+150, 82, 432, 254, 19, 15, 1, 2, 1
+150, 85, 672, 261, 14, 34, 1, 0, 1
+150, 108, 421, 301, 77, 33, 1, 2, 1
+150, 114, 16, 297, 21, 66, 1, 0, 1
+150, 168, 841, 288, 20, 48, 1, 0, 1
+151, 1, 295, 297, 69, 53, 1, 2, 1
+151, 3, 382, 326, 153, 171, 1, 2, 1
+151, 8, 758, 278, 22, 57, 1, 0, 1
+151, 55, 217, 264, 16, 37, 1, 0, 1
+151, 57, 174, 267, 14, 32, 1, 0, 1
+151, 61, 354, 262, 29, 22, 1, 2, 1
+151, 82, 429, 254, 21, 16, 1, 2, 1
+151, 85, 668, 262, 15, 33, 1, 0, 1
+151, 108, 418, 301, 79, 33, 1, 2, 1
+151, 114, 12, 296, 21, 68, 1, 0, 1
+151, 168, 838, 284, 22, 53, 1, 0, 1
+152, 1, 293, 296, 69, 53, 1, 2, 1
+152, 3, 378, 326, 152, 171, 1, 2, 1
+152, 8, 755, 278, 23, 57, 1, 0, 1
+152, 55, 214, 265, 15, 37, 1, 0, 1
+152, 57, 171, 267, 14, 32, 1, 0, 1
+152, 61, 352, 262, 29, 22, 1, 2, 1
+152, 82, 427, 254, 21, 16, 1, 2, 1
+152, 85, 666, 262, 14, 33, 1, 0, 1
+152, 108, 414, 301, 79, 33, 1, 2, 1
+152, 114, 7, 298, 21, 67, 1, 0, 1
+152, 166, 303, 243, 29, 27, 1, 2, 1
+152, 168, 837, 284, 21, 52, 1, 0, 1
+153, 1, 290, 296, 69, 53, 1, 2, 1
+153, 3, 374, 326, 152, 171, 1, 2, 1
+153, 8, 753, 277, 23, 58, 1, 0, 1
+153, 55, 211, 265, 15, 38, 1, 0, 1
+153, 57, 167, 267, 15, 33, 1, 0, 1
+153, 61, 350, 262, 28, 22, 1, 2, 1
+153, 82, 426, 255, 18, 15, 1, 2, 1
+153, 85, 663, 260, 15, 35, 1, 0, 1
+153, 108, 410, 301, 80, 33, 1, 2, 1
+153, 114, 3, 299, 21, 67, 1, 0, 1
+153, 166, 302, 244, 27, 26, 1, 2, 1
+153, 168, 837, 285, 19, 47, 1, 0, 1
+154, 1, 286, 296, 68, 52, 1, 2, 1
+154, 3, 371, 326, 152, 171, 1, 2, 1
+154, 8, 750, 277, 23, 57, 1, 0, 1
+154, 55, 208, 266, 15, 37, 1, 0, 1
+154, 57, 164, 267, 15, 34, 1, 0, 1
+154, 61, 347, 262, 28, 21, 1, 2, 1
+154, 82, 423, 255, 19, 15, 1, 2, 1
+154, 85, 660, 260, 16, 35, 1, 0, 1
+154, 108, 406, 301, 80, 34, 1, 2, 1
+154, 166, 298, 244, 29, 27, 1, 2, 1
+154, 168, 834, 284, 20, 51, 1, 0, 1
+155, 1, 283, 296, 68, 52, 1, 2, 1
+155, 3, 369, 328, 149, 167, 1, 2, 1
+155, 8, 747, 277, 24, 57, 1, 0, 1
+155, 55, 205, 265, 15, 39, 1, 0, 1
+155, 57, 161, 267, 15, 35, 1, 0, 1
+155, 61, 345, 262, 27, 21, 1, 2, 1
+155, 82, 421, 255, 20, 15, 1, 2, 1
+155, 108, 403, 301, 81, 34, 1, 2, 1
+155, 166, 295, 243, 29, 27, 1, 2, 1
+155, 168, 834, 285, 19, 49, 1, 0, 1
+156, 1, 280, 296, 69, 53, 1, 2, 1
+156, 3, 364, 327, 148, 167, 1, 2, 1
+156, 8, 743, 275, 23, 59, 1, 0, 1
+156, 55, 202, 266, 16, 39, 1, 0, 1
+156, 57, 157, 267, 16, 35, 1, 0, 1
+156, 61, 343, 262, 27, 21, 1, 2, 1
+156, 82, 419, 255, 21, 16, 1, 2, 1
+156, 85, 653, 259, 16, 35, 1, 0, 1
+156, 108, 399, 301, 82, 34, 1, 2, 1
+156, 166, 294, 244, 27, 26, 1, 2, 1
+156, 168, 834, 286, 18, 46, 1, 0, 1
+157, 1, 278, 296, 69, 52, 1, 2, 1
+157, 3, 361, 327, 149, 168, 1, 2, 1
+157, 8, 740, 275, 23, 57, 1, 0, 1
+157, 55, 199, 266, 15, 39, 1, 0, 1
+157, 57, 154, 269, 14, 34, 1, 0, 1
+157, 61, 341, 262, 27, 21, 1, 2, 1
+157, 82, 417, 256, 20, 15, 1, 2, 1
+157, 85, 650, 259, 16, 35, 1, 0, 1
+157, 108, 393, 300, 85, 36, 1, 2, 1
+157, 166, 290, 243, 29, 27, 1, 2, 1
+157, 168, 833, 287, 18, 44, 1, 0, 1
+158, 1, 275, 296, 70, 53, 1, 2, 1
+158, 3, 357, 328, 148, 167, 1, 2, 1
+158, 8, 738, 275, 22, 55, 1, 0, 1
+158, 55, 196, 267, 15, 38, 1, 0, 1
+158, 57, 151, 270, 15, 34, 1, 0, 1
+158, 61, 338, 263, 27, 21, 1, 2, 1
+158, 82, 415, 256, 18, 15, 1, 2, 1
+158, 85, 648, 259, 16, 36, 1, 0, 1
+158, 108, 390, 299, 86, 37, 1, 2, 1
+158, 166, 288, 243, 29, 27, 1, 2, 1
+159, 1, 273, 296, 69, 53, 1, 2, 1
+159, 3, 355, 332, 146, 164, 1, 2, 1
+159, 8, 735, 272, 23, 58, 1, 0, 1
+159, 55, 193, 268, 15, 38, 1, 0, 1
+159, 57, 148, 271, 15, 34, 1, 0, 1
+159, 61, 336, 263, 28, 21, 1, 2, 1
+159, 82, 414, 257, 18, 13, 1, 2, 1
+159, 85, 646, 259, 16, 36, 1, 0, 1
+159, 108, 385, 299, 90, 39, 1, 2, 1
+160, 1, 271, 296, 68, 52, 1, 2, 1
+160, 3, 353, 334, 144, 161, 1, 2, 1
+160, 8, 732, 273, 22, 58, 1, 0, 1
+160, 55, 190, 270, 15, 37, 1, 0, 1
+160, 57, 144, 271, 15, 35, 1, 0, 1
+160, 61, 335, 263, 27, 21, 1, 2, 1
+160, 82, 411, 257, 19, 14, 1, 2, 1
+160, 108, 382, 299, 89, 38, 1, 2, 1
+161, 1, 270, 296, 67, 51, 1, 2, 1
+161, 3, 349, 331, 148, 164, 1, 2, 1
+161, 8, 730, 273, 22, 57, 1, 0, 1
+161, 55, 187, 270, 15, 37, 1, 0, 1
+161, 57, 142, 273, 14, 33, 1, 0, 1
+161, 61, 332, 263, 27, 21, 1, 2, 1
+161, 82, 409, 257, 20, 15, 1, 2, 1
+161, 85, 640, 259, 17, 36, 1, 0, 1
+161, 108, 381, 300, 89, 38, 1, 2, 1
+162, 1, 268, 296, 66, 51, 1, 2, 1
+162, 3, 346, 330, 149, 165, 1, 2, 1
+162, 8, 729, 274, 21, 55, 1, 0, 1
+162, 55, 185, 270, 15, 37, 1, 0, 1
+162, 57, 139, 273, 15, 34, 1, 0, 1
+162, 61, 330, 263, 27, 21, 1, 2, 1
+162, 82, 407, 257, 21, 16, 1, 2, 1
+162, 85, 638, 258, 17, 37, 1, 0, 1
+162, 108, 380, 301, 86, 37, 1, 2, 1
+163, 1, 266, 296, 67, 51, 1, 2, 1
+163, 3, 342, 329, 148, 165, 1, 2, 1
+163, 8, 726, 275, 21, 55, 1, 0, 1
+163, 55, 182, 271, 15, 37, 1, 0, 1
+163, 57, 136, 273, 15, 35, 1, 0, 1
+163, 61, 329, 263, 27, 21, 1, 2, 1
+163, 82, 405, 257, 21, 16, 1, 2, 1
+163, 85, 635, 258, 17, 37, 1, 0, 1
+163, 108, 375, 300, 89, 39, 1, 2, 1
+164, 1, 261, 295, 69, 52, 1, 2, 1
+164, 3, 338, 328, 149, 165, 1, 2, 1
+164, 8, 723, 273, 22, 58, 1, 0, 1
+164, 55, 179, 270, 15, 38, 1, 0, 1
+164, 57, 133, 272, 15, 36, 1, 0, 1
+164, 61, 328, 263, 26, 20, 1, 2, 1
+164, 82, 404, 257, 21, 16, 1, 2, 1
+164, 108, 372, 300, 89, 39, 1, 2, 1
+165, 1, 259, 296, 68, 52, 1, 2, 1
+165, 3, 334, 328, 148, 165, 1, 2, 1
+165, 8, 720, 273, 23, 58, 1, 0, 1
+165, 55, 177, 271, 15, 38, 1, 0, 1
+165, 57, 130, 273, 15, 35, 1, 0, 1
+165, 61, 325, 263, 27, 20, 1, 2, 1
+165, 82, 401, 257, 21, 16, 1, 2, 1
+165, 85, 626, 255, 18, 39, 1, 0, 1
+165, 108, 370, 300, 87, 38, 1, 2, 1
+166, 1, 258, 296, 68, 51, 1, 2, 1
+166, 3, 331, 329, 147, 163, 1, 2, 1
+166, 8, 718, 272, 22, 58, 1, 0, 1
+166, 55, 175, 272, 15, 38, 1, 0, 1
+166, 57, 127, 273, 15, 37, 1, 0, 1
+166, 61, 323, 264, 27, 19, 1, 2, 1
+166, 82, 400, 257, 20, 15, 1, 2, 1
+166, 85, 623, 255, 19, 39, 1, 0, 1
+166, 108, 367, 299, 89, 40, 1, 2, 1
+167, 1, 257, 296, 66, 51, 1, 2, 1
+167, 3, 328, 330, 146, 161, 1, 2, 1
+167, 8, 716, 272, 22, 57, 1, 0, 1
+167, 55, 172, 272, 15, 37, 1, 0, 1
+167, 57, 125, 273, 15, 37, 1, 0, 1
+167, 61, 323, 264, 25, 19, 1, 2, 1
+167, 82, 399, 257, 20, 16, 1, 2, 1
+167, 85, 620, 256, 19, 39, 1, 0, 1
+167, 108, 361, 297, 95, 44, 1, 2, 1
+168, 1, 256, 296, 66, 50, 1, 2, 1
+168, 3, 324, 330, 145, 160, 1, 2, 1
+168, 8, 714, 271, 21, 57, 1, 0, 1
+168, 55, 169, 272, 15, 37, 1, 0, 1
+168, 57, 122, 273, 15, 36, 1, 0, 1
+168, 61, 321, 263, 26, 19, 1, 2, 1
+168, 82, 398, 257, 20, 16, 1, 2, 1
+168, 85, 618, 256, 19, 39, 1, 0, 1
+168, 108, 357, 296, 100, 47, 1, 2, 1
+169, 1, 254, 295, 66, 50, 1, 2, 1
+169, 3, 320, 329, 144, 160, 1, 2, 1
+169, 8, 711, 270, 22, 59, 1, 0, 1
+169, 55, 167, 271, 15, 39, 1, 0, 1
+169, 57, 119, 272, 15, 37, 1, 0, 1
+169, 61, 319, 263, 27, 19, 1, 2, 1
+169, 82, 397, 257, 21, 16, 1, 2, 1
+169, 85, 615, 256, 19, 39, 1, 0, 1
+169, 108, 354, 296, 99, 47, 1, 2, 1
+170, 1, 253, 294, 65, 50, 1, 2, 1
+170, 3, 318, 328, 143, 159, 1, 2, 1
+170, 8, 709, 270, 22, 61, 1, 0, 1
+170, 55, 164, 271, 15, 38, 1, 0, 1
+170, 57, 116, 271, 15, 38, 1, 0, 1
+170, 61, 317, 262, 27, 19, 1, 2, 1
+170, 82, 395, 256, 21, 16, 1, 2, 1
+170, 108, 353, 296, 98, 48, 1, 2, 1
+171, 1, 252, 293, 65, 49, 1, 2, 1
+171, 3, 315, 328, 144, 160, 1, 2, 1
+171, 8, 707, 270, 22, 60, 1, 0, 1
+171, 55, 162, 271, 16, 38, 1, 0, 1
+171, 57, 114, 272, 15, 38, 1, 0, 1
+171, 61, 316, 261, 26, 19, 1, 2, 1
+171, 82, 394, 256, 20, 15, 1, 2, 1
+171, 108, 350, 296, 99, 49, 1, 2, 1
+172, 1, 250, 293, 65, 49, 1, 2, 1
+172, 3, 313, 329, 142, 158, 1, 2, 1
+172, 8, 704, 268, 23, 61, 1, 0, 1
+172, 55, 160, 270, 15, 39, 1, 0, 1
+172, 57, 112, 271, 15, 38, 1, 0, 1
+172, 61, 315, 261, 25, 19, 1, 2, 1
+172, 82, 393, 257, 20, 15, 1, 2, 1
+172, 108, 347, 296, 101, 51, 1, 2, 1
+173, 1, 249, 293, 64, 48, 1, 2, 1
+173, 3, 309, 327, 143, 160, 1, 2, 1
+173, 8, 703, 268, 22, 61, 1, 0, 1
+173, 55, 157, 270, 16, 40, 1, 0, 1
+173, 57, 110, 271, 15, 39, 1, 0, 1
+173, 61, 314, 261, 25, 19, 1, 2, 1
+173, 82, 392, 257, 21, 15, 1, 2, 1
+173, 108, 345, 296, 101, 52, 1, 2, 1
+174, 1, 248, 293, 64, 48, 1, 2, 1
+174, 3, 306, 327, 143, 159, 1, 2, 1
+174, 8, 701, 268, 23, 61, 1, 0, 1
+174, 55, 155, 271, 16, 39, 1, 0, 1
+174, 57, 107, 271, 15, 39, 1, 0, 1
+174, 61, 314, 262, 24, 18, 1, 2, 1
+174, 82, 391, 257, 21, 15, 1, 2, 1
+174, 108, 345, 295, 96, 51, 1, 2, 1
+175, 1, 246, 291, 65, 49, 1, 2, 1
+175, 3, 305, 328, 142, 157, 1, 2, 1
+175, 8, 699, 269, 23, 62, 1, 0, 1
+175, 55, 152, 271, 17, 40, 1, 0, 1
+175, 57, 105, 271, 15, 39, 1, 0, 1
+175, 61, 312, 262, 24, 18, 1, 2, 1
+175, 82, 389, 257, 21, 15, 1, 2, 1
+175, 108, 343, 295, 96, 51, 1, 2, 1
+176, 1, 245, 291, 65, 49, 1, 2, 1
+176, 3, 303, 328, 141, 155, 1, 2, 1
+176, 8, 696, 268, 24, 64, 1, 0, 1
+176, 55, 150, 270, 16, 40, 1, 0, 1
+176, 57, 103, 271, 15, 39, 1, 0, 1
+176, 61, 311, 262, 24, 17, 1, 2, 1
+176, 82, 388, 257, 21, 16, 1, 2, 1
+176, 108, 340, 295, 100, 55, 1, 2, 1
+177, 1, 243, 290, 65, 49, 1, 2, 1
+177, 3, 300, 328, 140, 154, 1, 2, 1
+177, 8, 693, 268, 25, 64, 1, 0, 1
+177, 55, 149, 269, 16, 40, 1, 0, 1
+177, 57, 100, 271, 15, 38, 1, 0, 1
+177, 61, 310, 261, 24, 18, 1, 2, 1
+177, 82, 388, 257, 21, 15, 1, 2, 1
+177, 108, 337, 295, 103, 58, 1, 2, 1
+178, 1, 241, 290, 65, 49, 1, 2, 1
+178, 3, 297, 328, 139, 153, 1, 2, 1
+178, 8, 691, 267, 26, 65, 1, 0, 1
+178, 55, 146, 270, 17, 40, 1, 0, 1
+178, 57, 98, 272, 15, 38, 1, 0, 1
+178, 61, 308, 261, 24, 18, 1, 2, 1
+178, 82, 387, 257, 21, 16, 1, 2, 1
+178, 108, 335, 295, 104, 60, 1, 2, 1
+179, 1, 241, 291, 63, 47, 1, 2, 1
+179, 3, 295, 328, 138, 151, 1, 2, 1
+179, 8, 691, 269, 25, 64, 1, 0, 1
+179, 55, 144, 270, 17, 40, 1, 0, 1
+179, 57, 96, 270, 15, 40, 1, 0, 1
+179, 61, 308, 261, 24, 18, 1, 2, 1
+179, 82, 385, 258, 22, 15, 1, 2, 1
+179, 108, 336, 295, 98, 57, 1, 2, 1
+179, 168, 801, 272, 23, 63, 1, 0, 1
+180, 1, 240, 290, 63, 47, 1, 2, 1
+180, 3, 293, 329, 137, 149, 1, 2, 1
+180, 8, 690, 269, 25, 63, 1, 0, 1
+180, 55, 142, 271, 16, 39, 1, 0, 1
+180, 57, 94, 271, 15, 39, 1, 0, 1
+180, 61, 307, 261, 23, 17, 1, 2, 1
+180, 82, 383, 257, 23, 17, 1, 2, 1
+180, 108, 338, 295, 92, 55, 1, 2, 1
+180, 168, 802, 272, 22, 64, 1, 0, 1
+181, 1, 239, 290, 63, 47, 1, 2, 1
+181, 3, 289, 329, 135, 148, 1, 2, 1
+181, 8, 690, 269, 24, 63, 1, 0, 1
+181, 55, 139, 271, 17, 40, 1, 0, 1
+181, 57, 92, 272, 15, 39, 1, 0, 1
+181, 61, 306, 262, 23, 16, 1, 2, 1
+181, 82, 382, 257, 23, 17, 1, 2, 1
+181, 108, 336, 296, 92, 55, 1, 2, 1
+181, 168, 803, 278, 20, 58, 1, 0, 1
+182, 1, 237, 291, 63, 46, 1, 2, 1
+182, 3, 287, 329, 134, 147, 1, 2, 1
+182, 8, 688, 270, 25, 62, 1, 0, 1
+182, 55, 138, 272, 16, 40, 1, 0, 1
+182, 57, 89, 272, 15, 39, 1, 0, 1
+182, 61, 305, 262, 22, 16, 1, 2, 1
+182, 82, 381, 257, 23, 17, 1, 2, 1
+182, 108, 335, 296, 91, 55, 1, 2, 1
+182, 168, 801, 278, 21, 59, 1, 0, 1
+183, 1, 235, 290, 63, 47, 1, 2, 1
+183, 3, 284, 329, 136, 147, 1, 2, 1
+183, 8, 686, 269, 24, 63, 1, 0, 1
+183, 55, 136, 272, 17, 41, 1, 0, 1
+183, 57, 86, 270, 16, 43, 1, 0, 1
+183, 61, 304, 262, 22, 16, 1, 2, 1
+183, 82, 380, 257, 24, 18, 1, 2, 1
+183, 108, 335, 296, 91, 55, 1, 2, 1
+183, 168, 804, 280, 19, 57, 1, 0, 1
+184, 1, 234, 290, 63, 48, 1, 2, 1
+184, 3, 281, 329, 135, 146, 1, 2, 1
+184, 8, 685, 268, 24, 64, 1, 0, 1
+184, 55, 133, 272, 17, 41, 1, 0, 1
+184, 57, 83, 272, 15, 42, 1, 0, 1
+184, 61, 302, 262, 23, 17, 1, 2, 1
+184, 82, 379, 257, 24, 18, 1, 2, 1
+184, 108, 335, 296, 83, 51, 1, 2, 1
+184, 168, 804, 278, 20, 58, 1, 0, 1
+185, 1, 233, 291, 62, 47, 1, 2, 1
+185, 3, 276, 328, 137, 147, 1, 2, 1
+185, 8, 684, 267, 24, 65, 1, 0, 1
+185, 55, 130, 274, 17, 41, 1, 0, 1
+185, 57, 81, 273, 15, 42, 1, 0, 1
+185, 61, 301, 262, 24, 17, 1, 2, 1
+185, 82, 378, 258, 24, 18, 1, 2, 1
+185, 108, 331, 296, 88, 55, 1, 2, 1
+185, 168, 803, 281, 20, 55, 1, 0, 1
+186, 1, 232, 291, 62, 46, 1, 2, 1
+186, 3, 273, 327, 137, 148, 1, 2, 1
+186, 8, 683, 267, 23, 65, 1, 0, 1
+186, 55, 129, 274, 17, 42, 1, 0, 1
+186, 57, 79, 275, 15, 40, 1, 0, 1
+186, 61, 300, 262, 23, 17, 1, 2, 1
+186, 82, 377, 258, 23, 18, 1, 2, 1
+186, 108, 328, 296, 90, 57, 1, 2, 1
+186, 168, 803, 282, 19, 55, 1, 0, 1
+187, 1, 230, 291, 62, 46, 1, 2, 1
+187, 3, 271, 327, 136, 146, 1, 2, 1
+187, 8, 681, 267, 24, 65, 1, 0, 1
+187, 55, 127, 275, 17, 42, 1, 0, 1
+187, 57, 78, 280, 13, 35, 1, 0, 1
+187, 61, 299, 262, 24, 17, 1, 2, 1
+187, 82, 376, 259, 23, 17, 1, 2, 1
+187, 108, 327, 295, 88, 58, 1, 2, 1
+187, 168, 802, 283, 20, 53, 1, 0, 1
+188, 1, 229, 291, 62, 46, 1, 2, 1
+188, 3, 267, 325, 137, 148, 1, 2, 1
+188, 8, 680, 267, 24, 66, 1, 0, 1
+188, 55, 125, 275, 17, 41, 1, 0, 1
+188, 57, 76, 281, 13, 35, 1, 0, 1
+188, 61, 299, 262, 23, 17, 1, 2, 1
+188, 82, 375, 260, 23, 17, 1, 2, 1
+188, 108, 326, 296, 88, 57, 1, 2, 1
+188, 168, 802, 283, 20, 53, 1, 0, 1
+189, 1, 228, 292, 62, 46, 1, 2, 1
+189, 3, 265, 326, 135, 147, 1, 2, 1
+189, 8, 680, 268, 23, 64, 1, 0, 1
+189, 55, 124, 276, 16, 41, 1, 0, 1
+189, 57, 74, 282, 12, 34, 1, 0, 1
+189, 61, 298, 262, 23, 17, 1, 2, 1
+189, 82, 374, 260, 22, 17, 1, 2, 1
+189, 108, 324, 296, 91, 60, 1, 2, 1
+189, 168, 802, 282, 21, 55, 1, 0, 1
+190, 1, 227, 292, 62, 46, 1, 2, 1
+190, 3, 263, 325, 136, 147, 1, 2, 1
+190, 8, 679, 270, 23, 62, 1, 0, 1
+190, 55, 121, 275, 17, 43, 1, 0, 1
+190, 57, 70, 281, 14, 36, 1, 0, 1
+190, 61, 297, 262, 23, 17, 1, 2, 1
+190, 82, 374, 261, 21, 16, 1, 2, 1
+190, 108, 324, 295, 92, 63, 1, 2, 1
+190, 168, 802, 283, 21, 54, 1, 0, 1
+191, 1, 226, 293, 61, 45, 1, 2, 1
+191, 3, 260, 325, 136, 147, 1, 2, 1
+191, 8, 677, 272, 23, 62, 1, 0, 1
+191, 55, 119, 276, 17, 43, 1, 0, 1
+191, 57, 67, 283, 14, 35, 1, 0, 1
+191, 61, 296, 262, 23, 17, 1, 2, 1
+191, 82, 373, 262, 21, 15, 1, 2, 1
+191, 108, 324, 295, 91, 63, 1, 2, 1
+191, 168, 802, 283, 22, 55, 1, 0, 1
+192, 1, 225, 293, 61, 45, 1, 2, 1
+192, 3, 257, 325, 136, 147, 1, 2, 1
+192, 8, 676, 273, 22, 61, 1, 0, 1
+192, 55, 117, 276, 17, 44, 1, 0, 1
+192, 57, 64, 284, 14, 35, 1, 0, 1
+192, 61, 294, 262, 25, 18, 1, 2, 1
+192, 82, 372, 262, 21, 15, 1, 2, 1
+192, 108, 324, 296, 90, 62, 1, 2, 1
+192, 168, 804, 282, 21, 55, 1, 0, 1
+193, 1, 224, 294, 60, 44, 1, 2, 1
+193, 3, 255, 325, 136, 146, 1, 2, 1
+193, 8, 675, 273, 23, 62, 1, 0, 1
+193, 55, 114, 277, 17, 43, 1, 0, 1
+193, 57, 62, 283, 15, 37, 1, 0, 1
+193, 61, 293, 262, 25, 18, 1, 2, 1
+193, 82, 372, 262, 21, 16, 1, 2, 1
+193, 108, 323, 296, 90, 63, 1, 2, 1
+193, 168, 805, 281, 23, 57, 1, 0, 1
+194, 1, 224, 295, 59, 43, 1, 2, 1
+194, 3, 253, 325, 134, 145, 1, 2, 1
+194, 8, 674, 274, 23, 61, 1, 0, 1
+194, 55, 113, 279, 17, 42, 1, 0, 1
+194, 57, 60, 284, 14, 37, 1, 0, 1
+194, 61, 292, 262, 25, 19, 1, 2, 1
+194, 82, 370, 262, 23, 17, 1, 2, 1
+194, 108, 323, 295, 90, 64, 1, 2, 1
+194, 168, 807, 283, 22, 55, 1, 0, 1
+195, 1, 223, 295, 59, 43, 1, 2, 1
+195, 3, 252, 324, 133, 144, 1, 2, 1
+195, 8, 673, 273, 22, 62, 1, 0, 1
+195, 55, 111, 279, 17, 42, 1, 0, 1
+195, 57, 58, 285, 14, 37, 1, 0, 1
+195, 61, 291, 261, 25, 19, 1, 2, 1
+195, 82, 369, 262, 23, 18, 1, 2, 1
+195, 108, 323, 295, 89, 62, 1, 2, 1
+195, 168, 808, 283, 22, 55, 1, 0, 1
+196, 1, 223, 296, 57, 41, 1, 2, 1
+196, 3, 249, 324, 133, 143, 1, 2, 1
+196, 8, 671, 273, 23, 62, 1, 0, 1
+196, 55, 108, 280, 17, 41, 1, 0, 1
+196, 57, 57, 285, 14, 37, 1, 0, 1
+196, 61, 290, 261, 25, 19, 1, 2, 1
+196, 82, 368, 261, 23, 19, 1, 2, 1
+196, 108, 323, 294, 89, 63, 1, 2, 1
+196, 168, 809, 283, 21, 55, 1, 0, 1
+197, 1, 221, 295, 59, 43, 1, 2, 1
+197, 3, 245, 323, 134, 144, 1, 2, 1
+197, 8, 671, 272, 22, 62, 1, 0, 1
+197, 55, 106, 281, 17, 41, 1, 0, 1
+197, 57, 54, 282, 15, 41, 1, 0, 1
+197, 61, 289, 261, 26, 20, 1, 2, 1
+197, 82, 367, 261, 24, 19, 1, 2, 1
+197, 108, 323, 294, 89, 63, 1, 2, 1
+197, 168, 809, 284, 21, 54, 1, 0, 1
+198, 1, 220, 296, 59, 42, 1, 2, 1
+198, 3, 242, 322, 134, 146, 1, 2, 1
+198, 8, 671, 272, 22, 60, 1, 0, 1
+198, 55, 103, 281, 17, 41, 1, 0, 1
+198, 57, 51, 281, 16, 42, 1, 0, 1
+198, 61, 288, 261, 25, 19, 1, 2, 1
+198, 82, 366, 261, 25, 20, 1, 2, 1
+198, 108, 323, 294, 89, 63, 1, 2, 1
+198, 168, 810, 284, 21, 53, 1, 0, 1
+199, 1, 218, 296, 59, 41, 1, 2, 1
+199, 3, 240, 323, 133, 143, 1, 2, 1
+199, 8, 671, 271, 22, 60, 1, 0, 1
+199, 55, 102, 282, 17, 41, 1, 0, 1
+199, 57, 48, 282, 17, 42, 1, 0, 1
+199, 61, 288, 262, 25, 19, 1, 2, 1
+199, 82, 366, 262, 23, 20, 1, 2, 1
+199, 108, 323, 294, 88, 63, 1, 2, 1
+199, 168, 811, 283, 21, 53, 1, 0, 1
+200, 1, 217, 296, 59, 42, 1, 2, 1
+200, 3, 238, 323, 132, 144, 1, 2, 1
+200, 8, 671, 271, 21, 61, 1, 0, 1
+200, 55, 100, 282, 18, 42, 1, 0, 1
+200, 57, 45, 282, 17, 43, 1, 0, 1
+200, 61, 287, 262, 24, 19, 1, 2, 1
+200, 82, 366, 263, 23, 19, 1, 2, 1
+200, 108, 323, 294, 88, 63, 1, 2, 1
+200, 168, 810, 282, 22, 54, 1, 0, 1
+201, 1, 216, 296, 58, 41, 1, 2, 1
+201, 3, 236, 323, 131, 143, 1, 2, 1
+201, 8, 670, 271, 22, 61, 1, 0, 1
+201, 55, 98, 282, 18, 43, 1, 0, 1
+201, 57, 42, 282, 17, 43, 1, 0, 1
+201, 61, 287, 262, 24, 19, 1, 2, 1
+201, 82, 364, 263, 23, 19, 1, 2, 1
+201, 108, 323, 294, 89, 63, 1, 2, 1
+201, 168, 811, 281, 22, 56, 1, 0, 1
+202, 1, 215, 296, 59, 42, 1, 2, 1
+202, 3, 234, 324, 131, 141, 1, 2, 1
+202, 8, 670, 271, 22, 62, 1, 0, 1
+202, 55, 96, 283, 19, 43, 1, 0, 1
+202, 57, 40, 283, 17, 42, 1, 0, 1
+202, 61, 287, 262, 24, 19, 1, 2, 1
+202, 82, 364, 263, 22, 19, 1, 2, 1
+202, 108, 323, 293, 90, 65, 1, 2, 1
+202, 168, 811, 279, 24, 59, 1, 0, 1
+203, 1, 214, 297, 59, 41, 1, 2, 1
+203, 3, 232, 323, 129, 141, 1, 2, 1
+203, 8, 669, 271, 22, 63, 1, 0, 1
+203, 55, 94, 284, 18, 43, 1, 0, 1
+203, 57, 38, 283, 17, 42, 1, 0, 1
+203, 61, 287, 263, 23, 18, 1, 2, 1
+203, 82, 363, 264, 22, 19, 1, 2, 1
+203, 108, 322, 293, 92, 66, 1, 2, 1
+203, 168, 812, 279, 24, 59, 1, 0, 1
+204, 1, 213, 297, 60, 41, 1, 2, 1
+204, 3, 230, 324, 128, 139, 1, 2, 1
+204, 8, 668, 271, 23, 64, 1, 0, 1
+204, 55, 92, 285, 17, 43, 1, 0, 1
+204, 57, 36, 283, 17, 43, 1, 0, 1
+204, 61, 286, 262, 24, 18, 1, 2, 1
+204, 82, 363, 264, 22, 20, 1, 2, 1
+204, 108, 322, 293, 92, 65, 1, 2, 1
+204, 168, 814, 278, 24, 59, 1, 0, 1
+205, 1, 213, 297, 59, 42, 1, 2, 1
+205, 3, 229, 324, 127, 138, 1, 2, 1
+205, 8, 667, 271, 23, 64, 1, 0, 1
+205, 55, 89, 285, 19, 44, 1, 0, 1
+205, 57, 33, 283, 18, 43, 1, 0, 1
+205, 61, 285, 261, 25, 19, 1, 2, 1
+205, 82, 362, 264, 23, 20, 1, 2, 1
+205, 108, 323, 293, 92, 65, 1, 2, 1
+205, 168, 816, 277, 24, 61, 1, 0, 1
+206, 1, 212, 296, 59, 42, 1, 2, 1
+206, 3, 228, 323, 126, 138, 1, 2, 1
+206, 8, 667, 272, 23, 64, 1, 0, 1
+206, 55, 88, 284, 18, 44, 1, 0, 1
+206, 57, 33, 285, 16, 41, 1, 0, 1
+206, 61, 285, 262, 24, 18, 1, 2, 1
+206, 82, 361, 264, 23, 21, 1, 2, 1
+206, 108, 323, 292, 92, 66, 1, 2, 1
+206, 168, 818, 279, 23, 59, 1, 0, 1
+207, 1, 212, 296, 58, 41, 1, 2, 1
+207, 3, 224, 323, 129, 139, 1, 2, 1
+207, 8, 666, 271, 23, 65, 1, 0, 1
+207, 55, 86, 285, 19, 44, 1, 0, 1
+207, 57, 31, 285, 16, 42, 1, 0, 1
+207, 61, 284, 262, 24, 18, 1, 2, 1
+207, 108, 324, 293, 92, 65, 1, 2, 1
+207, 168, 820, 281, 22, 58, 1, 0, 1
+208, 1, 212, 297, 57, 40, 1, 2, 1
+208, 3, 222, 323, 129, 139, 1, 2, 1
+208, 8, 666, 273, 23, 64, 1, 0, 1
+208, 55, 84, 286, 19, 44, 1, 0, 1
+208, 57, 26, 286, 17, 43, 1, 0, 1
+208, 61, 283, 262, 25, 19, 1, 2, 1
+208, 108, 325, 293, 92, 66, 1, 2, 1
+208, 168, 820, 281, 23, 58, 1, 0, 1
+209, 1, 210, 296, 59, 41, 1, 2, 1
+209, 3, 221, 324, 127, 136, 1, 2, 1
+209, 8, 665, 273, 23, 64, 1, 0, 1
+209, 55, 83, 285, 19, 45, 1, 0, 1
+209, 57, 22, 286, 18, 43, 1, 0, 1
+209, 61, 282, 262, 25, 19, 1, 2, 1
+209, 108, 325, 293, 94, 66, 1, 2, 1
+209, 168, 822, 280, 23, 60, 1, 0, 1
+210, 1, 210, 297, 57, 40, 1, 2, 1
+210, 3, 219, 325, 127, 136, 1, 2, 1
+210, 8, 665, 272, 24, 66, 1, 0, 1
+210, 55, 81, 286, 19, 45, 1, 0, 1
+210, 57, 19, 285, 19, 45, 1, 0, 1
+210, 61, 282, 263, 23, 18, 1, 2, 1
+210, 108, 326, 294, 94, 66, 1, 2, 1
+210, 168, 824, 278, 23, 62, 1, 0, 1
+211, 1, 209, 297, 59, 41, 1, 2, 1
+211, 3, 217, 327, 126, 134, 1, 2, 1
+211, 8, 665, 272, 23, 66, 1, 0, 1
+211, 55, 80, 286, 19, 45, 1, 0, 1
+211, 57, 19, 286, 18, 45, 1, 0, 1
+211, 61, 282, 264, 23, 18, 1, 2, 1
+211, 108, 327, 295, 94, 66, 1, 2, 1
+211, 168, 825, 281, 23, 59, 1, 0, 1
+212, 1, 208, 297, 60, 41, 1, 2, 1
+212, 3, 215, 327, 126, 134, 1, 2, 1
+212, 8, 664, 272, 24, 67, 1, 0, 1
+212, 55, 78, 287, 19, 45, 1, 0, 1
+212, 57, 23, 286, 18, 45, 1, 0, 1
+212, 61, 282, 264, 22, 17, 1, 2, 1
+212, 108, 328, 295, 94, 67, 1, 2, 1
+212, 168, 827, 284, 22, 56, 1, 0, 1
+213, 1, 208, 297, 60, 41, 1, 2, 1
+213, 3, 213, 327, 125, 133, 1, 2, 1
+213, 8, 664, 273, 24, 66, 1, 0, 1
+213, 55, 77, 288, 19, 44, 1, 0, 1
+213, 57, 15, 288, 18, 43, 1, 0, 1
+213, 61, 282, 264, 23, 18, 1, 2, 1
+213, 108, 331, 296, 92, 64, 1, 2, 1
+213, 168, 827, 283, 25, 60, 1, 0, 1
+214, 1, 208, 297, 60, 42, 1, 2, 1
+214, 3, 211, 327, 126, 133, 1, 2, 1
+214, 8, 664, 273, 24, 67, 1, 0, 1
+214, 55, 75, 288, 19, 45, 1, 0, 1
+214, 57, 8, 289, 17, 41, 1, 0, 1
+214, 61, 281, 264, 24, 18, 1, 2, 1
+214, 108, 332, 296, 93, 64, 1, 2, 1
+214, 168, 831, 283, 24, 59, 1, 0, 1
+215, 1, 209, 297, 57, 40, 1, 2, 1
+215, 3, 210, 328, 125, 131, 1, 2, 1
+215, 8, 664, 274, 24, 66, 1, 0, 1
+215, 55, 74, 287, 20, 46, 1, 0, 1
+215, 57, 4, 288, 16, 40, 1, 0, 1
+215, 61, 281, 264, 24, 18, 1, 2, 1
+215, 108, 335, 296, 93, 63, 1, 2, 1
+215, 168, 833, 282, 25, 62, 1, 0, 1
+216, 1, 209, 297, 57, 40, 1, 2, 1
+216, 3, 209, 329, 124, 129, 1, 2, 1
+216, 8, 665, 275, 24, 65, 1, 0, 1
+216, 55, 73, 288, 19, 45, 1, 0, 1
+216, 57, 1, 290, 16, 38, 1, 0, 1
+216, 61, 282, 264, 24, 18, 1, 2, 1
+216, 108, 338, 296, 92, 63, 1, 2, 1
+216, 168, 834, 280, 26, 64, 1, 0, 1
+217, 1, 209, 297, 57, 40, 1, 2, 1
+217, 3, 209, 328, 123, 129, 1, 2, 1
+217, 8, 666, 276, 24, 65, 1, 0, 1
+217, 55, 72, 288, 19, 44, 1, 0, 1
+217, 57, 0, 290, 14, 39, 1, 0, 1
+217, 61, 282, 264, 23, 18, 1, 2, 1
+217, 108, 340, 297, 93, 61, 1, 2, 1
+217, 168, 838, 282, 25, 61, 1, 0, 1
+218, 1, 209, 296, 57, 40, 1, 2, 1
+218, 3, 209, 329, 123, 128, 1, 2, 1
+218, 8, 667, 277, 24, 64, 1, 0, 1
+218, 55, 70, 287, 19, 46, 1, 0, 1
+218, 57, 0, 290, 12, 39, 1, 0, 1
+218, 61, 282, 264, 23, 18, 1, 2, 1
+218, 108, 342, 296, 94, 62, 1, 2, 1
+218, 168, 840, 281, 26, 61, 1, 0, 1
+219, 1, 209, 294, 57, 41, 1, 2, 1
+219, 3, 207, 328, 126, 129, 1, 2, 1
+219, 8, 668, 278, 24, 64, 1, 0, 1
+219, 55, 68, 287, 20, 47, 1, 0, 1
+219, 57, 0, 291, 11, 39, 1, 0, 1
+219, 61, 283, 263, 22, 18, 1, 2, 1
+219, 108, 343, 295, 96, 62, 1, 2, 1
+219, 168, 843, 282, 26, 61, 1, 0, 1
+220, 1, 210, 295, 56, 40, 1, 2, 1
+220, 3, 205, 326, 126, 130, 1, 2, 1
+220, 8, 669, 276, 24, 66, 1, 0, 1
+220, 55, 67, 287, 20, 48, 1, 0, 1
+220, 57, 0, 293, 11, 39, 1, 0, 1
+220, 61, 283, 263, 22, 17, 1, 2, 1
+220, 108, 345, 295, 96, 62, 1, 2, 1
+220, 168, 846, 280, 27, 63, 1, 0, 1
+221, 1, 209, 294, 58, 41, 1, 2, 1
+221, 3, 204, 324, 128, 132, 1, 2, 1
+221, 8, 670, 276, 24, 66, 1, 0, 1
+221, 55, 65, 287, 20, 48, 1, 0, 1
+221, 57, 0, 293, 13, 40, 1, 0, 1
+221, 61, 284, 263, 22, 17, 1, 2, 1
+221, 108, 348, 294, 97, 62, 1, 2, 1
+221, 168, 850, 282, 26, 61, 1, 0, 1
+222, 1, 209, 293, 59, 42, 1, 2, 1
+222, 3, 204, 324, 129, 133, 1, 2, 1
+222, 8, 671, 274, 24, 68, 1, 0, 1
+222, 55, 65, 287, 20, 47, 1, 0, 1
+222, 57, 0, 293, 11, 40, 1, 0, 1
+222, 61, 284, 263, 23, 17, 1, 2, 1
+222, 108, 351, 293, 98, 62, 1, 2, 1
+222, 168, 853, 282, 26, 61, 1, 0, 1
+223, 1, 210, 292, 58, 43, 1, 2, 1
+223, 3, 204, 322, 131, 135, 1, 2, 1
+223, 8, 672, 273, 24, 69, 1, 0, 1
+223, 55, 64, 288, 20, 47, 1, 0, 1
+223, 57, 3, 292, 16, 42, 1, 0, 1
+223, 61, 284, 263, 22, 17, 1, 2, 1
+223, 108, 353, 292, 99, 63, 1, 2, 1
+223, 168, 856, 281, 27, 62, 1, 0, 1
+224, 1, 210, 293, 58, 42, 1, 2, 1
+224, 3, 203, 322, 132, 135, 1, 2, 1
+224, 8, 673, 273, 25, 69, 1, 0, 1
+224, 55, 63, 289, 20, 48, 1, 0, 1
+224, 57, 2, 291, 18, 45, 1, 0, 1
+224, 61, 285, 263, 21, 17, 1, 2, 1
+224, 108, 355, 292, 100, 64, 1, 2, 1
+224, 168, 860, 283, 26, 60, 1, 0, 1
+224, 212, 480, 260, 19, 35, 1, 0, 1
+225, 1, 211, 293, 57, 42, 1, 2, 1
+225, 3, 201, 322, 132, 135, 1, 2, 1
+225, 8, 674, 273, 24, 69, 1, 0, 1
+225, 55, 62, 289, 20, 47, 1, 0, 1
+225, 57, 1, 292, 17, 45, 1, 0, 1
+225, 61, 286, 263, 21, 17, 1, 2, 1
+225, 82, 346, 258, 17, 15, 1, 2, 1
+225, 108, 358, 291, 102, 65, 1, 2, 1
+225, 168, 864, 280, 27, 62, 1, 0, 1
+225, 212, 481, 260, 19, 36, 1, 0, 1
+226, 1, 211, 293, 57, 42, 1, 2, 1
+226, 3, 200, 323, 130, 134, 1, 2, 1
+226, 8, 675, 273, 25, 69, 1, 0, 1
+226, 55, 60, 290, 21, 49, 1, 0, 1
+226, 57, 1, 294, 17, 45, 1, 0, 1
+226, 61, 286, 263, 21, 16, 1, 2, 1
+226, 82, 345, 259, 18, 15, 1, 2, 1
+226, 108, 364, 291, 103, 65, 1, 2, 1
+226, 168, 867, 282, 26, 60, 1, 0, 1
+226, 212, 481, 261, 19, 37, 1, 0, 1
+227, 1, 212, 292, 55, 42, 1, 2, 1
+227, 3, 198, 322, 131, 135, 1, 2, 1
+227, 8, 676, 273, 25, 69, 1, 0, 1
+227, 55, 60, 290, 20, 50, 1, 0, 1
+227, 57, 0, 295, 17, 45, 1, 0, 1
+227, 82, 345, 261, 18, 14, 1, 2, 1
+227, 108, 369, 292, 104, 64, 1, 2, 1
+227, 168, 869, 282, 27, 61, 1, 0, 1
+227, 212, 481, 261, 20, 38, 1, 0, 1
+228, 1, 212, 293, 55, 41, 1, 2, 1
+228, 3, 199, 323, 131, 135, 1, 2, 1
+228, 8, 677, 274, 25, 69, 1, 0, 1
+228, 55, 59, 291, 20, 49, 1, 0, 1
+228, 57, 0, 296, 17, 46, 1, 0, 1
+228, 61, 287, 264, 22, 17, 1, 2, 1
+228, 82, 346, 261, 18, 15, 1, 2, 1
+228, 108, 373, 291, 107, 65, 1, 2, 1
+228, 168, 874, 282, 26, 60, 1, 0, 1
+228, 212, 482, 261, 20, 38, 1, 0, 1
+229, 1, 211, 291, 58, 44, 1, 2, 1
+229, 3, 200, 323, 130, 135, 1, 2, 1
+229, 8, 678, 273, 25, 71, 1, 0, 1
+229, 55, 58, 291, 21, 49, 1, 0, 1
+229, 57, 0, 295, 16, 47, 1, 0, 1
+229, 61, 288, 264, 21, 17, 1, 2, 1
+229, 82, 346, 260, 19, 15, 1, 2, 1
+229, 108, 377, 291, 108, 65, 1, 2, 1
+229, 168, 878, 283, 26, 59, 1, 0, 1
+229, 212, 482, 261, 20, 38, 1, 0, 1
+230, 1, 212, 290, 58, 44, 1, 2, 1
+230, 3, 199, 323, 130, 134, 1, 2, 1
+230, 8, 679, 274, 25, 70, 1, 0, 1
+230, 55, 57, 292, 20, 49, 1, 0, 1
+230, 57, 0, 295, 15, 47, 1, 0, 1
+230, 61, 288, 264, 21, 17, 1, 2, 1
+230, 82, 347, 261, 18, 14, 1, 2, 1
+230, 108, 380, 291, 109, 65, 1, 2, 1
+230, 168, 882, 277, 27, 63, 1, 0, 1
+230, 212, 484, 261, 18, 37, 1, 0, 1
+231, 1, 213, 290, 57, 42, 1, 2, 1
+231, 3, 199, 322, 130, 133, 1, 2, 1
+231, 8, 680, 276, 24, 69, 1, 0, 1
+231, 55, 56, 292, 20, 49, 1, 0, 1
+231, 57, 0, 295, 14, 48, 1, 0, 1
+231, 61, 288, 264, 22, 17, 1, 2, 1
+231, 82, 347, 261, 19, 15, 1, 2, 1
+231, 108, 385, 290, 109, 64, 1, 2, 1
+231, 168, 887, 280, 27, 61, 1, 0, 1
+231, 212, 484, 261, 19, 37, 1, 0, 1
+232, 1, 215, 290, 54, 41, 1, 2, 1
+232, 3, 198, 321, 128, 133, 1, 2, 1
+232, 8, 681, 276, 24, 69, 1, 0, 1
+232, 55, 56, 293, 20, 48, 1, 0, 1
+232, 57, 0, 295, 14, 48, 1, 0, 1
+232, 61, 290, 264, 21, 17, 1, 2, 1
+232, 82, 348, 261, 19, 15, 1, 2, 1
+232, 108, 392, 291, 107, 62, 1, 2, 1
+232, 168, 891, 278, 28, 63, 1, 0, 1
+232, 212, 485, 263, 17, 34, 1, 0, 1
+233, 1, 217, 290, 52, 40, 1, 2, 1
+233, 3, 198, 320, 129, 132, 1, 2, 1
+233, 8, 683, 278, 24, 68, 1, 0, 1
+233, 55, 55, 292, 20, 50, 1, 0, 1
+233, 57, 0, 297, 13, 45, 1, 0, 1
+233, 61, 290, 264, 21, 16, 1, 2, 1
+233, 82, 348, 261, 19, 14, 1, 2, 1
+233, 108, 397, 292, 107, 61, 1, 2, 1
+233, 168, 895, 277, 28, 65, 1, 0, 1
+233, 212, 485, 262, 17, 34, 1, 0, 1
+234, 1, 218, 290, 51, 39, 1, 2, 1
+234, 3, 197, 319, 130, 134, 1, 2, 1
+234, 8, 684, 277, 24, 69, 1, 0, 1
+234, 55, 54, 292, 21, 50, 1, 0, 1
+234, 57, 0, 299, 12, 43, 1, 0, 1
+234, 61, 291, 263, 21, 17, 1, 2, 1
+234, 82, 349, 261, 19, 14, 1, 2, 1
+234, 108, 401, 291, 110, 61, 1, 2, 1
+234, 168, 900, 278, 28, 65, 1, 0, 1
+234, 212, 486, 261, 17, 34, 1, 0, 1
+235, 1, 221, 289, 48, 36, 1, 2, 1
+235, 3, 197, 318, 130, 134, 1, 2, 1
+235, 8, 686, 276, 24, 69, 1, 0, 1
+235, 55, 53, 291, 21, 50, 1, 0, 1
+235, 57, 0, 299, 11, 42, 1, 0, 1
+235, 61, 291, 263, 21, 17, 1, 2, 1
+235, 82, 350, 260, 20, 14, 1, 2, 1
+235, 108, 405, 289, 113, 62, 1, 2, 1
+235, 168, 905, 276, 29, 66, 1, 0, 1
+235, 212, 486, 260, 17, 36, 1, 0, 1
+236, 1, 222, 289, 47, 35, 1, 2, 1
+236, 3, 198, 318, 129, 132, 1, 2, 1
+236, 8, 688, 274, 24, 70, 1, 0, 1
+236, 55, 53, 291, 20, 50, 1, 0, 1
+236, 57, 0, 299, 11, 42, 1, 0, 1
+236, 61, 292, 263, 20, 17, 1, 2, 1
+236, 82, 351, 259, 21, 15, 1, 2, 1
+236, 108, 410, 288, 115, 63, 1, 2, 1
+236, 168, 910, 275, 29, 66, 1, 0, 1
+236, 212, 486, 259, 18, 37, 1, 0, 1
+237, 1, 223, 289, 47, 34, 1, 2, 1
+237, 3, 199, 316, 130, 133, 1, 2, 1
+237, 8, 689, 273, 25, 71, 1, 0, 1
+237, 55, 53, 291, 20, 50, 1, 0, 1
+237, 61, 293, 263, 20, 16, 1, 2, 1
+237, 82, 351, 259, 21, 15, 1, 2, 1
+237, 108, 414, 287, 119, 65, 1, 2, 1
+237, 168, 915, 274, 30, 67, 1, 0, 1
+238, 1, 224, 288, 47, 35, 1, 2, 1
+238, 3, 199, 315, 131, 133, 1, 2, 1
+238, 8, 691, 274, 25, 71, 1, 0, 1
+238, 55, 52, 291, 21, 50, 1, 0, 1
+238, 82, 352, 258, 21, 16, 1, 2, 1
+238, 108, 419, 286, 121, 66, 1, 2, 1
+238, 168, 920, 273, 30, 68, 1, 0, 1
+239, 1, 224, 287, 49, 35, 1, 2, 1
+239, 3, 200, 314, 131, 133, 1, 2, 1
+239, 8, 693, 274, 25, 71, 1, 0, 1
+239, 55, 52, 290, 21, 50, 1, 0, 1
+239, 61, 297, 261, 20, 16, 1, 2, 1
+239, 82, 353, 258, 21, 16, 1, 2, 1
+239, 108, 425, 286, 120, 65, 1, 2, 1
+239, 168, 924, 272, 30, 68, 1, 0, 1
+240, 1, 225, 286, 49, 36, 1, 2, 1
+240, 3, 202, 314, 130, 131, 1, 2, 1
+240, 8, 694, 273, 25, 72, 1, 0, 1
+240, 55, 53, 290, 20, 51, 1, 0, 1
+240, 61, 298, 261, 20, 16, 1, 2, 1
+240, 82, 353, 257, 22, 17, 1, 2, 1
+240, 108, 432, 285, 121, 65, 1, 2, 1
+240, 168, 929, 270, 30, 70, 1, 0, 1
+241, 1, 227, 286, 48, 35, 1, 2, 1
+241, 3, 204, 314, 128, 129, 1, 2, 1
+241, 8, 696, 273, 25, 73, 1, 0, 1
+241, 55, 52, 290, 21, 51, 1, 0, 1
+241, 82, 354, 257, 22, 17, 1, 2, 1
+241, 108, 439, 286, 122, 64, 1, 2, 1
+241, 168, 934, 269, 25, 71, 1, 0, 1
+242, 1, 228, 286, 49, 35, 1, 2, 1
+242, 3, 205, 314, 128, 129, 1, 2, 1
+242, 8, 698, 273, 25, 73, 1, 0, 1
+242, 55, 52, 290, 21, 51, 1, 0, 1
+242, 82, 356, 257, 22, 17, 1, 2, 1
+242, 108, 445, 286, 121, 64, 1, 2, 1
+242, 168, 939, 277, 20, 58, 1, 0, 1
+243, 1, 230, 285, 49, 36, 1, 2, 1
+243, 3, 206, 312, 129, 129, 1, 2, 1
+243, 8, 701, 274, 24, 71, 1, 0, 1
+243, 55, 52, 290, 21, 51, 1, 0, 1
+243, 82, 357, 256, 23, 18, 1, 2, 1
+243, 108, 450, 286, 120, 62, 1, 2, 1
+243, 168, 942, 280, 17, 53, 1, 0, 1
+244, 1, 232, 285, 50, 36, 1, 2, 1
+244, 3, 207, 312, 129, 128, 1, 2, 1
+244, 8, 704, 274, 24, 70, 1, 0, 1
+244, 55, 52, 290, 21, 51, 1, 0, 1
+244, 82, 359, 256, 22, 17, 1, 2, 1
+244, 108, 456, 285, 119, 63, 1, 2, 1
+244, 168, 947, 281, 12, 52, 1, 0, 1
+244, 229, 391, 274, 29, 22, 1, 2, 1
+245, 1, 234, 285, 49, 36, 1, 2, 1
+245, 3, 208, 312, 130, 129, 1, 2, 1
+245, 8, 706, 277, 24, 69, 1, 0, 1
+245, 55, 52, 289, 22, 53, 1, 0, 1
+245, 82, 361, 257, 20, 15, 1, 2, 1
+245, 108, 463, 286, 118, 61, 1, 2, 1
+245, 229, 394, 274, 29, 23, 1, 2, 1
+246, 1, 235, 284, 49, 36, 1, 2, 1
+246, 3, 209, 311, 131, 129, 1, 2, 1
+246, 8, 709, 277, 24, 69, 1, 0, 1
+246, 55, 52, 289, 22, 53, 1, 0, 1
+246, 82, 364, 256, 20, 16, 1, 2, 1
+246, 108, 470, 285, 120, 62, 1, 2, 1
+246, 229, 396, 275, 28, 22, 1, 2, 1
+247, 1, 236, 284, 49, 36, 1, 2, 1
+247, 3, 212, 310, 132, 130, 1, 2, 1
+247, 8, 712, 275, 24, 70, 1, 0, 1
+247, 55, 52, 289, 22, 54, 1, 0, 1
+247, 82, 365, 256, 21, 16, 1, 2, 1
+247, 108, 484, 284, 122, 63, 1, 2, 1
+247, 229, 396, 275, 31, 24, 1, 2, 1
+248, 1, 238, 284, 49, 35, 1, 2, 1
+248, 3, 213, 310, 134, 130, 1, 2, 1
+248, 8, 716, 277, 24, 70, 1, 0, 1
+248, 55, 52, 290, 22, 53, 1, 0, 1
+248, 82, 366, 257, 21, 16, 1, 2, 1
+248, 108, 493, 284, 122, 62, 1, 2, 1
+248, 229, 398, 272, 34, 27, 1, 2, 1
+249, 1, 242, 285, 48, 34, 1, 2, 1
+249, 3, 216, 311, 134, 130, 1, 2, 1
+249, 8, 718, 277, 24, 72, 1, 0, 1
+249, 55, 53, 291, 21, 52, 1, 0, 1
+249, 82, 367, 257, 22, 17, 1, 2, 1
+249, 108, 499, 284, 125, 63, 1, 2, 1
+249, 229, 398, 268, 38, 30, 1, 2, 1
+250, 1, 244, 286, 48, 34, 1, 2, 1
+250, 3, 218, 311, 135, 129, 1, 2, 1
+250, 8, 722, 276, 25, 72, 1, 0, 1
+250, 55, 53, 292, 21, 53, 1, 0, 1
+250, 61, 315, 259, 19, 15, 1, 2, 1
+250, 82, 368, 257, 23, 18, 1, 2, 1
+250, 108, 506, 283, 126, 63, 1, 2, 1
+250, 229, 401, 270, 35, 29, 1, 2, 1
+250, 234, 671, 286, 23, 68, 1, 0, 1
+251, 1, 247, 285, 48, 35, 1, 2, 1
+251, 3, 223, 312, 134, 128, 1, 2, 1
+251, 8, 725, 275, 25, 74, 1, 0, 1
+251, 55, 53, 293, 22, 52, 1, 0, 1
+251, 61, 314, 258, 21, 16, 1, 2, 1
+251, 82, 370, 256, 23, 19, 1, 2, 1
+251, 108, 510, 283, 126, 63, 1, 2, 1
+251, 229, 405, 275, 32, 26, 1, 2, 1
+251, 234, 676, 288, 22, 69, 1, 0, 1
+252, 1, 249, 285, 48, 35, 1, 2, 1
+252, 3, 226, 312, 135, 128, 1, 2, 1
+252, 8, 728, 274, 25, 74, 1, 0, 1
+252, 55, 54, 294, 21, 51, 1, 0, 1
+252, 61, 316, 258, 20, 16, 1, 2, 1
+252, 82, 373, 257, 22, 17, 1, 2, 1
+252, 108, 515, 283, 124, 63, 1, 2, 1
+252, 229, 407, 275, 32, 26, 1, 2, 1
+252, 234, 679, 291, 22, 66, 1, 0, 1
+253, 1, 251, 285, 48, 35, 1, 2, 1
+253, 3, 230, 313, 134, 127, 1, 2, 1
+253, 8, 731, 272, 25, 76, 1, 0, 1
+253, 55, 55, 295, 21, 52, 1, 0, 1
+253, 61, 318, 258, 20, 16, 1, 2, 1
+253, 82, 375, 257, 22, 18, 1, 2, 1
+253, 108, 527, 283, 126, 63, 1, 2, 1
+253, 229, 408, 274, 34, 27, 1, 2, 1
+253, 234, 685, 293, 21, 61, 1, 0, 1
+254, 1, 255, 285, 48, 35, 1, 2, 1
+254, 3, 232, 312, 137, 128, 1, 2, 1
+254, 8, 734, 271, 25, 76, 1, 0, 1
+254, 55, 57, 295, 21, 53, 1, 0, 1
+254, 82, 377, 257, 23, 19, 1, 2, 1
+254, 108, 536, 281, 128, 64, 1, 2, 1
+254, 229, 411, 272, 36, 29, 1, 2, 1
+254, 234, 690, 294, 20, 60, 1, 0, 1
+255, 1, 257, 286, 48, 35, 1, 2, 1
+255, 3, 235, 313, 138, 128, 1, 2, 1
+255, 8, 738, 270, 25, 77, 1, 0, 1
+255, 55, 59, 296, 22, 54, 1, 0, 1
+255, 82, 379, 258, 22, 18, 1, 2, 1
+255, 108, 543, 280, 129, 65, 1, 2, 1
+255, 229, 413, 272, 36, 29, 1, 2, 1
+255, 234, 697, 295, 19, 57, 1, 0, 1
+256, 1, 259, 286, 49, 35, 1, 2, 1
+256, 3, 238, 313, 139, 129, 1, 2, 1
+256, 8, 742, 271, 25, 76, 1, 0, 1
+256, 55, 61, 297, 22, 54, 1, 0, 1
+256, 82, 382, 259, 22, 17, 1, 2, 1
+256, 108, 555, 280, 130, 66, 1, 2, 1
+256, 229, 417, 275, 33, 27, 1, 2, 1
+256, 234, 702, 296, 20, 59, 1, 0, 1
+257, 1, 261, 285, 49, 36, 1, 2, 1
+257, 3, 242, 312, 140, 129, 1, 2, 1
+257, 8, 746, 270, 25, 76, 1, 0, 1
+257, 55, 61, 297, 23, 55, 1, 0, 1
+257, 82, 385, 258, 22, 17, 1, 2, 1
+257, 108, 561, 278, 133, 68, 1, 2, 1
+257, 229, 419, 275, 35, 28, 1, 2, 1
+257, 234, 707, 297, 19, 58, 1, 0, 1
+258, 1, 265, 285, 48, 35, 1, 2, 1
+258, 3, 247, 313, 140, 128, 1, 2, 1
+258, 8, 750, 271, 25, 76, 1, 0, 1
+258, 55, 64, 298, 22, 54, 1, 0, 1
+258, 82, 387, 257, 22, 19, 1, 2, 1
+258, 108, 571, 277, 133, 69, 1, 2, 1
+258, 229, 423, 275, 34, 28, 1, 2, 1
+259, 1, 269, 286, 46, 33, 1, 2, 1
+259, 3, 252, 313, 141, 128, 1, 2, 1
+259, 8, 755, 273, 24, 75, 1, 0, 1
+259, 55, 65, 298, 22, 54, 1, 0, 1
+259, 82, 389, 257, 22, 19, 1, 2, 1
+259, 108, 589, 278, 133, 68, 1, 2, 1
+259, 229, 426, 275, 35, 28, 1, 2, 1
+260, 1, 272, 286, 46, 33, 1, 2, 1
+260, 3, 255, 313, 141, 127, 1, 2, 1
+260, 8, 757, 273, 26, 75, 1, 0, 1
+260, 55, 65, 298, 23, 54, 1, 0, 1
+260, 82, 392, 258, 22, 18, 1, 2, 1
+260, 108, 594, 280, 131, 66, 1, 2, 1
+260, 212, 479, 261, 17, 35, 1, 0, 1
+260, 229, 429, 274, 35, 28, 1, 2, 1
+261, 1, 275, 285, 45, 33, 1, 2, 1
+261, 3, 259, 313, 143, 127, 1, 2, 1
+261, 8, 761, 273, 27, 75, 1, 0, 1
+261, 55, 66, 298, 23, 55, 1, 0, 1
+261, 82, 395, 259, 21, 17, 1, 2, 1
+261, 108, 607, 279, 134, 67, 1, 2, 1
+261, 212, 480, 259, 17, 37, 1, 0, 1
+261, 229, 432, 274, 35, 28, 1, 2, 1
+262, 1, 277, 284, 46, 35, 1, 2, 1
+262, 3, 265, 313, 142, 126, 1, 2, 1
+262, 8, 765, 274, 29, 76, 1, 0, 1
+262, 55, 67, 299, 23, 54, 1, 0, 1
+262, 82, 398, 259, 20, 17, 1, 2, 1
+262, 108, 620, 278, 135, 67, 1, 2, 1
+262, 212, 485, 259, 16, 38, 1, 0, 1
+262, 229, 436, 275, 34, 27, 1, 2, 1
+262, 249, 571, 266, 21, 53, 1, 0, 1
+263, 1, 281, 284, 45, 34, 1, 2, 1
+263, 3, 269, 313, 142, 125, 1, 2, 1
+263, 8, 769, 274, 28, 76, 1, 0, 1
+263, 55, 69, 299, 22, 54, 1, 0, 1
+263, 82, 401, 259, 20, 16, 1, 2, 1
+263, 108, 633, 278, 143, 70, 1, 2, 1
+263, 212, 487, 260, 16, 37, 1, 0, 1
+263, 229, 439, 275, 35, 28, 1, 2, 1
+263, 249, 577, 265, 21, 54, 1, 0, 1
+264, 1, 284, 284, 45, 33, 1, 2, 1
+264, 3, 274, 312, 145, 127, 1, 2, 1
+264, 55, 71, 299, 23, 55, 1, 0, 1
+264, 82, 403, 258, 21, 17, 1, 2, 1
+264, 108, 644, 277, 145, 72, 1, 2, 1
+264, 212, 491, 260, 15, 37, 1, 0, 1
+264, 229, 441, 275, 37, 29, 1, 2, 1
+264, 249, 580, 264, 22, 55, 1, 0, 1
+265, 1, 286, 284, 45, 33, 1, 2, 1
+265, 3, 277, 312, 148, 128, 1, 2, 1
+265, 8, 780, 281, 28, 72, 1, 0, 1
+265, 55, 72, 299, 23, 55, 1, 0, 1
+265, 82, 404, 258, 23, 18, 1, 2, 1
+265, 108, 648, 278, 142, 71, 1, 2, 1
+265, 212, 491, 260, 16, 37, 1, 0, 1
+265, 229, 443, 274, 39, 30, 1, 2, 1
+266, 1, 289, 284, 45, 33, 1, 2, 1
+266, 3, 283, 311, 149, 129, 1, 2, 1
+266, 8, 786, 280, 29, 73, 1, 0, 1
+266, 55, 75, 299, 23, 55, 1, 0, 1
+266, 82, 407, 258, 22, 18, 1, 2, 1
+266, 108, 660, 277, 146, 73, 1, 2, 1
+266, 212, 497, 258, 16, 41, 1, 0, 1
+266, 229, 445, 274, 41, 32, 1, 2, 1
+267, 1, 292, 284, 44, 33, 1, 2, 1
+267, 3, 286, 311, 151, 129, 1, 2, 1
+267, 8, 790, 281, 29, 73, 1, 0, 1
+267, 55, 76, 300, 23, 54, 1, 0, 1
+267, 82, 409, 258, 22, 19, 1, 2, 1
+267, 108, 675, 276, 151, 76, 1, 2, 1
+267, 212, 500, 257, 17, 42, 1, 0, 1
+267, 229, 449, 275, 41, 32, 1, 2, 1
+268, 1, 296, 284, 44, 32, 1, 2, 1
+268, 3, 292, 312, 150, 128, 1, 2, 1
+268, 55, 78, 300, 23, 54, 1, 0, 1
+268, 82, 412, 259, 22, 19, 1, 2, 1
+268, 108, 695, 278, 142, 71, 1, 2, 1
+268, 212, 503, 258, 16, 40, 1, 0, 1
+268, 229, 452, 274, 43, 34, 1, 2, 1
+268, 261, 524, 252, 20, 51, 1, 0, 1
+269, 1, 299, 284, 43, 31, 1, 2, 1
+269, 3, 298, 312, 151, 129, 1, 2, 1
+269, 55, 78, 300, 24, 54, 1, 0, 1
+269, 61, 353, 258, 19, 15, 1, 2, 1
+269, 82, 414, 259, 23, 19, 1, 2, 1
+269, 108, 707, 278, 139, 68, 1, 2, 1
+269, 212, 505, 258, 16, 39, 1, 0, 1
+269, 229, 455, 274, 43, 34, 1, 2, 1
+269, 234, 783, 288, 36, 99, 1, 0, 1
+269, 261, 527, 252, 19, 51, 1, 0, 1
+270, 1, 302, 283, 43, 31, 1, 2, 1
+270, 3, 304, 312, 151, 127, 1, 2, 1
+270, 55, 79, 298, 24, 56, 1, 0, 1
+270, 61, 356, 257, 19, 15, 1, 2, 1
+270, 82, 417, 259, 22, 18, 1, 2, 1
+270, 108, 723, 278, 138, 66, 1, 2, 1
+270, 212, 508, 257, 15, 39, 1, 0, 1
+270, 229, 457, 273, 45, 35, 1, 2, 1
+270, 234, 787, 289, 36, 100, 1, 0, 1
+270, 261, 530, 250, 20, 52, 1, 0, 1
+271, 1, 307, 282, 42, 31, 1, 2, 1
+271, 3, 310, 312, 150, 125, 1, 2, 1
+271, 55, 81, 297, 23, 56, 1, 0, 1
+271, 61, 359, 257, 18, 15, 1, 2, 1
+271, 82, 421, 258, 22, 18, 1, 2, 1
+271, 108, 738, 279, 137, 64, 1, 2, 1
+271, 212, 509, 255, 16, 40, 1, 0, 1
+271, 229, 462, 273, 44, 35, 1, 2, 1
+271, 234, 790, 292, 35, 99, 1, 0, 1
+271, 261, 535, 257, 17, 45, 1, 0, 1
+272, 1, 310, 282, 42, 31, 1, 2, 1
+272, 3, 316, 311, 151, 125, 1, 2, 1
+272, 55, 82, 296, 23, 56, 1, 0, 1
+272, 61, 361, 257, 19, 15, 1, 2, 1
+272, 82, 424, 258, 21, 18, 1, 2, 1
+272, 108, 752, 278, 141, 66, 1, 2, 1
+272, 212, 512, 257, 15, 38, 1, 0, 1
+272, 229, 467, 274, 42, 34, 1, 2, 1
+272, 234, 796, 292, 36, 101, 1, 0, 1
+272, 261, 537, 256, 18, 46, 1, 0, 1
+273, 1, 311, 282, 44, 31, 1, 2, 1
+273, 3, 324, 310, 152, 125, 1, 2, 1
+273, 55, 83, 297, 24, 55, 1, 0, 1
+273, 61, 363, 257, 19, 15, 1, 2, 1
+273, 82, 426, 258, 23, 19, 1, 2, 1
+273, 108, 759, 279, 140, 65, 1, 2, 1
+273, 212, 516, 256, 15, 39, 1, 0, 1
+273, 229, 471, 275, 41, 32, 1, 2, 1
+273, 234, 803, 292, 36, 103, 1, 0, 1
+273, 261, 541, 257, 18, 45, 1, 0, 1
+274, 1, 314, 281, 42, 30, 1, 2, 1
+274, 3, 329, 309, 153, 125, 1, 2, 1
+274, 55, 83, 295, 24, 57, 1, 0, 1
+274, 61, 366, 255, 19, 16, 1, 2, 1
+274, 82, 428, 257, 23, 20, 1, 2, 1
+274, 108, 770, 277, 150, 69, 1, 2, 1
+274, 212, 519, 257, 15, 39, 1, 0, 1
+274, 229, 475, 275, 41, 33, 1, 2, 1
+274, 234, 811, 293, 37, 106, 1, 0, 1
+274, 261, 544, 259, 17, 43, 1, 0, 1
+275, 1, 318, 280, 40, 30, 1, 2, 1
+275, 3, 333, 308, 157, 126, 1, 2, 1
+275, 55, 84, 295, 25, 57, 1, 0, 1
+275, 61, 368, 255, 19, 16, 1, 2, 1
+275, 82, 431, 256, 23, 20, 1, 2, 1
+275, 108, 787, 279, 141, 63, 1, 2, 1
+275, 212, 522, 257, 15, 38, 1, 0, 1
+275, 229, 477, 275, 43, 33, 1, 2, 1
+275, 234, 818, 291, 39, 111, 1, 0, 1
+275, 261, 548, 258, 17, 43, 1, 0, 1
+276, 1, 321, 281, 39, 28, 1, 2, 1
+276, 3, 340, 308, 157, 126, 1, 2, 1
+276, 55, 86, 295, 24, 57, 1, 0, 1
+276, 82, 434, 256, 23, 19, 1, 2, 1
+276, 108, 797, 280, 137, 62, 1, 2, 1
+276, 212, 525, 257, 15, 37, 1, 0, 1
+276, 229, 480, 275, 44, 34, 1, 2, 1
+276, 234, 827, 292, 39, 114, 1, 0, 1
+276, 261, 550, 258, 17, 43, 1, 0, 1
+277, 1, 324, 279, 40, 29, 1, 2, 1
+277, 3, 348, 307, 159, 127, 1, 2, 1
+277, 55, 87, 295, 25, 57, 1, 0, 1
+277, 82, 437, 256, 24, 19, 1, 2, 1
+277, 108, 808, 279, 141, 63, 1, 2, 1
+277, 212, 528, 256, 15, 38, 1, 0, 1
+277, 229, 484, 275, 44, 34, 1, 2, 1
+277, 234, 835, 295, 40, 113, 1, 0, 1
+277, 261, 553, 260, 16, 40, 1, 0, 1
+277, 275, 796, 282, 59, 59, 1, 2, 1
+278, 1, 327, 278, 40, 29, 1, 2, 1
+278, 3, 354, 308, 160, 126, 1, 2, 1
+278, 55, 88, 295, 24, 58, 1, 0, 1
+278, 82, 439, 256, 24, 19, 1, 2, 1
+278, 108, 821, 276, 138, 63, 1, 2, 1
+278, 212, 531, 257, 15, 37, 1, 0, 1
+278, 229, 487, 274, 46, 35, 1, 2, 1
+278, 234, 843, 297, 41, 113, 1, 0, 1
+278, 261, 553, 261, 16, 39, 1, 0, 1
+278, 275, 801, 282, 59, 60, 1, 2, 1
+279, 1, 330, 278, 40, 29, 1, 2, 1
+279, 3, 362, 308, 162, 126, 1, 2, 1
+279, 55, 88, 296, 25, 58, 1, 0, 1
+279, 61, 376, 252, 21, 17, 1, 2, 1
+279, 82, 441, 256, 24, 19, 1, 2, 1
+279, 108, 830, 277, 129, 63, 1, 2, 1
+279, 212, 533, 257, 15, 36, 1, 0, 1
+279, 229, 492, 276, 45, 33, 1, 2, 1
+279, 234, 850, 299, 41, 114, 1, 0, 1
+279, 261, 553, 261, 16, 39, 1, 0, 1
+280, 1, 333, 279, 39, 28, 1, 2, 1
+280, 3, 368, 309, 163, 126, 1, 2, 1
+280, 55, 89, 296, 24, 59, 1, 0, 1
+280, 61, 379, 253, 18, 16, 1, 2, 1
+280, 82, 444, 256, 24, 20, 1, 2, 1
+280, 108, 842, 277, 117, 63, 1, 2, 1
+280, 212, 537, 257, 14, 37, 1, 0, 1
+280, 229, 495, 277, 45, 32, 1, 2, 1
+280, 234, 858, 299, 42, 118, 1, 0, 1
+280, 249, 609, 268, 25, 64, 1, 0, 1
+280, 261, 559, 261, 17, 40, 1, 0, 1
+280, 280, 591, 261, 16, 46, 1, 0, 1
+281, 1, 336, 279, 39, 28, 1, 2, 1
+281, 3, 376, 310, 163, 125, 1, 2, 1
+281, 8, 859, 274, 35, 91, 1, 0, 1
+281, 55, 90, 299, 24, 57, 1, 0, 1
+281, 61, 381, 253, 18, 16, 1, 2, 1
+281, 82, 446, 256, 25, 21, 1, 2, 1
+281, 212, 541, 254, 14, 39, 1, 0, 1
+281, 229, 499, 277, 46, 33, 1, 2, 1
+281, 234, 867, 300, 44, 119, 1, 0, 1
+281, 249, 615, 271, 23, 62, 1, 0, 1
+281, 261, 561, 257, 18, 44, 1, 0, 1
+281, 280, 595, 261, 17, 47, 1, 0, 1
+282, 1, 340, 280, 37, 27, 1, 2, 1
+282, 3, 382, 310, 164, 125, 1, 2, 1
+282, 8, 864, 273, 33, 90, 1, 0, 1
+282, 55, 91, 299, 24, 57, 1, 0, 1
+282, 82, 449, 257, 25, 20, 1, 2, 1
+282, 212, 543, 254, 15, 38, 1, 0, 1
+282, 229, 503, 277, 48, 33, 1, 2, 1
+282, 234, 876, 304, 45, 118, 1, 0, 1
+282, 249, 617, 276, 23, 57, 1, 0, 1
+282, 261, 563, 258, 18, 43, 1, 0, 1
+282, 280, 598, 260, 16, 46, 1, 0, 1
+283, 1, 342, 279, 40, 28, 1, 2, 1
+283, 3, 390, 309, 166, 125, 1, 2, 1
+283, 8, 869, 273, 33, 91, 1, 0, 1
+283, 55, 94, 299, 24, 58, 1, 0, 1
+283, 82, 451, 256, 25, 21, 1, 2, 1
+283, 229, 507, 278, 48, 34, 1, 2, 1
+283, 234, 890, 305, 45, 118, 1, 0, 1
+283, 249, 620, 274, 22, 58, 1, 0, 1
+283, 261, 566, 258, 18, 43, 1, 0, 1
+283, 280, 601, 260, 16, 46, 1, 0, 1
+283, 285, 891, 284, 68, 54, 1, 2, 1
+284, 1, 345, 279, 39, 27, 1, 2, 1
+284, 3, 398, 311, 167, 124, 1, 2, 1
+284, 8, 875, 273, 33, 95, 1, 0, 1
+284, 55, 96, 299, 24, 59, 1, 0, 1
+284, 82, 454, 256, 25, 21, 1, 2, 1
+284, 229, 510, 279, 50, 33, 1, 2, 1
+284, 234, 901, 305, 46, 120, 1, 0, 1
+284, 249, 622, 273, 22, 58, 1, 0, 1
+284, 261, 571, 257, 18, 44, 1, 0, 1
+284, 285, 906, 289, 53, 42, 1, 2, 1
+285, 1, 349, 279, 38, 27, 1, 2, 1
+285, 3, 405, 310, 169, 125, 1, 2, 1
+285, 8, 881, 274, 32, 94, 1, 0, 1
+285, 55, 97, 300, 25, 60, 1, 0, 1
+285, 82, 457, 256, 25, 21, 1, 2, 1
+285, 229, 514, 279, 50, 33, 1, 2, 1
+285, 234, 910, 305, 48, 123, 1, 0, 1
+285, 249, 626, 272, 23, 59, 1, 0, 1
+285, 261, 574, 260, 17, 41, 1, 0, 1
+285, 285, 919, 289, 40, 38, 1, 2, 1
+285, 288, 652, 266, 18, 61, 1, 0, 1
+286, 1, 352, 279, 37, 26, 1, 2, 1
+286, 3, 412, 310, 170, 125, 1, 2, 1
+286, 8, 889, 273, 32, 95, 1, 0, 1
+286, 55, 98, 301, 25, 59, 1, 0, 1
+286, 82, 460, 257, 24, 20, 1, 2, 1
+286, 229, 518, 278, 52, 35, 1, 2, 1
+286, 234, 918, 304, 41, 126, 1, 0, 1
+286, 249, 629, 273, 23, 59, 1, 0, 1
+286, 261, 575, 258, 18, 42, 1, 0, 1
+286, 285, 929, 291, 30, 32, 1, 2, 1
+286, 288, 657, 267, 18, 59, 1, 0, 1
+287, 1, 355, 279, 37, 26, 1, 2, 1
+287, 3, 422, 310, 172, 125, 1, 2, 1
+287, 8, 895, 273, 33, 95, 1, 0, 1
+287, 55, 99, 302, 24, 59, 1, 0, 1
+287, 82, 462, 257, 24, 20, 1, 2, 1
+287, 229, 522, 278, 54, 35, 1, 2, 1
+287, 234, 926, 306, 33, 121, 1, 0, 1
+287, 249, 630, 273, 23, 59, 1, 0, 1
+287, 261, 578, 258, 17, 42, 1, 0, 1
+287, 288, 660, 266, 19, 61, 1, 0, 1
+288, 1, 358, 279, 37, 26, 1, 2, 1
+288, 3, 430, 310, 173, 124, 1, 2, 1
+288, 8, 903, 272, 34, 98, 1, 0, 1
+288, 55, 100, 302, 25, 60, 1, 0, 1
+288, 82, 465, 257, 24, 21, 1, 2, 1
+288, 229, 527, 277, 56, 36, 1, 2, 1
+288, 234, 935, 319, 24, 110, 1, 0, 1
+288, 249, 633, 276, 21, 57, 1, 0, 1
+288, 288, 666, 267, 18, 59, 1, 0, 1
+288, 293, 598, 263, 13, 37, 1, 0, 1
+289, 1, 360, 278, 39, 27, 1, 2, 1
+289, 3, 436, 309, 176, 125, 1, 2, 1
+289, 8, 910, 273, 35, 98, 1, 0, 1
+289, 55, 101, 302, 25, 60, 1, 0, 1
+289, 82, 467, 256, 25, 22, 1, 2, 1
+289, 229, 531, 277, 55, 35, 1, 2, 1
+289, 234, 943, 321, 16, 110, 1, 0, 1
+289, 249, 637, 276, 22, 56, 1, 0, 1
+289, 288, 667, 266, 19, 61, 1, 0, 1
+289, 293, 600, 263, 12, 37, 1, 0, 1
+290, 1, 363, 278, 39, 26, 1, 2, 1
+290, 3, 445, 308, 178, 125, 1, 2, 1
+290, 8, 916, 272, 36, 100, 1, 0, 1
+290, 55, 102, 302, 25, 60, 1, 0, 1
+290, 82, 469, 256, 26, 22, 1, 2, 1
+290, 229, 535, 277, 55, 35, 1, 2, 1
+290, 249, 639, 275, 23, 57, 1, 0, 1
+290, 288, 670, 266, 19, 61, 1, 0, 1
+290, 293, 600, 263, 13, 37, 1, 0, 1
+291, 1, 366, 278, 38, 26, 1, 2, 1
+291, 3, 453, 306, 183, 128, 1, 2, 1
+291, 8, 922, 272, 36, 101, 1, 0, 1
+291, 55, 102, 304, 24, 58, 1, 0, 1
+291, 82, 473, 256, 25, 21, 1, 2, 1
+291, 229, 538, 277, 55, 34, 1, 2, 1
+291, 249, 641, 275, 24, 60, 1, 0, 1
+291, 288, 671, 268, 19, 61, 1, 0, 1
+291, 293, 607, 263, 13, 37, 1, 0, 1
+292, 1, 369, 278, 37, 25, 1, 2, 1
+292, 3, 463, 306, 184, 128, 1, 2, 1
+292, 8, 926, 270, 33, 103, 1, 0, 1
+292, 55, 104, 305, 23, 58, 1, 0, 1
+292, 82, 475, 256, 25, 21, 1, 2, 1
+292, 229, 542, 277, 55, 33, 1, 2, 1
+292, 249, 645, 276, 23, 60, 1, 0, 1
+292, 288, 672, 268, 19, 61, 1, 0, 1
+292, 293, 610, 263, 13, 37, 1, 0, 1
+293, 1, 371, 277, 39, 27, 1, 2, 1
+293, 3, 471, 307, 186, 128, 1, 2, 1
+293, 8, 932, 270, 27, 104, 1, 0, 1
+293, 55, 106, 305, 24, 61, 1, 0, 1
+293, 82, 477, 256, 26, 21, 1, 2, 1
+293, 229, 548, 278, 55, 31, 1, 2, 1
+293, 249, 647, 277, 24, 59, 1, 0, 1
+293, 288, 678, 268, 20, 61, 1, 0, 1
+293, 293, 612, 263, 13, 37, 1, 0, 1
+294, 1, 374, 277, 38, 26, 1, 2, 1
+294, 3, 479, 307, 188, 128, 1, 2, 1
+294, 8, 937, 269, 22, 105, 1, 0, 1
+294, 55, 106, 304, 25, 63, 1, 0, 1
+294, 82, 479, 256, 26, 21, 1, 2, 1
+294, 229, 555, 280, 51, 29, 1, 2, 1
+294, 249, 653, 270, 25, 64, 1, 0, 1
+294, 288, 682, 268, 20, 62, 1, 0, 1
+295, 1, 377, 277, 37, 26, 1, 2, 1
+295, 3, 488, 306, 190, 129, 1, 2, 1
+295, 55, 106, 305, 26, 63, 1, 0, 1
+295, 82, 481, 256, 27, 22, 1, 2, 1
+295, 229, 557, 280, 53, 29, 1, 2, 1
+295, 249, 655, 268, 26, 67, 1, 0, 1
+295, 288, 684, 270, 19, 62, 1, 0, 1
+296, 1, 379, 278, 37, 26, 1, 2, 1
+296, 3, 498, 307, 191, 129, 1, 2, 1
+296, 55, 107, 305, 25, 62, 1, 0, 1
+296, 82, 484, 257, 26, 21, 1, 2, 1
+296, 229, 557, 279, 59, 32, 1, 2, 1
+296, 249, 657, 275, 24, 62, 1, 0, 1
+296, 288, 688, 276, 18, 56, 1, 0, 1
+297, 1, 383, 277, 36, 26, 1, 2, 1
+297, 3, 506, 307, 194, 129, 1, 2, 1
+297, 55, 108, 305, 25, 63, 1, 0, 1
+297, 82, 486, 257, 27, 21, 1, 2, 1
+297, 229, 561, 279, 61, 33, 1, 2, 1
+297, 249, 658, 274, 26, 66, 1, 0, 1
+297, 288, 692, 278, 17, 54, 1, 0, 1
+297, 293, 623, 263, 14, 39, 1, 0, 1
+298, 1, 385, 277, 37, 25, 1, 2, 1
+298, 3, 516, 307, 195, 129, 1, 2, 1
+298, 55, 109, 305, 25, 64, 1, 0, 1
+298, 82, 488, 257, 27, 22, 1, 2, 1
+298, 229, 563, 279, 63, 34, 1, 2, 1
+298, 249, 671, 271, 24, 65, 1, 0, 1
+298, 288, 695, 277, 18, 56, 1, 0, 1
+298, 293, 626, 263, 14, 39, 1, 0, 1
+299, 1, 388, 277, 36, 25, 1, 2, 1
+299, 3, 525, 307, 197, 129, 1, 2, 1
+299, 55, 109, 305, 26, 63, 1, 0, 1
+299, 82, 490, 257, 27, 21, 1, 2, 1
+299, 229, 567, 279, 65, 35, 1, 2, 1
+299, 249, 671, 270, 21, 57, 1, 0, 1
+299, 288, 698, 279, 19, 54, 1, 0, 1
+299, 293, 631, 263, 15, 41, 1, 0, 1
+300, 1, 390, 277, 36, 25, 1, 2, 1
+300, 3, 535, 307, 200, 130, 1, 2, 1
+300, 55, 109, 305, 26, 64, 1, 0, 1
+300, 82, 493, 257, 27, 22, 1, 2, 1
+300, 229, 570, 280, 67, 35, 1, 2, 1
+300, 249, 679, 270, 19, 51, 1, 0, 1
+300, 288, 701, 277, 21, 59, 1, 0, 1
+300, 293, 635, 263, 15, 42, 1, 0, 1
+301, 1, 391, 276, 37, 26, 1, 2, 1
+301, 3, 545, 308, 203, 131, 1, 2, 1
+301, 55, 111, 306, 26, 63, 1, 0, 1
+301, 82, 495, 258, 27, 22, 1, 2, 1
+301, 229, 573, 281, 69, 36, 1, 2, 1
+301, 249, 681, 268, 19, 48, 1, 0, 1
+301, 288, 704, 281, 20, 58, 1, 0, 1
+301, 293, 638, 264, 15, 41, 1, 0, 1
+302, 1, 394, 275, 36, 26, 1, 2, 1
+302, 3, 556, 308, 204, 132, 1, 2, 1
+302, 55, 112, 307, 25, 63, 1, 0, 1
+302, 82, 496, 257, 28, 23, 1, 2, 1
+302, 229, 577, 281, 72, 38, 1, 2, 1
+302, 249, 682, 267, 18, 46, 1, 0, 1
+302, 288, 707, 282, 21, 58, 1, 0, 1
+302, 293, 644, 263, 16, 43, 1, 0, 1
+302, 314, 793, 261, 18, 51, 1, 0, 1
+303, 1, 397, 276, 35, 25, 1, 2, 1
+303, 3, 566, 309, 206, 132, 1, 2, 1
+303, 55, 113, 310, 24, 61, 1, 0, 1
+303, 82, 498, 258, 29, 23, 1, 2, 1
+303, 229, 579, 282, 76, 39, 1, 2, 1
+303, 249, 686, 266, 17, 45, 1, 0, 1
+303, 293, 648, 263, 17, 45, 1, 0, 1
+303, 314, 794, 261, 18, 51, 1, 0, 1
+304, 1, 400, 277, 35, 24, 1, 2, 1
+304, 3, 577, 311, 207, 133, 1, 2, 1
+304, 55, 113, 310, 25, 63, 1, 0, 1
+304, 82, 501, 259, 29, 23, 1, 2, 1
+304, 229, 583, 284, 77, 39, 1, 2, 1
+304, 293, 650, 266, 16, 40, 1, 0, 1
+304, 314, 803, 265, 19, 52, 1, 0, 1
+305, 1, 402, 278, 36, 25, 1, 2, 1
+305, 3, 588, 312, 207, 131, 1, 2, 1
+305, 55, 113, 312, 25, 62, 1, 0, 1
+305, 82, 503, 260, 29, 24, 1, 2, 1
+305, 229, 585, 284, 80, 42, 1, 2, 1
+305, 293, 653, 266, 16, 41, 1, 0, 1
+305, 314, 806, 265, 19, 52, 1, 0, 1
+306, 1, 404, 279, 36, 26, 1, 2, 1
+306, 3, 598, 313, 211, 133, 1, 2, 1
+306, 55, 113, 312, 25, 63, 1, 0, 1
+306, 82, 505, 262, 28, 22, 1, 2, 1
+306, 229, 589, 286, 81, 43, 1, 2, 1
+306, 293, 655, 268, 14, 36, 1, 0, 1
+306, 314, 810, 268, 19, 53, 1, 0, 1
+306, 319, 709, 277, 15, 39, 1, 0, 1
+307, 1, 406, 279, 37, 26, 1, 2, 1
+307, 3, 610, 313, 212, 133, 1, 2, 1
+307, 55, 113, 312, 25, 64, 1, 0, 1
+307, 82, 507, 262, 28, 23, 1, 2, 1
+307, 229, 593, 287, 81, 42, 1, 2, 1
+307, 293, 658, 269, 14, 35, 1, 0, 1
+307, 314, 814, 268, 20, 55, 1, 0, 1
+307, 319, 710, 278, 15, 37, 1, 0, 1
+307, 321, 23, 315, 29, 63, 1, 0, 1
+308, 1, 409, 279, 35, 25, 1, 2, 1
+308, 3, 621, 314, 214, 133, 1, 2, 1
+308, 55, 113, 313, 25, 64, 1, 0, 1
+308, 82, 509, 263, 27, 22, 1, 2, 1
+308, 229, 596, 287, 81, 43, 1, 2, 1
+308, 288, 734, 282, 13, 35, 1, 0, 1
+308, 314, 817, 268, 19, 54, 1, 0, 1
+308, 319, 716, 280, 14, 36, 1, 0, 1
+308, 321, 23, 319, 28, 61, 1, 0, 1
+309, 1, 412, 279, 35, 26, 1, 2, 1
+309, 3, 632, 313, 217, 135, 1, 2, 1
+309, 55, 113, 313, 26, 65, 1, 0, 1
+309, 82, 511, 263, 29, 23, 1, 2, 1
+309, 229, 599, 287, 81, 43, 1, 2, 1
+309, 288, 730, 284, 14, 33, 1, 0, 1
+309, 293, 662, 269, 12, 30, 1, 0, 1
+309, 314, 822, 269, 19, 55, 1, 0, 1
+309, 319, 718, 280, 15, 37, 1, 0, 1
+309, 321, 21, 320, 29, 61, 1, 0, 1
+310, 1, 414, 280, 35, 25, 1, 2, 1
+310, 3, 644, 313, 219, 135, 1, 2, 1
+310, 55, 113, 314, 26, 65, 1, 0, 1
+310, 82, 513, 264, 29, 23, 1, 2, 1
+310, 229, 601, 288, 82, 43, 1, 2, 1
+310, 249, 704, 278, 16, 40, 1, 0, 1
+310, 288, 730, 286, 13, 31, 1, 0, 1
+310, 293, 665, 269, 11, 30, 1, 0, 1
+310, 314, 826, 269, 19, 55, 1, 0, 1
+310, 319, 721, 281, 14, 37, 1, 0, 1
+310, 321, 21, 321, 29, 61, 1, 0, 1
+311, 1, 416, 279, 34, 26, 1, 2, 1
+311, 3, 655, 313, 220, 135, 1, 2, 1
+311, 55, 113, 315, 26, 65, 1, 0, 1
+311, 82, 515, 264, 29, 23, 1, 2, 1
+311, 229, 604, 288, 82, 45, 1, 2, 1
+311, 249, 706, 279, 16, 39, 1, 0, 1
+311, 288, 732, 286, 13, 30, 1, 0, 1
+311, 314, 829, 270, 19, 54, 1, 0, 1
+311, 319, 721, 281, 15, 37, 1, 0, 1
+311, 321, 20, 320, 29, 63, 1, 0, 1
+312, 1, 418, 279, 35, 25, 1, 2, 1
+312, 3, 667, 312, 223, 137, 1, 2, 1
+312, 55, 113, 315, 26, 66, 1, 0, 1
+312, 82, 517, 265, 30, 23, 1, 2, 1
+312, 229, 606, 288, 82, 45, 1, 2, 1
+312, 314, 834, 270, 19, 55, 1, 0, 1
+312, 319, 721, 279, 16, 40, 1, 0, 1
+312, 321, 20, 321, 29, 62, 1, 0, 1
+313, 1, 420, 279, 34, 25, 1, 2, 1
+313, 3, 677, 311, 229, 139, 1, 2, 1
+313, 55, 112, 317, 26, 66, 1, 0, 1
+313, 82, 519, 265, 30, 24, 1, 2, 1
+313, 229, 608, 288, 84, 47, 1, 2, 1
+313, 288, 740, 286, 16, 33, 1, 0, 1
+313, 314, 838, 271, 19, 55, 1, 0, 1
+313, 319, 726, 281, 16, 38, 1, 0, 1
+313, 321, 20, 322, 29, 63, 1, 0, 1
+314, 1, 422, 280, 33, 24, 1, 2, 1
+314, 3, 692, 312, 229, 139, 1, 2, 1
+314, 55, 111, 317, 26, 67, 1, 0, 1
+314, 82, 521, 265, 29, 23, 1, 2, 1
+314, 229, 613, 290, 82, 45, 1, 2, 1
+314, 288, 748, 289, 15, 31, 1, 0, 1
+314, 314, 842, 271, 18, 52, 1, 0, 1
+314, 319, 728, 281, 17, 40, 1, 0, 1
+314, 321, 19, 323, 29, 63, 1, 0, 1
+315, 1, 424, 279, 34, 24, 1, 2, 1
+315, 3, 704, 312, 231, 139, 1, 2, 1
+315, 55, 111, 318, 26, 67, 1, 0, 1
+315, 82, 523, 265, 30, 24, 1, 2, 1
+315, 229, 617, 290, 80, 46, 1, 2, 1
+315, 288, 751, 289, 16, 34, 1, 0, 1
+315, 314, 847, 273, 17, 48, 1, 0, 1
+315, 319, 731, 279, 18, 45, 1, 0, 1
+315, 321, 19, 323, 29, 64, 1, 0, 1
+316, 1, 426, 279, 33, 24, 1, 2, 1
+316, 3, 717, 312, 233, 139, 1, 2, 1
+316, 55, 111, 318, 26, 67, 1, 0, 1
+316, 82, 525, 265, 30, 24, 1, 2, 1
+316, 229, 620, 291, 80, 46, 1, 2, 1
+316, 288, 755, 290, 16, 33, 1, 0, 1
+316, 314, 851, 273, 17, 46, 1, 0, 1
+316, 319, 733, 279, 19, 46, 1, 0, 1
+316, 321, 18, 323, 29, 64, 1, 0, 1
+317, 1, 428, 278, 33, 25, 1, 2, 1
+317, 3, 726, 311, 233, 140, 1, 2, 1
+317, 55, 112, 319, 26, 67, 1, 0, 1
+317, 82, 526, 265, 30, 23, 1, 2, 1
+317, 229, 622, 290, 81, 48, 1, 2, 1
+317, 314, 855, 273, 16, 46, 1, 0, 1
+317, 321, 17, 323, 29, 64, 1, 0, 1
+318, 1, 430, 278, 33, 25, 1, 2, 1
+318, 3, 734, 313, 225, 139, 1, 2, 1
+318, 55, 113, 318, 26, 69, 1, 0, 1
+318, 82, 528, 265, 30, 23, 1, 2, 1
+318, 229, 624, 290, 80, 47, 1, 2, 1
+318, 314, 858, 273, 17, 44, 1, 0, 1
+318, 321, 16, 323, 29, 65, 1, 0, 1
+319, 1, 433, 279, 33, 24, 1, 2, 1
+319, 3, 743, 313, 216, 139, 1, 2, 1
+319, 55, 113, 319, 27, 69, 1, 0, 1
+319, 82, 530, 266, 29, 23, 1, 2, 1
+319, 229, 624, 290, 81, 49, 1, 2, 1
+319, 314, 863, 272, 17, 45, 1, 0, 1
+319, 321, 14, 323, 29, 66, 1, 0, 1
+320, 1, 434, 279, 33, 24, 1, 2, 1
+320, 3, 749, 312, 210, 139, 1, 2, 1
+320, 55, 113, 319, 27, 69, 1, 0, 1
+320, 82, 531, 265, 31, 24, 1, 2, 1
+320, 229, 629, 290, 78, 49, 1, 2, 1
+320, 314, 867, 272, 16, 45, 1, 0, 1
+320, 321, 13, 323, 30, 67, 1, 0, 1
+321, 1, 436, 278, 32, 24, 1, 2, 1
+321, 3, 758, 312, 201, 140, 1, 2, 1
+321, 55, 113, 319, 27, 69, 1, 0, 1
+321, 82, 533, 266, 31, 23, 1, 2, 1
+321, 229, 631, 291, 75, 48, 1, 2, 1
+321, 314, 870, 272, 17, 45, 1, 0, 1
+321, 321, 13, 323, 29, 68, 1, 0, 1
+321, 338, 760, 288, 29, 75, 1, 0, 1
+322, 1, 437, 277, 32, 23, 1, 2, 1
+322, 3, 766, 312, 193, 140, 1, 2, 1
+322, 55, 113, 320, 27, 69, 1, 0, 1
+322, 82, 536, 266, 29, 23, 1, 2, 1
+322, 229, 634, 291, 74, 48, 1, 2, 1
+322, 314, 874, 272, 17, 45, 1, 0, 1
+322, 321, 12, 323, 30, 69, 1, 0, 1
+322, 338, 765, 289, 27, 73, 1, 0, 1
+323, 1, 439, 277, 31, 23, 1, 2, 1
+323, 3, 779, 312, 180, 138, 1, 2, 1
+323, 55, 112, 319, 28, 71, 1, 0, 1
+323, 82, 537, 266, 31, 23, 1, 2, 1
+323, 229, 638, 290, 71, 48, 1, 2, 1
+323, 280, 705, 296, 29, 78, 1, 0, 1
+323, 314, 877, 270, 18, 47, 1, 0, 1
+323, 321, 11, 324, 31, 69, 1, 0, 1
+323, 338, 768, 290, 28, 73, 1, 0, 1
+324, 1, 441, 277, 31, 22, 1, 2, 1
+324, 3, 790, 313, 169, 135, 1, 2, 1
+324, 55, 111, 317, 28, 73, 1, 0, 1
+324, 82, 538, 265, 33, 24, 1, 2, 1
+324, 229, 642, 291, 69, 47, 1, 2, 1
+324, 280, 706, 297, 31, 78, 1, 0, 1
+324, 293, 705, 265, 15, 35, 1, 0, 1
+324, 314, 879, 269, 19, 50, 1, 0, 1
+324, 321, 11, 323, 30, 70, 1, 0, 1
+324, 338, 770, 290, 28, 73, 1, 0, 1
+325, 1, 443, 276, 31, 22, 1, 2, 1
+325, 3, 801, 312, 158, 135, 1, 2, 1
+325, 55, 111, 317, 28, 73, 1, 0, 1
+325, 82, 540, 264, 33, 25, 1, 2, 1
+325, 229, 645, 292, 66, 46, 1, 2, 1
+325, 280, 710, 300, 31, 75, 1, 0, 1
+325, 293, 708, 265, 15, 35, 1, 0, 1
+325, 314, 883, 269, 20, 52, 1, 0, 1
+325, 321, 10, 323, 30, 69, 1, 0, 1
+325, 338, 773, 291, 28, 73, 1, 0, 1
+326, 1, 445, 275, 31, 23, 1, 2, 1
+326, 3, 817, 314, 142, 128, 1, 2, 1
+326, 55, 111, 317, 28, 73, 1, 0, 1
+326, 82, 540, 264, 34, 25, 1, 2, 1
+326, 229, 647, 292, 66, 46, 1, 2, 1
+326, 280, 710, 302, 31, 74, 1, 0, 1
+326, 314, 885, 268, 22, 54, 1, 0, 1
+326, 321, 7, 325, 29, 68, 1, 0, 1
+326, 338, 775, 292, 28, 74, 1, 0, 1
+327, 1, 446, 275, 31, 22, 1, 2, 1
+327, 3, 828, 315, 131, 129, 1, 2, 1
+327, 55, 110, 318, 28, 73, 1, 0, 1
+327, 82, 541, 263, 35, 26, 1, 2, 1
+327, 229, 651, 292, 65, 46, 1, 2, 1
+327, 280, 711, 302, 30, 74, 1, 0, 1
+327, 314, 889, 267, 22, 58, 1, 0, 1
+327, 321, 8, 324, 29, 68, 1, 0, 1
+327, 338, 776, 293, 28, 74, 1, 0, 1
+328, 1, 448, 274, 30, 22, 1, 2, 1
+328, 3, 841, 316, 118, 125, 1, 2, 1
+328, 55, 103, 319, 28, 73, 1, 0, 1
+328, 82, 541, 263, 36, 26, 1, 2, 1
+328, 229, 652, 293, 64, 46, 1, 2, 1
+328, 280, 711, 301, 32, 75, 1, 0, 1
+328, 314, 891, 266, 24, 62, 1, 0, 1
+328, 321, 5, 325, 29, 67, 1, 0, 1
+328, 338, 776, 291, 30, 78, 1, 0, 1
+329, 1, 449, 273, 31, 22, 1, 2, 1
+329, 3, 858, 320, 101, 116, 1, 2, 1
+329, 55, 103, 317, 28, 74, 1, 0, 1
+329, 82, 543, 262, 35, 27, 1, 2, 1
+329, 229, 655, 291, 63, 46, 1, 2, 1
+329, 280, 712, 299, 32, 77, 1, 0, 1
+329, 314, 895, 266, 23, 64, 1, 0, 1
+329, 321, 4, 324, 29, 68, 1, 0, 1
+329, 338, 779, 289, 30, 79, 1, 0, 1
+329, 348, 0, 324, 18, 67, 1, 0, 1
+330, 1, 450, 272, 31, 22, 1, 2, 1
+330, 3, 871, 322, 88, 113, 1, 2, 1
+330, 55, 102, 315, 29, 76, 1, 0, 1
+330, 82, 544, 261, 36, 27, 1, 2, 1
+330, 229, 656, 290, 64, 48, 1, 2, 1
+330, 280, 712, 300, 32, 76, 1, 0, 1
+330, 293, 714, 262, 18, 43, 1, 0, 1
+330, 314, 898, 267, 24, 65, 1, 0, 1
+330, 321, 3, 324, 28, 68, 1, 0, 1
+330, 338, 781, 290, 30, 79, 1, 0, 1
+330, 348, 0, 325, 17, 65, 1, 0, 1
+331, 1, 451, 270, 32, 23, 1, 2, 1
+331, 3, 881, 323, 78, 110, 1, 2, 1
+331, 55, 99, 316, 30, 76, 1, 0, 1
+331, 82, 544, 260, 37, 28, 1, 2, 1
+331, 229, 656, 289, 61, 47, 1, 2, 1
+331, 280, 713, 299, 31, 76, 1, 0, 1
+331, 293, 714, 262, 19, 42, 1, 0, 1
+331, 314, 901, 266, 24, 66, 1, 0, 1
+331, 321, 1, 323, 28, 69, 1, 0, 1
+331, 338, 782, 288, 30, 82, 1, 0, 1
+331, 348, 0, 325, 16, 65, 1, 0, 1
+332, 1, 451, 268, 33, 24, 1, 2, 1
+332, 55, 98, 316, 29, 75, 1, 0, 1
+332, 82, 546, 260, 36, 26, 1, 2, 1
+332, 229, 661, 287, 67, 51, 1, 2, 1
+332, 280, 714, 298, 30, 76, 1, 0, 1
+332, 293, 717, 261, 18, 43, 1, 0, 1
+332, 314, 903, 263, 25, 67, 1, 0, 1
+332, 321, 0, 321, 27, 70, 1, 0, 1
+332, 338, 783, 286, 32, 84, 1, 0, 1
+332, 350, 687, 289, 27, 74, 1, 0, 1
+333, 1, 451, 266, 34, 25, 1, 2, 1
+333, 55, 98, 315, 29, 75, 1, 0, 1
+333, 82, 547, 259, 35, 26, 1, 2, 1
+333, 229, 660, 285, 64, 51, 1, 2, 1
+333, 280, 714, 297, 31, 78, 1, 0, 1
+333, 314, 906, 263, 25, 66, 1, 0, 1
+333, 321, 0, 322, 24, 69, 1, 0, 1
+333, 338, 786, 286, 31, 83, 1, 0, 1
+333, 350, 686, 286, 28, 77, 1, 0, 1
+334, 1, 452, 265, 32, 24, 1, 2, 1
+334, 55, 98, 314, 29, 76, 1, 0, 1
+334, 82, 548, 258, 34, 25, 1, 2, 1
+334, 229, 663, 285, 63, 51, 1, 2, 1
+334, 280, 714, 296, 32, 80, 1, 0, 1
+334, 314, 909, 260, 26, 67, 1, 0, 1
+334, 321, 0, 323, 22, 67, 1, 0, 1
+334, 338, 786, 285, 32, 86, 1, 0, 1
+334, 350, 685, 286, 29, 77, 1, 0, 1
+335, 1, 453, 264, 31, 23, 1, 2, 1
+335, 55, 89, 316, 29, 74, 1, 0, 1
+335, 82, 549, 257, 35, 25, 1, 2, 1
+335, 229, 664, 284, 65, 52, 1, 2, 1
+335, 280, 714, 293, 33, 83, 1, 0, 1
+335, 314, 912, 258, 26, 68, 1, 0, 1
+335, 321, 0, 323, 21, 67, 1, 0, 1
+335, 338, 790, 290, 31, 82, 1, 0, 1
+335, 350, 684, 280, 30, 82, 1, 0, 1
+336, 1, 454, 262, 31, 24, 1, 2, 1
+336, 55, 87, 316, 28, 75, 1, 0, 1
+336, 82, 550, 256, 35, 25, 1, 2, 1
+336, 280, 715, 293, 33, 83, 1, 0, 1
+336, 314, 915, 256, 26, 69, 1, 0, 1
+336, 321, 0, 324, 18, 65, 1, 0, 1
+336, 338, 791, 284, 32, 87, 1, 0, 1
+336, 350, 682, 275, 33, 87, 1, 0, 1
+337, 1, 455, 262, 30, 23, 1, 2, 1
+337, 55, 88, 315, 29, 77, 1, 0, 1
+337, 82, 551, 256, 35, 26, 1, 2, 1
+337, 280, 716, 295, 34, 83, 1, 0, 1
+337, 314, 917, 256, 26, 69, 1, 0, 1
+337, 321, 0, 325, 17, 65, 1, 0, 1
+337, 338, 785, 271, 37, 101, 1, 0, 1
+337, 350, 682, 274, 34, 90, 1, 0, 1
+338, 1, 456, 263, 29, 22, 1, 2, 1
+338, 55, 88, 317, 30, 79, 1, 0, 1
+338, 82, 552, 256, 36, 26, 1, 2, 1
+338, 280, 717, 295, 34, 85, 1, 0, 1
+338, 314, 920, 256, 26, 68, 1, 0, 1
+338, 321, 0, 331, 15, 61, 1, 0, 1
+338, 338, 785, 269, 39, 106, 1, 0, 1
+338, 350, 681, 274, 35, 90, 1, 0, 1
+339, 1, 457, 263, 29, 22, 1, 2, 1
+339, 55, 86, 318, 31, 79, 1, 0, 1
+339, 82, 552, 257, 37, 26, 1, 2, 1
+339, 280, 717, 295, 35, 88, 1, 0, 1
+339, 314, 922, 256, 26, 70, 1, 0, 1
+339, 321, 0, 332, 13, 61, 1, 0, 1
+339, 338, 786, 273, 37, 104, 1, 0, 1
+339, 350, 680, 278, 34, 87, 1, 0, 1
+339, 358, 718, 283, 58, 53, 1, 2, 1
+340, 1, 458, 262, 29, 23, 1, 2, 1
+340, 55, 81, 319, 30, 79, 1, 0, 1
+340, 82, 552, 256, 38, 27, 1, 2, 1
+340, 280, 719, 295, 36, 88, 1, 0, 1
+340, 314, 924, 256, 26, 69, 1, 0, 1
+340, 338, 788, 273, 38, 107, 1, 0, 1
+340, 350, 680, 278, 34, 88, 1, 0, 1
+340, 358, 718, 284, 58, 53, 1, 2, 1
+341, 1, 459, 262, 29, 23, 1, 2, 1
+341, 55, 78, 321, 29, 78, 1, 0, 1
+341, 82, 553, 257, 38, 27, 1, 2, 1
+341, 280, 718, 297, 38, 88, 1, 0, 1
+341, 314, 927, 258, 26, 69, 1, 0, 1
+341, 338, 787, 270, 40, 111, 1, 0, 1
+341, 350, 680, 283, 32, 84, 1, 0, 1
+342, 1, 459, 263, 30, 23, 1, 2, 1
+342, 55, 76, 322, 30, 80, 1, 0, 1
+342, 82, 554, 258, 38, 27, 1, 2, 1
+342, 280, 717, 299, 39, 88, 1, 0, 1
+342, 314, 930, 260, 26, 69, 1, 0, 1
+342, 338, 788, 272, 40, 111, 1, 0, 1
+342, 350, 678, 280, 35, 89, 1, 0, 1
+343, 1, 459, 265, 30, 22, 1, 2, 1
+343, 55, 74, 325, 29, 79, 1, 0, 1
+343, 82, 553, 260, 40, 27, 1, 2, 1
+343, 280, 717, 300, 40, 90, 1, 0, 1
+343, 314, 933, 262, 25, 67, 1, 0, 1
+343, 338, 788, 273, 40, 110, 1, 0, 1
+343, 350, 676, 274, 38, 99, 1, 0, 1
+343, 361, 712, 286, 74, 52, 1, 2, 1
+344, 1, 460, 266, 30, 23, 1, 2, 1
+344, 55, 73, 327, 29, 79, 1, 0, 1
+344, 82, 553, 261, 40, 28, 1, 2, 1
+344, 280, 719, 303, 39, 90, 1, 0, 1
+344, 314, 936, 266, 23, 65, 1, 0, 1
+344, 338, 788, 280, 40, 106, 1, 0, 1
+344, 350, 673, 268, 41, 107, 1, 0, 1
+344, 361, 710, 289, 74, 52, 1, 2, 1
+345, 1, 460, 268, 31, 24, 1, 2, 1
+345, 55, 68, 330, 30, 81, 1, 0, 1
+345, 82, 555, 264, 39, 28, 1, 2, 1
+345, 280, 717, 306, 39, 92, 1, 0, 1
+345, 314, 937, 269, 22, 65, 1, 0, 1
+345, 338, 788, 283, 40, 108, 1, 0, 1
+345, 350, 675, 279, 36, 96, 1, 0, 1
+345, 361, 708, 292, 78, 54, 1, 2, 1
+346, 1, 462, 270, 29, 23, 1, 2, 1
+346, 55, 66, 332, 30, 83, 1, 0, 1
+346, 82, 556, 267, 39, 27, 1, 2, 1
+346, 280, 718, 311, 39, 90, 1, 0, 1
+346, 314, 939, 270, 20, 66, 1, 0, 1
+346, 338, 789, 290, 40, 106, 1, 0, 1
+346, 350, 676, 285, 34, 93, 1, 0, 1
+346, 361, 709, 293, 79, 55, 1, 2, 1
+347, 1, 463, 272, 28, 21, 1, 2, 1
+347, 55, 63, 334, 31, 84, 1, 0, 1
+347, 82, 555, 268, 40, 28, 1, 2, 1
+347, 280, 719, 315, 37, 90, 1, 0, 1
+347, 314, 942, 271, 17, 66, 1, 0, 1
+347, 338, 790, 297, 40, 102, 1, 0, 1
+347, 350, 677, 289, 33, 91, 1, 0, 1
+347, 361, 711, 296, 79, 55, 1, 2, 1
+347, 369, 724, 269, 24, 27, 1, 0, 1
+348, 1, 463, 272, 27, 21, 1, 2, 1
+348, 55, 61, 334, 30, 84, 1, 0, 1
+348, 82, 558, 270, 38, 27, 1, 2, 1
+348, 280, 720, 317, 37, 90, 1, 0, 1
+348, 338, 788, 302, 37, 98, 1, 0, 1
+348, 350, 677, 289, 34, 94, 1, 0, 1
+348, 361, 711, 297, 80, 55, 1, 2, 1
+348, 369, 724, 270, 23, 26, 1, 0, 1
+349, 1, 463, 272, 27, 21, 1, 2, 1
+349, 55, 55, 337, 31, 84, 1, 0, 1
+349, 82, 559, 271, 38, 27, 1, 2, 1
+349, 280, 719, 320, 38, 91, 1, 0, 1
+349, 338, 788, 304, 37, 98, 1, 0, 1
+349, 350, 683, 292, 35, 97, 1, 0, 1
+349, 361, 711, 298, 80, 55, 1, 2, 1
+349, 369, 725, 270, 23, 28, 1, 0, 1
+350, 1, 464, 272, 27, 21, 1, 2, 1
+350, 55, 51, 338, 30, 83, 1, 0, 1
+350, 82, 560, 272, 38, 27, 1, 2, 1
+350, 280, 719, 320, 38, 94, 1, 0, 1
+350, 338, 789, 299, 40, 105, 1, 0, 1
+350, 350, 684, 294, 36, 98, 1, 0, 1
+350, 361, 708, 299, 82, 56, 1, 2, 1
+350, 369, 725, 270, 25, 29, 1, 0, 1
+351, 1, 464, 272, 28, 21, 1, 2, 1
+351, 55, 48, 337, 31, 86, 1, 0, 1
+351, 82, 560, 273, 39, 27, 1, 2, 1
+351, 280, 719, 321, 39, 95, 1, 0, 1
+351, 338, 790, 299, 40, 106, 1, 0, 1
+351, 350, 687, 295, 35, 98, 1, 0, 1
+351, 361, 708, 300, 84, 56, 1, 2, 1
+351, 369, 726, 270, 25, 30, 1, 0, 1
+352, 1, 465, 272, 28, 22, 1, 2, 1
+352, 55, 48, 338, 30, 85, 1, 0, 1
+352, 82, 561, 274, 38, 27, 1, 2, 1
+352, 280, 719, 322, 40, 97, 1, 0, 1
+352, 338, 791, 301, 40, 106, 1, 0, 1
+352, 350, 692, 297, 36, 99, 1, 0, 1
+352, 361, 706, 300, 87, 58, 1, 2, 1
+352, 369, 727, 270, 25, 31, 1, 0, 1
+352, 383, 550, 268, 29, 21, 1, 2, 1
+353, 1, 465, 273, 28, 22, 1, 2, 1
+353, 55, 44, 340, 30, 85, 1, 0, 1
+353, 82, 561, 274, 39, 27, 1, 2, 1
+353, 280, 720, 325, 40, 96, 1, 0, 1
+353, 338, 790, 302, 40, 105, 1, 0, 1
+353, 350, 696, 301, 33, 95, 1, 0, 1
+353, 361, 706, 300, 89, 59, 1, 2, 1
+353, 369, 729, 272, 24, 29, 1, 0, 1
+353, 383, 550, 268, 30, 22, 1, 2, 1
+354, 1, 465, 273, 29, 22, 1, 2, 1
+354, 55, 41, 340, 30, 85, 1, 0, 1
+354, 82, 562, 275, 39, 28, 1, 2, 1
+354, 280, 722, 330, 40, 93, 1, 0, 1
+354, 338, 790, 301, 40, 109, 1, 0, 1
+354, 350, 696, 301, 33, 96, 1, 0, 1
+354, 361, 705, 301, 90, 59, 1, 2, 1
+354, 369, 729, 272, 25, 30, 1, 0, 1
+354, 383, 552, 269, 27, 21, 1, 2, 1
+355, 1, 466, 273, 28, 22, 1, 2, 1
+355, 55, 38, 341, 32, 85, 1, 0, 1
+355, 82, 563, 276, 39, 28, 1, 2, 1
+355, 280, 723, 333, 39, 93, 1, 0, 1
+355, 338, 790, 304, 40, 108, 1, 0, 1
+355, 350, 694, 300, 34, 97, 1, 0, 1
+355, 361, 706, 303, 89, 59, 1, 2, 1
+355, 383, 552, 270, 27, 20, 1, 2, 1
+356, 1, 467, 273, 27, 22, 1, 2, 1
+356, 55, 36, 340, 31, 88, 1, 0, 1
+356, 82, 563, 276, 40, 28, 1, 2, 1
+356, 280, 722, 334, 41, 94, 1, 0, 1
+356, 338, 790, 310, 39, 103, 1, 0, 1
+356, 350, 691, 298, 35, 101, 1, 0, 1
+356, 361, 703, 303, 94, 61, 1, 2, 1
+356, 369, 738, 273, 26, 31, 1, 0, 1
+356, 383, 552, 270, 27, 20, 1, 2, 1
+357, 1, 467, 273, 27, 21, 1, 2, 1
+357, 55, 34, 340, 32, 88, 1, 0, 1
+357, 82, 564, 277, 41, 29, 1, 2, 1
+357, 280, 722, 334, 43, 98, 1, 0, 1
+357, 338, 789, 313, 40, 104, 1, 0, 1
+357, 350, 691, 301, 35, 100, 1, 0, 1
+357, 361, 701, 306, 95, 60, 1, 2, 1
+357, 369, 739, 276, 23, 28, 1, 0, 1
+357, 383, 551, 270, 27, 20, 1, 2, 1
+357, 392, 767, 274, 17, 37, 1, 0, 1
+358, 1, 467, 273, 27, 21, 1, 2, 1
+358, 55, 29, 342, 32, 88, 1, 0, 1
+358, 82, 565, 278, 40, 28, 1, 2, 1
+358, 280, 723, 335, 42, 98, 1, 0, 1
+358, 338, 790, 317, 39, 102, 1, 0, 1
+358, 350, 690, 301, 36, 102, 1, 0, 1
+358, 361, 702, 306, 96, 61, 1, 2, 1
+358, 369, 740, 277, 23, 28, 1, 0, 1
+358, 383, 551, 270, 27, 20, 1, 2, 1
+358, 392, 768, 276, 15, 33, 1, 0, 1
+359, 1, 468, 274, 26, 20, 1, 2, 1
+359, 55, 27, 343, 32, 89, 1, 0, 1
+359, 82, 566, 278, 39, 29, 1, 2, 1
+359, 280, 723, 336, 42, 98, 1, 0, 1
+359, 338, 789, 320, 41, 102, 1, 0, 1
+359, 350, 692, 307, 34, 98, 1, 0, 1
+359, 361, 704, 308, 95, 59, 1, 2, 1
+359, 383, 552, 270, 27, 21, 1, 2, 1
+360, 1, 468, 275, 26, 21, 1, 2, 1
+360, 55, 20, 343, 33, 91, 1, 0, 1
+360, 82, 567, 280, 39, 27, 1, 2, 1
+360, 280, 724, 339, 41, 97, 1, 0, 1
+360, 338, 790, 323, 41, 101, 1, 0, 1
+360, 350, 692, 312, 34, 96, 1, 0, 1
+360, 361, 705, 310, 94, 59, 1, 2, 1
+360, 383, 552, 272, 26, 20, 1, 2, 1
+361, 1, 468, 275, 26, 21, 1, 2, 1
+361, 55, 15, 345, 32, 90, 1, 0, 1
+361, 82, 567, 280, 39, 28, 1, 2, 1
+361, 280, 724, 339, 41, 101, 1, 0, 1
+361, 338, 791, 325, 41, 101, 1, 0, 1
+361, 350, 690, 314, 35, 96, 1, 0, 1
+361, 361, 703, 311, 96, 60, 1, 2, 1
+361, 383, 552, 273, 25, 19, 1, 2, 1
+362, 1, 468, 275, 26, 21, 1, 2, 1
+362, 55, 13, 348, 32, 91, 1, 0, 1
+362, 82, 568, 282, 38, 27, 1, 2, 1
+362, 280, 725, 341, 41, 102, 1, 0, 1
+362, 338, 792, 328, 41, 102, 1, 0, 1
+362, 350, 686, 314, 35, 98, 1, 0, 1
+362, 361, 703, 312, 96, 60, 1, 2, 1
+362, 369, 745, 282, 23, 30, 1, 0, 1
+362, 383, 553, 276, 23, 18, 1, 2, 1
+363, 1, 469, 277, 25, 20, 1, 2, 1
+363, 55, 12, 349, 31, 93, 1, 0, 1
+363, 82, 568, 283, 38, 27, 1, 2, 1
+363, 280, 725, 342, 42, 105, 1, 0, 1
+363, 338, 790, 329, 42, 102, 1, 0, 1
+363, 350, 684, 313, 35, 100, 1, 0, 1
+363, 361, 704, 312, 97, 60, 1, 2, 1
+363, 369, 745, 281, 24, 31, 1, 0, 1
+363, 383, 553, 277, 23, 18, 1, 2, 1
+364, 1, 468, 277, 27, 21, 1, 2, 1
+364, 55, 9, 348, 32, 93, 1, 0, 1
+364, 82, 567, 284, 39, 28, 1, 2, 1
+364, 280, 724, 343, 43, 108, 1, 0, 1
+364, 338, 789, 329, 44, 107, 1, 0, 1
+364, 350, 683, 314, 38, 104, 1, 0, 1
+364, 361, 703, 313, 99, 62, 1, 2, 1
+364, 369, 744, 283, 23, 30, 1, 0, 1
+364, 383, 552, 277, 25, 20, 1, 2, 1
+365, 1, 468, 278, 27, 21, 1, 2, 1
+365, 55, 4, 351, 31, 93, 1, 0, 1
+365, 82, 567, 285, 41, 29, 1, 2, 1
+365, 280, 724, 346, 43, 109, 1, 0, 1
+365, 319, 843, 296, 27, 67, 1, 0, 1
+365, 338, 787, 330, 44, 109, 1, 0, 1
+365, 350, 681, 315, 39, 106, 1, 0, 1
+365, 361, 703, 314, 100, 63, 1, 2, 1
+365, 369, 746, 285, 23, 30, 1, 0, 1
+365, 383, 552, 277, 27, 22, 1, 2, 1
+365, 414, 668, 311, 27, 98, 1, 0, 1
+366, 1, 469, 278, 27, 21, 1, 2, 1
+366, 55, 2, 352, 31, 93, 1, 0, 1
+366, 82, 566, 285, 43, 31, 1, 2, 1
+366, 280, 725, 350, 43, 108, 1, 0, 1
+366, 319, 845, 296, 27, 68, 1, 0, 1
+366, 338, 787, 331, 44, 112, 1, 0, 1
+366, 350, 679, 317, 40, 107, 1, 0, 1
+366, 361, 703, 314, 101, 65, 1, 2, 1
+366, 369, 747, 286, 23, 31, 1, 0, 1
+366, 383, 552, 277, 28, 23, 1, 2, 1
+366, 414, 668, 315, 28, 100, 1, 0, 1
+367, 1, 469, 279, 27, 21, 1, 2, 1
+367, 55, 0, 353, 29, 95, 1, 0, 1
+367, 82, 566, 287, 43, 31, 1, 2, 1
+367, 280, 726, 352, 44, 110, 1, 0, 1
+367, 338, 786, 333, 44, 113, 1, 0, 1
+367, 350, 680, 319, 39, 106, 1, 0, 1
+367, 361, 704, 316, 101, 65, 1, 2, 1
+367, 369, 749, 286, 23, 31, 1, 0, 1
+367, 383, 552, 279, 27, 21, 1, 2, 1
+367, 414, 668, 319, 28, 100, 1, 0, 1
+368, 1, 470, 280, 27, 21, 1, 2, 1
+368, 55, 0, 356, 26, 94, 1, 0, 1
+368, 82, 567, 288, 43, 31, 1, 2, 1
+368, 280, 727, 354, 45, 112, 1, 0, 1
+368, 338, 785, 334, 45, 115, 1, 0, 1
+368, 350, 676, 321, 40, 106, 1, 0, 1
+368, 361, 704, 318, 99, 64, 1, 2, 1
+368, 369, 748, 287, 24, 32, 1, 0, 1
+368, 383, 553, 280, 26, 22, 1, 2, 1
+368, 414, 668, 322, 28, 100, 1, 0, 1
+369, 1, 470, 282, 26, 20, 1, 2, 1
+369, 55, 0, 358, 23, 95, 1, 0, 1
+369, 82, 568, 290, 42, 30, 1, 2, 1
+369, 280, 728, 354, 46, 115, 1, 0, 1
+369, 338, 785, 334, 45, 117, 1, 0, 1
+369, 350, 675, 322, 41, 106, 1, 0, 1
+369, 361, 705, 320, 98, 63, 1, 2, 1
+369, 369, 749, 288, 23, 32, 1, 0, 1
+369, 383, 553, 282, 25, 21, 1, 2, 1
+370, 1, 470, 283, 25, 20, 1, 2, 1
+370, 55, 0, 359, 21, 93, 1, 0, 1
+370, 82, 569, 292, 41, 29, 1, 2, 1
+370, 280, 728, 356, 47, 117, 1, 0, 1
+370, 338, 783, 335, 46, 118, 1, 0, 1
+370, 350, 678, 322, 41, 107, 1, 0, 1
+370, 361, 707, 322, 95, 62, 1, 2, 1
+370, 369, 749, 289, 23, 33, 1, 0, 1
+370, 383, 553, 283, 26, 21, 1, 2, 1
+370, 414, 662, 325, 28, 97, 1, 0, 1
+371, 1, 470, 284, 25, 20, 1, 2, 1
+371, 55, 0, 358, 28, 94, 1, 0, 1
+371, 82, 570, 293, 41, 29, 1, 2, 1
+371, 280, 729, 357, 47, 118, 1, 0, 1
+371, 338, 782, 335, 48, 119, 1, 0, 1
+371, 350, 678, 323, 41, 108, 1, 0, 1
+371, 361, 707, 323, 94, 60, 1, 2, 1
+371, 369, 749, 289, 23, 34, 1, 0, 1
+371, 383, 553, 283, 27, 22, 1, 2, 1
+371, 414, 661, 325, 28, 98, 1, 0, 1
+372, 1, 470, 283, 25, 20, 1, 2, 1
+372, 55, 0, 359, 27, 92, 1, 0, 1
+372, 82, 569, 293, 43, 30, 1, 2, 1
+372, 280, 728, 359, 48, 119, 1, 0, 1
+372, 338, 782, 336, 49, 119, 1, 0, 1
+372, 350, 678, 325, 39, 108, 1, 0, 1
+372, 361, 708, 323, 95, 62, 1, 2, 1
+372, 369, 749, 290, 23, 34, 1, 0, 1
+372, 383, 553, 282, 27, 23, 1, 2, 1
+372, 414, 660, 326, 27, 96, 1, 0, 1
+373, 1, 470, 284, 25, 19, 1, 2, 1
+373, 55, 0, 362, 26, 92, 1, 0, 1
+373, 82, 568, 293, 44, 31, 1, 2, 1
+373, 280, 728, 360, 48, 120, 1, 0, 1
+373, 338, 783, 340, 49, 116, 1, 0, 1
+373, 350, 677, 329, 38, 105, 1, 0, 1
+373, 361, 710, 323, 96, 62, 1, 2, 1
+373, 369, 750, 289, 23, 34, 1, 0, 1
+373, 383, 553, 282, 27, 25, 1, 2, 1
+373, 414, 658, 326, 26, 94, 1, 0, 1
+374, 1, 471, 284, 24, 19, 1, 2, 1
+374, 55, 0, 364, 24, 90, 1, 0, 1
+374, 82, 567, 293, 45, 32, 1, 2, 1
+374, 280, 728, 361, 47, 120, 1, 0, 1
+374, 338, 783, 342, 49, 116, 1, 0, 1
+374, 350, 676, 329, 38, 105, 1, 0, 1
+374, 361, 712, 323, 99, 63, 1, 2, 1
+374, 369, 750, 289, 23, 34, 1, 0, 1
+374, 383, 553, 282, 28, 25, 1, 2, 1
+374, 414, 656, 325, 27, 95, 1, 0, 1
+375, 1, 470, 284, 25, 20, 1, 2, 1
+375, 55, 0, 365, 22, 92, 1, 0, 1
+375, 82, 568, 293, 45, 31, 1, 2, 1
+375, 280, 727, 361, 47, 121, 1, 0, 1
+375, 338, 783, 345, 49, 114, 1, 0, 1
+375, 350, 675, 328, 38, 108, 1, 0, 1
+375, 361, 712, 324, 101, 62, 1, 2, 1
+375, 369, 751, 290, 23, 34, 1, 0, 1
+375, 383, 552, 283, 28, 25, 1, 2, 1
+375, 414, 655, 323, 28, 98, 1, 0, 1
+376, 1, 470, 283, 25, 20, 1, 2, 1
+376, 55, 0, 366, 19, 93, 1, 0, 1
+376, 82, 568, 292, 44, 32, 1, 2, 1
+376, 280, 727, 362, 46, 120, 1, 0, 1
+376, 338, 781, 346, 50, 113, 1, 0, 1
+376, 350, 673, 328, 39, 108, 1, 0, 1
+376, 361, 708, 323, 103, 64, 1, 2, 1
+376, 383, 551, 282, 29, 26, 1, 2, 1
+376, 414, 654, 324, 28, 98, 1, 0, 1
+376, 441, 800, 338, 48, 49, 1, 2, 1
+377, 1, 470, 281, 24, 20, 1, 2, 1
+377, 55, 0, 367, 18, 93, 1, 0, 1
+377, 82, 567, 291, 46, 33, 1, 2, 1
+377, 280, 727, 361, 46, 123, 1, 0, 1
+377, 338, 778, 345, 51, 115, 1, 0, 1
+377, 350, 672, 328, 38, 109, 1, 0, 1
+377, 361, 706, 322, 106, 65, 1, 2, 1
+377, 369, 751, 286, 23, 34, 1, 0, 1
+377, 383, 551, 281, 28, 26, 1, 2, 1
+377, 441, 801, 339, 47, 47, 1, 2, 1
+378, 1, 469, 280, 24, 19, 1, 2, 1
+378, 82, 566, 290, 47, 34, 1, 2, 1
+378, 280, 726, 361, 46, 124, 1, 0, 1
+378, 338, 775, 343, 52, 120, 1, 0, 1
+378, 350, 670, 329, 35, 99, 1, 0, 1
+378, 361, 705, 320, 105, 65, 1, 2, 1
+378, 369, 751, 285, 23, 34, 1, 0, 1
+378, 383, 551, 280, 27, 26, 1, 2, 1
+378, 441, 802, 341, 45, 45, 1, 2, 1
+379, 1, 469, 279, 24, 19, 1, 2, 1
+379, 82, 566, 290, 47, 33, 1, 2, 1
+379, 280, 725, 362, 47, 126, 1, 0, 1
+379, 338, 771, 343, 52, 121, 1, 0, 1
+379, 350, 667, 326, 34, 95, 1, 0, 1
+379, 361, 703, 319, 105, 65, 1, 2, 1
+379, 369, 752, 284, 23, 34, 1, 0, 1
+379, 383, 550, 280, 28, 26, 1, 2, 1
+379, 441, 803, 341, 45, 45, 1, 2, 1
+380, 1, 468, 278, 23, 19, 1, 2, 1
+380, 82, 565, 289, 47, 34, 1, 2, 1
+380, 280, 724, 362, 48, 129, 1, 0, 1
+380, 319, 864, 301, 29, 72, 1, 0, 1
+380, 338, 769, 343, 52, 121, 1, 0, 1
+380, 350, 665, 325, 32, 93, 1, 0, 1
+380, 361, 703, 319, 105, 64, 1, 2, 1
+380, 369, 751, 283, 23, 34, 1, 0, 1
+380, 383, 549, 280, 29, 26, 1, 2, 1
+380, 441, 804, 342, 44, 43, 1, 2, 1
+381, 1, 468, 278, 23, 18, 1, 2, 1
+381, 82, 564, 288, 48, 35, 1, 2, 1
+381, 280, 724, 364, 49, 133, 1, 0, 1
+381, 319, 858, 300, 27, 72, 1, 0, 1
+381, 338, 764, 344, 52, 123, 1, 0, 1
+381, 350, 662, 325, 32, 93, 1, 0, 1
+381, 361, 705, 318, 107, 64, 1, 2, 1
+381, 369, 751, 282, 24, 35, 1, 0, 1
+381, 383, 548, 278, 28, 26, 1, 2, 1
+382, 1, 467, 276, 22, 18, 1, 2, 1
+382, 82, 564, 287, 48, 35, 1, 2, 1
+382, 280, 723, 364, 49, 136, 1, 0, 1
+382, 319, 856, 299, 28, 73, 1, 0, 1
+382, 338, 762, 346, 50, 121, 1, 0, 1
+382, 350, 660, 325, 32, 94, 1, 0, 1
+382, 361, 706, 318, 110, 65, 1, 2, 1
+382, 383, 547, 278, 28, 26, 1, 2, 1
+382, 459, 782, 338, 66, 49, 1, 2, 1
+383, 1, 465, 275, 23, 18, 1, 2, 1
+383, 82, 563, 286, 48, 36, 1, 2, 1
+383, 280, 722, 366, 50, 137, 1, 0, 1
+383, 319, 856, 298, 28, 73, 1, 0, 1
+383, 338, 759, 349, 49, 120, 1, 0, 1
+383, 350, 658, 324, 32, 95, 1, 0, 1
+383, 361, 705, 317, 113, 66, 1, 2, 1
+383, 383, 546, 278, 27, 25, 1, 2, 1
+383, 459, 780, 336, 67, 51, 1, 2, 1
+384, 1, 464, 274, 24, 18, 1, 2, 1
+384, 82, 562, 286, 48, 36, 1, 2, 1
+384, 280, 721, 365, 50, 140, 1, 0, 1
+384, 319, 856, 297, 29, 75, 1, 0, 1
+384, 338, 756, 348, 49, 122, 1, 0, 1
+384, 350, 654, 324, 32, 95, 1, 0, 1
+384, 361, 700, 316, 115, 67, 1, 2, 1
+384, 369, 748, 281, 24, 36, 1, 0, 1
+384, 383, 544, 277, 29, 26, 1, 2, 1
+384, 459, 777, 334, 71, 53, 1, 2, 1
+385, 1, 462, 273, 24, 18, 1, 2, 1
+385, 82, 561, 286, 48, 36, 1, 2, 1
+385, 280, 718, 367, 51, 141, 1, 0, 1
+385, 319, 857, 297, 29, 75, 1, 0, 1
+385, 338, 755, 350, 48, 120, 1, 0, 1
+385, 350, 653, 324, 31, 95, 1, 0, 1
+385, 361, 704, 314, 125, 71, 1, 2, 1
+385, 369, 747, 279, 25, 37, 1, 0, 1
+385, 383, 543, 276, 28, 26, 1, 2, 1
+385, 459, 775, 333, 72, 54, 1, 2, 1
+385, 466, 525, 263, 16, 13, 1, 2, 1
+386, 1, 461, 272, 22, 17, 1, 2, 1
+386, 82, 560, 284, 48, 37, 1, 2, 1
+386, 280, 716, 368, 51, 142, 1, 0, 1
+386, 319, 858, 298, 30, 75, 1, 0, 1
+386, 338, 753, 352, 48, 120, 1, 0, 1
+386, 350, 651, 324, 31, 95, 1, 0, 1
+386, 361, 704, 314, 130, 73, 1, 2, 1
+386, 369, 745, 278, 25, 39, 1, 0, 1
+386, 383, 541, 276, 29, 27, 1, 2, 1
+386, 414, 622, 324, 30, 102, 1, 0, 1
+386, 466, 523, 263, 15, 13, 1, 2, 1
+386, 470, 592, 270, 39, 27, 1, 2, 1
+387, 1, 460, 270, 23, 18, 1, 2, 1
+387, 82, 560, 284, 47, 37, 1, 2, 1
+387, 280, 715, 370, 50, 141, 1, 0, 1
+387, 319, 859, 298, 29, 75, 1, 0, 1
+387, 338, 752, 351, 49, 121, 1, 0, 1
+387, 350, 643, 322, 32, 98, 1, 0, 1
+387, 361, 704, 314, 132, 72, 1, 2, 1
+387, 369, 745, 277, 25, 39, 1, 0, 1
+387, 383, 539, 276, 29, 27, 1, 2, 1
+387, 414, 619, 322, 31, 106, 1, 0, 1
+387, 466, 522, 263, 15, 12, 1, 2, 1
+387, 470, 592, 271, 36, 25, 1, 2, 1
+388, 1, 457, 268, 25, 19, 1, 2, 1
+388, 82, 559, 286, 45, 35, 1, 2, 1
+388, 280, 712, 372, 50, 142, 1, 0, 1
+388, 319, 863, 299, 29, 73, 1, 0, 1
+388, 338, 749, 349, 50, 126, 1, 0, 1
+388, 350, 640, 322, 33, 98, 1, 0, 1
+388, 361, 703, 315, 135, 73, 1, 2, 1
+388, 369, 743, 278, 26, 39, 1, 0, 1
+388, 383, 538, 276, 28, 27, 1, 2, 1
+388, 414, 614, 321, 33, 111, 1, 0, 1
+388, 466, 521, 263, 15, 11, 1, 2, 1
+388, 470, 589, 271, 36, 25, 1, 2, 1
+389, 1, 455, 268, 25, 19, 1, 2, 1
+389, 82, 557, 287, 46, 35, 1, 2, 1
+389, 280, 710, 372, 50, 145, 1, 0, 1
+389, 319, 866, 299, 29, 76, 1, 0, 1
+389, 338, 748, 347, 50, 127, 1, 0, 1
+389, 350, 644, 325, 25, 76, 1, 0, 1
+389, 361, 699, 316, 139, 74, 1, 2, 1
+389, 369, 742, 278, 26, 40, 1, 0, 1
+389, 383, 536, 276, 28, 27, 1, 2, 1
+389, 414, 612, 322, 31, 106, 1, 0, 1
+389, 470, 588, 271, 35, 24, 1, 2, 1
+390, 1, 454, 268, 24, 18, 1, 2, 1
+390, 82, 554, 287, 46, 35, 1, 2, 1
+390, 280, 707, 372, 51, 147, 1, 0, 1
+390, 319, 868, 298, 29, 77, 1, 0, 1
+390, 338, 745, 347, 52, 128, 1, 0, 1
+390, 350, 642, 325, 25, 74, 1, 0, 1
+390, 361, 698, 317, 141, 74, 1, 2, 1
+390, 369, 740, 279, 25, 39, 1, 0, 1
+390, 383, 533, 276, 30, 27, 1, 2, 1
+390, 414, 610, 322, 32, 114, 1, 0, 1
+390, 466, 515, 262, 16, 13, 1, 2, 1
+391, 1, 452, 268, 23, 17, 1, 2, 1
+391, 82, 553, 287, 45, 36, 1, 2, 1
+391, 280, 705, 374, 52, 150, 1, 0, 1
+391, 319, 867, 298, 30, 81, 1, 0, 1
+391, 338, 743, 348, 51, 125, 1, 0, 1
+391, 361, 695, 319, 142, 74, 1, 2, 1
+391, 369, 739, 280, 25, 39, 1, 0, 1
+391, 383, 532, 276, 30, 27, 1, 2, 1
+391, 414, 605, 322, 31, 112, 1, 0, 1
+391, 466, 512, 263, 15, 11, 1, 2, 1
+392, 1, 449, 268, 23, 17, 1, 2, 1
+392, 82, 551, 288, 46, 35, 1, 2, 1
+392, 280, 700, 375, 54, 155, 1, 0, 1
+392, 319, 868, 300, 29, 77, 1, 0, 1
+392, 338, 737, 349, 52, 128, 1, 0, 1
+392, 361, 691, 319, 144, 73, 1, 2, 1
+392, 369, 736, 279, 25, 40, 1, 0, 1
+392, 383, 528, 276, 31, 27, 1, 2, 1
+392, 414, 601, 322, 32, 112, 1, 0, 1
+392, 466, 510, 263, 15, 11, 1, 2, 1
+393, 1, 447, 267, 23, 17, 1, 2, 1
+393, 82, 548, 287, 47, 37, 1, 2, 1
+393, 280, 698, 378, 53, 155, 1, 0, 1
+393, 319, 867, 301, 29, 79, 1, 0, 1
+393, 338, 730, 350, 51, 127, 1, 0, 1
+393, 361, 688, 320, 146, 74, 1, 2, 1
+393, 369, 732, 279, 26, 40, 1, 0, 1
+393, 383, 526, 276, 30, 27, 1, 2, 1
+393, 414, 598, 324, 29, 105, 1, 0, 1
+393, 466, 509, 263, 14, 11, 1, 2, 1
+394, 1, 444, 267, 24, 17, 1, 2, 1
+394, 82, 546, 288, 45, 36, 1, 2, 1
+394, 280, 693, 380, 52, 149, 1, 0, 1
+394, 319, 866, 302, 29, 80, 1, 0, 1
+394, 338, 723, 349, 51, 128, 1, 0, 1
+394, 361, 683, 321, 150, 74, 1, 2, 1
+394, 369, 730, 279, 26, 40, 1, 0, 1
+394, 383, 523, 276, 31, 27, 1, 2, 1
+394, 414, 593, 325, 29, 104, 1, 0, 1
+395, 1, 440, 266, 24, 18, 1, 2, 1
+395, 82, 542, 288, 47, 37, 1, 2, 1
+395, 280, 691, 380, 52, 150, 1, 0, 1
+395, 319, 864, 302, 31, 82, 1, 0, 1
+395, 338, 721, 351, 43, 108, 1, 0, 1
+395, 361, 681, 322, 149, 73, 1, 2, 1
+395, 369, 728, 280, 25, 40, 1, 0, 1
+395, 383, 519, 275, 33, 29, 1, 2, 1
+395, 414, 587, 325, 32, 111, 1, 0, 1
+396, 1, 437, 265, 24, 17, 1, 2, 1
+396, 82, 539, 288, 48, 37, 1, 2, 1
+396, 280, 687, 378, 54, 157, 1, 0, 1
+396, 319, 862, 302, 31, 81, 1, 0, 1
+396, 338, 714, 350, 47, 119, 1, 0, 1
+396, 361, 676, 321, 152, 75, 1, 2, 1
+396, 369, 723, 279, 26, 41, 1, 0, 1
+396, 383, 515, 275, 33, 29, 1, 2, 1
+396, 414, 583, 324, 33, 119, 1, 0, 1
+396, 492, 686, 275, 29, 48, 1, 0, 1
+397, 1, 435, 265, 23, 17, 1, 2, 1
+397, 82, 536, 288, 47, 38, 1, 2, 1
+397, 280, 682, 379, 55, 160, 1, 0, 1
+397, 319, 861, 302, 31, 82, 1, 0, 1
+397, 338, 709, 351, 45, 117, 1, 0, 1
+397, 361, 672, 322, 152, 75, 1, 2, 1
+397, 369, 720, 278, 26, 43, 1, 0, 1
+397, 383, 512, 276, 32, 27, 1, 2, 1
+397, 414, 577, 324, 33, 119, 1, 0, 1
+397, 492, 684, 275, 28, 48, 1, 0, 1
+398, 1, 432, 265, 23, 16, 1, 2, 1
+398, 82, 532, 287, 48, 38, 1, 2, 1
+398, 280, 677, 382, 55, 157, 1, 0, 1
+398, 319, 859, 302, 31, 82, 1, 0, 1
+398, 338, 703, 353, 41, 107, 1, 0, 1
+398, 361, 667, 322, 155, 75, 1, 2, 1
+398, 369, 717, 279, 26, 41, 1, 0, 1
+398, 383, 508, 275, 33, 28, 1, 2, 1
+398, 414, 572, 322, 35, 124, 1, 0, 1
+398, 492, 681, 277, 27, 46, 1, 0, 1
+399, 1, 428, 264, 23, 16, 1, 2, 1
+399, 82, 528, 287, 49, 39, 1, 2, 1
+399, 280, 672, 386, 55, 153, 1, 0, 1
+399, 319, 857, 304, 29, 79, 1, 0, 1
+399, 338, 701, 357, 34, 86, 1, 0, 1
+399, 361, 662, 322, 158, 76, 1, 2, 1
+399, 369, 714, 278, 25, 43, 1, 0, 1
+399, 383, 505, 274, 33, 29, 1, 2, 1
+399, 414, 567, 320, 37, 131, 1, 0, 1
+399, 492, 675, 277, 28, 47, 1, 0, 1
+400, 1, 423, 263, 25, 17, 1, 2, 1
+400, 82, 524, 287, 49, 40, 1, 2, 1
+400, 280, 668, 388, 55, 151, 1, 0, 1
+400, 319, 857, 306, 28, 78, 1, 0, 1
+400, 338, 697, 354, 33, 83, 1, 0, 1
+400, 361, 657, 322, 159, 76, 1, 2, 1
+400, 369, 708, 279, 25, 41, 1, 0, 1
+400, 383, 501, 274, 32, 28, 1, 2, 1
+400, 414, 562, 323, 38, 133, 1, 0, 1
+400, 492, 672, 278, 26, 46, 1, 0, 1
+401, 1, 419, 263, 24, 17, 1, 2, 1
+401, 82, 520, 288, 50, 41, 1, 2, 1
+401, 280, 662, 385, 57, 154, 1, 0, 1
+401, 319, 857, 307, 29, 79, 1, 0, 1
+401, 338, 691, 355, 31, 79, 1, 0, 1
+401, 361, 651, 322, 163, 78, 1, 2, 1
+401, 369, 705, 279, 25, 41, 1, 0, 1
+401, 383, 495, 274, 35, 30, 1, 2, 1
+401, 414, 553, 328, 38, 128, 1, 0, 1
+401, 492, 668, 278, 26, 45, 1, 0, 1
+402, 1, 415, 262, 25, 18, 1, 2, 1
+402, 82, 515, 288, 49, 41, 1, 2, 1
+402, 280, 658, 390, 55, 149, 1, 0, 1
+402, 319, 856, 307, 29, 79, 1, 0, 1
+402, 338, 679, 359, 30, 73, 1, 0, 1
+402, 361, 647, 322, 163, 78, 1, 2, 1
+402, 369, 700, 279, 26, 43, 1, 0, 1
+402, 383, 490, 274, 36, 31, 1, 2, 1
+402, 414, 545, 328, 38, 128, 1, 0, 1
+402, 492, 661, 275, 28, 48, 1, 0, 1
+403, 1, 411, 262, 25, 18, 1, 2, 1
+403, 82, 512, 288, 49, 42, 1, 2, 1
+403, 280, 651, 390, 57, 149, 1, 0, 1
+403, 319, 853, 306, 32, 85, 1, 0, 1
+403, 338, 673, 361, 29, 67, 1, 0, 1
+403, 361, 641, 322, 165, 79, 1, 2, 1
+403, 369, 695, 278, 26, 44, 1, 0, 1
+403, 383, 487, 275, 35, 30, 1, 2, 1
+403, 414, 541, 329, 39, 133, 1, 0, 1
+403, 492, 658, 276, 26, 47, 1, 0, 1
+404, 1, 406, 262, 25, 18, 1, 2, 1
+404, 82, 510, 289, 49, 41, 1, 2, 1
+404, 280, 645, 392, 57, 147, 1, 0, 1
+404, 319, 853, 306, 32, 86, 1, 0, 1
+404, 338, 668, 357, 30, 73, 1, 0, 1
+404, 361, 634, 322, 168, 80, 1, 2, 1
+404, 369, 691, 279, 26, 43, 1, 0, 1
+404, 383, 482, 275, 36, 31, 1, 2, 1
+404, 414, 531, 329, 41, 138, 1, 0, 1
+404, 492, 653, 276, 27, 47, 1, 0, 1
+405, 1, 402, 262, 24, 18, 1, 2, 1
+405, 82, 506, 288, 50, 43, 1, 2, 1
+405, 280, 637, 396, 57, 143, 1, 0, 1
+405, 319, 848, 304, 34, 90, 1, 0, 1
+405, 338, 659, 358, 30, 71, 1, 0, 1
+405, 361, 628, 322, 170, 80, 1, 2, 1
+405, 369, 686, 279, 26, 43, 1, 0, 1
+405, 383, 477, 274, 36, 32, 1, 2, 1
+405, 414, 523, 330, 41, 139, 1, 0, 1
+405, 492, 648, 277, 27, 48, 1, 0, 1
+406, 1, 397, 262, 24, 17, 1, 2, 1
+406, 82, 502, 289, 51, 42, 1, 2, 1
+406, 280, 623, 395, 60, 143, 1, 0, 1
+406, 319, 847, 304, 35, 91, 1, 0, 1
+406, 338, 649, 357, 30, 70, 1, 0, 1
+406, 361, 623, 322, 170, 81, 1, 2, 1
+406, 369, 681, 278, 26, 44, 1, 0, 1
+406, 383, 472, 274, 37, 32, 1, 2, 1
+406, 414, 517, 333, 43, 138, 1, 0, 1
+406, 492, 643, 275, 27, 50, 1, 0, 1
+407, 1, 392, 262, 24, 17, 1, 2, 1
+407, 82, 497, 289, 53, 43, 1, 2, 1
+407, 280, 614, 395, 62, 142, 1, 0, 1
+407, 319, 838, 303, 34, 91, 1, 0, 1
+407, 338, 643, 358, 28, 67, 1, 0, 1
+407, 361, 617, 322, 172, 82, 1, 2, 1
+407, 369, 674, 277, 27, 46, 1, 0, 1
+407, 383, 466, 274, 38, 34, 1, 2, 1
+407, 414, 510, 334, 43, 139, 1, 0, 1
+407, 492, 637, 275, 27, 50, 1, 0, 1
+408, 1, 387, 260, 25, 19, 1, 2, 1
+408, 82, 492, 289, 53, 44, 1, 2, 1
+408, 280, 600, 397, 66, 141, 1, 0, 1
+408, 319, 833, 302, 34, 92, 1, 0, 1
+408, 338, 630, 361, 29, 69, 1, 0, 1
+408, 361, 611, 322, 172, 82, 1, 2, 1
+408, 369, 670, 277, 27, 47, 1, 0, 1
+408, 383, 461, 275, 37, 33, 1, 2, 1
+408, 414, 501, 332, 46, 145, 1, 0, 1
+408, 492, 632, 276, 26, 49, 1, 0, 1
+409, 1, 383, 261, 24, 17, 1, 2, 1
+409, 82, 487, 291, 53, 43, 1, 2, 1
+409, 280, 600, 399, 65, 140, 1, 0, 1
+409, 319, 828, 301, 35, 95, 1, 0, 1
+409, 338, 623, 362, 28, 67, 1, 0, 1
+409, 361, 605, 322, 172, 82, 1, 2, 1
+409, 369, 663, 278, 26, 45, 1, 0, 1
+409, 383, 456, 274, 38, 33, 1, 2, 1
+409, 414, 489, 332, 48, 147, 1, 0, 1
+409, 492, 625, 275, 27, 51, 1, 0, 1
+410, 1, 378, 260, 24, 18, 1, 2, 1
+410, 82, 480, 291, 54, 43, 1, 2, 1
+410, 280, 592, 402, 65, 137, 1, 0, 1
+410, 319, 824, 302, 35, 97, 1, 0, 1
+410, 361, 598, 322, 174, 83, 1, 2, 1
+410, 369, 658, 277, 27, 47, 1, 0, 1
+410, 383, 450, 275, 37, 32, 1, 2, 1
+410, 414, 483, 334, 48, 148, 1, 0, 1
+410, 492, 620, 274, 26, 51, 1, 0, 1
+411, 1, 373, 261, 23, 17, 1, 2, 1
+411, 82, 473, 290, 56, 45, 1, 2, 1
+411, 280, 585, 406, 63, 133, 1, 0, 1
+411, 319, 817, 301, 34, 95, 1, 0, 1
+411, 338, 599, 360, 26, 61, 1, 0, 1
+411, 361, 592, 322, 174, 83, 1, 2, 1
+411, 369, 651, 277, 26, 48, 1, 0, 1
+411, 383, 445, 275, 37, 32, 1, 2, 1
+411, 414, 471, 334, 49, 148, 1, 0, 1
+411, 492, 613, 275, 27, 52, 1, 0, 1
+412, 1, 367, 260, 23, 18, 1, 2, 1
+412, 82, 466, 292, 56, 44, 1, 2, 1
+412, 280, 578, 408, 62, 131, 1, 0, 1
+412, 319, 812, 300, 34, 95, 1, 0, 1
+412, 338, 590, 360, 26, 59, 1, 0, 1
+412, 361, 583, 323, 176, 84, 1, 2, 1
+412, 369, 646, 277, 26, 48, 1, 0, 1
+412, 383, 439, 275, 37, 32, 1, 2, 1
+412, 414, 462, 335, 50, 150, 1, 0, 1
+412, 492, 606, 272, 27, 56, 1, 0, 1
+413, 1, 361, 259, 23, 17, 1, 2, 1
+413, 82, 459, 292, 56, 45, 1, 2, 1
+413, 280, 569, 411, 61, 128, 1, 0, 1
+413, 319, 808, 301, 33, 95, 1, 0, 1
+413, 361, 575, 323, 179, 85, 1, 2, 1
+413, 369, 638, 277, 26, 47, 1, 0, 1
+413, 383, 432, 274, 38, 33, 1, 2, 1
+413, 414, 453, 337, 51, 148, 1, 0, 1
+413, 492, 599, 275, 26, 51, 1, 0, 1
+414, 1, 355, 259, 24, 17, 1, 2, 1
+414, 82, 454, 293, 56, 44, 1, 2, 1
+414, 280, 559, 411, 61, 128, 1, 0, 1
+414, 319, 802, 299, 32, 96, 1, 0, 1
+414, 338, 566, 360, 30, 68, 1, 0, 1
+414, 361, 569, 324, 177, 85, 1, 2, 1
+414, 369, 632, 277, 25, 48, 1, 0, 1
+414, 383, 425, 275, 37, 31, 1, 2, 1
+414, 414, 437, 336, 52, 150, 1, 0, 1
+414, 492, 592, 273, 25, 52, 1, 0, 1
+414, 542, 534, 386, 41, 95, 1, 0, 1
+414, 544, 843, 304, 20, 70, 1, 0, 1
+415, 1, 350, 259, 21, 17, 1, 2, 1
+415, 82, 445, 294, 55, 44, 1, 2, 1
+415, 280, 547, 412, 61, 126, 1, 0, 1
+415, 319, 797, 298, 31, 93, 1, 0, 1
+415, 338, 554, 360, 32, 73, 1, 0, 1
+415, 361, 560, 324, 179, 85, 1, 2, 1
+415, 369, 624, 276, 26, 49, 1, 0, 1
+415, 383, 418, 275, 37, 31, 1, 2, 1
+415, 414, 423, 334, 53, 153, 1, 0, 1
+415, 492, 583, 272, 26, 54, 1, 0, 1
+415, 542, 524, 387, 38, 87, 1, 0, 1
+415, 544, 838, 304, 17, 57, 1, 0, 1
+416, 1, 342, 258, 23, 17, 1, 2, 1
+416, 82, 437, 295, 56, 44, 1, 2, 1
+416, 280, 536, 414, 60, 124, 1, 0, 1
+416, 319, 793, 296, 29, 89, 1, 0, 1
+416, 338, 543, 360, 32, 73, 1, 0, 1
+416, 361, 552, 323, 179, 86, 1, 2, 1
+416, 369, 616, 276, 25, 49, 1, 0, 1
+416, 383, 409, 274, 38, 33, 1, 2, 1
+416, 414, 409, 335, 53, 154, 1, 0, 1
+416, 492, 575, 269, 27, 56, 1, 0, 1
+416, 542, 509, 390, 47, 106, 1, 0, 1
+416, 544, 833, 303, 14, 50, 1, 0, 1
+417, 1, 336, 258, 22, 17, 1, 2, 1
+417, 82, 432, 295, 56, 44, 1, 2, 1
+417, 280, 525, 414, 60, 124, 1, 0, 1
+417, 319, 787, 295, 27, 84, 1, 0, 1
+417, 338, 530, 365, 32, 70, 1, 0, 1
+417, 361, 544, 322, 181, 88, 1, 2, 1
+417, 369, 611, 276, 24, 48, 1, 0, 1
+417, 383, 402, 274, 36, 33, 1, 2, 1
+417, 414, 393, 336, 55, 155, 1, 0, 1
+417, 492, 568, 269, 27, 56, 1, 0, 1
+417, 542, 495, 392, 48, 113, 1, 0, 1
+417, 544, 828, 303, 13, 43, 1, 0, 1
+418, 1, 329, 257, 23, 18, 1, 2, 1
+418, 280, 513, 416, 60, 122, 1, 0, 1
+418, 319, 782, 294, 27, 84, 1, 0, 1
+418, 338, 517, 367, 30, 64, 1, 0, 1
+418, 361, 536, 323, 180, 87, 1, 2, 1
+418, 369, 603, 276, 24, 48, 1, 0, 1
+418, 383, 394, 274, 37, 33, 1, 2, 1
+418, 414, 377, 337, 56, 155, 1, 0, 1
+418, 492, 560, 268, 27, 56, 1, 0, 1
+418, 542, 478, 394, 58, 135, 1, 0, 1
+418, 558, 900, 291, 36, 99, 1, 0, 1
+419, 1, 321, 256, 23, 17, 1, 2, 1
+419, 82, 423, 296, 55, 43, 1, 2, 1
+419, 280, 501, 417, 59, 121, 1, 0, 1
+419, 338, 502, 371, 32, 66, 1, 0, 1
+419, 361, 526, 323, 181, 88, 1, 2, 1
+419, 369, 595, 275, 25, 49, 1, 0, 1
+419, 383, 386, 274, 37, 34, 1, 2, 1
+419, 414, 362, 337, 58, 157, 1, 0, 1
+419, 492, 551, 267, 27, 57, 1, 0, 1
+419, 542, 465, 395, 57, 135, 1, 0, 1
+419, 558, 891, 289, 38, 101, 1, 0, 1
+419, 559, 807, 305, 32, 85, 1, 0, 1
+420, 1, 315, 255, 22, 17, 1, 2, 1
+420, 82, 416, 296, 56, 43, 1, 2, 1
+420, 280, 487, 416, 60, 122, 1, 0, 1
+420, 338, 491, 372, 28, 57, 1, 0, 1
+420, 361, 519, 323, 181, 88, 1, 2, 1
+420, 369, 588, 275, 23, 48, 1, 0, 1
+420, 383, 378, 274, 35, 33, 1, 2, 1
+420, 414, 348, 338, 59, 159, 1, 0, 1
+420, 492, 544, 265, 28, 59, 1, 0, 1
+420, 542, 451, 400, 58, 139, 1, 0, 1
+420, 558, 882, 289, 38, 100, 1, 0, 1
+420, 559, 801, 304, 33, 87, 1, 0, 1
+421, 1, 308, 255, 22, 17, 1, 2, 1
+421, 82, 408, 296, 57, 43, 1, 2, 1
+421, 280, 471, 417, 60, 122, 1, 0, 1
+421, 338, 477, 374, 29, 56, 1, 0, 1
+421, 361, 510, 324, 180, 87, 1, 2, 1
+421, 369, 579, 275, 24, 49, 1, 0, 1
+421, 383, 368, 274, 35, 34, 1, 2, 1
+421, 414, 330, 339, 61, 159, 1, 0, 1
+421, 492, 535, 265, 28, 60, 1, 0, 1
+421, 542, 441, 399, 48, 111, 1, 0, 1
+421, 558, 875, 290, 37, 100, 1, 0, 1
+421, 559, 792, 304, 33, 87, 1, 0, 1
+422, 1, 302, 254, 22, 17, 1, 2, 1
+422, 82, 397, 293, 61, 47, 1, 2, 1
+422, 280, 457, 421, 60, 118, 1, 0, 1
+422, 338, 460, 375, 32, 62, 1, 0, 1
+422, 361, 499, 322, 182, 89, 1, 2, 1
+422, 369, 571, 274, 24, 49, 1, 0, 1
+422, 383, 358, 273, 33, 34, 1, 2, 1
+422, 414, 316, 338, 62, 161, 1, 0, 1
+422, 492, 528, 266, 27, 57, 1, 0, 1
+422, 542, 423, 401, 56, 131, 1, 0, 1
+422, 558, 865, 289, 37, 100, 1, 0, 1
+422, 559, 785, 303, 33, 87, 1, 0, 1
+423, 1, 293, 253, 21, 17, 1, 2, 1
+423, 82, 387, 293, 63, 47, 1, 2, 1
+423, 280, 440, 423, 60, 116, 1, 0, 1
+423, 338, 444, 378, 31, 58, 1, 0, 1
+423, 361, 489, 323, 182, 89, 1, 2, 1
+423, 369, 562, 275, 23, 47, 1, 0, 1
+423, 383, 351, 273, 33, 34, 1, 2, 1
+423, 414, 303, 338, 64, 164, 1, 0, 1
+423, 492, 518, 264, 28, 59, 1, 0, 1
+423, 542, 404, 400, 59, 138, 1, 0, 1
+423, 558, 855, 288, 37, 101, 1, 0, 1
+423, 559, 776, 303, 33, 87, 1, 0, 1
+424, 1, 286, 253, 22, 17, 1, 2, 1
+424, 82, 377, 291, 66, 50, 1, 2, 1
+424, 280, 426, 426, 59, 113, 1, 0, 1
+424, 338, 426, 378, 36, 67, 1, 0, 1
+424, 361, 476, 322, 185, 91, 1, 2, 1
+424, 369, 553, 274, 23, 49, 1, 0, 1
+424, 414, 287, 340, 66, 163, 1, 0, 1
+424, 492, 508, 264, 28, 60, 1, 0, 1
+424, 542, 384, 399, 60, 140, 1, 0, 1
+424, 558, 846, 289, 37, 100, 1, 0, 1
+424, 559, 767, 302, 33, 88, 1, 0, 1
+425, 82, 365, 290, 68, 51, 1, 2, 1
+425, 280, 410, 425, 59, 114, 1, 0, 1
+425, 338, 407, 380, 36, 65, 1, 0, 1
+425, 361, 464, 322, 186, 91, 1, 2, 1
+425, 369, 542, 273, 24, 50, 1, 0, 1
+425, 414, 270, 341, 66, 165, 1, 0, 1
+425, 492, 498, 264, 28, 59, 1, 0, 1
+425, 542, 364, 402, 60, 137, 1, 0, 1
+425, 558, 835, 288, 37, 100, 1, 0, 1
+425, 559, 759, 301, 33, 89, 1, 0, 1
+425, 573, 134, 247, 43, 41, 1, 2, 1
+425, 575, 133, 246, 45, 43, 1, 2, 1
+426, 82, 358, 290, 66, 51, 1, 2, 1
+426, 280, 395, 430, 58, 109, 1, 0, 1
+426, 338, 389, 383, 36, 64, 1, 0, 1
+426, 361, 454, 322, 186, 92, 1, 2, 1
+426, 369, 531, 273, 24, 49, 1, 0, 1
+426, 414, 253, 343, 68, 167, 1, 0, 1
+426, 492, 489, 265, 27, 58, 1, 0, 1
+426, 542, 351, 406, 58, 133, 1, 0, 1
+426, 558, 826, 288, 37, 102, 1, 0, 1
+426, 559, 752, 301, 33, 89, 1, 0, 1
+426, 573, 129, 247, 43, 41, 1, 2, 1
+426, 575, 115, 236, 56, 53, 1, 2, 1
+427, 82, 347, 290, 68, 52, 1, 2, 1
+427, 280, 376, 434, 57, 105, 1, 0, 1
+427, 319, 721, 308, 32, 99, 1, 0, 1
+427, 338, 369, 384, 37, 66, 1, 0, 1
+427, 361, 444, 323, 187, 93, 1, 2, 1
+427, 369, 521, 273, 24, 51, 1, 0, 1
+427, 414, 235, 346, 70, 169, 1, 0, 1
+427, 492, 479, 265, 27, 59, 1, 0, 1
+427, 542, 331, 409, 57, 130, 1, 0, 1
+427, 558, 815, 287, 38, 105, 1, 0, 1
+427, 559, 744, 301, 32, 86, 1, 0, 1
+427, 573, 109, 239, 51, 49, 1, 2, 1
+427, 575, 109, 241, 50, 48, 1, 2, 1
+428, 82, 336, 292, 69, 52, 1, 2, 1
+428, 280, 362, 441, 55, 98, 1, 0, 1
+428, 319, 710, 310, 35, 104, 1, 0, 1
+428, 338, 346, 386, 41, 73, 1, 0, 1
+428, 361, 433, 325, 186, 92, 1, 2, 1
+428, 369, 512, 274, 24, 51, 1, 0, 1
+428, 414, 215, 349, 72, 171, 1, 0, 1
+428, 492, 468, 265, 29, 60, 1, 0, 1
+428, 542, 316, 417, 54, 122, 1, 0, 1
+428, 558, 805, 287, 38, 104, 1, 0, 1
+428, 559, 735, 303, 32, 85, 1, 0, 1
+428, 573, 99, 240, 52, 49, 1, 2, 1
+428, 575, 99, 243, 50, 47, 1, 2, 1
+429, 82, 325, 291, 70, 54, 1, 2, 1
+429, 280, 344, 446, 53, 93, 1, 0, 1
+429, 319, 698, 308, 36, 108, 1, 0, 1
+429, 338, 326, 389, 41, 73, 1, 0, 1
+429, 361, 421, 326, 186, 93, 1, 2, 1
+429, 369, 502, 275, 24, 52, 1, 0, 1
+429, 414, 194, 350, 74, 174, 1, 0, 1
+429, 492, 458, 267, 29, 60, 1, 0, 1
+429, 542, 294, 422, 48, 108, 1, 0, 1
+429, 558, 794, 288, 38, 105, 1, 0, 1
+429, 559, 726, 304, 33, 87, 1, 0, 1
+429, 573, 87, 241, 52, 49, 1, 2, 1
+429, 575, 90, 246, 47, 44, 1, 2, 1
+429, 584, 353, 260, 34, 30, 1, 2, 1
+430, 82, 313, 293, 73, 55, 1, 2, 1
+430, 280, 326, 450, 51, 88, 1, 0, 1
+430, 319, 686, 311, 37, 108, 1, 0, 1
+430, 338, 310, 391, 41, 74, 1, 0, 1
+430, 361, 408, 327, 188, 95, 1, 2, 1
+430, 369, 495, 276, 24, 53, 1, 0, 1
+430, 414, 174, 352, 74, 174, 1, 0, 1
+430, 492, 447, 267, 29, 61, 1, 0, 1
+430, 542, 270, 428, 48, 105, 1, 0, 1
+430, 558, 782, 290, 39, 105, 1, 0, 1
+430, 559, 718, 307, 32, 82, 1, 0, 1
+430, 573, 77, 244, 52, 49, 1, 2, 1
+430, 575, 74, 241, 55, 52, 1, 2, 1
+430, 584, 343, 262, 34, 30, 1, 2, 1
+431, 82, 301, 293, 75, 57, 1, 2, 1
+431, 280, 306, 456, 49, 82, 1, 0, 1
+431, 319, 675, 307, 39, 115, 1, 0, 1
+431, 338, 284, 397, 44, 79, 1, 0, 1
+431, 361, 396, 330, 189, 95, 1, 2, 1
+431, 369, 486, 279, 24, 54, 1, 0, 1
+431, 414, 151, 356, 74, 174, 1, 0, 1
+431, 492, 436, 269, 29, 61, 1, 0, 1
+431, 542, 252, 434, 47, 100, 1, 0, 1
+431, 558, 772, 292, 38, 105, 1, 0, 1
+431, 559, 709, 309, 34, 87, 1, 0, 1
+431, 573, 68, 244, 52, 49, 1, 2, 1
+431, 575, 64, 240, 56, 54, 1, 2, 1
+431, 584, 332, 261, 35, 32, 1, 2, 1
+431, 590, 406, 268, 28, 69, 1, 0, 1
+432, 82, 289, 294, 77, 59, 1, 2, 1
+432, 280, 285, 458, 48, 79, 1, 0, 1
+432, 319, 665, 308, 39, 117, 1, 0, 1
+432, 338, 264, 401, 42, 74, 1, 0, 1
+432, 361, 384, 331, 189, 96, 1, 2, 1
+432, 369, 471, 279, 23, 54, 1, 0, 1
+432, 414, 130, 358, 74, 174, 1, 0, 1
+432, 492, 425, 270, 28, 61, 1, 0, 1
+432, 542, 227, 436, 47, 99, 1, 0, 1
+432, 558, 761, 294, 39, 104, 1, 0, 1
+432, 559, 700, 310, 32, 81, 1, 0, 1
+432, 584, 322, 261, 35, 31, 1, 2, 1
+432, 590, 394, 270, 28, 68, 1, 0, 1
+433, 82, 278, 295, 78, 59, 1, 2, 1
+433, 280, 267, 466, 45, 71, 1, 0, 1
+433, 319, 657, 311, 38, 117, 1, 0, 1
+433, 338, 240, 406, 43, 75, 1, 0, 1
+433, 361, 372, 333, 189, 95, 1, 2, 1
+433, 369, 461, 280, 24, 55, 1, 0, 1
+433, 383, 260, 280, 34, 32, 1, 2, 1
+433, 414, 106, 361, 72, 168, 1, 0, 1
+433, 492, 413, 272, 28, 61, 1, 0, 1
+433, 542, 201, 438, 52, 100, 1, 0, 1
+433, 558, 750, 294, 40, 105, 1, 0, 1
+433, 559, 690, 311, 33, 84, 1, 0, 1
+433, 584, 310, 262, 38, 33, 1, 2, 1
+433, 590, 383, 270, 28, 67, 1, 0, 1
+434, 82, 266, 296, 79, 60, 1, 2, 1
+434, 280, 246, 472, 44, 65, 1, 0, 1
+434, 319, 646, 308, 40, 122, 1, 0, 1
+434, 338, 216, 408, 47, 82, 1, 0, 1
+434, 361, 359, 334, 189, 95, 1, 2, 1
+434, 369, 447, 280, 24, 55, 1, 0, 1
+434, 383, 247, 281, 37, 35, 1, 2, 1
+434, 414, 80, 363, 64, 152, 1, 0, 1
+434, 492, 401, 272, 29, 63, 1, 0, 1
+434, 542, 173, 439, 54, 99, 1, 0, 1
+434, 558, 739, 295, 40, 105, 1, 0, 1
+434, 559, 682, 312, 36, 88, 1, 0, 1
+434, 584, 300, 262, 37, 33, 1, 2, 1
+434, 590, 371, 272, 27, 65, 1, 0, 1
+434, 597, 494, 280, 21, 58, 1, 0, 1
+435, 82, 254, 296, 81, 62, 1, 2, 1
+435, 280, 223, 478, 41, 60, 1, 0, 1
+435, 319, 636, 318, 38, 115, 1, 0, 1
+435, 338, 195, 412, 47, 83, 1, 0, 1
+435, 361, 346, 334, 191, 98, 1, 2, 1
+435, 369, 439, 281, 24, 56, 1, 0, 1
+435, 383, 234, 282, 40, 37, 1, 2, 1
+435, 414, 52, 367, 66, 161, 1, 0, 1
+435, 492, 390, 273, 28, 64, 1, 0, 1
+435, 542, 151, 441, 57, 98, 1, 0, 1
+435, 558, 730, 294, 41, 109, 1, 0, 1
+435, 559, 673, 314, 37, 90, 1, 0, 1
+435, 584, 289, 262, 38, 33, 1, 2, 1
+435, 590, 361, 273, 27, 66, 1, 0, 1
+435, 597, 484, 279, 21, 59, 1, 0, 1
+435, 598, 463, 282, 25, 62, 1, 0, 1
+436, 82, 243, 297, 80, 61, 1, 2, 1
+436, 280, 197, 483, 40, 56, 1, 0, 1
+436, 319, 625, 317, 40, 118, 1, 0, 1
+436, 338, 173, 410, 47, 85, 1, 0, 1
+436, 361, 332, 336, 192, 97, 1, 2, 1
+436, 369, 428, 282, 24, 56, 1, 0, 1
+436, 383, 223, 282, 41, 37, 1, 2, 1
+436, 414, 27, 369, 65, 164, 1, 0, 1
+436, 492, 379, 273, 28, 64, 1, 0, 1
+436, 542, 127, 445, 58, 94, 1, 0, 1
+436, 558, 718, 296, 40, 108, 1, 0, 1
+436, 559, 663, 313, 39, 93, 1, 0, 1
+436, 584, 278, 261, 39, 33, 1, 2, 1
+436, 590, 349, 273, 27, 65, 1, 0, 1
+436, 597, 472, 278, 23, 63, 1, 0, 1
+436, 598, 451, 282, 26, 63, 1, 0, 1
+437, 82, 231, 298, 83, 63, 1, 2, 1
+437, 280, 169, 490, 36, 49, 1, 0, 1
+437, 319, 612, 321, 40, 117, 1, 0, 1
+437, 338, 149, 417, 48, 85, 1, 0, 1
+437, 361, 319, 336, 194, 99, 1, 2, 1
+437, 369, 418, 283, 24, 56, 1, 0, 1
+437, 383, 211, 283, 42, 38, 1, 2, 1
+437, 414, 3, 370, 65, 165, 1, 0, 1
+437, 492, 369, 273, 28, 64, 1, 0, 1
+437, 542, 102, 448, 59, 91, 1, 0, 1
+437, 558, 705, 297, 41, 107, 1, 0, 1
+437, 559, 653, 315, 38, 91, 1, 0, 1
+437, 573, 0, 236, 57, 61, 1, 2, 1
+437, 584, 269, 263, 37, 32, 1, 2, 1
+437, 590, 338, 274, 27, 66, 1, 0, 1
+437, 597, 461, 278, 24, 66, 1, 0, 1
+437, 598, 440, 283, 26, 64, 1, 0, 1
+438, 82, 219, 299, 84, 64, 1, 2, 1
+438, 280, 142, 498, 32, 41, 1, 0, 1
+438, 319, 602, 318, 41, 123, 1, 0, 1
+438, 338, 122, 419, 52, 92, 1, 0, 1
+438, 361, 305, 337, 195, 99, 1, 2, 1
+438, 369, 407, 283, 24, 57, 1, 0, 1
+438, 383, 199, 283, 43, 38, 1, 2, 1
+438, 414, 0, 372, 48, 166, 1, 0, 1
+438, 492, 358, 272, 28, 66, 1, 0, 1
+438, 542, 76, 455, 57, 84, 1, 0, 1
+438, 558, 692, 298, 40, 106, 1, 0, 1
+438, 559, 642, 315, 39, 92, 1, 0, 1
+438, 573, 0, 234, 48, 63, 1, 2, 1
+438, 584, 258, 261, 39, 34, 1, 2, 1
+438, 590, 326, 271, 28, 69, 1, 0, 1
+438, 597, 451, 278, 23, 64, 1, 0, 1
+438, 598, 428, 281, 27, 68, 1, 0, 1
+439, 82, 207, 300, 84, 64, 1, 2, 1
+439, 280, 116, 502, 31, 37, 1, 0, 1
+439, 319, 591, 319, 42, 124, 1, 0, 1
+439, 338, 94, 426, 51, 92, 1, 0, 1
+439, 361, 292, 337, 197, 101, 1, 2, 1
+439, 369, 396, 283, 24, 60, 1, 0, 1
+439, 383, 187, 283, 44, 39, 1, 2, 1
+439, 492, 346, 271, 29, 67, 1, 0, 1
+439, 542, 45, 458, 57, 81, 1, 0, 1
+439, 558, 680, 300, 40, 107, 1, 0, 1
+439, 559, 632, 315, 38, 90, 1, 0, 1
+439, 573, 0, 237, 38, 59, 1, 2, 1
+439, 584, 244, 258, 43, 37, 1, 2, 1
+439, 590, 313, 271, 29, 69, 1, 0, 1
+439, 597, 440, 278, 23, 65, 1, 0, 1
+439, 598, 416, 280, 28, 70, 1, 0, 1
+440, 82, 195, 300, 84, 65, 1, 2, 1
+440, 280, 90, 508, 28, 31, 1, 0, 1
+440, 319, 578, 321, 43, 126, 1, 0, 1
+440, 338, 63, 430, 51, 95, 1, 0, 1
+440, 361, 278, 339, 197, 102, 1, 2, 1
+440, 369, 386, 284, 25, 62, 1, 0, 1
+440, 383, 174, 283, 47, 41, 1, 2, 1
+440, 492, 332, 270, 29, 69, 1, 0, 1
+440, 542, 16, 465, 55, 74, 1, 0, 1
+440, 558, 667, 301, 39, 106, 1, 0, 1
+440, 559, 622, 316, 38, 92, 1, 0, 1
+440, 573, 0, 237, 29, 59, 1, 2, 1
+440, 584, 232, 256, 46, 40, 1, 2, 1
+440, 590, 301, 273, 27, 67, 1, 0, 1
+440, 597, 429, 278, 24, 66, 1, 0, 1
+440, 598, 405, 281, 28, 70, 1, 0, 1
+441, 1, 171, 253, 23, 17, 1, 2, 1
+441, 82, 182, 301, 84, 65, 1, 2, 1
+441, 280, 67, 513, 23, 26, 1, 0, 1
+441, 319, 567, 327, 42, 121, 1, 0, 1
+441, 338, 39, 434, 54, 100, 1, 0, 1
+441, 361, 263, 339, 199, 103, 1, 2, 1
+441, 369, 376, 285, 24, 61, 1, 0, 1
+441, 383, 161, 284, 47, 40, 1, 2, 1
+441, 492, 320, 269, 31, 71, 1, 0, 1
+441, 542, 0, 467, 50, 71, 1, 0, 1
+441, 558, 655, 301, 40, 108, 1, 0, 1
+441, 559, 610, 318, 40, 93, 1, 0, 1
+441, 584, 222, 258, 43, 38, 1, 2, 1
+441, 590, 288, 273, 27, 68, 1, 0, 1
+441, 597, 418, 278, 25, 69, 1, 0, 1
+441, 598, 395, 280, 28, 71, 1, 0, 1
+442, 1, 163, 254, 22, 17, 1, 2, 1
+442, 82, 169, 302, 84, 65, 1, 2, 1
+442, 319, 555, 331, 40, 118, 1, 0, 1
+442, 338, 9, 439, 55, 99, 1, 0, 1
+442, 361, 248, 340, 202, 105, 1, 2, 1
+442, 369, 364, 285, 25, 62, 1, 0, 1
+442, 383, 148, 283, 50, 43, 1, 2, 1
+442, 492, 308, 271, 29, 69, 1, 0, 1
+442, 542, 0, 470, 25, 68, 1, 0, 1
+442, 558, 641, 302, 39, 106, 1, 0, 1
+442, 559, 599, 318, 40, 95, 1, 0, 1
+442, 584, 211, 257, 42, 37, 1, 2, 1
+442, 590, 276, 273, 27, 68, 1, 0, 1
+442, 597, 409, 279, 24, 66, 1, 0, 1
+442, 598, 384, 282, 28, 70, 1, 0, 1
+443, 1, 152, 255, 23, 17, 1, 2, 1
+443, 82, 157, 304, 83, 63, 1, 2, 1
+443, 319, 544, 333, 41, 117, 1, 0, 1
+443, 338, 0, 442, 42, 97, 1, 0, 1
+443, 361, 232, 340, 204, 106, 1, 2, 1
+443, 369, 353, 286, 24, 64, 1, 0, 1
+443, 383, 136, 284, 49, 42, 1, 2, 1
+443, 492, 296, 269, 31, 72, 1, 0, 1
+443, 558, 628, 302, 40, 108, 1, 0, 1
+443, 559, 589, 318, 41, 97, 1, 0, 1
+443, 584, 200, 259, 41, 36, 1, 2, 1
+443, 590, 264, 279, 25, 62, 1, 0, 1
+443, 597, 398, 280, 24, 65, 1, 0, 1
+443, 598, 373, 282, 27, 71, 1, 0, 1
+444, 1, 141, 255, 23, 17, 1, 2, 1
+444, 82, 144, 305, 83, 63, 1, 2, 1
+444, 319, 531, 336, 42, 115, 1, 0, 1
+444, 361, 216, 339, 207, 109, 1, 2, 1
+444, 369, 341, 286, 25, 65, 1, 0, 1
+444, 383, 122, 284, 51, 44, 1, 2, 1
+444, 492, 283, 270, 30, 71, 1, 0, 1
+444, 558, 615, 302, 40, 109, 1, 0, 1
+444, 559, 578, 317, 41, 100, 1, 0, 1
+444, 584, 191, 261, 39, 34, 1, 2, 1
+444, 590, 251, 283, 23, 59, 1, 0, 1
+444, 597, 387, 281, 24, 64, 1, 0, 1
+444, 598, 360, 281, 28, 74, 1, 0, 1
+445, 1, 129, 255, 24, 17, 1, 2, 1
+445, 82, 130, 305, 85, 64, 1, 2, 1
+445, 319, 516, 336, 43, 119, 1, 0, 1
+445, 361, 201, 340, 208, 110, 1, 2, 1
+445, 369, 329, 285, 26, 68, 1, 0, 1
+445, 383, 110, 286, 50, 42, 1, 2, 1
+445, 492, 271, 263, 32, 78, 1, 0, 1
+445, 558, 601, 302, 42, 111, 1, 0, 1
+445, 559, 567, 317, 41, 101, 1, 0, 1
+445, 584, 178, 260, 40, 35, 1, 2, 1
+445, 590, 238, 285, 23, 58, 1, 0, 1
+445, 597, 375, 280, 23, 65, 1, 0, 1
+445, 598, 348, 280, 28, 75, 1, 0, 1
+446, 1, 117, 254, 25, 19, 1, 2, 1
+446, 82, 115, 307, 86, 66, 1, 2, 1
+446, 319, 502, 335, 45, 125, 1, 0, 1
+446, 361, 183, 343, 204, 109, 1, 2, 1
+446, 369, 318, 284, 25, 69, 1, 0, 1
+446, 383, 95, 286, 52, 43, 1, 2, 1
+446, 492, 259, 260, 33, 82, 1, 0, 1
+446, 558, 589, 302, 42, 112, 1, 0, 1
+446, 559, 556, 317, 42, 102, 1, 0, 1
+446, 584, 166, 258, 42, 38, 1, 2, 1
+446, 590, 226, 286, 23, 58, 1, 0, 1
+446, 597, 364, 281, 24, 65, 1, 0, 1
+446, 598, 336, 281, 27, 74, 1, 0, 1
+447, 1, 105, 254, 25, 19, 1, 2, 1
+447, 82, 101, 308, 87, 66, 1, 2, 1
+447, 319, 488, 334, 46, 130, 1, 0, 1
+447, 361, 165, 345, 201, 108, 1, 2, 1
+447, 369, 305, 286, 25, 69, 1, 0, 1
+447, 383, 81, 286, 53, 43, 1, 2, 1
+447, 492, 247, 258, 35, 85, 1, 0, 1
+447, 558, 573, 302, 41, 113, 1, 0, 1
+447, 559, 543, 318, 42, 103, 1, 0, 1
+447, 584, 155, 261, 40, 34, 1, 2, 1
+447, 590, 213, 287, 23, 57, 1, 0, 1
+447, 598, 325, 284, 25, 71, 1, 0, 1
+448, 1, 93, 254, 25, 19, 1, 2, 1
+448, 82, 84, 308, 89, 67, 1, 2, 1
+448, 319, 472, 334, 48, 132, 1, 0, 1
+448, 361, 152, 345, 202, 109, 1, 2, 1
+448, 369, 293, 285, 25, 70, 1, 0, 1
+448, 383, 67, 287, 52, 43, 1, 2, 1
+448, 492, 235, 257, 33, 85, 1, 0, 1
+448, 558, 560, 301, 40, 114, 1, 0, 1
+448, 559, 531, 316, 42, 106, 1, 0, 1
+448, 584, 142, 257, 42, 38, 1, 2, 1
+448, 590, 200, 285, 23, 58, 1, 0, 1
+448, 597, 342, 282, 23, 63, 1, 0, 1
+448, 598, 314, 285, 25, 71, 1, 0, 1
+449, 1, 80, 254, 26, 18, 1, 2, 1
+449, 82, 70, 309, 89, 67, 1, 2, 1
+449, 319, 456, 334, 48, 133, 1, 0, 1
+449, 361, 141, 346, 204, 110, 1, 2, 1
+449, 369, 273, 285, 25, 70, 1, 0, 1
+449, 383, 52, 288, 54, 44, 1, 2, 1
+449, 492, 222, 255, 34, 88, 1, 0, 1
+449, 558, 545, 302, 40, 113, 1, 0, 1
+449, 559, 519, 318, 42, 107, 1, 0, 1
+449, 584, 128, 256, 43, 38, 1, 2, 1
+449, 590, 186, 285, 24, 59, 1, 0, 1
+449, 597, 329, 281, 24, 67, 1, 0, 1
+450, 1, 68, 253, 26, 18, 1, 2, 1
+450, 82, 53, 308, 92, 70, 1, 2, 1
+450, 319, 441, 334, 49, 137, 1, 0, 1
+450, 361, 122, 344, 211, 114, 1, 2, 1
+450, 369, 261, 285, 26, 71, 1, 0, 1
+450, 383, 37, 287, 54, 43, 1, 2, 1
+450, 492, 206, 260, 33, 82, 1, 0, 1
+450, 558, 529, 304, 39, 115, 1, 0, 1
+450, 559, 506, 313, 43, 112, 1, 0, 1
+450, 584, 115, 254, 45, 41, 1, 2, 1
+450, 590, 171, 285, 24, 58, 1, 0, 1
+450, 597, 317, 279, 25, 68, 1, 0, 1
+450, 598, 284, 276, 28, 81, 1, 0, 1
+451, 1, 56, 252, 26, 19, 1, 2, 1
+451, 82, 38, 309, 92, 69, 1, 2, 1
+451, 319, 426, 336, 49, 136, 1, 0, 1
+451, 361, 103, 345, 214, 115, 1, 2, 1
+451, 369, 255, 283, 26, 74, 1, 0, 1
+451, 383, 23, 287, 55, 44, 1, 2, 1
+451, 492, 193, 268, 29, 75, 1, 0, 1
+451, 558, 515, 304, 39, 117, 1, 0, 1
+451, 559, 495, 313, 44, 114, 1, 0, 1
+451, 584, 102, 255, 44, 40, 1, 2, 1
+451, 590, 156, 284, 25, 59, 1, 0, 1
+451, 597, 303, 278, 26, 69, 1, 0, 1
+451, 598, 272, 276, 28, 81, 1, 0, 1
+452, 1, 42, 252, 27, 19, 1, 2, 1
+452, 82, 23, 309, 93, 71, 1, 2, 1
+452, 319, 411, 340, 50, 138, 1, 0, 1
+452, 361, 84, 345, 217, 117, 1, 2, 1
+452, 369, 238, 283, 26, 75, 1, 0, 1
+452, 383, 6, 287, 56, 45, 1, 2, 1
+452, 492, 177, 273, 28, 70, 1, 0, 1
+452, 558, 501, 304, 40, 118, 1, 0, 1
+452, 559, 484, 310, 44, 117, 1, 0, 1
+452, 584, 89, 256, 43, 39, 1, 2, 1
+452, 590, 142, 283, 25, 61, 1, 0, 1
+452, 597, 290, 277, 24, 67, 1, 0, 1
+452, 613, 901, 384, 46, 155, 1, 0, 1
+453, 1, 29, 252, 28, 20, 1, 2, 1
+453, 82, 7, 310, 93, 71, 1, 2, 1
+453, 319, 396, 342, 50, 137, 1, 0, 1
+453, 361, 64, 346, 218, 119, 1, 2, 1
+453, 369, 226, 283, 25, 76, 1, 0, 1
+453, 383, 0, 288, 50, 45, 1, 2, 1
+453, 492, 164, 274, 28, 70, 1, 0, 1
+453, 559, 469, 311, 45, 118, 1, 0, 1
+453, 584, 77, 256, 42, 39, 1, 2, 1
+453, 590, 128, 283, 25, 62, 1, 0, 1
+453, 597, 275, 277, 26, 70, 1, 0, 1
+453, 613, 893, 382, 48, 157, 1, 0, 1
+454, 1, 17, 252, 27, 20, 1, 2, 1
+454, 82, 0, 311, 86, 69, 1, 2, 1
+454, 319, 378, 344, 50, 138, 1, 0, 1
+454, 361, 46, 350, 216, 117, 1, 2, 1
+454, 369, 212, 283, 26, 78, 1, 0, 1
+454, 383, 0, 288, 35, 35, 1, 2, 1
+454, 559, 457, 320, 42, 110, 1, 0, 1
+454, 584, 62, 253, 45, 42, 1, 2, 1
+454, 590, 113, 283, 25, 64, 1, 0, 1
+454, 597, 262, 275, 26, 73, 1, 0, 1
+454, 613, 880, 384, 50, 155, 1, 0, 1
+455, 1, 2, 251, 28, 21, 1, 2, 1
+455, 82, 0, 311, 75, 71, 1, 2, 1
+455, 319, 359, 347, 50, 139, 1, 0, 1
+455, 361, 25, 350, 220, 120, 1, 2, 1
+455, 369, 199, 283, 26, 80, 1, 0, 1
+455, 383, 0, 289, 22, 33, 1, 2, 1
+455, 559, 443, 327, 40, 104, 1, 0, 1
+455, 584, 49, 256, 43, 41, 1, 2, 1
+455, 590, 99, 284, 26, 63, 1, 0, 1
+455, 597, 248, 275, 27, 75, 1, 0, 1
+455, 598, 218, 276, 29, 85, 1, 0, 1
+455, 613, 863, 382, 52, 157, 1, 0, 1
+456, 1, 0, 254, 18, 18, 1, 2, 1
+456, 82, 0, 312, 65, 73, 1, 2, 1
+456, 319, 339, 347, 52, 144, 1, 0, 1
+456, 361, 6, 351, 220, 120, 1, 2, 1
+456, 369, 184, 283, 26, 81, 1, 0, 1
+456, 559, 430, 332, 39, 101, 1, 0, 1
+456, 584, 34, 255, 44, 42, 1, 2, 1
+456, 597, 235, 277, 26, 75, 1, 0, 1
+456, 598, 204, 281, 27, 81, 1, 0, 1
+456, 613, 845, 381, 55, 158, 1, 0, 1
+457, 1, 0, 254, 7, 18, 1, 2, 1
+457, 82, 0, 312, 53, 74, 1, 2, 1
+457, 319, 319, 346, 54, 151, 1, 0, 1
+457, 361, 0, 352, 212, 122, 1, 2, 1
+457, 369, 169, 283, 26, 82, 1, 0, 1
+457, 559, 416, 332, 39, 102, 1, 0, 1
+457, 584, 21, 255, 45, 42, 1, 2, 1
+457, 590, 65, 286, 26, 64, 1, 0, 1
+457, 597, 221, 278, 26, 76, 1, 0, 1
+457, 598, 190, 281, 27, 82, 1, 0, 1
+457, 613, 827, 381, 57, 157, 1, 0, 1
+458, 319, 299, 347, 55, 157, 1, 0, 1
+458, 361, 0, 350, 208, 129, 1, 2, 1
+458, 369, 154, 284, 26, 81, 1, 0, 1
+458, 559, 400, 331, 41, 105, 1, 0, 1
+458, 590, 46, 282, 28, 69, 1, 0, 1
+458, 597, 207, 279, 27, 77, 1, 0, 1
+458, 598, 173, 280, 28, 84, 1, 0, 1
+458, 613, 808, 378, 61, 161, 1, 0, 1
+459, 319, 278, 350, 56, 162, 1, 0, 1
+459, 361, 0, 353, 192, 130, 1, 2, 1
+459, 369, 140, 284, 26, 84, 1, 0, 1
+459, 559, 384, 333, 42, 107, 1, 0, 1
+459, 590, 28, 280, 29, 72, 1, 0, 1
+459, 597, 194, 280, 27, 76, 1, 0, 1
+459, 598, 159, 283, 28, 83, 1, 0, 1
+459, 613, 789, 378, 64, 161, 1, 0, 1
+460, 319, 257, 354, 56, 163, 1, 0, 1
+460, 361, 0, 353, 181, 134, 1, 2, 1
+460, 369, 124, 285, 26, 84, 1, 0, 1
+460, 559, 368, 331, 44, 112, 1, 0, 1
+460, 590, 13, 280, 29, 73, 1, 0, 1
+460, 597, 178, 283, 27, 75, 1, 0, 1
+460, 598, 146, 285, 26, 81, 1, 0, 1
+460, 613, 769, 379, 66, 160, 1, 0, 1
+461, 319, 236, 360, 55, 163, 1, 0, 1
+461, 361, 0, 358, 165, 134, 1, 2, 1
+461, 369, 107, 287, 25, 84, 1, 0, 1
+461, 559, 351, 332, 45, 114, 1, 0, 1
+461, 590, 0, 287, 22, 67, 1, 0, 1
+461, 597, 163, 285, 27, 73, 1, 0, 1
+461, 598, 129, 286, 26, 80, 1, 0, 1
+461, 613, 750, 380, 69, 159, 1, 0, 1
+462, 319, 214, 365, 56, 165, 1, 0, 1
+462, 361, 0, 362, 145, 128, 1, 2, 1
+462, 369, 92, 288, 25, 85, 1, 0, 1
+462, 559, 335, 333, 46, 117, 1, 0, 1
+462, 590, 0, 287, 7, 68, 1, 0, 1
+462, 597, 149, 285, 27, 76, 1, 0, 1
+462, 598, 113, 285, 28, 85, 1, 0, 1
+462, 613, 732, 384, 69, 155, 1, 0, 1
+463, 319, 194, 370, 56, 162, 1, 0, 1
+463, 361, 0, 367, 133, 135, 1, 2, 1
+463, 369, 75, 290, 26, 84, 1, 0, 1
+463, 492, 23, 258, 35, 90, 1, 0, 1
+463, 559, 317, 330, 49, 123, 1, 0, 1
+463, 597, 135, 290, 26, 72, 1, 0, 1
+463, 598, 98, 286, 27, 83, 1, 0, 1
+463, 613, 715, 390, 69, 149, 1, 0, 1
+463, 640, 54, 295, 31, 81, 1, 0, 1
+464, 319, 173, 375, 58, 163, 1, 0, 1
+464, 361, 0, 368, 120, 137, 1, 2, 1
+464, 369, 57, 291, 26, 85, 1, 0, 1
+464, 492, 9, 257, 36, 91, 1, 0, 1
+464, 559, 301, 330, 51, 125, 1, 0, 1
+464, 597, 119, 290, 26, 72, 1, 0, 1
+464, 598, 84, 289, 26, 80, 1, 0, 1
+464, 613, 699, 398, 67, 141, 1, 0, 1
+464, 640, 35, 295, 31, 81, 1, 0, 1
+465, 319, 149, 377, 61, 162, 1, 0, 1
+465, 369, 45, 292, 29, 84, 1, 0, 1
+465, 559, 283, 328, 53, 130, 1, 0, 1
+465, 597, 103, 289, 28, 75, 1, 0, 1
+465, 598, 66, 288, 26, 81, 1, 0, 1
+465, 613, 681, 405, 67, 134, 1, 0, 1
+465, 640, 22, 293, 33, 85, 1, 0, 1
+466, 319, 125, 380, 62, 158, 1, 0, 1
+466, 369, 22, 290, 30, 90, 1, 0, 1
+466, 559, 266, 334, 52, 128, 1, 0, 1
+466, 597, 87, 287, 31, 82, 1, 0, 1
+466, 598, 49, 288, 26, 81, 1, 0, 1
+466, 613, 664, 413, 66, 126, 1, 0, 1
+466, 640, 10, 294, 33, 85, 1, 0, 1
+467, 319, 98, 381, 65, 158, 1, 0, 1
+467, 369, 2, 288, 31, 92, 1, 0, 1
+467, 559, 247, 336, 53, 130, 1, 0, 1
+467, 597, 70, 286, 33, 85, 1, 0, 1
+467, 598, 29, 287, 27, 85, 1, 0, 1
+467, 613, 647, 419, 65, 119, 1, 0, 1
+468, 319, 71, 385, 66, 154, 1, 0, 1
+468, 369, 0, 288, 18, 93, 1, 0, 1
+468, 559, 228, 340, 53, 130, 1, 0, 1
+468, 597, 53, 286, 33, 86, 1, 0, 1
+468, 598, 10, 286, 28, 87, 1, 0, 1
+468, 613, 630, 425, 64, 114, 1, 0, 1
+469, 319, 42, 388, 68, 151, 1, 0, 1
+469, 559, 209, 345, 53, 126, 1, 0, 1
+469, 597, 36, 286, 36, 93, 1, 0, 1
+469, 598, 0, 287, 22, 87, 1, 0, 1
+469, 613, 613, 427, 65, 112, 1, 0, 1
+470, 319, 14, 389, 70, 150, 1, 0, 1
+470, 559, 189, 346, 53, 128, 1, 0, 1
+470, 597, 22, 286, 36, 95, 1, 0, 1
+470, 613, 595, 428, 66, 111, 1, 0, 1
+471, 319, 0, 390, 64, 149, 1, 0, 1
+471, 559, 171, 347, 53, 130, 1, 0, 1
+471, 613, 575, 426, 69, 113, 1, 0, 1
+472, 319, 0, 393, 43, 146, 1, 0, 1
+472, 559, 150, 346, 55, 132, 1, 0, 1
+472, 613, 556, 426, 71, 113, 1, 0, 1
+473, 559, 130, 348, 55, 133, 1, 0, 1
+473, 613, 535, 425, 73, 114, 1, 0, 1
+474, 559, 110, 349, 54, 134, 1, 0, 1
+474, 613, 515, 425, 75, 114, 1, 0, 1
+475, 559, 87, 348, 56, 138, 1, 0, 1
+475, 613, 495, 425, 78, 114, 1, 0, 1
+476, 559, 65, 349, 57, 139, 1, 0, 1
+476, 613, 471, 427, 77, 112, 1, 0, 1
+477, 559, 42, 351, 56, 139, 1, 0, 1
+477, 613, 451, 431, 77, 108, 1, 0, 1
+478, 559, 15, 361, 48, 120, 1, 0, 1
+478, 613, 431, 435, 75, 104, 1, 0, 1
+479, 559, 0, 363, 43, 119, 1, 0, 1
+479, 613, 410, 440, 74, 98, 1, 0, 1
+480, 613, 388, 444, 74, 94, 1, 0, 1
+481, 613, 363, 442, 77, 97, 1, 0, 1
+482, 613, 338, 440, 79, 99, 1, 0, 1
+483, 613, 314, 439, 81, 100, 1, 0, 1
+483, 660, 867, 321, 40, 72, 1, 0, 1
+484, 613, 287, 438, 82, 101, 1, 0, 1
+484, 660, 845, 321, 41, 73, 1, 0, 1
+485, 613, 260, 438, 82, 101, 1, 0, 1
+485, 660, 822, 321, 42, 76, 1, 0, 1
+486, 613, 233, 440, 82, 99, 1, 0, 1
+486, 660, 791, 322, 60, 109, 1, 0, 1
+487, 613, 206, 443, 80, 96, 1, 0, 1
+487, 660, 767, 322, 66, 125, 1, 0, 1
+488, 613, 181, 449, 76, 90, 1, 0, 1
+488, 660, 745, 323, 67, 129, 1, 0, 1
+489, 613, 158, 455, 71, 83, 1, 0, 1
+489, 660, 720, 324, 69, 133, 1, 0, 1
+490, 613, 134, 463, 65, 74, 1, 0, 1
+490, 660, 697, 326, 68, 134, 1, 0, 1
+490, 666, 747, 326, 43, 148, 1, 0, 1
+491, 613, 111, 471, 61, 67, 1, 0, 1
+491, 660, 674, 329, 66, 132, 1, 0, 1
+491, 666, 734, 326, 44, 148, 1, 0, 1
+492, 613, 85, 477, 59, 62, 1, 0, 1
+492, 660, 654, 332, 64, 130, 1, 0, 1
+493, 613, 59, 480, 57, 59, 1, 0, 1
+493, 660, 636, 334, 61, 128, 1, 0, 1
+494, 613, 30, 483, 56, 56, 1, 0, 1
+494, 660, 616, 335, 60, 128, 1, 0, 1
+494, 667, 666, 341, 43, 75, 1, 0, 1
+495, 613, 3, 483, 56, 56, 1, 0, 1
+495, 660, 597, 337, 58, 130, 1, 0, 1
+495, 667, 641, 343, 46, 82, 1, 0, 1
+496, 613, 0, 484, 37, 55, 1, 0, 1
+496, 660, 575, 339, 58, 133, 1, 0, 1
+496, 667, 613, 347, 52, 93, 1, 0, 1
+497, 613, 0, 486, 10, 53, 1, 0, 1
+497, 660, 553, 340, 56, 135, 1, 0, 1
+497, 667, 593, 349, 55, 98, 1, 0, 1
+498, 660, 530, 340, 55, 133, 1, 0, 1
+499, 660, 507, 340, 54, 135, 1, 0, 1
+500, 660, 484, 340, 53, 136, 1, 0, 1
+500, 667, 512, 347, 70, 129, 1, 0, 1
+501, 660, 461, 341, 52, 135, 1, 0, 1
+501, 667, 488, 344, 71, 134, 1, 0, 1
+502, 660, 439, 340, 53, 136, 1, 0, 1
+502, 667, 464, 342, 72, 143, 1, 0, 1
+503, 660, 414, 341, 53, 136, 1, 0, 1
+503, 667, 442, 342, 68, 138, 1, 0, 1
+504, 660, 390, 343, 52, 133, 1, 0, 1
+504, 667, 419, 343, 68, 142, 1, 0, 1
+505, 660, 366, 342, 54, 141, 1, 0, 1
+505, 667, 398, 345, 69, 148, 1, 0, 1
+505, 671, 912, 322, 25, 90, 1, 0, 1
+506, 660, 340, 342, 56, 146, 1, 0, 1
+506, 667, 374, 346, 68, 152, 1, 0, 1
+506, 671, 893, 323, 25, 91, 1, 0, 1
+507, 660, 315, 346, 55, 144, 1, 0, 1
+507, 667, 348, 350, 68, 156, 1, 0, 1
+507, 671, 874, 324, 27, 91, 1, 0, 1
+508, 660, 290, 348, 54, 144, 1, 0, 1
+508, 667, 319, 353, 69, 162, 1, 0, 1
+508, 671, 857, 326, 27, 90, 1, 0, 1
+509, 660, 266, 352, 51, 141, 1, 0, 1
+509, 667, 292, 356, 70, 166, 1, 0, 1
+509, 671, 840, 329, 26, 88, 1, 0, 1
+510, 660, 239, 356, 53, 148, 1, 0, 1
+510, 667, 267, 360, 69, 167, 1, 0, 1
+510, 671, 822, 333, 26, 85, 1, 0, 1
+511, 660, 214, 359, 52, 146, 1, 0, 1
+511, 667, 243, 365, 66, 164, 1, 0, 1
+511, 671, 804, 334, 28, 87, 1, 0, 1
+512, 660, 187, 361, 50, 143, 1, 0, 1
+512, 667, 214, 368, 66, 164, 1, 0, 1
+512, 671, 786, 333, 30, 92, 1, 0, 1
+513, 660, 151, 362, 56, 157, 1, 0, 1
+513, 667, 185, 372, 66, 165, 1, 0, 1
+513, 671, 769, 334, 31, 93, 1, 0, 1
+514, 660, 119, 369, 57, 156, 1, 0, 1
+514, 667, 157, 375, 65, 162, 1, 0, 1
+514, 671, 751, 336, 31, 93, 1, 0, 1
+515, 660, 85, 373, 60, 158, 1, 0, 1
+515, 667, 128, 377, 65, 162, 1, 0, 1
+515, 671, 733, 335, 32, 95, 1, 0, 1
+515, 686, 897, 280, 46, 50, 1, 2, 1
+516, 660, 53, 374, 62, 161, 1, 0, 1
+516, 667, 101, 380, 64, 159, 1, 0, 1
+516, 671, 716, 335, 32, 95, 1, 0, 1
+516, 686, 882, 279, 47, 50, 1, 2, 1
+517, 660, 30, 378, 57, 153, 1, 0, 1
+517, 667, 70, 385, 63, 154, 1, 0, 1
+517, 671, 699, 335, 34, 96, 1, 0, 1
+517, 686, 866, 279, 46, 50, 1, 2, 1
+518, 660, 1, 379, 55, 150, 1, 0, 1
+518, 667, 37, 386, 64, 153, 1, 0, 1
+518, 671, 683, 335, 35, 97, 1, 0, 1
+518, 686, 850, 277, 46, 50, 1, 2, 1
+519, 660, 0, 382, 29, 150, 1, 0, 1
+519, 667, 7, 391, 63, 148, 1, 0, 1
+519, 671, 667, 338, 35, 96, 1, 0, 1
+519, 686, 835, 275, 48, 50, 1, 2, 1
+519, 697, 882, 259, 40, 33, 1, 2, 1
+520, 667, 0, 395, 45, 143, 1, 0, 1
+520, 671, 650, 338, 36, 96, 1, 0, 1
+520, 686, 820, 275, 47, 49, 1, 2, 1
+520, 697, 869, 259, 41, 33, 1, 2, 1
+520, 700, 692, 338, 36, 100, 1, 0, 1
+521, 667, 0, 398, 19, 141, 1, 0, 1
+521, 671, 633, 339, 37, 96, 1, 0, 1
+521, 686, 806, 274, 47, 49, 1, 2, 1
+521, 697, 857, 259, 40, 32, 1, 2, 1
+521, 700, 673, 338, 37, 101, 1, 0, 1
+522, 671, 617, 341, 37, 93, 1, 0, 1
+522, 686, 791, 273, 47, 49, 1, 2, 1
+522, 697, 845, 258, 39, 31, 1, 2, 1
+522, 700, 657, 336, 37, 102, 1, 0, 1
+523, 671, 599, 341, 38, 94, 1, 0, 1
+523, 686, 776, 273, 47, 48, 1, 2, 1
+523, 697, 832, 258, 40, 32, 1, 2, 1
+523, 700, 641, 338, 38, 103, 1, 0, 1
+523, 705, 923, 270, 28, 33, 1, 2, 1
+524, 671, 582, 342, 38, 94, 1, 0, 1
+524, 686, 762, 272, 47, 47, 1, 2, 1
+524, 697, 821, 258, 40, 31, 1, 2, 1
+524, 700, 624, 337, 38, 107, 1, 0, 1
+524, 705, 913, 271, 25, 28, 1, 2, 1
+525, 671, 566, 342, 37, 95, 1, 0, 1
+525, 686, 750, 272, 45, 46, 1, 2, 1
+525, 697, 811, 258, 40, 31, 1, 2, 1
+525, 700, 606, 336, 41, 111, 1, 0, 1
+525, 705, 898, 272, 24, 26, 1, 2, 1
+525, 711, 653, 279, 27, 57, 1, 0, 1
+526, 671, 548, 342, 38, 97, 1, 0, 1
+526, 686, 737, 272, 46, 45, 1, 2, 1
+526, 697, 799, 257, 41, 32, 1, 2, 1
+526, 700, 589, 336, 41, 112, 1, 0, 1
+526, 705, 887, 272, 25, 25, 1, 2, 1
+526, 711, 640, 280, 27, 56, 1, 0, 1
+526, 713, 907, 282, 41, 46, 1, 2, 1
+527, 671, 533, 342, 38, 98, 1, 0, 1
+527, 686, 725, 271, 45, 45, 1, 2, 1
+527, 697, 788, 257, 43, 33, 1, 2, 1
+527, 700, 573, 338, 41, 112, 1, 0, 1
+527, 705, 875, 272, 27, 25, 1, 2, 1
+527, 711, 628, 282, 25, 54, 1, 0, 1
+527, 713, 901, 284, 41, 45, 1, 2, 1
+528, 671, 517, 343, 39, 100, 1, 0, 1
+528, 686, 712, 271, 44, 44, 1, 2, 1
+528, 697, 777, 256, 45, 35, 1, 2, 1
+528, 700, 555, 339, 41, 113, 1, 0, 1
+528, 705, 862, 272, 29, 26, 1, 2, 1
+528, 711, 615, 285, 25, 52, 1, 0, 1
+528, 713, 894, 287, 44, 45, 1, 2, 1
+529, 671, 500, 345, 40, 104, 1, 0, 1
+529, 686, 700, 271, 44, 43, 1, 2, 1
+529, 697, 766, 257, 45, 34, 1, 2, 1
+529, 700, 539, 343, 41, 113, 1, 0, 1
+529, 705, 847, 273, 30, 25, 1, 2, 1
+529, 711, 603, 285, 24, 51, 1, 0, 1
+529, 713, 885, 287, 49, 47, 1, 2, 1
+530, 671, 482, 346, 41, 107, 1, 0, 1
+530, 686, 688, 271, 43, 44, 1, 2, 1
+530, 697, 756, 258, 44, 33, 1, 2, 1
+530, 700, 522, 344, 42, 116, 1, 0, 1
+530, 705, 834, 273, 32, 25, 1, 2, 1
+530, 711, 592, 285, 24, 52, 1, 0, 1
+530, 713, 876, 286, 55, 50, 1, 2, 1
+531, 671, 465, 346, 41, 109, 1, 0, 1
+531, 686, 676, 271, 43, 43, 1, 2, 1
+531, 697, 744, 258, 45, 34, 1, 2, 1
+531, 700, 505, 348, 44, 116, 1, 0, 1
+531, 705, 821, 273, 34, 25, 1, 2, 1
+531, 711, 581, 284, 24, 52, 1, 0, 1
+531, 713, 868, 286, 60, 51, 1, 2, 1
+532, 671, 449, 350, 41, 107, 1, 0, 1
+532, 686, 664, 271, 43, 43, 1, 2, 1
+532, 697, 736, 259, 44, 33, 1, 2, 1
+532, 700, 487, 351, 45, 117, 1, 0, 1
+532, 705, 810, 273, 33, 25, 1, 2, 1
+532, 711, 569, 283, 25, 54, 1, 0, 1
+532, 713, 859, 287, 64, 51, 1, 2, 1
+533, 671, 432, 352, 42, 110, 1, 0, 1
+533, 686, 654, 270, 41, 43, 1, 2, 1
+533, 697, 726, 259, 44, 33, 1, 2, 1
+533, 700, 472, 352, 45, 118, 1, 0, 1
+533, 705, 799, 273, 36, 25, 1, 2, 1
+533, 711, 558, 283, 25, 55, 1, 0, 1
+533, 713, 850, 288, 68, 50, 1, 2, 1
+534, 671, 416, 354, 42, 110, 1, 0, 1
+534, 686, 642, 270, 41, 42, 1, 2, 1
+534, 697, 717, 260, 44, 34, 1, 2, 1
+534, 700, 456, 352, 46, 119, 1, 0, 1
+534, 705, 789, 273, 36, 26, 1, 2, 1
+534, 711, 548, 286, 24, 53, 1, 0, 1
+534, 713, 838, 287, 74, 52, 1, 2, 1
+534, 720, 653, 252, 21, 17, 1, 2, 1
+534, 721, 650, 370, 63, 144, 1, 0, 1
+535, 671, 400, 354, 41, 112, 1, 0, 1
+535, 686, 631, 270, 41, 42, 1, 2, 1
+535, 697, 708, 260, 45, 34, 1, 2, 1
+535, 700, 440, 352, 47, 122, 1, 0, 1
+535, 705, 776, 272, 39, 27, 1, 2, 1
+535, 711, 537, 286, 25, 54, 1, 0, 1
+535, 713, 825, 286, 82, 54, 1, 2, 1
+535, 720, 644, 251, 21, 17, 1, 2, 1
+535, 721, 637, 376, 60, 139, 1, 0, 1
+536, 671, 383, 355, 42, 113, 1, 0, 1
+536, 686, 620, 270, 41, 42, 1, 2, 1
+536, 697, 699, 259, 45, 34, 1, 2, 1
+536, 700, 423, 352, 48, 127, 1, 0, 1
+536, 705, 768, 273, 39, 26, 1, 2, 1
+536, 711, 527, 286, 24, 55, 1, 0, 1
+536, 713, 816, 287, 83, 52, 1, 2, 1
+536, 720, 634, 251, 22, 18, 1, 2, 1
+536, 721, 626, 387, 55, 127, 1, 0, 1
+537, 671, 364, 354, 44, 119, 1, 0, 1
+537, 686, 609, 269, 41, 42, 1, 2, 1
+537, 697, 690, 258, 46, 35, 1, 2, 1
+537, 700, 405, 352, 49, 131, 1, 0, 1
+537, 705, 758, 272, 39, 25, 1, 2, 1
+537, 711, 516, 287, 25, 55, 1, 0, 1
+537, 713, 804, 285, 88, 53, 1, 2, 1
+537, 720, 625, 250, 22, 18, 1, 2, 1
+537, 721, 609, 374, 60, 141, 1, 0, 1
+538, 671, 346, 357, 43, 118, 1, 0, 1
+538, 686, 597, 270, 42, 42, 1, 2, 1
+538, 697, 682, 260, 45, 35, 1, 2, 1
+538, 700, 388, 353, 49, 132, 1, 0, 1
+538, 705, 747, 273, 42, 27, 1, 2, 1
+538, 711, 506, 288, 24, 55, 1, 0, 1
+538, 713, 794, 287, 91, 54, 1, 2, 1
+538, 720, 618, 252, 20, 16, 1, 2, 1
+538, 721, 594, 372, 62, 146, 1, 0, 1
+539, 671, 327, 357, 43, 120, 1, 0, 1
+539, 686, 587, 270, 41, 41, 1, 2, 1
+539, 697, 674, 260, 46, 35, 1, 2, 1
+539, 700, 370, 355, 49, 135, 1, 0, 1
+539, 705, 737, 273, 43, 27, 1, 2, 1
+539, 711, 496, 288, 24, 56, 1, 0, 1
+539, 713, 784, 288, 93, 53, 1, 2, 1
+539, 720, 610, 252, 21, 17, 1, 2, 1
+539, 721, 583, 385, 55, 132, 1, 0, 1
+540, 671, 310, 357, 44, 124, 1, 0, 1
+540, 686, 577, 270, 40, 41, 1, 2, 1
+540, 697, 665, 261, 47, 36, 1, 2, 1
+540, 700, 352, 357, 50, 138, 1, 0, 1
+540, 705, 728, 274, 43, 27, 1, 2, 1
+540, 711, 487, 289, 24, 55, 1, 0, 1
+540, 713, 774, 291, 96, 53, 1, 2, 1
+540, 720, 602, 253, 22, 17, 1, 2, 1
+540, 721, 569, 386, 55, 132, 1, 0, 1
+541, 671, 292, 360, 45, 124, 1, 0, 1
+541, 686, 567, 270, 41, 41, 1, 2, 1
+541, 697, 658, 262, 46, 35, 1, 2, 1
+541, 700, 334, 359, 50, 140, 1, 0, 1
+541, 705, 719, 274, 43, 27, 1, 2, 1
+541, 711, 477, 291, 23, 54, 1, 0, 1
+541, 713, 765, 292, 96, 52, 1, 2, 1
+541, 720, 593, 253, 22, 17, 1, 2, 1
+541, 721, 556, 386, 56, 135, 1, 0, 1
+542, 671, 271, 364, 45, 123, 1, 0, 1
+542, 686, 557, 270, 41, 42, 1, 2, 1
+542, 697, 649, 263, 47, 36, 1, 2, 1
+542, 700, 315, 364, 49, 138, 1, 0, 1
+542, 705, 710, 277, 43, 26, 1, 2, 1
+542, 711, 467, 292, 24, 55, 1, 0, 1
+542, 713, 757, 295, 97, 52, 1, 2, 1
+542, 720, 586, 255, 21, 17, 1, 2, 1
+542, 721, 537, 381, 60, 146, 1, 0, 1
+542, 722, 931, 312, 20, 55, 1, 2, 1
+543, 671, 254, 366, 47, 124, 1, 0, 1
+543, 686, 546, 270, 41, 41, 1, 2, 1
+543, 697, 642, 264, 47, 36, 1, 2, 1
+543, 700, 298, 367, 50, 141, 1, 0, 1
+543, 705, 702, 277, 44, 27, 1, 2, 1
+543, 711, 457, 292, 24, 55, 1, 0, 1
+543, 713, 747, 296, 99, 52, 1, 2, 1
+543, 720, 577, 256, 22, 17, 1, 2, 1
+543, 721, 525, 380, 60, 149, 1, 0, 1
+543, 722, 926, 315, 21, 55, 1, 2, 1
+544, 671, 233, 373, 50, 126, 1, 0, 1
+544, 686, 536, 271, 40, 41, 1, 2, 1
+544, 697, 635, 265, 46, 36, 1, 2, 1
+544, 700, 278, 372, 52, 146, 1, 0, 1
+544, 705, 690, 277, 46, 27, 1, 2, 1
+544, 711, 447, 293, 25, 57, 1, 0, 1
+544, 713, 738, 297, 101, 52, 1, 2, 1
+544, 720, 568, 256, 23, 17, 1, 2, 1
+544, 721, 509, 382, 61, 152, 1, 0, 1
+544, 722, 920, 315, 24, 59, 1, 2, 1
+545, 671, 215, 373, 51, 127, 1, 0, 1
+545, 686, 527, 270, 39, 40, 1, 2, 1
+545, 697, 628, 265, 46, 36, 1, 2, 1
+545, 700, 261, 372, 53, 148, 1, 0, 1
+545, 705, 680, 277, 46, 27, 1, 2, 1
+545, 711, 438, 292, 24, 57, 1, 0, 1
+545, 713, 730, 296, 102, 52, 1, 2, 1
+545, 720, 561, 255, 22, 18, 1, 2, 1
+545, 721, 498, 380, 60, 152, 1, 0, 1
+545, 722, 914, 315, 26, 59, 1, 2, 1
+546, 671, 198, 374, 54, 132, 1, 0, 1
+546, 686, 518, 268, 39, 41, 1, 2, 1
+546, 697, 621, 264, 46, 36, 1, 2, 1
+546, 700, 244, 373, 54, 150, 1, 0, 1
+546, 705, 672, 276, 46, 27, 1, 2, 1
+546, 711, 428, 291, 25, 57, 1, 0, 1
+546, 713, 721, 296, 104, 52, 1, 2, 1
+546, 720, 553, 254, 23, 18, 1, 2, 1
+546, 721, 484, 380, 60, 155, 1, 0, 1
+546, 722, 908, 314, 29, 59, 1, 2, 1
+547, 671, 177, 377, 53, 131, 1, 0, 1
+547, 686, 508, 267, 39, 40, 1, 2, 1
+547, 697, 613, 263, 47, 36, 1, 2, 1
+547, 700, 226, 374, 54, 151, 1, 0, 1
+547, 705, 664, 274, 46, 27, 1, 2, 1
+547, 711, 419, 291, 25, 57, 1, 0, 1
+547, 713, 713, 294, 106, 53, 1, 2, 1
+547, 720, 547, 254, 22, 16, 1, 2, 1
+547, 721, 471, 382, 59, 152, 1, 0, 1
+547, 722, 903, 312, 32, 57, 1, 2, 1
+548, 671, 156, 378, 54, 136, 1, 0, 1
+548, 686, 498, 265, 40, 41, 1, 2, 1
+548, 697, 607, 264, 47, 35, 1, 2, 1
+548, 700, 205, 375, 55, 157, 1, 0, 1
+548, 705, 657, 274, 45, 27, 1, 2, 1
+548, 711, 409, 292, 25, 57, 1, 0, 1
+548, 713, 705, 294, 106, 53, 1, 2, 1
+548, 720, 539, 253, 23, 17, 1, 2, 1
+548, 721, 459, 388, 56, 146, 1, 0, 1
+548, 722, 896, 312, 37, 59, 1, 2, 1
+549, 671, 137, 382, 55, 137, 1, 0, 1
+549, 686, 488, 264, 40, 41, 1, 2, 1
+549, 697, 602, 263, 46, 35, 1, 2, 1
+549, 700, 186, 378, 55, 157, 1, 0, 1
+549, 705, 648, 272, 48, 28, 1, 2, 1
+549, 711, 399, 292, 25, 58, 1, 0, 1
+549, 713, 699, 292, 106, 53, 1, 2, 1
+549, 720, 532, 253, 23, 16, 1, 2, 1
+549, 721, 445, 382, 58, 152, 1, 0, 1
+549, 722, 890, 309, 41, 60, 1, 2, 1
+549, 723, 454, 210, 42, 60, 1, 2, 1
+550, 671, 115, 380, 57, 144, 1, 0, 1
+550, 686, 480, 264, 40, 41, 1, 2, 1
+550, 697, 596, 263, 47, 35, 1, 2, 1
+550, 700, 166, 380, 56, 156, 1, 0, 1
+550, 705, 641, 272, 47, 27, 1, 2, 1
+550, 711, 390, 291, 26, 59, 1, 0, 1
+550, 713, 691, 291, 108, 55, 1, 2, 1
+550, 720, 526, 252, 24, 17, 1, 2, 1
+550, 721, 435, 386, 56, 147, 1, 0, 1
+550, 722, 883, 308, 47, 61, 1, 2, 1
+550, 723, 444, 210, 44, 63, 1, 2, 1
+551, 671, 93, 382, 57, 147, 1, 0, 1
+551, 686, 471, 263, 41, 42, 1, 2, 1
+551, 697, 589, 263, 48, 35, 1, 2, 1
+551, 700, 146, 382, 55, 156, 1, 0, 1
+551, 705, 634, 271, 47, 27, 1, 2, 1
+551, 711, 380, 291, 27, 59, 1, 0, 1
+551, 713, 684, 291, 110, 55, 1, 2, 1
+551, 720, 519, 252, 24, 17, 1, 2, 1
+551, 721, 424, 391, 53, 140, 1, 0, 1
+551, 722, 876, 307, 53, 63, 1, 2, 1
+551, 723, 437, 210, 44, 64, 1, 2, 1
+552, 671, 72, 383, 58, 152, 1, 0, 1
+552, 686, 463, 263, 41, 41, 1, 2, 1
+552, 697, 583, 262, 50, 36, 1, 2, 1
+552, 700, 124, 384, 54, 155, 1, 0, 1
+552, 705, 628, 271, 48, 27, 1, 2, 1
+552, 711, 371, 292, 26, 58, 1, 0, 1
+552, 713, 679, 291, 109, 55, 1, 2, 1
+552, 720, 512, 251, 25, 17, 1, 2, 1
+552, 721, 409, 393, 55, 143, 1, 0, 1
+552, 722, 869, 307, 60, 64, 1, 2, 1
+552, 723, 426, 210, 44, 63, 1, 2, 1
+553, 671, 51, 386, 57, 152, 1, 0, 1
+553, 686, 456, 262, 39, 41, 1, 2, 1
+553, 697, 578, 262, 49, 35, 1, 2, 1
+553, 700, 101, 388, 54, 151, 1, 0, 1
+553, 705, 621, 269, 49, 29, 1, 2, 1
+553, 711, 361, 291, 27, 59, 1, 0, 1
+553, 713, 673, 291, 110, 55, 1, 2, 1
+553, 720, 506, 251, 25, 17, 1, 2, 1
+553, 721, 397, 390, 56, 146, 1, 0, 1
+553, 722, 861, 306, 66, 66, 1, 2, 1
+553, 723, 416, 210, 45, 63, 1, 2, 1
+554, 671, 30, 393, 55, 146, 1, 0, 1
+554, 686, 446, 261, 40, 41, 1, 2, 1
+554, 697, 572, 262, 50, 35, 1, 2, 1
+554, 700, 76, 390, 54, 149, 1, 0, 1
+554, 705, 615, 269, 49, 29, 1, 2, 1
+554, 711, 352, 291, 27, 60, 1, 0, 1
+554, 713, 667, 291, 110, 56, 1, 2, 1
+554, 720, 500, 251, 26, 17, 1, 2, 1
+554, 721, 380, 389, 58, 149, 1, 0, 1
+554, 722, 852, 305, 71, 66, 1, 2, 1
+554, 723, 408, 209, 45, 65, 1, 2, 1
+555, 671, 7, 396, 55, 143, 1, 0, 1
+555, 686, 439, 261, 39, 40, 1, 2, 1
+555, 697, 567, 262, 48, 35, 1, 2, 1
+555, 700, 55, 395, 54, 144, 1, 0, 1
+555, 705, 610, 269, 47, 28, 1, 2, 1
+555, 711, 343, 290, 27, 61, 1, 0, 1
+555, 713, 662, 291, 110, 57, 1, 2, 1
+555, 720, 493, 251, 25, 17, 1, 2, 1
+555, 721, 369, 386, 59, 152, 1, 0, 1
+555, 722, 844, 305, 74, 65, 1, 2, 1
+556, 671, 0, 398, 43, 141, 1, 0, 1
+556, 686, 431, 260, 39, 40, 1, 2, 1
+556, 697, 561, 262, 50, 35, 1, 2, 1
+556, 700, 31, 401, 53, 138, 1, 0, 1
+556, 705, 605, 268, 45, 27, 1, 2, 1
+556, 711, 334, 290, 27, 61, 1, 0, 1
+556, 713, 657, 291, 108, 56, 1, 2, 1
+556, 720, 487, 250, 27, 18, 1, 2, 1
+556, 721, 363, 389, 52, 130, 1, 0, 1
+556, 722, 836, 305, 78, 65, 1, 2, 1
+556, 723, 389, 208, 45, 64, 1, 2, 1
+557, 671, 0, 401, 24, 138, 1, 0, 1
+557, 686, 421, 258, 41, 41, 1, 2, 1
+557, 697, 555, 261, 51, 36, 1, 2, 1
+557, 700, 8, 406, 52, 133, 1, 0, 1
+557, 705, 598, 267, 47, 28, 1, 2, 1
+557, 711, 324, 290, 27, 61, 1, 0, 1
+557, 713, 652, 291, 109, 56, 1, 2, 1
+557, 720, 482, 249, 26, 18, 1, 2, 1
+557, 721, 344, 385, 58, 147, 1, 0, 1
+557, 722, 828, 304, 81, 65, 1, 2, 1
+557, 723, 381, 207, 43, 61, 1, 2, 1
+558, 686, 414, 257, 41, 42, 1, 2, 1
+558, 697, 550, 260, 52, 36, 1, 2, 1
+558, 700, 0, 410, 38, 127, 1, 0, 1
+558, 705, 593, 266, 46, 29, 1, 2, 1
+558, 711, 315, 290, 27, 61, 1, 0, 1
+558, 713, 646, 290, 110, 57, 1, 2, 1
+558, 720, 476, 249, 26, 18, 1, 2, 1
+558, 721, 328, 383, 61, 154, 1, 0, 1
+558, 722, 818, 303, 88, 67, 1, 2, 1
+558, 723, 373, 206, 43, 62, 1, 2, 1
+558, 731, 360, 267, 18, 44, 1, 0, 1
+559, 686, 406, 257, 40, 40, 1, 2, 1
+559, 697, 547, 259, 53, 37, 1, 2, 1
+559, 700, 0, 413, 17, 125, 1, 0, 1
+559, 705, 587, 265, 46, 29, 1, 2, 1
+559, 711, 307, 290, 27, 62, 1, 0, 1
+559, 713, 642, 289, 109, 57, 1, 2, 1
+559, 720, 469, 247, 28, 19, 1, 2, 1
+559, 721, 315, 381, 62, 158, 1, 0, 1
+559, 722, 811, 303, 91, 67, 1, 2, 1
+559, 723, 363, 204, 44, 62, 1, 2, 1
+559, 731, 351, 264, 19, 47, 1, 0, 1
+560, 686, 398, 255, 41, 41, 1, 2, 1
+560, 697, 541, 258, 57, 39, 1, 2, 1
+560, 705, 581, 265, 46, 29, 1, 2, 1
+560, 711, 297, 289, 28, 64, 1, 0, 1
+560, 713, 637, 290, 108, 57, 1, 2, 1
+560, 720, 464, 247, 28, 19, 1, 2, 1
+560, 721, 301, 381, 62, 158, 1, 0, 1
+560, 722, 804, 303, 95, 67, 1, 2, 1
+560, 723, 353, 203, 46, 65, 1, 2, 1
+560, 731, 344, 265, 18, 44, 1, 0, 1
+561, 686, 390, 254, 42, 42, 1, 2, 1
+561, 697, 537, 258, 56, 38, 1, 2, 1
+561, 705, 577, 265, 44, 29, 1, 2, 1
+561, 711, 289, 289, 28, 64, 1, 0, 1
+561, 713, 633, 290, 109, 58, 1, 2, 1
+561, 720, 458, 247, 29, 19, 1, 2, 1
+561, 721, 288, 379, 63, 160, 1, 0, 1
+561, 722, 797, 302, 98, 68, 1, 2, 1
+561, 723, 345, 203, 48, 67, 1, 2, 1
+561, 731, 337, 266, 18, 43, 1, 0, 1
+562, 686, 384, 255, 41, 41, 1, 2, 1
+562, 697, 534, 259, 56, 38, 1, 2, 1
+562, 705, 572, 264, 44, 30, 1, 2, 1
+562, 711, 281, 289, 28, 66, 1, 0, 1
+562, 713, 627, 290, 111, 60, 1, 2, 1
+562, 720, 453, 246, 28, 19, 1, 2, 1
+562, 721, 275, 379, 63, 160, 1, 0, 1
+562, 722, 790, 302, 100, 67, 1, 2, 1
+562, 723, 336, 203, 49, 67, 1, 2, 1
+562, 731, 331, 268, 17, 41, 1, 0, 1
+563, 686, 378, 256, 40, 39, 1, 2, 1
+563, 697, 529, 259, 58, 39, 1, 2, 1
+563, 705, 568, 264, 43, 30, 1, 2, 1
+563, 711, 273, 290, 28, 66, 1, 0, 1
+563, 713, 621, 290, 113, 62, 1, 2, 1
+563, 720, 448, 247, 29, 20, 1, 2, 1
+563, 721, 262, 378, 64, 161, 1, 0, 1
+563, 722, 783, 302, 103, 68, 1, 2, 1
+563, 723, 328, 204, 46, 65, 1, 2, 1
+563, 731, 324, 269, 17, 42, 1, 0, 1
+564, 686, 370, 254, 43, 41, 1, 2, 1
+564, 697, 524, 259, 61, 40, 1, 2, 1
+564, 705, 563, 263, 43, 31, 1, 2, 1
+564, 711, 264, 290, 29, 67, 1, 0, 1
+564, 713, 617, 291, 113, 62, 1, 2, 1
+564, 720, 443, 247, 29, 20, 1, 2, 1
+564, 721, 249, 379, 64, 160, 1, 0, 1
+564, 722, 778, 303, 104, 67, 1, 2, 1
+564, 723, 318, 203, 49, 68, 1, 2, 1
+564, 731, 317, 270, 17, 41, 1, 0, 1
+565, 686, 363, 250, 45, 44, 1, 2, 1
+565, 697, 520, 259, 60, 39, 1, 2, 1
+565, 705, 559, 264, 40, 29, 1, 2, 1
+565, 711, 257, 290, 29, 68, 1, 0, 1
+565, 713, 613, 291, 113, 63, 1, 2, 1
+565, 720, 439, 247, 28, 19, 1, 2, 1
+565, 721, 236, 379, 64, 160, 1, 0, 1
+565, 722, 772, 303, 106, 67, 1, 2, 1
+565, 723, 309, 202, 50, 69, 1, 2, 1
+566, 686, 358, 253, 43, 41, 1, 2, 1
+566, 697, 516, 259, 62, 39, 1, 2, 1
+566, 705, 553, 263, 40, 30, 1, 2, 1
+566, 711, 248, 290, 30, 69, 1, 0, 1
+566, 713, 611, 292, 111, 61, 1, 2, 1
+566, 720, 434, 247, 29, 20, 1, 2, 1
+566, 721, 225, 384, 63, 155, 1, 0, 1
+566, 722, 767, 303, 107, 67, 1, 2, 1
+567, 686, 352, 252, 42, 41, 1, 2, 1
+567, 697, 513, 259, 64, 40, 1, 2, 1
+567, 711, 240, 291, 30, 68, 1, 0, 1
+567, 713, 608, 293, 111, 62, 1, 2, 1
+567, 720, 429, 247, 29, 20, 1, 2, 1
+567, 721, 211, 388, 62, 151, 1, 0, 1
+567, 722, 760, 303, 110, 68, 1, 2, 1
+568, 686, 345, 251, 42, 41, 1, 2, 1
+568, 697, 509, 259, 65, 41, 1, 2, 1
+568, 711, 232, 293, 30, 68, 1, 0, 1
+568, 713, 605, 294, 109, 61, 1, 2, 1
+568, 720, 426, 248, 28, 19, 1, 2, 1
+568, 721, 198, 391, 63, 148, 1, 0, 1
+568, 722, 754, 303, 114, 70, 1, 2, 1
+569, 686, 339, 251, 41, 42, 1, 2, 1
+569, 697, 504, 259, 65, 41, 1, 2, 1
+569, 711, 223, 293, 31, 69, 1, 0, 1
+569, 713, 602, 295, 108, 61, 1, 2, 1
+569, 720, 421, 247, 29, 21, 1, 2, 1
+569, 721, 184, 393, 63, 146, 1, 0, 1
+569, 722, 749, 303, 116, 70, 1, 2, 1
+570, 686, 333, 251, 42, 41, 1, 2, 1
+570, 697, 500, 259, 67, 42, 1, 2, 1
+570, 711, 215, 293, 31, 70, 1, 0, 1
+570, 713, 599, 295, 108, 62, 1, 2, 1
+570, 720, 416, 247, 31, 21, 1, 2, 1
+570, 721, 172, 395, 63, 144, 1, 0, 1
+570, 722, 744, 303, 118, 71, 1, 2, 1
+571, 686, 327, 252, 41, 40, 1, 2, 1
+571, 697, 496, 259, 68, 42, 1, 2, 1
+571, 711, 207, 294, 32, 72, 1, 0, 1
+571, 713, 594, 296, 110, 64, 1, 2, 1
+571, 720, 412, 247, 30, 22, 1, 2, 1
+571, 721, 158, 397, 64, 142, 1, 0, 1
+571, 722, 740, 304, 118, 70, 1, 2, 1
+572, 686, 321, 251, 41, 42, 1, 2, 1
+572, 697, 492, 260, 68, 42, 1, 2, 1
+572, 711, 199, 296, 31, 71, 1, 0, 1
+572, 713, 591, 297, 111, 65, 1, 2, 1
+572, 720, 407, 247, 32, 23, 1, 2, 1
+572, 721, 145, 398, 64, 141, 1, 0, 1
+572, 722, 735, 304, 122, 71, 1, 2, 1
+573, 686, 315, 251, 41, 41, 1, 2, 1
+573, 697, 489, 260, 68, 43, 1, 2, 1
+573, 711, 190, 297, 32, 71, 1, 0, 1
+573, 713, 588, 297, 113, 66, 1, 2, 1
+573, 720, 403, 248, 32, 22, 1, 2, 1
+573, 721, 132, 398, 65, 141, 1, 0, 1
+573, 722, 731, 304, 122, 71, 1, 2, 1
+573, 734, 931, 296, 25, 79, 1, 0, 1
+574, 686, 310, 250, 40, 41, 1, 2, 1
+574, 697, 486, 261, 68, 42, 1, 2, 1
+574, 711, 182, 298, 33, 71, 1, 0, 1
+574, 713, 584, 298, 114, 67, 1, 2, 1
+574, 720, 398, 248, 32, 22, 1, 2, 1
+574, 721, 118, 399, 66, 140, 1, 0, 1
+574, 722, 727, 305, 123, 71, 1, 2, 1
+574, 734, 929, 295, 26, 81, 1, 0, 1
+575, 686, 304, 250, 41, 41, 1, 2, 1
+575, 697, 482, 261, 70, 44, 1, 2, 1
+575, 711, 174, 298, 33, 71, 1, 0, 1
+575, 713, 582, 300, 113, 67, 1, 2, 1
+575, 720, 395, 247, 32, 23, 1, 2, 1
+575, 721, 104, 399, 67, 140, 1, 0, 1
+575, 722, 723, 306, 124, 72, 1, 2, 1
+575, 734, 926, 296, 25, 80, 1, 0, 1
+575, 735, 646, 266, 15, 31, 1, 0, 1
+575, 736, 290, 230, 32, 20, 1, 2, 1
+576, 686, 299, 252, 39, 40, 1, 2, 1
+576, 697, 480, 262, 70, 44, 1, 2, 1
+576, 711, 165, 299, 33, 72, 1, 0, 1
+576, 713, 580, 302, 114, 68, 1, 2, 1
+576, 720, 391, 248, 33, 23, 1, 2, 1
+576, 721, 91, 401, 67, 138, 1, 0, 1
+576, 722, 719, 307, 126, 72, 1, 2, 1
+576, 734, 921, 293, 27, 85, 1, 0, 1
+576, 735, 642, 266, 16, 33, 1, 0, 1
+576, 736, 286, 229, 32, 21, 1, 2, 1
+577, 686, 294, 252, 38, 39, 1, 2, 1
+577, 697, 477, 262, 71, 45, 1, 2, 1
+577, 711, 156, 299, 35, 73, 1, 0, 1
+577, 713, 579, 303, 116, 69, 1, 2, 1
+577, 720, 388, 247, 33, 23, 1, 2, 1
+577, 721, 77, 402, 67, 137, 1, 0, 1
+577, 722, 715, 307, 127, 73, 1, 2, 1
+577, 734, 918, 292, 27, 87, 1, 0, 1
+577, 735, 639, 263, 18, 39, 1, 0, 1
+578, 686, 289, 252, 38, 38, 1, 2, 1
+578, 697, 475, 262, 71, 45, 1, 2, 1
+578, 711, 148, 299, 35, 75, 1, 0, 1
+578, 713, 577, 303, 117, 71, 1, 2, 1
+578, 720, 385, 247, 32, 23, 1, 2, 1
+578, 721, 61, 405, 66, 134, 1, 0, 1
+578, 722, 713, 307, 128, 73, 1, 2, 1
+578, 734, 914, 292, 27, 88, 1, 0, 1
+578, 735, 635, 261, 19, 42, 1, 0, 1
+579, 686, 284, 251, 38, 38, 1, 2, 1
+579, 697, 474, 262, 71, 45, 1, 2, 1
+579, 711, 139, 298, 35, 76, 1, 0, 1
+579, 713, 575, 303, 119, 73, 1, 2, 1
+579, 720, 381, 247, 34, 24, 1, 2, 1
+579, 721, 49, 409, 66, 129, 1, 0, 1
+579, 722, 709, 307, 130, 74, 1, 2, 1
+579, 734, 909, 293, 28, 89, 1, 0, 1
+579, 735, 633, 267, 17, 38, 1, 0, 1
+579, 736, 277, 230, 31, 20, 1, 2, 1
+579, 737, 948, 379, 11, 42, 1, 2, 1
+580, 686, 278, 250, 40, 39, 1, 2, 1
+580, 697, 471, 262, 72, 46, 1, 2, 1
+580, 711, 131, 299, 36, 75, 1, 0, 1
+580, 713, 573, 304, 121, 74, 1, 2, 1
+580, 720, 379, 248, 33, 23, 1, 2, 1
+580, 721, 36, 412, 64, 124, 1, 0, 1
+580, 722, 706, 308, 130, 73, 1, 2, 1
+580, 734, 905, 296, 27, 87, 1, 0, 1
+580, 735, 629, 263, 19, 42, 1, 0, 1
+580, 736, 274, 231, 30, 19, 1, 2, 1
+580, 737, 948, 381, 11, 41, 1, 2, 1
+581, 686, 273, 249, 40, 40, 1, 2, 1
+581, 697, 469, 263, 73, 46, 1, 2, 1
+581, 711, 122, 299, 37, 78, 1, 0, 1
+581, 713, 572, 305, 122, 75, 1, 2, 1
+581, 720, 376, 248, 34, 23, 1, 2, 1
+581, 721, 20, 415, 65, 121, 1, 0, 1
+581, 722, 704, 308, 131, 74, 1, 2, 1
+581, 734, 901, 299, 28, 85, 1, 0, 1
+581, 735, 627, 266, 18, 38, 1, 0, 1
+581, 737, 948, 382, 11, 41, 1, 2, 1
+582, 686, 270, 248, 39, 40, 1, 2, 1
+582, 697, 468, 263, 72, 46, 1, 2, 1
+582, 711, 113, 299, 37, 79, 1, 0, 1
+582, 713, 572, 306, 122, 75, 1, 2, 1
+582, 720, 373, 247, 34, 24, 1, 2, 1
+582, 721, 6, 416, 66, 122, 1, 0, 1
+582, 722, 702, 309, 132, 74, 1, 2, 1
+582, 734, 898, 300, 27, 85, 1, 0, 1
+582, 735, 625, 265, 18, 41, 1, 0, 1
+582, 736, 264, 229, 31, 20, 1, 2, 1
+583, 686, 265, 249, 40, 39, 1, 2, 1
+583, 697, 466, 262, 73, 47, 1, 2, 1
+583, 711, 106, 300, 37, 79, 1, 0, 1
+583, 713, 572, 307, 123, 76, 1, 2, 1
+583, 720, 370, 247, 35, 24, 1, 2, 1
+583, 721, 0, 419, 62, 118, 1, 0, 1
+583, 722, 699, 308, 134, 75, 1, 2, 1
+583, 734, 894, 294, 30, 92, 1, 0, 1
+583, 736, 260, 228, 34, 21, 1, 2, 1
+584, 686, 262, 249, 38, 37, 1, 2, 1
+584, 697, 465, 262, 74, 47, 1, 2, 1
+584, 711, 98, 300, 38, 82, 1, 0, 1
+584, 713, 570, 306, 127, 79, 1, 2, 1
+584, 720, 368, 247, 35, 24, 1, 2, 1
+584, 721, 0, 419, 54, 118, 1, 0, 1
+584, 722, 697, 308, 135, 75, 1, 2, 1
+584, 734, 892, 293, 30, 94, 1, 0, 1
+584, 736, 255, 227, 33, 21, 1, 2, 1
+585, 686, 257, 248, 39, 38, 1, 2, 1
+585, 697, 464, 262, 74, 47, 1, 2, 1
+585, 711, 90, 301, 40, 84, 1, 0, 1
+585, 713, 570, 307, 129, 80, 1, 2, 1
+585, 720, 366, 247, 35, 24, 1, 2, 1
+585, 721, 0, 422, 44, 115, 1, 0, 1
+585, 722, 694, 308, 136, 76, 1, 2, 1
+585, 734, 889, 285, 32, 101, 1, 0, 1
+585, 735, 618, 265, 17, 36, 1, 0, 1
+585, 736, 253, 227, 33, 21, 1, 2, 1
+586, 686, 253, 248, 40, 39, 1, 2, 1
+586, 697, 462, 261, 76, 49, 1, 2, 1
+586, 711, 83, 301, 40, 86, 1, 0, 1
+586, 713, 569, 308, 132, 81, 1, 2, 1
+586, 720, 364, 247, 34, 23, 1, 2, 1
+586, 721, 0, 423, 32, 114, 1, 0, 1
+586, 722, 692, 308, 138, 76, 1, 2, 1
+586, 734, 887, 284, 33, 101, 1, 0, 1
+586, 735, 616, 262, 18, 40, 1, 0, 1
+586, 736, 252, 226, 35, 23, 1, 2, 1
+587, 686, 249, 248, 40, 39, 1, 2, 1
+587, 697, 460, 261, 77, 49, 1, 2, 1
+587, 711, 76, 303, 40, 85, 1, 0, 1
+587, 713, 570, 308, 134, 83, 1, 2, 1
+587, 720, 362, 247, 35, 23, 1, 2, 1
+587, 722, 691, 307, 140, 77, 1, 2, 1
+587, 734, 886, 286, 31, 97, 1, 0, 1
+587, 735, 613, 261, 19, 42, 1, 0, 1
+587, 736, 251, 225, 36, 23, 1, 2, 1
+588, 686, 246, 248, 39, 38, 1, 2, 1
+588, 697, 459, 261, 78, 50, 1, 2, 1
+588, 711, 70, 303, 40, 87, 1, 0, 1
+588, 713, 570, 309, 137, 85, 1, 2, 1
+588, 720, 360, 247, 35, 23, 1, 2, 1
+588, 722, 691, 308, 140, 77, 1, 2, 1
+588, 734, 886, 288, 30, 93, 1, 0, 1
+588, 735, 613, 266, 16, 36, 1, 0, 1
+588, 736, 244, 225, 33, 22, 1, 2, 1
+589, 686, 242, 248, 40, 38, 1, 2, 1
+589, 697, 458, 262, 78, 50, 1, 2, 1
+589, 711, 63, 305, 40, 88, 1, 0, 1
+589, 713, 571, 311, 140, 86, 1, 2, 1
+589, 720, 358, 246, 36, 25, 1, 2, 1
+589, 722, 690, 307, 142, 79, 1, 2, 1
+589, 734, 884, 288, 30, 91, 1, 0, 1
+589, 735, 612, 266, 16, 36, 1, 0, 1
+589, 736, 240, 225, 34, 21, 1, 2, 1
+590, 686, 240, 248, 39, 38, 1, 2, 1
+590, 697, 456, 261, 80, 51, 1, 2, 1
+590, 711, 55, 304, 42, 89, 1, 0, 1
+590, 713, 572, 312, 142, 88, 1, 2, 1
+590, 720, 356, 246, 37, 25, 1, 2, 1
+590, 722, 690, 307, 143, 80, 1, 2, 1
+590, 734, 883, 289, 29, 88, 1, 0, 1
+590, 735, 611, 264, 16, 37, 1, 0, 1
+590, 736, 240, 226, 32, 21, 1, 2, 1
+590, 745, 250, 226, 42, 26, 1, 2, 1
+591, 686, 237, 249, 38, 37, 1, 2, 1
+591, 697, 456, 262, 81, 51, 1, 2, 1
+591, 711, 48, 305, 41, 91, 1, 0, 1
+591, 713, 574, 314, 144, 89, 1, 2, 1
+591, 720, 355, 246, 39, 26, 1, 2, 1
+591, 722, 689, 308, 144, 80, 1, 2, 1
+591, 734, 882, 289, 28, 87, 1, 0, 1
+591, 735, 610, 261, 18, 42, 1, 0, 1
+591, 736, 240, 225, 35, 23, 1, 2, 1
+591, 745, 249, 226, 43, 27, 1, 2, 1
+592, 686, 234, 248, 38, 37, 1, 2, 1
+592, 697, 455, 262, 83, 52, 1, 2, 1
+592, 711, 41, 307, 42, 91, 1, 0, 1
+592, 713, 576, 316, 147, 90, 1, 2, 1
+592, 720, 354, 247, 39, 25, 1, 2, 1
+592, 722, 689, 307, 145, 81, 1, 2, 1
+592, 734, 881, 288, 29, 87, 1, 0, 1
+592, 735, 608, 259, 18, 43, 1, 0, 1
+592, 736, 239, 224, 38, 24, 1, 2, 1
+593, 686, 231, 248, 39, 38, 1, 2, 1
+593, 697, 455, 262, 84, 53, 1, 2, 1
+593, 711, 34, 308, 42, 92, 1, 0, 1
+593, 713, 579, 317, 152, 93, 1, 2, 1
+593, 720, 353, 247, 40, 26, 1, 2, 1
+593, 722, 688, 309, 147, 82, 1, 2, 1
+593, 734, 881, 290, 29, 87, 1, 0, 1
+593, 735, 607, 257, 20, 46, 1, 0, 1
+593, 736, 237, 224, 39, 25, 1, 2, 1
+594, 686, 229, 247, 39, 39, 1, 2, 1
+594, 697, 457, 262, 84, 53, 1, 2, 1
+594, 711, 28, 309, 42, 93, 1, 0, 1
+594, 713, 582, 319, 154, 94, 1, 2, 1
+594, 720, 352, 247, 40, 26, 1, 2, 1
+594, 722, 688, 309, 149, 83, 1, 2, 1
+594, 734, 881, 290, 29, 88, 1, 0, 1
+594, 735, 607, 258, 19, 45, 1, 0, 1
+594, 736, 238, 224, 39, 25, 1, 2, 1
+595, 686, 228, 248, 38, 37, 1, 2, 1
+595, 697, 459, 264, 83, 52, 1, 2, 1
+595, 711, 21, 310, 43, 93, 1, 0, 1
+595, 713, 584, 321, 159, 97, 1, 2, 1
+595, 720, 351, 247, 41, 27, 1, 2, 1
+595, 722, 690, 310, 148, 84, 1, 2, 1
+595, 734, 879, 292, 30, 87, 1, 0, 1
+595, 735, 607, 258, 19, 46, 1, 0, 1
+595, 736, 239, 225, 39, 25, 1, 2, 1
+595, 748, 442, 261, 34, 32, 1, 2, 1
+596, 686, 226, 247, 37, 37, 1, 2, 1
+596, 697, 460, 263, 84, 53, 1, 2, 1
+596, 711, 15, 312, 43, 93, 1, 0, 1
+596, 713, 586, 322, 165, 100, 1, 2, 1
+596, 720, 351, 248, 41, 26, 1, 2, 1
+596, 722, 691, 310, 151, 84, 1, 2, 1
+596, 734, 878, 291, 32, 88, 1, 0, 1
+596, 735, 608, 259, 19, 45, 1, 0, 1
+596, 736, 236, 224, 41, 27, 1, 2, 1
+596, 748, 443, 261, 34, 32, 1, 2, 1
+597, 686, 224, 246, 37, 37, 1, 2, 1
+597, 697, 461, 263, 85, 54, 1, 2, 1
+597, 711, 8, 311, 44, 96, 1, 0, 1
+597, 713, 590, 324, 169, 102, 1, 2, 1
+597, 720, 351, 247, 42, 27, 1, 2, 1
+597, 722, 693, 310, 151, 85, 1, 2, 1
+597, 734, 880, 294, 31, 84, 1, 0, 1
+597, 735, 609, 258, 18, 45, 1, 0, 1
+597, 736, 235, 225, 41, 27, 1, 2, 1
+597, 748, 443, 260, 34, 32, 1, 2, 1
+598, 686, 222, 247, 37, 37, 1, 2, 1
+598, 697, 464, 265, 83, 53, 1, 2, 1
+598, 711, 1, 317, 44, 96, 1, 0, 1
+598, 713, 594, 325, 176, 106, 1, 2, 1
+598, 720, 351, 248, 42, 27, 1, 2, 1
+598, 722, 696, 310, 152, 85, 1, 2, 1
+598, 734, 881, 294, 32, 84, 1, 0, 1
+598, 735, 609, 257, 18, 46, 1, 0, 1
+598, 736, 233, 224, 42, 28, 1, 2, 1
+598, 745, 232, 229, 32, 21, 1, 2, 1
+598, 748, 442, 261, 34, 32, 1, 2, 1
+599, 686, 220, 246, 37, 38, 1, 2, 1
+599, 697, 465, 266, 85, 53, 1, 2, 1
+599, 711, 0, 319, 41, 97, 1, 0, 1
+599, 713, 597, 325, 183, 111, 1, 2, 1
+599, 720, 351, 248, 43, 27, 1, 2, 1
+599, 722, 697, 310, 153, 85, 1, 2, 1
+599, 734, 882, 293, 34, 86, 1, 0, 1
+599, 735, 609, 256, 19, 48, 1, 0, 1
+599, 745, 230, 230, 32, 20, 1, 2, 1
+599, 748, 441, 260, 36, 33, 1, 2, 1
+599, 753, 251, 238, 25, 19, 1, 2, 1
+600, 686, 219, 247, 37, 37, 1, 2, 1
+600, 697, 468, 268, 83, 52, 1, 2, 1
+600, 711, 0, 322, 37, 97, 1, 0, 1
+600, 713, 603, 326, 189, 113, 1, 2, 1
+600, 720, 351, 248, 45, 28, 1, 2, 1
+600, 722, 697, 309, 157, 88, 1, 2, 1
+600, 734, 885, 291, 35, 88, 1, 0, 1
+600, 735, 610, 256, 19, 48, 1, 0, 1
+600, 748, 443, 262, 36, 32, 1, 2, 1
+600, 753, 251, 239, 24, 18, 1, 2, 1
+601, 686, 218, 248, 37, 37, 1, 2, 1
+601, 697, 468, 266, 87, 55, 1, 2, 1
+601, 711, 0, 324, 33, 97, 1, 0, 1
+601, 713, 608, 328, 193, 115, 1, 2, 1
+601, 720, 353, 249, 43, 27, 1, 2, 1
+601, 722, 698, 309, 158, 89, 1, 2, 1
+601, 734, 888, 289, 35, 90, 1, 0, 1
+601, 735, 612, 256, 19, 48, 1, 0, 1
+601, 745, 231, 231, 30, 19, 1, 2, 1
+601, 748, 442, 261, 37, 33, 1, 2, 1
+601, 753, 249, 238, 24, 19, 1, 2, 1
+602, 686, 217, 247, 37, 38, 1, 2, 1
+602, 697, 469, 265, 91, 58, 1, 2, 1
+602, 711, 0, 328, 29, 94, 1, 0, 1
+602, 713, 613, 330, 202, 120, 1, 2, 1
+602, 720, 353, 249, 44, 27, 1, 2, 1
+602, 722, 701, 311, 157, 87, 1, 2, 1
+602, 734, 891, 290, 34, 88, 1, 0, 1
+602, 735, 613, 256, 19, 49, 1, 0, 1
+602, 745, 230, 230, 33, 21, 1, 2, 1
+602, 748, 441, 262, 39, 33, 1, 2, 1
+602, 753, 247, 238, 24, 19, 1, 2, 1
+603, 686, 216, 247, 38, 38, 1, 2, 1
+603, 697, 471, 264, 92, 59, 1, 2, 1
+603, 711, 0, 334, 25, 92, 1, 0, 1
+603, 713, 617, 331, 214, 127, 1, 2, 1
+603, 720, 353, 249, 45, 28, 1, 2, 1
+603, 722, 704, 311, 158, 88, 1, 2, 1
+603, 734, 893, 288, 35, 90, 1, 0, 1
+603, 735, 613, 256, 19, 49, 1, 0, 1
+603, 736, 233, 229, 34, 23, 1, 2, 1
+603, 745, 229, 231, 32, 20, 1, 2, 1
+603, 748, 441, 262, 40, 33, 1, 2, 1
+603, 753, 246, 238, 25, 20, 1, 2, 1
+604, 686, 215, 248, 37, 37, 1, 2, 1
+604, 697, 472, 265, 93, 60, 1, 2, 1
+604, 711, 0, 336, 19, 92, 1, 0, 1
+604, 713, 623, 332, 224, 133, 1, 2, 1
+604, 720, 354, 250, 46, 28, 1, 2, 1
+604, 722, 705, 312, 161, 89, 1, 2, 1
+604, 734, 894, 283, 36, 97, 1, 0, 1
+604, 735, 615, 255, 19, 49, 1, 0, 1
+604, 736, 232, 229, 34, 23, 1, 2, 1
+604, 748, 441, 262, 41, 34, 1, 2, 1
+604, 753, 245, 240, 25, 19, 1, 2, 1
+605, 686, 214, 248, 37, 37, 1, 2, 1
+605, 697, 475, 265, 92, 60, 1, 2, 1
+605, 713, 630, 334, 233, 138, 1, 2, 1
+605, 720, 355, 250, 46, 29, 1, 2, 1
+605, 722, 707, 311, 162, 90, 1, 2, 1
+605, 734, 897, 282, 35, 99, 1, 0, 1
+605, 735, 617, 255, 18, 49, 1, 0, 1
+605, 748, 441, 262, 41, 34, 1, 2, 1
+605, 753, 245, 241, 24, 18, 1, 2, 1
+606, 686, 213, 248, 36, 37, 1, 2, 1
+606, 697, 476, 265, 93, 60, 1, 2, 1
+606, 713, 639, 336, 241, 143, 1, 2, 1
+606, 720, 355, 251, 46, 28, 1, 2, 1
+606, 722, 708, 311, 165, 91, 1, 2, 1
+606, 734, 898, 281, 36, 100, 1, 0, 1
+606, 735, 618, 254, 18, 49, 1, 0, 1
+606, 748, 441, 262, 42, 34, 1, 2, 1
+606, 753, 245, 241, 23, 18, 1, 2, 1
+607, 686, 212, 247, 37, 37, 1, 2, 1
+607, 697, 478, 265, 94, 61, 1, 2, 1
+607, 713, 645, 339, 251, 149, 1, 2, 1
+607, 720, 356, 250, 47, 28, 1, 2, 1
+607, 722, 710, 311, 169, 93, 1, 2, 1
+607, 735, 619, 254, 18, 49, 1, 0, 1
+607, 748, 442, 262, 42, 33, 1, 2, 1
+607, 753, 244, 240, 24, 18, 1, 2, 1
+608, 686, 211, 245, 38, 38, 1, 2, 1
+608, 697, 481, 266, 95, 61, 1, 2, 1
+608, 713, 655, 344, 259, 152, 1, 2, 1
+608, 720, 357, 250, 47, 29, 1, 2, 1
+608, 722, 710, 313, 174, 95, 1, 2, 1
+608, 735, 621, 254, 18, 50, 1, 0, 1
+608, 748, 442, 262, 43, 33, 1, 2, 1
+608, 753, 246, 240, 23, 18, 1, 2, 1
+609, 686, 211, 244, 36, 38, 1, 2, 1
+609, 697, 484, 267, 93, 60, 1, 2, 1
+609, 713, 663, 348, 274, 161, 1, 2, 1
+609, 720, 358, 250, 48, 29, 1, 2, 1
+609, 722, 713, 313, 175, 96, 1, 2, 1
+609, 735, 622, 255, 18, 50, 1, 0, 1
+609, 748, 442, 262, 44, 33, 1, 2, 1
+609, 753, 247, 239, 22, 18, 1, 2, 1
+610, 686, 210, 244, 36, 36, 1, 2, 1
+610, 697, 486, 267, 96, 62, 1, 2, 1
+610, 713, 668, 352, 285, 168, 1, 2, 1
+610, 720, 359, 249, 49, 30, 1, 2, 1
+610, 722, 714, 314, 181, 99, 1, 2, 1
+610, 735, 624, 256, 18, 48, 1, 0, 1
+610, 736, 233, 230, 32, 21, 1, 2, 1
+610, 748, 442, 262, 46, 34, 1, 2, 1
+610, 753, 246, 237, 23, 18, 1, 2, 1
+611, 686, 209, 242, 36, 37, 1, 2, 1
+611, 697, 487, 267, 98, 63, 1, 2, 1
+611, 713, 671, 358, 288, 173, 1, 2, 1
+611, 720, 361, 250, 48, 29, 1, 2, 1
+611, 722, 712, 316, 194, 105, 1, 2, 1
+611, 734, 903, 284, 37, 105, 1, 0, 1
+611, 735, 625, 257, 18, 49, 1, 0, 1
+611, 736, 233, 230, 31, 21, 1, 2, 1
+611, 748, 442, 262, 47, 34, 1, 2, 1
+611, 753, 246, 237, 23, 18, 1, 2, 1
+612, 686, 209, 242, 36, 37, 1, 2, 1
+612, 697, 490, 266, 100, 65, 1, 2, 1
+612, 713, 677, 362, 282, 175, 1, 2, 1
+612, 720, 363, 250, 48, 29, 1, 2, 1
+612, 722, 734, 317, 150, 76, 1, 2, 1
+612, 734, 906, 289, 34, 102, 1, 0, 1
+612, 735, 627, 258, 18, 48, 1, 0, 1
+612, 748, 443, 261, 47, 35, 1, 2, 1
+612, 753, 246, 235, 23, 19, 1, 2, 1
+613, 686, 208, 241, 36, 36, 1, 2, 1
+613, 697, 492, 266, 101, 66, 1, 2, 1
+613, 713, 689, 369, 270, 170, 1, 2, 1
+613, 720, 363, 250, 50, 28, 1, 2, 1
+613, 722, 740, 319, 147, 73, 1, 2, 1
+613, 734, 910, 293, 32, 97, 1, 0, 1
+613, 735, 628, 258, 17, 49, 1, 0, 1
+613, 748, 442, 261, 49, 35, 1, 2, 1
+613, 753, 245, 234, 23, 19, 1, 2, 1
+614, 686, 207, 240, 37, 37, 1, 2, 1
+614, 697, 494, 266, 102, 67, 1, 2, 1
+614, 713, 700, 376, 259, 163, 1, 2, 1
+614, 720, 364, 250, 51, 29, 1, 2, 1
+614, 722, 744, 321, 157, 76, 1, 2, 1
+614, 734, 915, 296, 32, 97, 1, 0, 1
+614, 735, 629, 259, 17, 48, 1, 0, 1
+614, 748, 443, 261, 49, 35, 1, 2, 1
+614, 753, 245, 234, 23, 19, 1, 2, 1
+615, 686, 206, 238, 38, 39, 1, 2, 1
+615, 697, 496, 267, 104, 68, 1, 2, 1
+615, 713, 711, 381, 248, 158, 1, 2, 1
+615, 720, 365, 250, 52, 29, 1, 2, 1
+615, 722, 735, 318, 177, 85, 1, 0, 1
+615, 734, 919, 299, 31, 97, 1, 0, 1
+615, 735, 630, 260, 18, 47, 1, 0, 1
+615, 748, 443, 262, 49, 34, 1, 2, 1
+615, 753, 244, 234, 24, 20, 1, 2, 1
+615, 770, 129, 250, 27, 70, 1, 0, 1
+616, 686, 206, 239, 37, 38, 1, 2, 1
+616, 697, 498, 269, 105, 68, 1, 2, 1
+616, 713, 725, 390, 234, 149, 1, 2, 1
+616, 720, 366, 250, 52, 30, 1, 2, 1
+616, 722, 737, 318, 179, 86, 1, 0, 1
+616, 734, 922, 300, 32, 100, 1, 0, 1
+616, 735, 632, 261, 18, 48, 1, 0, 1
+616, 748, 442, 263, 51, 34, 1, 2, 1
+616, 753, 244, 234, 24, 20, 1, 2, 1
+616, 770, 129, 256, 24, 64, 1, 0, 1
+617, 686, 206, 238, 37, 39, 1, 2, 1
+617, 697, 501, 271, 105, 68, 1, 2, 1
+617, 713, 740, 397, 219, 142, 1, 2, 1
+617, 720, 367, 251, 53, 30, 1, 2, 1
+617, 722, 742, 326, 183, 87, 1, 2, 1
+617, 734, 924, 300, 33, 102, 1, 0, 1
+617, 735, 634, 263, 18, 48, 1, 0, 1
+617, 748, 442, 264, 51, 34, 1, 2, 1
+617, 753, 243, 234, 25, 20, 1, 2, 1
+617, 770, 127, 258, 24, 62, 1, 0, 1
+618, 686, 205, 239, 37, 37, 1, 2, 1
+618, 697, 503, 272, 105, 69, 1, 2, 1
+618, 713, 756, 406, 203, 133, 1, 2, 1
+618, 720, 367, 251, 54, 31, 1, 2, 1
+618, 722, 744, 330, 190, 89, 1, 2, 1
+618, 734, 926, 301, 33, 104, 1, 0, 1
+618, 735, 635, 264, 18, 49, 1, 0, 1
+618, 748, 442, 265, 51, 34, 1, 2, 1
+618, 753, 243, 234, 24, 20, 1, 2, 1
+618, 770, 124, 253, 26, 68, 1, 0, 1
+619, 686, 204, 238, 37, 38, 1, 2, 1
+619, 697, 504, 273, 108, 71, 1, 2, 1
+619, 713, 772, 415, 187, 123, 1, 2, 1
+619, 720, 368, 251, 55, 31, 1, 2, 1
+619, 722, 741, 332, 204, 96, 1, 2, 1
+619, 734, 928, 302, 31, 102, 1, 0, 1
+619, 735, 636, 265, 18, 49, 1, 0, 1
+619, 748, 441, 265, 53, 35, 1, 2, 1
+619, 753, 242, 234, 24, 20, 1, 2, 1
+619, 770, 122, 250, 27, 72, 1, 0, 1
+620, 686, 203, 238, 37, 38, 1, 2, 1
+620, 697, 507, 275, 109, 71, 1, 2, 1
+620, 713, 790, 424, 169, 113, 1, 2, 1
+620, 720, 370, 252, 53, 30, 1, 2, 1
+620, 722, 740, 334, 212, 99, 1, 2, 1
+620, 734, 929, 301, 30, 107, 1, 0, 1
+620, 735, 637, 265, 19, 50, 1, 0, 1
+620, 748, 441, 265, 55, 36, 1, 2, 1
+620, 753, 242, 234, 24, 20, 1, 2, 1
+620, 770, 120, 249, 28, 74, 1, 0, 1
+621, 686, 203, 238, 37, 38, 1, 2, 1
+621, 697, 508, 276, 111, 72, 1, 2, 1
+621, 713, 808, 433, 151, 104, 1, 2, 1
+621, 720, 370, 252, 55, 31, 1, 2, 1
+621, 722, 738, 334, 221, 107, 1, 2, 1
+621, 734, 932, 304, 27, 105, 1, 0, 1
+621, 735, 640, 266, 18, 50, 1, 0, 1
+621, 748, 441, 266, 55, 36, 1, 2, 1
+621, 753, 243, 234, 23, 20, 1, 2, 1
+621, 770, 120, 251, 27, 73, 1, 0, 1
+622, 686, 202, 239, 37, 37, 1, 2, 1
+622, 697, 510, 277, 113, 74, 1, 2, 1
+622, 713, 828, 442, 131, 95, 1, 2, 1
+622, 720, 370, 252, 57, 32, 1, 2, 1
+622, 722, 736, 335, 223, 113, 1, 2, 1
+622, 734, 935, 305, 24, 101, 1, 0, 1
+622, 735, 641, 267, 18, 50, 1, 0, 1
+622, 748, 441, 266, 56, 36, 1, 2, 1
+622, 753, 243, 235, 23, 19, 1, 2, 1
+622, 770, 119, 254, 26, 70, 1, 0, 1
+623, 686, 202, 240, 36, 36, 1, 2, 1
+623, 697, 513, 277, 115, 75, 1, 2, 1
+623, 713, 841, 449, 118, 89, 1, 2, 1
+623, 720, 372, 253, 56, 31, 1, 2, 1
+623, 722, 735, 335, 224, 117, 1, 2, 1
+623, 734, 938, 303, 21, 100, 1, 0, 1
+623, 735, 643, 266, 18, 51, 1, 0, 1
+623, 748, 441, 267, 56, 36, 1, 2, 1
+623, 753, 242, 236, 23, 20, 1, 2, 1
+623, 770, 118, 253, 27, 73, 1, 0, 1
+624, 686, 202, 240, 36, 36, 1, 2, 1
+624, 697, 517, 278, 115, 75, 1, 2, 1
+624, 720, 374, 253, 56, 31, 1, 2, 1
+624, 722, 736, 336, 223, 121, 1, 2, 1
+624, 734, 940, 304, 19, 100, 1, 0, 1
+624, 735, 645, 265, 18, 51, 1, 0, 1
+624, 748, 442, 267, 56, 36, 1, 2, 1
+624, 753, 242, 236, 23, 19, 1, 2, 1
+624, 770, 118, 259, 25, 67, 1, 0, 1
+625, 686, 202, 242, 36, 35, 1, 2, 1
+625, 697, 519, 279, 119, 77, 1, 2, 1
+625, 720, 375, 255, 58, 32, 1, 2, 1
+625, 722, 739, 337, 220, 122, 1, 2, 1
+625, 735, 648, 267, 19, 52, 1, 0, 1
+625, 748, 443, 268, 56, 36, 1, 2, 1
+625, 753, 243, 239, 22, 18, 1, 2, 1
+625, 770, 117, 262, 25, 65, 1, 0, 1
+626, 686, 202, 241, 37, 36, 1, 2, 1
+626, 697, 523, 278, 120, 79, 1, 2, 1
+626, 720, 377, 255, 57, 31, 1, 2, 1
+626, 722, 742, 337, 217, 123, 1, 2, 1
+626, 735, 651, 266, 19, 53, 1, 0, 1
+626, 748, 445, 267, 56, 36, 1, 2, 1
+626, 753, 244, 237, 22, 19, 1, 2, 1
+626, 770, 117, 265, 24, 62, 1, 0, 1
+627, 686, 202, 242, 36, 36, 1, 2, 1
+627, 697, 526, 278, 122, 79, 1, 2, 1
+627, 720, 378, 255, 58, 33, 1, 2, 1
+627, 722, 746, 335, 213, 126, 1, 2, 1
+627, 735, 653, 265, 20, 54, 1, 0, 1
+627, 748, 445, 268, 57, 35, 1, 2, 1
+627, 753, 244, 239, 22, 19, 1, 2, 1
+627, 770, 118, 269, 23, 61, 1, 0, 1
+628, 686, 203, 243, 36, 35, 1, 2, 1
+628, 697, 530, 278, 123, 81, 1, 2, 1
+628, 720, 380, 256, 59, 33, 1, 2, 1
+628, 722, 749, 337, 210, 127, 1, 2, 1
+628, 735, 656, 265, 20, 55, 1, 0, 1
+628, 748, 446, 268, 58, 37, 1, 2, 1
+628, 753, 246, 239, 22, 19, 1, 2, 1
+628, 770, 118, 272, 22, 59, 1, 0, 1
+629, 686, 203, 244, 36, 35, 1, 2, 1
+629, 697, 534, 278, 124, 82, 1, 2, 1
+629, 720, 382, 256, 60, 33, 1, 2, 1
+629, 722, 754, 336, 205, 129, 1, 2, 1
+629, 735, 659, 264, 20, 55, 1, 0, 1
+629, 748, 447, 268, 60, 37, 1, 2, 1
+629, 753, 247, 241, 22, 19, 1, 2, 1
+629, 770, 118, 275, 23, 58, 1, 0, 1
+630, 686, 205, 246, 36, 34, 1, 2, 1
+630, 697, 538, 278, 127, 83, 1, 2, 1
+630, 720, 386, 256, 59, 33, 1, 2, 1
+630, 722, 759, 337, 200, 130, 1, 2, 1
+630, 735, 664, 265, 19, 53, 1, 0, 1
+630, 748, 449, 268, 60, 38, 1, 2, 1
+630, 753, 248, 241, 23, 19, 1, 2, 1
+630, 770, 118, 276, 24, 58, 1, 0, 1
+631, 686, 207, 246, 35, 34, 1, 2, 1
+631, 697, 543, 278, 129, 85, 1, 2, 1
+631, 720, 388, 256, 60, 33, 1, 2, 1
+631, 722, 764, 337, 195, 133, 1, 2, 1
+631, 735, 668, 265, 19, 54, 1, 0, 1
+631, 748, 451, 268, 60, 37, 1, 2, 1
+631, 753, 249, 241, 23, 19, 1, 2, 1
+631, 770, 118, 275, 24, 59, 1, 0, 1
+632, 686, 207, 245, 37, 35, 1, 2, 1
+632, 697, 548, 280, 130, 85, 1, 2, 1
+632, 720, 391, 256, 60, 33, 1, 2, 1
+632, 722, 769, 339, 190, 133, 1, 2, 1
+632, 735, 672, 266, 20, 55, 1, 0, 1
+632, 748, 453, 268, 60, 38, 1, 2, 1
+632, 753, 252, 242, 22, 19, 1, 2, 1
+632, 770, 118, 274, 25, 61, 1, 0, 1
+633, 686, 208, 245, 38, 36, 1, 2, 1
+633, 697, 552, 280, 132, 87, 1, 2, 1
+633, 720, 393, 256, 60, 33, 1, 2, 1
+633, 722, 774, 341, 185, 134, 1, 2, 1
+633, 735, 675, 266, 20, 56, 1, 0, 1
+633, 748, 454, 267, 62, 39, 1, 2, 1
+633, 753, 253, 242, 23, 18, 1, 2, 1
+633, 770, 118, 271, 27, 66, 1, 0, 1
+634, 686, 209, 245, 37, 35, 1, 2, 1
+634, 697, 557, 281, 134, 88, 1, 2, 1
+634, 720, 395, 257, 61, 34, 1, 2, 1
+634, 722, 779, 343, 180, 138, 1, 2, 1
+634, 735, 680, 267, 20, 56, 1, 0, 1
+634, 748, 455, 267, 64, 40, 1, 2, 1
+634, 753, 253, 242, 24, 19, 1, 2, 1
+634, 770, 118, 271, 27, 67, 1, 0, 1
+635, 686, 210, 244, 38, 36, 1, 2, 1
+635, 697, 561, 281, 138, 91, 1, 2, 1
+635, 720, 398, 257, 61, 34, 1, 2, 1
+635, 722, 787, 345, 172, 138, 1, 2, 1
+635, 735, 683, 267, 21, 59, 1, 0, 1
+635, 748, 458, 268, 63, 39, 1, 2, 1
+635, 753, 255, 241, 24, 20, 1, 2, 1
+635, 770, 118, 267, 28, 71, 1, 0, 1
+636, 686, 212, 245, 37, 35, 1, 2, 1
+636, 697, 565, 282, 143, 94, 1, 2, 1
+636, 720, 400, 259, 63, 34, 1, 2, 1
+636, 722, 794, 348, 165, 138, 1, 2, 1
+636, 735, 687, 270, 21, 58, 1, 0, 1
+636, 748, 460, 270, 62, 38, 1, 2, 1
+636, 753, 257, 243, 24, 19, 1, 2, 1
+636, 770, 119, 270, 28, 68, 1, 0, 1
+637, 686, 213, 245, 37, 36, 1, 2, 1
+637, 697, 571, 283, 146, 97, 1, 2, 1
+637, 720, 403, 260, 62, 34, 1, 2, 1
+637, 722, 808, 352, 151, 130, 1, 2, 1
+637, 735, 692, 270, 20, 59, 1, 0, 1
+637, 748, 463, 271, 61, 38, 1, 2, 1
+637, 753, 259, 243, 24, 20, 1, 2, 1
+637, 770, 120, 271, 28, 68, 1, 0, 1
+638, 686, 215, 246, 37, 36, 1, 2, 1
+638, 697, 577, 286, 146, 97, 1, 2, 1
+638, 720, 406, 261, 62, 34, 1, 2, 1
+638, 722, 819, 355, 140, 124, 1, 2, 1
+638, 735, 697, 270, 21, 58, 1, 0, 1
+638, 748, 466, 273, 60, 37, 1, 2, 1
+638, 753, 260, 244, 25, 20, 1, 2, 1
+638, 770, 122, 270, 27, 69, 1, 0, 1
+639, 686, 217, 246, 36, 35, 1, 2, 1
+639, 697, 583, 288, 149, 99, 1, 2, 1
+639, 720, 410, 262, 61, 34, 1, 2, 1
+639, 722, 829, 359, 130, 119, 1, 2, 1
+639, 735, 702, 272, 20, 57, 1, 0, 1
+639, 748, 468, 274, 63, 38, 1, 2, 1
+639, 753, 261, 244, 25, 20, 1, 2, 1
+639, 770, 123, 271, 28, 69, 1, 0, 1
+640, 686, 218, 248, 36, 34, 1, 2, 1
+640, 697, 589, 291, 150, 100, 1, 2, 1
+640, 720, 412, 263, 61, 34, 1, 2, 1
+640, 722, 837, 361, 122, 120, 1, 2, 1
+640, 735, 705, 272, 21, 58, 1, 0, 1
+640, 748, 470, 275, 64, 39, 1, 2, 1
+640, 753, 263, 245, 26, 21, 1, 2, 1
+640, 770, 124, 270, 28, 73, 1, 0, 1
+641, 686, 220, 249, 35, 34, 1, 2, 1
+641, 697, 594, 293, 153, 102, 1, 2, 1
+641, 720, 415, 264, 61, 34, 1, 2, 1
+641, 722, 847, 366, 112, 116, 1, 2, 1
+641, 748, 473, 275, 64, 40, 1, 2, 1
+641, 753, 265, 245, 25, 21, 1, 2, 1
+641, 770, 124, 271, 29, 73, 1, 0, 1
+642, 686, 222, 249, 35, 34, 1, 2, 1
+642, 697, 600, 295, 156, 104, 1, 2, 1
+642, 720, 418, 265, 63, 35, 1, 2, 1
+642, 722, 856, 370, 103, 115, 1, 2, 1
+642, 735, 718, 276, 20, 57, 1, 0, 1
+642, 748, 476, 276, 64, 40, 1, 2, 1
+642, 753, 267, 245, 25, 21, 1, 2, 1
+642, 770, 125, 271, 29, 74, 1, 0, 1
+643, 686, 224, 249, 36, 34, 1, 2, 1
+643, 697, 608, 298, 157, 104, 1, 2, 1
+643, 720, 422, 266, 62, 35, 1, 2, 1
+643, 722, 865, 376, 94, 113, 1, 2, 1
+643, 735, 724, 279, 20, 57, 1, 0, 1
+643, 748, 478, 277, 66, 41, 1, 2, 1
+643, 753, 270, 246, 25, 20, 1, 2, 1
+643, 770, 127, 274, 28, 71, 1, 0, 1
+644, 686, 227, 249, 35, 34, 1, 2, 1
+644, 697, 616, 299, 159, 106, 1, 2, 1
+644, 720, 424, 267, 64, 35, 1, 2, 1
+644, 722, 874, 379, 85, 113, 1, 2, 1
+644, 735, 729, 279, 21, 59, 1, 0, 1
+644, 748, 481, 278, 67, 41, 1, 2, 1
+644, 753, 272, 245, 25, 20, 1, 2, 1
+644, 770, 131, 282, 24, 63, 1, 0, 1
+645, 686, 229, 250, 36, 34, 1, 2, 1
+645, 697, 621, 301, 165, 110, 1, 2, 1
+645, 720, 427, 267, 64, 36, 1, 2, 1
+645, 722, 884, 383, 75, 115, 1, 2, 1
+645, 735, 737, 281, 19, 55, 1, 0, 1
+645, 748, 485, 279, 66, 41, 1, 2, 1
+645, 753, 273, 243, 28, 23, 1, 2, 1
+645, 770, 133, 283, 24, 63, 1, 0, 1
+646, 686, 232, 250, 35, 34, 1, 2, 1
+646, 697, 628, 301, 169, 113, 1, 2, 1
+646, 720, 431, 268, 63, 36, 1, 2, 1
+646, 722, 889, 386, 70, 114, 1, 2, 1
+646, 735, 741, 282, 20, 55, 1, 0, 1
+646, 748, 488, 279, 67, 42, 1, 2, 1
+646, 753, 276, 243, 28, 23, 1, 2, 1
+646, 770, 135, 284, 23, 62, 1, 0, 1
+647, 686, 234, 249, 35, 34, 1, 2, 1
+647, 697, 634, 302, 174, 116, 1, 2, 1
+647, 720, 434, 268, 64, 37, 1, 2, 1
+647, 748, 491, 279, 67, 42, 1, 2, 1
+647, 753, 279, 244, 26, 22, 1, 2, 1
+647, 770, 137, 283, 24, 64, 1, 0, 1
+648, 686, 237, 249, 35, 34, 1, 2, 1
+648, 697, 642, 304, 178, 119, 1, 2, 1
+648, 720, 438, 269, 64, 37, 1, 2, 1
+648, 748, 496, 280, 66, 41, 1, 2, 1
+648, 753, 282, 245, 26, 21, 1, 2, 1
+648, 770, 138, 281, 26, 67, 1, 0, 1
+649, 686, 241, 247, 34, 34, 1, 2, 1
+649, 697, 649, 306, 182, 122, 1, 2, 1
+649, 720, 442, 269, 64, 36, 1, 2, 1
+649, 748, 500, 280, 66, 41, 1, 2, 1
+649, 753, 284, 243, 27, 22, 1, 2, 1
+649, 770, 139, 276, 26, 70, 1, 0, 1
+650, 686, 242, 247, 35, 34, 1, 2, 1
+650, 697, 658, 306, 185, 124, 1, 2, 1
+650, 720, 445, 269, 63, 36, 1, 2, 1
+650, 748, 503, 280, 67, 41, 1, 2, 1
+650, 753, 287, 244, 27, 22, 1, 2, 1
+650, 770, 141, 279, 25, 67, 1, 0, 1
+651, 686, 245, 248, 34, 34, 1, 2, 1
+651, 697, 669, 308, 187, 125, 1, 2, 1
+651, 720, 448, 269, 64, 37, 1, 2, 1
+651, 748, 506, 280, 69, 43, 1, 2, 1
+651, 753, 291, 245, 26, 21, 1, 2, 1
+651, 770, 144, 279, 25, 69, 1, 0, 1
+652, 686, 249, 246, 33, 33, 1, 2, 1
+652, 697, 678, 307, 189, 126, 1, 2, 1
+652, 720, 453, 266, 64, 38, 1, 2, 1
+652, 748, 511, 279, 68, 42, 1, 2, 1
+652, 753, 295, 241, 26, 22, 1, 2, 1
+652, 770, 147, 273, 25, 71, 1, 0, 1
+653, 686, 252, 245, 34, 33, 1, 2, 1
+653, 697, 687, 307, 195, 129, 1, 2, 1
+653, 720, 457, 265, 64, 37, 1, 2, 1
+653, 748, 514, 277, 69, 43, 1, 2, 1
+653, 753, 299, 242, 25, 21, 1, 2, 1
+653, 770, 151, 272, 23, 66, 1, 0, 1
+654, 686, 255, 246, 34, 33, 1, 2, 1
+654, 697, 697, 306, 200, 132, 1, 2, 1
+654, 720, 461, 264, 63, 37, 1, 2, 1
+654, 748, 519, 275, 69, 43, 1, 2, 1
+654, 753, 301, 241, 25, 21, 1, 2, 1
+654, 770, 152, 268, 26, 76, 1, 0, 1
+655, 686, 259, 245, 33, 32, 1, 2, 1
+655, 697, 708, 306, 206, 135, 1, 2, 1
+655, 720, 467, 264, 62, 37, 1, 2, 1
+655, 748, 524, 276, 69, 42, 1, 2, 1
+655, 753, 306, 242, 25, 20, 1, 2, 1
+655, 770, 157, 264, 25, 73, 1, 0, 1
+656, 686, 265, 246, 32, 33, 1, 2, 1
+656, 697, 719, 306, 211, 138, 1, 2, 1
+656, 720, 472, 264, 63, 38, 1, 2, 1
+656, 748, 529, 276, 70, 43, 1, 2, 1
+656, 753, 309, 242, 26, 22, 1, 2, 1
+656, 770, 160, 267, 27, 78, 1, 0, 1
+657, 686, 268, 247, 34, 33, 1, 2, 1
+657, 697, 730, 309, 217, 142, 1, 2, 1
+657, 720, 477, 266, 63, 38, 1, 2, 1
+657, 748, 534, 278, 71, 43, 1, 2, 1
+657, 753, 313, 244, 26, 21, 1, 2, 1
+657, 770, 163, 263, 29, 86, 1, 0, 1
+658, 686, 272, 249, 33, 32, 1, 2, 1
+658, 697, 735, 311, 224, 146, 1, 2, 1
+658, 720, 482, 267, 64, 39, 1, 2, 1
+658, 748, 539, 280, 72, 43, 1, 2, 1
+658, 753, 319, 246, 23, 19, 1, 2, 1
+658, 770, 165, 262, 29, 88, 1, 0, 1
+659, 686, 277, 254, 32, 32, 1, 2, 1
+659, 697, 740, 316, 219, 151, 1, 2, 1
+659, 720, 489, 273, 61, 38, 1, 2, 1
+659, 748, 544, 284, 72, 44, 1, 2, 1
+659, 753, 324, 251, 23, 19, 1, 2, 1
+660, 686, 281, 256, 31, 31, 1, 2, 1
+660, 697, 745, 323, 214, 153, 1, 2, 1
+660, 720, 493, 276, 62, 38, 1, 2, 1
+660, 748, 548, 287, 73, 44, 1, 2, 1
+660, 753, 327, 253, 23, 19, 1, 2, 1
+661, 686, 284, 256, 31, 31, 1, 2, 1
+661, 697, 750, 327, 209, 157, 1, 2, 1
+661, 720, 497, 276, 62, 39, 1, 2, 1
+661, 748, 552, 289, 74, 45, 1, 2, 1
+661, 753, 331, 254, 22, 17, 1, 2, 1
+662, 686, 286, 256, 32, 31, 1, 2, 1
+662, 697, 754, 330, 205, 164, 1, 2, 1
+662, 720, 500, 278, 63, 39, 1, 2, 1
+662, 748, 555, 291, 75, 45, 1, 2, 1
+662, 753, 333, 254, 23, 18, 1, 2, 1
+662, 770, 186, 292, 23, 66, 1, 0, 1
+663, 686, 289, 255, 32, 32, 1, 2, 1
+663, 697, 759, 334, 200, 169, 1, 2, 1
+663, 720, 505, 279, 64, 40, 1, 2, 1
+663, 748, 560, 292, 76, 45, 1, 2, 1
+663, 753, 337, 254, 23, 18, 1, 2, 1
+663, 770, 191, 297, 20, 59, 1, 0, 1
+664, 686, 293, 254, 32, 32, 1, 2, 1
+664, 697, 765, 336, 194, 173, 1, 2, 1
+664, 720, 509, 279, 65, 41, 1, 2, 1
+664, 748, 565, 294, 76, 46, 1, 2, 1
+664, 753, 340, 253, 23, 18, 1, 2, 1
+664, 770, 195, 298, 21, 58, 1, 0, 1
+664, 789, 183, 264, 14, 37, 1, 0, 1
+665, 686, 296, 253, 32, 32, 1, 2, 1
+665, 720, 514, 280, 64, 41, 1, 2, 1
+665, 748, 570, 295, 75, 45, 1, 2, 1
+665, 753, 343, 252, 24, 18, 1, 2, 1
+665, 770, 199, 298, 22, 58, 1, 0, 1
+665, 789, 185, 263, 14, 38, 1, 0, 1
+666, 686, 299, 251, 33, 33, 1, 2, 1
+666, 720, 519, 281, 64, 40, 1, 2, 1
+666, 748, 574, 296, 77, 46, 1, 2, 1
+666, 753, 347, 252, 23, 18, 1, 2, 1
+666, 770, 202, 297, 23, 57, 1, 0, 1
+666, 789, 188, 262, 14, 37, 1, 0, 1
+667, 686, 303, 250, 32, 33, 1, 2, 1
+667, 720, 524, 281, 65, 42, 1, 2, 1
+667, 748, 578, 297, 78, 46, 1, 2, 1
+667, 753, 349, 250, 25, 20, 1, 2, 1
+667, 770, 204, 296, 25, 60, 1, 0, 1
+667, 789, 190, 260, 14, 39, 1, 0, 1
+668, 686, 307, 250, 31, 33, 1, 2, 1
+668, 720, 528, 281, 65, 42, 1, 2, 1
+668, 748, 584, 297, 79, 48, 1, 2, 1
+668, 753, 354, 250, 24, 19, 1, 2, 1
+668, 770, 206, 293, 28, 65, 1, 0, 1
+668, 789, 194, 260, 14, 38, 1, 0, 1
+669, 686, 311, 249, 31, 32, 1, 2, 1
+669, 720, 532, 281, 65, 42, 1, 2, 1
+669, 748, 588, 296, 82, 50, 1, 2, 1
+669, 753, 355, 248, 26, 19, 1, 2, 1
+669, 770, 211, 296, 28, 61, 1, 0, 1
+669, 789, 197, 259, 13, 36, 1, 0, 1
+670, 686, 315, 248, 32, 32, 1, 2, 1
+670, 720, 537, 281, 67, 44, 1, 2, 1
+670, 748, 593, 296, 82, 50, 1, 2, 1
+670, 753, 357, 245, 28, 21, 1, 2, 1
+670, 770, 214, 291, 33, 66, 1, 0, 1
+670, 789, 199, 256, 14, 39, 1, 0, 1
+670, 800, 666, 290, 30, 22, 1, 2, 1
+671, 686, 318, 246, 33, 33, 1, 2, 1
+671, 720, 542, 281, 66, 43, 1, 2, 1
+671, 748, 599, 297, 81, 48, 1, 2, 1
+671, 753, 364, 245, 25, 20, 1, 2, 1
+671, 770, 219, 291, 34, 65, 1, 0, 1
+671, 789, 201, 255, 15, 39, 1, 0, 1
+671, 800, 671, 288, 31, 23, 1, 2, 1
+672, 686, 322, 246, 31, 32, 1, 2, 1
+672, 720, 548, 280, 65, 43, 1, 2, 1
+672, 748, 604, 296, 83, 50, 1, 2, 1
+672, 753, 367, 244, 26, 21, 1, 2, 1
+672, 770, 225, 291, 35, 66, 1, 0, 1
+672, 789, 204, 253, 15, 39, 1, 0, 1
+672, 800, 678, 288, 31, 23, 1, 2, 1
+673, 686, 326, 246, 31, 31, 1, 2, 1
+673, 720, 554, 280, 64, 42, 1, 2, 1
+673, 748, 608, 295, 85, 51, 1, 2, 1
+673, 753, 371, 244, 26, 21, 1, 2, 1
+673, 770, 229, 291, 35, 67, 1, 0, 1
+673, 789, 208, 253, 14, 39, 1, 0, 1
+673, 800, 684, 287, 31, 23, 1, 2, 1
+673, 803, 269, 245, 12, 23, 1, 0, 1
+674, 686, 330, 243, 31, 31, 1, 2, 1
+674, 720, 558, 278, 65, 43, 1, 2, 1
+674, 748, 614, 294, 85, 51, 1, 2, 1
+674, 753, 376, 243, 25, 19, 1, 2, 1
+674, 789, 210, 251, 15, 38, 1, 0, 1
+674, 800, 689, 286, 31, 23, 1, 2, 1
+674, 803, 273, 242, 12, 23, 1, 0, 1
+675, 686, 333, 240, 31, 31, 1, 2, 1
+675, 720, 563, 278, 66, 43, 1, 2, 1
+675, 748, 618, 293, 87, 53, 1, 2, 1
+675, 753, 379, 240, 26, 21, 1, 2, 1
+675, 789, 213, 246, 15, 41, 1, 0, 1
+675, 800, 694, 287, 31, 23, 1, 2, 1
+675, 803, 276, 238, 12, 24, 1, 0, 1
+676, 686, 336, 240, 31, 31, 1, 2, 1
+676, 720, 567, 277, 68, 45, 1, 2, 1
+676, 748, 623, 292, 87, 53, 1, 2, 1
+676, 753, 381, 240, 26, 20, 1, 2, 1
+676, 789, 216, 248, 15, 40, 1, 0, 1
+676, 800, 698, 285, 33, 24, 1, 2, 1
+676, 803, 279, 239, 12, 24, 1, 0, 1
+677, 686, 341, 240, 30, 31, 1, 2, 1
+677, 720, 571, 278, 69, 45, 1, 2, 1
+677, 748, 629, 294, 88, 54, 1, 2, 1
+677, 753, 386, 241, 24, 19, 1, 2, 1
+677, 770, 262, 284, 36, 68, 1, 0, 1
+677, 789, 219, 246, 16, 41, 1, 0, 1
+677, 800, 706, 287, 31, 24, 1, 2, 1
+677, 803, 283, 239, 12, 23, 1, 0, 1
+678, 686, 345, 240, 31, 31, 1, 2, 1
+678, 720, 576, 279, 69, 46, 1, 2, 1
+678, 748, 634, 294, 90, 55, 1, 2, 1
+678, 753, 390, 242, 24, 19, 1, 2, 1
+678, 770, 267, 284, 37, 68, 1, 0, 1
+678, 789, 221, 246, 17, 43, 1, 0, 1
+678, 800, 712, 288, 32, 23, 1, 2, 1
+678, 803, 287, 240, 12, 23, 1, 0, 1
+679, 686, 348, 243, 31, 31, 1, 2, 1
+679, 720, 581, 280, 70, 47, 1, 2, 1
+679, 748, 639, 295, 90, 55, 1, 2, 1
+679, 753, 393, 243, 25, 20, 1, 2, 1
+679, 770, 277, 286, 37, 69, 1, 0, 1
+679, 789, 224, 251, 16, 41, 1, 0, 1
+679, 800, 718, 288, 31, 23, 1, 2, 1
+679, 803, 291, 243, 12, 23, 1, 0, 1
+680, 686, 352, 244, 31, 31, 1, 2, 1
+680, 720, 586, 283, 70, 47, 1, 2, 1
+680, 748, 645, 298, 90, 56, 1, 2, 1
+680, 753, 397, 244, 26, 20, 1, 2, 1
+680, 770, 284, 288, 35, 68, 1, 0, 1
+680, 789, 227, 252, 16, 40, 1, 0, 1
+680, 800, 723, 292, 33, 23, 1, 2, 1
+680, 803, 295, 243, 12, 23, 1, 0, 1
+681, 686, 355, 252, 30, 31, 1, 2, 1
+681, 720, 592, 288, 70, 48, 1, 2, 1
+681, 748, 650, 304, 91, 55, 1, 2, 1
+681, 753, 401, 244, 26, 20, 1, 2, 1
+681, 770, 289, 295, 36, 71, 1, 0, 1
+681, 789, 229, 259, 16, 42, 1, 0, 1
+681, 800, 728, 297, 31, 23, 1, 2, 1
+681, 803, 299, 243, 11, 23, 1, 0, 1
+682, 686, 357, 260, 30, 30, 1, 2, 1
+682, 720, 599, 289, 67, 45, 1, 2, 1
+682, 748, 658, 303, 89, 54, 1, 2, 1
+682, 770, 298, 305, 36, 69, 1, 0, 1
+682, 789, 231, 271, 16, 42, 1, 0, 1
+682, 800, 732, 293, 34, 24, 1, 2, 1
+683, 686, 360, 255, 30, 30, 1, 2, 1
+683, 720, 601, 287, 69, 46, 1, 2, 1
+683, 748, 661, 302, 91, 56, 1, 2, 1
+683, 753, 405, 248, 28, 21, 1, 2, 1
+683, 770, 305, 301, 34, 68, 1, 0, 1
+683, 789, 232, 264, 17, 42, 1, 0, 1
+683, 800, 734, 292, 37, 26, 1, 2, 1
+684, 686, 363, 249, 31, 31, 1, 2, 1
+684, 720, 604, 282, 72, 49, 1, 2, 1
+684, 748, 665, 299, 92, 56, 1, 2, 1
+684, 753, 407, 245, 27, 22, 1, 2, 1
+684, 770, 313, 299, 30, 62, 1, 0, 1
+684, 789, 234, 260, 16, 41, 1, 0, 1
+684, 800, 742, 290, 35, 25, 1, 2, 1
+684, 803, 304, 245, 13, 28, 1, 0, 1
diff --git a/Yolov5-Deepsort/niuzi.mp4 b/Yolov5-Deepsort/niuzi.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..f7ccbc70b3f6fb159dd97fabc2ee7068f29c20bc
--- /dev/null
+++ b/Yolov5-Deepsort/niuzi.mp4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6c29e6dcecff5ad08dcb96ca2a3f24860d2ab420bff194598ed51a674fc41447
+size 5859018
diff --git a/Yolov5-Deepsort/other_method.py b/Yolov5-Deepsort/other_method.py
new file mode 100644
index 0000000000000000000000000000000000000000..63357d519a09e9972d8d6775f240fbed16dc737b
--- /dev/null
+++ b/Yolov5-Deepsort/other_method.py
@@ -0,0 +1,46 @@
+import cv2
+
+# Initialize video capture
+cap = cv2.VideoCapture('mot.mp4')
+
+# Initialize tracker
+tracker = cv2.TrackerCSRT_create()
+
+# Read the first frame
+ret, frame = cap.read()
+if not ret:
+ print("Failed to read video")
+ exit()
+
+# Detect initial bounding box
+bbox = cv2.selectROI(frame, False)
+
+# Initialize tracker with first frame and bounding box
+tracker.init(frame, bbox)
+
+while True:
+ ret, frame = cap.read()
+ if not ret:
+ break
+
+ # Update tracker
+ success, bbox = tracker.update(frame)
+
+ if success:
+ # Draw bounding box
+ p1 = (int(bbox[0]), int(bbox[1]))
+ p2 = (int(bbox[0] + bbox[2]), int(bbox[1] + bbox[3]))
+ cv2.rectangle(frame, p1, p2, (255,0,0), 2, 1)
+ else:
+ # Tracking failure
+ cv2.putText(frame, "Tracking failure detected", (100,80), cv2.FONT_HERSHEY_SIMPLEX, 0.75,(0,0,255),2)
+
+ # Display result
+ cv2.imshow("Tracking", frame)
+
+ # Exit if ESC pressed
+ if cv2.waitKey(1) & 0xFF == 27: # ESC key
+ break
+
+cap.release()
+cv2.destroyAllWindows()
diff --git a/Yolov5-Deepsort/result.mp4 b/Yolov5-Deepsort/result.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..bd0ce22bd6b02a363521a3c2301c5e3c1fddc495
--- /dev/null
+++ b/Yolov5-Deepsort/result.mp4
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:363c4066a0672367bef8be6dfe6c882e709712911776644947d5f9813c9fa016
+size 23811638
diff --git a/Yolov5-Deepsort/su_demo.py b/Yolov5-Deepsort/su_demo.py
new file mode 100644
index 0000000000000000000000000000000000000000..3c5b99ad9265b3f83aa2a0f26980177fde06d1bb
--- /dev/null
+++ b/Yolov5-Deepsort/su_demo.py
@@ -0,0 +1,23 @@
+import cv2
+import rich
+
+if __name__ == '__main__':
+ videoCapture = cv2.VideoCapture('niuzi.mp4')
+
+ # 创建一个窗口,并设置大小
+ cv2.namedWindow('sudemo', cv2.WINDOW_NORMAL)
+ cv2.resizeWindow('sudemo', 800, 600) # 设置窗口的宽度和高度
+
+ while True:
+ ret, frame = videoCapture.read()
+ if not ret:
+ rich.print("播放完毕")
+ break
+ else:
+ cv2.imshow('sudemo', frame)
+
+ if cv2.waitKey(25) & 0xFF == ord('q'):
+ break
+
+ videoCapture.release()
+ cv2.destroyAllWindows()
diff --git a/Yolov5-Deepsort/tracker.py b/Yolov5-Deepsort/tracker.py
new file mode 100644
index 0000000000000000000000000000000000000000..6f91daeed5afad2b6e228c5237d942446495ea67
--- /dev/null
+++ b/Yolov5-Deepsort/tracker.py
@@ -0,0 +1,129 @@
+from deep_sort.utils.parser import get_config
+from deep_sort.deep_sort import DeepSort
+import torch
+import rich
+import os
+import cv2
+
+palette = (2 ** 11 - 1, 2 ** 15 - 1, 2 ** 20 - 1)
+cfg = get_config()
+cfg.merge_from_file("deep_sort/configs/deep_sort.yaml")
+deepsort = DeepSort(cfg.DEEPSORT.REID_CKPT,
+ max_dist=cfg.DEEPSORT.MAX_DIST, min_confidence=cfg.DEEPSORT.MIN_CONFIDENCE,
+ nms_max_overlap=cfg.DEEPSORT.NMS_MAX_OVERLAP, max_iou_distance=cfg.DEEPSORT.MAX_IOU_DISTANCE,
+ max_age=cfg.DEEPSORT.MAX_AGE, n_init=cfg.DEEPSORT.N_INIT, nn_budget=cfg.DEEPSORT.NN_BUDGET,
+ use_cuda=True)
+
+
+def plot_bboxes(image, bboxes, line_thickness=None):
+ # Plots one bounding box on image img
+ tl = line_thickness or round(
+ 0.002 * (image.shape[0] + image.shape[1]) / 2) + 1 # line/font thickness
+ for (x1, y1, x2, y2, cls_id, pos_id) in bboxes:
+ if cls_id in ['person']:
+ color = (0, 0, 255)
+ else:
+ color = (0, 255, 0)
+ c1, c2 = (x1, y1), (x2, y2)
+ cv2.rectangle(image, c1, c2, color, thickness=tl, lineType=cv2.LINE_AA)
+ tf = max(tl - 1, 1) # font thickness
+ t_size = cv2.getTextSize(cls_id, 0, fontScale=tl / 3, thickness=tf)[0]
+ c2 = c1[0] + t_size[0], c1[1] - t_size[1] - 3
+ cv2.rectangle(image, c1, c2, color, -1, cv2.LINE_AA) # filled
+ cv2.putText(image, '{} ID-{}'.format(cls_id, pos_id), (c1[0], c1[1] - 2), 0, tl / 3,
+ [225, 255, 255], thickness=tf, lineType=cv2.LINE_AA)
+
+ return image
+
+
+def update_tracker(target_detector, image, framecounter):
+
+ new_faces = []
+ _, bboxes = target_detector.detect(image)
+
+
+
+ bbox_xywh = []
+ confs = []
+ clss = []
+
+ for x1, y1, x2, y2, cls_id, conf in bboxes:
+
+ obj = [
+ int((x1+x2)/2), int((y1+y2)/2),
+ x2-x1, y2-y1
+ ]
+ bbox_xywh.append(obj)
+ confs.append(conf)
+ clss.append(cls_id)
+
+ xywhs = torch.Tensor(bbox_xywh)
+ confss = torch.Tensor(confs)
+
+ outputs = deepsort.update(xywhs, confss, clss, image)
+ #rich.print("该帧的输出",outputs)
+ transfer_result_to_txt(current_frame=framecounter, current_output=outputs)
+
+ bboxes2draw = []
+ face_bboxes = []
+ current_ids = []
+ for value in list(outputs):
+ x1, y1, x2, y2, cls_, track_id = value
+ bboxes2draw.append(
+ (x1, y1, x2, y2, cls_, track_id)
+ )
+ current_ids.append(track_id)
+ if cls_ == 'face':
+ if not track_id in target_detector.faceTracker:
+ target_detector.faceTracker[track_id] = 0
+ face = image[y1:y2, x1:x2]
+ new_faces.append((face, track_id))
+ face_bboxes.append(
+ (x1, y1, x2, y2)
+ )
+
+ ids2delete = []
+ for history_id in target_detector.faceTracker:
+ if not history_id in current_ids:
+ target_detector.faceTracker[history_id] -= 1
+ if target_detector.faceTracker[history_id] < -5:
+ ids2delete.append(history_id)
+
+ for ids in ids2delete:
+ target_detector.faceTracker.pop(ids)
+ print('-[INFO] Delete track id:', ids)
+
+ image = plot_bboxes(image, bboxes2draw)
+
+ return image, new_faces, face_bboxes
+
+
+
+def transfer_result_to_txt(current_output, current_frame: int):
+ if current_frame == 1:
+ with open("myresult.txt",'w') as file:
+ for det in current_output:
+ x_min, y_min, x_max, y_max, obj_class, obj_id = det
+ width = x_max - x_min
+ height = y_max - y_min
+ conf = 1 # 置信度,通常在ground truth中为1
+ class_id = 1 if obj_class == 'person' else 2 # 假设1代表person, 2代表car
+ visibility = 1 # 假设目标完全可见
+
+ # 写入格式:, , , , , , , ,
+ file.write(f"{current_frame}, {obj_id}, {x_min}, {y_min}, {width}, {height}, {conf}, {class_id}, {visibility}\n")
+ else:
+ with open("myresult.txt",'a') as file:
+ for det in current_output:
+ x_min, y_min, x_max, y_max, obj_class, obj_id = det
+ width = x_max - x_min
+ height = y_max - y_min
+ conf = 1 # 置信度,通常在ground truth中为1
+ class_id = 0 if obj_class == 'person' else 2 # 假设1代表person, 2代表car
+ visibility = 1 # 假设目标完全可见
+
+ # 写入格式:, , , , , , , ,
+ file.write(f"{current_frame}, {obj_id}, {x_min}, {y_min}, {width}, {height}, {conf}, {class_id}, {visibility}\n")
+
+
+
diff --git a/Yolov5-Deepsort/utils/BaseDetector.py b/Yolov5-Deepsort/utils/BaseDetector.py
new file mode 100644
index 0000000000000000000000000000000000000000..1fd77f962e6860a8c708439d9be5059beca12f2f
--- /dev/null
+++ b/Yolov5-Deepsort/utils/BaseDetector.py
@@ -0,0 +1,50 @@
+from tracker import update_tracker
+import cv2
+
+
+class baseDet(object):
+
+ def __init__(self):
+
+ self.img_size = 640
+ self.threshold = 0.3
+ self.stride = 1
+
+ def build_config(self):
+
+ self.faceTracker = {}
+ self.faceClasses = {}
+ self.faceLocation1 = {}
+ self.faceLocation2 = {}
+ self.frameCounter = 0
+ self.currentCarID = 0
+ self.recorded = []
+
+ self.font = cv2.FONT_HERSHEY_SIMPLEX
+
+ def feedCap(self, im):
+
+ retDict = {
+ 'frame': None,
+ 'faces': None,
+ 'list_of_ids': None,
+ 'face_bboxes': []
+ }
+ self.frameCounter += 1
+
+ im, faces, face_bboxes = update_tracker(self, im, self.frameCounter)
+
+ retDict['frame'] = im
+ retDict['faces'] = faces
+ retDict['face_bboxes'] = face_bboxes
+
+ return retDict
+
+ def init_model(self):
+ raise EOFError("Undefined model type.")
+
+ def preprocess(self):
+ raise EOFError("Undefined model type.")
+
+ def detect(self):
+ raise EOFError("Undefined model type.")
diff --git a/Yolov5-Deepsort/utils/__init__.py b/Yolov5-Deepsort/utils/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Yolov5-Deepsort/utils/__pycache__/BaseDetector.cpython-37.pyc b/Yolov5-Deepsort/utils/__pycache__/BaseDetector.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..bc358656fde98374d185612891a20a0249968609
Binary files /dev/null and b/Yolov5-Deepsort/utils/__pycache__/BaseDetector.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/utils/__pycache__/__init__.cpython-37.pyc b/Yolov5-Deepsort/utils/__pycache__/__init__.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f40e7ed3cdb46ff47429e39cfa079be51ce5e0d8
Binary files /dev/null and b/Yolov5-Deepsort/utils/__pycache__/__init__.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/utils/__pycache__/autoanchor.cpython-37.pyc b/Yolov5-Deepsort/utils/__pycache__/autoanchor.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..60478ce1314b5579568a289f05f438bc87cb2121
Binary files /dev/null and b/Yolov5-Deepsort/utils/__pycache__/autoanchor.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/utils/__pycache__/datasets.cpython-37.pyc b/Yolov5-Deepsort/utils/__pycache__/datasets.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..901561371bc12228280871bd309671f106fa2bf7
Binary files /dev/null and b/Yolov5-Deepsort/utils/__pycache__/datasets.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/utils/__pycache__/general.cpython-37.pyc b/Yolov5-Deepsort/utils/__pycache__/general.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..d49c5fd2b444b26d4875393c3e7914a913eb9ff3
Binary files /dev/null and b/Yolov5-Deepsort/utils/__pycache__/general.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/utils/__pycache__/google_utils.cpython-37.pyc b/Yolov5-Deepsort/utils/__pycache__/google_utils.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..b7f35a5a486ffcb4826c2b646beae70f6548d0c5
Binary files /dev/null and b/Yolov5-Deepsort/utils/__pycache__/google_utils.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/utils/__pycache__/metrics.cpython-37.pyc b/Yolov5-Deepsort/utils/__pycache__/metrics.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..2b060f4f65f78749a70028a8dd091954dfac9505
Binary files /dev/null and b/Yolov5-Deepsort/utils/__pycache__/metrics.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/utils/__pycache__/plots.cpython-37.pyc b/Yolov5-Deepsort/utils/__pycache__/plots.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..a9e9a9c1eae1c0807501be0cd6e7ab4cc34bdcb4
Binary files /dev/null and b/Yolov5-Deepsort/utils/__pycache__/plots.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/utils/__pycache__/torch_utils.cpython-37.pyc b/Yolov5-Deepsort/utils/__pycache__/torch_utils.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..f0ee7ba31b9e88317685dde0919154f4d9ec92ac
Binary files /dev/null and b/Yolov5-Deepsort/utils/__pycache__/torch_utils.cpython-37.pyc differ
diff --git a/Yolov5-Deepsort/utils/activations.py b/Yolov5-Deepsort/utils/activations.py
new file mode 100644
index 0000000000000000000000000000000000000000..92a3b5eaa54bcb46464dff900db247b0436e5046
--- /dev/null
+++ b/Yolov5-Deepsort/utils/activations.py
@@ -0,0 +1,98 @@
+# Activation functions
+
+import torch
+import torch.nn as nn
+import torch.nn.functional as F
+
+
+# SiLU https://arxiv.org/pdf/1606.08415.pdf ----------------------------------------------------------------------------
+class SiLU(nn.Module): # export-friendly version of nn.SiLU()
+ @staticmethod
+ def forward(x):
+ return x * torch.sigmoid(x)
+
+
+class Hardswish(nn.Module): # export-friendly version of nn.Hardswish()
+ @staticmethod
+ def forward(x):
+ # return x * F.hardsigmoid(x) # for torchscript and CoreML
+ return x * F.hardtanh(x + 3, 0., 6.) / 6. # for torchscript, CoreML and ONNX
+
+
+# Mish https://github.com/digantamisra98/Mish --------------------------------------------------------------------------
+class Mish(nn.Module):
+ @staticmethod
+ def forward(x):
+ return x * F.softplus(x).tanh()
+
+
+class MemoryEfficientMish(nn.Module):
+ class F(torch.autograd.Function):
+ @staticmethod
+ def forward(ctx, x):
+ ctx.save_for_backward(x)
+ return x.mul(torch.tanh(F.softplus(x))) # x * tanh(ln(1 + exp(x)))
+
+ @staticmethod
+ def backward(ctx, grad_output):
+ x = ctx.saved_tensors[0]
+ sx = torch.sigmoid(x)
+ fx = F.softplus(x).tanh()
+ return grad_output * (fx + x * sx * (1 - fx * fx))
+
+ def forward(self, x):
+ return self.F.apply(x)
+
+
+# FReLU https://arxiv.org/abs/2007.11824 -------------------------------------------------------------------------------
+class FReLU(nn.Module):
+ def __init__(self, c1, k=3): # ch_in, kernel
+ super().__init__()
+ self.conv = nn.Conv2d(c1, c1, k, 1, 1, groups=c1, bias=False)
+ self.bn = nn.BatchNorm2d(c1)
+
+ def forward(self, x):
+ return torch.max(x, self.bn(self.conv(x)))
+
+
+# ACON https://arxiv.org/pdf/2009.04759.pdf ----------------------------------------------------------------------------
+class AconC(nn.Module):
+ r""" ACON activation (activate or not).
+ AconC: (p1*x-p2*x) * sigmoid(beta*(p1*x-p2*x)) + p2*x, beta is a learnable parameter
+ according to "Activate or Not: Learning Customized Activation" .
+ """
+
+ def __init__(self, c1):
+ super().__init__()
+ self.p1 = nn.Parameter(torch.randn(1, c1, 1, 1))
+ self.p2 = nn.Parameter(torch.randn(1, c1, 1, 1))
+ self.beta = nn.Parameter(torch.ones(1, c1, 1, 1))
+
+ def forward(self, x):
+ dpx = (self.p1 - self.p2) * x
+ return dpx * torch.sigmoid(self.beta * dpx) + self.p2 * x
+
+
+class MetaAconC(nn.Module):
+ r""" ACON activation (activate or not).
+ MetaAconC: (p1*x-p2*x) * sigmoid(beta*(p1*x-p2*x)) + p2*x, beta is generated by a small network
+ according to "Activate or Not: Learning Customized Activation" .
+ """
+
+ def __init__(self, c1, k=1, s=1, r=16): # ch_in, kernel, stride, r
+ super().__init__()
+ c2 = max(r, c1 // r)
+ self.p1 = nn.Parameter(torch.randn(1, c1, 1, 1))
+ self.p2 = nn.Parameter(torch.randn(1, c1, 1, 1))
+ self.fc1 = nn.Conv2d(c1, c2, k, s, bias=True)
+ self.fc2 = nn.Conv2d(c2, c1, k, s, bias=True)
+ # self.bn1 = nn.BatchNorm2d(c2)
+ # self.bn2 = nn.BatchNorm2d(c1)
+
+ def forward(self, x):
+ y = x.mean(dim=2, keepdims=True).mean(dim=3, keepdims=True)
+ # batch-size 1 bug/instabilities https://github.com/ultralytics/yolov5/issues/2891
+ # beta = torch.sigmoid(self.bn2(self.fc2(self.bn1(self.fc1(y))))) # bug/unstable
+ beta = torch.sigmoid(self.fc2(self.fc1(y))) # bug patch BN layers removed
+ dpx = (self.p1 - self.p2) * x
+ return dpx * torch.sigmoid(beta * dpx) + self.p2 * x
diff --git a/Yolov5-Deepsort/utils/autoanchor.py b/Yolov5-Deepsort/utils/autoanchor.py
new file mode 100644
index 0000000000000000000000000000000000000000..87dc394c832e628a0b1c7b39aeb1e7c6584c63b3
--- /dev/null
+++ b/Yolov5-Deepsort/utils/autoanchor.py
@@ -0,0 +1,161 @@
+# Auto-anchor utils
+
+import numpy as np
+import torch
+import yaml
+from tqdm import tqdm
+
+from utils.general import colorstr
+
+
+def check_anchor_order(m):
+ # Check anchor order against stride order for YOLOv5 Detect() module m, and correct if necessary
+ a = m.anchor_grid.prod(-1).view(-1) # anchor area
+ da = a[-1] - a[0] # delta a
+ ds = m.stride[-1] - m.stride[0] # delta s
+ if da.sign() != ds.sign(): # same order
+ print('Reversing anchor order')
+ m.anchors[:] = m.anchors.flip(0)
+ m.anchor_grid[:] = m.anchor_grid.flip(0)
+
+
+def check_anchors(dataset, model, thr=4.0, imgsz=640):
+ # Check anchor fit to data, recompute if necessary
+ prefix = colorstr('autoanchor: ')
+ print(f'\n{prefix}Analyzing anchors... ', end='')
+ m = model.module.model[-1] if hasattr(model, 'module') else model.model[-1] # Detect()
+ shapes = imgsz * dataset.shapes / dataset.shapes.max(1, keepdims=True)
+ scale = np.random.uniform(0.9, 1.1, size=(shapes.shape[0], 1)) # augment scale
+ wh = torch.tensor(np.concatenate([l[:, 3:5] * s for s, l in zip(shapes * scale, dataset.labels)])).float() # wh
+
+ def metric(k): # compute metric
+ r = wh[:, None] / k[None]
+ x = torch.min(r, 1. / r).min(2)[0] # ratio metric
+ best = x.max(1)[0] # best_x
+ aat = (x > 1. / thr).float().sum(1).mean() # anchors above threshold
+ bpr = (best > 1. / thr).float().mean() # best possible recall
+ return bpr, aat
+
+ anchors = m.anchor_grid.clone().cpu().view(-1, 2) # current anchors
+ bpr, aat = metric(anchors)
+ print(f'anchors/target = {aat:.2f}, Best Possible Recall (BPR) = {bpr:.4f}', end='')
+ if bpr < 0.98: # threshold to recompute
+ print('. Attempting to improve anchors, please wait...')
+ na = m.anchor_grid.numel() // 2 # number of anchors
+ try:
+ anchors = kmean_anchors(dataset, n=na, img_size=imgsz, thr=thr, gen=1000, verbose=False)
+ except Exception as e:
+ print(f'{prefix}ERROR: {e}')
+ new_bpr = metric(anchors)[0]
+ if new_bpr > bpr: # replace anchors
+ anchors = torch.tensor(anchors, device=m.anchors.device).type_as(m.anchors)
+ m.anchor_grid[:] = anchors.clone().view_as(m.anchor_grid) # for inference
+ m.anchors[:] = anchors.clone().view_as(m.anchors) / m.stride.to(m.anchors.device).view(-1, 1, 1) # loss
+ check_anchor_order(m)
+ print(f'{prefix}New anchors saved to model. Update model *.yaml to use these anchors in the future.')
+ else:
+ print(f'{prefix}Original anchors better than new anchors. Proceeding with original anchors.')
+ print('') # newline
+
+
+def kmean_anchors(path='./data/coco128.yaml', n=9, img_size=640, thr=4.0, gen=1000, verbose=True):
+ """ Creates kmeans-evolved anchors from training dataset
+
+ Arguments:
+ path: path to dataset *.yaml, or a loaded dataset
+ n: number of anchors
+ img_size: image size used for training
+ thr: anchor-label wh ratio threshold hyperparameter hyp['anchor_t'] used for training, default=4.0
+ gen: generations to evolve anchors using genetic algorithm
+ verbose: print all results
+
+ Return:
+ k: kmeans evolved anchors
+
+ Usage:
+ from utils.autoanchor import *; _ = kmean_anchors()
+ """
+ from scipy.cluster.vq import kmeans
+
+ thr = 1. / thr
+ prefix = colorstr('autoanchor: ')
+
+ def metric(k, wh): # compute metrics
+ r = wh[:, None] / k[None]
+ x = torch.min(r, 1. / r).min(2)[0] # ratio metric
+ # x = wh_iou(wh, torch.tensor(k)) # iou metric
+ return x, x.max(1)[0] # x, best_x
+
+ def anchor_fitness(k): # mutation fitness
+ _, best = metric(torch.tensor(k, dtype=torch.float32), wh)
+ return (best * (best > thr).float()).mean() # fitness
+
+ def print_results(k):
+ k = k[np.argsort(k.prod(1))] # sort small to large
+ x, best = metric(k, wh0)
+ bpr, aat = (best > thr).float().mean(), (x > thr).float().mean() * n # best possible recall, anch > thr
+ print(f'{prefix}thr={thr:.2f}: {bpr:.4f} best possible recall, {aat:.2f} anchors past thr')
+ print(f'{prefix}n={n}, img_size={img_size}, metric_all={x.mean():.3f}/{best.mean():.3f}-mean/best, '
+ f'past_thr={x[x > thr].mean():.3f}-mean: ', end='')
+ for i, x in enumerate(k):
+ print('%i,%i' % (round(x[0]), round(x[1])), end=', ' if i < len(k) - 1 else '\n') # use in *.cfg
+ return k
+
+ if isinstance(path, str): # *.yaml file
+ with open(path) as f:
+ data_dict = yaml.safe_load(f) # model dict
+ from utils.datasets import LoadImagesAndLabels
+ dataset = LoadImagesAndLabels(data_dict['train'], augment=True, rect=True)
+ else:
+ dataset = path # dataset
+
+ # Get label wh
+ shapes = img_size * dataset.shapes / dataset.shapes.max(1, keepdims=True)
+ wh0 = np.concatenate([l[:, 3:5] * s for s, l in zip(shapes, dataset.labels)]) # wh
+
+ # Filter
+ i = (wh0 < 3.0).any(1).sum()
+ if i:
+ print(f'{prefix}WARNING: Extremely small objects found. {i} of {len(wh0)} labels are < 3 pixels in size.')
+ wh = wh0[(wh0 >= 2.0).any(1)] # filter > 2 pixels
+ # wh = wh * (np.random.rand(wh.shape[0], 1) * 0.9 + 0.1) # multiply by random scale 0-1
+
+ # Kmeans calculation
+ print(f'{prefix}Running kmeans for {n} anchors on {len(wh)} points...')
+ s = wh.std(0) # sigmas for whitening
+ k, dist = kmeans(wh / s, n, iter=30) # points, mean distance
+ assert len(k) == n, print(f'{prefix}ERROR: scipy.cluster.vq.kmeans requested {n} points but returned only {len(k)}')
+ k *= s
+ wh = torch.tensor(wh, dtype=torch.float32) # filtered
+ wh0 = torch.tensor(wh0, dtype=torch.float32) # unfiltered
+ k = print_results(k)
+
+ # Plot
+ # k, d = [None] * 20, [None] * 20
+ # for i in tqdm(range(1, 21)):
+ # k[i-1], d[i-1] = kmeans(wh / s, i) # points, mean distance
+ # fig, ax = plt.subplots(1, 2, figsize=(14, 7), tight_layout=True)
+ # ax = ax.ravel()
+ # ax[0].plot(np.arange(1, 21), np.array(d) ** 2, marker='.')
+ # fig, ax = plt.subplots(1, 2, figsize=(14, 7)) # plot wh
+ # ax[0].hist(wh[wh[:, 0]<100, 0],400)
+ # ax[1].hist(wh[wh[:, 1]<100, 1],400)
+ # fig.savefig('wh.png', dpi=200)
+
+ # Evolve
+ npr = np.random
+ f, sh, mp, s = anchor_fitness(k), k.shape, 0.9, 0.1 # fitness, generations, mutation prob, sigma
+ pbar = tqdm(range(gen), desc=f'{prefix}Evolving anchors with Genetic Algorithm:') # progress bar
+ for _ in pbar:
+ v = np.ones(sh)
+ while (v == 1).all(): # mutate until a change occurs (prevent duplicates)
+ v = ((npr.random(sh) < mp) * npr.random() * npr.randn(*sh) * s + 1).clip(0.3, 3.0)
+ kg = (k.copy() * v).clip(min=2.0)
+ fg = anchor_fitness(kg)
+ if fg > f:
+ f, k = fg, kg.copy()
+ pbar.desc = f'{prefix}Evolving anchors with Genetic Algorithm: fitness = {f:.4f}'
+ if verbose:
+ print_results(k)
+
+ return print_results(k)
diff --git a/Yolov5-Deepsort/utils/aws/__init__.py b/Yolov5-Deepsort/utils/aws/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Yolov5-Deepsort/utils/aws/mime.sh b/Yolov5-Deepsort/utils/aws/mime.sh
new file mode 100644
index 0000000000000000000000000000000000000000..c319a83cfbdf09bea634c3bd9fca737c0b1dd505
--- /dev/null
+++ b/Yolov5-Deepsort/utils/aws/mime.sh
@@ -0,0 +1,26 @@
+# AWS EC2 instance startup 'MIME' script https://aws.amazon.com/premiumsupport/knowledge-center/execute-user-data-ec2/
+# This script will run on every instance restart, not only on first start
+# --- DO NOT COPY ABOVE COMMENTS WHEN PASTING INTO USERDATA ---
+
+Content-Type: multipart/mixed; boundary="//"
+MIME-Version: 1.0
+
+--//
+Content-Type: text/cloud-config; charset="us-ascii"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Content-Disposition: attachment; filename="cloud-config.txt"
+
+#cloud-config
+cloud_final_modules:
+- [scripts-user, always]
+
+--//
+Content-Type: text/x-shellscript; charset="us-ascii"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+Content-Disposition: attachment; filename="userdata.txt"
+
+#!/bin/bash
+# --- paste contents of userdata.sh here ---
+--//
diff --git a/Yolov5-Deepsort/utils/aws/resume.py b/Yolov5-Deepsort/utils/aws/resume.py
new file mode 100644
index 0000000000000000000000000000000000000000..4b0d4246b594acddbecf065956fc8729bb96ec36
--- /dev/null
+++ b/Yolov5-Deepsort/utils/aws/resume.py
@@ -0,0 +1,37 @@
+# Resume all interrupted trainings in yolov5/ dir including DDP trainings
+# Usage: $ python utils/aws/resume.py
+
+import os
+import sys
+from pathlib import Path
+
+import torch
+import yaml
+
+sys.path.append('./') # to run '$ python *.py' files in subdirectories
+
+port = 0 # --master_port
+path = Path('').resolve()
+for last in path.rglob('*/**/last.pt'):
+ ckpt = torch.load(last)
+ if ckpt['optimizer'] is None:
+ continue
+
+ # Load opt.yaml
+ with open(last.parent.parent / 'opt.yaml') as f:
+ opt = yaml.safe_load(f)
+
+ # Get device count
+ d = opt['device'].split(',') # devices
+ nd = len(d) # number of devices
+ ddp = nd > 1 or (nd == 0 and torch.cuda.device_count() > 1) # distributed data parallel
+
+ if ddp: # multi-GPU
+ port += 1
+ cmd = f'python -m torch.distributed.launch --nproc_per_node {nd} --master_port {port} train.py --resume {last}'
+ else: # single-GPU
+ cmd = f'python train.py --resume {last}'
+
+ cmd += ' > /dev/null 2>&1 &' # redirect output to dev/null and run in daemon thread
+ print(cmd)
+ os.system(cmd)
diff --git a/Yolov5-Deepsort/utils/aws/userdata.sh b/Yolov5-Deepsort/utils/aws/userdata.sh
new file mode 100644
index 0000000000000000000000000000000000000000..5846fedb16f971c194c80ff533bc8c237de6815c
--- /dev/null
+++ b/Yolov5-Deepsort/utils/aws/userdata.sh
@@ -0,0 +1,27 @@
+#!/bin/bash
+# AWS EC2 instance startup script https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html
+# This script will run only once on first instance start (for a re-start script see mime.sh)
+# /home/ubuntu (ubuntu) or /home/ec2-user (amazon-linux) is working dir
+# Use >300 GB SSD
+
+cd home/ubuntu
+if [ ! -d yolov5 ]; then
+ echo "Running first-time script." # install dependencies, download COCO, pull Docker
+ git clone https://github.com/ultralytics/yolov5 -b master && sudo chmod -R 777 yolov5
+ cd yolov5
+ bash data/scripts/get_coco.sh && echo "Data done." &
+ sudo docker pull ultralytics/yolov5:latest && echo "Docker done." &
+ python -m pip install --upgrade pip && pip install -r requirements.txt && python detect.py && echo "Requirements done." &
+ wait && echo "All tasks done." # finish background tasks
+else
+ echo "Running re-start script." # resume interrupted runs
+ i=0
+ list=$(sudo docker ps -qa) # container list i.e. $'one\ntwo\nthree\nfour'
+ while IFS= read -r id; do
+ ((i++))
+ echo "restarting container $i: $id"
+ sudo docker start $id
+ # sudo docker exec -it $id python train.py --resume # single-GPU
+ sudo docker exec -d $id python utils/aws/resume.py # multi-scenario
+ done <<<"$list"
+fi
diff --git a/Yolov5-Deepsort/utils/datasets.py b/Yolov5-Deepsort/utils/datasets.py
new file mode 100644
index 0000000000000000000000000000000000000000..36416b14e1387a3e3b6b30acf6254bb727d96ced
--- /dev/null
+++ b/Yolov5-Deepsort/utils/datasets.py
@@ -0,0 +1,1067 @@
+# Dataset utils and dataloaders
+
+import glob
+import logging
+import math
+import os
+import random
+import shutil
+import time
+from itertools import repeat
+from multiprocessing.pool import ThreadPool
+from pathlib import Path
+from threading import Thread
+
+import cv2
+import numpy as np
+import torch
+import torch.nn.functional as F
+from PIL import Image, ExifTags
+from torch.utils.data import Dataset
+from tqdm import tqdm
+
+from utils.general import check_requirements, xyxy2xywh, xywh2xyxy, xywhn2xyxy, xyn2xy, segment2box, segments2boxes, \
+ resample_segments, clean_str
+from utils.torch_utils import torch_distributed_zero_first
+
+# Parameters
+help_url = 'https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data'
+img_formats = ['bmp', 'jpg', 'jpeg', 'png', 'tif', 'tiff', 'dng', 'webp', 'mpo'] # acceptable image suffixes
+vid_formats = ['mov', 'avi', 'mp4', 'mpg', 'mpeg', 'm4v', 'wmv', 'mkv'] # acceptable video suffixes
+logger = logging.getLogger(__name__)
+
+# Get orientation exif tag
+for orientation in ExifTags.TAGS.keys():
+ if ExifTags.TAGS[orientation] == 'Orientation':
+ break
+
+
+def get_hash(files):
+ # Returns a single hash value of a list of files
+ return sum(os.path.getsize(f) for f in files if os.path.isfile(f))
+
+
+def exif_size(img):
+ # Returns exif-corrected PIL size
+ s = img.size # (width, height)
+ try:
+ rotation = dict(img._getexif().items())[orientation]
+ if rotation == 6: # rotation 270
+ s = (s[1], s[0])
+ elif rotation == 8: # rotation 90
+ s = (s[1], s[0])
+ except:
+ pass
+
+ return s
+
+
+def create_dataloader(path, imgsz, batch_size, stride, opt, hyp=None, augment=False, cache=False, pad=0.0, rect=False,
+ rank=-1, world_size=1, workers=8, image_weights=False, quad=False, prefix=''):
+ # Make sure only the first process in DDP process the dataset first, and the following others can use the cache
+ with torch_distributed_zero_first(rank):
+ dataset = LoadImagesAndLabels(path, imgsz, batch_size,
+ augment=augment, # augment images
+ hyp=hyp, # augmentation hyperparameters
+ rect=rect, # rectangular training
+ cache_images=cache,
+ single_cls=opt.single_cls,
+ stride=int(stride),
+ pad=pad,
+ image_weights=image_weights,
+ prefix=prefix)
+
+ batch_size = min(batch_size, len(dataset))
+ nw = min([os.cpu_count() // world_size, batch_size if batch_size > 1 else 0, workers]) # number of workers
+ sampler = torch.utils.data.distributed.DistributedSampler(dataset) if rank != -1 else None
+ loader = torch.utils.data.DataLoader if image_weights else InfiniteDataLoader
+ # Use torch.utils.data.DataLoader() if dataset.properties will update during training else InfiniteDataLoader()
+ dataloader = loader(dataset,
+ batch_size=batch_size,
+ num_workers=nw,
+ sampler=sampler,
+ pin_memory=True,
+ collate_fn=LoadImagesAndLabels.collate_fn4 if quad else LoadImagesAndLabels.collate_fn)
+ return dataloader, dataset
+
+
+class InfiniteDataLoader(torch.utils.data.dataloader.DataLoader):
+ """ Dataloader that reuses workers
+
+ Uses same syntax as vanilla DataLoader
+ """
+
+ def __init__(self, *args, **kwargs):
+ super().__init__(*args, **kwargs)
+ object.__setattr__(self, 'batch_sampler', _RepeatSampler(self.batch_sampler))
+ self.iterator = super().__iter__()
+
+ def __len__(self):
+ return len(self.batch_sampler.sampler)
+
+ def __iter__(self):
+ for i in range(len(self)):
+ yield next(self.iterator)
+
+
+class _RepeatSampler(object):
+ """ Sampler that repeats forever
+
+ Args:
+ sampler (Sampler)
+ """
+
+ def __init__(self, sampler):
+ self.sampler = sampler
+
+ def __iter__(self):
+ while True:
+ yield from iter(self.sampler)
+
+
+class LoadImages: # for inference
+ def __init__(self, path, img_size=640, stride=32):
+ p = str(Path(path).absolute()) # os-agnostic absolute path
+ if '*' in p:
+ files = sorted(glob.glob(p, recursive=True)) # glob
+ elif os.path.isdir(p):
+ files = sorted(glob.glob(os.path.join(p, '*.*'))) # dir
+ elif os.path.isfile(p):
+ files = [p] # files
+ else:
+ raise Exception(f'ERROR: {p} does not exist')
+
+ images = [x for x in files if x.split('.')[-1].lower() in img_formats]
+ videos = [x for x in files if x.split('.')[-1].lower() in vid_formats]
+ ni, nv = len(images), len(videos)
+
+ self.img_size = img_size
+ self.stride = stride
+ self.files = images + videos
+ self.nf = ni + nv # number of files
+ self.video_flag = [False] * ni + [True] * nv
+ self.mode = 'image'
+ if any(videos):
+ self.new_video(videos[0]) # new video
+ else:
+ self.cap = None
+ assert self.nf > 0, f'No images or videos found in {p}. ' \
+ f'Supported formats are:\nimages: {img_formats}\nvideos: {vid_formats}'
+
+ def __iter__(self):
+ self.count = 0
+ return self
+
+ def __next__(self):
+ if self.count == self.nf:
+ raise StopIteration
+ path = self.files[self.count]
+
+ if self.video_flag[self.count]:
+ # Read video
+ self.mode = 'video'
+ ret_val, img0 = self.cap.read()
+ if not ret_val:
+ self.count += 1
+ self.cap.release()
+ if self.count == self.nf: # last video
+ raise StopIteration
+ else:
+ path = self.files[self.count]
+ self.new_video(path)
+ ret_val, img0 = self.cap.read()
+
+ self.frame += 1
+ print(f'video {self.count + 1}/{self.nf} ({self.frame}/{self.frames}) {path}: ', end='')
+
+ else:
+ # Read image
+ self.count += 1
+ img0 = cv2.imread(path) # BGR
+ assert img0 is not None, 'Image Not Found ' + path
+ print(f'image {self.count}/{self.nf} {path}: ', end='')
+
+ # Padded resize
+ img = letterbox(img0, self.img_size, stride=self.stride)[0]
+
+ # Convert
+ img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416
+ img = np.ascontiguousarray(img)
+
+ return path, img, img0, self.cap
+
+ def new_video(self, path):
+ self.frame = 0
+ self.cap = cv2.VideoCapture(path)
+ self.frames = int(self.cap.get(cv2.CAP_PROP_FRAME_COUNT))
+
+ def __len__(self):
+ return self.nf # number of files
+
+
+class LoadWebcam: # for inference
+ def __init__(self, pipe='0', img_size=640, stride=32):
+ self.img_size = img_size
+ self.stride = stride
+
+ if pipe.isnumeric():
+ pipe = eval(pipe) # local camera
+ # pipe = 'rtsp://192.168.1.64/1' # IP camera
+ # pipe = 'rtsp://username:password@192.168.1.64/1' # IP camera with login
+ # pipe = 'http://wmccpinetop.axiscam.net/mjpg/video.mjpg' # IP golf camera
+
+ self.pipe = pipe
+ self.cap = cv2.VideoCapture(pipe) # video capture object
+ self.cap.set(cv2.CAP_PROP_BUFFERSIZE, 3) # set buffer size
+
+ def __iter__(self):
+ self.count = -1
+ return self
+
+ def __next__(self):
+ self.count += 1
+ if cv2.waitKey(1) == ord('q'): # q to quit
+ self.cap.release()
+ cv2.destroyAllWindows()
+ raise StopIteration
+
+ # Read frame
+ if self.pipe == 0: # local camera
+ ret_val, img0 = self.cap.read()
+ img0 = cv2.flip(img0, 1) # flip left-right
+ else: # IP camera
+ n = 0
+ while True:
+ n += 1
+ self.cap.grab()
+ if n % 30 == 0: # skip frames
+ ret_val, img0 = self.cap.retrieve()
+ if ret_val:
+ break
+
+ # Print
+ assert ret_val, f'Camera Error {self.pipe}'
+ img_path = 'webcam.jpg'
+ print(f'webcam {self.count}: ', end='')
+
+ # Padded resize
+ img = letterbox(img0, self.img_size, stride=self.stride)[0]
+
+ # Convert
+ img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416
+ img = np.ascontiguousarray(img)
+
+ return img_path, img, img0, None
+
+ def __len__(self):
+ return 0
+
+
+class LoadStreams: # multiple IP or RTSP cameras
+ def __init__(self, sources='streams.txt', img_size=640, stride=32):
+ self.mode = 'stream'
+ self.img_size = img_size
+ self.stride = stride
+
+ if os.path.isfile(sources):
+ with open(sources, 'r') as f:
+ sources = [x.strip() for x in f.read().strip().splitlines() if len(x.strip())]
+ else:
+ sources = [sources]
+
+ n = len(sources)
+ self.imgs, self.fps, self.frames, self.threads = [None] * n, [0] * n, [0] * n, [None] * n
+ self.sources = [clean_str(x) for x in sources] # clean source names for later
+ for i, s in enumerate(sources): # index, source
+ # Start thread to read frames from video stream
+ print(f'{i + 1}/{n}: {s}... ', end='')
+ if 'youtube.com/' in s or 'youtu.be/' in s: # if source is YouTube video
+ check_requirements(('pafy', 'youtube_dl'))
+ import pafy
+ s = pafy.new(s).getbest(preftype="mp4").url # YouTube URL
+ s = eval(s) if s.isnumeric() else s # i.e. s = '0' local webcam
+ cap = cv2.VideoCapture(s)
+ assert cap.isOpened(), f'Failed to open {s}'
+ w = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
+ h = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
+ self.fps[i] = max(cap.get(cv2.CAP_PROP_FPS) % 100, 0) or 30.0 # 30 FPS fallback
+ self.frames[i] = max(int(cap.get(cv2.CAP_PROP_FRAME_COUNT)), 0) or float('inf') # infinite stream fallback
+
+ _, self.imgs[i] = cap.read() # guarantee first frame
+ self.threads[i] = Thread(target=self.update, args=([i, cap]), daemon=True)
+ print(f" success ({self.frames[i]} frames {w}x{h} at {self.fps[i]:.2f} FPS)")
+ self.threads[i].start()
+ print('') # newline
+
+ # check for common shapes
+ s = np.stack([letterbox(x, self.img_size, stride=self.stride)[0].shape for x in self.imgs], 0) # shapes
+ self.rect = np.unique(s, axis=0).shape[0] == 1 # rect inference if all shapes equal
+ if not self.rect:
+ print('WARNING: Different stream shapes detected. For optimal performance supply similarly-shaped streams.')
+
+ def update(self, i, cap):
+ # Read stream `i` frames in daemon thread
+ n, f = 0, self.frames[i]
+ while cap.isOpened() and n < f:
+ n += 1
+ # _, self.imgs[index] = cap.read()
+ cap.grab()
+ if n % 4: # read every 4th frame
+ success, im = cap.retrieve()
+ self.imgs[i] = im if success else self.imgs[i] * 0
+ time.sleep(1 / self.fps[i]) # wait time
+
+ def __iter__(self):
+ self.count = -1
+ return self
+
+ def __next__(self):
+ self.count += 1
+ if not all(x.is_alive() for x in self.threads) or cv2.waitKey(1) == ord('q'): # q to quit
+ cv2.destroyAllWindows()
+ raise StopIteration
+
+ # Letterbox
+ img0 = self.imgs.copy()
+ img = [letterbox(x, self.img_size, auto=self.rect, stride=self.stride)[0] for x in img0]
+
+ # Stack
+ img = np.stack(img, 0)
+
+ # Convert
+ img = img[:, :, :, ::-1].transpose(0, 3, 1, 2) # BGR to RGB, to bsx3x416x416
+ img = np.ascontiguousarray(img)
+
+ return self.sources, img, img0, None
+
+ def __len__(self):
+ return 0 # 1E12 frames = 32 streams at 30 FPS for 30 years
+
+
+def img2label_paths(img_paths):
+ # Define label paths as a function of image paths
+ sa, sb = os.sep + 'images' + os.sep, os.sep + 'labels' + os.sep # /images/, /labels/ substrings
+ return ['txt'.join(x.replace(sa, sb, 1).rsplit(x.split('.')[-1], 1)) for x in img_paths]
+
+
+class LoadImagesAndLabels(Dataset): # for training/testing
+ def __init__(self, path, img_size=640, batch_size=16, augment=False, hyp=None, rect=False, image_weights=False,
+ cache_images=False, single_cls=False, stride=32, pad=0.0, prefix=''):
+ self.img_size = img_size
+ self.augment = augment
+ self.hyp = hyp
+ self.image_weights = image_weights
+ self.rect = False if image_weights else rect
+ self.mosaic = self.augment and not self.rect # load 4 images at a time into a mosaic (only during training)
+ self.mosaic_border = [-img_size // 2, -img_size // 2]
+ self.stride = stride
+ self.path = path
+
+ try:
+ f = [] # image files
+ for p in path if isinstance(path, list) else [path]:
+ p = Path(p) # os-agnostic
+ if p.is_dir(): # dir
+ f += glob.glob(str(p / '**' / '*.*'), recursive=True)
+ # f = list(p.rglob('**/*.*')) # pathlib
+ elif p.is_file(): # file
+ with open(p, 'r') as t:
+ t = t.read().strip().splitlines()
+ parent = str(p.parent) + os.sep
+ f += [x.replace('./', parent) if x.startswith('./') else x for x in t] # local to global path
+ # f += [p.parent / x.lstrip(os.sep) for x in t] # local to global path (pathlib)
+ else:
+ raise Exception(f'{prefix}{p} does not exist')
+ self.img_files = sorted([x.replace('/', os.sep) for x in f if x.split('.')[-1].lower() in img_formats])
+ # self.img_files = sorted([x for x in f if x.suffix[1:].lower() in img_formats]) # pathlib
+ assert self.img_files, f'{prefix}No images found'
+ except Exception as e:
+ raise Exception(f'{prefix}Error loading data from {path}: {e}\nSee {help_url}')
+
+ # Check cache
+ self.label_files = img2label_paths(self.img_files) # labels
+ cache_path = (p if p.is_file() else Path(self.label_files[0]).parent).with_suffix('.cache') # cached labels
+ if cache_path.is_file():
+ cache, exists = torch.load(cache_path), True # load
+ if cache['hash'] != get_hash(self.label_files + self.img_files) or 'version' not in cache: # changed
+ cache, exists = self.cache_labels(cache_path, prefix), False # re-cache
+ else:
+ cache, exists = self.cache_labels(cache_path, prefix), False # cache
+
+ # Display cache
+ nf, nm, ne, nc, n = cache.pop('results') # found, missing, empty, corrupted, total
+ if exists:
+ d = f"Scanning '{cache_path}' images and labels... {nf} found, {nm} missing, {ne} empty, {nc} corrupted"
+ tqdm(None, desc=prefix + d, total=n, initial=n) # display cache results
+ assert nf > 0 or not augment, f'{prefix}No labels in {cache_path}. Can not train without labels. See {help_url}'
+
+ # Read cache
+ cache.pop('hash') # remove hash
+ cache.pop('version') # remove version
+ labels, shapes, self.segments = zip(*cache.values())
+ self.labels = list(labels)
+ self.shapes = np.array(shapes, dtype=np.float64)
+ self.img_files = list(cache.keys()) # update
+ self.label_files = img2label_paths(cache.keys()) # update
+ if single_cls:
+ for x in self.labels:
+ x[:, 0] = 0
+
+ n = len(shapes) # number of images
+ bi = np.floor(np.arange(n) / batch_size).astype(np.int) # batch index
+ nb = bi[-1] + 1 # number of batches
+ self.batch = bi # batch index of image
+ self.n = n
+ self.indices = range(n)
+
+ # Rectangular Training
+ if self.rect:
+ # Sort by aspect ratio
+ s = self.shapes # wh
+ ar = s[:, 1] / s[:, 0] # aspect ratio
+ irect = ar.argsort()
+ self.img_files = [self.img_files[i] for i in irect]
+ self.label_files = [self.label_files[i] for i in irect]
+ self.labels = [self.labels[i] for i in irect]
+ self.shapes = s[irect] # wh
+ ar = ar[irect]
+
+ # Set training image shapes
+ shapes = [[1, 1]] * nb
+ for i in range(nb):
+ ari = ar[bi == i]
+ mini, maxi = ari.min(), ari.max()
+ if maxi < 1:
+ shapes[i] = [maxi, 1]
+ elif mini > 1:
+ shapes[i] = [1, 1 / mini]
+
+ self.batch_shapes = np.ceil(np.array(shapes) * img_size / stride + pad).astype(np.int) * stride
+
+ # Cache images into memory for faster training (WARNING: large datasets may exceed system RAM)
+ self.imgs = [None] * n
+ if cache_images:
+ gb = 0 # Gigabytes of cached images
+ self.img_hw0, self.img_hw = [None] * n, [None] * n
+ results = ThreadPool(8).imap(lambda x: load_image(*x), zip(repeat(self), range(n))) # 8 threads
+ pbar = tqdm(enumerate(results), total=n)
+ for i, x in pbar:
+ self.imgs[i], self.img_hw0[i], self.img_hw[i] = x # img, hw_original, hw_resized = load_image(self, i)
+ gb += self.imgs[i].nbytes
+ pbar.desc = f'{prefix}Caching images ({gb / 1E9:.1f}GB)'
+ pbar.close()
+
+ def cache_labels(self, path=Path('./labels.cache'), prefix=''):
+ # Cache dataset labels, check images and read shapes
+ x = {} # dict
+ nm, nf, ne, nc = 0, 0, 0, 0 # number missing, found, empty, duplicate
+ pbar = tqdm(zip(self.img_files, self.label_files), desc='Scanning images', total=len(self.img_files))
+ for i, (im_file, lb_file) in enumerate(pbar):
+ try:
+ # verify images
+ im = Image.open(im_file)
+ im.verify() # PIL verify
+ shape = exif_size(im) # image size
+ segments = [] # instance segments
+ assert (shape[0] > 9) & (shape[1] > 9), f'image size {shape} <10 pixels'
+ assert im.format.lower() in img_formats, f'invalid image format {im.format}'
+
+ # verify labels
+ if os.path.isfile(lb_file):
+ nf += 1 # label found
+ with open(lb_file, 'r') as f:
+ l = [x.split() for x in f.read().strip().splitlines()]
+ if any([len(x) > 8 for x in l]): # is segment
+ classes = np.array([x[0] for x in l], dtype=np.float32)
+ segments = [np.array(x[1:], dtype=np.float32).reshape(-1, 2) for x in l] # (cls, xy1...)
+ l = np.concatenate((classes.reshape(-1, 1), segments2boxes(segments)), 1) # (cls, xywh)
+ l = np.array(l, dtype=np.float32)
+ if len(l):
+ assert l.shape[1] == 5, 'labels require 5 columns each'
+ assert (l >= 0).all(), 'negative labels'
+ assert (l[:, 1:] <= 1).all(), 'non-normalized or out of bounds coordinate labels'
+ assert np.unique(l, axis=0).shape[0] == l.shape[0], 'duplicate labels'
+ else:
+ ne += 1 # label empty
+ l = np.zeros((0, 5), dtype=np.float32)
+ else:
+ nm += 1 # label missing
+ l = np.zeros((0, 5), dtype=np.float32)
+ x[im_file] = [l, shape, segments]
+ except Exception as e:
+ nc += 1
+ logging.info(f'{prefix}WARNING: Ignoring corrupted image and/or label {im_file}: {e}')
+
+ pbar.desc = f"{prefix}Scanning '{path.parent / path.stem}' images and labels... " \
+ f"{nf} found, {nm} missing, {ne} empty, {nc} corrupted"
+ pbar.close()
+
+ if nf == 0:
+ logging.info(f'{prefix}WARNING: No labels found in {path}. See {help_url}')
+
+ x['hash'] = get_hash(self.label_files + self.img_files)
+ x['results'] = nf, nm, ne, nc, i + 1
+ x['version'] = 0.1 # cache version
+ try:
+ torch.save(x, path) # save for next time
+ logging.info(f'{prefix}New cache created: {path}')
+ except Exception as e:
+ logging.info(f'{prefix}WARNING: Cache directory {path.parent} is not writeable: {e}') # path not writeable
+ return x
+
+ def __len__(self):
+ return len(self.img_files)
+
+ # def __iter__(self):
+ # self.count = -1
+ # print('ran dataset iter')
+ # #self.shuffled_vector = np.random.permutation(self.nF) if self.augment else np.arange(self.nF)
+ # return self
+
+ def __getitem__(self, index):
+ index = self.indices[index] # linear, shuffled, or image_weights
+
+ hyp = self.hyp
+ mosaic = self.mosaic and random.random() < hyp['mosaic']
+ if mosaic:
+ # Load mosaic
+ img, labels = load_mosaic(self, index)
+ shapes = None
+
+ # MixUp https://arxiv.org/pdf/1710.09412.pdf
+ if random.random() < hyp['mixup']:
+ img2, labels2 = load_mosaic(self, random.randint(0, self.n - 1))
+ r = np.random.beta(8.0, 8.0) # mixup ratio, alpha=beta=8.0
+ img = (img * r + img2 * (1 - r)).astype(np.uint8)
+ labels = np.concatenate((labels, labels2), 0)
+
+ else:
+ # Load image
+ img, (h0, w0), (h, w) = load_image(self, index)
+
+ # Letterbox
+ shape = self.batch_shapes[self.batch[index]] if self.rect else self.img_size # final letterboxed shape
+ img, ratio, pad = letterbox(img, shape, auto=False, scaleup=self.augment)
+ shapes = (h0, w0), ((h / h0, w / w0), pad) # for COCO mAP rescaling
+
+ labels = self.labels[index].copy()
+ if labels.size: # normalized xywh to pixel xyxy format
+ labels[:, 1:] = xywhn2xyxy(labels[:, 1:], ratio[0] * w, ratio[1] * h, padw=pad[0], padh=pad[1])
+
+ if self.augment:
+ # Augment imagespace
+ if not mosaic:
+ img, labels = random_perspective(img, labels,
+ degrees=hyp['degrees'],
+ translate=hyp['translate'],
+ scale=hyp['scale'],
+ shear=hyp['shear'],
+ perspective=hyp['perspective'])
+
+ # Augment colorspace
+ augment_hsv(img, hgain=hyp['hsv_h'], sgain=hyp['hsv_s'], vgain=hyp['hsv_v'])
+
+ # Apply cutouts
+ # if random.random() < 0.9:
+ # labels = cutout(img, labels)
+
+ nL = len(labels) # number of labels
+ if nL:
+ labels[:, 1:5] = xyxy2xywh(labels[:, 1:5]) # convert xyxy to xywh
+ labels[:, [2, 4]] /= img.shape[0] # normalized height 0-1
+ labels[:, [1, 3]] /= img.shape[1] # normalized width 0-1
+
+ if self.augment:
+ # flip up-down
+ if random.random() < hyp['flipud']:
+ img = np.flipud(img)
+ if nL:
+ labels[:, 2] = 1 - labels[:, 2]
+
+ # flip left-right
+ if random.random() < hyp['fliplr']:
+ img = np.fliplr(img)
+ if nL:
+ labels[:, 1] = 1 - labels[:, 1]
+
+ labels_out = torch.zeros((nL, 6))
+ if nL:
+ labels_out[:, 1:] = torch.from_numpy(labels)
+
+ # Convert
+ img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416
+ img = np.ascontiguousarray(img)
+
+ return torch.from_numpy(img), labels_out, self.img_files[index], shapes
+
+ @staticmethod
+ def collate_fn(batch):
+ img, label, path, shapes = zip(*batch) # transposed
+ for i, l in enumerate(label):
+ l[:, 0] = i # add target image index for build_targets()
+ return torch.stack(img, 0), torch.cat(label, 0), path, shapes
+
+ @staticmethod
+ def collate_fn4(batch):
+ img, label, path, shapes = zip(*batch) # transposed
+ n = len(shapes) // 4
+ img4, label4, path4, shapes4 = [], [], path[:n], shapes[:n]
+
+ ho = torch.tensor([[0., 0, 0, 1, 0, 0]])
+ wo = torch.tensor([[0., 0, 1, 0, 0, 0]])
+ s = torch.tensor([[1, 1, .5, .5, .5, .5]]) # scale
+ for i in range(n): # zidane torch.zeros(16,3,720,1280) # BCHW
+ i *= 4
+ if random.random() < 0.5:
+ im = F.interpolate(img[i].unsqueeze(0).float(), scale_factor=2., mode='bilinear', align_corners=False)[
+ 0].type(img[i].type())
+ l = label[i]
+ else:
+ im = torch.cat((torch.cat((img[i], img[i + 1]), 1), torch.cat((img[i + 2], img[i + 3]), 1)), 2)
+ l = torch.cat((label[i], label[i + 1] + ho, label[i + 2] + wo, label[i + 3] + ho + wo), 0) * s
+ img4.append(im)
+ label4.append(l)
+
+ for i, l in enumerate(label4):
+ l[:, 0] = i # add target image index for build_targets()
+
+ return torch.stack(img4, 0), torch.cat(label4, 0), path4, shapes4
+
+
+# Ancillary functions --------------------------------------------------------------------------------------------------
+def load_image(self, index):
+ # loads 1 image from dataset, returns img, original hw, resized hw
+ img = self.imgs[index]
+ if img is None: # not cached
+ path = self.img_files[index]
+ img = cv2.imread(path) # BGR
+ assert img is not None, 'Image Not Found ' + path
+ h0, w0 = img.shape[:2] # orig hw
+ r = self.img_size / max(h0, w0) # ratio
+ if r != 1: # if sizes are not equal
+ img = cv2.resize(img, (int(w0 * r), int(h0 * r)),
+ interpolation=cv2.INTER_AREA if r < 1 and not self.augment else cv2.INTER_LINEAR)
+ return img, (h0, w0), img.shape[:2] # img, hw_original, hw_resized
+ else:
+ return self.imgs[index], self.img_hw0[index], self.img_hw[index] # img, hw_original, hw_resized
+
+
+def augment_hsv(img, hgain=0.5, sgain=0.5, vgain=0.5):
+ r = np.random.uniform(-1, 1, 3) * [hgain, sgain, vgain] + 1 # random gains
+ hue, sat, val = cv2.split(cv2.cvtColor(img, cv2.COLOR_BGR2HSV))
+ dtype = img.dtype # uint8
+
+ x = np.arange(0, 256, dtype=np.int16)
+ lut_hue = ((x * r[0]) % 180).astype(dtype)
+ lut_sat = np.clip(x * r[1], 0, 255).astype(dtype)
+ lut_val = np.clip(x * r[2], 0, 255).astype(dtype)
+
+ img_hsv = cv2.merge((cv2.LUT(hue, lut_hue), cv2.LUT(sat, lut_sat), cv2.LUT(val, lut_val))).astype(dtype)
+ cv2.cvtColor(img_hsv, cv2.COLOR_HSV2BGR, dst=img) # no return needed
+
+
+def hist_equalize(img, clahe=True, bgr=False):
+ # Equalize histogram on BGR image 'img' with img.shape(n,m,3) and range 0-255
+ yuv = cv2.cvtColor(img, cv2.COLOR_BGR2YUV if bgr else cv2.COLOR_RGB2YUV)
+ if clahe:
+ c = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
+ yuv[:, :, 0] = c.apply(yuv[:, :, 0])
+ else:
+ yuv[:, :, 0] = cv2.equalizeHist(yuv[:, :, 0]) # equalize Y channel histogram
+ return cv2.cvtColor(yuv, cv2.COLOR_YUV2BGR if bgr else cv2.COLOR_YUV2RGB) # convert YUV image to RGB
+
+
+def load_mosaic(self, index):
+ # loads images in a 4-mosaic
+
+ labels4, segments4 = [], []
+ s = self.img_size
+ yc, xc = [int(random.uniform(-x, 2 * s + x)) for x in self.mosaic_border] # mosaic center x, y
+ indices = [index] + random.choices(self.indices, k=3) # 3 additional image indices
+ for i, index in enumerate(indices):
+ # Load image
+ img, _, (h, w) = load_image(self, index)
+
+ # place img in img4
+ if i == 0: # top left
+ img4 = np.full((s * 2, s * 2, img.shape[2]), 114, dtype=np.uint8) # base image with 4 tiles
+ x1a, y1a, x2a, y2a = max(xc - w, 0), max(yc - h, 0), xc, yc # xmin, ymin, xmax, ymax (large image)
+ x1b, y1b, x2b, y2b = w - (x2a - x1a), h - (y2a - y1a), w, h # xmin, ymin, xmax, ymax (small image)
+ elif i == 1: # top right
+ x1a, y1a, x2a, y2a = xc, max(yc - h, 0), min(xc + w, s * 2), yc
+ x1b, y1b, x2b, y2b = 0, h - (y2a - y1a), min(w, x2a - x1a), h
+ elif i == 2: # bottom left
+ x1a, y1a, x2a, y2a = max(xc - w, 0), yc, xc, min(s * 2, yc + h)
+ x1b, y1b, x2b, y2b = w - (x2a - x1a), 0, w, min(y2a - y1a, h)
+ elif i == 3: # bottom right
+ x1a, y1a, x2a, y2a = xc, yc, min(xc + w, s * 2), min(s * 2, yc + h)
+ x1b, y1b, x2b, y2b = 0, 0, min(w, x2a - x1a), min(y2a - y1a, h)
+
+ img4[y1a:y2a, x1a:x2a] = img[y1b:y2b, x1b:x2b] # img4[ymin:ymax, xmin:xmax]
+ padw = x1a - x1b
+ padh = y1a - y1b
+
+ # Labels
+ labels, segments = self.labels[index].copy(), self.segments[index].copy()
+ if labels.size:
+ labels[:, 1:] = xywhn2xyxy(labels[:, 1:], w, h, padw, padh) # normalized xywh to pixel xyxy format
+ segments = [xyn2xy(x, w, h, padw, padh) for x in segments]
+ labels4.append(labels)
+ segments4.extend(segments)
+
+ # Concat/clip labels
+ labels4 = np.concatenate(labels4, 0)
+ for x in (labels4[:, 1:], *segments4):
+ np.clip(x, 0, 2 * s, out=x) # clip when using random_perspective()
+ # img4, labels4 = replicate(img4, labels4) # replicate
+
+ # Augment
+ img4, labels4 = random_perspective(img4, labels4, segments4,
+ degrees=self.hyp['degrees'],
+ translate=self.hyp['translate'],
+ scale=self.hyp['scale'],
+ shear=self.hyp['shear'],
+ perspective=self.hyp['perspective'],
+ border=self.mosaic_border) # border to remove
+
+ return img4, labels4
+
+
+def load_mosaic9(self, index):
+ # loads images in a 9-mosaic
+
+ labels9, segments9 = [], []
+ s = self.img_size
+ indices = [index] + random.choices(self.indices, k=8) # 8 additional image indices
+ for i, index in enumerate(indices):
+ # Load image
+ img, _, (h, w) = load_image(self, index)
+
+ # place img in img9
+ if i == 0: # center
+ img9 = np.full((s * 3, s * 3, img.shape[2]), 114, dtype=np.uint8) # base image with 4 tiles
+ h0, w0 = h, w
+ c = s, s, s + w, s + h # xmin, ymin, xmax, ymax (base) coordinates
+ elif i == 1: # top
+ c = s, s - h, s + w, s
+ elif i == 2: # top right
+ c = s + wp, s - h, s + wp + w, s
+ elif i == 3: # right
+ c = s + w0, s, s + w0 + w, s + h
+ elif i == 4: # bottom right
+ c = s + w0, s + hp, s + w0 + w, s + hp + h
+ elif i == 5: # bottom
+ c = s + w0 - w, s + h0, s + w0, s + h0 + h
+ elif i == 6: # bottom left
+ c = s + w0 - wp - w, s + h0, s + w0 - wp, s + h0 + h
+ elif i == 7: # left
+ c = s - w, s + h0 - h, s, s + h0
+ elif i == 8: # top left
+ c = s - w, s + h0 - hp - h, s, s + h0 - hp
+
+ padx, pady = c[:2]
+ x1, y1, x2, y2 = [max(x, 0) for x in c] # allocate coords
+
+ # Labels
+ labels, segments = self.labels[index].copy(), self.segments[index].copy()
+ if labels.size:
+ labels[:, 1:] = xywhn2xyxy(labels[:, 1:], w, h, padx, pady) # normalized xywh to pixel xyxy format
+ segments = [xyn2xy(x, w, h, padx, pady) for x in segments]
+ labels9.append(labels)
+ segments9.extend(segments)
+
+ # Image
+ img9[y1:y2, x1:x2] = img[y1 - pady:, x1 - padx:] # img9[ymin:ymax, xmin:xmax]
+ hp, wp = h, w # height, width previous
+
+ # Offset
+ yc, xc = [int(random.uniform(0, s)) for _ in self.mosaic_border] # mosaic center x, y
+ img9 = img9[yc:yc + 2 * s, xc:xc + 2 * s]
+
+ # Concat/clip labels
+ labels9 = np.concatenate(labels9, 0)
+ labels9[:, [1, 3]] -= xc
+ labels9[:, [2, 4]] -= yc
+ c = np.array([xc, yc]) # centers
+ segments9 = [x - c for x in segments9]
+
+ for x in (labels9[:, 1:], *segments9):
+ np.clip(x, 0, 2 * s, out=x) # clip when using random_perspective()
+ # img9, labels9 = replicate(img9, labels9) # replicate
+
+ # Augment
+ img9, labels9 = random_perspective(img9, labels9, segments9,
+ degrees=self.hyp['degrees'],
+ translate=self.hyp['translate'],
+ scale=self.hyp['scale'],
+ shear=self.hyp['shear'],
+ perspective=self.hyp['perspective'],
+ border=self.mosaic_border) # border to remove
+
+ return img9, labels9
+
+
+def replicate(img, labels):
+ # Replicate labels
+ h, w = img.shape[:2]
+ boxes = labels[:, 1:].astype(int)
+ x1, y1, x2, y2 = boxes.T
+ s = ((x2 - x1) + (y2 - y1)) / 2 # side length (pixels)
+ for i in s.argsort()[:round(s.size * 0.5)]: # smallest indices
+ x1b, y1b, x2b, y2b = boxes[i]
+ bh, bw = y2b - y1b, x2b - x1b
+ yc, xc = int(random.uniform(0, h - bh)), int(random.uniform(0, w - bw)) # offset x, y
+ x1a, y1a, x2a, y2a = [xc, yc, xc + bw, yc + bh]
+ img[y1a:y2a, x1a:x2a] = img[y1b:y2b, x1b:x2b] # img4[ymin:ymax, xmin:xmax]
+ labels = np.append(labels, [[labels[i, 0], x1a, y1a, x2a, y2a]], axis=0)
+
+ return img, labels
+
+
+def letterbox(img, new_shape=(640, 640), color=(114, 114, 114), auto=True, scaleFill=False, scaleup=True, stride=32):
+ # Resize and pad image while meeting stride-multiple constraints
+ shape = img.shape[:2] # current shape [height, width]
+ if isinstance(new_shape, int):
+ new_shape = (new_shape, new_shape)
+
+ # Scale ratio (new / old)
+ r = min(new_shape[0] / shape[0], new_shape[1] / shape[1])
+ if not scaleup: # only scale down, do not scale up (for better test mAP)
+ r = min(r, 1.0)
+
+ # Compute padding
+ ratio = r, r # width, height ratios
+ new_unpad = int(round(shape[1] * r)), int(round(shape[0] * r))
+ dw, dh = new_shape[1] - new_unpad[0], new_shape[0] - new_unpad[1] # wh padding
+ if auto: # minimum rectangle
+ dw, dh = np.mod(dw, stride), np.mod(dh, stride) # wh padding
+ elif scaleFill: # stretch
+ dw, dh = 0.0, 0.0
+ new_unpad = (new_shape[1], new_shape[0])
+ ratio = new_shape[1] / shape[1], new_shape[0] / shape[0] # width, height ratios
+
+ dw /= 2 # divide padding into 2 sides
+ dh /= 2
+
+ if shape[::-1] != new_unpad: # resize
+ img = cv2.resize(img, new_unpad, interpolation=cv2.INTER_LINEAR)
+ top, bottom = int(round(dh - 0.1)), int(round(dh + 0.1))
+ left, right = int(round(dw - 0.1)), int(round(dw + 0.1))
+ img = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=color) # add border
+ return img, ratio, (dw, dh)
+
+
+def random_perspective(img, targets=(), segments=(), degrees=10, translate=.1, scale=.1, shear=10, perspective=0.0,
+ border=(0, 0)):
+ # torchvision.transforms.RandomAffine(degrees=(-10, 10), translate=(.1, .1), scale=(.9, 1.1), shear=(-10, 10))
+ # targets = [cls, xyxy]
+
+ height = img.shape[0] + border[0] * 2 # shape(h,w,c)
+ width = img.shape[1] + border[1] * 2
+
+ # Center
+ C = np.eye(3)
+ C[0, 2] = -img.shape[1] / 2 # x translation (pixels)
+ C[1, 2] = -img.shape[0] / 2 # y translation (pixels)
+
+ # Perspective
+ P = np.eye(3)
+ P[2, 0] = random.uniform(-perspective, perspective) # x perspective (about y)
+ P[2, 1] = random.uniform(-perspective, perspective) # y perspective (about x)
+
+ # Rotation and Scale
+ R = np.eye(3)
+ a = random.uniform(-degrees, degrees)
+ # a += random.choice([-180, -90, 0, 90]) # add 90deg rotations to small rotations
+ s = random.uniform(1 - scale, 1 + scale)
+ # s = 2 ** random.uniform(-scale, scale)
+ R[:2] = cv2.getRotationMatrix2D(angle=a, center=(0, 0), scale=s)
+
+ # Shear
+ S = np.eye(3)
+ S[0, 1] = math.tan(random.uniform(-shear, shear) * math.pi / 180) # x shear (deg)
+ S[1, 0] = math.tan(random.uniform(-shear, shear) * math.pi / 180) # y shear (deg)
+
+ # Translation
+ T = np.eye(3)
+ T[0, 2] = random.uniform(0.5 - translate, 0.5 + translate) * width # x translation (pixels)
+ T[1, 2] = random.uniform(0.5 - translate, 0.5 + translate) * height # y translation (pixels)
+
+ # Combined rotation matrix
+ M = T @ S @ R @ P @ C # order of operations (right to left) is IMPORTANT
+ if (border[0] != 0) or (border[1] != 0) or (M != np.eye(3)).any(): # image changed
+ if perspective:
+ img = cv2.warpPerspective(img, M, dsize=(width, height), borderValue=(114, 114, 114))
+ else: # affine
+ img = cv2.warpAffine(img, M[:2], dsize=(width, height), borderValue=(114, 114, 114))
+
+ # Visualize
+ # import matplotlib.pyplot as plt
+ # ax = plt.subplots(1, 2, figsize=(12, 6))[1].ravel()
+ # ax[0].imshow(img[:, :, ::-1]) # base
+ # ax[1].imshow(img2[:, :, ::-1]) # warped
+
+ # Transform label coordinates
+ n = len(targets)
+ if n:
+ use_segments = any(x.any() for x in segments)
+ new = np.zeros((n, 4))
+ if use_segments: # warp segments
+ segments = resample_segments(segments) # upsample
+ for i, segment in enumerate(segments):
+ xy = np.ones((len(segment), 3))
+ xy[:, :2] = segment
+ xy = xy @ M.T # transform
+ xy = xy[:, :2] / xy[:, 2:3] if perspective else xy[:, :2] # perspective rescale or affine
+
+ # clip
+ new[i] = segment2box(xy, width, height)
+
+ else: # warp boxes
+ xy = np.ones((n * 4, 3))
+ xy[:, :2] = targets[:, [1, 2, 3, 4, 1, 4, 3, 2]].reshape(n * 4, 2) # x1y1, x2y2, x1y2, x2y1
+ xy = xy @ M.T # transform
+ xy = (xy[:, :2] / xy[:, 2:3] if perspective else xy[:, :2]).reshape(n, 8) # perspective rescale or affine
+
+ # create new boxes
+ x = xy[:, [0, 2, 4, 6]]
+ y = xy[:, [1, 3, 5, 7]]
+ new = np.concatenate((x.min(1), y.min(1), x.max(1), y.max(1))).reshape(4, n).T
+
+ # clip
+ new[:, [0, 2]] = new[:, [0, 2]].clip(0, width)
+ new[:, [1, 3]] = new[:, [1, 3]].clip(0, height)
+
+ # filter candidates
+ i = box_candidates(box1=targets[:, 1:5].T * s, box2=new.T, area_thr=0.01 if use_segments else 0.10)
+ targets = targets[i]
+ targets[:, 1:5] = new[i]
+
+ return img, targets
+
+
+def box_candidates(box1, box2, wh_thr=2, ar_thr=20, area_thr=0.1, eps=1e-16): # box1(4,n), box2(4,n)
+ # Compute candidate boxes: box1 before augment, box2 after augment, wh_thr (pixels), aspect_ratio_thr, area_ratio
+ w1, h1 = box1[2] - box1[0], box1[3] - box1[1]
+ w2, h2 = box2[2] - box2[0], box2[3] - box2[1]
+ ar = np.maximum(w2 / (h2 + eps), h2 / (w2 + eps)) # aspect ratio
+ return (w2 > wh_thr) & (h2 > wh_thr) & (w2 * h2 / (w1 * h1 + eps) > area_thr) & (ar < ar_thr) # candidates
+
+
+def cutout(image, labels):
+ # Applies image cutout augmentation https://arxiv.org/abs/1708.04552
+ h, w = image.shape[:2]
+
+ def bbox_ioa(box1, box2):
+ # Returns the intersection over box2 area given box1, box2. box1 is 4, box2 is nx4. boxes are x1y1x2y2
+ box2 = box2.transpose()
+
+ # Get the coordinates of bounding boxes
+ b1_x1, b1_y1, b1_x2, b1_y2 = box1[0], box1[1], box1[2], box1[3]
+ b2_x1, b2_y1, b2_x2, b2_y2 = box2[0], box2[1], box2[2], box2[3]
+
+ # Intersection area
+ inter_area = (np.minimum(b1_x2, b2_x2) - np.maximum(b1_x1, b2_x1)).clip(0) * \
+ (np.minimum(b1_y2, b2_y2) - np.maximum(b1_y1, b2_y1)).clip(0)
+
+ # box2 area
+ box2_area = (b2_x2 - b2_x1) * (b2_y2 - b2_y1) + 1e-16
+
+ # Intersection over box2 area
+ return inter_area / box2_area
+
+ # create random masks
+ scales = [0.5] * 1 + [0.25] * 2 + [0.125] * 4 + [0.0625] * 8 + [0.03125] * 16 # image size fraction
+ for s in scales:
+ mask_h = random.randint(1, int(h * s))
+ mask_w = random.randint(1, int(w * s))
+
+ # box
+ xmin = max(0, random.randint(0, w) - mask_w // 2)
+ ymin = max(0, random.randint(0, h) - mask_h // 2)
+ xmax = min(w, xmin + mask_w)
+ ymax = min(h, ymin + mask_h)
+
+ # apply random color mask
+ image[ymin:ymax, xmin:xmax] = [random.randint(64, 191) for _ in range(3)]
+
+ # return unobscured labels
+ if len(labels) and s > 0.03:
+ box = np.array([xmin, ymin, xmax, ymax], dtype=np.float32)
+ ioa = bbox_ioa(box, labels[:, 1:5]) # intersection over area
+ labels = labels[ioa < 0.60] # remove >60% obscured labels
+
+ return labels
+
+
+def create_folder(path='./new'):
+ # Create folder
+ if os.path.exists(path):
+ shutil.rmtree(path) # delete output folder
+ os.makedirs(path) # make new output folder
+
+
+def flatten_recursive(path='../coco128'):
+ # Flatten a recursive directory by bringing all files to top level
+ new_path = Path(path + '_flat')
+ create_folder(new_path)
+ for file in tqdm(glob.glob(str(Path(path)) + '/**/*.*', recursive=True)):
+ shutil.copyfile(file, new_path / Path(file).name)
+
+
+def extract_boxes(path='../coco128/'): # from utils.datasets import *; extract_boxes('../coco128')
+ # Convert detection dataset into classification dataset, with one directory per class
+
+ path = Path(path) # images dir
+ shutil.rmtree(path / 'classifier') if (path / 'classifier').is_dir() else None # remove existing
+ files = list(path.rglob('*.*'))
+ n = len(files) # number of files
+ for im_file in tqdm(files, total=n):
+ if im_file.suffix[1:] in img_formats:
+ # image
+ im = cv2.imread(str(im_file))[..., ::-1] # BGR to RGB
+ h, w = im.shape[:2]
+
+ # labels
+ lb_file = Path(img2label_paths([str(im_file)])[0])
+ if Path(lb_file).exists():
+ with open(lb_file, 'r') as f:
+ lb = np.array([x.split() for x in f.read().strip().splitlines()], dtype=np.float32) # labels
+
+ for j, x in enumerate(lb):
+ c = int(x[0]) # class
+ f = (path / 'classifier') / f'{c}' / f'{path.stem}_{im_file.stem}_{j}.jpg' # new filename
+ if not f.parent.is_dir():
+ f.parent.mkdir(parents=True)
+
+ b = x[1:] * [w, h, w, h] # box
+ # b[2:] = b[2:].max() # rectangle to square
+ b[2:] = b[2:] * 1.2 + 3 # pad
+ b = xywh2xyxy(b.reshape(-1, 4)).ravel().astype(np.int)
+
+ b[[0, 2]] = np.clip(b[[0, 2]], 0, w) # clip boxes outside of image
+ b[[1, 3]] = np.clip(b[[1, 3]], 0, h)
+ assert cv2.imwrite(str(f), im[b[1]:b[3], b[0]:b[2]]), f'box failure in {f}'
+
+
+def autosplit(path='../coco128', weights=(0.9, 0.1, 0.0), annotated_only=False):
+ """ Autosplit a dataset into train/val/test splits and save path/autosplit_*.txt files
+ Usage: from utils.datasets import *; autosplit('../coco128')
+ Arguments
+ path: Path to images directory
+ weights: Train, val, test weights (list)
+ annotated_only: Only use images with an annotated txt file
+ """
+ path = Path(path) # images dir
+ files = sum([list(path.rglob(f"*.{img_ext}")) for img_ext in img_formats], []) # image files only
+ n = len(files) # number of files
+ indices = random.choices([0, 1, 2], weights=weights, k=n) # assign each image to a split
+
+ txt = ['autosplit_train.txt', 'autosplit_val.txt', 'autosplit_test.txt'] # 3 txt files
+ [(path / x).unlink() for x in txt if (path / x).exists()] # remove existing
+
+ print(f'Autosplitting images from {path}' + ', using *.txt labeled images only' * annotated_only)
+ for i, img in tqdm(zip(indices, files), total=n):
+ if not annotated_only or Path(img2label_paths([str(img)])[0]).exists(): # check label
+ with open(path / txt[i], 'a') as f:
+ f.write(str(img) + '\n') # add image to txt file
diff --git a/Yolov5-Deepsort/utils/flask_rest_api/README.md b/Yolov5-Deepsort/utils/flask_rest_api/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..324c2416dcd9fa83b18286c33ce309f4f5573637
--- /dev/null
+++ b/Yolov5-Deepsort/utils/flask_rest_api/README.md
@@ -0,0 +1,68 @@
+# Flask REST API
+[REST](https://en.wikipedia.org/wiki/Representational_state_transfer) [API](https://en.wikipedia.org/wiki/API)s are commonly used to expose Machine Learning (ML) models to other services. This folder contains an example REST API created using Flask to expose the YOLOv5s model from [PyTorch Hub](https://pytorch.org/hub/ultralytics_yolov5/).
+
+## Requirements
+
+[Flask](https://palletsprojects.com/p/flask/) is required. Install with:
+```shell
+$ pip install Flask
+```
+
+## Run
+
+After Flask installation run:
+
+```shell
+$ python3 restapi.py --port 5000
+```
+
+Then use [curl](https://curl.se/) to perform a request:
+
+```shell
+$ curl -X POST -F image=@zidane.jpg 'http://localhost:5000/v1/object-detection/yolov5s'`
+```
+
+The model inference results are returned as a JSON response:
+
+```json
+[
+ {
+ "class": 0,
+ "confidence": 0.8900438547,
+ "height": 0.9318675399,
+ "name": "person",
+ "width": 0.3264600933,
+ "xcenter": 0.7438579798,
+ "ycenter": 0.5207948685
+ },
+ {
+ "class": 0,
+ "confidence": 0.8440024257,
+ "height": 0.7155083418,
+ "name": "person",
+ "width": 0.6546785235,
+ "xcenter": 0.427829951,
+ "ycenter": 0.6334488392
+ },
+ {
+ "class": 27,
+ "confidence": 0.3771208823,
+ "height": 0.3902671337,
+ "name": "tie",
+ "width": 0.0696444362,
+ "xcenter": 0.3675483763,
+ "ycenter": 0.7991207838
+ },
+ {
+ "class": 27,
+ "confidence": 0.3527112305,
+ "height": 0.1540903747,
+ "name": "tie",
+ "width": 0.0336618312,
+ "xcenter": 0.7814827561,
+ "ycenter": 0.5065554976
+ }
+]
+```
+
+An example python script to perform inference using [requests](https://docs.python-requests.org/en/master/) is given in `example_request.py`
diff --git a/Yolov5-Deepsort/utils/flask_rest_api/example_request.py b/Yolov5-Deepsort/utils/flask_rest_api/example_request.py
new file mode 100644
index 0000000000000000000000000000000000000000..ff21f30f93ca37578ce45366a1ddbe3f3eadaa79
--- /dev/null
+++ b/Yolov5-Deepsort/utils/flask_rest_api/example_request.py
@@ -0,0 +1,13 @@
+"""Perform test request"""
+import pprint
+
+import requests
+
+DETECTION_URL = "http://localhost:5000/v1/object-detection/yolov5s"
+TEST_IMAGE = "zidane.jpg"
+
+image_data = open(TEST_IMAGE, "rb").read()
+
+response = requests.post(DETECTION_URL, files={"image": image_data}).json()
+
+pprint.pprint(response)
diff --git a/Yolov5-Deepsort/utils/flask_rest_api/restapi.py b/Yolov5-Deepsort/utils/flask_rest_api/restapi.py
new file mode 100644
index 0000000000000000000000000000000000000000..a54e2309715ce5d3d41e9e2e76a347db3cdb7ccb
--- /dev/null
+++ b/Yolov5-Deepsort/utils/flask_rest_api/restapi.py
@@ -0,0 +1,37 @@
+"""
+Run a rest API exposing the yolov5s object detection model
+"""
+import argparse
+import io
+
+import torch
+from PIL import Image
+from flask import Flask, request
+
+app = Flask(__name__)
+
+DETECTION_URL = "/v1/object-detection/yolov5s"
+
+
+@app.route(DETECTION_URL, methods=["POST"])
+def predict():
+ if not request.method == "POST":
+ return
+
+ if request.files.get("image"):
+ image_file = request.files["image"]
+ image_bytes = image_file.read()
+
+ img = Image.open(io.BytesIO(image_bytes))
+
+ results = model(img, size=640) # reduce size=320 for faster inference
+ return results.pandas().xyxy[0].to_json(orient="records")
+
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(description="Flask API exposing YOLOv5 model")
+ parser.add_argument("--port", default=5000, type=int, help="port number")
+ args = parser.parse_args()
+
+ model = torch.hub.load("ultralytics/yolov5", "yolov5s", force_reload=True) # force_reload to recache
+ app.run(host="0.0.0.0", port=args.port) # debug=True causes Restarting with stat
diff --git a/Yolov5-Deepsort/utils/general.py b/Yolov5-Deepsort/utils/general.py
new file mode 100644
index 0000000000000000000000000000000000000000..9a882715f0ad43a0271252fca3aeb06f6169d1ff
--- /dev/null
+++ b/Yolov5-Deepsort/utils/general.py
@@ -0,0 +1,692 @@
+# YOLOv5 general utils
+
+import glob
+import logging
+import math
+import os
+import platform
+import random
+import re
+import subprocess
+import time
+from itertools import repeat
+from multiprocessing.pool import ThreadPool
+from pathlib import Path
+
+import cv2
+import numpy as np
+import pandas as pd
+import pkg_resources as pkg
+import torch
+import torchvision
+import yaml
+
+from utils.google_utils import gsutil_getsize
+from utils.metrics import fitness
+from utils.torch_utils import init_torch_seeds
+
+# Settings
+torch.set_printoptions(linewidth=320, precision=5, profile='long')
+np.set_printoptions(linewidth=320, formatter={'float_kind': '{:11.5g}'.format}) # format short g, %precision=5
+pd.options.display.max_columns = 10
+cv2.setNumThreads(0) # prevent OpenCV from multithreading (incompatible with PyTorch DataLoader)
+os.environ['NUMEXPR_MAX_THREADS'] = str(min(os.cpu_count(), 8)) # NumExpr max threads
+
+
+def set_logging(rank=-1, verbose=True):
+ logging.basicConfig(
+ format="%(message)s",
+ level=logging.INFO if (verbose and rank in [-1, 0]) else logging.WARN)
+
+
+def init_seeds(seed=0):
+ # Initialize random number generator (RNG) seeds
+ random.seed(seed)
+ np.random.seed(seed)
+ init_torch_seeds(seed)
+
+
+def get_latest_run(search_dir='.'):
+ # Return path to most recent 'last.pt' in /runs (i.e. to --resume from)
+ last_list = glob.glob(f'{search_dir}/**/last*.pt', recursive=True)
+ return max(last_list, key=os.path.getctime) if last_list else ''
+
+
+def is_docker():
+ # Is environment a Docker container
+ return Path('/workspace').exists() # or Path('/.dockerenv').exists()
+
+
+def is_colab():
+ # Is environment a Google Colab instance
+ try:
+ import google.colab
+ return True
+ except Exception as e:
+ return False
+
+
+def emojis(str=''):
+ # Return platform-dependent emoji-safe version of string
+ return str.encode().decode('ascii', 'ignore') if platform.system() == 'Windows' else str
+
+
+def file_size(file):
+ # Return file size in MB
+ return Path(file).stat().st_size / 1e6
+
+
+def check_online():
+ # Check internet connectivity
+ import socket
+ try:
+ socket.create_connection(("1.1.1.1", 443), 5) # check host accesability
+ return True
+ except OSError:
+ return False
+
+
+def check_git_status():
+ # Recommend 'git pull' if code is out of date
+ print(colorstr('github: '), end='')
+ try:
+ assert Path('.git').exists(), 'skipping check (not a git repository)'
+ assert not is_docker(), 'skipping check (Docker image)'
+ assert check_online(), 'skipping check (offline)'
+
+ cmd = 'git fetch && git config --get remote.origin.url'
+ url = subprocess.check_output(cmd, shell=True).decode().strip().rstrip('.git') # github repo url
+ branch = subprocess.check_output('git rev-parse --abbrev-ref HEAD', shell=True).decode().strip() # checked out
+ n = int(subprocess.check_output(f'git rev-list {branch}..origin/master --count', shell=True)) # commits behind
+ if n > 0:
+ s = f"⚠️ WARNING: code is out of date by {n} commit{'s' * (n > 1)}. " \
+ f"Use 'git pull' to update or 'git clone {url}' to download latest."
+ else:
+ s = f'up to date with {url} ✅'
+ print(emojis(s)) # emoji-safe
+ except Exception as e:
+ print(e)
+
+
+def check_python(minimum='3.7.0', required=True):
+ # Check current python version vs. required python version
+ current = platform.python_version()
+ result = pkg.parse_version(current) >= pkg.parse_version(minimum)
+ if required:
+ assert result, f'Python {minimum} required by YOLOv5, but Python {current} is currently installed'
+ return result
+
+
+def check_requirements(requirements='requirements.txt', exclude=()):
+ # Check installed dependencies meet requirements (pass *.txt file or list of packages)
+ prefix = colorstr('red', 'bold', 'requirements:')
+ check_python() # check python version
+ if isinstance(requirements, (str, Path)): # requirements.txt file
+ file = Path(requirements)
+ if not file.exists():
+ print(f"{prefix} {file.resolve()} not found, check failed.")
+ return
+ requirements = [f'{x.name}{x.specifier}' for x in pkg.parse_requirements(file.open()) if x.name not in exclude]
+ else: # list or tuple of packages
+ requirements = [x for x in requirements if x not in exclude]
+
+ n = 0 # number of packages updates
+ for r in requirements:
+ try:
+ pkg.require(r)
+ except Exception as e: # DistributionNotFound or VersionConflict if requirements not met
+ n += 1
+ print(f"{prefix} {r} not found and is required by YOLOv5, attempting auto-update...")
+ try:
+ print(subprocess.check_output(f"pip install '{r}'", shell=True).decode())
+ except Exception as e:
+ print(f'{prefix} {e}')
+
+ if n: # if packages updated
+ source = file.resolve() if 'file' in locals() else requirements
+ s = f"{prefix} {n} package{'s' * (n > 1)} updated per {source}\n" \
+ f"{prefix} ⚠️ {colorstr('bold', 'Restart runtime or rerun command for updates to take effect')}\n"
+ print(emojis(s)) # emoji-safe
+
+
+def check_img_size(img_size, s=32):
+ # Verify img_size is a multiple of stride s
+ new_size = make_divisible(img_size, int(s)) # ceil gs-multiple
+ if new_size != img_size:
+ print('WARNING: --img-size %g must be multiple of max stride %g, updating to %g' % (img_size, s, new_size))
+ return new_size
+
+
+def check_imshow():
+ # Check if environment supports image displays
+ try:
+ assert not is_docker(), 'cv2.imshow() is disabled in Docker environments'
+ assert not is_colab(), 'cv2.imshow() is disabled in Google Colab environments'
+ cv2.imshow('test', np.zeros((1, 1, 3)))
+ cv2.waitKey(1)
+ cv2.destroyAllWindows()
+ cv2.waitKey(1)
+ return True
+ except Exception as e:
+ print(f'WARNING: Environment does not support cv2.imshow() or PIL Image.show() image displays\n{e}')
+ return False
+
+
+def check_file(file):
+ # Search for file if not found
+ if Path(file).is_file() or file == '':
+ return file
+ else:
+ files = glob.glob('./**/' + file, recursive=True) # find file
+ assert len(files), f'File Not Found: {file}' # assert file was found
+ assert len(files) == 1, f"Multiple files match '{file}', specify exact path: {files}" # assert unique
+ return files[0] # return file
+
+
+def check_dataset(dict):
+ # Download dataset if not found locally
+ val, s = dict.get('val'), dict.get('download')
+ if val and len(val):
+ val = [Path(x).resolve() for x in (val if isinstance(val, list) else [val])] # val path
+ if not all(x.exists() for x in val):
+ print('\nWARNING: Dataset not found, nonexistent paths: %s' % [str(x) for x in val if not x.exists()])
+ if s and len(s): # download script
+ if s.startswith('http') and s.endswith('.zip'): # URL
+ f = Path(s).name # filename
+ print(f'Downloading {s} ...')
+ torch.hub.download_url_to_file(s, f)
+ r = os.system(f'unzip -q {f} -d ../ && rm {f}') # unzip
+ elif s.startswith('bash '): # bash script
+ print(f'Running {s} ...')
+ r = os.system(s)
+ else: # python script
+ r = exec(s) # return None
+ print('Dataset autodownload %s\n' % ('success' if r in (0, None) else 'failure')) # print result
+ else:
+ raise Exception('Dataset not found.')
+
+
+def download(url, dir='.', unzip=True, delete=True, curl=False, threads=1):
+ # Multi-threaded file download and unzip function
+ def download_one(url, dir):
+ # Download 1 file
+ f = dir / Path(url).name # filename
+ if not f.exists():
+ print(f'Downloading {url} to {f}...')
+ if curl:
+ os.system(f"curl -L '{url}' -o '{f}' --retry 9 -C -") # curl download, retry and resume on fail
+ else:
+ torch.hub.download_url_to_file(url, f, progress=True) # torch download
+ if unzip and f.suffix in ('.zip', '.gz'):
+ print(f'Unzipping {f}...')
+ if f.suffix == '.zip':
+ s = f'unzip -qo {f} -d {dir} && rm {f}' # unzip -quiet -overwrite
+ elif f.suffix == '.gz':
+ s = f'tar xfz {f} --directory {f.parent}' # unzip
+ if delete: # delete zip file after unzip
+ s += f' && rm {f}'
+ os.system(s)
+
+ dir = Path(dir)
+ dir.mkdir(parents=True, exist_ok=True) # make directory
+ if threads > 1:
+ pool = ThreadPool(threads)
+ pool.imap(lambda x: download_one(*x), zip(url, repeat(dir))) # multi-threaded
+ pool.close()
+ pool.join()
+ else:
+ for u in tuple(url) if isinstance(url, str) else url:
+ download_one(u, dir)
+
+
+def make_divisible(x, divisor):
+ # Returns x evenly divisible by divisor
+ return math.ceil(x / divisor) * divisor
+
+
+def clean_str(s):
+ # Cleans a string by replacing special characters with underscore _
+ return re.sub(pattern="[|@#!¡·$€%&()=?¿^*;:,¨´><+]", repl="_", string=s)
+
+
+def one_cycle(y1=0.0, y2=1.0, steps=100):
+ # lambda function for sinusoidal ramp from y1 to y2
+ return lambda x: ((1 - math.cos(x * math.pi / steps)) / 2) * (y2 - y1) + y1
+
+
+def colorstr(*input):
+ # Colors a string https://en.wikipedia.org/wiki/ANSI_escape_code, i.e. colorstr('blue', 'hello world')
+ *args, string = input if len(input) > 1 else ('blue', 'bold', input[0]) # color arguments, string
+ colors = {'black': '\033[30m', # basic colors
+ 'red': '\033[31m',
+ 'green': '\033[32m',
+ 'yellow': '\033[33m',
+ 'blue': '\033[34m',
+ 'magenta': '\033[35m',
+ 'cyan': '\033[36m',
+ 'white': '\033[37m',
+ 'bright_black': '\033[90m', # bright colors
+ 'bright_red': '\033[91m',
+ 'bright_green': '\033[92m',
+ 'bright_yellow': '\033[93m',
+ 'bright_blue': '\033[94m',
+ 'bright_magenta': '\033[95m',
+ 'bright_cyan': '\033[96m',
+ 'bright_white': '\033[97m',
+ 'end': '\033[0m', # misc
+ 'bold': '\033[1m',
+ 'underline': '\033[4m'}
+ return ''.join(colors[x] for x in args) + f'{string}' + colors['end']
+
+
+def labels_to_class_weights(labels, nc=80):
+ # Get class weights (inverse frequency) from training labels
+ if labels[0] is None: # no labels loaded
+ return torch.Tensor()
+
+ labels = np.concatenate(labels, 0) # labels.shape = (866643, 5) for COCO
+ classes = labels[:, 0].astype(np.int) # labels = [class xywh]
+ weights = np.bincount(classes, minlength=nc) # occurrences per class
+
+ # Prepend gridpoint count (for uCE training)
+ # gpi = ((320 / 32 * np.array([1, 2, 4])) ** 2 * 3).sum() # gridpoints per image
+ # weights = np.hstack([gpi * len(labels) - weights.sum() * 9, weights * 9]) ** 0.5 # prepend gridpoints to start
+
+ weights[weights == 0] = 1 # replace empty bins with 1
+ weights = 1 / weights # number of targets per class
+ weights /= weights.sum() # normalize
+ return torch.from_numpy(weights)
+
+
+def labels_to_image_weights(labels, nc=80, class_weights=np.ones(80)):
+ # Produces image weights based on class_weights and image contents
+ class_counts = np.array([np.bincount(x[:, 0].astype(np.int), minlength=nc) for x in labels])
+ image_weights = (class_weights.reshape(1, nc) * class_counts).sum(1)
+ # index = random.choices(range(n), weights=image_weights, k=1) # weight image sample
+ return image_weights
+
+
+def coco80_to_coco91_class(): # converts 80-index (val2014) to 91-index (paper)
+ # https://tech.amikelive.com/node-718/what-object-categories-labels-are-in-coco-dataset/
+ # a = np.loadtxt('data/coco.names', dtype='str', delimiter='\n')
+ # b = np.loadtxt('data/coco_paper.names', dtype='str', delimiter='\n')
+ # x1 = [list(a[i] == b).index(True) + 1 for i in range(80)] # darknet to coco
+ # x2 = [list(b[i] == a).index(True) if any(b[i] == a) else None for i in range(91)] # coco to darknet
+ x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 65, 67, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 84, 85, 86, 87, 88, 89, 90]
+ return x
+
+
+def xyxy2xywh(x):
+ # Convert nx4 boxes from [x1, y1, x2, y2] to [x, y, w, h] where xy1=top-left, xy2=bottom-right
+ y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x)
+ y[:, 0] = (x[:, 0] + x[:, 2]) / 2 # x center
+ y[:, 1] = (x[:, 1] + x[:, 3]) / 2 # y center
+ y[:, 2] = x[:, 2] - x[:, 0] # width
+ y[:, 3] = x[:, 3] - x[:, 1] # height
+ return y
+
+
+def xywh2xyxy(x):
+ # Convert nx4 boxes from [x, y, w, h] to [x1, y1, x2, y2] where xy1=top-left, xy2=bottom-right
+ y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x)
+ y[:, 0] = x[:, 0] - x[:, 2] / 2 # top left x
+ y[:, 1] = x[:, 1] - x[:, 3] / 2 # top left y
+ y[:, 2] = x[:, 0] + x[:, 2] / 2 # bottom right x
+ y[:, 3] = x[:, 1] + x[:, 3] / 2 # bottom right y
+ return y
+
+
+def xywhn2xyxy(x, w=640, h=640, padw=0, padh=0):
+ # Convert nx4 boxes from [x, y, w, h] normalized to [x1, y1, x2, y2] where xy1=top-left, xy2=bottom-right
+ y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x)
+ y[:, 0] = w * (x[:, 0] - x[:, 2] / 2) + padw # top left x
+ y[:, 1] = h * (x[:, 1] - x[:, 3] / 2) + padh # top left y
+ y[:, 2] = w * (x[:, 0] + x[:, 2] / 2) + padw # bottom right x
+ y[:, 3] = h * (x[:, 1] + x[:, 3] / 2) + padh # bottom right y
+ return y
+
+
+def xyn2xy(x, w=640, h=640, padw=0, padh=0):
+ # Convert normalized segments into pixel segments, shape (n,2)
+ y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x)
+ y[:, 0] = w * x[:, 0] + padw # top left x
+ y[:, 1] = h * x[:, 1] + padh # top left y
+ return y
+
+
+def segment2box(segment, width=640, height=640):
+ # Convert 1 segment label to 1 box label, applying inside-image constraint, i.e. (xy1, xy2, ...) to (xyxy)
+ x, y = segment.T # segment xy
+ inside = (x >= 0) & (y >= 0) & (x <= width) & (y <= height)
+ x, y, = x[inside], y[inside]
+ return np.array([x.min(), y.min(), x.max(), y.max()]) if any(x) else np.zeros((1, 4)) # xyxy
+
+
+def segments2boxes(segments):
+ # Convert segment labels to box labels, i.e. (cls, xy1, xy2, ...) to (cls, xywh)
+ boxes = []
+ for s in segments:
+ x, y = s.T # segment xy
+ boxes.append([x.min(), y.min(), x.max(), y.max()]) # cls, xyxy
+ return xyxy2xywh(np.array(boxes)) # cls, xywh
+
+
+def resample_segments(segments, n=1000):
+ # Up-sample an (n,2) segment
+ for i, s in enumerate(segments):
+ x = np.linspace(0, len(s) - 1, n)
+ xp = np.arange(len(s))
+ segments[i] = np.concatenate([np.interp(x, xp, s[:, i]) for i in range(2)]).reshape(2, -1).T # segment xy
+ return segments
+
+
+def scale_coords(img1_shape, coords, img0_shape, ratio_pad=None):
+ # Rescale coords (xyxy) from img1_shape to img0_shape
+ if ratio_pad is None: # calculate from img0_shape
+ gain = min(img1_shape[0] / img0_shape[0], img1_shape[1] / img0_shape[1]) # gain = old / new
+ pad = (img1_shape[1] - img0_shape[1] * gain) / 2, (img1_shape[0] - img0_shape[0] * gain) / 2 # wh padding
+ else:
+ gain = ratio_pad[0][0]
+ pad = ratio_pad[1]
+
+ coords[:, [0, 2]] -= pad[0] # x padding
+ coords[:, [1, 3]] -= pad[1] # y padding
+ coords[:, :4] /= gain
+ clip_coords(coords, img0_shape)
+ return coords
+
+
+def clip_coords(boxes, img_shape):
+ # Clip bounding xyxy bounding boxes to image shape (height, width)
+ boxes[:, 0].clamp_(0, img_shape[1]) # x1
+ boxes[:, 1].clamp_(0, img_shape[0]) # y1
+ boxes[:, 2].clamp_(0, img_shape[1]) # x2
+ boxes[:, 3].clamp_(0, img_shape[0]) # y2
+
+
+def bbox_iou(box1, box2, x1y1x2y2=True, GIoU=False, DIoU=False, CIoU=False, eps=1e-7):
+ # Returns the IoU of box1 to box2. box1 is 4, box2 is nx4
+ box2 = box2.T
+
+ # Get the coordinates of bounding boxes
+ if x1y1x2y2: # x1, y1, x2, y2 = box1
+ b1_x1, b1_y1, b1_x2, b1_y2 = box1[0], box1[1], box1[2], box1[3]
+ b2_x1, b2_y1, b2_x2, b2_y2 = box2[0], box2[1], box2[2], box2[3]
+ else: # transform from xywh to xyxy
+ b1_x1, b1_x2 = box1[0] - box1[2] / 2, box1[0] + box1[2] / 2
+ b1_y1, b1_y2 = box1[1] - box1[3] / 2, box1[1] + box1[3] / 2
+ b2_x1, b2_x2 = box2[0] - box2[2] / 2, box2[0] + box2[2] / 2
+ b2_y1, b2_y2 = box2[1] - box2[3] / 2, box2[1] + box2[3] / 2
+
+ # Intersection area
+ inter = (torch.min(b1_x2, b2_x2) - torch.max(b1_x1, b2_x1)).clamp(0) * \
+ (torch.min(b1_y2, b2_y2) - torch.max(b1_y1, b2_y1)).clamp(0)
+
+ # Union Area
+ w1, h1 = b1_x2 - b1_x1, b1_y2 - b1_y1 + eps
+ w2, h2 = b2_x2 - b2_x1, b2_y2 - b2_y1 + eps
+ union = w1 * h1 + w2 * h2 - inter + eps
+
+ iou = inter / union
+ if GIoU or DIoU or CIoU:
+ cw = torch.max(b1_x2, b2_x2) - torch.min(b1_x1, b2_x1) # convex (smallest enclosing box) width
+ ch = torch.max(b1_y2, b2_y2) - torch.min(b1_y1, b2_y1) # convex height
+ if CIoU or DIoU: # Distance or Complete IoU https://arxiv.org/abs/1911.08287v1
+ c2 = cw ** 2 + ch ** 2 + eps # convex diagonal squared
+ rho2 = ((b2_x1 + b2_x2 - b1_x1 - b1_x2) ** 2 +
+ (b2_y1 + b2_y2 - b1_y1 - b1_y2) ** 2) / 4 # center distance squared
+ if DIoU:
+ return iou - rho2 / c2 # DIoU
+ elif CIoU: # https://github.com/Zzh-tju/DIoU-SSD-pytorch/blob/master/utils/box/box_utils.py#L47
+ v = (4 / math.pi ** 2) * torch.pow(torch.atan(w2 / h2) - torch.atan(w1 / h1), 2)
+ with torch.no_grad():
+ alpha = v / (v - iou + (1 + eps))
+ return iou - (rho2 / c2 + v * alpha) # CIoU
+ else: # GIoU https://arxiv.org/pdf/1902.09630.pdf
+ c_area = cw * ch + eps # convex area
+ return iou - (c_area - union) / c_area # GIoU
+ else:
+ return iou # IoU
+
+
+def box_iou(box1, box2):
+ # https://github.com/pytorch/vision/blob/master/torchvision/ops/boxes.py
+ """
+ Return intersection-over-union (Jaccard index) of boxes.
+ Both sets of boxes are expected to be in (x1, y1, x2, y2) format.
+ Arguments:
+ box1 (Tensor[N, 4])
+ box2 (Tensor[M, 4])
+ Returns:
+ iou (Tensor[N, M]): the NxM matrix containing the pairwise
+ IoU values for every element in boxes1 and boxes2
+ """
+
+ def box_area(box):
+ # box = 4xn
+ return (box[2] - box[0]) * (box[3] - box[1])
+
+ area1 = box_area(box1.T)
+ area2 = box_area(box2.T)
+
+ # inter(N,M) = (rb(N,M,2) - lt(N,M,2)).clamp(0).prod(2)
+ inter = (torch.min(box1[:, None, 2:], box2[:, 2:]) - torch.max(box1[:, None, :2], box2[:, :2])).clamp(0).prod(2)
+ return inter / (area1[:, None] + area2 - inter) # iou = inter / (area1 + area2 - inter)
+
+
+def wh_iou(wh1, wh2):
+ # Returns the nxm IoU matrix. wh1 is nx2, wh2 is mx2
+ wh1 = wh1[:, None] # [N,1,2]
+ wh2 = wh2[None] # [1,M,2]
+ inter = torch.min(wh1, wh2).prod(2) # [N,M]
+ return inter / (wh1.prod(2) + wh2.prod(2) - inter) # iou = inter / (area1 + area2 - inter)
+
+
+def non_max_suppression(prediction, conf_thres=0.25, iou_thres=0.45, classes=None, agnostic=False, multi_label=False,
+ labels=(), max_det=300):
+ """Runs Non-Maximum Suppression (NMS) on inference results
+
+ Returns:
+ list of detections, on (n,6) tensor per image [xyxy, conf, cls]
+ """
+
+ nc = prediction.shape[2] - 5 # number of classes
+ xc = prediction[..., 4] > conf_thres # candidates
+
+ # Checks
+ assert 0 <= conf_thres <= 1, f'Invalid Confidence threshold {conf_thres}, valid values are between 0.0 and 1.0'
+ assert 0 <= iou_thres <= 1, f'Invalid IoU {iou_thres}, valid values are between 0.0 and 1.0'
+
+ # Settings
+ min_wh, max_wh = 2, 4096 # (pixels) minimum and maximum box width and height
+ max_nms = 30000 # maximum number of boxes into torchvision.ops.nms()
+ time_limit = 10.0 # seconds to quit after
+ redundant = True # require redundant detections
+ multi_label &= nc > 1 # multiple labels per box (adds 0.5ms/img)
+ merge = False # use merge-NMS
+
+ t = time.time()
+ output = [torch.zeros((0, 6), device=prediction.device)] * prediction.shape[0]
+ for xi, x in enumerate(prediction): # image index, image inference
+ # Apply constraints
+ # x[((x[..., 2:4] < min_wh) | (x[..., 2:4] > max_wh)).any(1), 4] = 0 # width-height
+ x = x[xc[xi]] # confidence
+
+ # Cat apriori labels if autolabelling
+ if labels and len(labels[xi]):
+ l = labels[xi]
+ v = torch.zeros((len(l), nc + 5), device=x.device)
+ v[:, :4] = l[:, 1:5] # box
+ v[:, 4] = 1.0 # conf
+ v[range(len(l)), l[:, 0].long() + 5] = 1.0 # cls
+ x = torch.cat((x, v), 0)
+
+ # If none remain process next image
+ if not x.shape[0]:
+ continue
+
+ # Compute conf
+ x[:, 5:] *= x[:, 4:5] # conf = obj_conf * cls_conf
+
+ # Box (center x, center y, width, height) to (x1, y1, x2, y2)
+ box = xywh2xyxy(x[:, :4])
+
+ # Detections matrix nx6 (xyxy, conf, cls)
+ if multi_label:
+ i, j = (x[:, 5:] > conf_thres).nonzero(as_tuple=False).T
+ x = torch.cat((box[i], x[i, j + 5, None], j[:, None].float()), 1)
+ else: # best class only
+ conf, j = x[:, 5:].max(1, keepdim=True)
+ x = torch.cat((box, conf, j.float()), 1)[conf.view(-1) > conf_thres]
+
+ # Filter by class
+ if classes is not None:
+ x = x[(x[:, 5:6] == torch.tensor(classes, device=x.device)).any(1)]
+
+ # Apply finite constraint
+ # if not torch.isfinite(x).all():
+ # x = x[torch.isfinite(x).all(1)]
+
+ # Check shape
+ n = x.shape[0] # number of boxes
+ if not n: # no boxes
+ continue
+ elif n > max_nms: # excess boxes
+ x = x[x[:, 4].argsort(descending=True)[:max_nms]] # sort by confidence
+
+ # Batched NMS
+ c = x[:, 5:6] * (0 if agnostic else max_wh) # classes
+ boxes, scores = x[:, :4] + c, x[:, 4] # boxes (offset by class), scores
+ i = torchvision.ops.nms(boxes, scores, iou_thres) # NMS
+ if i.shape[0] > max_det: # limit detections
+ i = i[:max_det]
+ if merge and (1 < n < 3E3): # Merge NMS (boxes merged using weighted mean)
+ # update boxes as boxes(i,4) = weights(i,n) * boxes(n,4)
+ iou = box_iou(boxes[i], boxes) > iou_thres # iou matrix
+ weights = iou * scores[None] # box weights
+ x[i, :4] = torch.mm(weights, x[:, :4]).float() / weights.sum(1, keepdim=True) # merged boxes
+ if redundant:
+ i = i[iou.sum(1) > 1] # require redundancy
+
+ output[xi] = x[i]
+ if (time.time() - t) > time_limit:
+ print(f'WARNING: NMS time limit {time_limit}s exceeded')
+ break # time limit exceeded
+
+ return output
+
+
+def strip_optimizer(f='best.pt', s=''): # from utils.general import *; strip_optimizer()
+ # Strip optimizer from 'f' to finalize training, optionally save as 's'
+ x = torch.load(f, map_location=torch.device('cpu'))
+ if x.get('ema'):
+ x['model'] = x['ema'] # replace model with ema
+ for k in 'optimizer', 'training_results', 'wandb_id', 'ema', 'updates': # keys
+ x[k] = None
+ x['epoch'] = -1
+ x['model'].half() # to FP16
+ for p in x['model'].parameters():
+ p.requires_grad = False
+ torch.save(x, s or f)
+ mb = os.path.getsize(s or f) / 1E6 # filesize
+ print(f"Optimizer stripped from {f},{(' saved as %s,' % s) if s else ''} {mb:.1f}MB")
+
+
+def print_mutation(hyp, results, yaml_file='hyp_evolved.yaml', bucket=''):
+ # Print mutation results to evolve.txt (for use with train.py --evolve)
+ a = '%10s' * len(hyp) % tuple(hyp.keys()) # hyperparam keys
+ b = '%10.3g' * len(hyp) % tuple(hyp.values()) # hyperparam values
+ c = '%10.4g' * len(results) % results # results (P, R, mAP@0.5, mAP@0.5:0.95, val_losses x 3)
+ print('\n%s\n%s\nEvolved fitness: %s\n' % (a, b, c))
+
+ if bucket:
+ url = 'gs://%s/evolve.txt' % bucket
+ if gsutil_getsize(url) > (os.path.getsize('evolve.txt') if os.path.exists('evolve.txt') else 0):
+ os.system('gsutil cp %s .' % url) # download evolve.txt if larger than local
+
+ with open('evolve.txt', 'a') as f: # append result
+ f.write(c + b + '\n')
+ x = np.unique(np.loadtxt('evolve.txt', ndmin=2), axis=0) # load unique rows
+ x = x[np.argsort(-fitness(x))] # sort
+ np.savetxt('evolve.txt', x, '%10.3g') # save sort by fitness
+
+ # Save yaml
+ for i, k in enumerate(hyp.keys()):
+ hyp[k] = float(x[0, i + 7])
+ with open(yaml_file, 'w') as f:
+ results = tuple(x[0, :7])
+ c = '%10.4g' * len(results) % results # results (P, R, mAP@0.5, mAP@0.5:0.95, val_losses x 3)
+ f.write('# Hyperparameter Evolution Results\n# Generations: %g\n# Metrics: ' % len(x) + c + '\n\n')
+ yaml.safe_dump(hyp, f, sort_keys=False)
+
+ if bucket:
+ os.system('gsutil cp evolve.txt %s gs://%s' % (yaml_file, bucket)) # upload
+
+
+def apply_classifier(x, model, img, im0):
+ # Apply a second stage classifier to yolo outputs
+ im0 = [im0] if isinstance(im0, np.ndarray) else im0
+ for i, d in enumerate(x): # per image
+ if d is not None and len(d):
+ d = d.clone()
+
+ # Reshape and pad cutouts
+ b = xyxy2xywh(d[:, :4]) # boxes
+ b[:, 2:] = b[:, 2:].max(1)[0].unsqueeze(1) # rectangle to square
+ b[:, 2:] = b[:, 2:] * 1.3 + 30 # pad
+ d[:, :4] = xywh2xyxy(b).long()
+
+ # Rescale boxes from img_size to im0 size
+ scale_coords(img.shape[2:], d[:, :4], im0[i].shape)
+
+ # Classes
+ pred_cls1 = d[:, 5].long()
+ ims = []
+ for j, a in enumerate(d): # per item
+ cutout = im0[i][int(a[1]):int(a[3]), int(a[0]):int(a[2])]
+ im = cv2.resize(cutout, (224, 224)) # BGR
+ # cv2.imwrite('test%i.jpg' % j, cutout)
+
+ im = im[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416
+ im = np.ascontiguousarray(im, dtype=np.float32) # uint8 to float32
+ im /= 255.0 # 0 - 255 to 0.0 - 1.0
+ ims.append(im)
+
+ pred_cls2 = model(torch.Tensor(ims).to(d.device)).argmax(1) # classifier prediction
+ x[i] = x[i][pred_cls1 == pred_cls2] # retain matching class detections
+
+ return x
+
+
+def save_one_box(xyxy, im, file='image.jpg', gain=1.02, pad=10, square=False, BGR=False, save=True):
+ # Save image crop as {file} with crop size multiple {gain} and {pad} pixels. Save and/or return crop
+ xyxy = torch.tensor(xyxy).view(-1, 4)
+ b = xyxy2xywh(xyxy) # boxes
+ if square:
+ b[:, 2:] = b[:, 2:].max(1)[0].unsqueeze(1) # attempt rectangle to square
+ b[:, 2:] = b[:, 2:] * gain + pad # box wh * gain + pad
+ xyxy = xywh2xyxy(b).long()
+ clip_coords(xyxy, im.shape)
+ crop = im[int(xyxy[0, 1]):int(xyxy[0, 3]), int(xyxy[0, 0]):int(xyxy[0, 2]), ::(1 if BGR else -1)]
+ if save:
+ cv2.imwrite(str(increment_path(file, mkdir=True).with_suffix('.jpg')), crop)
+ return crop
+
+
+def increment_path(path, exist_ok=False, sep='', mkdir=False):
+ # Increment file or directory path, i.e. runs/exp --> runs/exp{sep}2, runs/exp{sep}3, ... etc.
+ path = Path(path) # os-agnostic
+ if path.exists() and not exist_ok:
+ suffix = path.suffix
+ path = path.with_suffix('')
+ dirs = glob.glob(f"{path}{sep}*") # similar paths
+ matches = [re.search(rf"%s{sep}(\d+)" % path.stem, d) for d in dirs]
+ i = [int(m.groups()[0]) for m in matches if m] # indices
+ n = max(i) + 1 if i else 2 # increment number
+ path = Path(f"{path}{sep}{n}{suffix}") # update path
+ dir = path if path.suffix == '' else path.parent # directory
+ if not dir.exists() and mkdir:
+ dir.mkdir(parents=True, exist_ok=True) # make directory
+ return path
diff --git a/Yolov5-Deepsort/utils/google_app_engine/Dockerfile b/Yolov5-Deepsort/utils/google_app_engine/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..0155618f475104e9858b81470339558156c94e13
--- /dev/null
+++ b/Yolov5-Deepsort/utils/google_app_engine/Dockerfile
@@ -0,0 +1,25 @@
+FROM gcr.io/google-appengine/python
+
+# Create a virtualenv for dependencies. This isolates these packages from
+# system-level packages.
+# Use -p python3 or -p python3.7 to select python version. Default is version 2.
+RUN virtualenv /env -p python3
+
+# Setting these environment variables are the same as running
+# source /env/bin/activate.
+ENV VIRTUAL_ENV /env
+ENV PATH /env/bin:$PATH
+
+RUN apt-get update && apt-get install -y python-opencv
+
+# Copy the application's requirements.txt and run pip to install all
+# dependencies into the virtualenv.
+ADD requirements.txt /app/requirements.txt
+RUN pip install -r /app/requirements.txt
+
+# Add the application source code.
+ADD . /app
+
+# Run a WSGI server to serve the application. gunicorn must be declared as
+# a dependency in requirements.txt.
+CMD gunicorn -b :$PORT main:app
diff --git a/Yolov5-Deepsort/utils/google_app_engine/additional_requirements.txt b/Yolov5-Deepsort/utils/google_app_engine/additional_requirements.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5fcc30524a59ca2d3356b07725df7e2b64f81422
--- /dev/null
+++ b/Yolov5-Deepsort/utils/google_app_engine/additional_requirements.txt
@@ -0,0 +1,4 @@
+# add these requirements in your app on top of the existing ones
+pip==18.1
+Flask==1.0.2
+gunicorn==19.9.0
diff --git a/Yolov5-Deepsort/utils/google_app_engine/app.yaml b/Yolov5-Deepsort/utils/google_app_engine/app.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..ac29d104b144abd634482b35282725d694e84a2b
--- /dev/null
+++ b/Yolov5-Deepsort/utils/google_app_engine/app.yaml
@@ -0,0 +1,14 @@
+runtime: custom
+env: flex
+
+service: yolov5app
+
+liveness_check:
+ initial_delay_sec: 600
+
+manual_scaling:
+ instances: 1
+resources:
+ cpu: 1
+ memory_gb: 4
+ disk_size_gb: 20
\ No newline at end of file
diff --git a/Yolov5-Deepsort/utils/google_utils.py b/Yolov5-Deepsort/utils/google_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..63d3e5b212f3813847eeeb5cd6524155a7058f27
--- /dev/null
+++ b/Yolov5-Deepsort/utils/google_utils.py
@@ -0,0 +1,127 @@
+# Google utils: https://cloud.google.com/storage/docs/reference/libraries
+
+import os
+import platform
+import subprocess
+import time
+from pathlib import Path
+
+import requests
+import torch
+
+
+def gsutil_getsize(url=''):
+ # gs://bucket/file size https://cloud.google.com/storage/docs/gsutil/commands/du
+ s = subprocess.check_output(f'gsutil du {url}', shell=True).decode('utf-8')
+ return eval(s.split(' ')[0]) if len(s) else 0 # bytes
+
+
+def attempt_download(file, repo='ultralytics/yolov5'):
+ # Attempt file download if does not exist
+ file = Path(str(file).strip().replace("'", ''))
+
+ if not file.exists():
+ file.parent.mkdir(parents=True, exist_ok=True) # make parent dir (if required)
+ try:
+ response = requests.get(f'https://api.github.com/repos/{repo}/releases/latest').json() # github api
+ assets = [x['name'] for x in response['assets']] # release assets, i.e. ['yolov5s.pt', 'yolov5m.pt', ...]
+ tag = response['tag_name'] # i.e. 'v1.0'
+ except: # fallback plan
+ assets = ['yolov5s.pt', 'yolov5m.pt', 'yolov5l.pt', 'yolov5x.pt',
+ 'yolov5s6.pt', 'yolov5m6.pt', 'yolov5l6.pt', 'yolov5x6.pt']
+ try:
+ tag = subprocess.check_output('git tag', shell=True, stderr=subprocess.STDOUT).decode().split()[-1]
+ except:
+ tag = 'v5.0' # current release
+
+ name = file.name
+ if name in assets:
+ msg = f'{file} missing, try downloading from https://github.com/{repo}/releases/'
+ redundant = False # second download option
+ try: # GitHub
+ url = f'https://github.com/{repo}/releases/download/{tag}/{name}'
+ print(f'Downloading {url} to {file}...')
+ torch.hub.download_url_to_file(url, file)
+ assert file.exists() and file.stat().st_size > 1E6 # check
+ except Exception as e: # GCP
+ print(f'Download error: {e}')
+ assert redundant, 'No secondary mirror'
+ url = f'https://storage.googleapis.com/{repo}/ckpt/{name}'
+ print(f'Downloading {url} to {file}...')
+ os.system(f"curl -L '{url}' -o '{file}' --retry 3 -C -") # curl download, retry and resume on fail
+ finally:
+ if not file.exists() or file.stat().st_size < 1E6: # check
+ file.unlink(missing_ok=True) # remove partial downloads
+ print(f'ERROR: Download failure: {msg}')
+ print('')
+ return
+
+
+def gdrive_download(id='16TiPfZj7htmTyhntwcZyEEAejOUxuT6m', file='tmp.zip'):
+ # Downloads a file from Google Drive. from yolov5.utils.google_utils import *; gdrive_download()
+ t = time.time()
+ file = Path(file)
+ cookie = Path('cookie') # gdrive cookie
+ print(f'Downloading https://drive.google.com/uc?export=download&id={id} as {file}... ', end='')
+ file.unlink(missing_ok=True) # remove existing file
+ cookie.unlink(missing_ok=True) # remove existing cookie
+
+ # Attempt file download
+ out = "NUL" if platform.system() == "Windows" else "/dev/null"
+ os.system(f'curl -c ./cookie -s -L "drive.google.com/uc?export=download&id={id}" > {out}')
+ if os.path.exists('cookie'): # large file
+ s = f'curl -Lb ./cookie "drive.google.com/uc?export=download&confirm={get_token()}&id={id}" -o {file}'
+ else: # small file
+ s = f'curl -s -L -o {file} "drive.google.com/uc?export=download&id={id}"'
+ r = os.system(s) # execute, capture return
+ cookie.unlink(missing_ok=True) # remove existing cookie
+
+ # Error check
+ if r != 0:
+ file.unlink(missing_ok=True) # remove partial
+ print('Download error ') # raise Exception('Download error')
+ return r
+
+ # Unzip if archive
+ if file.suffix == '.zip':
+ print('unzipping... ', end='')
+ os.system(f'unzip -q {file}') # unzip
+ file.unlink() # remove zip to free space
+
+ print(f'Done ({time.time() - t:.1f}s)')
+ return r
+
+
+def get_token(cookie="./cookie"):
+ with open(cookie) as f:
+ for line in f:
+ if "download" in line:
+ return line.split()[-1]
+ return ""
+
+# def upload_blob(bucket_name, source_file_name, destination_blob_name):
+# # Uploads a file to a bucket
+# # https://cloud.google.com/storage/docs/uploading-objects#storage-upload-object-python
+#
+# storage_client = storage.Client()
+# bucket = storage_client.get_bucket(bucket_name)
+# blob = bucket.blob(destination_blob_name)
+#
+# blob.upload_from_filename(source_file_name)
+#
+# print('File {} uploaded to {}.'.format(
+# source_file_name,
+# destination_blob_name))
+#
+#
+# def download_blob(bucket_name, source_blob_name, destination_file_name):
+# # Uploads a blob from a bucket
+# storage_client = storage.Client()
+# bucket = storage_client.get_bucket(bucket_name)
+# blob = bucket.blob(source_blob_name)
+#
+# blob.download_to_filename(destination_file_name)
+#
+# print('Blob {} downloaded to {}.'.format(
+# source_blob_name,
+# destination_file_name))
diff --git a/Yolov5-Deepsort/utils/loss.py b/Yolov5-Deepsort/utils/loss.py
new file mode 100644
index 0000000000000000000000000000000000000000..9e78df17fdf31c23c70a5d1fce8b17fb7b78726a
--- /dev/null
+++ b/Yolov5-Deepsort/utils/loss.py
@@ -0,0 +1,216 @@
+# Loss functions
+
+import torch
+import torch.nn as nn
+
+from utils.general import bbox_iou
+from utils.torch_utils import is_parallel
+
+
+def smooth_BCE(eps=0.1): # https://github.com/ultralytics/yolov3/issues/238#issuecomment-598028441
+ # return positive, negative label smoothing BCE targets
+ return 1.0 - 0.5 * eps, 0.5 * eps
+
+
+class BCEBlurWithLogitsLoss(nn.Module):
+ # BCEwithLogitLoss() with reduced missing label effects.
+ def __init__(self, alpha=0.05):
+ super(BCEBlurWithLogitsLoss, self).__init__()
+ self.loss_fcn = nn.BCEWithLogitsLoss(reduction='none') # must be nn.BCEWithLogitsLoss()
+ self.alpha = alpha
+
+ def forward(self, pred, true):
+ loss = self.loss_fcn(pred, true)
+ pred = torch.sigmoid(pred) # prob from logits
+ dx = pred - true # reduce only missing label effects
+ # dx = (pred - true).abs() # reduce missing label and false label effects
+ alpha_factor = 1 - torch.exp((dx - 1) / (self.alpha + 1e-4))
+ loss *= alpha_factor
+ return loss.mean()
+
+
+class FocalLoss(nn.Module):
+ # Wraps focal loss around existing loss_fcn(), i.e. criteria = FocalLoss(nn.BCEWithLogitsLoss(), gamma=1.5)
+ def __init__(self, loss_fcn, gamma=1.5, alpha=0.25):
+ super(FocalLoss, self).__init__()
+ self.loss_fcn = loss_fcn # must be nn.BCEWithLogitsLoss()
+ self.gamma = gamma
+ self.alpha = alpha
+ self.reduction = loss_fcn.reduction
+ self.loss_fcn.reduction = 'none' # required to apply FL to each element
+
+ def forward(self, pred, true):
+ loss = self.loss_fcn(pred, true)
+ # p_t = torch.exp(-loss)
+ # loss *= self.alpha * (1.000001 - p_t) ** self.gamma # non-zero power for gradient stability
+
+ # TF implementation https://github.com/tensorflow/addons/blob/v0.7.1/tensorflow_addons/losses/focal_loss.py
+ pred_prob = torch.sigmoid(pred) # prob from logits
+ p_t = true * pred_prob + (1 - true) * (1 - pred_prob)
+ alpha_factor = true * self.alpha + (1 - true) * (1 - self.alpha)
+ modulating_factor = (1.0 - p_t) ** self.gamma
+ loss *= alpha_factor * modulating_factor
+
+ if self.reduction == 'mean':
+ return loss.mean()
+ elif self.reduction == 'sum':
+ return loss.sum()
+ else: # 'none'
+ return loss
+
+
+class QFocalLoss(nn.Module):
+ # Wraps Quality focal loss around existing loss_fcn(), i.e. criteria = FocalLoss(nn.BCEWithLogitsLoss(), gamma=1.5)
+ def __init__(self, loss_fcn, gamma=1.5, alpha=0.25):
+ super(QFocalLoss, self).__init__()
+ self.loss_fcn = loss_fcn # must be nn.BCEWithLogitsLoss()
+ self.gamma = gamma
+ self.alpha = alpha
+ self.reduction = loss_fcn.reduction
+ self.loss_fcn.reduction = 'none' # required to apply FL to each element
+
+ def forward(self, pred, true):
+ loss = self.loss_fcn(pred, true)
+
+ pred_prob = torch.sigmoid(pred) # prob from logits
+ alpha_factor = true * self.alpha + (1 - true) * (1 - self.alpha)
+ modulating_factor = torch.abs(true - pred_prob) ** self.gamma
+ loss *= alpha_factor * modulating_factor
+
+ if self.reduction == 'mean':
+ return loss.mean()
+ elif self.reduction == 'sum':
+ return loss.sum()
+ else: # 'none'
+ return loss
+
+
+class ComputeLoss:
+ # Compute losses
+ def __init__(self, model, autobalance=False):
+ super(ComputeLoss, self).__init__()
+ device = next(model.parameters()).device # get model device
+ h = model.hyp # hyperparameters
+
+ # Define criteria
+ BCEcls = nn.BCEWithLogitsLoss(pos_weight=torch.tensor([h['cls_pw']], device=device))
+ BCEobj = nn.BCEWithLogitsLoss(pos_weight=torch.tensor([h['obj_pw']], device=device))
+
+ # Class label smoothing https://arxiv.org/pdf/1902.04103.pdf eqn 3
+ self.cp, self.cn = smooth_BCE(eps=h.get('label_smoothing', 0.0)) # positive, negative BCE targets
+
+ # Focal loss
+ g = h['fl_gamma'] # focal loss gamma
+ if g > 0:
+ BCEcls, BCEobj = FocalLoss(BCEcls, g), FocalLoss(BCEobj, g)
+
+ det = model.module.model[-1] if is_parallel(model) else model.model[-1] # Detect() module
+ self.balance = {3: [4.0, 1.0, 0.4]}.get(det.nl, [4.0, 1.0, 0.25, 0.06, .02]) # P3-P7
+ self.ssi = list(det.stride).index(16) if autobalance else 0 # stride 16 index
+ self.BCEcls, self.BCEobj, self.gr, self.hyp, self.autobalance = BCEcls, BCEobj, model.gr, h, autobalance
+ for k in 'na', 'nc', 'nl', 'anchors':
+ setattr(self, k, getattr(det, k))
+
+ def __call__(self, p, targets): # predictions, targets, model
+ device = targets.device
+ lcls, lbox, lobj = torch.zeros(1, device=device), torch.zeros(1, device=device), torch.zeros(1, device=device)
+ tcls, tbox, indices, anchors = self.build_targets(p, targets) # targets
+
+ # Losses
+ for i, pi in enumerate(p): # layer index, layer predictions
+ b, a, gj, gi = indices[i] # image, anchor, gridy, gridx
+ tobj = torch.zeros_like(pi[..., 0], device=device) # target obj
+
+ n = b.shape[0] # number of targets
+ if n:
+ ps = pi[b, a, gj, gi] # prediction subset corresponding to targets
+
+ # Regression
+ pxy = ps[:, :2].sigmoid() * 2. - 0.5
+ pwh = (ps[:, 2:4].sigmoid() * 2) ** 2 * anchors[i]
+ pbox = torch.cat((pxy, pwh), 1) # predicted box
+ iou = bbox_iou(pbox.T, tbox[i], x1y1x2y2=False, CIoU=True) # iou(prediction, target)
+ lbox += (1.0 - iou).mean() # iou loss
+
+ # Objectness
+ tobj[b, a, gj, gi] = (1.0 - self.gr) + self.gr * iou.detach().clamp(0).type(tobj.dtype) # iou ratio
+
+ # Classification
+ if self.nc > 1: # cls loss (only if multiple classes)
+ t = torch.full_like(ps[:, 5:], self.cn, device=device) # targets
+ t[range(n), tcls[i]] = self.cp
+ lcls += self.BCEcls(ps[:, 5:], t) # BCE
+
+ # Append targets to text file
+ # with open('targets.txt', 'a') as file:
+ # [file.write('%11.5g ' * 4 % tuple(x) + '\n') for x in torch.cat((txy[i], twh[i]), 1)]
+
+ obji = self.BCEobj(pi[..., 4], tobj)
+ lobj += obji * self.balance[i] # obj loss
+ if self.autobalance:
+ self.balance[i] = self.balance[i] * 0.9999 + 0.0001 / obji.detach().item()
+
+ if self.autobalance:
+ self.balance = [x / self.balance[self.ssi] for x in self.balance]
+ lbox *= self.hyp['box']
+ lobj *= self.hyp['obj']
+ lcls *= self.hyp['cls']
+ bs = tobj.shape[0] # batch size
+
+ loss = lbox + lobj + lcls
+ return loss * bs, torch.cat((lbox, lobj, lcls, loss)).detach()
+
+ def build_targets(self, p, targets):
+ # Build targets for compute_loss(), input targets(image,class,x,y,w,h)
+ na, nt = self.na, targets.shape[0] # number of anchors, targets
+ tcls, tbox, indices, anch = [], [], [], []
+ gain = torch.ones(7, device=targets.device) # normalized to gridspace gain
+ ai = torch.arange(na, device=targets.device).float().view(na, 1).repeat(1, nt) # same as .repeat_interleave(nt)
+ targets = torch.cat((targets.repeat(na, 1, 1), ai[:, :, None]), 2) # append anchor indices
+
+ g = 0.5 # bias
+ off = torch.tensor([[0, 0],
+ [1, 0], [0, 1], [-1, 0], [0, -1], # j,k,l,m
+ # [1, 1], [1, -1], [-1, 1], [-1, -1], # jk,jm,lk,lm
+ ], device=targets.device).float() * g # offsets
+
+ for i in range(self.nl):
+ anchors = self.anchors[i]
+ gain[2:6] = torch.tensor(p[i].shape)[[3, 2, 3, 2]] # xyxy gain
+
+ # Match targets to anchors
+ t = targets * gain
+ if nt:
+ # Matches
+ r = t[:, :, 4:6] / anchors[:, None] # wh ratio
+ j = torch.max(r, 1. / r).max(2)[0] < self.hyp['anchor_t'] # compare
+ # j = wh_iou(anchors, t[:, 4:6]) > model.hyp['iou_t'] # iou(3,n)=wh_iou(anchors(3,2), gwh(n,2))
+ t = t[j] # filter
+
+ # Offsets
+ gxy = t[:, 2:4] # grid xy
+ gxi = gain[[2, 3]] - gxy # inverse
+ j, k = ((gxy % 1. < g) & (gxy > 1.)).T
+ l, m = ((gxi % 1. < g) & (gxi > 1.)).T
+ j = torch.stack((torch.ones_like(j), j, k, l, m))
+ t = t.repeat((5, 1, 1))[j]
+ offsets = (torch.zeros_like(gxy)[None] + off[:, None])[j]
+ else:
+ t = targets[0]
+ offsets = 0
+
+ # Define
+ b, c = t[:, :2].long().T # image, class
+ gxy = t[:, 2:4] # grid xy
+ gwh = t[:, 4:6] # grid wh
+ gij = (gxy - offsets).long()
+ gi, gj = gij.T # grid xy indices
+
+ # Append
+ a = t[:, 6].long() # anchor indices
+ indices.append((b, a, gj.clamp_(0, gain[3] - 1), gi.clamp_(0, gain[2] - 1))) # image, anchor, grid indices
+ tbox.append(torch.cat((gxy - gij, gwh), 1)) # box
+ anch.append(anchors[a]) # anchors
+ tcls.append(c) # class
+
+ return tcls, tbox, indices, anch
diff --git a/Yolov5-Deepsort/utils/metrics.py b/Yolov5-Deepsort/utils/metrics.py
new file mode 100644
index 0000000000000000000000000000000000000000..323c84b6c873c87a3530a3caec60982a7d83a3b8
--- /dev/null
+++ b/Yolov5-Deepsort/utils/metrics.py
@@ -0,0 +1,223 @@
+# Model validation metrics
+
+from pathlib import Path
+
+import matplotlib.pyplot as plt
+import numpy as np
+import torch
+
+from . import general
+
+
+def fitness(x):
+ # Model fitness as a weighted combination of metrics
+ w = [0.0, 0.0, 0.1, 0.9] # weights for [P, R, mAP@0.5, mAP@0.5:0.95]
+ return (x[:, :4] * w).sum(1)
+
+
+def ap_per_class(tp, conf, pred_cls, target_cls, plot=False, save_dir='.', names=()):
+ """ Compute the average precision, given the recall and precision curves.
+ Source: https://github.com/rafaelpadilla/Object-Detection-Metrics.
+ # Arguments
+ tp: True positives (nparray, nx1 or nx10).
+ conf: Objectness value from 0-1 (nparray).
+ pred_cls: Predicted object classes (nparray).
+ target_cls: True object classes (nparray).
+ plot: Plot precision-recall curve at mAP@0.5
+ save_dir: Plot save directory
+ # Returns
+ The average precision as computed in py-faster-rcnn.
+ """
+
+ # Sort by objectness
+ i = np.argsort(-conf)
+ tp, conf, pred_cls = tp[i], conf[i], pred_cls[i]
+
+ # Find unique classes
+ unique_classes = np.unique(target_cls)
+ nc = unique_classes.shape[0] # number of classes, number of detections
+
+ # Create Precision-Recall curve and compute AP for each class
+ px, py = np.linspace(0, 1, 1000), [] # for plotting
+ ap, p, r = np.zeros((nc, tp.shape[1])), np.zeros((nc, 1000)), np.zeros((nc, 1000))
+ for ci, c in enumerate(unique_classes):
+ i = pred_cls == c
+ n_l = (target_cls == c).sum() # number of labels
+ n_p = i.sum() # number of predictions
+
+ if n_p == 0 or n_l == 0:
+ continue
+ else:
+ # Accumulate FPs and TPs
+ fpc = (1 - tp[i]).cumsum(0)
+ tpc = tp[i].cumsum(0)
+
+ # Recall
+ recall = tpc / (n_l + 1e-16) # recall curve
+ r[ci] = np.interp(-px, -conf[i], recall[:, 0], left=0) # negative x, xp because xp decreases
+
+ # Precision
+ precision = tpc / (tpc + fpc) # precision curve
+ p[ci] = np.interp(-px, -conf[i], precision[:, 0], left=1) # p at pr_score
+
+ # AP from recall-precision curve
+ for j in range(tp.shape[1]):
+ ap[ci, j], mpre, mrec = compute_ap(recall[:, j], precision[:, j])
+ if plot and j == 0:
+ py.append(np.interp(px, mrec, mpre)) # precision at mAP@0.5
+
+ # Compute F1 (harmonic mean of precision and recall)
+ f1 = 2 * p * r / (p + r + 1e-16)
+ if plot:
+ plot_pr_curve(px, py, ap, Path(save_dir) / 'PR_curve.png', names)
+ plot_mc_curve(px, f1, Path(save_dir) / 'F1_curve.png', names, ylabel='F1')
+ plot_mc_curve(px, p, Path(save_dir) / 'P_curve.png', names, ylabel='Precision')
+ plot_mc_curve(px, r, Path(save_dir) / 'R_curve.png', names, ylabel='Recall')
+
+ i = f1.mean(0).argmax() # max F1 index
+ return p[:, i], r[:, i], ap, f1[:, i], unique_classes.astype('int32')
+
+
+def compute_ap(recall, precision):
+ """ Compute the average precision, given the recall and precision curves
+ # Arguments
+ recall: The recall curve (list)
+ precision: The precision curve (list)
+ # Returns
+ Average precision, precision curve, recall curve
+ """
+
+ # Append sentinel values to beginning and end
+ mrec = np.concatenate(([0.], recall, [recall[-1] + 0.01]))
+ mpre = np.concatenate(([1.], precision, [0.]))
+
+ # Compute the precision envelope
+ mpre = np.flip(np.maximum.accumulate(np.flip(mpre)))
+
+ # Integrate area under curve
+ method = 'interp' # methods: 'continuous', 'interp'
+ if method == 'interp':
+ x = np.linspace(0, 1, 101) # 101-point interp (COCO)
+ ap = np.trapz(np.interp(x, mrec, mpre), x) # integrate
+ else: # 'continuous'
+ i = np.where(mrec[1:] != mrec[:-1])[0] # points where x axis (recall) changes
+ ap = np.sum((mrec[i + 1] - mrec[i]) * mpre[i + 1]) # area under curve
+
+ return ap, mpre, mrec
+
+
+class ConfusionMatrix:
+ # Updated version of https://github.com/kaanakan/object_detection_confusion_matrix
+ def __init__(self, nc, conf=0.25, iou_thres=0.45):
+ self.matrix = np.zeros((nc + 1, nc + 1))
+ self.nc = nc # number of classes
+ self.conf = conf
+ self.iou_thres = iou_thres
+
+ def process_batch(self, detections, labels):
+ """
+ Return intersection-over-union (Jaccard index) of boxes.
+ Both sets of boxes are expected to be in (x1, y1, x2, y2) format.
+ Arguments:
+ detections (Array[N, 6]), x1, y1, x2, y2, conf, class
+ labels (Array[M, 5]), class, x1, y1, x2, y2
+ Returns:
+ None, updates confusion matrix accordingly
+ """
+ detections = detections[detections[:, 4] > self.conf]
+ gt_classes = labels[:, 0].int()
+ detection_classes = detections[:, 5].int()
+ iou = general.box_iou(labels[:, 1:], detections[:, :4])
+
+ x = torch.where(iou > self.iou_thres)
+ if x[0].shape[0]:
+ matches = torch.cat((torch.stack(x, 1), iou[x[0], x[1]][:, None]), 1).cpu().numpy()
+ if x[0].shape[0] > 1:
+ matches = matches[matches[:, 2].argsort()[::-1]]
+ matches = matches[np.unique(matches[:, 1], return_index=True)[1]]
+ matches = matches[matches[:, 2].argsort()[::-1]]
+ matches = matches[np.unique(matches[:, 0], return_index=True)[1]]
+ else:
+ matches = np.zeros((0, 3))
+
+ n = matches.shape[0] > 0
+ m0, m1, _ = matches.transpose().astype(np.int16)
+ for i, gc in enumerate(gt_classes):
+ j = m0 == i
+ if n and sum(j) == 1:
+ self.matrix[detection_classes[m1[j]], gc] += 1 # correct
+ else:
+ self.matrix[self.nc, gc] += 1 # background FP
+
+ if n:
+ for i, dc in enumerate(detection_classes):
+ if not any(m1 == i):
+ self.matrix[dc, self.nc] += 1 # background FN
+
+ def matrix(self):
+ return self.matrix
+
+ def plot(self, save_dir='', names=()):
+ try:
+ import seaborn as sn
+
+ array = self.matrix / (self.matrix.sum(0).reshape(1, self.nc + 1) + 1E-6) # normalize
+ array[array < 0.005] = np.nan # don't annotate (would appear as 0.00)
+
+ fig = plt.figure(figsize=(12, 9), tight_layout=True)
+ sn.set(font_scale=1.0 if self.nc < 50 else 0.8) # for label size
+ labels = (0 < len(names) < 99) and len(names) == self.nc # apply names to ticklabels
+ sn.heatmap(array, annot=self.nc < 30, annot_kws={"size": 8}, cmap='Blues', fmt='.2f', square=True,
+ xticklabels=names + ['background FP'] if labels else "auto",
+ yticklabels=names + ['background FN'] if labels else "auto").set_facecolor((1, 1, 1))
+ fig.axes[0].set_xlabel('True')
+ fig.axes[0].set_ylabel('Predicted')
+ fig.savefig(Path(save_dir) / 'confusion_matrix.png', dpi=250)
+ except Exception as e:
+ pass
+
+ def print(self):
+ for i in range(self.nc + 1):
+ print(' '.join(map(str, self.matrix[i])))
+
+
+# Plots ----------------------------------------------------------------------------------------------------------------
+
+def plot_pr_curve(px, py, ap, save_dir='pr_curve.png', names=()):
+ # Precision-recall curve
+ fig, ax = plt.subplots(1, 1, figsize=(9, 6), tight_layout=True)
+ py = np.stack(py, axis=1)
+
+ if 0 < len(names) < 21: # display per-class legend if < 21 classes
+ for i, y in enumerate(py.T):
+ ax.plot(px, y, linewidth=1, label=f'{names[i]} {ap[i, 0]:.3f}') # plot(recall, precision)
+ else:
+ ax.plot(px, py, linewidth=1, color='grey') # plot(recall, precision)
+
+ ax.plot(px, py.mean(1), linewidth=3, color='blue', label='all classes %.3f mAP@0.5' % ap[:, 0].mean())
+ ax.set_xlabel('Recall')
+ ax.set_ylabel('Precision')
+ ax.set_xlim(0, 1)
+ ax.set_ylim(0, 1)
+ plt.legend(bbox_to_anchor=(1.04, 1), loc="upper left")
+ fig.savefig(Path(save_dir), dpi=250)
+
+
+def plot_mc_curve(px, py, save_dir='mc_curve.png', names=(), xlabel='Confidence', ylabel='Metric'):
+ # Metric-confidence curve
+ fig, ax = plt.subplots(1, 1, figsize=(9, 6), tight_layout=True)
+
+ if 0 < len(names) < 21: # display per-class legend if < 21 classes
+ for i, y in enumerate(py):
+ ax.plot(px, y, linewidth=1, label=f'{names[i]}') # plot(confidence, metric)
+ else:
+ ax.plot(px, py.T, linewidth=1, color='grey') # plot(confidence, metric)
+
+ y = py.mean(0)
+ ax.plot(px, y, linewidth=3, color='blue', label=f'all classes {y.max():.2f} at {px[y.argmax()]:.3f}')
+ ax.set_xlabel(xlabel)
+ ax.set_ylabel(ylabel)
+ ax.set_xlim(0, 1)
+ ax.set_ylim(0, 1)
+ plt.legend(bbox_to_anchor=(1.04, 1), loc="upper left")
+ fig.savefig(Path(save_dir), dpi=250)
diff --git a/Yolov5-Deepsort/utils/plots.py b/Yolov5-Deepsort/utils/plots.py
new file mode 100644
index 0000000000000000000000000000000000000000..8313ef210f9047c327cea7ac63c59e6f6140f2d1
--- /dev/null
+++ b/Yolov5-Deepsort/utils/plots.py
@@ -0,0 +1,446 @@
+# Plotting utils
+
+import glob
+import math
+import os
+import random
+from copy import copy
+from pathlib import Path
+
+import cv2
+import matplotlib
+import matplotlib.pyplot as plt
+import numpy as np
+import pandas as pd
+import seaborn as sns
+import torch
+import yaml
+from PIL import Image, ImageDraw, ImageFont
+
+from utils.general import xywh2xyxy, xyxy2xywh
+from utils.metrics import fitness
+
+# Settings
+matplotlib.rc('font', **{'size': 11})
+matplotlib.use('Agg') # for writing to files only
+
+
+class Colors:
+ # Ultralytics color palette https://ultralytics.com/
+ def __init__(self):
+ # hex = matplotlib.colors.TABLEAU_COLORS.values()
+ hex = ('FF3838', 'FF9D97', 'FF701F', 'FFB21D', 'CFD231', '48F90A', '92CC17', '3DDB86', '1A9334', '00D4BB',
+ '2C99A8', '00C2FF', '344593', '6473FF', '0018EC', '8438FF', '520085', 'CB38FF', 'FF95C8', 'FF37C7')
+ self.palette = [self.hex2rgb('#' + c) for c in hex]
+ self.n = len(self.palette)
+
+ def __call__(self, i, bgr=False):
+ c = self.palette[int(i) % self.n]
+ return (c[2], c[1], c[0]) if bgr else c
+
+ @staticmethod
+ def hex2rgb(h): # rgb order (PIL)
+ return tuple(int(h[1 + i:1 + i + 2], 16) for i in (0, 2, 4))
+
+
+colors = Colors() # create instance for 'from utils.plots import colors'
+
+
+def hist2d(x, y, n=100):
+ # 2d histogram used in labels.png and evolve.png
+ xedges, yedges = np.linspace(x.min(), x.max(), n), np.linspace(y.min(), y.max(), n)
+ hist, xedges, yedges = np.histogram2d(x, y, (xedges, yedges))
+ xidx = np.clip(np.digitize(x, xedges) - 1, 0, hist.shape[0] - 1)
+ yidx = np.clip(np.digitize(y, yedges) - 1, 0, hist.shape[1] - 1)
+ return np.log(hist[xidx, yidx])
+
+
+def butter_lowpass_filtfilt(data, cutoff=1500, fs=50000, order=5):
+ from scipy.signal import butter, filtfilt
+
+ # https://stackoverflow.com/questions/28536191/how-to-filter-smooth-with-scipy-numpy
+ def butter_lowpass(cutoff, fs, order):
+ nyq = 0.5 * fs
+ normal_cutoff = cutoff / nyq
+ return butter(order, normal_cutoff, btype='low', analog=False)
+
+ b, a = butter_lowpass(cutoff, fs, order=order)
+ return filtfilt(b, a, data) # forward-backward filter
+
+
+def plot_one_box(x, im, color=(128, 128, 128), label=None, line_thickness=3):
+ # Plots one bounding box on image 'im' using OpenCV
+ assert im.data.contiguous, 'Image not contiguous. Apply np.ascontiguousarray(im) to plot_on_box() input image.'
+ tl = line_thickness or round(0.002 * (im.shape[0] + im.shape[1]) / 2) + 1 # line/font thickness
+ c1, c2 = (int(x[0]), int(x[1])), (int(x[2]), int(x[3]))
+ cv2.rectangle(im, c1, c2, color, thickness=tl, lineType=cv2.LINE_AA)
+ if label:
+ tf = max(tl - 1, 1) # font thickness
+ t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0]
+ c2 = c1[0] + t_size[0], c1[1] - t_size[1] - 3
+ cv2.rectangle(im, c1, c2, color, -1, cv2.LINE_AA) # filled
+ cv2.putText(im, label, (c1[0], c1[1] - 2), 0, tl / 3, [225, 255, 255], thickness=tf, lineType=cv2.LINE_AA)
+
+
+def plot_one_box_PIL(box, im, color=(128, 128, 128), label=None, line_thickness=None):
+ # Plots one bounding box on image 'im' using PIL
+ im = Image.fromarray(im)
+ draw = ImageDraw.Draw(im)
+ line_thickness = line_thickness or max(int(min(im.size) / 200), 2)
+ draw.rectangle(box, width=line_thickness, outline=color) # plot
+ if label:
+ font = ImageFont.truetype("Arial.ttf", size=max(round(max(im.size) / 40), 12))
+ txt_width, txt_height = font.getsize(label)
+ draw.rectangle([box[0], box[1] - txt_height + 4, box[0] + txt_width, box[1]], fill=color)
+ draw.text((box[0], box[1] - txt_height + 1), label, fill=(255, 255, 255), font=font)
+ return np.asarray(im)
+
+
+def plot_wh_methods(): # from utils.plots import *; plot_wh_methods()
+ # Compares the two methods for width-height anchor multiplication
+ # https://github.com/ultralytics/yolov3/issues/168
+ x = np.arange(-4.0, 4.0, .1)
+ ya = np.exp(x)
+ yb = torch.sigmoid(torch.from_numpy(x)).numpy() * 2
+
+ fig = plt.figure(figsize=(6, 3), tight_layout=True)
+ plt.plot(x, ya, '.-', label='YOLOv3')
+ plt.plot(x, yb ** 2, '.-', label='YOLOv5 ^2')
+ plt.plot(x, yb ** 1.6, '.-', label='YOLOv5 ^1.6')
+ plt.xlim(left=-4, right=4)
+ plt.ylim(bottom=0, top=6)
+ plt.xlabel('input')
+ plt.ylabel('output')
+ plt.grid()
+ plt.legend()
+ fig.savefig('comparison.png', dpi=200)
+
+
+def output_to_target(output):
+ # Convert model output to target format [batch_id, class_id, x, y, w, h, conf]
+ targets = []
+ for i, o in enumerate(output):
+ for *box, conf, cls in o.cpu().numpy():
+ targets.append([i, cls, *list(*xyxy2xywh(np.array(box)[None])), conf])
+ return np.array(targets)
+
+
+def plot_images(images, targets, paths=None, fname='images.jpg', names=None, max_size=640, max_subplots=16):
+ # Plot image grid with labels
+
+ if isinstance(images, torch.Tensor):
+ images = images.cpu().float().numpy()
+ if isinstance(targets, torch.Tensor):
+ targets = targets.cpu().numpy()
+
+ # un-normalise
+ if np.max(images[0]) <= 1:
+ images *= 255
+
+ tl = 3 # line thickness
+ tf = max(tl - 1, 1) # font thickness
+ bs, _, h, w = images.shape # batch size, _, height, width
+ bs = min(bs, max_subplots) # limit plot images
+ ns = np.ceil(bs ** 0.5) # number of subplots (square)
+
+ # Check if we should resize
+ scale_factor = max_size / max(h, w)
+ if scale_factor < 1:
+ h = math.ceil(scale_factor * h)
+ w = math.ceil(scale_factor * w)
+
+ mosaic = np.full((int(ns * h), int(ns * w), 3), 255, dtype=np.uint8) # init
+ for i, img in enumerate(images):
+ if i == max_subplots: # if last batch has fewer images than we expect
+ break
+
+ block_x = int(w * (i // ns))
+ block_y = int(h * (i % ns))
+
+ img = img.transpose(1, 2, 0)
+ if scale_factor < 1:
+ img = cv2.resize(img, (w, h))
+
+ mosaic[block_y:block_y + h, block_x:block_x + w, :] = img
+ if len(targets) > 0:
+ image_targets = targets[targets[:, 0] == i]
+ boxes = xywh2xyxy(image_targets[:, 2:6]).T
+ classes = image_targets[:, 1].astype('int')
+ labels = image_targets.shape[1] == 6 # labels if no conf column
+ conf = None if labels else image_targets[:, 6] # check for confidence presence (label vs pred)
+
+ if boxes.shape[1]:
+ if boxes.max() <= 1.01: # if normalized with tolerance 0.01
+ boxes[[0, 2]] *= w # scale to pixels
+ boxes[[1, 3]] *= h
+ elif scale_factor < 1: # absolute coords need scale if image scales
+ boxes *= scale_factor
+ boxes[[0, 2]] += block_x
+ boxes[[1, 3]] += block_y
+ for j, box in enumerate(boxes.T):
+ cls = int(classes[j])
+ color = colors(cls)
+ cls = names[cls] if names else cls
+ if labels or conf[j] > 0.25: # 0.25 conf thresh
+ label = '%s' % cls if labels else '%s %.1f' % (cls, conf[j])
+ plot_one_box(box, mosaic, label=label, color=color, line_thickness=tl)
+
+ # Draw image filename labels
+ if paths:
+ label = Path(paths[i]).name[:40] # trim to 40 char
+ t_size = cv2.getTextSize(label, 0, fontScale=tl / 3, thickness=tf)[0]
+ cv2.putText(mosaic, label, (block_x + 5, block_y + t_size[1] + 5), 0, tl / 3, [220, 220, 220], thickness=tf,
+ lineType=cv2.LINE_AA)
+
+ # Image border
+ cv2.rectangle(mosaic, (block_x, block_y), (block_x + w, block_y + h), (255, 255, 255), thickness=3)
+
+ if fname:
+ r = min(1280. / max(h, w) / ns, 1.0) # ratio to limit image size
+ mosaic = cv2.resize(mosaic, (int(ns * w * r), int(ns * h * r)), interpolation=cv2.INTER_AREA)
+ # cv2.imwrite(fname, cv2.cvtColor(mosaic, cv2.COLOR_BGR2RGB)) # cv2 save
+ Image.fromarray(mosaic).save(fname) # PIL save
+ return mosaic
+
+
+def plot_lr_scheduler(optimizer, scheduler, epochs=300, save_dir=''):
+ # Plot LR simulating training for full epochs
+ optimizer, scheduler = copy(optimizer), copy(scheduler) # do not modify originals
+ y = []
+ for _ in range(epochs):
+ scheduler.step()
+ y.append(optimizer.param_groups[0]['lr'])
+ plt.plot(y, '.-', label='LR')
+ plt.xlabel('epoch')
+ plt.ylabel('LR')
+ plt.grid()
+ plt.xlim(0, epochs)
+ plt.ylim(0)
+ plt.savefig(Path(save_dir) / 'LR.png', dpi=200)
+ plt.close()
+
+
+def plot_test_txt(): # from utils.plots import *; plot_test()
+ # Plot test.txt histograms
+ x = np.loadtxt('test.txt', dtype=np.float32)
+ box = xyxy2xywh(x[:, :4])
+ cx, cy = box[:, 0], box[:, 1]
+
+ fig, ax = plt.subplots(1, 1, figsize=(6, 6), tight_layout=True)
+ ax.hist2d(cx, cy, bins=600, cmax=10, cmin=0)
+ ax.set_aspect('equal')
+ plt.savefig('hist2d.png', dpi=300)
+
+ fig, ax = plt.subplots(1, 2, figsize=(12, 6), tight_layout=True)
+ ax[0].hist(cx, bins=600)
+ ax[1].hist(cy, bins=600)
+ plt.savefig('hist1d.png', dpi=200)
+
+
+def plot_targets_txt(): # from utils.plots import *; plot_targets_txt()
+ # Plot targets.txt histograms
+ x = np.loadtxt('targets.txt', dtype=np.float32).T
+ s = ['x targets', 'y targets', 'width targets', 'height targets']
+ fig, ax = plt.subplots(2, 2, figsize=(8, 8), tight_layout=True)
+ ax = ax.ravel()
+ for i in range(4):
+ ax[i].hist(x[i], bins=100, label='%.3g +/- %.3g' % (x[i].mean(), x[i].std()))
+ ax[i].legend()
+ ax[i].set_title(s[i])
+ plt.savefig('targets.jpg', dpi=200)
+
+
+def plot_study_txt(path='', x=None): # from utils.plots import *; plot_study_txt()
+ # Plot study.txt generated by test.py
+ fig, ax = plt.subplots(2, 4, figsize=(10, 6), tight_layout=True)
+ # ax = ax.ravel()
+
+ fig2, ax2 = plt.subplots(1, 1, figsize=(8, 4), tight_layout=True)
+ # for f in [Path(path) / f'study_coco_{x}.txt' for x in ['yolov5s6', 'yolov5m6', 'yolov5l6', 'yolov5x6']]:
+ for f in sorted(Path(path).glob('study*.txt')):
+ y = np.loadtxt(f, dtype=np.float32, usecols=[0, 1, 2, 3, 7, 8, 9], ndmin=2).T
+ x = np.arange(y.shape[1]) if x is None else np.array(x)
+ s = ['P', 'R', 'mAP@.5', 'mAP@.5:.95', 't_inference (ms/img)', 't_NMS (ms/img)', 't_total (ms/img)']
+ # for i in range(7):
+ # ax[i].plot(x, y[i], '.-', linewidth=2, markersize=8)
+ # ax[i].set_title(s[i])
+
+ j = y[3].argmax() + 1
+ ax2.plot(y[6, 1:j], y[3, 1:j] * 1E2, '.-', linewidth=2, markersize=8,
+ label=f.stem.replace('study_coco_', '').replace('yolo', 'YOLO'))
+
+ ax2.plot(1E3 / np.array([209, 140, 97, 58, 35, 18]), [34.6, 40.5, 43.0, 47.5, 49.7, 51.5],
+ 'k.-', linewidth=2, markersize=8, alpha=.25, label='EfficientDet')
+
+ ax2.grid(alpha=0.2)
+ ax2.set_yticks(np.arange(20, 60, 5))
+ ax2.set_xlim(0, 57)
+ ax2.set_ylim(30, 55)
+ ax2.set_xlabel('GPU Speed (ms/img)')
+ ax2.set_ylabel('COCO AP val')
+ ax2.legend(loc='lower right')
+ plt.savefig(str(Path(path).name) + '.png', dpi=300)
+
+
+def plot_labels(labels, names=(), save_dir=Path(''), loggers=None):
+ # plot dataset labels
+ print('Plotting labels... ')
+ c, b = labels[:, 0], labels[:, 1:].transpose() # classes, boxes
+ nc = int(c.max() + 1) # number of classes
+ x = pd.DataFrame(b.transpose(), columns=['x', 'y', 'width', 'height'])
+
+ # seaborn correlogram
+ sns.pairplot(x, corner=True, diag_kind='auto', kind='hist', diag_kws=dict(bins=50), plot_kws=dict(pmax=0.9))
+ plt.savefig(save_dir / 'labels_correlogram.jpg', dpi=200)
+ plt.close()
+
+ # matplotlib labels
+ matplotlib.use('svg') # faster
+ ax = plt.subplots(2, 2, figsize=(8, 8), tight_layout=True)[1].ravel()
+ y = ax[0].hist(c, bins=np.linspace(0, nc, nc + 1) - 0.5, rwidth=0.8)
+ # [y[2].patches[i].set_color([x / 255 for x in colors(i)]) for i in range(nc)] # update colors bug #3195
+ ax[0].set_ylabel('instances')
+ if 0 < len(names) < 30:
+ ax[0].set_xticks(range(len(names)))
+ ax[0].set_xticklabels(names, rotation=90, fontsize=10)
+ else:
+ ax[0].set_xlabel('classes')
+ sns.histplot(x, x='x', y='y', ax=ax[2], bins=50, pmax=0.9)
+ sns.histplot(x, x='width', y='height', ax=ax[3], bins=50, pmax=0.9)
+
+ # rectangles
+ labels[:, 1:3] = 0.5 # center
+ labels[:, 1:] = xywh2xyxy(labels[:, 1:]) * 2000
+ img = Image.fromarray(np.ones((2000, 2000, 3), dtype=np.uint8) * 255)
+ for cls, *box in labels[:1000]:
+ ImageDraw.Draw(img).rectangle(box, width=1, outline=colors(cls)) # plot
+ ax[1].imshow(img)
+ ax[1].axis('off')
+
+ for a in [0, 1, 2, 3]:
+ for s in ['top', 'right', 'left', 'bottom']:
+ ax[a].spines[s].set_visible(False)
+
+ plt.savefig(save_dir / 'labels.jpg', dpi=200)
+ matplotlib.use('Agg')
+ plt.close()
+
+ # loggers
+ for k, v in loggers.items() or {}:
+ if k == 'wandb' and v:
+ v.log({"Labels": [v.Image(str(x), caption=x.name) for x in save_dir.glob('*labels*.jpg')]}, commit=False)
+
+
+def plot_evolution(yaml_file='data/hyp.finetune.yaml'): # from utils.plots import *; plot_evolution()
+ # Plot hyperparameter evolution results in evolve.txt
+ with open(yaml_file) as f:
+ hyp = yaml.safe_load(f)
+ x = np.loadtxt('evolve.txt', ndmin=2)
+ f = fitness(x)
+ # weights = (f - f.min()) ** 2 # for weighted results
+ plt.figure(figsize=(10, 12), tight_layout=True)
+ matplotlib.rc('font', **{'size': 8})
+ for i, (k, v) in enumerate(hyp.items()):
+ y = x[:, i + 7]
+ # mu = (y * weights).sum() / weights.sum() # best weighted result
+ mu = y[f.argmax()] # best single result
+ plt.subplot(6, 5, i + 1)
+ plt.scatter(y, f, c=hist2d(y, f, 20), cmap='viridis', alpha=.8, edgecolors='none')
+ plt.plot(mu, f.max(), 'k+', markersize=15)
+ plt.title('%s = %.3g' % (k, mu), fontdict={'size': 9}) # limit to 40 characters
+ if i % 5 != 0:
+ plt.yticks([])
+ print('%15s: %.3g' % (k, mu))
+ plt.savefig('evolve.png', dpi=200)
+ print('\nPlot saved as evolve.png')
+
+
+def profile_idetection(start=0, stop=0, labels=(), save_dir=''):
+ # Plot iDetection '*.txt' per-image logs. from utils.plots import *; profile_idetection()
+ ax = plt.subplots(2, 4, figsize=(12, 6), tight_layout=True)[1].ravel()
+ s = ['Images', 'Free Storage (GB)', 'RAM Usage (GB)', 'Battery', 'dt_raw (ms)', 'dt_smooth (ms)', 'real-world FPS']
+ files = list(Path(save_dir).glob('frames*.txt'))
+ for fi, f in enumerate(files):
+ try:
+ results = np.loadtxt(f, ndmin=2).T[:, 90:-30] # clip first and last rows
+ n = results.shape[1] # number of rows
+ x = np.arange(start, min(stop, n) if stop else n)
+ results = results[:, x]
+ t = (results[0] - results[0].min()) # set t0=0s
+ results[0] = x
+ for i, a in enumerate(ax):
+ if i < len(results):
+ label = labels[fi] if len(labels) else f.stem.replace('frames_', '')
+ a.plot(t, results[i], marker='.', label=label, linewidth=1, markersize=5)
+ a.set_title(s[i])
+ a.set_xlabel('time (s)')
+ # if fi == len(files) - 1:
+ # a.set_ylim(bottom=0)
+ for side in ['top', 'right']:
+ a.spines[side].set_visible(False)
+ else:
+ a.remove()
+ except Exception as e:
+ print('Warning: Plotting error for %s; %s' % (f, e))
+
+ ax[1].legend()
+ plt.savefig(Path(save_dir) / 'idetection_profile.png', dpi=200)
+
+
+def plot_results_overlay(start=0, stop=0): # from utils.plots import *; plot_results_overlay()
+ # Plot training 'results*.txt', overlaying train and val losses
+ s = ['train', 'train', 'train', 'Precision', 'mAP@0.5', 'val', 'val', 'val', 'Recall', 'mAP@0.5:0.95'] # legends
+ t = ['Box', 'Objectness', 'Classification', 'P-R', 'mAP-F1'] # titles
+ for f in sorted(glob.glob('results*.txt') + glob.glob('../../Downloads/results*.txt')):
+ results = np.loadtxt(f, usecols=[2, 3, 4, 8, 9, 12, 13, 14, 10, 11], ndmin=2).T
+ n = results.shape[1] # number of rows
+ x = range(start, min(stop, n) if stop else n)
+ fig, ax = plt.subplots(1, 5, figsize=(14, 3.5), tight_layout=True)
+ ax = ax.ravel()
+ for i in range(5):
+ for j in [i, i + 5]:
+ y = results[j, x]
+ ax[i].plot(x, y, marker='.', label=s[j])
+ # y_smooth = butter_lowpass_filtfilt(y)
+ # ax[i].plot(x, np.gradient(y_smooth), marker='.', label=s[j])
+
+ ax[i].set_title(t[i])
+ ax[i].legend()
+ ax[i].set_ylabel(f) if i == 0 else None # add filename
+ fig.savefig(f.replace('.txt', '.png'), dpi=200)
+
+
+def plot_results(start=0, stop=0, bucket='', id=(), labels=(), save_dir=''):
+ # Plot training 'results*.txt'. from utils.plots import *; plot_results(save_dir='runs/train/exp')
+ fig, ax = plt.subplots(2, 5, figsize=(12, 6), tight_layout=True)
+ ax = ax.ravel()
+ s = ['Box', 'Objectness', 'Classification', 'Precision', 'Recall',
+ 'val Box', 'val Objectness', 'val Classification', 'mAP@0.5', 'mAP@0.5:0.95']
+ if bucket:
+ # files = ['https://storage.googleapis.com/%s/results%g.txt' % (bucket, x) for x in id]
+ files = ['results%g.txt' % x for x in id]
+ c = ('gsutil cp ' + '%s ' * len(files) + '.') % tuple('gs://%s/results%g.txt' % (bucket, x) for x in id)
+ os.system(c)
+ else:
+ files = list(Path(save_dir).glob('results*.txt'))
+ assert len(files), 'No results.txt files found in %s, nothing to plot.' % os.path.abspath(save_dir)
+ for fi, f in enumerate(files):
+ try:
+ results = np.loadtxt(f, usecols=[2, 3, 4, 8, 9, 12, 13, 14, 10, 11], ndmin=2).T
+ n = results.shape[1] # number of rows
+ x = range(start, min(stop, n) if stop else n)
+ for i in range(10):
+ y = results[i, x]
+ if i in [0, 1, 2, 5, 6, 7]:
+ y[y == 0] = np.nan # don't show zero loss values
+ # y /= y[0] # normalize
+ label = labels[fi] if len(labels) else f.stem
+ ax[i].plot(x, y, marker='.', label=label, linewidth=2, markersize=8)
+ ax[i].set_title(s[i])
+ # if i in [5, 6, 7]: # share train and val loss y axes
+ # ax[i].get_shared_y_axes().join(ax[i], ax[i - 5])
+ except Exception as e:
+ print('Warning: Plotting error for %s; %s' % (f, e))
+
+ ax[1].legend()
+ fig.savefig(Path(save_dir) / 'results.png', dpi=200)
diff --git a/Yolov5-Deepsort/utils/torch_utils.py b/Yolov5-Deepsort/utils/torch_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..5074fa95ae4be7118a8de66b729192887058285f
--- /dev/null
+++ b/Yolov5-Deepsort/utils/torch_utils.py
@@ -0,0 +1,304 @@
+# YOLOv5 PyTorch utils
+
+import datetime
+import logging
+import math
+import os
+import platform
+import subprocess
+import time
+from contextlib import contextmanager
+from copy import deepcopy
+from pathlib import Path
+
+import torch
+import torch.backends.cudnn as cudnn
+import torch.nn as nn
+import torch.nn.functional as F
+import torchvision
+
+try:
+ import thop # for FLOPS computation
+except ImportError:
+ thop = None
+logger = logging.getLogger(__name__)
+
+
+@contextmanager
+def torch_distributed_zero_first(local_rank: int):
+ """
+ Decorator to make all processes in distributed training wait for each local_master to do something.
+ """
+ if local_rank not in [-1, 0]:
+ torch.distributed.barrier()
+ yield
+ if local_rank == 0:
+ torch.distributed.barrier()
+
+
+def init_torch_seeds(seed=0):
+ # Speed-reproducibility tradeoff https://pytorch.org/docs/stable/notes/randomness.html
+ torch.manual_seed(seed)
+ if seed == 0: # slower, more reproducible
+ cudnn.benchmark, cudnn.deterministic = False, True
+ else: # faster, less reproducible
+ cudnn.benchmark, cudnn.deterministic = True, False
+
+
+def date_modified(path=__file__):
+ # return human-readable file modification date, i.e. '2021-3-26'
+ t = datetime.datetime.fromtimestamp(Path(path).stat().st_mtime)
+ return f'{t.year}-{t.month}-{t.day}'
+
+
+def git_describe(path=Path(__file__).parent): # path must be a directory
+ # return human-readable git description, i.e. v5.0-5-g3e25f1e https://git-scm.com/docs/git-describe
+ s = f'git -C {path} describe --tags --long --always'
+ try:
+ return subprocess.check_output(s, shell=True, stderr=subprocess.STDOUT).decode()[:-1]
+ except subprocess.CalledProcessError as e:
+ return '' # not a git repository
+
+
+def select_device(device='', batch_size=None):
+ # device = 'cpu' or '0' or '0,1,2,3'
+ s = f'YOLOv5 🚀 {git_describe() or date_modified()} torch {torch.__version__} ' # string
+ cpu = device.lower() == 'cpu'
+ if cpu:
+ os.environ['CUDA_VISIBLE_DEVICES'] = '-1' # force torch.cuda.is_available() = False
+ elif device: # non-cpu device requested
+ os.environ['CUDA_VISIBLE_DEVICES'] = device # set environment variable
+ assert torch.cuda.is_available(), f'CUDA unavailable, invalid device {device} requested' # check availability
+
+ cuda = not cpu and torch.cuda.is_available()
+ if cuda:
+ devices = device.split(',') if device else range(torch.cuda.device_count()) # i.e. 0,1,6,7
+ n = len(devices) # device count
+ if n > 1 and batch_size: # check batch_size is divisible by device_count
+ assert batch_size % n == 0, f'batch-size {batch_size} not multiple of GPU count {n}'
+ space = ' ' * len(s)
+ for i, d in enumerate(devices):
+ p = torch.cuda.get_device_properties(i)
+ s += f"{'' if i == 0 else space}CUDA:{d} ({p.name}, {p.total_memory / 1024 ** 2}MB)\n" # bytes to MB
+ else:
+ s += 'CPU\n'
+
+ logger.info(s.encode().decode('ascii', 'ignore') if platform.system() == 'Windows' else s) # emoji-safe
+ return torch.device('cuda:0' if cuda else 'cpu')
+
+
+def time_synchronized():
+ # pytorch-accurate time
+ if torch.cuda.is_available():
+ torch.cuda.synchronize()
+ return time.time()
+
+
+def profile(x, ops, n=100, device=None):
+ # profile a pytorch module or list of modules. Example usage:
+ # x = torch.randn(16, 3, 640, 640) # input
+ # m1 = lambda x: x * torch.sigmoid(x)
+ # m2 = nn.SiLU()
+ # profile(x, [m1, m2], n=100) # profile speed over 100 iterations
+
+ device = device or torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
+ x = x.to(device)
+ x.requires_grad = True
+ print(torch.__version__, device.type, torch.cuda.get_device_properties(0) if device.type == 'cuda' else '')
+ print(f"\n{'Params':>12s}{'GFLOPS':>12s}{'forward (ms)':>16s}{'backward (ms)':>16s}{'input':>24s}{'output':>24s}")
+ for m in ops if isinstance(ops, list) else [ops]:
+ m = m.to(device) if hasattr(m, 'to') else m # device
+ m = m.half() if hasattr(m, 'half') and isinstance(x, torch.Tensor) and x.dtype is torch.float16 else m # type
+ dtf, dtb, t = 0., 0., [0., 0., 0.] # dt forward, backward
+ try:
+ flops = thop.profile(m, inputs=(x,), verbose=False)[0] / 1E9 * 2 # GFLOPS
+ except:
+ flops = 0
+
+ for _ in range(n):
+ t[0] = time_synchronized()
+ y = m(x)
+ t[1] = time_synchronized()
+ try:
+ _ = y.sum().backward()
+ t[2] = time_synchronized()
+ except: # no backward method
+ t[2] = float('nan')
+ dtf += (t[1] - t[0]) * 1000 / n # ms per op forward
+ dtb += (t[2] - t[1]) * 1000 / n # ms per op backward
+
+ s_in = tuple(x.shape) if isinstance(x, torch.Tensor) else 'list'
+ s_out = tuple(y.shape) if isinstance(y, torch.Tensor) else 'list'
+ p = sum(list(x.numel() for x in m.parameters())) if isinstance(m, nn.Module) else 0 # parameters
+ print(f'{p:12}{flops:12.4g}{dtf:16.4g}{dtb:16.4g}{str(s_in):>24s}{str(s_out):>24s}')
+
+
+def is_parallel(model):
+ return type(model) in (nn.parallel.DataParallel, nn.parallel.DistributedDataParallel)
+
+
+def intersect_dicts(da, db, exclude=()):
+ # Dictionary intersection of matching keys and shapes, omitting 'exclude' keys, using da values
+ return {k: v for k, v in da.items() if k in db and not any(x in k for x in exclude) and v.shape == db[k].shape}
+
+
+def initialize_weights(model):
+ for m in model.modules():
+ t = type(m)
+ if t is nn.Conv2d:
+ pass # nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')
+ elif t is nn.BatchNorm2d:
+ m.eps = 1e-3
+ m.momentum = 0.03
+ elif t in [nn.Hardswish, nn.LeakyReLU, nn.ReLU, nn.ReLU6]:
+ m.inplace = True
+
+
+def find_modules(model, mclass=nn.Conv2d):
+ # Finds layer indices matching module class 'mclass'
+ return [i for i, m in enumerate(model.module_list) if isinstance(m, mclass)]
+
+
+def sparsity(model):
+ # Return global model sparsity
+ a, b = 0., 0.
+ for p in model.parameters():
+ a += p.numel()
+ b += (p == 0).sum()
+ return b / a
+
+
+def prune(model, amount=0.3):
+ # Prune model to requested global sparsity
+ import torch.nn.utils.prune as prune
+ print('Pruning model... ', end='')
+ for name, m in model.named_modules():
+ if isinstance(m, nn.Conv2d):
+ prune.l1_unstructured(m, name='weight', amount=amount) # prune
+ prune.remove(m, 'weight') # make permanent
+ print(' %.3g global sparsity' % sparsity(model))
+
+
+def fuse_conv_and_bn(conv, bn):
+ # Fuse convolution and batchnorm layers https://tehnokv.com/posts/fusing-batchnorm-and-conv/
+ fusedconv = nn.Conv2d(conv.in_channels,
+ conv.out_channels,
+ kernel_size=conv.kernel_size,
+ stride=conv.stride,
+ padding=conv.padding,
+ groups=conv.groups,
+ bias=True).requires_grad_(False).to(conv.weight.device)
+
+ # prepare filters
+ w_conv = conv.weight.clone().view(conv.out_channels, -1)
+ w_bn = torch.diag(bn.weight.div(torch.sqrt(bn.eps + bn.running_var)))
+ fusedconv.weight.copy_(torch.mm(w_bn, w_conv).view(fusedconv.weight.shape))
+
+ # prepare spatial bias
+ b_conv = torch.zeros(conv.weight.size(0), device=conv.weight.device) if conv.bias is None else conv.bias
+ b_bn = bn.bias - bn.weight.mul(bn.running_mean).div(torch.sqrt(bn.running_var + bn.eps))
+ fusedconv.bias.copy_(torch.mm(w_bn, b_conv.reshape(-1, 1)).reshape(-1) + b_bn)
+
+ return fusedconv
+
+
+def model_info(model, verbose=False, img_size=640):
+ # Model information. img_size may be int or list, i.e. img_size=640 or img_size=[640, 320]
+ n_p = sum(x.numel() for x in model.parameters()) # number parameters
+ n_g = sum(x.numel() for x in model.parameters() if x.requires_grad) # number gradients
+ if verbose:
+ print('%5s %40s %9s %12s %20s %10s %10s' % ('layer', 'name', 'gradient', 'parameters', 'shape', 'mu', 'sigma'))
+ for i, (name, p) in enumerate(model.named_parameters()):
+ name = name.replace('module_list.', '')
+ print('%5g %40s %9s %12g %20s %10.3g %10.3g' %
+ (i, name, p.requires_grad, p.numel(), list(p.shape), p.mean(), p.std()))
+
+ try: # FLOPS
+ from thop import profile
+ stride = max(int(model.stride.max()), 32) if hasattr(model, 'stride') else 32
+ img = torch.zeros((1, model.yaml.get('ch', 3), stride, stride), device=next(model.parameters()).device) # input
+ flops = profile(deepcopy(model), inputs=(img,), verbose=False)[0] / 1E9 * 2 # stride GFLOPS
+ img_size = img_size if isinstance(img_size, list) else [img_size, img_size] # expand if int/float
+ fs = ', %.1f GFLOPS' % (flops * img_size[0] / stride * img_size[1] / stride) # 640x640 GFLOPS
+ except (ImportError, Exception):
+ fs = ''
+
+ logger.info(f"Model Summary: {len(list(model.modules()))} layers, {n_p} parameters, {n_g} gradients{fs}")
+
+
+def load_classifier(name='resnet101', n=2):
+ # Loads a pretrained model reshaped to n-class output
+ model = torchvision.models.__dict__[name](pretrained=True)
+
+ # ResNet model properties
+ # input_size = [3, 224, 224]
+ # input_space = 'RGB'
+ # input_range = [0, 1]
+ # mean = [0.485, 0.456, 0.406]
+ # std = [0.229, 0.224, 0.225]
+
+ # Reshape output to n classes
+ filters = model.fc.weight.shape[1]
+ model.fc.bias = nn.Parameter(torch.zeros(n), requires_grad=True)
+ model.fc.weight = nn.Parameter(torch.zeros(n, filters), requires_grad=True)
+ model.fc.out_features = n
+ return model
+
+
+def scale_img(img, ratio=1.0, same_shape=False, gs=32): # img(16,3,256,416)
+ # scales img(bs,3,y,x) by ratio constrained to gs-multiple
+ if ratio == 1.0:
+ return img
+ else:
+ h, w = img.shape[2:]
+ s = (int(h * ratio), int(w * ratio)) # new size
+ img = F.interpolate(img, size=s, mode='bilinear', align_corners=False) # resize
+ if not same_shape: # pad/crop img
+ h, w = [math.ceil(x * ratio / gs) * gs for x in (h, w)]
+ return F.pad(img, [0, w - s[1], 0, h - s[0]], value=0.447) # value = imagenet mean
+
+
+def copy_attr(a, b, include=(), exclude=()):
+ # Copy attributes from b to a, options to only include [...] and to exclude [...]
+ for k, v in b.__dict__.items():
+ if (len(include) and k not in include) or k.startswith('_') or k in exclude:
+ continue
+ else:
+ setattr(a, k, v)
+
+
+class ModelEMA:
+ """ Model Exponential Moving Average from https://github.com/rwightman/pytorch-image-models
+ Keep a moving average of everything in the model state_dict (parameters and buffers).
+ This is intended to allow functionality like
+ https://www.tensorflow.org/api_docs/python/tf/train/ExponentialMovingAverage
+ A smoothed version of the weights is necessary for some training schemes to perform well.
+ This class is sensitive where it is initialized in the sequence of model init,
+ GPU assignment and distributed training wrappers.
+ """
+
+ def __init__(self, model, decay=0.9999, updates=0):
+ # Create EMA
+ self.ema = deepcopy(model.module if is_parallel(model) else model).eval() # FP32 EMA
+ # if next(model.parameters()).device.type != 'cpu':
+ # self.ema.half() # FP16 EMA
+ self.updates = updates # number of EMA updates
+ self.decay = lambda x: decay * (1 - math.exp(-x / 2000)) # decay exponential ramp (to help early epochs)
+ for p in self.ema.parameters():
+ p.requires_grad_(False)
+
+ def update(self, model):
+ # Update EMA parameters
+ with torch.no_grad():
+ self.updates += 1
+ d = self.decay(self.updates)
+
+ msd = model.module.state_dict() if is_parallel(model) else model.state_dict() # model state_dict
+ for k, v in self.ema.state_dict().items():
+ if v.dtype.is_floating_point:
+ v *= d
+ v += (1. - d) * msd[k].detach()
+
+ def update_attr(self, model, include=(), exclude=('process_group', 'reducer')):
+ # Update EMA attributes
+ copy_attr(self.ema, model, include, exclude)
diff --git a/Yolov5-Deepsort/utils/wandb_logging/__init__.py b/Yolov5-Deepsort/utils/wandb_logging/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Yolov5-Deepsort/utils/wandb_logging/log_dataset.py b/Yolov5-Deepsort/utils/wandb_logging/log_dataset.py
new file mode 100644
index 0000000000000000000000000000000000000000..f45a23011f15920e0cee33783504299337604a8d
--- /dev/null
+++ b/Yolov5-Deepsort/utils/wandb_logging/log_dataset.py
@@ -0,0 +1,24 @@
+import argparse
+
+import yaml
+
+from wandb_utils import WandbLogger
+
+WANDB_ARTIFACT_PREFIX = 'wandb-artifact://'
+
+
+def create_dataset_artifact(opt):
+ with open(opt.data) as f:
+ data = yaml.safe_load(f) # data dict
+ logger = WandbLogger(opt, '', None, data, job_type='Dataset Creation')
+
+
+if __name__ == '__main__':
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--data', type=str, default='data/coco128.yaml', help='data.yaml path')
+ parser.add_argument('--single-cls', action='store_true', help='train as single-class dataset')
+ parser.add_argument('--project', type=str, default='YOLOv5', help='name of W&B Project')
+ opt = parser.parse_args()
+ opt.resume = False # Explicitly disallow resume check for dataset upload job
+
+ create_dataset_artifact(opt)
diff --git a/Yolov5-Deepsort/utils/wandb_logging/wandb_utils.py b/Yolov5-Deepsort/utils/wandb_logging/wandb_utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..57ce9035a77736b744d9f74186cec592aba25200
--- /dev/null
+++ b/Yolov5-Deepsort/utils/wandb_logging/wandb_utils.py
@@ -0,0 +1,318 @@
+"""Utilities and tools for tracking runs with Weights & Biases."""
+import json
+import sys
+from pathlib import Path
+
+import torch
+import yaml
+from tqdm import tqdm
+
+sys.path.append(str(Path(__file__).parent.parent.parent)) # add utils/ to path
+from utils.datasets import LoadImagesAndLabels
+from utils.datasets import img2label_paths
+from utils.general import colorstr, xywh2xyxy, check_dataset, check_file
+
+try:
+ import wandb
+ from wandb import init, finish
+except ImportError:
+ wandb = None
+
+WANDB_ARTIFACT_PREFIX = 'wandb-artifact://'
+
+
+def remove_prefix(from_string, prefix=WANDB_ARTIFACT_PREFIX):
+ return from_string[len(prefix):]
+
+
+def check_wandb_config_file(data_config_file):
+ wandb_config = '_wandb.'.join(data_config_file.rsplit('.', 1)) # updated data.yaml path
+ if Path(wandb_config).is_file():
+ return wandb_config
+ return data_config_file
+
+
+def get_run_info(run_path):
+ run_path = Path(remove_prefix(run_path, WANDB_ARTIFACT_PREFIX))
+ run_id = run_path.stem
+ project = run_path.parent.stem
+ entity = run_path.parent.parent.stem
+ model_artifact_name = 'run_' + run_id + '_model'
+ return entity, project, run_id, model_artifact_name
+
+
+def check_wandb_resume(opt):
+ process_wandb_config_ddp_mode(opt) if opt.global_rank not in [-1, 0] else None
+ if isinstance(opt.resume, str):
+ if opt.resume.startswith(WANDB_ARTIFACT_PREFIX):
+ if opt.global_rank not in [-1, 0]: # For resuming DDP runs
+ entity, project, run_id, model_artifact_name = get_run_info(opt.resume)
+ api = wandb.Api()
+ artifact = api.artifact(entity + '/' + project + '/' + model_artifact_name + ':latest')
+ modeldir = artifact.download()
+ opt.weights = str(Path(modeldir) / "last.pt")
+ return True
+ return None
+
+
+def process_wandb_config_ddp_mode(opt):
+ with open(check_file(opt.data)) as f:
+ data_dict = yaml.safe_load(f) # data dict
+ train_dir, val_dir = None, None
+ if isinstance(data_dict['train'], str) and data_dict['train'].startswith(WANDB_ARTIFACT_PREFIX):
+ api = wandb.Api()
+ train_artifact = api.artifact(remove_prefix(data_dict['train']) + ':' + opt.artifact_alias)
+ train_dir = train_artifact.download()
+ train_path = Path(train_dir) / 'data/images/'
+ data_dict['train'] = str(train_path)
+
+ if isinstance(data_dict['val'], str) and data_dict['val'].startswith(WANDB_ARTIFACT_PREFIX):
+ api = wandb.Api()
+ val_artifact = api.artifact(remove_prefix(data_dict['val']) + ':' + opt.artifact_alias)
+ val_dir = val_artifact.download()
+ val_path = Path(val_dir) / 'data/images/'
+ data_dict['val'] = str(val_path)
+ if train_dir or val_dir:
+ ddp_data_path = str(Path(val_dir) / 'wandb_local_data.yaml')
+ with open(ddp_data_path, 'w') as f:
+ yaml.safe_dump(data_dict, f)
+ opt.data = ddp_data_path
+
+
+class WandbLogger():
+ """Log training runs, datasets, models, and predictions to Weights & Biases.
+
+ This logger sends information to W&B at wandb.ai. By default, this information
+ includes hyperparameters, system configuration and metrics, model metrics,
+ and basic data metrics and analyses.
+
+ By providing additional command line arguments to train.py, datasets,
+ models and predictions can also be logged.
+
+ For more on how this logger is used, see the Weights & Biases documentation:
+ https://docs.wandb.com/guides/integrations/yolov5
+ """
+ def __init__(self, opt, name, run_id, data_dict, job_type='Training'):
+ # Pre-training routine --
+ self.job_type = job_type
+ self.wandb, self.wandb_run, self.data_dict = wandb, None if not wandb else wandb.run, data_dict
+ # It's more elegant to stick to 1 wandb.init call, but useful config data is overwritten in the WandbLogger's wandb.init call
+ if isinstance(opt.resume, str): # checks resume from artifact
+ if opt.resume.startswith(WANDB_ARTIFACT_PREFIX):
+ entity, project, run_id, model_artifact_name = get_run_info(opt.resume)
+ model_artifact_name = WANDB_ARTIFACT_PREFIX + model_artifact_name
+ assert wandb, 'install wandb to resume wandb runs'
+ # Resume wandb-artifact:// runs here| workaround for not overwriting wandb.config
+ self.wandb_run = wandb.init(id=run_id, project=project, entity=entity, resume='allow')
+ opt.resume = model_artifact_name
+ elif self.wandb:
+ self.wandb_run = wandb.init(config=opt,
+ resume="allow",
+ project='YOLOv5' if opt.project == 'runs/train' else Path(opt.project).stem,
+ entity=opt.entity,
+ name=name,
+ job_type=job_type,
+ id=run_id) if not wandb.run else wandb.run
+ if self.wandb_run:
+ if self.job_type == 'Training':
+ if not opt.resume:
+ wandb_data_dict = self.check_and_upload_dataset(opt) if opt.upload_dataset else data_dict
+ # Info useful for resuming from artifacts
+ self.wandb_run.config.opt = vars(opt)
+ self.wandb_run.config.data_dict = wandb_data_dict
+ self.data_dict = self.setup_training(opt, data_dict)
+ if self.job_type == 'Dataset Creation':
+ self.data_dict = self.check_and_upload_dataset(opt)
+ else:
+ prefix = colorstr('wandb: ')
+ print(f"{prefix}Install Weights & Biases for YOLOv5 logging with 'pip install wandb' (recommended)")
+
+ def check_and_upload_dataset(self, opt):
+ assert wandb, 'Install wandb to upload dataset'
+ check_dataset(self.data_dict)
+ config_path = self.log_dataset_artifact(check_file(opt.data),
+ opt.single_cls,
+ 'YOLOv5' if opt.project == 'runs/train' else Path(opt.project).stem)
+ print("Created dataset config file ", config_path)
+ with open(config_path) as f:
+ wandb_data_dict = yaml.safe_load(f)
+ return wandb_data_dict
+
+ def setup_training(self, opt, data_dict):
+ self.log_dict, self.current_epoch, self.log_imgs = {}, 0, 16 # Logging Constants
+ self.bbox_interval = opt.bbox_interval
+ if isinstance(opt.resume, str):
+ modeldir, _ = self.download_model_artifact(opt)
+ if modeldir:
+ self.weights = Path(modeldir) / "last.pt"
+ config = self.wandb_run.config
+ opt.weights, opt.save_period, opt.batch_size, opt.bbox_interval, opt.epochs, opt.hyp = str(
+ self.weights), config.save_period, config.total_batch_size, config.bbox_interval, config.epochs, \
+ config.opt['hyp']
+ data_dict = dict(self.wandb_run.config.data_dict) # eliminates the need for config file to resume
+ if 'val_artifact' not in self.__dict__: # If --upload_dataset is set, use the existing artifact, don't download
+ self.train_artifact_path, self.train_artifact = self.download_dataset_artifact(data_dict.get('train'),
+ opt.artifact_alias)
+ self.val_artifact_path, self.val_artifact = self.download_dataset_artifact(data_dict.get('val'),
+ opt.artifact_alias)
+ self.result_artifact, self.result_table, self.val_table, self.weights = None, None, None, None
+ if self.train_artifact_path is not None:
+ train_path = Path(self.train_artifact_path) / 'data/images/'
+ data_dict['train'] = str(train_path)
+ if self.val_artifact_path is not None:
+ val_path = Path(self.val_artifact_path) / 'data/images/'
+ data_dict['val'] = str(val_path)
+ self.val_table = self.val_artifact.get("val")
+ self.map_val_table_path()
+ if self.val_artifact is not None:
+ self.result_artifact = wandb.Artifact("run_" + wandb.run.id + "_progress", "evaluation")
+ self.result_table = wandb.Table(["epoch", "id", "prediction", "avg_confidence"])
+ if opt.bbox_interval == -1:
+ self.bbox_interval = opt.bbox_interval = (opt.epochs // 10) if opt.epochs > 10 else 1
+ return data_dict
+
+ def download_dataset_artifact(self, path, alias):
+ if isinstance(path, str) and path.startswith(WANDB_ARTIFACT_PREFIX):
+ artifact_path = Path(remove_prefix(path, WANDB_ARTIFACT_PREFIX) + ":" + alias)
+ dataset_artifact = wandb.use_artifact(artifact_path.as_posix())
+ assert dataset_artifact is not None, "'Error: W&B dataset artifact doesn\'t exist'"
+ datadir = dataset_artifact.download()
+ return datadir, dataset_artifact
+ return None, None
+
+ def download_model_artifact(self, opt):
+ if opt.resume.startswith(WANDB_ARTIFACT_PREFIX):
+ model_artifact = wandb.use_artifact(remove_prefix(opt.resume, WANDB_ARTIFACT_PREFIX) + ":latest")
+ assert model_artifact is not None, 'Error: W&B model artifact doesn\'t exist'
+ modeldir = model_artifact.download()
+ epochs_trained = model_artifact.metadata.get('epochs_trained')
+ total_epochs = model_artifact.metadata.get('total_epochs')
+ is_finished = total_epochs is None
+ assert not is_finished, 'training is finished, can only resume incomplete runs.'
+ return modeldir, model_artifact
+ return None, None
+
+ def log_model(self, path, opt, epoch, fitness_score, best_model=False):
+ model_artifact = wandb.Artifact('run_' + wandb.run.id + '_model', type='model', metadata={
+ 'original_url': str(path),
+ 'epochs_trained': epoch + 1,
+ 'save period': opt.save_period,
+ 'project': opt.project,
+ 'total_epochs': opt.epochs,
+ 'fitness_score': fitness_score
+ })
+ model_artifact.add_file(str(path / 'last.pt'), name='last.pt')
+ wandb.log_artifact(model_artifact,
+ aliases=['latest', 'last', 'epoch ' + str(self.current_epoch), 'best' if best_model else ''])
+ print("Saving model artifact on epoch ", epoch + 1)
+
+ def log_dataset_artifact(self, data_file, single_cls, project, overwrite_config=False):
+ with open(data_file) as f:
+ data = yaml.safe_load(f) # data dict
+ nc, names = (1, ['item']) if single_cls else (int(data['nc']), data['names'])
+ names = {k: v for k, v in enumerate(names)} # to index dictionary
+ self.train_artifact = self.create_dataset_table(LoadImagesAndLabels(
+ data['train'], rect=True, batch_size=1), names, name='train') if data.get('train') else None
+ self.val_artifact = self.create_dataset_table(LoadImagesAndLabels(
+ data['val'], rect=True, batch_size=1), names, name='val') if data.get('val') else None
+ if data.get('train'):
+ data['train'] = WANDB_ARTIFACT_PREFIX + str(Path(project) / 'train')
+ if data.get('val'):
+ data['val'] = WANDB_ARTIFACT_PREFIX + str(Path(project) / 'val')
+ path = data_file if overwrite_config else '_wandb.'.join(data_file.rsplit('.', 1)) # updated data.yaml path
+ data.pop('download', None)
+ with open(path, 'w') as f:
+ yaml.safe_dump(data, f)
+
+ if self.job_type == 'Training': # builds correct artifact pipeline graph
+ self.wandb_run.use_artifact(self.val_artifact)
+ self.wandb_run.use_artifact(self.train_artifact)
+ self.val_artifact.wait()
+ self.val_table = self.val_artifact.get('val')
+ self.map_val_table_path()
+ else:
+ self.wandb_run.log_artifact(self.train_artifact)
+ self.wandb_run.log_artifact(self.val_artifact)
+ return path
+
+ def map_val_table_path(self):
+ self.val_table_map = {}
+ print("Mapping dataset")
+ for i, data in enumerate(tqdm(self.val_table.data)):
+ self.val_table_map[data[3]] = data[0]
+
+ def create_dataset_table(self, dataset, class_to_id, name='dataset'):
+ # TODO: Explore multiprocessing to slpit this loop parallely| This is essential for speeding up the the logging
+ artifact = wandb.Artifact(name=name, type="dataset")
+ img_files = tqdm([dataset.path]) if isinstance(dataset.path, str) and Path(dataset.path).is_dir() else None
+ img_files = tqdm(dataset.img_files) if not img_files else img_files
+ for img_file in img_files:
+ if Path(img_file).is_dir():
+ artifact.add_dir(img_file, name='data/images')
+ labels_path = 'labels'.join(dataset.path.rsplit('images', 1))
+ artifact.add_dir(labels_path, name='data/labels')
+ else:
+ artifact.add_file(img_file, name='data/images/' + Path(img_file).name)
+ label_file = Path(img2label_paths([img_file])[0])
+ artifact.add_file(str(label_file),
+ name='data/labels/' + label_file.name) if label_file.exists() else None
+ table = wandb.Table(columns=["id", "train_image", "Classes", "name"])
+ class_set = wandb.Classes([{'id': id, 'name': name} for id, name in class_to_id.items()])
+ for si, (img, labels, paths, shapes) in enumerate(tqdm(dataset)):
+ box_data, img_classes = [], {}
+ for cls, *xywh in labels[:, 1:].tolist():
+ cls = int(cls)
+ box_data.append({"position": {"middle": [xywh[0], xywh[1]], "width": xywh[2], "height": xywh[3]},
+ "class_id": cls,
+ "box_caption": "%s" % (class_to_id[cls])})
+ img_classes[cls] = class_to_id[cls]
+ boxes = {"ground_truth": {"box_data": box_data, "class_labels": class_to_id}} # inference-space
+ table.add_data(si, wandb.Image(paths, classes=class_set, boxes=boxes), json.dumps(img_classes),
+ Path(paths).name)
+ artifact.add(table, name)
+ return artifact
+
+ def log_training_progress(self, predn, path, names):
+ if self.val_table and self.result_table:
+ class_set = wandb.Classes([{'id': id, 'name': name} for id, name in names.items()])
+ box_data = []
+ total_conf = 0
+ for *xyxy, conf, cls in predn.tolist():
+ if conf >= 0.25:
+ box_data.append(
+ {"position": {"minX": xyxy[0], "minY": xyxy[1], "maxX": xyxy[2], "maxY": xyxy[3]},
+ "class_id": int(cls),
+ "box_caption": "%s %.3f" % (names[cls], conf),
+ "scores": {"class_score": conf},
+ "domain": "pixel"})
+ total_conf = total_conf + conf
+ boxes = {"predictions": {"box_data": box_data, "class_labels": names}} # inference-space
+ id = self.val_table_map[Path(path).name]
+ self.result_table.add_data(self.current_epoch,
+ id,
+ wandb.Image(self.val_table.data[id][1], boxes=boxes, classes=class_set),
+ total_conf / max(1, len(box_data))
+ )
+
+ def log(self, log_dict):
+ if self.wandb_run:
+ for key, value in log_dict.items():
+ self.log_dict[key] = value
+
+ def end_epoch(self, best_result=False):
+ if self.wandb_run:
+ wandb.log(self.log_dict)
+ self.log_dict = {}
+ if self.result_artifact:
+ train_results = wandb.JoinedTable(self.val_table, self.result_table, "id")
+ self.result_artifact.add(train_results, 'result')
+ wandb.log_artifact(self.result_artifact, aliases=['latest', 'last', 'epoch ' + str(self.current_epoch),
+ ('best' if best_result else '')])
+ self.result_table = wandb.Table(["epoch", "id", "prediction", "avg_confidence"])
+ self.result_artifact = wandb.Artifact("run_" + wandb.run.id + "_progress", "evaluation")
+
+ def finish_run(self):
+ if self.wandb_run:
+ if self.log_dict:
+ wandb.log(self.log_dict)
+ wandb.run.finish()
diff --git a/Yolov5-Deepsort/weights/yolov5s.pt b/Yolov5-Deepsort/weights/yolov5s.pt
new file mode 100644
index 0000000000000000000000000000000000000000..a58e3fcde809e747c541b532cda255034e18e7e3
--- /dev/null
+++ b/Yolov5-Deepsort/weights/yolov5s.pt
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f1610cfd81f8cab94254b35f6b7da2981fa40f93ad1bd3dd1803c52e7f44753e
+size 14795158
diff --git a/Yolov5-Deepsort/zhoushao.mp4 b/Yolov5-Deepsort/zhoushao.mp4
new file mode 100644
index 0000000000000000000000000000000000000000..cd5e0135133b90765a9eaab74a37286318f8c351
Binary files /dev/null and b/Yolov5-Deepsort/zhoushao.mp4 differ