diff --git a/Yolov5-Deepsort/AIDetector_pytorch.py b/Yolov5-Deepsort/AIDetector_pytorch.py deleted file mode 100644 index f1818d8dcba71cf0f0bf75065f214bb620c28029..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/AIDetector_pytorch.py +++ /dev/null @@ -1,74 +0,0 @@ -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 deleted file mode 100644 index a6344aac8c09253b3b630fb776ae94478aa0275b..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/DDM_DeepSort/.gitattributes +++ /dev/null @@ -1,35 +0,0 @@ -*.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 deleted file mode 100644 index c183fca4d1c01de7a67e192c36ef9ba7a961fbd7..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/DDM_DeepSort/README.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -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 deleted file mode 100644 index cbffdf1ba490e3ae1fb244c10909cccfa7652993..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/DDM_DeepSort/app.py +++ /dev/null @@ -1,7 +0,0 @@ -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 deleted file mode 100644 index 9e419e042146a2ce2e354202d4f7d8e4a3d66f31..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/LICENSE +++ /dev/null @@ -1,674 +0,0 @@ -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 deleted file mode 100644 index c63236631bd4d84ba1e5c5072ef1c2dd7e3def5b..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/README.md +++ /dev/null @@ -1,139 +0,0 @@ -# 本文禁止转载! - - -本文地址:[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 deleted file mode 100644 index f3df550cd00fdac6fc6194a125a0779564e4a21f..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/__pycache__/AIDetector_pytorch.cpython-37.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/__pycache__/tracker.cpython-37.pyc b/Yolov5-Deepsort/__pycache__/tracker.cpython-37.pyc deleted file mode 100644 index 30b3fa8312b1b89000fd7043669defba41cad800..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/__pycache__/tracker.cpython-37.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/deep_sort/configs/deep_sort.yaml b/Yolov5-Deepsort/deep_sort/configs/deep_sort.yaml deleted file mode 100644 index 6105f46a8d155c2dc7ba9cebb7178b4e0ed389a3..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/configs/deep_sort.yaml +++ /dev/null @@ -1,10 +0,0 @@ -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 deleted file mode 100644 index e89c9b3ea08691210046fbb9184bf8e44e88f29e..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/deep_sort/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# 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 deleted file mode 100644 index 5fe5d0fd796ec4f46dc4141f5e4f9f5092f7d321..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/deep_sort/__init__.py +++ /dev/null @@ -1,21 +0,0 @@ -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 deleted file mode 100644 index dff7fa67ddcea8ac5a16ace2ede46d492353e1d4..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/__pycache__/__init__.cpython-36.pyc and /dev/null 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 deleted file mode 100644 index c92d420992773f89b21cac6794ebfcbbfa90b11e..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/__pycache__/__init__.cpython-37.pyc and /dev/null 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 deleted file mode 100644 index 63745386d533467bb683118b4a63676efb8d1488..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/__pycache__/deep_sort.cpython-36.pyc and /dev/null 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 deleted file mode 100644 index 7d1aefaad1592b8dbfbfd00f9c63686ac0159ddd..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/__pycache__/deep_sort.cpython-37.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep/__init__.py b/Yolov5-Deepsort/deep_sort/deep_sort/deep/__init__.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 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 deleted file mode 100644 index b4828f3eed6acf1d397c430fe01c96be6241247d..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/__init__.cpython-36.pyc and /dev/null 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 deleted file mode 100644 index 0d0759879843a1aec1a37b54b3b00c9f10e355a2..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/__init__.cpython-37.pyc and /dev/null 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 deleted file mode 100644 index c933b6ea1cb23e47c04b07eccbbff7c6f770826f..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/feature_extractor.cpython-36.pyc and /dev/null 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 deleted file mode 100644 index e9b7bac5f03c644206c5951ea52fa266e2d4c6ba..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/feature_extractor.cpython-37.pyc and /dev/null 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 deleted file mode 100644 index 05f606cd7d3bca1ecedf98c36bba5a5c2bb544e4..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/model.cpython-36.pyc and /dev/null 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 deleted file mode 100644 index a6111abffcd22ea119d6b601a0614959a5777009..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/deep/__pycache__/model.cpython-37.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep/checkpoint/.gitkeep b/Yolov5-Deepsort/deep_sort/deep_sort/deep/checkpoint/.gitkeep deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep/checkpoint/ckpt.t7 b/Yolov5-Deepsort/deep_sort/deep_sort/deep/checkpoint/ckpt.t7 deleted file mode 100644 index cd7ceebe86bdfaea299f31994844488295f00ca8..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/deep_sort/deep/checkpoint/ckpt.t7 +++ /dev/null @@ -1,3 +0,0 @@ -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 deleted file mode 100644 index 31c40a46eaea0ad7b6fc50a15e39329b954561ff..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/deep_sort/deep/evaluate.py +++ /dev/null @@ -1,15 +0,0 @@ -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 deleted file mode 100644 index 0443e37d94dc743e6c4467fab2dcb29f39bb6435..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/deep_sort/deep/feature_extractor.py +++ /dev/null @@ -1,55 +0,0 @@ -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 deleted file mode 100644 index 97e87547cd8e36b1a65e2dc1ad4cfb310f0f4c23..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/deep_sort/deep/model.py +++ /dev/null @@ -1,104 +0,0 @@ -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 deleted file mode 100644 index 72453a6392b9a360c03034eefee1d6be30f8121b..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/deep_sort/deep/original_model.py +++ /dev/null @@ -1,106 +0,0 @@ -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 deleted file mode 100644 index ebd590336f7b17c44738c4c15458f02f33f08017..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/deep_sort/deep/test.py +++ /dev/null @@ -1,77 +0,0 @@ -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 deleted file mode 100644 index 3635a614738828b880aa862bc52423848ac8e472..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/deep/train.jpg and /dev/null differ diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/deep/train.py b/Yolov5-Deepsort/deep_sort/deep_sort/deep/train.py deleted file mode 100644 index a931763d155f27743d944ac46da10f57d35a8ddb..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/deep_sort/deep/train.py +++ /dev/null @@ -1,189 +0,0 @@ -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 deleted file mode 100644 index 44f8746fd299527fd1129027e98435bf9f52f671..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/deep_sort/deep_sort.py +++ /dev/null @@ -1,101 +0,0 @@ -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 deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 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 deleted file mode 100644 index 36e171093f09ddc15d4499eec4a66e20812cff97..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/__init__.cpython-36.pyc and /dev/null 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 deleted file mode 100644 index 4bebfe9ced397e6106504e32996e3038daa8ad54..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/__init__.cpython-37.pyc and /dev/null 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 deleted file mode 100644 index 99c3d00c0ecda70d11f85180f2b6e0d032547963..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/detection.cpython-36.pyc and /dev/null 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 deleted file mode 100644 index 7204d92b15ceab7d1d0a10a5a1223287c24c79bb..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/detection.cpython-37.pyc and /dev/null 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 deleted file mode 100644 index 619fd5ecf730a1797348f490946b0d9c1e24abbc..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/iou_matching.cpython-36.pyc and /dev/null 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 deleted file mode 100644 index 8c64c06bee66440330de7652b3de146ce84fb5c3..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/iou_matching.cpython-37.pyc and /dev/null 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 deleted file mode 100644 index ce24a9dc97fb1bf111839bf23401a82c62e36f43..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/kalman_filter.cpython-36.pyc and /dev/null 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 deleted file mode 100644 index 9c9da039aa1cefa23a51be4f09af8801cb0a9dca..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/kalman_filter.cpython-37.pyc and /dev/null 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 deleted file mode 100644 index 576877feebd0c9886c96ce363d1ecea7b3154426..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/linear_assignment.cpython-36.pyc and /dev/null 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 deleted file mode 100644 index 2eb430b230c02722433b7c0063bcd3a43bcd8e0a..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/linear_assignment.cpython-37.pyc and /dev/null 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 deleted file mode 100644 index 5880fd28dfdd4ca064260d0a4d73b137c38a1551..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/nn_matching.cpython-36.pyc and /dev/null 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 deleted file mode 100644 index 981d42103f97947af3de456de2def6e79e487af8..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/nn_matching.cpython-37.pyc and /dev/null 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 deleted file mode 100644 index 387924cdd65d68679c404bef888996db765bd10f..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/preprocessing.cpython-36.pyc and /dev/null 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 deleted file mode 100644 index d4f78cf29fa7904b33710ab07efe4720e6984495..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/preprocessing.cpython-37.pyc and /dev/null 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 deleted file mode 100644 index 4df3d89025edfbd21799654426d98938824d94d6..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/track.cpython-36.pyc and /dev/null 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 deleted file mode 100644 index e64255c58c791c317e4e35c9119743e4b4e7f28f..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/track.cpython-37.pyc and /dev/null 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 deleted file mode 100644 index a7bbe68869cbdb735e34d29695718d0170ee0b0a..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/tracker.cpython-36.pyc and /dev/null 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 deleted file mode 100644 index d4b34b661f767b14aef6e01fa8a86f5a037bcdc7..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/deep_sort/sort/__pycache__/tracker.cpython-37.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/deep_sort/deep_sort/sort/detection.py b/Yolov5-Deepsort/deep_sort/deep_sort/sort/detection.py deleted file mode 100644 index 0c2c1ae42addc84cfd53bcfa3cdcc8885662ec44..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/deep_sort/sort/detection.py +++ /dev/null @@ -1,28 +0,0 @@ -# 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 deleted file mode 100644 index c4dd0b88391d2ac28036c7163d5d4c988d4a9c4c..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/deep_sort/sort/iou_matching.py +++ /dev/null @@ -1,81 +0,0 @@ -# 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 deleted file mode 100644 index 787a76e6a43870a9538647b51fda6a5254ce2d43..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/deep_sort/sort/kalman_filter.py +++ /dev/null @@ -1,229 +0,0 @@ -# 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 deleted file mode 100644 index 2006230c960fa07b128b39187cb5df2775300544..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/deep_sort/sort/linear_assignment.py +++ /dev/null @@ -1,159 +0,0 @@ -# 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 deleted file mode 100644 index 2e7bfea4b87b0c256274937c8323ffc93fa5d61b..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/deep_sort/sort/nn_matching.py +++ /dev/null @@ -1,177 +0,0 @@ -# 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 deleted file mode 100644 index 5493b127f602dec398efac4269c00d31a3650ce9..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/deep_sort/sort/preprocessing.py +++ /dev/null @@ -1,73 +0,0 @@ -# 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 deleted file mode 100644 index e46d391a1bd7667d3e9fe52d88fe8de51c2e70ac..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/deep_sort/sort/track.py +++ /dev/null @@ -1,168 +0,0 @@ -# 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 deleted file mode 100644 index d27c9b35d298744f43b2466b45b793677712346b..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/deep_sort/sort/tracker.py +++ /dev/null @@ -1,435 +0,0 @@ -# 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 deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/Yolov5-Deepsort/deep_sort/utils/__pycache__/__init__.cpython-36.pyc b/Yolov5-Deepsort/deep_sort/utils/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index 8b78a3774e297bfa3a92ff2ae77f138373a30f67..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/utils/__pycache__/__init__.cpython-36.pyc and /dev/null 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 deleted file mode 100644 index cab1729ff02daa25ac6cb7308e45fcc703a877be..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/utils/__pycache__/__init__.cpython-37.pyc and /dev/null 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 deleted file mode 100644 index b5c82da3dbebf17fc41a3c56f9c8f9bdbe0bc8e0..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/utils/__pycache__/parser.cpython-36.pyc and /dev/null 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 deleted file mode 100644 index 875847c85eb0f2b8c05dd41a3d4651a69e2e690a..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/deep_sort/utils/__pycache__/parser.cpython-37.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/deep_sort/utils/asserts.py b/Yolov5-Deepsort/deep_sort/utils/asserts.py deleted file mode 100644 index 59a73cc04025762d6490fcd2945a747d963def32..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/utils/asserts.py +++ /dev/null @@ -1,13 +0,0 @@ -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 deleted file mode 100644 index bc7cb537978e86805d5d9789785a8afe67df9030..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/utils/draw.py +++ /dev/null @@ -1,36 +0,0 @@ -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 deleted file mode 100644 index 100179407181933d59809b25400d115cfa789867..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/utils/evaluation.py +++ /dev/null @@ -1,103 +0,0 @@ -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 deleted file mode 100644 index 2dc9afd24019cd930eef6c21ab9f579313dd3b3a..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/utils/io.py +++ /dev/null @@ -1,133 +0,0 @@ -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 deleted file mode 100644 index 0afd0b45df736866c49473db78286685d77660ac..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/utils/json_logger.py +++ /dev/null @@ -1,383 +0,0 @@ -""" -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 deleted file mode 100644 index 0d48757dca88f35e9ea2cd1ca16e41bac9976a45..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/utils/log.py +++ /dev/null @@ -1,17 +0,0 @@ -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 deleted file mode 100644 index c217ecb2c8c2b9a3c8cc10e2be2f149aba326b60..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/utils/parser.py +++ /dev/null @@ -1,38 +0,0 @@ -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 deleted file mode 100644 index 965fb69c2df41510fd740a4ab57d8fc7b81012de..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/deep_sort/utils/tools.py +++ /dev/null @@ -1,39 +0,0 @@ -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 deleted file mode 100644 index 3c68e34a2d00daec71f4eee6ca31263ec1591b8b..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/demo.py +++ /dev/null @@ -1,112 +0,0 @@ -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() - - -def app_main(video): - name = 'demo' - - det = Detector() - cap = cv2.VideoCapture(video) - fps = int(cap.get(cv2.CAP_PROP_FPS)) - print('fps:', fps) - t = int(1000/fps) - frame_count = 0 - total_time = 0 - - videoWriter = None - output_filename = 'result.mp4' - - while True: - start_time = time.time() - - ret, im = cap.read() - if not ret: - break - - result = det.feedCap(im) - result = result['frame'] - result = imutils.resize(result, height=500) - - if videoWriter is None: - fourcc = cv2.VideoWriter_fourcc(*'mp4v') - videoWriter = cv2.VideoWriter( - output_filename, fourcc, fps, (result.shape[1], result.shape[0])) - - videoWriter.write(result) - - end_time = time.time() - total_time += (end_time - start_time) - frame_count += 1 - - if frame_count > 0: - processing_fps = frame_count / total_time - print('Processing fps:', processing_fps) - - cap.release() - videoWriter.release() - - return output_filename - -if __name__ == '__main__': - - main() \ No newline at end of file diff --git a/Yolov5-Deepsort/eval.py b/Yolov5-Deepsort/eval.py deleted file mode 100644 index 52af1ee1aed9cad895e3aa71c4bc8f7e8e6d3bb6..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/eval.py +++ /dev/null @@ -1,33 +0,0 @@ -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 deleted file mode 100644 index f8c1ad7181ccf4b07620a53afd98e7b61045d709..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/gt.txt +++ /dev/null @@ -1,18718 +0,0 @@ -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 deleted file mode 100644 index ace8fcff2c3fa4f16cd87a47467f0f755beaed1e..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/image.png and /dev/null differ diff --git a/Yolov5-Deepsort/manbo.mp4 b/Yolov5-Deepsort/manbo.mp4 deleted file mode 100644 index 840289199ef681528e7898a57105787f19bbff46..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/manbo.mp4 and /dev/null differ diff --git a/Yolov5-Deepsort/models/__init__.py b/Yolov5-Deepsort/models/__init__.py deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/Yolov5-Deepsort/models/__pycache__/__init__.cpython-36.pyc b/Yolov5-Deepsort/models/__pycache__/__init__.cpython-36.pyc deleted file mode 100644 index e9746b6598ac986fbff7cb2365a7a441cec36779..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/models/__pycache__/__init__.cpython-36.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/models/__pycache__/__init__.cpython-37.pyc b/Yolov5-Deepsort/models/__pycache__/__init__.cpython-37.pyc deleted file mode 100644 index 652f93beb9f9231da6eb6ec57d6160ad011178fd..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/models/__pycache__/__init__.cpython-37.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/models/__pycache__/common.cpython-36.pyc b/Yolov5-Deepsort/models/__pycache__/common.cpython-36.pyc deleted file mode 100644 index 9734cfb03cba91dbf15e38722d0509cb47641a91..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/models/__pycache__/common.cpython-36.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/models/__pycache__/common.cpython-37.pyc b/Yolov5-Deepsort/models/__pycache__/common.cpython-37.pyc deleted file mode 100644 index b4edaea39d903d09c0ad337ec4bff5b9565ea21b..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/models/__pycache__/common.cpython-37.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/models/__pycache__/experimental.cpython-36.pyc b/Yolov5-Deepsort/models/__pycache__/experimental.cpython-36.pyc deleted file mode 100644 index caa1ef7d5155d2c5bf348930ddf08fbcb5131007..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/models/__pycache__/experimental.cpython-36.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/models/__pycache__/experimental.cpython-37.pyc b/Yolov5-Deepsort/models/__pycache__/experimental.cpython-37.pyc deleted file mode 100644 index 03d97117b57b37f651134f40a2305512b53bc8dc..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/models/__pycache__/experimental.cpython-37.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/models/__pycache__/yolo.cpython-37.pyc b/Yolov5-Deepsort/models/__pycache__/yolo.cpython-37.pyc deleted file mode 100644 index 7c4abfe75e25b31af450916e37b66ea4aeb10c72..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/models/__pycache__/yolo.cpython-37.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/models/common.py b/Yolov5-Deepsort/models/common.py deleted file mode 100644 index 4211db406c3d85e652bc11280cf9856f500ef835..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/common.py +++ /dev/null @@ -1,395 +0,0 @@ -# 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 deleted file mode 100644 index afa787907104f1134335ed3ac7bfdd8ac4fd4ae9..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/experimental.py +++ /dev/null @@ -1,137 +0,0 @@ -# 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 deleted file mode 100644 index 65721f65d88835bfba6a7b5318af26ae8890bd8a..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/export.py +++ /dev/null @@ -1,143 +0,0 @@ -"""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 deleted file mode 100644 index a07a4dc72387ef79ee0d473ac1055d23c6543ee9..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/hub/anchors.yaml +++ /dev/null @@ -1,58 +0,0 @@ -# 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 deleted file mode 100644 index 38dcc449f0d0c1b85b4e6ff426da0d9e9df07d4e..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/hub/yolov3-spp.yaml +++ /dev/null @@ -1,51 +0,0 @@ -# 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 deleted file mode 100644 index ff7638cad3beb5a0186cc67b84e23799ffb53bae..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/hub/yolov3-tiny.yaml +++ /dev/null @@ -1,41 +0,0 @@ -# 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 deleted file mode 100644 index f2e76135546945f3ccbb3311c99bf3882a90c199..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/hub/yolov3.yaml +++ /dev/null @@ -1,51 +0,0 @@ -# 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 deleted file mode 100644 index e772bffecbbca75c536cd43d9e1659e41910b337..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/hub/yolov5-fpn.yaml +++ /dev/null @@ -1,42 +0,0 @@ -# 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 deleted file mode 100644 index 0633a90fd065efce8d9c771da36815ae353fa2f2..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/hub/yolov5-p2.yaml +++ /dev/null @@ -1,54 +0,0 @@ -# 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 deleted file mode 100644 index 3728a118f09016eebc68538e7651134e070bd79f..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/hub/yolov5-p6.yaml +++ /dev/null @@ -1,56 +0,0 @@ -# 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 deleted file mode 100644 index ca8f8492ce0e9750e1856ac67f19ff4bf92d1948..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/hub/yolov5-p7.yaml +++ /dev/null @@ -1,67 +0,0 @@ -# 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 deleted file mode 100644 index 340f95a4dbc9a7a3250cd6e41422ea4c520991c8..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/hub/yolov5-panet.yaml +++ /dev/null @@ -1,48 +0,0 @@ -# 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 deleted file mode 100644 index 11298b01f47915d729c747714caf308b676ec579..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/hub/yolov5l6.yaml +++ /dev/null @@ -1,60 +0,0 @@ -# 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 deleted file mode 100644 index 48afc865593ae964493e8fbd042a72209ab6487f..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/hub/yolov5m6.yaml +++ /dev/null @@ -1,60 +0,0 @@ -# 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 deleted file mode 100644 index f2d666722b30508eea865cf4d51ce607589a60ec..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/hub/yolov5s-transformer.yaml +++ /dev/null @@ -1,48 +0,0 @@ -# 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 deleted file mode 100644 index 1df577a2cc97c66763eafd37c70b97f6e893d4fd..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/hub/yolov5s6.yaml +++ /dev/null @@ -1,60 +0,0 @@ -# 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 deleted file mode 100644 index 5ebc02124fe785d730316fde42bde40c830eac66..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/hub/yolov5x6.yaml +++ /dev/null @@ -1,60 +0,0 @@ -# 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 deleted file mode 100644 index 06b80032d3d3b6d84162e040e45e0e276a619a34..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/yolo.py +++ /dev/null @@ -1,304 +0,0 @@ -# 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 deleted file mode 100644 index 71ebf86e57918ca222264d47fa6f04205be445a7..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/yolov5l.yaml +++ /dev/null @@ -1,48 +0,0 @@ -# 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 deleted file mode 100644 index 3c749c916246815fbfaa3ac96506c85a65466c02..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/yolov5m.yaml +++ /dev/null @@ -1,48 +0,0 @@ -# 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 deleted file mode 100644 index aca669d60d8b5db54963302b1ae629afe4499565..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/yolov5s.yaml +++ /dev/null @@ -1,48 +0,0 @@ -# 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 deleted file mode 100644 index d3babdf7baf01a95a2a8da760a6db41bb8c7dd79..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/models/yolov5x.yaml +++ /dev/null @@ -1,48 +0,0 @@ -# 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 deleted file mode 100644 index ad233d76ae04637c5d8950a7e50482f82400168f..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/mot.mp4 +++ /dev/null @@ -1,3 +0,0 @@ -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 deleted file mode 100644 index 8535951ffaed1fefe8d6a09be3a3c00d3074f50c..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/myresult.txt +++ /dev/null @@ -1,6619 +0,0 @@ -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 deleted file mode 100644 index f7ccbc70b3f6fb159dd97fabc2ee7068f29c20bc..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/niuzi.mp4 +++ /dev/null @@ -1,3 +0,0 @@ -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 deleted file mode 100644 index 63357d519a09e9972d8d6775f240fbed16dc737b..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/other_method.py +++ /dev/null @@ -1,46 +0,0 @@ -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 deleted file mode 100644 index bd0ce22bd6b02a363521a3c2301c5e3c1fddc495..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/result.mp4 +++ /dev/null @@ -1,3 +0,0 @@ -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 deleted file mode 100644 index 3c5b99ad9265b3f83aa2a0f26980177fde06d1bb..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/su_demo.py +++ /dev/null @@ -1,23 +0,0 @@ -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 deleted file mode 100644 index 6f91daeed5afad2b6e228c5237d942446495ea67..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/tracker.py +++ /dev/null @@ -1,129 +0,0 @@ -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 deleted file mode 100644 index 1fd77f962e6860a8c708439d9be5059beca12f2f..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/BaseDetector.py +++ /dev/null @@ -1,50 +0,0 @@ -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 deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/Yolov5-Deepsort/utils/__pycache__/BaseDetector.cpython-37.pyc b/Yolov5-Deepsort/utils/__pycache__/BaseDetector.cpython-37.pyc deleted file mode 100644 index bc358656fde98374d185612891a20a0249968609..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/utils/__pycache__/BaseDetector.cpython-37.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/utils/__pycache__/__init__.cpython-37.pyc b/Yolov5-Deepsort/utils/__pycache__/__init__.cpython-37.pyc deleted file mode 100644 index f40e7ed3cdb46ff47429e39cfa079be51ce5e0d8..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/utils/__pycache__/__init__.cpython-37.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/utils/__pycache__/autoanchor.cpython-37.pyc b/Yolov5-Deepsort/utils/__pycache__/autoanchor.cpython-37.pyc deleted file mode 100644 index 60478ce1314b5579568a289f05f438bc87cb2121..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/utils/__pycache__/autoanchor.cpython-37.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/utils/__pycache__/datasets.cpython-37.pyc b/Yolov5-Deepsort/utils/__pycache__/datasets.cpython-37.pyc deleted file mode 100644 index 901561371bc12228280871bd309671f106fa2bf7..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/utils/__pycache__/datasets.cpython-37.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/utils/__pycache__/general.cpython-37.pyc b/Yolov5-Deepsort/utils/__pycache__/general.cpython-37.pyc deleted file mode 100644 index d49c5fd2b444b26d4875393c3e7914a913eb9ff3..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/utils/__pycache__/general.cpython-37.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/utils/__pycache__/google_utils.cpython-37.pyc b/Yolov5-Deepsort/utils/__pycache__/google_utils.cpython-37.pyc deleted file mode 100644 index b7f35a5a486ffcb4826c2b646beae70f6548d0c5..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/utils/__pycache__/google_utils.cpython-37.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/utils/__pycache__/metrics.cpython-37.pyc b/Yolov5-Deepsort/utils/__pycache__/metrics.cpython-37.pyc deleted file mode 100644 index 2b060f4f65f78749a70028a8dd091954dfac9505..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/utils/__pycache__/metrics.cpython-37.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/utils/__pycache__/plots.cpython-37.pyc b/Yolov5-Deepsort/utils/__pycache__/plots.cpython-37.pyc deleted file mode 100644 index a9e9a9c1eae1c0807501be0cd6e7ab4cc34bdcb4..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/utils/__pycache__/plots.cpython-37.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/utils/__pycache__/torch_utils.cpython-37.pyc b/Yolov5-Deepsort/utils/__pycache__/torch_utils.cpython-37.pyc deleted file mode 100644 index f0ee7ba31b9e88317685dde0919154f4d9ec92ac..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/utils/__pycache__/torch_utils.cpython-37.pyc and /dev/null differ diff --git a/Yolov5-Deepsort/utils/activations.py b/Yolov5-Deepsort/utils/activations.py deleted file mode 100644 index 92a3b5eaa54bcb46464dff900db247b0436e5046..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/activations.py +++ /dev/null @@ -1,98 +0,0 @@ -# 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 deleted file mode 100644 index 87dc394c832e628a0b1c7b39aeb1e7c6584c63b3..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/autoanchor.py +++ /dev/null @@ -1,161 +0,0 @@ -# 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 deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/Yolov5-Deepsort/utils/aws/mime.sh b/Yolov5-Deepsort/utils/aws/mime.sh deleted file mode 100644 index c319a83cfbdf09bea634c3bd9fca737c0b1dd505..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/aws/mime.sh +++ /dev/null @@ -1,26 +0,0 @@ -# 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 deleted file mode 100644 index 4b0d4246b594acddbecf065956fc8729bb96ec36..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/aws/resume.py +++ /dev/null @@ -1,37 +0,0 @@ -# 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 deleted file mode 100644 index 5846fedb16f971c194c80ff533bc8c237de6815c..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/aws/userdata.sh +++ /dev/null @@ -1,27 +0,0 @@ -#!/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 deleted file mode 100644 index 36416b14e1387a3e3b6b30acf6254bb727d96ced..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/datasets.py +++ /dev/null @@ -1,1067 +0,0 @@ -# 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 deleted file mode 100644 index 324c2416dcd9fa83b18286c33ce309f4f5573637..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/flask_rest_api/README.md +++ /dev/null @@ -1,68 +0,0 @@ -# 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 deleted file mode 100644 index ff21f30f93ca37578ce45366a1ddbe3f3eadaa79..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/flask_rest_api/example_request.py +++ /dev/null @@ -1,13 +0,0 @@ -"""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 deleted file mode 100644 index a54e2309715ce5d3d41e9e2e76a347db3cdb7ccb..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/flask_rest_api/restapi.py +++ /dev/null @@ -1,37 +0,0 @@ -""" -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 deleted file mode 100644 index 9a882715f0ad43a0271252fca3aeb06f6169d1ff..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/general.py +++ /dev/null @@ -1,692 +0,0 @@ -# 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 deleted file mode 100644 index 0155618f475104e9858b81470339558156c94e13..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/google_app_engine/Dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -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 deleted file mode 100644 index 5fcc30524a59ca2d3356b07725df7e2b64f81422..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/google_app_engine/additional_requirements.txt +++ /dev/null @@ -1,4 +0,0 @@ -# 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 deleted file mode 100644 index ac29d104b144abd634482b35282725d694e84a2b..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/google_app_engine/app.yaml +++ /dev/null @@ -1,14 +0,0 @@ -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 deleted file mode 100644 index 63d3e5b212f3813847eeeb5cd6524155a7058f27..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/google_utils.py +++ /dev/null @@ -1,127 +0,0 @@ -# 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 deleted file mode 100644 index 9e78df17fdf31c23c70a5d1fce8b17fb7b78726a..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/loss.py +++ /dev/null @@ -1,216 +0,0 @@ -# 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 deleted file mode 100644 index 323c84b6c873c87a3530a3caec60982a7d83a3b8..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/metrics.py +++ /dev/null @@ -1,223 +0,0 @@ -# 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 deleted file mode 100644 index 8313ef210f9047c327cea7ac63c59e6f6140f2d1..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/plots.py +++ /dev/null @@ -1,446 +0,0 @@ -# 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 deleted file mode 100644 index 5074fa95ae4be7118a8de66b729192887058285f..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/torch_utils.py +++ /dev/null @@ -1,304 +0,0 @@ -# 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 deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/Yolov5-Deepsort/utils/wandb_logging/log_dataset.py b/Yolov5-Deepsort/utils/wandb_logging/log_dataset.py deleted file mode 100644 index f45a23011f15920e0cee33783504299337604a8d..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/wandb_logging/log_dataset.py +++ /dev/null @@ -1,24 +0,0 @@ -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 deleted file mode 100644 index 57ce9035a77736b744d9f74186cec592aba25200..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/utils/wandb_logging/wandb_utils.py +++ /dev/null @@ -1,318 +0,0 @@ -"""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 deleted file mode 100644 index a58e3fcde809e747c541b532cda255034e18e7e3..0000000000000000000000000000000000000000 --- a/Yolov5-Deepsort/weights/yolov5s.pt +++ /dev/null @@ -1,3 +0,0 @@ -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 deleted file mode 100644 index cd5e0135133b90765a9eaab74a37286318f8c351..0000000000000000000000000000000000000000 Binary files a/Yolov5-Deepsort/zhoushao.mp4 and /dev/null differ