commit 43ea213f9b1d08dff20847625c2b0fa776d8e177
Author: Tony Bark <35226681+tonytins@users.noreply.github.com>
Date: Thu Jul 17 01:49:18 2025 -0400
First commit π
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..f28239b
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,4 @@
+root = true
+
+[*]
+charset = utf-8
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..8ad74f7
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,2 @@
+# Normalize EOL for all files that Git considers text files.
+* text=auto eol=lf
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..0af181c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+# Godot 4+ specific ignores
+.godot/
+/android/
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..f288702
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see .
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ Copyright (C)
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+.
diff --git a/addons/popochiu/LICENSE b/addons/popochiu/LICENSE
new file mode 100644
index 0000000..987c7c6
--- /dev/null
+++ b/addons/popochiu/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2022 Mateo Robayo RogrΓguez
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.gd b/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.gd
new file mode 100644
index 0000000..91d4ffa
--- /dev/null
+++ b/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.gd
@@ -0,0 +1,332 @@
+@tool
+extends HBoxContainer
+## Used to show new buttons in the EditorPlugin.CONTAINER_CANVAS_EDITOR_MENU (the top bar in the
+## 2D editor) to select specific nodes in PopochiuClickable objects.
+
+var _active_popochiu_object: Node = null
+var _shown_helpers := []
+
+@onready var btn_baseline: Button = %BtnBaseline
+@onready var btn_walk_to_point: Button = %BtnWalkToPoint
+@onready var btn_look_at_point: Button = %BtnLookAtPoint
+@onready var btn_dialog_pos: Button = %BtnDialogPos
+@onready var btn_interaction_polygon: Button = %BtnInteractionPolygon
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ # Gizmos are always visible at editor load, so we'll set the buttons down
+ # to sync the status (hardcoded, not very good but enough for now)
+ _reset_buttons_state()
+
+ # Connect to child signals
+ btn_baseline.pressed.connect(_toggle_baseline_visibility)
+ btn_walk_to_point.pressed.connect(_toggle_walk_to_point_visibility)
+ btn_look_at_point.pressed.connect(_toggle_look_at_point_visibility)
+ btn_dialog_pos.pressed.connect(_toggle_dialog_pos_visibility)
+ btn_interaction_polygon.pressed.connect(_select_interaction_polygon)
+
+ # Connect to singleton signals
+ EditorInterface.get_selection().selection_changed.connect(_on_selection_changed)
+ EditorInterface.get_editor_settings().settings_changed.connect(_on_gizmo_settings_changed)
+
+ _set_toolbar_buttons_color()
+ hide()
+
+#endregion
+
+#region Private ####################################################################################
+func _toggle_walk_to_point_visibility() -> void:
+ PopochiuEditorHelper.signal_bus.gizmo_visibility_changed.emit(
+ PopochiuGizmoClickablePlugin.WALK_TO_POINT,
+ btn_walk_to_point.button_pressed
+ )
+
+
+func _toggle_look_at_point_visibility() -> void:
+ PopochiuEditorHelper.signal_bus.gizmo_visibility_changed.emit(
+ PopochiuGizmoClickablePlugin.LOOK_AT_POINT,
+ btn_look_at_point.button_pressed
+ )
+
+
+func _toggle_baseline_visibility() -> void:
+ PopochiuEditorHelper.signal_bus.gizmo_visibility_changed.emit(
+ PopochiuGizmoClickablePlugin.BASELINE,
+ btn_baseline.button_pressed
+ )
+
+
+func _toggle_dialog_pos_visibility() -> void:
+ PopochiuEditorHelper.signal_bus.gizmo_visibility_changed.emit(
+ PopochiuGizmoClickablePlugin.DIALOG_POS,
+ btn_dialog_pos.button_pressed
+ )
+
+
+func _select_interaction_polygon() -> void:
+ # Since we are going to select the interaction polygon node
+ # inside the node, let's hide the gizmos buttons
+ btn_walk_to_point.hide()
+ btn_baseline.hide()
+
+ # If we are editing the polygon, go back and select the parent node
+ # then stop execution.
+ var selected_node := EditorInterface.get_selection().get_selected_nodes()[0]
+ if PopochiuEditorHelper.is_popochiu_obj_polygon(
+ selected_node
+ ):
+ EditorInterface.get_selection().add_node(selected_node.get_parent())
+ _on_selection_changed()
+ return
+
+ # If we are editing a popochiu object holding a polygon, let's move on.
+
+ # This variable will hold the reference to the polygon we need to edit.
+ var obj_polygon: Node2D = null
+
+ # Let's find the node holding the polygon
+ # Since different Popochiu Objects have different polygons (NavigationRegion2D
+ # for Walkable Areas, InteractionPolygon2D for props, etc...) we tagged them
+ # by a special metadata
+ obj_polygon = PopochiuEditorHelper.get_first_child_by_group(
+ _active_popochiu_object,
+ PopochiuEditorHelper.POPOCHIU_OBJECT_POLYGON_GROUP
+ )
+
+ if obj_polygon == null:
+ return
+
+ EditorInterface.get_selection().clear()
+ EditorInterface.get_selection().add_node(obj_polygon)
+ obj_polygon.show()
+
+
+func _on_gizmo_settings_changed() -> void:
+ # Pretty self explanatory
+ _set_walkable_areas_visibility()
+ _set_toolbar_buttons_color()
+
+
+func _on_selection_changed() -> void:
+ # Always reset the walkable areas visibility depending on the user preferences
+ # Doing this immediately so, if this function exits early, the visibility is conditioned
+ # by the editor settings (partially fixes #325).
+ _set_walkable_areas_visibility()
+
+ # Make sure this function works only if the user is editing a
+ # supported scene
+ if not PopochiuEditorHelper.is_popochiu_object(
+ EditorInterface.get_edited_scene_root()
+ ):
+ hide()
+ return
+
+ # If we have no selection in the tree (the user clicked on an
+ # empty area or pressed ESC), we hide the toolbar.
+ if EditorInterface.get_selection().get_selected_nodes().is_empty():
+ if _active_popochiu_object != null:
+ # TODO: this is not a helper function, because we want to get
+ # rid of this ASAP. The same logic is also in the function
+ # _set_polygons_visibility() in the base Popochiu object
+ # factory, and should be removed as well.
+ for node in _active_popochiu_object.get_children():
+ if PopochiuEditorHelper.is_popochiu_obj_polygon(node):
+ node.hide()
+ # This "if" solves "!p_node->is_inside_tree()" internal Godot error
+ # The line inside is the logic we need to make this block work
+ if EditorInterface.get_edited_scene_root() == _active_popochiu_object:
+ EditorInterface.get_selection().add_node.call_deferred(_active_popochiu_object)
+ # Reset the clickable reference and hide the toolbar
+ # (restart from a blank state)
+ _active_popochiu_object = null
+ hide()
+ # NOTE: Here we used to pop all the buttons up, by invoking _reset_buttons_state() but
+ # this is undesirable, since it overrides the user's visibility choices for the session.
+ # Leaving this comment here for future reference.
+
+ # Reset the walkable areas visibility depending on the user preferences
+ # Doing here because clicking on an empty area would hide the walkable areas
+ # ignoring the editor settings (fixes #325)
+ _set_walkable_areas_visibility()
+
+ return
+
+ # We identify which PopochiuClickable we are working on in the editor.
+
+ # Case 1:
+ # There is only one selected node in the editor. It can be anything the user
+ # clicked on, or the polygon selected by clicking the toolbar button.
+ # (The user can never select the polygon directly because the node is not visible
+ # in the scene tree)
+ if EditorInterface.get_selection().get_selected_nodes().size() == 1:
+ var selected_node = EditorInterface.get_selection().get_selected_nodes()[0]
+ if PopochiuEditorHelper.is_popochiu_obj_polygon(selected_node):
+ _active_popochiu_object = selected_node.get_parent()
+ elif PopochiuEditorHelper.is_popochiu_room_object(selected_node):
+ var polygon = null
+ if is_instance_valid(_active_popochiu_object):
+ polygon = PopochiuEditorHelper.get_first_child_by_group(
+ _active_popochiu_object,
+ PopochiuEditorHelper.POPOCHIU_OBJECT_POLYGON_GROUP
+ )
+ if (polygon != null):
+ polygon.hide()
+ btn_interaction_polygon.set_pressed_no_signal(false)
+ _active_popochiu_object = selected_node
+ else:
+ _active_popochiu_object = null
+
+ # Case 2:
+ # We have more than one node selected. This can happen because the user selected
+ # more than one node explicitly (holding shift, or ctrl), or because the user selected
+ # one node in the scene while editing the polygon.
+ # In this case, since the polygon was selected programmatically and it's not in the scene
+ # tree, Godot will NOT remove it from selection and we need to do it by hand.
+ elif EditorInterface.get_selection().get_selected_nodes().size() > 1:
+ for node in EditorInterface.get_selection().get_selected_nodes():
+ if PopochiuEditorHelper.is_popochiu_obj_polygon(node):
+ node.hide()
+ EditorInterface.get_selection().remove_node.call_deferred(node)
+ btn_interaction_polygon.set_pressed_no_signal(false)
+
+ # Reset the walkable areas visibility depending on the user preferences
+ # Doing this also at the end because the state can be reset by one of the steps
+ # above.
+ _set_walkable_areas_visibility()
+
+ # Always reset the button visibility depending on the state of the internal variables
+ _set_buttons_visibility()
+
+
+## Handles the editor config that allows the WAs polygons to be always visible,
+## not only during editing.
+func _set_walkable_areas_visibility() -> void:
+ for child in PopochiuEditorHelper.get_all_children(
+ EditorInterface.get_edited_scene_root().find_child("WalkableAreas")
+ ):
+ # Not a polygon? Skip
+ if not PopochiuEditorHelper.is_popochiu_obj_polygon(child):
+ continue
+ # Should we show all the polygons? Show and go to the next one
+ if PopochiuEditorConfig.get_editor_setting(
+ PopochiuEditorConfig.GIZMOS_ALWAYS_SHOW_WA
+ ):
+ child.show()
+ continue
+ # If we are editing the polygon, make sure it stays visible!
+ if child in EditorInterface.get_selection().get_selected_nodes():
+ child.show()
+ continue
+ # OK, we know we must hide this polygon now!
+ child.hide()
+
+
+## Sets all the buttons color so that they are the same as the gizmos
+## or make them theme-standard if the use so prefer (see editor settings)
+func _set_toolbar_buttons_color() -> void:
+ if not PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_COLOR_TOOLBAR_BUTTONS):
+ # Reset button colors
+ _reset_toolbar_button_color(btn_baseline)
+ _reset_toolbar_button_color(btn_walk_to_point)
+ _reset_toolbar_button_color(btn_look_at_point)
+ _reset_toolbar_button_color(btn_dialog_pos)
+ _reset_toolbar_button_color(btn_interaction_polygon)
+ # Done
+ return
+
+ _set_toolbar_button_color(
+ btn_baseline,
+ PopochiuEditorConfig.get_editor_setting(
+ PopochiuEditorConfig.GIZMOS_BASELINE_COLOR)
+ )
+ _set_toolbar_button_color(
+ btn_walk_to_point,
+ PopochiuEditorConfig.get_editor_setting(
+ PopochiuEditorConfig.GIZMOS_WALK_TO_POINT_COLOR)
+ )
+ _set_toolbar_button_color(
+ btn_look_at_point,
+ PopochiuEditorConfig.get_editor_setting(
+ PopochiuEditorConfig.GIZMOS_LOOK_AT_POINT_COLOR)
+ )
+ _set_toolbar_button_color(
+ btn_dialog_pos,
+ PopochiuEditorConfig.get_editor_setting(
+ PopochiuEditorConfig.GIZMOS_DIALOG_POS_COLOR)
+ )
+ _set_toolbar_button_color(
+ btn_interaction_polygon,
+ Color.RED # no config for this at the moment
+ )
+
+
+## Internal helper to reduce code duplication
+func _set_toolbar_button_color(btn, color) -> void:
+ btn.add_theme_color_override("icon_normal_color", color)
+ btn.add_theme_color_override("icon_hover_color", color.lightened(1.0))
+ btn.add_theme_color_override("icon_focused_color", color.lightened(1.0))
+ btn.add_theme_color_override("icon_pressed_color", color.darkened(0.2))
+ btn.add_theme_color_override("icon_hover_pressed_color", color.lightened(1.0))
+
+
+## Internal helper to reduce code duplication
+func _reset_toolbar_button_color(btn) -> void:
+ btn.remove_theme_color_override("icon_normal_color")
+ btn.remove_theme_color_override("icon_hover_color")
+ btn.remove_theme_color_override("icon_focused_color")
+ btn.remove_theme_color_override("icon_pressed_color")
+ btn.remove_theme_color_override("icon_hover_pressed_color")
+
+
+func _set_buttons_visibility() -> void:
+ # Let's assume the buttons are all hidden...
+ hide()
+ btn_baseline.hide()
+ btn_walk_to_point.hide()
+ btn_look_at_point.hide()
+ btn_dialog_pos.hide()
+ btn_interaction_polygon.hide()
+
+ # If we are not editing a Popochiu object, nothing to do
+ if not PopochiuEditorHelper.is_popochiu_room_object(_active_popochiu_object):
+ return
+
+ # Now we know we have to show the toolbar
+ show()
+
+ # Every Popochiu Object always shows the polygon editing button when edited
+ # unless we are in a room scene and selected a character
+ if not (
+ PopochiuEditorHelper.is_character(_active_popochiu_object)
+ and PopochiuEditorHelper.is_editing_room()
+ ):
+ btn_interaction_polygon.show()
+
+ # If the selected node in the editor is actually a popochiu object polygon
+ # We don't have to show the other buttons, only the polygon editing toggle
+ if PopochiuEditorHelper.is_popochiu_obj_polygon(
+ EditorInterface.get_selection().get_selected_nodes()[0]
+ ):
+ return
+
+ # If we are in a room scene, we may have selected a room object of sort, so check
+ # for the various types and hide the ones we don't need
+ if PopochiuEditorHelper.is_room(EditorInterface.get_edited_scene_root()):
+ # If we are editing a clickable object, let's show gizmos buttons too
+ if _active_popochiu_object is PopochiuClickable:
+ btn_baseline.show()
+ btn_walk_to_point.show()
+ btn_look_at_point.show()
+
+ # If we are in a Character scene, show polygon and dialogpos gizmo button
+ elif PopochiuEditorHelper.is_character(EditorInterface.get_edited_scene_root()):
+ btn_dialog_pos.show()
+
+
+# Make all buttons pop-up
+func _reset_buttons_state() -> void:
+ btn_baseline.set_pressed_no_signal(true)
+ btn_walk_to_point.set_pressed_no_signal(true)
+ btn_look_at_point.set_pressed_no_signal(true)
+ btn_dialog_pos.set_pressed_no_signal(true)
diff --git a/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.gd.uid b/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.gd.uid
new file mode 100644
index 0000000..091c1e9
--- /dev/null
+++ b/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.gd.uid
@@ -0,0 +1 @@
+uid://15ys464umb3h
diff --git a/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.tscn b/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.tscn
new file mode 100644
index 0000000..94a5786
--- /dev/null
+++ b/addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.tscn
@@ -0,0 +1,65 @@
+[gd_scene load_steps=7 format=3 uid="uid://wd748u1vdybq"]
+
+[ext_resource type="Script" path="res://addons/popochiu/editor/canvas_editor_menu/popochiu_canvas_editor_menu.gd" id="1_vs7c6"]
+[ext_resource type="Texture2D" uid="uid://b3sku5v1n23ni" path="res://addons/popochiu/icons/btn_baseline.svg" id="2_w3cau"]
+[ext_resource type="Texture2D" uid="uid://dmt2epjmlpv56" path="res://addons/popochiu/icons/btn_walk_to_point.svg" id="3_ifql1"]
+[ext_resource type="Texture2D" uid="uid://skjlvpct7ah7" path="res://addons/popochiu/icons/btn_look_at_point.svg" id="4_bge33"]
+[ext_resource type="Texture2D" uid="uid://cekffh7bsuanp" path="res://addons/popochiu/icons/btn_dialog_position.svg" id="5_803mj"]
+[ext_resource type="Texture2D" uid="uid://cyun4rylrtrvm" path="res://addons/popochiu/icons/btn_interaction_polygon.svg" id="6_6oxl8"]
+
+[node name="PopochiuCanvasEditorMenu" type="HBoxContainer"]
+visible = false
+offset_right = 40.0
+offset_bottom = 40.0
+script = ExtResource("1_vs7c6")
+
+[node name="Label" type="Label" parent="."]
+layout_mode = 2
+text = "Popochiu "
+vertical_alignment = 1
+
+[node name="BtnBaseline" type="Button" parent="."]
+unique_name_in_owner = true
+visible = false
+layout_mode = 2
+tooltip_text = "Baseline"
+theme_type_variation = &"FlatButton"
+toggle_mode = true
+button_pressed = true
+icon = ExtResource("2_w3cau")
+
+[node name="BtnWalkToPoint" type="Button" parent="."]
+unique_name_in_owner = true
+visible = false
+layout_mode = 2
+tooltip_text = "Walk-To Point"
+theme_type_variation = &"FlatButton"
+toggle_mode = true
+button_pressed = true
+icon = ExtResource("3_ifql1")
+
+[node name="BtnLookAtPoint" type="Button" parent="."]
+unique_name_in_owner = true
+layout_mode = 2
+tooltip_text = "Look-At Point"
+theme_type_variation = &"FlatButton"
+toggle_mode = true
+button_pressed = true
+icon = ExtResource("4_bge33")
+
+[node name="BtnDialogPos" type="Button" parent="."]
+unique_name_in_owner = true
+layout_mode = 2
+tooltip_text = "Dialog Position"
+theme_type_variation = &"FlatButton"
+toggle_mode = true
+button_pressed = true
+icon = ExtResource("5_803mj")
+
+[node name="BtnInteractionPolygon" type="Button" parent="."]
+unique_name_in_owner = true
+layout_mode = 2
+tooltip_text = "Interaction Polygon"
+theme_type_variation = &"FlatButton"
+toggle_mode = true
+icon = ExtResource("6_6oxl8")
diff --git a/addons/popochiu/editor/config/config.gd b/addons/popochiu/editor/config/config.gd
new file mode 100644
index 0000000..43496e5
--- /dev/null
+++ b/addons/popochiu/editor/config/config.gd
@@ -0,0 +1,291 @@
+@tool
+class_name PopochiuConfig
+extends RefCounted
+
+enum DialogStyle {
+ ABOVE_CHARACTER,
+ PORTRAIT,
+ CAPTION,
+ #PORTRAIT_ABOVE_CHARACTER, # TODO: Create a GUI node to make this option available
+ #BUBBLE_ABOVE_CHARACTER, # TODO: Create a GUI node to make this option available
+}
+
+# Thanks to @drbloop for providing the bases of the new approach for moving the popochiu settings to
+# Godot's ProjectSettings instead of using a Resource file.
+# ---- GUI -----------------------------------------------------------------------------------------
+const SCALE_GUI = "popochiu/gui/experimental_scale_gui"
+const FADE_COLOR = "popochiu/gui/fade_color"
+const SKIP_CUTSCENE_TIME = "popochiu/gui/skip_cutscene_time"
+const TL_FIRST_ROOM = "popochiu/gui/show_transition_layer_in_first_room"
+
+# ---- Dialogs -------------------------------------------------------------------------------------
+const TEXT_SPEED = "popochiu/dialogs/text_speed"
+const AUTO_CONTINUE_TEXT = "popochiu/dialogs/auto_continue_text"
+const USE_TRANSLATIONS = "popochiu/dialogs/use_translations"
+const GIBBERISH_SPOKEN_TEXT = 'popochiu/dialogs/gibberish_spoken_text'
+const GIBBERISH_DIALOG_OPTIONS = 'popochiu/dialogs/gibberish_dialog_options'
+const DIALOG_STYLE = "popochiu/dialogs/dialog_style"
+
+# ---- Inventory -----------------------------------------------------------------------------------
+const INVENTORY_LIMIT = "popochiu/inventory/inventory_limit"
+const INVENTORY_ITEMS_ON_START = "popochiu/inventory/items_on_start"
+
+# ---- Aseprite Importing --------------------------------------------------------------------------
+const ASEPRITE_IMPORT_ANIMATION = "popochiu/aseprite_import/import_animation_by_default"
+const ASEPRITE_LOOP_ANIMATION = "popochiu/aseprite_import/loop_animation_by_default"
+const ASEPRITE_PROPS_VISIBLE = "popochiu/aseprite_import/new_props_visible_by_default"
+const ASEPRITE_PROPS_CLICKABLE = "popochiu/aseprite_import/new_props_clickable_by_default"
+const ASEPRITE_WIPE_OLD_ANIMATIONS = "popochiu/aseprite_import/wipe_old_animations"
+
+# ---- Pixel game ----------------------------------------------------------------------------------
+const PIXEL_ART_TEXTURES = "popochiu/pixel/pixel_art_textures"
+const PIXEL_PERFECT = "popochiu/pixel/pixel_perfect"
+
+# ---- Audio ---------------------------------------------------------------------------------------
+const PREFIX_CHARACTER = "popochiu/audio/prefix_character"
+const MUSIC_PREFIXES = "popochiu/audio/music_prefixes"
+const SOUND_EFFECT_PREFIXES = "popochiu/audio/sound_effect_prefixes"
+const VOICE_PREFIXES = "popochiu/audio/voice_prefixes"
+const UI_PREFIXES = "popochiu/audio/ui_prefixes"
+
+# ---- DEV -----------------------------------------------------------------------------------------
+const DEV_USE_ADDON_TEMPLATE = "popochiu/dev/use_addon_template"
+
+static var defaults := {
+ SCALE_GUI: false,
+ FADE_COLOR: Color.BLACK,
+ SKIP_CUTSCENE_TIME: 0.2,
+ TL_FIRST_ROOM: false,
+ TEXT_SPEED: 0.1,
+ AUTO_CONTINUE_TEXT: false,
+ USE_TRANSLATIONS: false,
+ GIBBERISH_SPOKEN_TEXT: false,
+ GIBBERISH_DIALOG_OPTIONS: false,
+ DIALOG_STYLE: DialogStyle.ABOVE_CHARACTER,
+ INVENTORY_LIMIT: 0,
+ INVENTORY_ITEMS_ON_START: [],
+ ASEPRITE_IMPORT_ANIMATION: true,
+ ASEPRITE_LOOP_ANIMATION: true,
+ ASEPRITE_PROPS_VISIBLE: true,
+ ASEPRITE_PROPS_CLICKABLE: true,
+ ASEPRITE_WIPE_OLD_ANIMATIONS: true,
+ PIXEL_ART_TEXTURES: false,
+ PIXEL_PERFECT: false,
+ PREFIX_CHARACTER: "_",
+ MUSIC_PREFIXES: "mx,",
+ SOUND_EFFECT_PREFIXES: "sfx,",
+ VOICE_PREFIXES: "vo,",
+ UI_PREFIXES: "ui,",
+ DEV_USE_ADDON_TEMPLATE: false,
+}
+
+
+#region Public #####################################################################################
+static func initialize_project_settings():
+ # ---- GUI -------------------------------------------------------------------------------------
+ _initialize_project_setting(SCALE_GUI, TYPE_BOOL)
+ _initialize_project_setting(FADE_COLOR, TYPE_COLOR)
+ _initialize_project_setting(SKIP_CUTSCENE_TIME, TYPE_FLOAT)
+ _initialize_project_setting(TL_FIRST_ROOM, TYPE_BOOL)
+
+ # ---- Dialogs ---------------------------------------------------------------------------------
+ _initialize_project_setting(TEXT_SPEED, TYPE_FLOAT, PROPERTY_HINT_RANGE, "0.0,0.1")
+ _initialize_project_setting(AUTO_CONTINUE_TEXT, TYPE_BOOL)
+ #_initialize_project_setting(USE_TRANSLATIONS, TYPE_BOOL)
+ #_initialize_project_setting(
+ #DIALOG_STYLE,
+ #TYPE_INT,
+ #PROPERTY_HINT_ENUM,
+ ## TODO: Add other options: Portrait Above Character, Bubble Above Character
+ #"Above Character,Portrait,Caption"
+ #)
+ _initialize_project_setting(GIBBERISH_SPOKEN_TEXT, TYPE_BOOL)
+ _initialize_project_setting(GIBBERISH_DIALOG_OPTIONS, TYPE_BOOL)
+
+ # ---- Inventory -------------------------------------------------------------------------------
+ _initialize_project_setting(INVENTORY_LIMIT, TYPE_INT)
+ _initialize_project_setting(
+ INVENTORY_ITEMS_ON_START,
+ TYPE_ARRAY,
+ PROPERTY_HINT_TYPE_STRING,
+ "%d:" % [TYPE_STRING]
+ )
+
+ # ---- Aseprite Importing ----------------------------------------------------------------------
+ _initialize_project_setting(ASEPRITE_IMPORT_ANIMATION, TYPE_BOOL)
+ _initialize_project_setting(ASEPRITE_LOOP_ANIMATION, TYPE_BOOL)
+ _initialize_project_setting(ASEPRITE_PROPS_VISIBLE, TYPE_BOOL)
+ _initialize_project_setting(ASEPRITE_PROPS_CLICKABLE, TYPE_BOOL)
+ _initialize_project_setting(ASEPRITE_WIPE_OLD_ANIMATIONS, TYPE_BOOL)
+
+ # ---- Pixel game ------------------------------------------------------------------------------
+ _initialize_project_setting(PIXEL_ART_TEXTURES, TYPE_BOOL)
+ _initialize_project_setting(PIXEL_PERFECT, TYPE_BOOL)
+
+ # ---- Audio -----------------------------------------------------------------------------------
+ _initialize_project_setting(PREFIX_CHARACTER, TYPE_STRING)
+ _initialize_project_setting(MUSIC_PREFIXES, TYPE_STRING)
+ _initialize_project_setting(SOUND_EFFECT_PREFIXES, TYPE_STRING)
+ _initialize_project_setting(VOICE_PREFIXES, TYPE_STRING)
+ _initialize_project_setting(UI_PREFIXES, TYPE_STRING)
+
+ # ---- DEV -------------------------------------------------------------------------------------
+ _initialize_advanced_project_setting(DEV_USE_ADDON_TEMPLATE, TYPE_BOOL)
+
+ ProjectSettings.save()
+
+
+static func set_project_setting(key: String, value) -> void:
+ ProjectSettings.set_setting(key, value)
+ ProjectSettings.save()
+
+
+# ---- GUI -----------------------------------------------------------------------------------------
+static func is_scale_gui() -> bool:
+ return _get_project_setting(SCALE_GUI)
+
+
+static func get_fade_color() -> Color:
+ return _get_project_setting(FADE_COLOR)
+
+
+static func get_skip_cutscene_time() -> float:
+ return _get_project_setting(SKIP_CUTSCENE_TIME)
+
+static func should_show_tl_in_first_room() -> bool:
+ return _get_project_setting(TL_FIRST_ROOM)
+
+
+# ---- Dialogs -------------------------------------------------------------------------------------
+static func get_text_speed() -> float:
+ return _get_project_setting(TEXT_SPEED)
+
+
+static func is_auto_continue_text() -> bool:
+ return _get_project_setting(AUTO_CONTINUE_TEXT)
+
+
+static func is_use_translations() -> bool:
+ return _get_project_setting(USE_TRANSLATIONS)
+
+
+static func get_dialog_style() -> int:
+ return _get_project_setting(DIALOG_STYLE)
+
+
+static func should_talk_gibberish() -> bool:
+ return _get_project_setting(GIBBERISH_SPOKEN_TEXT)
+
+
+static func should_dialog_options_be_gibberish() -> bool:
+ return _get_project_setting(GIBBERISH_DIALOG_OPTIONS)
+
+
+# ---- Inventory -----------------------------------------------------------------------------------
+static func get_inventory_limit() -> int:
+ return _get_project_setting(INVENTORY_LIMIT)
+
+
+static func set_inventory_items_on_start(items: Array) -> void:
+ set_project_setting(INVENTORY_ITEMS_ON_START, items)
+
+
+static func get_inventory_items_on_start() -> Array:
+ return _get_project_setting(INVENTORY_ITEMS_ON_START)
+
+
+# ---- Aseprite Importing --------------------------------------------------------------------------
+static func is_default_animation_import_enabled() -> bool:
+ return _get_project_setting(ASEPRITE_IMPORT_ANIMATION)
+
+
+static func is_default_animation_loop_enabled() -> bool:
+ return _get_project_setting(ASEPRITE_LOOP_ANIMATION)
+
+
+static func is_default_animation_prop_visible() -> bool:
+ return _get_project_setting(ASEPRITE_PROPS_VISIBLE)
+
+
+static func is_default_animation_prop_clickable() -> bool:
+ return _get_project_setting(ASEPRITE_PROPS_CLICKABLE)
+
+
+static func is_default_wipe_old_anims_enabled() -> bool:
+ return _get_project_setting(ASEPRITE_WIPE_OLD_ANIMATIONS)
+
+
+# ---- Pixel game ----------------------------------------------------------------------------------
+static func set_pixel_art_textures(use_pixel_art_textures: bool) -> void:
+ set_project_setting(PIXEL_ART_TEXTURES, use_pixel_art_textures)
+
+
+static func is_pixel_art_textures() -> bool:
+ return _get_project_setting(PIXEL_ART_TEXTURES)
+
+
+static func is_pixel_perfect() -> bool:
+ return _get_project_setting(PIXEL_PERFECT)
+
+
+# ---- Audio ---------------------------------------------------------------------------------------
+static func get_prefix_character() -> String:
+ return _get_project_setting(PREFIX_CHARACTER)
+
+
+static func get_music_prefixes() -> String:
+ return _get_project_setting(MUSIC_PREFIXES)
+
+
+static func get_sound_effect_prefixes() -> String:
+ return _get_project_setting(SOUND_EFFECT_PREFIXES)
+
+
+static func get_voice_prefixes() -> String:
+ return _get_project_setting(VOICE_PREFIXES)
+
+
+static func get_ui_prefixes() -> String:
+ return _get_project_setting(UI_PREFIXES)
+
+
+# ---- DEV -----------------------------------------------------------------------------------------
+static func is_use_addon_template() -> bool:
+ return _get_project_setting(DEV_USE_ADDON_TEMPLATE)
+
+
+#endregion
+
+#region Private ####################################################################################
+static func _initialize_project_setting(
+ key: String, type: int, hint := PROPERTY_HINT_NONE, hint_string := ""
+) -> void:
+ _create_setting(key, type, hint, hint_string)
+ ProjectSettings.set_as_basic(key, true)
+
+
+static func _initialize_advanced_project_setting(
+ key: String, type: int, hint := PROPERTY_HINT_NONE, hint_string := ""
+) -> void:
+ _create_setting(key, type, hint, hint_string)
+
+
+static func _create_setting(
+ key: String, type: int, hint := PROPERTY_HINT_NONE, hint_string := ""
+) -> void:
+ ProjectSettings.set_setting(key, ProjectSettings.get_setting(key, defaults[key]))
+ ProjectSettings.set_initial_value(key, defaults[key])
+ ProjectSettings.add_property_info({
+ "name": key,
+ "type": type,
+ "hint": hint,
+ "hint_string": hint_string,
+ })
+
+
+static func _get_project_setting(key: String):
+ var p = ProjectSettings.get_setting(key)
+ return p if p != null else defaults[key]
+
+
+#endregion
diff --git a/addons/popochiu/editor/config/config.gd.uid b/addons/popochiu/editor/config/config.gd.uid
new file mode 100644
index 0000000..8eb4eb8
--- /dev/null
+++ b/addons/popochiu/editor/config/config.gd.uid
@@ -0,0 +1 @@
+uid://blq0g140jdg7d
diff --git a/addons/popochiu/editor/config/editor_config.gd b/addons/popochiu/editor/config/editor_config.gd
new file mode 100644
index 0000000..b44c8ed
--- /dev/null
+++ b/addons/popochiu/editor/config/editor_config.gd
@@ -0,0 +1,128 @@
+@tool
+class_name PopochiuEditorConfig
+extends RefCounted
+
+enum Icons { COLLAPSED, EXPANDED }
+
+# ASEPRITE IMPORTER --------------------------------------------------------------------------------
+const ASEPRITE_IMPORTER_ENABLED = "popochiu/import/aseprite/enable_aseprite_importer"
+const ASEPRITE_COMMAND_PATH = "popochiu/import/aseprite/command_path"
+const ASEPRITE_REMOVE_JSON_FILE = "popochiu/import/aseprite/remove_json_file"
+
+# GIZMOS -------------------------------------------------------------------------------------------
+const GIZMOS_FONT_SIZE = "popochiu/gizmos/font_size"
+const GIZMOS_BASELINE_COLOR = "popochiu/gizmos/baseline_color"
+const GIZMOS_WALK_TO_POINT_COLOR = "popochiu/gizmos/walk_to_point_color"
+const GIZMOS_LOOK_AT_POINT_COLOR = "popochiu/gizmos/look_at_point_color"
+const GIZMOS_DIALOG_POS_COLOR = "popochiu/gizmos/dialog_position_color"
+const GIZMOS_COLOR_TOOLBAR_BUTTONS = "popochiu/gizmos/apply_colors_to_toolbar_buttons"
+const GIZMOS_HANDLER_SIZE = "popochiu/gizmos/handler_size"
+const GIZMOS_SHOW_CONNECTORS = "popochiu/gizmos/show_connectors"
+const GIZMOS_SHOW_OUTLINE = "popochiu/gizmos/show_handler_outline"
+const GIZMOS_SHOW_NODE_NAME = "popochiu/gizmos/show_node_name"
+const GIZMOS_ALWAYS_SHOW_WA = "popochiu/gizmos/always_show_walkable_areas"
+
+# Settings default values
+static var defaults := {
+ ASEPRITE_IMPORTER_ENABLED: false,
+ ASEPRITE_COMMAND_PATH: _default_aseprite_command(),
+ ASEPRITE_REMOVE_JSON_FILE: true,
+ GIZMOS_FONT_SIZE: _default_font_size(),
+ GIZMOS_BASELINE_COLOR: Color.CYAN,
+ GIZMOS_WALK_TO_POINT_COLOR: Color.GREEN,
+ GIZMOS_LOOK_AT_POINT_COLOR: Color.RED,
+ GIZMOS_DIALOG_POS_COLOR: Color.MAGENTA,
+ GIZMOS_COLOR_TOOLBAR_BUTTONS: true,
+ GIZMOS_HANDLER_SIZE: 32,
+ GIZMOS_SHOW_CONNECTORS: true,
+ GIZMOS_SHOW_OUTLINE: true,
+ GIZMOS_SHOW_NODE_NAME: true,
+ GIZMOS_ALWAYS_SHOW_WA: false,
+}
+
+static var editor_settings: EditorSettings
+
+
+#region Public #####################################################################################
+static func initialize_editor_settings():
+ editor_settings = EditorInterface.get_editor_settings()
+
+ # Aseprite importer
+ _initialize_editor_setting(ASEPRITE_IMPORTER_ENABLED, TYPE_BOOL)
+ _initialize_editor_setting(ASEPRITE_COMMAND_PATH, TYPE_STRING)
+ _initialize_editor_setting(ASEPRITE_REMOVE_JSON_FILE, TYPE_BOOL)
+ # Gizmos
+ _initialize_editor_setting(GIZMOS_BASELINE_COLOR, TYPE_COLOR)
+ _initialize_editor_setting(GIZMOS_WALK_TO_POINT_COLOR, TYPE_COLOR)
+ _initialize_editor_setting(GIZMOS_LOOK_AT_POINT_COLOR, TYPE_COLOR)
+ _initialize_editor_setting(GIZMOS_DIALOG_POS_COLOR, TYPE_COLOR)
+ _initialize_editor_setting(GIZMOS_COLOR_TOOLBAR_BUTTONS, TYPE_BOOL)
+ _initialize_editor_setting(GIZMOS_HANDLER_SIZE, TYPE_INT, PROPERTY_HINT_RANGE, "4,64")
+ _initialize_editor_setting(GIZMOS_FONT_SIZE, TYPE_INT, PROPERTY_HINT_RANGE, "4,64")
+ _initialize_editor_setting(GIZMOS_SHOW_CONNECTORS, TYPE_BOOL)
+ _initialize_editor_setting(GIZMOS_SHOW_OUTLINE, TYPE_BOOL)
+ _initialize_editor_setting(GIZMOS_SHOW_NODE_NAME, TYPE_BOOL)
+ _initialize_editor_setting(GIZMOS_ALWAYS_SHOW_WA, TYPE_BOOL)
+
+
+static func get_icon(icon: Icons) -> Texture2D:
+ match icon:
+ Icons.COLLAPSED:
+ return EditorInterface.get_base_control().get_theme_icon(
+ "GuiTreeArrowRight", "EditorIcons"
+ )
+ Icons.EXPANDED:
+ return EditorInterface.get_base_control().get_theme_icon(
+ "GuiTreeArrowDown", "EditorIcons"
+ )
+
+ return null
+
+
+# ASEPRITE IMPORTER --------------------------------------------------------------------------------
+static func aseprite_importer_enabled() -> bool:
+ return get_editor_setting(ASEPRITE_IMPORTER_ENABLED)
+
+
+static func get_command() -> String:
+ return get_editor_setting(ASEPRITE_COMMAND_PATH)
+
+
+static func should_remove_source_files() -> bool:
+ return get_editor_setting(ASEPRITE_REMOVE_JSON_FILE)
+
+#endregion
+
+
+#region Private ####################################################################################
+static func _default_aseprite_command() -> String:
+ return 'aseprite'
+
+
+static func _default_font_size() -> int:
+ if Engine.is_editor_hint():
+ return EditorInterface.get_editor_theme().default_font_size
+ return 16
+
+
+static func _initialize_editor_setting(
+ key: String, type: int, hint: int = PROPERTY_HINT_NONE, hint_string : String = ""
+) -> void:
+ if editor_settings.has_setting(key): return
+
+ editor_settings.set_setting(key, defaults[key])
+ editor_settings.set_initial_value(key, defaults[key], false)
+ editor_settings.add_property_info({
+ "name": key,
+ "type": type,
+ "hint": hint,
+ "hint_string": hint_string
+ })
+
+
+static func get_editor_setting(key: String):
+ var e = editor_settings.get_setting(key)
+ return e if e != null else defaults[e]
+
+
+#endregion
diff --git a/addons/popochiu/editor/config/editor_config.gd.uid b/addons/popochiu/editor/config/editor_config.gd.uid
new file mode 100644
index 0000000..74b0622
--- /dev/null
+++ b/addons/popochiu/editor/config/editor_config.gd.uid
@@ -0,0 +1 @@
+uid://c2xn0h6paw2xy
diff --git a/addons/popochiu/editor/config/local_obj_config.gd b/addons/popochiu/editor/config/local_obj_config.gd
new file mode 100644
index 0000000..0b4eb39
--- /dev/null
+++ b/addons/popochiu/editor/config/local_obj_config.gd
@@ -0,0 +1,70 @@
+@tool
+extends RefCounted
+
+
+const LOCAL_OBJ_CONFIG_META_NAME = "_popochiu_aseprite_config_"
+const LOCAL_OBJ_CONFIG_MARKER = "popochiu_aseprite_config"
+const SEPARATOR = "|="
+
+
+
+# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ PUBLIC ββββ
+static func encode(object: Dictionary):
+ var text = "%s\n" % LOCAL_OBJ_CONFIG_MARKER
+
+ for prop in object:
+ text += "%s%s%s\n" % [prop, SEPARATOR, object[prop]]
+
+ return Marshalls.utf8_to_base64(text)
+
+
+static func decode(string: String):
+ var decoded = _decode_base64(string)
+ if not _is_valid_config(decoded):
+ return null
+
+ print(decoded)
+
+ var cfg = decoded.split("\n")
+ var config = {}
+ for c in cfg:
+ var parts = c.split(SEPARATOR, 1)
+ if parts.size() == 2:
+ var key = parts[0].strip_edges()
+ var value = parts[1].strip_edges()
+
+ #Convert bool properties
+ if key in ["only_visible_layers", "wipe_old_anims", "op_exp"]:
+ match value:
+ "True":
+ config[key] = true
+ "False":
+ config[key] = false
+ _:
+ config[key] = false
+ else:
+ config[key] = value
+
+ return config
+
+
+static func load_config(node:Node):
+ # Check if node is not null to avoid showing error messages in Output when inspecting nodes in
+ # the Debugger
+ if node and node.has_meta(LOCAL_OBJ_CONFIG_META_NAME):
+ return node.get_meta(LOCAL_OBJ_CONFIG_META_NAME)
+
+
+static func save_config(node:Node, cfg:Dictionary):
+ node.set_meta(LOCAL_OBJ_CONFIG_META_NAME, cfg)
+
+
+# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ PRIVATE ββββ
+static func _decode_base64(string: String):
+ if string != "":
+ return Marshalls.base64_to_utf8(string)
+ return null
+
+
+static func _is_valid_config(cfg) -> bool:
+ return cfg != null and cfg.begins_with(LOCAL_OBJ_CONFIG_MARKER)
diff --git a/addons/popochiu/editor/config/local_obj_config.gd.uid b/addons/popochiu/editor/config/local_obj_config.gd.uid
new file mode 100644
index 0000000..ecbb848
--- /dev/null
+++ b/addons/popochiu/editor/config/local_obj_config.gd.uid
@@ -0,0 +1 @@
+uid://d26rqfocnhh7v
diff --git a/addons/popochiu/editor/config/result_codes.gd b/addons/popochiu/editor/config/result_codes.gd
new file mode 100644
index 0000000..a30ee3d
--- /dev/null
+++ b/addons/popochiu/editor/config/result_codes.gd
@@ -0,0 +1,75 @@
+@tool
+extends RefCounted
+class_name ResultCodes
+
+enum {
+ ## Base codes
+ FAILURE, # generic failure state
+ SUCCESS, # generic success state
+ ## Aseprite importer errors
+ ERR_ASEPRITE_CMD_NOT_FULL_PATH,
+ ERR_ASEPRITE_CMD_NOT_FOUND,
+ ERR_SOURCE_FILE_NOT_FOUND,
+ ERR_OUTPUT_FOLDER_NOT_FOUND,
+ ERR_ASEPRITE_EXPORT_FAILED,
+ ERR_UNKNOWN_EXPORT_MODE,
+ ERR_NO_VALID_LAYERS_FOUND,
+ ERR_INVALID_ASEPRITE_SPRITESHEET,
+ ERR_NO_ANIMATION_PLAYER_FOUND,
+ ERR_NO_SPRITE_FOUND,
+ ERR_UNNAMED_TAG_DETECTED,
+ ERR_TAGS_OPTIONS_ARRAY_EMPTY,
+ ## Popochiu Object factories errors
+ ERR_CANT_CREATE_OBJ_FOLDER,
+ ERR_CANT_CREATE_OBJ_STATE,
+ ERR_CANT_OPEN_OBJ_SCRIPT_TEMPLATE,
+ ERR_CANT_CREATE_OBJ_SCRIPT,
+ ERR_CANT_SAVE_OBJ_SCENE,
+ ERR_CANT_SAVE_OBJ_RESOURCE,
+}
+
+
+# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ PUBLIC ββββ
+static func get_error_message(code: int):
+ ## TODO: these messages are a bit dull, having params would be better.
+ ## Maybe add a param argument
+ match code:
+ # Aseprite importers error messages
+ ERR_ASEPRITE_CMD_NOT_FULL_PATH:
+ return "Aseprite command not found at given path. Please check \"Editor Settings > Popochiu > Import > Command Path\" to hold the FULL path to a valid Aseprite executable."
+ ERR_ASEPRITE_CMD_NOT_FOUND:
+ return "Aseprite command failed. Please, check if the right command is in your PATH or configured through \"Editor Settings > Popochiu > Import > Command Path\"."
+ ERR_SOURCE_FILE_NOT_FOUND:
+ return "Source file does not exist"
+ ERR_OUTPUT_FOLDER_NOT_FOUND:
+ return "Output location does not exist"
+ ERR_ASEPRITE_EXPORT_FAILED:
+ return "Unable to import file"
+ ERR_INVALID_ASEPRITE_SPRITESHEET:
+ return "Aseprite generated invalid data file"
+ ERR_NO_VALID_LAYERS_FOUND:
+ return "No valid layers found"
+ ERR_NO_ANIMATION_PLAYER_FOUND:
+ return "No AnimationPlayer found in target node"
+ ERR_NO_SPRITE_FOUND:
+ return "No sprite found in target node"
+ ERR_UNNAMED_TAG_DETECTED:
+ return "Unnamed tag detected"
+ ERR_TAGS_OPTIONS_ARRAY_EMPTY:
+ return "Tags options array is empty"
+ # Popochiu object factories error messages
+ ERR_CANT_CREATE_OBJ_FOLDER:
+ return "Can't create folder to host new Popochiu object"
+ ERR_CANT_CREATE_OBJ_STATE:
+ return "Can't create new Popochiu object's state resource (_state.tres, _state.gd)"
+ ERR_CANT_OPEN_OBJ_SCRIPT_TEMPLATE:
+ return "Can't open script template for new Popochiu object"
+ ERR_CANT_CREATE_OBJ_SCRIPT:
+ return "Can't create new Popochiu object's script file (.gd)"
+ ERR_CANT_SAVE_OBJ_SCENE:
+ return "Can't create new Popochiu object's scene (.tscn)"
+ ERR_CANT_SAVE_OBJ_RESOURCE:
+ return "Can't create new Popochiu object's resource (.tres)"
+ # Generic error message
+ _:
+ return "Import failed with code %d" % code
diff --git a/addons/popochiu/editor/config/result_codes.gd.uid b/addons/popochiu/editor/config/result_codes.gd.uid
new file mode 100644
index 0000000..1348147
--- /dev/null
+++ b/addons/popochiu/editor/config/result_codes.gd.uid
@@ -0,0 +1 @@
+uid://cbxik5o1u00hf
diff --git a/addons/popochiu/editor/factories/factory_base_popochiu_obj.gd b/addons/popochiu/editor/factories/factory_base_popochiu_obj.gd
new file mode 100644
index 0000000..93e11a0
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_base_popochiu_obj.gd
@@ -0,0 +1,237 @@
+extends RefCounted
+
+const BASE_STATE_TEMPLATE := "res://addons/popochiu/engine/templates/%s_state_template.gd"
+const BASE_SCRIPT_TEMPLATE := "res://addons/popochiu/engine/templates/%s_template.gd"
+const BASE_SCENE_PATH := "res://addons/popochiu/engine/objects/%s/popochiu_%s.tscn"
+const EMPTY_SCRIPT := "res://addons/popochiu/engine/templates/empty_script_template.gd"
+
+# The following variables are setup on creation Names variants and name parameter passed to the
+# create method.
+var _path_template := "" # always set by child class
+var _snake_name := ""
+var _pascal_name := ""
+var _path_base := ""
+var _path_scene = ""
+var _path_resource = ""
+var _path_state = ""
+var _path_script := ""
+# The following variables are setup by the sub-class constructor to define the type of object to be
+# processed
+# TODO: reduce this to just "type", too much redundancy
+var _type := -1
+var _type_label := ""
+var _type_target := ""
+var _type_method: Callable
+# The following variables are references to the elements generated for the creation of the new
+# Popochiu object, such as resources, scenes, scripts, state scripts, etc
+var _scene: Node
+var _resource: Resource
+var _state_resource: Resource
+var _script: Resource
+
+
+#region Public #####################################################################################
+func get_obj_scene() -> Node:
+ return _scene
+
+
+func get_snake_name() -> String:
+ return _snake_name
+
+
+func get_obj_resource() -> Resource:
+ return _resource
+
+
+func get_state_resource() -> Resource:
+ return _state_resource
+
+
+func get_obj_script() -> Resource:
+ return _script
+
+
+func get_scene_path() -> String:
+ return _path_scene
+
+
+func get_type() -> int:
+ return _type
+
+
+func get_type_method() -> Callable:
+ return _type_method
+
+
+#endregion
+
+#region Private ####################################################################################
+func _setup_name(obj_name: String) -> void:
+ _pascal_name = obj_name.to_pascal_case()
+ _snake_name = obj_name.to_snake_case()
+ _path_base = _path_template % [_snake_name, _snake_name]
+ _path_script = _path_base + ".gd"
+ _path_state = _path_base + "_state.gd"
+ _path_resource = _path_base + ".tres"
+ _path_scene = _path_base + ".tscn"
+
+
+func _create_obj_folder() -> int:
+ # TODO: Remove created files if the creation process failed.
+ if DirAccess.make_dir_recursive_absolute(_path_base.get_base_dir()) != OK:
+ PopochiuUtils.print_error(
+ "Could not create %s directory: %s" %
+ [_path_base.get_base_dir(), _pascal_name]
+ )
+ return ResultCodes.ERR_CANT_CREATE_OBJ_FOLDER
+ return ResultCodes.SUCCESS
+
+
+func _create_state_resource() -> int:
+ var state_template: Script = load(
+ BASE_STATE_TEMPLATE % _type_label
+ ).duplicate()
+
+ if ResourceSaver.save(state_template, _path_state) != OK:
+ PopochiuUtils.print_error(
+ "Could not create %s state script: %s" %
+ [_type_label, _pascal_name]
+ )
+ return ResultCodes.FAILURE
+
+ _state_resource = load(_path_state).new()
+ _state_resource.script_name = _pascal_name
+ _state_resource.scene = _path_scene
+ _state_resource.resource_name = _pascal_name
+
+ if ResourceSaver.save(_state_resource, _path_resource) != OK:
+ PopochiuUtils.print_error(
+ "Could not create state resource for %s: %s" %
+ [_type_label, _pascal_name]
+ )
+ return ResultCodes.ERR_CANT_CREATE_OBJ_STATE
+
+ return ResultCodes.SUCCESS
+
+
+func _copy_script_template() -> int:
+ var _script: Script = load(
+ BASE_SCRIPT_TEMPLATE % _type_label
+ ).duplicate()
+
+ if ResourceSaver.save( _script, _path_script) != OK:
+ PopochiuUtils.print_error(
+ "Could not create %s script: %s" %
+ [_type_label, _path_script]
+ )
+ return ResultCodes.ERR_CANT_CREATE_OBJ_SCRIPT
+
+ return ResultCodes.SUCCESS
+
+
+## Create the script for the object based on the template of its type.
+func _create_script_from_template() -> int:
+ var script_template_file = FileAccess.open(
+ BASE_SCRIPT_TEMPLATE % _type_label, FileAccess.READ
+ )
+
+ if script_template_file == null:
+ PopochiuUtils.print_error(
+ "Could not read script template from %s" %
+ [BASE_SCRIPT_TEMPLATE % _type_label]
+ )
+ return ResultCodes.ERR_CANT_OPEN_OBJ_SCRIPT_TEMPLATE
+
+ var new_code: String = script_template_file.get_as_text()
+ script_template_file.close()
+
+ new_code = new_code.replace(
+ "%s_state_template" % _type_label,
+ "%s_%s_state" % [_type_label, _snake_name]
+ )
+ new_code = new_code.replace(
+ "Data = null",
+ 'Data = load("%s.tres")' % _path_base
+ )
+ new_code = new_code.replace("PopochiuUtils.e", "E")
+
+ _script = load(EMPTY_SCRIPT).duplicate()
+ _script.source_code = new_code
+
+ if ResourceSaver.save( _script, _path_script) != OK:
+ PopochiuUtils.print_error(
+ "Could not create %s script: %s" %
+ [_type_label, _path_script]
+ )
+ return ResultCodes.ERR_CANT_CREATE_OBJ_SCRIPT
+
+ return ResultCodes.SUCCESS
+
+
+func _save_obj_scene(obj: Node) -> int:
+ var packed_scene: PackedScene = PackedScene.new()
+ packed_scene.pack(obj)
+ if ResourceSaver.save(packed_scene, _path_scene) != OK:
+ PopochiuUtils.print_error(
+ "Could not create %s: %s" %
+ [_type_label, _path_script]
+ )
+ return ResultCodes.ERR_CANT_SAVE_OBJ_SCENE
+ # Load the scene to be get by the calling code
+ # Instancing the created .tscn file fixes #58
+ _scene = (load(_path_scene) as PackedScene).instantiate(PackedScene.GEN_EDIT_STATE_INSTANCE)
+
+ return ResultCodes.SUCCESS
+
+
+func _save_obj_resource(obj: Resource) -> int:
+ if ResourceSaver.save(obj, _path_resource) != OK:
+ PopochiuUtils.print_error(
+ "Could not create %s: %s" %
+ [_type_label, _pascal_name]
+ )
+ return ResultCodes.ERR_CANT_SAVE_OBJ_RESOURCE
+
+ # Load the resource to be get by the calling code
+ _resource = load(_path_resource)
+
+ return ResultCodes.SUCCESS
+
+
+## Makes a copy of the base scene for the object (e.g. popochiu_room.tscn,
+## popochiu_inventory_item.tscn, popochiu_prop.tscn).
+func _load_obj_base_scene() -> Node:
+ var obj = (
+ load(BASE_SCENE_PATH % [_type_label, _type_label]) as PackedScene
+ ).instantiate(PackedScene.GEN_EDIT_STATE_MAIN_INHERITED)
+
+ # The script is assigned first so that other properties will not be
+ # overwritten by that assignment.
+ if _script != null:
+ obj.set_script(load(_path_script))
+
+ return obj
+
+
+func _add_resource_to_popochiu() -> void:
+ # Add the created obj to Popochiu's correct list
+ var resource := ResourceLoader.load(_path_resource)
+ if PopochiuResources.set_data_value(
+ _type_target,
+ resource.script_name,
+ resource.resource_path
+ ) != OK:
+ PopochiuUtils.print_error(
+ "Could not add the created %s to Popochiu: %s" %
+ [_type_label, _pascal_name]
+ )
+ return
+
+ # Add the object to the proper singleton
+ PopochiuResources.update_autoloads(true)
+
+ # Update the related list in the dock
+ PopochiuEditorHelper.signal_bus.main_object_added.emit(_type, _pascal_name)
+
+
+#endregion
diff --git a/addons/popochiu/editor/factories/factory_base_popochiu_obj.gd.uid b/addons/popochiu/editor/factories/factory_base_popochiu_obj.gd.uid
new file mode 100644
index 0000000..76a5df5
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_base_popochiu_obj.gd.uid
@@ -0,0 +1 @@
+uid://dsauwqcvbelb1
diff --git a/addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd b/addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd
new file mode 100644
index 0000000..270499e
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd
@@ -0,0 +1,98 @@
+class_name PopochiuRoomObjFactory
+extends "res://addons/popochiu/editor/factories/factory_base_popochiu_obj.gd"
+
+const CHILD_VISIBLE_IN_ROOM_META = "_popochiu_obj_factory_child_visible_in_room_"
+
+# The following variable is setup by the sub-class constructor to
+# define the holder node for the new room object (Props, Hotspots, etc)
+var _obj_room_group := ""
+# The following variables are setup by the _setup_room method
+var _room: Node2D = null
+var _room_path := ""
+var _room_dir := ""
+
+
+#region Public #####################################################################################
+func get_group() -> String:
+ return _obj_room_group
+
+
+func create_from(node: Node, room: PopochiuRoom) -> int:
+ _setup_room(room)
+ _setup_name(node.name)
+
+ var param := _get_param(node)
+ param.room = room
+ param.obj_name = node.name
+ param.is_visible = node.visible
+ param.should_setup_room_and_name = false
+ param.should_add_to_room = false
+ param.should_create_script = !FileAccess.file_exists(_path_script)
+
+ return call("create", param)
+
+
+func get_new_instance() -> PopochiuRoomObjFactory:
+ return new()
+
+
+#endregion
+
+#region Private ####################################################################################
+func _setup_room(room: PopochiuRoom) -> void:
+ _room = room
+ _room_path = _room.scene_file_path
+ _room_dir = _room_path.get_base_dir()
+ # Adding room path to room object path template
+ _path_template = _room_dir + _path_template
+
+
+# This function adds a child to the new object scene
+# marking it as "visible in room scene"
+func _add_visible_child(child: Node) -> void:
+ child.set_meta(CHILD_VISIBLE_IN_ROOM_META, true)
+ _scene.add_child(child)
+
+
+func _add_resource_to_room() -> void:
+ # Add the newly created obj to its room
+ _room.get_node(_obj_room_group).add_child(_scene)
+
+ # Set the ownership for the node plus all it's children
+ # (this address colliders, polygons, etc)
+ _scene.owner = _room
+ for child in _scene.get_children():
+ if child.has_meta(CHILD_VISIBLE_IN_ROOM_META):
+ child.owner = _room
+ child.remove_meta(CHILD_VISIBLE_IN_ROOM_META)
+
+ # Center the object on the scene
+ _scene.position = Vector2(
+ ProjectSettings.get_setting(PopochiuResources.DISPLAY_WIDTH),
+ ProjectSettings.get_setting(PopochiuResources.DISPLAY_HEIGHT)
+ ) / 2.0
+
+ # Save the room scene (it's open in the editor)
+ EditorInterface.save_scene()
+
+
+func _get_param(_node: Node) -> PopochiuRoomObjFactoryParam:
+ return PopochiuRoomObjFactoryParam.new()
+
+
+#endregion
+
+#region Subclass ###################################################################################
+class PopochiuRoomObjFactoryParam extends RefCounted:
+ var obj_name: String
+ var room: PopochiuRoom
+ var is_visible := true
+ var should_setup_room_and_name := true
+ var should_create_script := true
+ var should_add_to_room := true
+ ## Property used to store the vectors stored in the [member CollisionPolygon2D.polygon] for
+ ## [PopochiuProp], [PopochiuHotspot], and [PopochiuRegion].
+ var interaction_polygon := PackedVector2Array()
+
+
+#endregion
diff --git a/addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd.uid b/addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd.uid
new file mode 100644
index 0000000..c812ab3
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_base_popochiu_room_obj.gd.uid
@@ -0,0 +1 @@
+uid://ch67numd388l
diff --git a/addons/popochiu/editor/factories/factory_popochiu_character.gd b/addons/popochiu/editor/factories/factory_popochiu_character.gd
new file mode 100644
index 0000000..30475f4
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_popochiu_character.gd
@@ -0,0 +1,64 @@
+extends "res://addons/popochiu/editor/factories/factory_base_popochiu_obj.gd"
+class_name PopochiuCharacterFactory
+
+#region Godot ######################################################################################
+func _init() -> void:
+ _type = PopochiuResources.Types.CHARACTER
+ _type_label = "character"
+ _type_target = "characters"
+ _path_template = PopochiuResources.CHARACTERS_PATH.path_join("%s/character_%s")
+
+
+#endregion
+
+#region Public #####################################################################################
+func create(obj_name: String, is_pc := false) -> int:
+ # If everything goes well, this won't change.
+ var result_code := ResultCodes.SUCCESS
+
+ # Setup the class variables that depends on the object name
+ _setup_name(obj_name)
+
+ # Create the folder
+ result_code = _create_obj_folder()
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # Create the state Resource and a script
+ # so devs can add extra properties to that state
+ result_code = _create_state_resource()
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # Create the script populating the template with the right references
+ result_code = _create_script_from_template()
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # ---- LOCAL CODE ------------------------------------------------------------------------------
+ # Create the instance
+ var new_obj: PopochiuCharacter = _load_obj_base_scene()
+
+ new_obj.name = "Character" + _pascal_name
+ new_obj.script_name = _pascal_name
+ new_obj.description = _pascal_name.capitalize()
+ new_obj.cursor = PopochiuResources.CURSOR_TYPE.TALK
+
+ if PopochiuConfig.is_pixel_art_textures():
+ new_obj.get_node("Sprite2D").texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST
+ # ---- END OF LOCAL CODE -----------------------------------------------------------------------
+
+ # Save the scene (.tscn)
+ result_code = _save_obj_scene(new_obj)
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # Add the object to Popochiu dock list, plus open it in the editor
+ _add_resource_to_popochiu()
+
+ # ---- LOCAL CODE ------------------------------------------------------------------------------
+ # Set as PC
+ if is_pc:
+ PopochiuEditorHelper.signal_bus.pc_changed.emit(new_obj.script_name)
+ # ---- END OF LOCAL CODE -----------------------------------------------------------------------
+
+ return result_code
+
+
+#endregion
diff --git a/addons/popochiu/editor/factories/factory_popochiu_character.gd.uid b/addons/popochiu/editor/factories/factory_popochiu_character.gd.uid
new file mode 100644
index 0000000..712696e
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_popochiu_character.gd.uid
@@ -0,0 +1 @@
+uid://dstbnm6v0t6ot
diff --git a/addons/popochiu/editor/factories/factory_popochiu_dialog.gd b/addons/popochiu/editor/factories/factory_popochiu_dialog.gd
new file mode 100644
index 0000000..4b8f88b
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_popochiu_dialog.gd
@@ -0,0 +1,49 @@
+extends "res://addons/popochiu/editor/factories/factory_base_popochiu_obj.gd"
+class_name PopochiuDialogFactory
+
+#region Godot ######################################################################################
+func _init() -> void:
+ _type = PopochiuResources.Types.DIALOG
+ _type_label = "dialog"
+ _type_target = "dialogs"
+ _path_template = PopochiuResources.DIALOGS_PATH.path_join("%s/dialog_%s")
+
+
+#endregion
+
+#region Public #####################################################################################
+func create(obj_name: String) -> int:
+ # If everything goes well, this won't change.
+ var result_code := ResultCodes.SUCCESS
+
+ # Setup the class variables that depends on the object name
+ _setup_name(obj_name)
+
+ # Create the folder
+ result_code = _create_obj_folder()
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # Create the script
+ result_code = _copy_script_template()
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # ---- LOCAL CODE ------------------------------------------------------------------------------
+ # Create the resource (dialogs are not scenes)
+ var new_obj := PopochiuDialog.new()
+ new_obj.set_script(load(_path_script))
+
+ new_obj.script_name = _pascal_name
+ new_obj.resource_name = _pascal_name
+ # ---- END OF LOCAL CODE -----------------------------------------------------------------------
+
+ # Save resource (dialogs are not scenes)
+ result_code = _save_obj_resource(new_obj)
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # Add the object to Popochiu dock list, plus open it in the editor
+ _add_resource_to_popochiu()
+
+ return result_code
+
+
+#endregion
diff --git a/addons/popochiu/editor/factories/factory_popochiu_dialog.gd.uid b/addons/popochiu/editor/factories/factory_popochiu_dialog.gd.uid
new file mode 100644
index 0000000..38c79df
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_popochiu_dialog.gd.uid
@@ -0,0 +1 @@
+uid://ddk6pykrms2tq
diff --git a/addons/popochiu/editor/factories/factory_popochiu_hostspot.gd b/addons/popochiu/editor/factories/factory_popochiu_hostspot.gd
new file mode 100644
index 0000000..d42162a
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_popochiu_hostspot.gd
@@ -0,0 +1,76 @@
+class_name PopochiuHotspotFactory
+extends PopochiuRoomObjFactory
+
+
+#region Godot ######################################################################################
+func _init() -> void:
+ _type = PopochiuResources.Types.HOTSPOT
+ _type_label = "hotspot"
+ _type_method = PopochiuEditorHelper.is_hotspot
+ _obj_room_group = "Hotspots"
+ _path_template = "/hotspots/%s/hotspot_%s"
+
+
+#endregion
+
+#region Public #####################################################################################
+func create(param: PopochiuHotspotFactoryParam) -> int:
+ # If everything goes well, this won't change.
+ var result_code := ResultCodes.SUCCESS
+
+ if param.should_setup_room_and_name:
+ _setup_room(param.room)
+ _setup_name(param.obj_name)
+
+ # Create the folder
+ result_code = _create_obj_folder()
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # Create the script
+ if param.should_create_script:
+ result_code = _copy_script_template()
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # ---- LOCAL CODE ------------------------------------------------------------------------------
+ # Create the instance
+ var new_obj: PopochiuHotspot = _load_obj_base_scene()
+
+ new_obj.set_script(ResourceLoader.load(_path_script))
+
+ new_obj.name = _pascal_name
+ new_obj.script_name = _pascal_name
+ new_obj.description = _snake_name.capitalize()
+ new_obj.cursor = PopochiuResources.CURSOR_TYPE.ACTIVE
+ new_obj.interaction_polygon = param.interaction_polygon
+
+ # Save the hotspot scene (.tscn) and put it into _scene class property
+ result_code = _save_obj_scene(new_obj)
+ if result_code != ResultCodes.SUCCESS: return result_code
+ # ---- END OF LOCAL CODE -----------------------------------------------------------------------
+
+ if param.should_add_to_room:
+ # Add the object to its room
+ _add_resource_to_room()
+
+ return result_code
+
+
+#endregion
+
+#region Private ####################################################################################
+func _get_param(node: Node) -> PopochiuRoomObjFactoryParam:
+ var param := PopochiuHotspotFactoryParam.new()
+ param.is_interactive = node.clickable
+ # TODO: Remove this line once the last gizmos PR is merged
+ param.interaction_polygon = node.interaction_polygon
+ return param
+
+
+#endregion
+
+#region Subclass ###################################################################################
+class PopochiuHotspotFactoryParam extends PopochiuRoomObjFactory.PopochiuRoomObjFactoryParam:
+ var is_interactive := true
+
+
+#endregion
diff --git a/addons/popochiu/editor/factories/factory_popochiu_hostspot.gd.uid b/addons/popochiu/editor/factories/factory_popochiu_hostspot.gd.uid
new file mode 100644
index 0000000..7cf171a
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_popochiu_hostspot.gd.uid
@@ -0,0 +1 @@
+uid://bcnd7an67ulyf
diff --git a/addons/popochiu/editor/factories/factory_popochiu_inventory_item.gd b/addons/popochiu/editor/factories/factory_popochiu_inventory_item.gd
new file mode 100644
index 0000000..8770e85
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_popochiu_inventory_item.gd
@@ -0,0 +1,60 @@
+extends "res://addons/popochiu/editor/factories/factory_base_popochiu_obj.gd"
+class_name PopochiuInventoryItemFactory
+
+#region Godot ######################################################################################
+func _init() -> void:
+ _type = PopochiuResources.Types.INVENTORY_ITEM
+ _type_label = "inventory_item"
+ _type_target = "inventory_items"
+ _path_template = PopochiuResources.INVENTORY_ITEMS_PATH.path_join("%s/inventory_item_%s")
+
+
+#endregion
+
+#region Public #####################################################################################
+func create(obj_name: String) -> int:
+ # If everything goes well, this won't change.
+ var result_code := ResultCodes.SUCCESS
+
+ # Setup the class variables that depends on the object name
+ _setup_name(obj_name)
+
+ # Create the folder
+ result_code = _create_obj_folder()
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # Create the state Resource and a script
+ # so devs can add extra properties to that state
+ result_code = _create_state_resource()
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # Create the script populating the template with the right references
+ result_code = _create_script_from_template()
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # ---- LOCAL CODE ------------------------------------------------------------------------------
+ # Create the instance
+ var new_obj: PopochiuInventoryItem = _load_obj_base_scene()
+
+ new_obj.name = "Item" + _pascal_name
+ new_obj.script_name = _pascal_name
+ new_obj.description = _pascal_name.capitalize()
+ new_obj.cursor = PopochiuResources.CURSOR_TYPE.USE
+ new_obj.size_flags_vertical = new_obj.SIZE_SHRINK_CENTER
+
+ if PopochiuConfig.is_pixel_art_textures():
+ new_obj.texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST
+
+ # ---- END OF LOCAL CODE -----------------------------------------------------------------------
+
+ # Save the scene (.tscn)
+ result_code = _save_obj_scene(new_obj)
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # Add the object to Popochiu dock list, plus open it in the editor
+ _add_resource_to_popochiu()
+
+ return result_code
+
+
+#endregion
diff --git a/addons/popochiu/editor/factories/factory_popochiu_inventory_item.gd.uid b/addons/popochiu/editor/factories/factory_popochiu_inventory_item.gd.uid
new file mode 100644
index 0000000..e7b88c5
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_popochiu_inventory_item.gd.uid
@@ -0,0 +1 @@
+uid://bym4xs81a2ph4
diff --git a/addons/popochiu/editor/factories/factory_popochiu_marker.gd b/addons/popochiu/editor/factories/factory_popochiu_marker.gd
new file mode 100644
index 0000000..61a95c7
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_popochiu_marker.gd
@@ -0,0 +1,44 @@
+class_name PopochiuMarkerFactory
+extends PopochiuRoomObjFactory
+
+#region Godot ######################################################################################
+func _init() -> void:
+ _type = PopochiuResources.Types.MARKER
+ _type_label = "marker"
+ _type_method = PopochiuEditorHelper.is_marker
+ _obj_room_group = "Markers"
+ _path_template = "/markers/%s/marker_%s"
+
+
+#endregion
+#region Public #####################################################################################
+func create(param: PopochiuRoomObjFactoryParam) -> int:
+ # If everything goes well, this won't change.
+ var result_code := ResultCodes.SUCCESS
+
+ if param.should_setup_room_and_name:
+ _setup_room(param.room)
+ _setup_name(param.obj_name)
+
+ # Create the folder
+ result_code = _create_obj_folder()
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # ---- LOCAL CODE ------------------------------------------------------------------------------
+ # Create the instance
+ var new_obj: Marker2D = Marker2D.new()
+ new_obj.name = _pascal_name
+
+ # Save the marker scene (.tscn) and put it into _scene class property
+ result_code = _save_obj_scene(new_obj)
+ if result_code != ResultCodes.SUCCESS: return result_code
+ # ---- END OF LOCAL CODE -----------------------------------------------------------------------
+
+ if param.should_add_to_room:
+ # Add the object to its room
+ _add_resource_to_room()
+
+ return result_code
+
+
+#endregion
diff --git a/addons/popochiu/editor/factories/factory_popochiu_marker.gd.uid b/addons/popochiu/editor/factories/factory_popochiu_marker.gd.uid
new file mode 100644
index 0000000..5cee6c8
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_popochiu_marker.gd.uid
@@ -0,0 +1 @@
+uid://ckjo1lcmxjlh6
diff --git a/addons/popochiu/editor/factories/factory_popochiu_prop.gd b/addons/popochiu/editor/factories/factory_popochiu_prop.gd
new file mode 100644
index 0000000..2515ce9
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_popochiu_prop.gd
@@ -0,0 +1,86 @@
+class_name PopochiuPropFactory
+extends PopochiuRoomObjFactory
+
+
+#region Godot ######################################################################################
+func _init() -> void:
+ _type = PopochiuResources.Types.PROP
+ _type_label = "prop"
+ _type_method = PopochiuEditorHelper.is_prop
+ _obj_room_group = "Props"
+ _path_template = "/props/%s/prop_%s"
+
+
+#endregion
+
+#region Public #####################################################################################
+func create(param: PopochiuPropFactoryParam) -> int:
+ # If everything goes well, this won't change.
+ var result_code := ResultCodes.SUCCESS
+
+ if param.should_setup_room_and_name:
+ _setup_room(param.room)
+ _setup_name(param.obj_name)
+
+ # Create the folder
+ result_code = _create_obj_folder()
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # Create the script (if the prop is interactive)
+ if param.should_create_script:
+ result_code = _copy_script_template()
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # ---- LOCAL CODE ------------------------------------------------------------------------------
+ # Create the instance
+ var new_obj: PopochiuProp = _load_obj_base_scene()
+
+ new_obj.set_script(ResourceLoader.load(_path_script))
+
+ new_obj.name = _pascal_name
+ new_obj.script_name = _pascal_name
+ new_obj.description = _snake_name.capitalize()
+ new_obj.cursor = PopochiuResources.CURSOR_TYPE.ACTIVE
+ new_obj.clickable = param.is_interactive
+ new_obj.visible = param.is_visible
+ new_obj.interaction_polygon = param.interaction_polygon
+
+ if PopochiuConfig.is_pixel_art_textures():
+ new_obj.get_node("Sprite2D").texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST
+
+ if _snake_name in ["bg", "background"]:
+ new_obj.baseline =\
+ -ProjectSettings.get_setting(PopochiuResources.DISPLAY_HEIGHT) / 2.0
+ new_obj.z_index = -1
+
+ # Save the scene (.tscn) and put it into _scene class property
+ result_code = _save_obj_scene(new_obj)
+ if result_code != ResultCodes.SUCCESS: return result_code
+ # ---- END OF LOCAL CODE -----------------------------------------------------------------------
+
+ if param.should_add_to_room:
+ # Add the object to its room
+ _add_resource_to_room()
+
+ return result_code
+
+
+#endregion
+
+#region Private ####################################################################################
+func _get_param(node: Node) -> PopochiuRoomObjFactoryParam:
+ var param := PopochiuPropFactoryParam.new()
+ param.is_interactive = node.clickable
+ # TODO: Remove this line once the last gizmos PR is merged
+ param.interaction_polygon = node.interaction_polygon
+ return param
+
+
+#endregion
+
+#region Subclass ###################################################################################
+class PopochiuPropFactoryParam extends PopochiuRoomObjFactory.PopochiuRoomObjFactoryParam:
+ var is_interactive := false
+
+
+#endregion
diff --git a/addons/popochiu/editor/factories/factory_popochiu_prop.gd.uid b/addons/popochiu/editor/factories/factory_popochiu_prop.gd.uid
new file mode 100644
index 0000000..c119e78
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_popochiu_prop.gd.uid
@@ -0,0 +1 @@
+uid://b8ajrxi1mp5up
diff --git a/addons/popochiu/editor/factories/factory_popochiu_region.gd b/addons/popochiu/editor/factories/factory_popochiu_region.gd
new file mode 100644
index 0000000..d46458c
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_popochiu_region.gd
@@ -0,0 +1,71 @@
+class_name PopochiuRegionFactory
+extends PopochiuRoomObjFactory
+
+#region Godot ######################################################################################
+func _init() -> void:
+ _type = PopochiuResources.Types.REGION
+ _type_label = "region"
+ _type_method = PopochiuEditorHelper.is_region
+ _obj_room_group = "Regions"
+ _path_template = "/regions/%s/region_%s"
+
+
+#endregion
+
+#region Public #####################################################################################
+func create(param: PopochiuRoomObjFactoryParam) -> int:
+ # If everything goes well, this won't change.
+ var result_code := ResultCodes.SUCCESS
+
+ if param.should_setup_room_and_name:
+ _setup_room(param.room)
+ _setup_name(param.obj_name)
+
+ # Create the folder
+ result_code = _create_obj_folder()
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # Create the script
+ if param.should_create_script:
+ result_code = _copy_script_template()
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # ---- LOCAL CODE ------------------------------------------------------------------------------
+ # Create the instance
+ var new_obj: PopochiuRegion = _load_obj_base_scene()
+ new_obj.set_script(ResourceLoader.load(_path_script))
+ new_obj.name = _pascal_name
+ new_obj.script_name = _pascal_name
+ new_obj.description = _snake_name.capitalize()
+ new_obj.interaction_polygon = param.interaction_polygon
+
+ # Save the scene (.tscn) and put it into _scene class property
+ result_code = _save_obj_scene(new_obj)
+ if result_code != ResultCodes.SUCCESS: return result_code
+ # ---- END OF LOCAL CODE -----------------------------------------------------------------------
+
+ if param.should_add_to_room:
+ # Add the object to its room
+ _add_resource_to_room()
+
+ return result_code
+
+
+#endregion
+
+#region Private ####################################################################################
+func _get_param(node: Node) -> PopochiuRoomObjFactoryParam:
+ var param := PopochiuRegionFactoryParam.new()
+ param.interaction_polygon = node.interaction_polygon
+
+ return param
+
+
+#endregion
+
+#region Subclass ###################################################################################
+class PopochiuRegionFactoryParam extends PopochiuRoomObjFactory.PopochiuRoomObjFactoryParam:
+ var should_create_interaction_polygon := true
+
+
+#endregion
diff --git a/addons/popochiu/editor/factories/factory_popochiu_region.gd.uid b/addons/popochiu/editor/factories/factory_popochiu_region.gd.uid
new file mode 100644
index 0000000..c8aa0bc
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_popochiu_region.gd.uid
@@ -0,0 +1 @@
+uid://dphtxosh168sb
diff --git a/addons/popochiu/editor/factories/factory_popochiu_room.gd b/addons/popochiu/editor/factories/factory_popochiu_room.gd
new file mode 100644
index 0000000..370c688
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_popochiu_room.gd
@@ -0,0 +1,63 @@
+extends "res://addons/popochiu/editor/factories/factory_base_popochiu_obj.gd"
+class_name PopochiuRoomFactory
+
+#region Godot ######################################################################################
+func _init() -> void:
+ _type = PopochiuResources.Types.ROOM
+ _type_label = "room"
+ _type_target = "rooms"
+ _path_template = PopochiuResources.ROOMS_PATH.path_join("%s/room_%s")
+
+
+#endregion
+
+#region Public #####################################################################################
+func create(obj_name: String, set_as_main := false) -> int:
+ # If everything goes well, this won't change.
+ var result_code := ResultCodes.SUCCESS
+
+ # Setup the class variables that depends on the object name
+ _setup_name(obj_name)
+
+ # Create the folder
+ result_code = _create_obj_folder()
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # Create the state Resource and a script
+ # so devs can add extra properties to that state
+ result_code = _create_state_resource()
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # Create the script populating the template with the right references
+ result_code = _create_script_from_template()
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # ---- LOCAL CODE ------------------------------------------------------------------------------
+ # Create the instance
+ var new_obj: PopochiuRoom = _load_obj_base_scene()
+
+ new_obj.name = "Room" + _pascal_name
+ new_obj.script_name = _pascal_name
+ new_obj.width = ProjectSettings.get_setting(PopochiuResources.DISPLAY_WIDTH)
+ new_obj.height = ProjectSettings.get_setting(PopochiuResources.DISPLAY_HEIGHT)
+ # ---- END OF LOCAL CODE -----------------------------------------------------------------------
+
+ # Save the scene (.tscn)
+ result_code = _save_obj_scene(new_obj)
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # Add the object to Popochiu dock list, plus open it in the editor
+ _add_resource_to_popochiu()
+
+ # ---- LOCAL CODE ------------------------------------------------------------------------------
+ # Set as main room
+ # Changed _set_as_main_check.pressed to _set_as_main_check.button_pressed
+ # in order to fix #56
+ if set_as_main:
+ PopochiuEditorHelper.signal_bus.main_scene_changed.emit(_scene.scene_file_path)
+ # ---- END OF LOCAL CODE -----------------------------------------------------------------------
+
+ return result_code
+
+
+#endregion
diff --git a/addons/popochiu/editor/factories/factory_popochiu_room.gd.uid b/addons/popochiu/editor/factories/factory_popochiu_room.gd.uid
new file mode 100644
index 0000000..373b303
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_popochiu_room.gd.uid
@@ -0,0 +1 @@
+uid://b7kd0q631qqt6
diff --git a/addons/popochiu/editor/factories/factory_popochiu_walkable_area.gd b/addons/popochiu/editor/factories/factory_popochiu_walkable_area.gd
new file mode 100644
index 0000000..5d80292
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_popochiu_walkable_area.gd
@@ -0,0 +1,94 @@
+class_name PopochiuWalkableAreaFactory
+extends PopochiuRoomObjFactory
+
+
+#region Godot ######################################################################################
+func _init() -> void:
+ _type = PopochiuResources.Types.WALKABLE_AREA
+ _type_label = "walkable_area"
+ _type_method = PopochiuEditorHelper.is_walkable_area
+ _obj_room_group = "WalkableAreas"
+ _path_template = "/walkable_areas/%s/walkable_area_%s"
+
+
+#endregion
+
+#region Public #####################################################################################
+func create(param: PopochiuWalkableAreaFactoryParam) -> int:
+ # If everything goes well, this won't change.
+ var result_code := ResultCodes.SUCCESS
+
+ if param.should_setup_room_and_name:
+ _setup_room(param.room)
+ _setup_name(param.obj_name)
+
+ # Create the folder
+ result_code = _create_obj_folder()
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # Create the script
+ if param.should_create_script:
+ result_code = _copy_script_template()
+ if result_code != ResultCodes.SUCCESS: return result_code
+
+ # ---- LOCAL CODE ------------------------------------------------------------------------------
+ # Create the instance
+ var new_obj: PopochiuWalkableArea = _load_obj_base_scene()
+
+ new_obj.set_script(ResourceLoader.load(_path_script))
+
+ new_obj.name = _pascal_name
+ new_obj.script_name = _pascal_name
+ new_obj.description = _snake_name.capitalize()
+
+ # Find the NavigationRegion2D for the WA and populate it with a default rectangle polygon
+ var perimeter := new_obj.find_child("Perimeter")
+ var polygon := NavigationPolygon.new()
+ polygon.add_outline(PackedVector2Array([
+ Vector2(-10, -10), Vector2(10, -10), Vector2(10, 10), Vector2(-10, 10)
+ ]))
+ NavigationServer2D.bake_from_source_geometry_data(
+ polygon, NavigationMeshSourceGeometryData2D.new()
+ )
+ polygon.agent_radius = 0.0
+ perimeter.navigation_polygon = polygon
+
+ if not param.navigation_polygon.is_empty():
+ new_obj.interaction_polygon = param.navigation_polygon
+ new_obj.clear_and_bake(perimeter.navigation_polygon)
+
+ # Show the WA perimeter, depending on user prefs
+ perimeter.visible = PopochiuEditorConfig.get_editor_setting(
+ PopochiuEditorConfig.GIZMOS_ALWAYS_SHOW_WA
+ )
+
+ # Save the scene (.tscn) and put it into _scene class property
+ result_code = _save_obj_scene(new_obj)
+ if result_code != ResultCodes.SUCCESS: return result_code
+ # ---- END OF LOCAL CODE -----------------------------------------------------------------------
+
+ if param.should_add_to_room:
+ # Add the object to its room
+ _add_resource_to_room()
+
+ return result_code
+
+
+#endregion
+
+#region Private ####################################################################################
+func _get_param(node: Node) -> PopochiuRoomObjFactoryParam:
+ var param := PopochiuWalkableAreaFactoryParam.new()
+ param.navigation_polygon = node.interaction_polygon
+
+ return param
+
+
+#endregion
+
+#region Subclass ###################################################################################
+class PopochiuWalkableAreaFactoryParam extends PopochiuRoomObjFactory.PopochiuRoomObjFactoryParam:
+ var navigation_polygon := []
+
+
+#endregion
diff --git a/addons/popochiu/editor/factories/factory_popochiu_walkable_area.gd.uid b/addons/popochiu/editor/factories/factory_popochiu_walkable_area.gd.uid
new file mode 100644
index 0000000..a893887
--- /dev/null
+++ b/addons/popochiu/editor/factories/factory_popochiu_walkable_area.gd.uid
@@ -0,0 +1 @@
+uid://c66i7vwbgxym8
diff --git a/addons/popochiu/editor/gizmos/gizmo2d.gd b/addons/popochiu/editor/gizmos/gizmo2d.gd
new file mode 100644
index 0000000..ca95a38
--- /dev/null
+++ b/addons/popochiu/editor/gizmos/gizmo2d.gd
@@ -0,0 +1,274 @@
+@tool
+class_name Gizmo2D
+extends RefCounted
+
+# Gizmo types
+enum {
+ GIZMO_POS, # square marker that represents (x,y) coordinates
+ GIZMO_HPOS, # vertical line that represents a horizontal coordinate
+ GIZMO_VPOS # horizontal line that represents a vertical coordinate
+}
+
+# Public vars
+# Convenience accessors
+var target_node: Node2D:
+ set = set_target_node,
+ get = get_target_node
+var target_property: String:
+ set = set_target_property,
+ get = get_target_property
+var position:
+ get = get_position
+# Behavior flags
+var show_connector: bool = true # Show gizmo-to-node connectors
+var show_outlines: bool = true
+var show_target_name: bool = true # Show target node name
+var visible: bool = true # Gizmo visibility
+
+# Private vars
+# Context
+var _type: int
+var _target_node: Node2D
+var _target_property: String
+# Appearance
+var _size: Vector2 # Gizmo width and height
+var _color: Color # Gizmo color
+var _label: String # A label to be painted near the Gizmo
+var _font: Font # Label font
+var _font_size: int # Label font size
+# State
+var _handle: Rect2 # Gizmo handle
+var _current_position: Vector2 # The position the gizmo is representing in every moment
+var _current_color: Color
+var _is_grabbed: bool = false # Gizmo is moving
+var _grab_center_pos: Vector2 # Starting center position when grabbing
+var _grab_mouse_pos: Vector2 # Starting mouse position when grabbing
+
+
+#region Virtual ####################################################################################
+
+func _init(
+ node: Node,
+ property: String,
+ label: String,
+ type: int,
+):
+ _target_node = node
+ _target_property = property
+ _type = type
+ _label = label
+
+ set_theme(
+ Color.AQUA,
+ 24,
+ EditorInterface.get_editor_theme().default_font,
+ EditorInterface.get_editor_theme().default_font_size
+ )
+
+ _current_color = _color
+
+
+#endregion
+
+#region SetGet #####################################################################################
+
+func set_theme(
+ color: Color,
+ size: int,
+ font: Font,
+ font_size: int
+):
+ _color = color
+ _size = Vector2(size, size)
+ _font = font
+ _font_size = font_size
+
+func set_target_node(node: Node2D):
+ _target_node = node
+
+func get_target_node() -> Node2D:
+ return _target_node
+
+func set_target_property(property: String):
+ _target_property = property
+
+func get_target_property() -> String:
+ if _target_property:
+ return _target_property
+ return ""
+
+
+#endregion
+
+#region Private ####################################################################################
+
+func _draw_outlines(viewport: Control):
+ viewport.draw_rect(
+ _handle,
+ Color.BLACK, false, 4
+ )
+
+ viewport.draw_string_outline(
+ _font,
+ _handle.position + Vector2(0, _size.y + 2 + _font.get_ascent(_font_size)),
+ _label, HORIZONTAL_ALIGNMENT_CENTER,
+ - 1,
+ _font_size,
+ 6,
+ Color.BLACK
+ )
+
+ if show_target_name:
+ viewport.draw_string_outline(
+ _font,
+ _handle.position + Vector2(0, -_font.get_descent(_font_size)),
+ _target_node.name,
+ HORIZONTAL_ALIGNMENT_CENTER,
+ - 1,
+ _font_size,
+ 6,
+ Color.BLACK
+ )
+
+func _draw_gizmo(viewport: Control):
+
+ # Draw the handle (on top of the line, if it's present)
+ viewport.draw_rect(
+ _handle,
+ _current_color
+ )
+
+ # Draw gizmo-to-node connector, if active
+ if show_connector:
+ viewport.draw_dashed_line(
+ (_target_node.get_viewport_transform() * _target_node.get_global_transform()).origin,
+ _handle.get_center(),
+ _current_color.darkened(0.2),
+ 2,
+ 4
+ )
+ viewport.draw_circle(
+ _handle.get_center(),
+ 3,
+ _current_color.darkened(0.2)
+ )
+
+ # Draw the label, if it's set and non empty
+ if _label:
+ viewport.draw_string(
+ _font,
+ _handle.position + Vector2(0, _size.y + 2 + _font.get_ascent(_font_size)),
+ _label, HORIZONTAL_ALIGNMENT_CENTER,
+ - 1,
+ _font_size,
+ _current_color
+ )
+
+ if show_target_name:
+ viewport.draw_string(
+ _font,
+ _handle.position + Vector2(0, -_font.get_descent(_font_size)),
+ _target_node.name,
+ HORIZONTAL_ALIGNMENT_CENTER,
+ - 1,
+ _font_size,
+ _current_color
+ )
+
+func _can_draw():
+ return (visible and _target_node != null and _target_node.is_visible_in_tree())
+
+
+#endregion
+
+#region Public #####################################################################################
+
+func draw(viewport: Control, coord: Variant) -> void:
+ # Handmade coordinates type overloading
+ if not (coord is Vector2 or coord is int):
+ return
+ # Check if the gizmo can be drawn
+ if not _can_draw():
+ return
+
+ # Coordinates normalization (to vector) for horizontal or vertical gizmos
+ # Both axis are set to the same value, then ignore one or the other
+ # depending on the gizmo type
+ if coord is int:
+ coord = Vector2(coord, coord)
+
+ # Calculate the GLOBAL coordinates of the center of the square handle
+ # This only takes into account the node offset discarding its transform basis
+ # (representing rotation, skew and scale) then it applies the viewport transform
+ # to take into account the zoom level
+ var center = _target_node.get_viewport_transform() * (_target_node.get_global_transform().origin + Vector2(coord))
+
+ # Set handle color
+ _current_color = _color
+ # Highlight handle if held by the mouse click
+ if _is_grabbed:
+ _current_color = _color.lightened(0.5)
+
+ # Draw an horizontal or vertical line if the gizmo is one-dimensional
+ match _type:
+ GIZMO_VPOS:
+ var viewport_width = EditorInterface.get_editor_viewport_2d().size.x
+ center.x = viewport_width / 2
+ viewport.draw_line(
+ Vector2(0, center.y),
+ Vector2(viewport_width, center.y),
+ _current_color,
+ 2
+ )
+ GIZMO_HPOS:
+ var viewport_height = EditorInterface.get_editor_viewport_2d().size.y
+ center.y = viewport_height / 2
+ viewport.draw_line(
+ Vector2(center.x, 0),
+ Vector2(center.x, viewport_height),
+ _current_color,
+ 2
+ )
+
+ # Initialize the handle in the right position
+ _handle = Rect2(center - _size / 2, _size)
+
+ if show_outlines:
+ _draw_outlines(viewport)
+
+ _draw_gizmo(viewport)
+
+func drag_to(pos: Vector2):
+ # Distance between the mouse position and the gizmo center
+ var d = _grab_center_pos - _grab_mouse_pos
+ # Gizmo center position in global coordinates
+ var current_gizmo_pos = pos + d
+ # Distance between gizmo center position in 2D world node coordinates and
+ # node position ignoring its transform basis (representing rotation, skew and scale)
+ _current_position = _target_node.get_viewport_transform().affine_inverse() * current_gizmo_pos - (target_node.get_global_transform().origin)
+
+func release():
+ _is_grabbed = false
+
+func grab(pos: Vector2):
+ _is_grabbed = true
+ _grab_mouse_pos = pos
+ _grab_center_pos = _handle.get_center()
+
+func cancel():
+ _is_grabbed = false
+
+func has_point(pos: Vector2):
+ return visible and _handle.abs().has_point(pos)
+
+func get_position():
+ match _type:
+ GIZMO_POS:
+ return _current_position
+ GIZMO_HPOS:
+ return _current_position.x
+ GIZMO_VPOS:
+ return _current_position.y
+
+
+#endregion
diff --git a/addons/popochiu/editor/gizmos/gizmo2d.gd.uid b/addons/popochiu/editor/gizmos/gizmo2d.gd.uid
new file mode 100644
index 0000000..04dbb99
--- /dev/null
+++ b/addons/popochiu/editor/gizmos/gizmo2d.gd.uid
@@ -0,0 +1 @@
+uid://71g54gbvyv7l
diff --git a/addons/popochiu/editor/gizmos/gizmo_clickable_plugin.gd b/addons/popochiu/editor/gizmos/gizmo_clickable_plugin.gd
new file mode 100644
index 0000000..b4bd8ba
--- /dev/null
+++ b/addons/popochiu/editor/gizmos/gizmo_clickable_plugin.gd
@@ -0,0 +1,278 @@
+@tool
+class_name PopochiuGizmoClickablePlugin
+extends EditorPlugin
+
+# TODO: move these out of the plugin and into Popochiu (enums) or PopochiuClickable
+enum {
+ WALK_TO_POINT,
+ LOOK_AT_POINT,
+ BASELINE,
+ DIALOG_POS
+}
+
+# Private vars
+# State
+var _target_node: Node2D
+var _undo: EditorUndoRedoManager
+var _gizmos: Array
+var _active_gizmos: Array
+var _grabbed_gizmo: Gizmo2D
+
+
+#region Godot ######################################################################################
+
+func _enter_tree() -> void:
+ # TODO: remove the following 2 lines when the plugin is connected to the appropriate signal
+ # e.g. popochiu_ready
+ PopochiuEditorConfig.initialize_editor_settings()
+ PopochiuConfig.initialize_project_settings()
+
+ # Initialization of the plugin goes here.
+ _undo = get_undo_redo()
+ _gizmos.insert(WALK_TO_POINT, _init_popochiu_gizmo(WALK_TO_POINT))
+ _gizmos.insert(LOOK_AT_POINT, _init_popochiu_gizmo(LOOK_AT_POINT))
+ _gizmos.insert(BASELINE, _init_popochiu_gizmo(BASELINE))
+ _gizmos.insert(DIALOG_POS, _init_popochiu_gizmo(DIALOG_POS))
+
+ EditorInterface.get_editor_settings().settings_changed.connect(_on_gizmo_settings_changed)
+ PopochiuEditorHelper.signal_bus.gizmo_visibility_changed.connect(_on_gizmo_visibility_changed)
+
+
+#endregion
+
+#region Virtual ####################################################################################
+
+func _edit(object: Object) -> void:
+ if object == null or object.get_class() == "EditorDebuggerRemoteObject":
+ return
+
+ _target_node = object
+ _active_gizmos.clear()
+
+ if EditorInterface.get_edited_scene_root() is PopochiuCharacter:
+ _active_gizmos.append(_gizmos[DIALOG_POS])
+ elif EditorInterface.get_edited_scene_root() is PopochiuRoom:
+ _active_gizmos.append(_gizmos[WALK_TO_POINT])
+ _active_gizmos.append(_gizmos[LOOK_AT_POINT])
+ _active_gizmos.append(_gizmos[BASELINE])
+
+ for gizmo in _active_gizmos:
+ gizmo.set_target_node(_target_node)
+
+ if not EditorInterface.get_inspector().property_edited.is_connected(_on_property_changed):
+ EditorInterface.get_inspector().property_edited.connect(_on_property_changed)
+ update_overlays()
+
+
+func _forward_canvas_draw_over_viewport(viewport_control: Control) -> void:
+ for gizmo in _active_gizmos:
+ gizmo.draw(viewport_control, _target_node.get(gizmo.target_property))
+
+
+func _handles(object: Object) -> bool:
+ return object is PopochiuClickable
+
+
+func _forward_canvas_gui_input(event: InputEvent) -> bool:
+ if not _target_node or not _target_node.is_visible_in_tree():
+ return false
+
+ # For left mouse buttons, try to grab or release, depending on state
+ if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT:
+ # Grab
+ if not _grabbed_gizmo and event.is_pressed():
+ return _try_grab_gizmo(event)
+ # Release
+ elif _grabbed_gizmo and event.is_released():
+ return _release_gizmo(event)
+
+ # For mouse movement, drag the grabbed gizmo
+ if event is InputEventMouseMotion:
+ return _drag_gizmo(event)
+
+ # For ESC key or comparable events, cancel the dragging if in place
+ if event.is_action_pressed("ui_cancel"):
+ return _cancel_dragging_gizmo(event)
+
+ ## Nothing to handle outside the cases above
+ return false
+
+
+#endregion
+
+#region Private ####################################################################################
+
+func _on_property_changed(property: String):
+ update_overlays()
+
+
+func _on_gizmo_settings_changed() -> void:
+ var gizmo_id = 0
+ var default_font = EditorInterface.get_editor_theme().default_font
+
+ for gizmo in _gizmos:
+ match gizmo_id:
+ WALK_TO_POINT:
+ gizmo.set_theme(
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_WALK_TO_POINT_COLOR),
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_HANDLER_SIZE),
+ default_font,
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_FONT_SIZE)
+ )
+ LOOK_AT_POINT:
+ gizmo.set_theme(
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_LOOK_AT_POINT_COLOR),
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_HANDLER_SIZE),
+ default_font,
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_FONT_SIZE)
+ )
+ BASELINE:
+ gizmo.set_theme(
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_BASELINE_COLOR),
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_HANDLER_SIZE),
+ default_font,
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_FONT_SIZE)
+ )
+ DIALOG_POS:
+ gizmo.set_theme(
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_DIALOG_POS_COLOR),
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_HANDLER_SIZE),
+ default_font,
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_FONT_SIZE)
+ )
+
+ gizmo.show_connector = PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_SHOW_CONNECTORS)
+ gizmo.show_outlines = PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_SHOW_OUTLINE)
+ gizmo.show_target_name = PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_SHOW_NODE_NAME)
+ gizmo_id += 1
+
+ update_overlays()
+
+
+func _on_gizmo_visibility_changed(gizmo_id:int, visibility:bool):
+ if gizmo_id < _gizmos.size():
+ _gizmos[gizmo_id].visible = visibility
+ update_overlays()
+
+func _update_properties():
+ if _grabbed_gizmo and _grabbed_gizmo.target_property:
+ _target_node.set(
+ _grabbed_gizmo.target_property,
+ _grabbed_gizmo.get_position()
+ )
+
+
+func _init_popochiu_gizmo(gizmo_id: int) -> Gizmo2D:
+ var gizmo: Gizmo2D
+ var default_font = EditorInterface.get_editor_theme().default_font
+
+ match gizmo_id:
+ WALK_TO_POINT:
+ gizmo = Gizmo2D.new(_target_node, "walk_to_point", "Walk To Point", Gizmo2D.GIZMO_POS)
+ gizmo.set_theme(
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_WALK_TO_POINT_COLOR),
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_HANDLER_SIZE),
+ default_font,
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_FONT_SIZE)
+ )
+ LOOK_AT_POINT:
+ gizmo = Gizmo2D.new(_target_node, "look_at_point", "Look At Point", Gizmo2D.GIZMO_POS)
+ gizmo.set_theme(
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_LOOK_AT_POINT_COLOR),
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_HANDLER_SIZE),
+ default_font,
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_FONT_SIZE)
+ )
+ BASELINE:
+ gizmo = Gizmo2D.new(_target_node, "baseline", "Baseline", Gizmo2D.GIZMO_VPOS)
+ gizmo.set_theme(
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_BASELINE_COLOR),
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_HANDLER_SIZE),
+ default_font,
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_FONT_SIZE)
+ )
+ DIALOG_POS:
+ gizmo = Gizmo2D.new(_target_node, "dialog_pos", "Dialog Position", Gizmo2D.GIZMO_POS)
+ gizmo.set_theme(
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_DIALOG_POS_COLOR),
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_HANDLER_SIZE),
+ default_font,
+ PopochiuEditorConfig.get_editor_setting(PopochiuEditorConfig.GIZMOS_FONT_SIZE)
+ )
+ return gizmo
+
+
+func _try_grab_gizmo(event: InputEventMouseButton) -> bool:
+ # Check if the mouse click happened on a gizmo
+ # The order is reversed to the topmost gizmo
+ # (the last been drawn) is selected
+ for i in range(_active_gizmos.size() - 1, -1, -1):
+ if not _active_gizmos[i].has_point(event.position):
+ continue
+ _grabbed_gizmo = _active_gizmos[i]
+ break
+
+ # If user clicked on no gizmos
+ # ignore the event
+ if not _grabbed_gizmo:
+ return false
+
+ # hold the gizmo with the mouse
+ _grabbed_gizmo.grab(event.position)
+ _undo.create_action("Move gizmo")
+ _undo.add_undo_property(
+ _grabbed_gizmo.target_node,
+ _grabbed_gizmo.target_property,
+ _grabbed_gizmo.target_node.get(_grabbed_gizmo.target_property)
+ )
+ update_overlays()
+ return true
+
+
+func _release_gizmo(event: InputEvent) -> bool:
+ # If there is no gizmo to release
+ # ignore the event
+ if not _grabbed_gizmo:
+ return false
+
+ _grabbed_gizmo.release()
+ _undo.add_do_property(
+ _grabbed_gizmo.target_node,
+ _grabbed_gizmo.target_property,
+ _grabbed_gizmo.target_node.get(_grabbed_gizmo.target_property)
+ )
+ _undo.commit_action()
+ update_overlays()
+ _grabbed_gizmo = null
+ return true
+
+
+func _drag_gizmo(event: InputEvent) -> bool:
+ # If no gizmo to drag
+ # ignore the event
+ if not _grabbed_gizmo:
+ return false
+
+ # Drag the gizmo
+ _grabbed_gizmo.drag_to(event.position)
+ _update_properties()
+ update_overlays()
+ return true
+
+
+func _cancel_dragging_gizmo(event: InputEvent) -> bool:
+ # If ESC/Cancel happens but we're not dragging
+ # ignore the event
+ if not _grabbed_gizmo:
+ return false
+
+ # Cancel the action
+ _grabbed_gizmo.cancel()
+ _undo.commit_action()
+ _undo.get_history_undo_redo(_undo.get_object_history_id(_grabbed_gizmo.target_node)).undo()
+ update_overlays()
+ _grabbed_gizmo = null
+ return true
+
+
+#endregion
diff --git a/addons/popochiu/editor/gizmos/gizmo_clickable_plugin.gd.uid b/addons/popochiu/editor/gizmos/gizmo_clickable_plugin.gd.uid
new file mode 100644
index 0000000..3c3eeae
--- /dev/null
+++ b/addons/popochiu/editor/gizmos/gizmo_clickable_plugin.gd.uid
@@ -0,0 +1 @@
+uid://1t0c81s6wd7c
diff --git a/addons/popochiu/editor/gizmos/plugin.cfg b/addons/popochiu/editor/gizmos/plugin.cfg
new file mode 100644
index 0000000..d0e45dc
--- /dev/null
+++ b/addons/popochiu/editor/gizmos/plugin.cfg
@@ -0,0 +1,7 @@
+[plugin]
+
+name="PopochiuGizmoClickable"
+description="Provides viewport-drawn interactive 2D gizmos to Popochiu objects in the editor."
+author="Carenalgas Dev Team"
+version="2.0"
+script="gizmo_clickable_plugin.gd"
\ No newline at end of file
diff --git a/addons/popochiu/editor/helpers/popochiu_editor_helper.gd b/addons/popochiu/editor/helpers/popochiu_editor_helper.gd
new file mode 100644
index 0000000..4d5643f
--- /dev/null
+++ b/addons/popochiu/editor/helpers/popochiu_editor_helper.gd
@@ -0,0 +1,323 @@
+@tool
+class_name PopochiuEditorHelper
+extends Resource
+## Utils class for Editor related things.
+
+# ---- Strings, paths, scenes, and other values ----------------------------------------------------
+const POPUPS_FOLDER = "res://addons/popochiu/editor/popups/"
+const CREATE_OBJECT_FOLDER = "res://addons/popochiu/editor/popups/create_object/"
+const CREATE_ROOM = preload(CREATE_OBJECT_FOLDER + "create_room/create_room.tscn")
+const CREATE_CHARACTER = preload(CREATE_OBJECT_FOLDER + "create_character/create_character.tscn")
+const CREATE_INVENTORY_ITEM = preload(
+ CREATE_OBJECT_FOLDER + "create_inventory_item/create_inventory_item.tscn"
+)
+const CREATE_DIALOG = preload(CREATE_OBJECT_FOLDER + "create_dialog/create_dialog.tscn")
+const CREATE_PROP = preload(CREATE_OBJECT_FOLDER + "create_prop/create_prop.tscn")
+const CREATE_HOTSPOT = preload(CREATE_OBJECT_FOLDER + "create_hotspot/create_hotspot.tscn")
+const CREATE_WALKABLE_AREA = preload(
+ CREATE_OBJECT_FOLDER + "create_walkable_area/create_walkable_area.tscn"
+)
+const CREATE_REGION = preload(CREATE_OBJECT_FOLDER + "create_region/create_region.tscn")
+const CREATE_MARKER = preload(CREATE_OBJECT_FOLDER + "create_marker/create_marker.tscn")
+const DELETE_CONFIRMATION_SCENE = preload(
+ POPUPS_FOLDER + "delete_confirmation/delete_confirmation.tscn"
+)
+const PROGRESS_DIALOG_SCENE = preload(POPUPS_FOLDER + "progress/progress.tscn")
+const SETUP_SCENE = preload("res://addons/popochiu/editor/popups/setup/setup.tscn")
+# ---- Identifiers ---------------------------------------------------------------------------------
+const POPOCHIU_OBJECT_POLYGON_GROUP = "popochiu_object_polygon"
+const MIGRATIONS_PANEL_SCENE = preload(
+ "res://addons/popochiu/editor/popups/migrations_panel/migrations_panel.tscn"
+)
+# ---- Classes -------------------------------------------------------------------------------------
+const PopochiuSignalBus = preload("res://addons/popochiu/editor/helpers/popochiu_signal_bus.gd")
+const DeleteConfirmation = preload(POPUPS_FOLDER + "delete_confirmation/delete_confirmation.gd")
+const Progress = preload(POPUPS_FOLDER + "progress/progress.gd")
+const CreateObject = preload(CREATE_OBJECT_FOLDER + "create_object.gd")
+const MigrationsPanel = preload(
+ "res://addons/popochiu/editor/popups/migrations_panel/migrations_panel.gd"
+)
+
+static var signal_bus := PopochiuSignalBus.new()
+static var ei := EditorInterface
+static var undo_redo: EditorUndoRedoManager = null
+static var dock: Panel = null
+
+static var _room_scene_path_template := PopochiuResources.ROOMS_PATH.path_join("%s/room_%s.tscn")
+
+
+#region Public #####################################################################################
+static func select_node(node: Node) -> void:
+ ei.get_selection().clear()
+ ei.get_selection().add_node(node)
+
+
+static func show_popup(popup_name: String) -> void:
+ PopochiuUtils.print_normal(popup_name)
+
+
+static func add_resource_to_popochiu(target: String, resource: Resource) -> int:
+ return PopochiuResources.set_data_value(target, resource.script_name, resource.resource_path)
+
+
+static func show_delete_confirmation(
+ content: DeleteConfirmation, min_size := Vector2i(640, 160)
+) -> void:
+ var dialog := ConfirmationDialog.new()
+ dialog.title = content.title
+
+ dialog.confirmed.connect(
+ func () -> void:
+ if content.on_confirmed:
+ content.on_confirmed.call()
+
+ dialog.queue_free()
+ )
+ dialog.canceled.connect(
+ func () -> void:
+ if content.on_canceled:
+ content.on_canceled.call()
+
+ dialog.queue_free()
+ )
+ dialog.about_to_popup.connect(content.on_about_to_popup)
+ dialog.add_child(content)
+
+ await show_dialog(dialog, min_size)
+
+
+static func show_progress(min_size := Vector2i(640, 80)) -> Progress:
+ var dialog := AcceptDialog.new()
+ var content: Progress = PROGRESS_DIALOG_SCENE.instantiate()
+
+ dialog.borderless = true
+ dialog.add_child(content)
+ dialog.get_ok_button().hide()
+ await show_dialog(dialog, min_size)
+
+ return content
+
+
+static func show_creation_popup(scene: PackedScene, min_size := Vector2i(640, 180)) -> void:
+ var content: CreateObject = scene.instantiate()
+ var dialog := ConfirmationDialog.new()
+
+ content.content_changed.connect(
+ func () -> void:
+ content.custom_minimum_size = content.get_child(0).size
+ content.size = content.get_child(0).size
+
+ dialog.reset_size()
+ dialog.move_to_center()
+ )
+ dialog.confirmed.connect(content.create)
+ dialog.canceled.connect(dialog.queue_free)
+ dialog.about_to_popup.connect(content.on_about_to_popup)
+ dialog.add_child(content)
+ await show_dialog(dialog, min_size)
+
+ dialog.register_text_enter(content.input)
+
+
+static func show_setup(is_welcome := false) -> void:
+ var dialog := ConfirmationDialog.new()
+ var content := SETUP_SCENE.instantiate()
+
+ dialog.title = "Setup"
+ dialog.confirmed.connect(content.on_close)
+ dialog.close_requested.connect(content.on_close)
+ dialog.about_to_popup.connect(content.on_about_to_popup)
+
+ dialog.add_child(content)
+ dock.add_child.call_deferred(dialog)
+ await dialog.ready
+
+ content.define_content(is_welcome)
+ content.size_calculated.connect(
+ func () -> void:
+ dialog.reset_size()
+ dialog.move_to_center()
+ )
+
+ await show_dialog(dialog, content.custom_minimum_size)
+
+
+static func show_migrations(
+ content: MigrationsPanel, min_size := Vector2i(640, 640)
+) -> AcceptDialog:
+ var dialog := AcceptDialog.new()
+ dialog.title = "Migration Tool"
+ content.anchors_preset = Control.PRESET_FULL_RECT
+ dialog.add_child(content)
+ await show_dialog(dialog, min_size)
+
+ return dialog
+
+
+static func show_dialog(dialog: Window, min_size := Vector2i.ZERO) -> void:
+ if not dialog.is_inside_tree():
+ dock.add_child.call_deferred(dialog)
+ await dialog.ready
+
+ dialog.popup_centered(min_size * EditorInterface.get_editor_scale())
+
+
+
+# Type-checking functions
+static func is_popochiu_clickable(node: Node) -> bool:
+ return node is PopochiuCharacter \
+ or node is PopochiuProp \
+ or node is PopochiuHotspot
+
+
+static func is_popochiu_object(node: Node) -> bool:
+ return node is PopochiuRoom \
+ or is_popochiu_room_object(node)
+
+
+static func is_popochiu_room_object(node: Node) -> bool:
+ return node is PopochiuCharacter \
+ or node is PopochiuProp \
+ or node is PopochiuHotspot \
+ or node is PopochiuWalkableArea \
+ or node is PopochiuRegion
+
+
+static func is_room(node: Node) -> bool:
+ return node is PopochiuRoom
+
+
+static func is_character(node: Node) -> bool:
+ return node is PopochiuCharacter
+
+
+static func is_prop(node: Node) -> bool:
+ return node is PopochiuProp
+
+
+static func is_hotspot(node: Node) -> bool:
+ return node is PopochiuHotspot
+
+
+static func is_walkable_area(node: Node) -> bool:
+ return node is PopochiuWalkableArea
+
+
+static func is_region(node: Node) -> bool:
+ return node is PopochiuRegion
+
+
+static func is_marker(node: Node) -> bool:
+ return node is Marker2D
+
+
+static func is_popochiu_obj_polygon(node: Node):
+ return node.is_in_group(POPOCHIU_OBJECT_POLYGON_GROUP)
+
+
+# Context-checking functions
+static func is_editing_room() -> bool:
+ # If the open scene in the editor is a PopochiuRoom, return true
+ return is_room(ei.get_edited_scene_root())
+
+
+# Quick-access functions
+static func get_first_child_by_group(node: Node, group: StringName) -> Node:
+ if (node == null):
+ return null
+ for n in node.get_children():
+ if n.is_in_group(group):
+ return n
+ return null
+
+
+static func get_all_children(node, children := []) -> Array:
+ if node == null:
+ return []
+ children.push_back(node)
+ for child in node.get_children():
+ children = get_all_children(child, children)
+ return children
+
+
+## Overrides the font [param font_name] in [param node] by the theme [Font] identified by
+## [param editor_font_name].
+static func override_font(node: Control, font_name: String, editor_font_name: String) -> void:
+ node.add_theme_font_override(font_name, node.get_theme_font(editor_font_name, "EditorFonts"))
+
+
+static func frame_processed() -> void:
+ await EditorInterface.get_base_control().get_tree().process_frame
+
+
+static func secs_passed(secs := 1.0) -> void:
+ await EditorInterface.get_base_control().get_tree().create_timer(secs).timeout
+
+
+static func filesystem_scanned() -> void:
+ EditorInterface.get_resource_filesystem().scan.call_deferred()
+ await EditorInterface.get_resource_filesystem().filesystem_changed
+
+
+static func pack_scene(node: Node, path := "") -> int:
+ var packed_scene := PackedScene.new()
+ packed_scene.pack(node)
+
+ if path.is_empty():
+ path = node.scene_file_path
+
+ return ResourceSaver.save(packed_scene, path)
+
+
+## Helper function to recursively remove all folders and files inside [param folder_path].
+static func remove_recursive(folder_path: String) -> bool:
+ if DirAccess.dir_exists_absolute(folder_path):
+ # Delete subfolders and their contents recursively in folder_path
+ for subfolder_path: String in get_absolute_directory_paths_at(folder_path):
+ remove_recursive(subfolder_path)
+
+ # Delete all files in folder_path
+ for file_path: String in get_absolute_file_paths_at(folder_path):
+ if DirAccess.remove_absolute(file_path) != OK:
+ return false
+
+ # Once all files are deleted in folder_path, remove folder_path
+ if DirAccess.remove_absolute(folder_path) != OK:
+ return false
+ return true
+
+
+## Helper function to get the absolute directory paths for all folders under [param folder_path].
+static func get_absolute_directory_paths_at(folder_path: String) -> Array:
+ var dir_array : PackedStringArray = []
+
+ if DirAccess.dir_exists_absolute(folder_path):
+ for folder in DirAccess.get_directories_at(folder_path):
+ dir_array.append(folder_path.path_join(folder))
+
+ return Array(dir_array)
+
+
+## Helper function to get the absolute file paths for all files under [param folder_path].
+static func get_absolute_file_paths_at(folder_path: String) -> PackedStringArray:
+ var file_array : PackedStringArray = []
+
+ if DirAccess.dir_exists_absolute(folder_path):
+ for file in DirAccess.get_files_at(folder_path):
+ file_array.append(folder_path.path_join(file))
+
+ return file_array
+
+
+## Returns an array of [PopochiuRoom] (instances) for all the rooms in the project.
+static func get_rooms() -> Array[PopochiuRoom]:
+ var rooms: Array[PopochiuRoom] = []
+ rooms.assign(PopochiuResources.get_section_keys("rooms").map(
+ func (room_name: String) -> PopochiuRoom:
+ var scene_path := _room_scene_path_template.replace("%s", room_name.to_snake_case())
+ return (load(scene_path) as PackedScene).instantiate(PackedScene.GEN_EDIT_STATE_INSTANCE)
+ ))
+ return rooms
+
+
+#endregion
diff --git a/addons/popochiu/editor/helpers/popochiu_editor_helper.gd.uid b/addons/popochiu/editor/helpers/popochiu_editor_helper.gd.uid
new file mode 100644
index 0000000..0ce83b8
--- /dev/null
+++ b/addons/popochiu/editor/helpers/popochiu_editor_helper.gd.uid
@@ -0,0 +1 @@
+uid://bgogdq51wvqyn
diff --git a/addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd b/addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd
new file mode 100644
index 0000000..7ec557e
--- /dev/null
+++ b/addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd
@@ -0,0 +1,359 @@
+@tool
+extends Resource
+## Helper class for operations related to the GUI templates
+
+static var _template_id := ""
+static var _template_theme_path := ""
+
+#region Public #####################################################################################
+## Creates a copy of the selected template, including its components. Also generate the necessary
+## scripts to define custom logic for the graphical interface and its commands.
+static func copy_gui_template(
+ template_name: String, on_progress: Callable, on_complete: Callable
+) -> void:
+ if (
+ DirAccess.dir_exists_absolute(PopochiuResources.GUI_GAME_FOLDER)
+ and template_name == PopochiuResources.get_data_value("ui", "template", "")
+ ):
+ PopochiuUtils.print_normal("No changes in GUI template.")
+
+ on_complete.call()
+ return
+
+ on_progress.call(0, "Starting GUI template application")
+
+ _template_theme_path = ""
+
+ var scene_path := PopochiuResources.GUI_CUSTOM_SCENE
+ var commands_template_path := PopochiuResources.GUI_CUSTOM_TEMPLATE
+
+ _template_id = template_name.to_snake_case()
+
+ if _template_id != PopochiuResources.GUI_CUSTOM:
+ scene_path = PopochiuResources.GUI_TEMPLATES_FOLDER.path_join(
+ "%s/%s_gui.tscn" % [_template_id, _template_id]
+ )
+ commands_template_path = PopochiuResources.GUI_SCRIPT_TEMPLATES_FOLDER.path_join(
+ "%s_commands_template.gd" % _template_id
+ )
+
+ var script_path := PopochiuResources.GUI_GAME_SCENE.replace(".tscn", ".gd")
+
+ await _wait()
+ on_progress.call(5, "Creating Graphic Interface scene")
+
+ # ---- Make a copy of the selected GUI template ------------------------------------------------
+ if _create_scene(scene_path) != OK:
+ PopochiuUtils.print_error("Couldn't create %s file" % PopochiuResources.GUI_GAME_SCENE)
+ return
+
+ await _wait(2.0)
+ on_progress.call(10, "Copying a bunch of components")
+
+ # Copy the components used by the GUI template to the res://game/gui/components
+ # folder so devs can play with them freely -----------------------------------------------------
+ await copy_components(scene_path, true)
+
+ on_progress.call(60, "Creating scripts")
+
+ # Create a copy of the corresponding commands template -----------------------------------------
+ _copy_commands_and_gui_scripts(
+ commands_template_path, PopochiuResources.GUI_COMMANDS, script_path, scene_path
+ )
+
+ await _wait(1.5)
+ on_progress.call(80, "Assigning scripts")
+
+ # Update the script of the created gui.tscn so it uses the copy created above ------------------
+ if _update_scene_script(script_path) != OK:
+ PopochiuUtils.print_error("Couldn't update gui.tscn script")
+ return
+
+ await _wait()
+ on_progress.call(90, "Updating config file")
+
+ # Update the info related to the GUI template and the GUI commands script
+ # in the popochiu_data.cfg file ----------------------------------------------------------------
+ PopochiuResources.set_data_value("ui", "template", template_name)
+ await _wait(0.8)
+
+ on_progress.call(100, "All in place. Thanks for your patience.")
+ PopochiuUtils.print_normal("[wave]Selected GUI template successfully applied[/wave]")
+ await _wait()
+ await PopochiuEditorHelper.filesystem_scanned()
+
+ on_complete.call()
+
+
+static func copy_component(source_scene_path: String) -> String:
+ var file_name := source_scene_path.get_file()
+ var source_folder := source_scene_path.get_base_dir()
+
+ var target_folder := source_folder.replace(PopochiuResources.GUI_ADDON_FOLDER, "")
+ target_folder = PopochiuResources.GUI_GAME_FOLDER + target_folder
+
+ if not DirAccess.dir_exists_absolute(target_folder):
+ DirAccess.make_dir_recursive_absolute(target_folder)
+
+ # Make a copy of the component and save it in the graphic interface components folder
+ var component_instance := (load(source_scene_path) as PackedScene).instantiate()
+ var target_scene_file := "%s/%s" % [target_folder, file_name]
+
+ var packed_scene := PackedScene.new()
+ packed_scene.pack(component_instance)
+ packed_scene.resource_path = target_scene_file
+
+ var err := ResourceSaver.save(packed_scene, target_scene_file)
+
+ if err != OK:
+ PopochiuUtils.print_error(
+ "Couldn't create instance of %s component. Error code: %d." % [
+ file_name.get_slice(".", 0).capitalize(),
+ err
+ ]
+ )
+
+ return ""
+
+ # Move the dependencies of the source scene to the graphic interface folder
+ await copy_components(source_scene_path)
+
+ return target_scene_file
+
+
+## Makes a copy of the components used by the original GUI template to the
+## **res://game/gui/components/** folder so devs can play with those scenes without
+## affecting the ones in the plugin's folder.
+static func copy_components(source_scene_path: String, is_gui_game_scene := false) -> void:
+ var dependencies_to_update: Array[Dictionary] = []
+
+ # Make a copy of the dependencies of the graphic interface
+ for dep: String in ResourceLoader.get_dependencies(source_scene_path):
+ var source_file_path := dep.get_slice("::", 2)
+
+ if (
+ is_gui_game_scene and source_file_path.get_extension() == "gd"
+ and source_scene_path.get_base_dir() == source_file_path.get_base_dir()
+ ):
+ # Ignore the script of the GUI template scene file
+ continue
+
+ var source_file_uid := ResourceUID.id_to_text(
+ ResourceLoader.get_resource_uid(source_file_path)
+ )
+ var dependency_data := {
+ source_path = source_file_path,
+ source_uid = source_file_uid,
+ target_path = "",
+ }
+
+ # ---- Create the folder of the file -------------------------------------------------------
+ var file_name := source_file_path.get_file()
+ var source_folder := source_file_path.get_base_dir()
+
+ var target_folder := source_folder.replace(PopochiuResources.GUI_ADDON_FOLDER, "")
+ target_folder = target_folder.replace("templates/%s/" % _template_id, "")
+ target_folder = PopochiuResources.GUI_GAME_FOLDER + target_folder
+
+ dependency_data.target_path = "%s/%s" % [target_folder, file_name]
+
+ # Make sure all the copied components share the copied GUI theme
+ if source_file_path.get_extension() == "tres" and "_theme" in source_file_path:
+ if is_gui_game_scene and _template_theme_path.is_empty():
+ # Change the name of the GUI template theme so it differs from the original one
+ dependency_data.target_path = "%s/%s" % [
+ target_folder, "gui_theme.tres"
+ ]
+ _template_theme_path = dependency_data.target_path
+ elif not is_gui_game_scene:
+ dependency_data.target_path = _template_theme_path
+
+ dependencies_to_update.append(dependency_data)
+
+ if FileAccess.file_exists(dependency_data.target_path):
+ # Ignore any file that has already been copied
+ continue
+
+ if not DirAccess.dir_exists_absolute(target_folder):
+ DirAccess.make_dir_recursive_absolute(target_folder)
+
+ # --- Make a copy of the original file -----------------------------------------------------
+ if source_file_path.get_extension() == "gd":
+ _copy_component_script(source_file_path, dependency_data.target_path)
+ else:
+ _copy_file(source_file_path, target_folder, dependency_data.target_path)
+
+ EditorInterface.get_resource_filesystem().scan()
+ await EditorInterface.get_resource_filesystem().filesystem_changed
+
+ # Repeat the process for each of the dependencies of the .tscn resources
+ if source_file_path.get_extension() == "tscn":
+ await copy_components(source_file_path)
+
+ if is_gui_game_scene:
+ _update_dependencies(PopochiuResources.GUI_GAME_SCENE, dependencies_to_update)
+ else:
+ var game_scene_path := source_scene_path.replace(PopochiuResources.GUI_ADDON_FOLDER, "")
+ game_scene_path = game_scene_path.replace("templates/%s/" % _template_id, "")
+ game_scene_path = PopochiuResources.GUI_GAME_FOLDER + game_scene_path
+
+ _update_dependencies(game_scene_path, dependencies_to_update)
+
+ EditorInterface.get_resource_filesystem().scan()
+ await EditorInterface.get_resource_filesystem().filesystem_changed
+
+
+#endregion
+
+#region Private ####################################################################################
+## Create the **gui.tscn** file as a copy of the selected GUI template scene.
+## If a template change is being made, all components of the previous template are removed along
+## with the **.tscn** file before copying the new one.
+static func _create_scene(scene_path: String) -> int:
+ # Create the res://game/gui/ folder
+ if not FileAccess.file_exists(PopochiuResources.GUI_GAME_SCENE):
+ DirAccess.make_dir_recursive_absolute(PopochiuResources.GUI_GAME_FOLDER)
+ else:
+ # Remove the gui.tscn file
+ DirAccess.remove_absolute(PopochiuResources.GUI_GAME_SCENE)
+ EditorInterface.get_resource_filesystem().scan()
+
+ for dir_name: String in DirAccess.get_directories_at(PopochiuResources.GUI_GAME_FOLDER):
+ _remove_components(PopochiuResources.GUI_GAME_FOLDER + dir_name)
+
+ # Make a copy of the selected GUI template (.tscn) and save it in
+ # res://game/gui/gui.tscn ------------------------------------------
+ var gi_scene := load(scene_path).duplicate(true)
+ gi_scene.resource_path = PopochiuResources.GUI_GAME_SCENE
+
+ return ResourceSaver.save(gi_scene, PopochiuResources.GUI_GAME_SCENE)
+
+
+static func _remove_components(dir_path: String) -> void:
+ for file_name: String in DirAccess.get_files_at(dir_path):
+ DirAccess.remove_absolute(dir_path.path_join(file_name))
+ EditorInterface.get_resource_filesystem().scan()
+
+ for dir_name: String in DirAccess.get_directories_at(dir_path):
+ var sub_dir_path := dir_path.path_join(dir_name)
+ _remove_components(sub_dir_path)
+
+ # Once the directory is empty, remove it
+ DirAccess.remove_absolute(dir_path)
+ EditorInterface.get_resource_filesystem().scan()
+
+
+## Makes a copy of a GUI component's script.
+static func _copy_component_script(
+ source_file_path: String, target_file_path: String
+) -> void:
+ # Make a copy of the original script -----------------------------------------------------------
+ var source_file := FileAccess.open(source_file_path, FileAccess.READ)
+ var source_code := source_file.get_as_text()
+ source_file.close()
+
+ if "class_name " in source_code:
+ source_code = source_code.replace("class_name Popochiu", "class_name GUI")
+
+ var file_write := FileAccess.open(target_file_path, FileAccess.WRITE)
+ file_write.store_string(source_code)
+ file_write.close()
+
+ # Create a script for devs to overwrite the functionality of the original's copy script --------
+ file_write = FileAccess.open(target_file_path.replace(".gd", "_custom.gd"), FileAccess.WRITE)
+ if "@tool" in source_code:
+ file_write.store_string("@tool\n")
+ file_write.store_string('extends "%s"' % target_file_path.get_file())
+
+
+static func _copy_file(
+ source_file_path: String, target_folder: String, target_file_path: String
+) -> void:
+ # ---- Create a copy of the scene file ---------------------------------------------------------
+ if source_file_path.get_extension() in ["tscn", "tres"]:
+ var file_resource := load(source_file_path).duplicate(true)
+ file_resource.resource_path = target_file_path
+
+ if ResourceSaver.save(file_resource, target_file_path) != OK:
+ DirAccess.remove_absolute(target_folder)
+ else:
+ DirAccess.copy_absolute(source_file_path, target_file_path)
+
+
+## Replace the UID and paths of the components in the graphic interface scene
+static func _update_dependencies(scene_path: String, dependencies_to_update: Array) -> void:
+ if dependencies_to_update.is_empty():
+ return
+
+ # ---- Update the UID and paths of the copied components ---------------------------------------
+ var file_read = FileAccess.open(scene_path, FileAccess.READ)
+ var text := file_read.get_as_text()
+ file_read.close()
+
+ for dic: Dictionary in dependencies_to_update:
+ var target_path: String = dic.target_path
+
+ if ".gd" in target_path:
+ target_path = target_path.replace(".gd", "_custom.gd")
+
+ text = text.replace(dic.source_path, target_path)
+
+ var target_uid := ResourceUID.id_to_text(ResourceLoader.get_resource_uid(target_path))
+
+ if "invalid" in target_uid: continue
+
+ text = text.replace(dic.source_uid, target_uid)
+
+ var file_write = FileAccess.open(scene_path, FileAccess.WRITE)
+ file_write.store_string(text)
+ file_write.close()
+
+
+## Copy the commands and graphic interface scripts of the chosen GUI template. The new graphic
+## interface scripts inherits from the one originally assigned to the .tscn file of the selected
+## template.
+static func _copy_commands_and_gui_scripts(
+ commands_template_path: String, commands_path: String, script_path: String, scene_path: String
+) -> void:
+ DirAccess.copy_absolute(commands_template_path, commands_path)
+
+ # Create a copy of the graphic interface script template ---------------------------------------
+ var template_path := (
+ PopochiuResources.GUI_SCRIPT_TEMPLATES_FOLDER + "gui_template.gd"
+ )
+ var script_file := FileAccess.open(template_path, FileAccess.READ)
+ var source_code := script_file.get_as_text()
+ script_file.close()
+ source_code = source_code.replace(
+ "extends PopochiuGraphicInterface",
+ 'extends "%s"' % scene_path.replace(".tscn", ".gd")
+ )
+ script_file = FileAccess.open(script_path, FileAccess.WRITE)
+ script_file.store_string(source_code)
+ script_file.close()
+
+
+## Updates the script of the created [b]res://game/gui/gui.tscn[/b] file so it uses the one created
+## in [method _copy_commands_and_gui_scripts].
+static func _update_scene_script(script_path: String) -> int:
+ # Update the script of the GUI -----------------------------------------------------------------
+ var scene := (load(
+ PopochiuResources.GUI_GAME_SCENE
+ ) as PackedScene).instantiate()
+ scene.set_script(load(script_path))
+
+ # Set the name of the root node
+ scene.name = "GUI"
+
+ var packed_scene: PackedScene = PackedScene.new()
+ packed_scene.pack(scene)
+ packed_scene.resource_path = PopochiuResources.GUI_GAME_SCENE
+
+ return ResourceSaver.save(packed_scene, PopochiuResources.GUI_GAME_SCENE)
+
+
+static func _wait(max := 1.0) -> void:
+ await PopochiuEditorHelper.secs_passed(randf_range(0.5, max))
+
+
+#endregion
diff --git a/addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd.uid b/addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd.uid
new file mode 100644
index 0000000..cfe832e
--- /dev/null
+++ b/addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd.uid
@@ -0,0 +1 @@
+uid://cn6emnkso14qe
diff --git a/addons/popochiu/editor/helpers/popochiu_signal_bus.gd b/addons/popochiu/editor/helpers/popochiu_signal_bus.gd
new file mode 100644
index 0000000..e6bc6d0
--- /dev/null
+++ b/addons/popochiu/editor/helpers/popochiu_signal_bus.gd
@@ -0,0 +1,9 @@
+extends RefCounted
+## Helper Editor class to emit and connect to signals across different components in the plugin
+
+signal main_scene_changed(scene_path: String)
+signal pc_changed(script_name: String)
+signal audio_cues_deleted(cue_file_paths: Array)
+signal main_object_added(type: int, name_to_add: String)
+signal gizmo_visibility_changed(gizmo: int, visible: bool)
+signal migrations_done
diff --git a/addons/popochiu/editor/helpers/popochiu_signal_bus.gd.uid b/addons/popochiu/editor/helpers/popochiu_signal_bus.gd.uid
new file mode 100644
index 0000000..b99ace3
--- /dev/null
+++ b/addons/popochiu/editor/helpers/popochiu_signal_bus.gd.uid
@@ -0,0 +1 @@
+uid://p35cn6n5xi6r
diff --git a/addons/popochiu/editor/importers/aseprite/animation_creator.gd b/addons/popochiu/editor/importers/aseprite/animation_creator.gd
new file mode 100644
index 0000000..07b11db
--- /dev/null
+++ b/addons/popochiu/editor/importers/aseprite/animation_creator.gd
@@ -0,0 +1,390 @@
+@tool
+# This logic has been taken almost as-is from Vinicius Gerevini's
+# Aseprite Wizard plugin. Credits goes to him for the real magic.
+# See: https://godotengine.org/asset-library/asset/713
+extends RefCounted
+
+const RESULT_CODE = preload("res://addons/popochiu/editor/config/result_codes.gd")
+const _DEFAULT_AL = "" # Empty string equals default "Global" animation library
+
+# Vars configured on initialization
+var _file_system: EditorFileSystem
+var _aseprite: RefCounted
+
+# Vars configured on animations creation
+var _target_node: Node
+var _player: AnimationPlayer
+var _options: Dictionary
+
+# Class-logic vars
+var _spritesheet_metadata = {}
+var _target_sprite: Sprite2D
+var _output: Dictionary
+
+
+#region Public #####################################################################################
+func init(aseprite: RefCounted, editor_file_system: EditorFileSystem = null):
+ _file_system = editor_file_system
+ _aseprite = aseprite
+
+
+## Public interfaces, dedicated to specific popochiu objects
+func create_character_animations(character: Node, player: AnimationPlayer, options: Dictionary):
+ # Chores
+ _target_node = character
+ _player = player
+ _options = options
+
+ # Duly check everything is valid and cleanup animations
+ var result = _perform_common_checks()
+ if result != RESULT_CODE.SUCCESS:
+ return result
+
+ # Create the spritesheet
+ result = await _create_spritesheet_from_file()
+ if result != RESULT_CODE.SUCCESS:
+ return result
+
+ # Load tags information
+ result = await _load_spritesheet_metadata()
+ if result != RESULT_CODE.SUCCESS:
+ return result
+
+ # Set the texture in the sprite and configure
+ # the animations in the AnimationPlayer
+ _setup_texture()
+ result = _configure_animations()
+
+ return result
+
+
+func create_prop_animations(prop: Node, aseprite_tag: String, options: Dictionary):
+ # Chores
+ _target_node = prop
+ # TODO: if the prop has no AnimationPlayer, add one!
+ _player = prop.get_node("AnimationPlayer")
+ _options = options
+
+ var prop_animation_name = aseprite_tag.to_snake_case()
+
+ # Duly check everything is valid and cleanup animations
+ var result = _perform_common_checks()
+ if result != RESULT_CODE.SUCCESS:
+ return result
+
+ # Create the spritesheet
+ result = await _create_spritesheet_from_tag(aseprite_tag)
+ if result != RESULT_CODE.SUCCESS:
+ return result
+
+ # Load tags information
+ result = await _load_spritesheet_metadata(aseprite_tag)
+ if result != RESULT_CODE.SUCCESS:
+ return result
+
+ # Set the texture in the sprite and configure
+ # the animations in the AnimationPlayer
+ _setup_texture()
+ result = _configure_animations()
+
+ # Sorry, mom...
+ _player.autoplay = prop.name.to_snake_case()
+
+ return result
+
+
+#endregion
+
+#region Private ####################################################################################
+## This function creates a spritesheet with the whole file content
+func _create_spritesheet_from_file():
+ ## TODO: See _aseprite.export_layer() when the time comes to add layers selection
+ _output = _aseprite.export_file(_options.source, _options.output_folder, _options)
+ if _output.is_empty():
+ return RESULT_CODE.ERR_ASEPRITE_EXPORT_FAILED
+ return RESULT_CODE.SUCCESS
+
+
+## This function creates a spritesheet with the frames of a specific tag
+## WARNING: it's case sensitive
+func _create_spritesheet_from_tag(selected_tag: String):
+ ## TODO: See _aseprite.export_layer() when the time comes to add layers selection
+ _output = _aseprite.export_tag(_options.source, selected_tag, _options.output_folder, _options)
+ if _output.is_empty():
+ return RESULT_CODE.ERR_ASEPRITE_EXPORT_FAILED
+ return RESULT_CODE.SUCCESS
+
+
+func _load_spritesheet_metadata(selected_tag: String = ""):
+ _spritesheet_metadata = {
+ tags = {},
+ frames = {},
+ meta = {},
+ sprite_sheet = {}
+ }
+
+ # Refresh filesystem
+ await _scan_filesystem()
+
+ # Collect all needed info
+ var source_file = _output.data_file
+ var sprite_sheet = _output.sprite_sheet
+
+ # Try to access, decode and validate Aseprite JSON output
+ var file = FileAccess.open(source_file, FileAccess.READ)
+ if file == null:
+ return file.get_open_error()
+
+ var test_json_conv = JSON.new()
+ test_json_conv.parse(file.get_as_text())
+ var content = test_json_conv.get_data()
+
+ if not _aseprite.is_valid_spritesheet(content):
+ return RESULT_CODE.ERR_INVALID_ASEPRITE_SPRITESHEET
+
+ # Save image metadata from JSON data
+ _spritesheet_metadata.meta = content.meta
+
+ # Save frames metadata from JSON data
+ _spritesheet_metadata.frames = _aseprite.get_content_frames(content)
+
+ # Save tags metadata, starting from user's selection, and retrieving
+ # other information from JSON data
+ var tags = _options.get("tags").filter(func(tag): return tag.get("import"))
+
+ for t in tags:
+ # If a tag is specified, ignore every other ones
+ if not selected_tag.is_empty() and selected_tag != t.tag_name: continue
+ # Create a lookup table for tags
+ _spritesheet_metadata.tags[t.tag_name] = t
+
+ for ft in _aseprite.get_content_meta_tags(content):
+ if not _spritesheet_metadata.tags.has(ft.name): continue
+ _spritesheet_metadata.tags.get(ft.name).merge({
+ from = ft.from,
+ to = ft.to,
+ direction = ft.direction,
+ })
+
+ # If a tag is specified, the tags lookup table should contain
+ # a single tag information. In this case the to and from properties
+ # must be shifted back in the [1 - tag_length] range.
+ if not selected_tag.is_empty():
+ # Using a temp variable to make this readable
+ var t = _spritesheet_metadata.tags[selected_tag]
+ # NOTE: imagine this goes from 34 to 54, we need to shift
+ # the range back of a 33 amount, so it goes from 1 to (54 - 33)
+ t.to = t.to - t.from + 1
+ t.from = 0
+ _spritesheet_metadata.tags[selected_tag] = t
+
+ # Save spritesheet path from the command output
+ _spritesheet_metadata.sprite_sheet = sprite_sheet
+
+ # Remove the JSON file if config says so
+ if PopochiuEditorConfig.should_remove_source_files():
+ DirAccess.remove_absolute(_output.data_file)
+ await _scan_filesystem()
+
+ return RESULT_CODE.SUCCESS
+
+
+func _configure_animations():
+ if not _player.has_animation_library(_DEFAULT_AL):
+ _player.add_animation_library(_DEFAULT_AL, AnimationLibrary.new())
+
+ if _spritesheet_metadata.tags.size() > 0:
+ var result = RESULT_CODE.SUCCESS
+ # RESTART_FROM_HERE: WARNING: in case of prop and inventory, the JSON file contains
+ # the whole set of tags, so we must take the tag.from and tag.to and remap the range
+ # from "1" to "tag.to +1 - tag.from + 1" (do the math an you'll see that's correct)
+ for tag in _spritesheet_metadata.tags.values():
+ var selected_frames = _spritesheet_metadata.frames.slice(tag.from, tag.to + 1) # slice is [)
+ result = _add_animation_frames(tag.tag_name, selected_frames, tag.direction)
+ if result != RESULT_CODE.SUCCESS:
+ break
+ return result
+ else:
+ return _add_animation_frames("default", _spritesheet_metadata.frames)
+
+
+func _add_animation_frames(anim_name: String, frames: Array, direction = 'forward'):
+ # TODO: ATM there is no way to assign a walk/talk/grab/idle animation
+ # with a different name than the standard ones. The engine is searching for
+ # lowercase names in the AnimationPlayer, thus we are forcing snake_case
+ # animations name conversion.
+ # We have to add methods or properties to the Character to assign different
+ # animations (but maybe we can do with anim_prefix or other strategies).
+ var animation_name = anim_name.to_snake_case()
+ var is_loopable = _spritesheet_metadata.tags.get(anim_name).get("loops")
+
+ # Create animation library if it doesn't exist
+ # This is always true if the user selected to wipe old animations.
+ # See _remove_animations_from_player() function.
+ if not _player.has_animation_library(_DEFAULT_AL):
+ _player.add_animation_library(_DEFAULT_AL, AnimationLibrary.new())
+
+ if not _player.get_animation_library(_DEFAULT_AL).has_animation(animation_name):
+ _player.get_animation_library(_DEFAULT_AL).add_animation(animation_name, Animation.new())
+
+ # Here is where animations are created.
+ # TODO: we need to "fork" the logic so that Character has a single spritesheet
+ # containing all tags, while Rooms/Props and Inventory Items has a single spritesheet
+ # for each tag, so that you can have each prop with its own animation (PnC)
+ var animation = _player.get_animation(animation_name)
+ _create_meta_tracks(animation)
+ var frame_track = _get_property_track_path("frame")
+ var frame_track_index = _create_track(_target_sprite, animation, frame_track)
+
+ if direction == 'reverse':
+ frames.reverse()
+
+ var animation_length = 0
+
+ for frame in frames:
+ var frame_key = _get_frame_key(frame)
+ animation.track_insert_key(frame_track_index, animation_length, frame_key)
+ animation_length += frame.duration / 1000 ## NOTE: animation_length is in seconds
+
+ if direction == 'pingpong':
+ frames.remove_at(frames.size() - 1)
+ if is_loopable:
+ frames.remove_at(0)
+ frames.reverse()
+
+ for frame in frames:
+ var frame_key = _get_frame_key(frame)
+ animation.track_insert_key(frame_track_index, animation_length, frame_key)
+ animation_length += frame.duration / 1000 ## NOTE: animation_length is in seconds
+
+ animation.length = animation_length
+ animation.loop_mode = Animation.LOOP_LINEAR if is_loopable else Animation.LOOP_NONE
+
+ return RESULT_CODE.SUCCESS
+
+
+## TODO: insert validate tokens in animation name
+func _create_track(target_sprite: Node, animation: Animation, track: String):
+ var track_index = animation.find_track(track, Animation.TYPE_VALUE)
+
+ if track_index != -1:
+ animation.remove_track(track_index)
+
+ track_index = animation.add_track(Animation.TYPE_VALUE)
+ ## Here we set a label for the track in the sprite_path:property_changed format
+ ## so that _get_property_track_path can rebuild it by naming convention
+ animation.track_set_path(track_index, track)
+ animation.track_set_interpolation_loop_wrap(track_index, false)
+ animation.value_track_set_update_mode(track_index, Animation.UPDATE_DISCRETE)
+
+ return track_index
+
+
+func _get_property_track_path(prop: String) -> String:
+ var node_path = _player.get_node(_player.root_node).get_path_to(_target_sprite)
+ return "%s:%s" % [node_path, prop]
+
+
+func _scan_filesystem():
+ _file_system.scan()
+ await _file_system.filesystem_changed
+
+
+func _remove_properties_from_path(path: NodePath) -> NodePath:
+ var string_path := path as String
+ if !(":" in string_path):
+ return string_path as NodePath
+
+ var property_path := path.get_concatenated_subnames() as String
+ string_path = string_path.substr(0, string_path.length() - property_path.length() - 1)
+
+ return string_path as NodePath
+
+
+# ---- SPRITE NODE LOGIC ---------------------------------------------------------------------------
+## What follow is logic specifically gathered for Sprite elements. TextureRect should
+## be treated in a different way (see texture_rect_animation_creator.gd file in
+## original Aseprite Wizard plugin by Vinicius Gerevini)
+func _setup_texture():
+ # Load texture in target sprite (ignoring cache and forcing a refres)
+ var texture = ResourceLoader.load(
+ _spritesheet_metadata.sprite_sheet, 'Image', ResourceLoader.CACHE_MODE_IGNORE
+ )
+ texture.take_over_path(_spritesheet_metadata.sprite_sheet)
+ _target_sprite.texture = texture
+
+ if _spritesheet_metadata.frames.is_empty():
+ return
+
+ _target_sprite.hframes = (
+ _spritesheet_metadata.meta.size.w / _spritesheet_metadata.frames[0].sourceSize.w
+ )
+ _target_sprite.vframes = (
+ _spritesheet_metadata.meta.size.h / _spritesheet_metadata.frames[0].sourceSize.h
+ )
+
+
+func _create_meta_tracks(animation: Animation):
+ var hframes_track = _get_property_track_path("hframes")
+ var hframes_track_index = _create_track(_target_sprite, animation, hframes_track)
+ animation.track_insert_key(hframes_track_index, 0, _target_sprite.hframes)
+
+ var vframes_track = _get_property_track_path("vframes")
+ var vframes_track_index = _create_track(_target_sprite, animation, vframes_track)
+ animation.track_insert_key(vframes_track_index, 0, _target_sprite.vframes)
+
+ var visible_track = _get_property_track_path("visible")
+ var visible_track_index = _create_track(_target_sprite, animation, visible_track)
+ animation.track_insert_key(visible_track_index, 0, true)
+
+
+func _get_frame_key(frame: Dictionary):
+ return _calculate_frame_index(_target_sprite,frame)
+
+
+func _calculate_frame_index(sprite: Node, frame: Dictionary) -> int:
+ var column = floor(frame.frame.x * sprite.hframes / sprite.texture.get_width())
+ var row = floor(frame.frame.y * sprite.vframes / sprite.texture.get_height())
+ return (row * sprite.hframes) + column
+
+
+func _perform_common_checks():
+ # Checks
+ if not _aseprite.check_command_path():
+ return RESULT_CODE.ERR_ASEPRITE_CMD_NOT_FULL_PATH
+
+ if not _aseprite.test_command():
+ return RESULT_CODE.ERR_ASEPRITE_CMD_NOT_FOUND
+
+ if not FileAccess.file_exists(_options.source):
+ return RESULT_CODE.ERR_SOURCE_FILE_NOT_FOUND
+
+ if not DirAccess.dir_exists_absolute(_options.output_folder):
+ return RESULT_CODE.ERR_OUTPUT_FOLDER_NOT_FOUND
+
+ _target_sprite = _find_sprite_in_target()
+
+ if _target_sprite == null:
+ return RESULT_CODE.ERR_NO_SPRITE_FOUND
+
+ if typeof(_options.get("tags")) != TYPE_ARRAY:
+ return RESULT_CODE.ERR_TAGS_OPTIONS_ARRAY_EMPTY
+
+ if (_options.wipe_old_animations):
+ _remove_animations_from_player(_player)
+
+ return RESULT_CODE.SUCCESS
+
+
+func _find_sprite_in_target() -> Node:
+ if not _target_node.has_node("Sprite2D"):
+ return null
+ return _target_node.get_node("Sprite2D")
+
+
+func _remove_animations_from_player(player: AnimationPlayer):
+ if player.has_animation_library(_DEFAULT_AL):
+ player.remove_animation_library(_DEFAULT_AL)
+
+
+#endregion
diff --git a/addons/popochiu/editor/importers/aseprite/animation_creator.gd.uid b/addons/popochiu/editor/importers/aseprite/animation_creator.gd.uid
new file mode 100644
index 0000000..1b1078b
--- /dev/null
+++ b/addons/popochiu/editor/importers/aseprite/animation_creator.gd.uid
@@ -0,0 +1 @@
+uid://c44sonibms74d
diff --git a/addons/popochiu/editor/importers/aseprite/aseprite_controller.gd b/addons/popochiu/editor/importers/aseprite/aseprite_controller.gd
new file mode 100644
index 0000000..5d90f8f
--- /dev/null
+++ b/addons/popochiu/editor/importers/aseprite/aseprite_controller.gd
@@ -0,0 +1,249 @@
+@tool
+extends RefCounted
+
+
+# ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ PUBLIC ββββ
+func export_file(file_name: String, output_folder: String, options: Dictionary) -> Dictionary:
+ var exception_pattern = options.get('exception_pattern', "")
+ var only_visible_layers = options.get('only_visible_layers', false)
+ var output_name = (
+ file_name if options.get('output_filename') == ""
+ else options.get('output_filename', file_name)
+ )
+ var basename = _get_file_basename(output_name)
+ var output_dir = output_folder.replace("res://", "./")
+ var data_file = "%s/%s.json" % [output_dir, basename]
+ var sprite_sheet = "%s/%s.png" % [output_dir, basename]
+ var output = []
+ var arguments = _export_command_common_arguments(file_name, data_file, sprite_sheet)
+
+ if not only_visible_layers:
+ arguments.push_front("--all-layers")
+
+ _add_sheet_type_arguments(arguments, options)
+
+ _add_ignore_layer_arguments(file_name, arguments, exception_pattern)
+
+ var exit_code = _execute(arguments, output)
+ if exit_code != 0:
+ printerr('[Popochiu] Aseprite: failed to export spritesheet')
+ printerr(output)
+ return {}
+
+ return {
+ 'data_file': data_file.replace("./", "res://"),
+ "sprite_sheet": sprite_sheet.replace("./", "res://")
+ }
+
+
+func export_layers(file_name: String, output_folder: String, options: Dictionary) -> Array:
+ var exception_pattern = options.get('exception_pattern', "")
+ var only_visible_layers = options.get('only_visible_layers', false)
+ var basename = _get_file_basename(file_name)
+ var layers = list_layers(file_name, only_visible_layers)
+ var exception_regex = _compile_regex(exception_pattern)
+
+ var output = []
+
+ for layer in layers:
+ if layer != "" and (not exception_regex or exception_regex.search(layer) == null):
+ output.push_back(export_layer(file_name, layer, output_folder, options))
+
+ return output
+
+
+func export_layer(file_name: String, layer_name: String, output_folder: String, options: Dictionary) -> Dictionary:
+ var output_prefix = options.get('output_filename', "").strip_edges()
+ var output_dir = output_folder.replace("res://", "./").strip_edges()
+ var data_file = "%s/%s%s.json" % [output_dir, output_prefix, layer_name]
+ var sprite_sheet = "%s/%s%s.png" % [output_dir, output_prefix, layer_name]
+ var output = []
+ var arguments = _export_command_common_arguments(file_name, data_file, sprite_sheet)
+ arguments.push_front(layer_name)
+ arguments.push_front("--layer")
+
+ _add_sheet_type_arguments(arguments, options)
+
+ var exit_code = _execute(arguments, output)
+ if exit_code != 0:
+ printerr('[Popochiu] Aseprite: Failed to export layer spritesheet. Command output follows:')
+ print(output)
+ return {}
+
+ return {
+ 'data_file': data_file.replace("./", "res://"),
+ "sprite_sheet": sprite_sheet.replace("./", "res://")
+ }
+
+
+# IMPROVE: See if we can extract JSON data limited to the single tag
+# (so we don't have to reckon offset framerange)
+func export_tag(file_name: String, tag_name: String, output_folder: String, options: Dictionary) -> Dictionary:
+ var output_prefix = options.get('output_filename', "").strip_edges()
+ var output_dir = output_folder.replace("res://", "./").strip_edges()
+ var data_file = "%s/%s%s.json" % [output_dir, output_prefix, tag_name]
+ var sprite_sheet = "%s/%s%s.png" % [output_dir, output_prefix, tag_name]
+ var output = []
+ var arguments = _export_command_common_arguments(file_name, data_file, sprite_sheet)
+ arguments.push_front(tag_name)
+ arguments.push_front("--tag")
+
+ _add_sheet_type_arguments(arguments, options)
+
+ var exit_code = _execute(arguments, output)
+ if exit_code != 0:
+ printerr('[Popochiu] Aseprite: Failed to export tag spritesheet. Command output follows:')
+ print(output)
+ return {}
+
+ return {
+ 'data_file': data_file.replace("./", "res://"),
+ "sprite_sheet": sprite_sheet.replace("./", "res://")
+ }
+
+
+func list_layers(file_name: String, only_visible = false) -> Array:
+ var output = []
+ var arguments = ["-b", "--list-layers", file_name]
+
+ if not only_visible:
+ arguments.push_front("--all-layers")
+
+ var exit_code = _execute(arguments, output)
+
+ if exit_code != 0:
+ printerr('[Popochiu] Aseprite: failed listing layers')
+ printerr(output)
+ return []
+
+ return _sanitize_list_output(output)
+
+
+func list_tags(file_name: String) -> Array:
+ var output = []
+ var arguments = ["-b", "--list-tags", file_name]
+
+ var exit_code = _execute(arguments, output)
+
+ if exit_code != 0:
+ printerr('[Popochiu] Aseprite: failed listing tags')
+ printerr(output)
+ return []
+
+ return _sanitize_list_output(output)
+
+
+func is_valid_spritesheet(content):
+ return content.has("frames") and content.has("meta") and content.meta.has('image')
+
+
+func get_content_frames(content):
+ return content.frames if typeof(content.frames) == TYPE_ARRAY else content.frames.values()
+
+
+func get_content_meta_tags(content):
+ return content.meta.frameTags if content.meta.has("frameTags") else []
+
+
+func check_command_path():
+ # On Linux, MacOS or other *nix platforms, nothing to do
+ if not OS.get_name() in ["Windows", "UWP"]:
+ return true
+
+ # On Windows, OS.Execute() calls trigger an uncatchable
+ # internal error if the invoked executable is not found.
+ # Since the error is unclear, we have to check that the aseprite
+ # command is given as a full path and return an error if it's not.
+ var regex = RegEx.new()
+ regex.compile("^[A-Z|a-z]:[\\\\|\\/].+\\.exe$")
+ return \
+ regex.search(_get_aseprite_command()) \
+ and \
+ FileAccess.file_exists(_get_aseprite_command())
+
+
+func test_command():
+ var exit_code = OS.execute(_get_aseprite_command(), ['--version'], [], true)
+ return exit_code == 0
+
+
+
+# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ PRIVATE ββββ
+func _add_ignore_layer_arguments(file_name: String, arguments: Array, exception_pattern: String):
+ var layers = _get_exception_layers(file_name, exception_pattern)
+ if not layers.is_empty():
+ for l in layers:
+ arguments.push_front(l)
+ arguments.push_front('--ignore-layer')
+
+
+func _add_sheet_type_arguments(arguments: Array, options : Dictionary):
+ var column_count : int = options.get("column_count", 0)
+ if column_count > 0:
+ arguments.push_back("--merge-duplicates") # Yes, this is undocumented
+ arguments.push_back("--sheet-columns")
+ arguments.push_back(column_count)
+ else:
+ arguments.push_back("--sheet-pack")
+
+
+func _get_exception_layers(file_name: String, exception_pattern: String) -> Array:
+ var layers = list_layers(file_name)
+ var regex = _compile_regex(exception_pattern)
+ if regex == null:
+ return []
+
+ var exception_layers = []
+ for layer in layers:
+ if regex.search(layer) != null:
+ exception_layers.push_back(layer)
+
+ return exception_layers
+
+
+func _sanitize_list_output(output) -> Array:
+ if output.is_empty():
+ return output
+
+ var raw = output[0].split('\n')
+ var sanitized = []
+ for s in raw:
+ sanitized.append(s.strip_edges())
+ return sanitized
+
+
+func _export_command_common_arguments(source_name: String, data_path: String, spritesheet_path: String) -> Array:
+ return [
+ "-b",
+ "--list-tags",
+ "--data",
+ data_path,
+ "--format",
+ "json-array",
+ "--sheet",
+ spritesheet_path,
+ source_name
+ ]
+
+
+func _execute(arguments, output):
+ return OS.execute(_get_aseprite_command(), arguments, output, true, true)
+
+
+func _get_aseprite_command() -> String:
+ return PopochiuEditorConfig.get_command()
+
+
+func _get_file_basename(file_path: String) -> String:
+ return file_path.get_file().trim_suffix('.%s' % file_path.get_extension())
+
+
+func _compile_regex(pattern):
+ if pattern == "":
+ return
+
+ var rgx = RegEx.new()
+ if rgx.compile(pattern) == OK:
+ return rgx
+
+ printerr('[Popochiu] exception regex error')
diff --git a/addons/popochiu/editor/importers/aseprite/aseprite_controller.gd.uid b/addons/popochiu/editor/importers/aseprite/aseprite_controller.gd.uid
new file mode 100644
index 0000000..d5b017d
--- /dev/null
+++ b/addons/popochiu/editor/importers/aseprite/aseprite_controller.gd.uid
@@ -0,0 +1 @@
+uid://d1vhl7uqwadfx
diff --git a/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd b/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd
new file mode 100644
index 0000000..20c28ee
--- /dev/null
+++ b/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd
@@ -0,0 +1,94 @@
+@tool
+extends HBoxContainer
+
+signal tag_state_changed
+
+const RESULT_CODE = preload("res://addons/popochiu/editor/config/result_codes.gd")
+
+var _anim_tag_state: Dictionary = {}
+
+@onready var tag_name_label = $HBoxContainer/TagName
+@onready var import_toggle = $Panel/HBoxContainer/Import
+@onready var loops_toggle = $Panel/HBoxContainer/Loops
+@onready var separator = $Panel/HBoxContainer/Separator
+@onready var visible_toggle = $Panel/HBoxContainer/Visible
+@onready var clickable_toggle = $Panel/HBoxContainer/Clickable
+
+
+#region Godot ######################################################################################
+func _ready():
+ # Common toggle icons
+ import_toggle.icon = get_theme_icon('Load', 'EditorIcons')
+ loops_toggle.icon = get_theme_icon('Loop', 'EditorIcons')
+ # Room-related toggle icons
+ visible_toggle.icon = get_theme_icon('GuiVisibilityVisible', 'EditorIcons')
+ clickable_toggle.icon = get_theme_icon('ToolSelect', 'EditorIcons')
+
+
+#endregion
+
+#region Public #####################################################################################
+func init(tag_cfg: Dictionary):
+ if tag_cfg.tag_name == null or tag_cfg.tag_name == "":
+ printerr(RESULT_CODE.get_error_message(RESULT_CODE.ERR_UNNAMED_TAG_DETECTED))
+ return false
+
+ _anim_tag_state = _load_default_tag_state()
+ _anim_tag_state.merge(tag_cfg, true)
+ _setup_scene()
+
+func show_prop_buttons():
+ separator.visible = true
+ visible_toggle.visible = true
+ clickable_toggle.visible = true
+
+
+#endregion
+
+#region SetGet #####################################################################################
+func get_cfg() -> Dictionary:
+ return _anim_tag_state
+
+
+#endregion
+
+#region Private ####################################################################################
+func _setup_scene():
+ import_toggle.button_pressed = _anim_tag_state.import
+ loops_toggle.button_pressed = _anim_tag_state.loops
+ tag_name_label.text = _anim_tag_state.tag_name
+ visible_toggle.button_pressed = _anim_tag_state.prop_visible
+ clickable_toggle.button_pressed = _anim_tag_state.prop_clickable
+ emit_signal("tag_state_changed")
+
+
+func _load_default_tag_state() -> Dictionary:
+ return {
+ "tag_name": "",
+ "import": PopochiuConfig.is_default_animation_import_enabled(),
+ "loops": PopochiuConfig.is_default_animation_loop_enabled(),
+ "prop_visible": PopochiuConfig.is_default_animation_prop_visible(),
+ "prop_clickable": PopochiuConfig.is_default_animation_prop_clickable(),
+ }
+
+
+func _on_import_toggled(button_pressed):
+ _anim_tag_state.import = button_pressed
+ emit_signal("tag_state_changed")
+
+
+func _on_loops_toggled(button_pressed):
+ _anim_tag_state.loops = button_pressed
+ emit_signal("tag_state_changed")
+
+
+func _on_visible_toggled(button_pressed):
+ _anim_tag_state.prop_visible = button_pressed
+ emit_signal("tag_state_changed")
+
+func _on_clickable_toggled(button_pressed):
+ _anim_tag_state.prop_clickable = button_pressed
+ emit_signal("tag_state_changed")
+
+
+#endregion
diff --git a/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd.uid b/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd.uid
new file mode 100644
index 0000000..6331297
--- /dev/null
+++ b/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd.uid
@@ -0,0 +1 @@
+uid://krf8u35pkjn3
diff --git a/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.tscn b/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.tscn
new file mode 100644
index 0000000..cc20ff8
--- /dev/null
+++ b/addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.tscn
@@ -0,0 +1,94 @@
+[gd_scene load_steps=6 format=3 uid="uid://rphyltbm12m4"]
+
+[ext_resource type="Script" path="res://addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd" id="1"]
+
+[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_77wem"]
+
+[sub_resource type="Image" id="Image_vdhps"]
+data = {
+"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
+"format": "RGBA8",
+"height": 16,
+"mipmaps": false,
+"width": 16
+}
+
+[sub_resource type="ImageTexture" id="ImageTexture_c80ss"]
+image = SubResource("Image_vdhps")
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_sd1l8"]
+
+[node name="AnimationTagRow" type="HBoxContainer"]
+offset_right = 320.0
+offset_bottom = 20.0
+script = ExtResource("1")
+
+[node name="HBoxContainer" type="HBoxContainer" parent="."]
+layout_mode = 2
+
+[node name="TagName" type="Label" parent="HBoxContainer"]
+layout_mode = 2
+text = "Tag Name"
+
+[node name="Panel" type="Panel" parent="."]
+layout_mode = 2
+size_flags_horizontal = 3
+theme_override_styles/panel = SubResource("StyleBoxEmpty_77wem")
+
+[node name="HBoxContainer" type="HBoxContainer" parent="Panel"]
+layout_mode = 1
+anchors_preset = 1
+anchor_left = 1.0
+anchor_right = 1.0
+offset_left = -60.0
+offset_bottom = 20.0
+grow_horizontal = 0
+
+[node name="Visible" type="Button" parent="Panel/HBoxContainer"]
+visible = false
+layout_mode = 2
+size_flags_horizontal = 4
+size_flags_vertical = 3
+tooltip_text = "This prop will be visible"
+toggle_mode = true
+icon = SubResource("ImageTexture_c80ss")
+flat = true
+
+[node name="Clickable" type="Button" parent="Panel/HBoxContainer"]
+visible = false
+layout_mode = 2
+size_flags_horizontal = 4
+size_flags_vertical = 3
+tooltip_text = "This prop will be clickable"
+toggle_mode = true
+icon = SubResource("ImageTexture_c80ss")
+flat = true
+
+[node name="Separator" type="Panel" parent="Panel/HBoxContainer"]
+visible = false
+custom_minimum_size = Vector2(1, 0)
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_sd1l8")
+
+[node name="Import" type="Button" parent="Panel/HBoxContainer"]
+layout_mode = 2
+size_flags_horizontal = 4
+size_flags_vertical = 3
+tooltip_text = "Import this animation"
+toggle_mode = true
+icon = SubResource("ImageTexture_c80ss")
+flat = true
+
+[node name="Loops" type="Button" parent="Panel/HBoxContainer"]
+layout_mode = 2
+size_flags_horizontal = 4
+size_flags_vertical = 3
+tooltip_text = "Set animation as looping"
+toggle_mode = true
+icon = SubResource("ImageTexture_c80ss")
+flat = true
+
+[connection signal="toggled" from="Panel/HBoxContainer/Visible" to="." method="_on_visible_toggled"]
+[connection signal="toggled" from="Panel/HBoxContainer/Clickable" to="." method="_on_clickable_toggled"]
+[connection signal="toggled" from="Panel/HBoxContainer/Import" to="." method="_on_import_toggled"]
+[connection signal="toggled" from="Panel/HBoxContainer/Loops" to="." method="_on_loops_toggled"]
diff --git a/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.gd b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.gd
new file mode 100644
index 0000000..307d3ff
--- /dev/null
+++ b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.gd
@@ -0,0 +1,429 @@
+@tool
+extends PanelContainer
+
+# TODO: review coding standards for those constants
+const RESULT_CODE = preload("res://addons/popochiu/editor/config/result_codes.gd")
+const LOCAL_OBJ_CONFIG = preload("res://addons/popochiu/editor/config/local_obj_config.gd")
+# TODO: this can be specialized, even if for a two buttons... ?
+const AnimationTagRow =\
+preload("res://addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.gd")
+
+var scene: Node
+var target_node: Node
+var file_system: EditorFileSystem
+
+# ---- External logic
+var _animation_tag_row_scene: PackedScene =\
+preload("res://addons/popochiu/editor/importers/aseprite/docks/animation_tag_row.tscn")
+var _aseprite = preload("../aseprite_controller.gd").new() ## TODO: should be absolute?
+# ---- References for children scripts
+var _root_node: Node
+var _options: Dictionary
+# ---- Importer parameters variables
+var _source: String = ""
+var _tags_cache: Array = []
+var _file_dialog_aseprite: FileDialog
+var _output_folder_dialog: FileDialog
+var _importing := false
+var _output_folder := ""
+var _out_folder_default := "[Same as scene]"
+
+
+#region Godot ######################################################################################
+func _ready():
+ _set_elements_styles()
+
+ if not PopochiuEditorConfig.aseprite_importer_enabled():
+ _show_info()
+ return
+
+ # Check access to Aseprite executable
+ var result = _check_aseprite()
+ if result == RESULT_CODE.SUCCESS:
+ _show_importer()
+ else:
+ PopochiuUtils.print_error(RESULT_CODE.get_error_message(result))
+ _show_warning()
+
+ # Load inspector dock configuration from node
+ var cfg = LOCAL_OBJ_CONFIG.load_config(target_node)
+ if cfg == null:
+ _load_default_config()
+ _set_options_visible(true)
+ else:
+ _load_config(cfg)
+ _set_tags_visible(cfg.get("tags_exp"))
+ _set_options_visible(cfg.get("op_exp"))
+
+
+#endregion
+
+#region Private ####################################################################################
+func _check_aseprite() -> int:
+ if not _aseprite.check_command_path():
+ return RESULT_CODE.ERR_ASEPRITE_CMD_NOT_FULL_PATH
+
+ if not _aseprite.test_command():
+ return RESULT_CODE.ERR_ASEPRITE_CMD_NOT_FOUND
+
+ return RESULT_CODE.SUCCESS
+
+
+func _list_tags(file: String):
+ if not _aseprite.check_command_path():
+ return RESULT_CODE.ERR_ASEPRITE_CMD_NOT_FULL_PATH
+ if not _aseprite.test_command():
+ return RESULT_CODE.ERR_ASEPRITE_CMD_NOT_FOUND
+ return _aseprite.list_tags(file)
+
+
+## TODO: Currently unused. keeping this as reference
+## to populate a checkable list of layers
+func _list_layers(file: String, only_visibles = false):
+ if not _aseprite.check_command_path():
+ return RESULT_CODE.ERR_ASEPRITE_CMD_NOT_FULL_PATH
+ if not _aseprite.test_command():
+ return RESULT_CODE.ERR_ASEPRITE_CMD_NOT_FOUND
+ return _aseprite.list_layers(file, only_visibles)
+
+
+func _load_config(cfg):
+ if cfg.has("source"):
+ _set_source(cfg.source)
+
+ _output_folder = cfg.get("o_folder", "")
+ get_node("%OutFolderButton").text = (
+ _output_folder if _output_folder != "" else _out_folder_default
+ )
+ get_node("%OutFileName").text = cfg.get("o_name", "")
+ get_node("%VisibleLayersCheckButton").set_pressed_no_signal(
+ cfg.get("only_visible_layers", false)
+ )
+ get_node("%WipeOldAnimationsCheckButton").set_pressed_no_signal(
+ cfg.get("wipe_old_anims", false)
+ )
+
+ _set_tags_visible(cfg.get("tags_exp", false))
+ _set_options_visible(cfg.get("op_exp", false))
+ _populate_tags(cfg.get("tags", []))
+
+
+func _save_config():
+ _update_tags_cache()
+
+ var cfg := {
+ "source": _source,
+ "tags": _tags_cache,
+ "tags_exp": get_node("%Tags").visible,
+ "op_exp": get_node("%Options").visible,
+ "o_folder": _output_folder,
+ "o_name": get_node("%OutFileName").text,
+ "only_visible_layers": get_node("%VisibleLayersCheckButton").is_pressed(),
+ "wipe_old_anims": get_node("%WipeOldAnimationsCheckButton").is_pressed(),
+ }
+
+ LOCAL_OBJ_CONFIG.save_config(target_node, cfg)
+
+
+func _load_default_config():
+ # Reset variables
+ _source = ""
+ _tags_cache = []
+ _output_folder = ""
+
+ # Empty tags list
+ _empty_tags_container()
+
+ # Reset inspector fields
+ get_node("%SourceButton").text = "[empty]"
+ get_node("%SourceButton").tooltip_text = ""
+ get_node("%OutFolderButton").text = "[empty]"
+ get_node("%OutFileName").clear()
+ get_node("%VisibleLayersCheckButton").set_pressed_no_signal(false)
+ get_node("%WipeOldAnimationsCheckButton").set_pressed_no_signal(
+ PopochiuConfig.is_default_wipe_old_anims_enabled()
+ )
+
+
+func _set_source(source):
+ _source = source
+ get_node("%SourceButton").text = _source
+ get_node("%SourceButton").tooltip_text = _source
+
+
+func _on_source_pressed():
+ _open_source_dialog()
+
+
+func _on_aseprite_file_selected(path):
+ _set_source(ProjectSettings.localize_path(path))
+ _populate_tags(_get_tags_from_source())
+ _save_config()
+ _file_dialog_aseprite.queue_free()
+
+
+func _on_rescan_pressed():
+ _populate_tags(\
+ _merge_with_cache(_get_tags_from_source())\
+ )
+ _save_config()
+
+
+func _on_import_pressed():
+ if _importing:
+ return
+
+ _importing = true
+ _root_node = get_tree().get_edited_scene_root()
+
+ if _source == "":
+ _show_message("Aseprite file not selected")
+ _importing = false
+ return
+
+ _options = {
+ "source": ProjectSettings.globalize_path(_source),
+ "tags": _tags_cache,
+ "output_folder": (
+ _output_folder if _output_folder != "" else _root_node.scene_file_path.get_base_dir()
+ ),
+ "output_filename": get_node("%OutFileName").text,
+ "only_visible_layers": get_node("%VisibleLayersCheckButton").is_pressed(),
+ "wipe_old_animations": get_node("%WipeOldAnimationsCheckButton").is_pressed(),
+ }
+
+ _save_config()
+
+
+func _on_reset_pressed():
+ var _confirmation_dialog = _show_confirmation(\
+ "This will reset the importer preferences." + \
+ "This cannot be undone! Are you sure?", "Confirmation required!")
+ _confirmation_dialog.get_ok_button().connect("pressed", Callable(self, "_reset_prefs_metadata"))
+
+
+func _reset_prefs_metadata():
+ if target_node.has_meta(LOCAL_OBJ_CONFIG.LOCAL_OBJ_CONFIG_META_NAME):
+ target_node.remove_meta(LOCAL_OBJ_CONFIG.LOCAL_OBJ_CONFIG_META_NAME)
+ _load_default_config()
+ notify_property_list_changed()
+
+
+func _open_source_dialog():
+ _file_dialog_aseprite = _create_aseprite_file_selection()
+ get_parent().add_child(_file_dialog_aseprite)
+ if _source != "":
+ _file_dialog_aseprite.set_current_dir(
+ ProjectSettings.globalize_path(
+ _source.get_base_dir()
+ )
+ )
+ _file_dialog_aseprite.popup_centered_ratio()
+
+
+func _create_aseprite_file_selection():
+ var file_dialog = FileDialog.new()
+ file_dialog.file_mode = FileDialog.FILE_MODE_OPEN_FILE
+ file_dialog.access = FileDialog.ACCESS_FILESYSTEM
+ file_dialog.title = "Select Aseprite animation file"
+ file_dialog.connect("file_selected", Callable(self, "_on_aseprite_file_selected"))
+ file_dialog.set_filters(PackedStringArray(["*.ase","*.aseprite"]))
+ return file_dialog
+
+
+func _populate_tags(tags: Array):
+ ## reset tags container
+ _empty_tags_container()
+
+ # Add each tag found
+ for t in tags:
+ if t.tag_name == "":
+ continue
+
+ var tag_row: AnimationTagRow = _animation_tag_row_scene.instantiate()
+ get_node("%Tags").add_child(tag_row)
+ tag_row.init(t)
+ tag_row.connect("tag_state_changed", Callable(self, "_save_config"))
+ _customize_tag_ui(tag_row)
+ # Invoke customization hook implementable in child classes
+ _update_tags_cache()
+
+
+func _customize_tag_ui(tagrow: AnimationTagRow):
+ ## This can be implemented by child classes if necessary
+ pass
+
+
+func _empty_tags_container():
+ # Clean the inspector tags container empty
+ for tl in get_node("%Tags").get_children():
+ get_node("%Tags").remove_child(tl)
+ tl.queue_free()
+
+
+func _update_tags_cache():
+ _tags_cache = _get_tags_from_ui()
+
+
+func _merge_with_cache(tags: Array) -> Array:
+ var tags_cache_index = {}
+ var result = []
+ for t in _tags_cache:
+ tags_cache_index[t.tag_name] = t
+
+ for i in tags.size():
+ result.push_back(
+ tags_cache_index[tags[i].tag_name]
+ if tags_cache_index.has(tags[i].tag_name)
+ else tags[i]
+ )
+
+ return result
+
+
+func _get_tags_from_ui() -> Array:
+ var tags_list = []
+ for tag_row in get_node("%Tags").get_children():
+ var tag_row_cfg = tag_row.get_cfg()
+ if tag_row_cfg.tag_name == "":
+ continue
+ tags_list.push_back(tag_row_cfg)
+ return tags_list
+
+
+func _get_tags_from_source() -> Array:
+ var tags_found = _list_tags(ProjectSettings.globalize_path(_source))
+ if typeof(tags_found) == TYPE_INT:
+ PopochiuUtils.print_error(RESULT_CODE.get_error_message(tags_found))
+ return []
+ var tags_list = []
+ for t in tags_found:
+ if t == "":
+ continue
+ tags_list.push_back({
+ tag_name = t
+ })
+ return tags_list
+
+
+func _show_message(
+ message: String, title: String = "", object: Object = null, method := ""
+):
+ var warning_dialog = AcceptDialog.new()
+
+ if title != "":
+ warning_dialog.title = title
+
+ warning_dialog.dialog_text = message
+ warning_dialog.popup_window = true
+
+ var callback := Callable(warning_dialog, "queue_free")
+
+ if is_instance_valid(object) and not method.is_empty():
+ callback = func():
+ object.call(method)
+
+ warning_dialog.confirmed.connect(callback)
+ warning_dialog.close_requested.connect(callback)
+
+ PopochiuEditorHelper.show_dialog(warning_dialog)
+
+
+func _show_confirmation(message: String, title: String = ""):
+ var _confirmation_dialog = ConfirmationDialog.new()
+ get_parent().add_child(_confirmation_dialog)
+ if title != "":
+ _confirmation_dialog.title = title
+ _confirmation_dialog.dialog_text = message
+ _confirmation_dialog.popup_centered()
+ _confirmation_dialog.connect("close_requested", Callable(_confirmation_dialog, "queue_free"))
+ return _confirmation_dialog
+
+
+func _on_options_title_toggled(button_pressed):
+ _set_options_visible(button_pressed)
+ _save_config()
+
+
+func _set_options_visible(is_visible):
+ get_node("%Options").visible = is_visible
+ get_node("%OptionsTitle").icon = (
+ PopochiuEditorConfig.get_icon(PopochiuEditorConfig.Icons.EXPANDED) if is_visible
+ else PopochiuEditorConfig.get_icon(PopochiuEditorConfig.Icons.COLLAPSED)
+ )
+
+func _on_tags_title_toggled(button_pressed: bool) -> void:
+ _set_tags_visible(button_pressed)
+ _save_config()
+
+
+func _set_tags_visible(is_visible: bool) -> void:
+ get_node("%Tags").visible = is_visible
+ get_node("%TagsTitle").icon = (
+ PopochiuEditorConfig.get_icon(PopochiuEditorConfig.Icons.EXPANDED) if is_visible
+ else PopochiuEditorConfig.get_icon(PopochiuEditorConfig.Icons.COLLAPSED)
+ )
+
+func _on_out_folder_pressed():
+ _output_folder_dialog = _create_output_folder_selection()
+ get_parent().add_child(_output_folder_dialog)
+ if _output_folder != _out_folder_default:
+ _output_folder_dialog.current_dir = _output_folder
+ _output_folder_dialog.popup_centered_ratio()
+
+
+func _create_output_folder_selection():
+ var file_dialog = FileDialog.new()
+ file_dialog.file_mode = FileDialog.FILE_MODE_OPEN_DIR
+ file_dialog.access = FileDialog.ACCESS_RESOURCES
+ file_dialog.title = "Select destination folder"
+ file_dialog.connect("dir_selected", Callable(self, "_on_output_folder_selected"))
+ return file_dialog
+
+
+func _on_output_folder_selected(path):
+ _output_folder = path
+ get_node("%OutFolderButton").text = (
+ _output_folder if _output_folder != "" else _out_folder_default
+ )
+ _output_folder_dialog.queue_free()
+ _save_config()
+
+
+func _set_elements_styles():
+ # Set sections title colors according to current theme
+ var section_color = get_theme_color("prop_section", "Editor")
+ var section_style = StyleBoxFlat.new()
+ section_style.set_bg_color(section_color)
+ get_node("%TagsTitleBar").set("theme_override_styles/panel", section_style)
+ get_node("%OptionsTitleBar").set("theme_override_styles/panel", section_style)
+
+ # Set style of warning panel
+ get_node("%WarningPanel").add_theme_stylebox_override(
+ "panel",
+ get_node("%WarningPanel").get_theme_stylebox("sub_inspector_bg11", "Editor")
+ )
+ get_node("%WarningLabel").add_theme_color_override("font_color", Color("c46c71"))
+
+
+func _show_info():
+ get_node("%Info").visible = true
+ get_node("%Warning").visible = false
+ get_node("%Importer").visible = false
+
+
+func _show_warning():
+ get_node("%Info").visible = false
+ get_node("%Warning").visible = true
+ get_node("%Importer").visible = false
+
+
+func _show_importer():
+ get_node("%Info").visible = false
+ get_node("%Warning").visible = false
+ get_node("%Importer").visible = true
+
+# TODO: Introduce layer selection list, more or less as tags
+
+
+#endregion
diff --git a/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.gd.uid b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.gd.uid
new file mode 100644
index 0000000..1585023
--- /dev/null
+++ b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.gd.uid
@@ -0,0 +1 @@
+uid://c5o55inhq2abl
diff --git a/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.tscn b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.tscn
new file mode 100644
index 0000000..87a533e
--- /dev/null
+++ b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.tscn
@@ -0,0 +1,225 @@
+[gd_scene load_steps=4 format=3 uid="uid://bcanby6n3eahm"]
+
+[sub_resource type="StyleBoxEmpty" id="1"]
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wwoxk"]
+bg_color = Color(0, 0, 0, 1)
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ctsm1"]
+content_margin_left = 4.0
+content_margin_top = 4.0
+content_margin_right = 4.0
+content_margin_bottom = 4.0
+bg_color = Color(1, 0.364706, 0.364706, 1)
+draw_center = false
+corner_detail = 1
+
+[node name="AsepriteImporterInspectorDock" type="PanelContainer"]
+offset_right = 14.0
+offset_bottom = 14.0
+theme_override_styles/panel = SubResource("1")
+
+[node name="Margin" type="MarginContainer" parent="."]
+layout_mode = 2
+theme_override_constants/margin_top = 2
+theme_override_constants/margin_bottom = 2
+
+[node name="Importer" type="VBoxContainer" parent="Margin"]
+unique_name_in_owner = true
+visible = false
+layout_mode = 2
+
+[node name="Source" type="HBoxContainer" parent="Margin/Importer"]
+layout_mode = 2
+tooltip_text = "Location of the Aseprite (*.ase, *.aseprite) source file."
+
+[node name="Label" type="Label" parent="Margin/Importer/Source"]
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_stretch_ratio = 2.0
+text = "Aseprite File"
+
+[node name="SourceButton" type="Button" parent="Margin/Importer/Source"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_stretch_ratio = 2.0
+text = "[empty]"
+clip_text = true
+
+[node name="RescanButton" type="Button" parent="Margin/Importer/Source"]
+unique_name_in_owner = true
+layout_mode = 2
+text = "Rescan"
+
+[node name="TagsTitleBar" type="PanelContainer" parent="Margin/Importer"]
+unique_name_in_owner = true
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_wwoxk")
+
+[node name="TagsTitle" type="Button" parent="Margin/Importer/TagsTitleBar"]
+unique_name_in_owner = true
+layout_mode = 2
+theme_override_colors/font_pressed_color = Color(0.8, 0.807843, 0.827451, 1)
+toggle_mode = true
+text = "Animation tags"
+
+[node name="Tags" type="VBoxContainer" parent="Margin/Importer"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="OptionsTitleBar" type="PanelContainer" parent="Margin/Importer"]
+unique_name_in_owner = true
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_wwoxk")
+
+[node name="OptionsTitle" type="Button" parent="Margin/Importer/OptionsTitleBar"]
+unique_name_in_owner = true
+layout_mode = 2
+theme_override_colors/font_pressed_color = Color(0.8, 0.807843, 0.827451, 1)
+toggle_mode = true
+text = "Options"
+
+[node name="Options" type="VBoxContainer" parent="Margin/Importer"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="OutFolder" type="HBoxContainer" parent="Margin/Importer/Options"]
+layout_mode = 2
+tooltip_text = "Location where the spritesheet file should be saved."
+
+[node name="Label" type="Label" parent="Margin/Importer/Options/OutFolder"]
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_stretch_ratio = 2.0
+text = "Output folder"
+
+[node name="OutFolderButton" type="Button" parent="Margin/Importer/Options/OutFolder"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_stretch_ratio = 2.0
+text = "[empty]"
+clip_text = true
+
+[node name="OutFile" type="HBoxContainer" parent="Margin/Importer/Options"]
+layout_mode = 2
+tooltip_text = "Base filename for spritesheet. In case the layer option is used, this works as a prefix to the layer name."
+
+[node name="Label" type="Label" parent="Margin/Importer/Options/OutFile"]
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_stretch_ratio = 2.0
+text = "Output file name"
+
+[node name="OutFileName" type="LineEdit" parent="Margin/Importer/Options/OutFile"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_stretch_ratio = 2.0
+
+[node name="VisibleLayers" type="HBoxContainer" parent="Margin/Importer/Options"]
+layout_mode = 2
+tooltip_text = "If active, layers not visible in the source file won't be included in the final image."
+
+[node name="Label" type="Label" parent="Margin/Importer/Options/VisibleLayers"]
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_stretch_ratio = 2.0
+text = "Only visible layers"
+
+[node name="VisibleLayersCheckButton" type="CheckButton" parent="Margin/Importer/Options/VisibleLayers"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_stretch_ratio = 2.0
+
+[node name="WipeOldAnimations" type="HBoxContainer" parent="Margin/Importer/Options"]
+layout_mode = 2
+tooltip_text = "If active, layers not visible in the source file won't be included in the final image."
+
+[node name="Label" type="Label" parent="Margin/Importer/Options/WipeOldAnimations"]
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_stretch_ratio = 2.0
+tooltip_text = "Set this to OFF if you want to add new animations on top of old ones. Anims with same name will be updated."
+mouse_filter = 0
+text = "Wipe old animations"
+
+[node name="WipeOldAnimationsCheckButton" type="CheckButton" parent="Margin/Importer/Options/WipeOldAnimations"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_stretch_ratio = 2.0
+
+[node name="Import" type="Button" parent="Margin/Importer"]
+layout_mode = 2
+text = "Import"
+
+[node name="Reset" type="Button" parent="Margin/Importer"]
+layout_mode = 2
+text = "Reset Preferences"
+
+[node name="Warning" type="VBoxContainer" parent="Margin"]
+unique_name_in_owner = true
+visible = false
+layout_mode = 2
+
+[node name="HBoxContainer" type="HBoxContainer" parent="Margin/Warning"]
+layout_mode = 2
+
+[node name="WarningPanel" type="Panel" parent="Margin/Warning/HBoxContainer"]
+unique_name_in_owner = true
+custom_minimum_size = Vector2(222, 50)
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+theme_override_styles/panel = SubResource("StyleBoxFlat_ctsm1")
+
+[node name="WarningLabel" type="Label" parent="Margin/Warning/HBoxContainer/WarningPanel"]
+unique_name_in_owner = true
+custom_minimum_size = Vector2(0, 42)
+layout_mode = 0
+anchor_right = 1.0
+anchor_bottom = 1.0
+size_flags_horizontal = 3
+size_flags_vertical = 6
+theme_override_colors/font_color = Color(0.768627, 0.423529, 0.443137, 1)
+text = "Error loading Aseprite Importer!
+Check Output panel for details."
+horizontal_alignment = 1
+
+[node name="Info" type="VBoxContainer" parent="Margin"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="HBoxContainer" type="HBoxContainer" parent="Margin/Info"]
+layout_mode = 2
+
+[node name="InfoPanel" type="Panel" parent="Margin/Info/HBoxContainer"]
+custom_minimum_size = Vector2(222, 50)
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+theme_override_styles/panel = SubResource("StyleBoxFlat_ctsm1")
+
+[node name="InfoLabel" type="Label" parent="Margin/Info/HBoxContainer/InfoPanel"]
+custom_minimum_size = Vector2(0, 42)
+layout_mode = 0
+anchor_right = 1.0
+anchor_bottom = 1.0
+size_flags_horizontal = 3
+size_flags_vertical = 6
+text = "Aseprite Importer disabled.
+Can be enabled in Editor Settings."
+
+[connection signal="pressed" from="Margin/Importer/Source/SourceButton" to="." method="_on_source_pressed"]
+[connection signal="pressed" from="Margin/Importer/Source/RescanButton" to="." method="_on_rescan_pressed"]
+[connection signal="toggled" from="Margin/Importer/TagsTitleBar/TagsTitle" to="." method="_on_tags_title_toggled"]
+[connection signal="toggled" from="Margin/Importer/OptionsTitleBar/OptionsTitle" to="." method="_on_options_title_toggled"]
+[connection signal="pressed" from="Margin/Importer/Options/OutFolder/OutFolderButton" to="." method="_on_out_folder_pressed"]
+[connection signal="focus_exited" from="Margin/Importer/Options/OutFile/OutFileName" to="." method="_save_config"]
+[connection signal="pressed" from="Margin/Importer/Options/VisibleLayers/VisibleLayersCheckButton" to="." method="_save_config"]
+[connection signal="pressed" from="Margin/Importer/Options/WipeOldAnimations/WipeOldAnimationsCheckButton" to="." method="_save_config"]
+[connection signal="pressed" from="Margin/Importer/Import" to="." method="_on_import_pressed"]
+[connection signal="pressed" from="Margin/Importer/Reset" to="." method="_on_reset_pressed"]
diff --git a/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_character.gd b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_character.gd
new file mode 100644
index 0000000..1e3a7a3
--- /dev/null
+++ b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_character.gd
@@ -0,0 +1,55 @@
+@tool
+extends "res://addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.gd"
+
+var _animation_player_path: String
+var _animation_creator = preload(
+ "res://addons/popochiu/editor/importers/aseprite/animation_creator.gd"
+).new()
+
+#region Godot ######################################################################################
+func _ready():
+ if not target_node.has_node("AnimationPlayer"):
+ PopochiuUtils.print_error(
+ RESULT_CODE.get_error_message(RESULT_CODE.ERR_NO_ANIMATION_PLAYER_FOUND)
+ )
+ return
+
+ _animation_player_path = target_node.get_node("AnimationPlayer").get_path()
+
+ # Instantiate animation creator
+ _animation_creator.init(_aseprite, file_system)
+
+ super()
+
+
+#endregion
+
+#region Private ####################################################################################
+func _on_import_pressed():
+ # Set everything up
+ # This will populate _root_node and _options class variables
+ super()
+
+ if _animation_player_path == "" or not _root_node.has_node(_animation_player_path):
+ _show_message("AnimationPlayer not found")
+ _importing = false
+ return
+
+ var result = await _animation_creator.create_character_animations(
+ target_node, _root_node.get_node(_animation_player_path), _options
+ )
+ _importing = false
+
+ if typeof(result) == TYPE_INT and result != RESULT_CODE.SUCCESS:
+ PopochiuUtils.print_error(RESULT_CODE.get_error_message(result))
+ _show_message("Some errors occurred. Please check output panel.", "Warning!")
+ else:
+ _show_message("%d animation tags processed." % [_tags_cache.size()], "Done!")
+
+
+func _customize_tag_ui(tag_row: AnimationTagRow):
+ # Nothing special has to be done for Character tags
+ pass
+
+
+#endregion
diff --git a/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_character.gd.uid b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_character.gd.uid
new file mode 100644
index 0000000..7b209cc
--- /dev/null
+++ b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_character.gd.uid
@@ -0,0 +1 @@
+uid://cgc5psgxjoc17
diff --git a/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_room.gd b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_room.gd
new file mode 100644
index 0000000..7b036a9
--- /dev/null
+++ b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_room.gd
@@ -0,0 +1,117 @@
+@tool
+extends "res://addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock.gd"
+
+var _animation_creator = preload(\
+"res://addons/popochiu/editor/importers/aseprite/animation_creator.gd").new()
+
+
+#region Godot ######################################################################################
+func _ready():
+ # Instantiate animation creator
+ _animation_creator.init(_aseprite, file_system)
+
+ super()
+
+
+#endregion
+
+#region Private ####################################################################################
+func _on_import_pressed():
+ # Set everything up
+ # This will populate _root_node and _options class variables
+ super()
+
+ var props_container = _root_node.get_node("Props")
+ var result: int = RESULT_CODE.SUCCESS
+
+ # Create a prop for each tag that must be imported
+ # and populate it with the right sprite
+ for tag in _options.get("tags"):
+ # Ignore unwanted tags
+ if not tag.import: continue
+
+ # Always convert to PascalCase as a standard
+ # TODO: check Godot 4 standards, I can't find info
+ var prop_name: String = tag.tag_name.to_pascal_case()
+
+ # In case the prop is there, use the one we already have
+ var prop = props_container.get_node_or_null(prop_name)
+ if prop == null:
+ # Create a new prop if necessary, specifying the
+ # interaction flags.
+ prop = _create_prop(prop_name, tag.prop_clickable, tag.prop_visible)
+ else:
+ # Force flags (a bit redundant but they may have been changed
+ # in the Importer interface, for already imported props)
+ prop.clickable = tag.prop_clickable
+ prop.visible = tag.prop_visible
+
+ prop.set_meta("ANIM_NAME", tag.tag_name)
+
+ for prop in props_container.get_children():
+ if not prop.has_meta("ANIM_NAME"): continue
+ # TODO: check if animation player exists in prop, if not add it
+ # same for Sprite2D even if it should be there...
+
+ # Make the output folder match the prop's folder
+ _options.output_folder = prop.scene_file_path.get_base_dir()
+
+ # Import a single tag animation
+ result = await _animation_creator.create_prop_animations(
+ prop,
+ prop.get_meta("ANIM_NAME"),
+ _options
+ )
+
+ for prop in props_container.get_children():
+ if not prop.has_meta("ANIM_NAME"): continue
+ # Save the prop
+ result = await _save_prop(prop)
+
+ # TODO: maybe check if this is better done with signals
+ _importing = false
+
+ if typeof(result) == TYPE_INT and result != RESULT_CODE.SUCCESS:
+ PopochiuUtils.print_error(RESULT_CODE.get_error_message(result))
+ _show_message("Some errors occurred. Please check output panel.", "Warning!")
+ else:
+ await get_tree().create_timer(0.1).timeout
+
+ # Once the popup is closed, call _clean_props()
+ _show_message(
+ "%d animation tags processed." % [_tags_cache.size()],
+ "Done!"
+ )
+
+
+func _customize_tag_ui(tag_row: AnimationTagRow):
+ # Show props-related buttons if we are in a room
+ tag_row.show_prop_buttons()
+
+
+func _create_prop(name: String, is_clickable: bool = true, is_visible: bool = true):
+ var factory = PopochiuPropFactory.new()
+ var param := PopochiuPropFactory.PopochiuPropFactoryParam.new()
+ param.obj_name = name
+ param.room = _root_node
+ param.is_interactive = is_clickable
+ param.is_visible = is_visible
+
+ if factory.create(param) != ResultCodes.SUCCESS:
+ return
+
+ return factory.get_obj_scene()
+
+func _save_prop(prop: PopochiuProp):
+ var packed_scene: PackedScene = PackedScene.new()
+ packed_scene.pack(prop)
+ if ResourceSaver.save(packed_scene, prop.scene_file_path) != OK:
+ PopochiuUtils.print_error(
+ "Couldn't save animations for prop %s at %s" %
+ [prop.name, prop.scene_file_path]
+ )
+ return ResultCodes.ERR_CANT_SAVE_OBJ_SCENE
+ return ResultCodes.SUCCESS
+
+
+#endregion
diff --git a/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_room.gd.uid b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_room.gd.uid
new file mode 100644
index 0000000..2dbd93b
--- /dev/null
+++ b/addons/popochiu/editor/importers/aseprite/docks/aseprite_importer_inspector_dock_room.gd.uid
@@ -0,0 +1 @@
+uid://cv4mdldfurgpc
diff --git a/addons/popochiu/editor/inspector/aseprite_importer_inspector_plugin.gd b/addons/popochiu/editor/inspector/aseprite_importer_inspector_plugin.gd
new file mode 100644
index 0000000..29981f0
--- /dev/null
+++ b/addons/popochiu/editor/inspector/aseprite_importer_inspector_plugin.gd
@@ -0,0 +1,46 @@
+extends EditorInspectorPlugin ## TODO: create a base class with pointer variables
+
+const DOCKS_PATH := "res://addons/popochiu/editor/importers/aseprite/docks/"
+const INSPECTOR_DOCK = preload(DOCKS_PATH + "aseprite_importer_inspector_dock.tscn")
+const CONFIG_SCRIPT = preload("res://addons/popochiu/editor/config/config.gd")
+const INSPECTOR_DOCK_CHARACTER := DOCKS_PATH + "aseprite_importer_inspector_dock_character.gd"
+const INSPECTOR_DOCK_ROOM := DOCKS_PATH + "aseprite_importer_inspector_dock_room.gd"
+
+var _target_node: Node
+
+
+#region Godot ######################################################################################
+func _can_handle(object):
+ if object.has_method("get_parent") and object.get_parent() is Node2D:
+ return false
+
+ return object is PopochiuCharacter || object is PopochiuRoom #|| object is PopochiuInventoryItem
+
+
+func _parse_begin(object: Object):
+ # Fix showing error messages in Output when inspecting nodes in the Debugger
+ if not object is Node: return
+
+ _target_node = object
+
+
+func _parse_property(object, type, name, hint_type, hint_string, usage_flags, wide) -> bool:
+ if object.get_class() == "EditorDebuggerRemoteObject":
+ return false
+ if name != 'popochiu_placeholder':
+ return false
+ # Instantiate and configure the dock
+ var dock = INSPECTOR_DOCK.instantiate()
+ # Load the specific script in the dock
+ if object is PopochiuCharacter:
+ dock.set_script(load(INSPECTOR_DOCK_CHARACTER))
+ if object is PopochiuRoom:
+ dock.set_script(load(INSPECTOR_DOCK_ROOM))
+ dock.target_node = object
+ dock.file_system = EditorInterface.get_resource_filesystem()
+ # Add the dock to the inspector
+ add_custom_control(dock)
+ return true
+
+
+#endregion
diff --git a/addons/popochiu/editor/inspector/aseprite_importer_inspector_plugin.gd.uid b/addons/popochiu/editor/inspector/aseprite_importer_inspector_plugin.gd.uid
new file mode 100644
index 0000000..c4b4aef
--- /dev/null
+++ b/addons/popochiu/editor/inspector/aseprite_importer_inspector_plugin.gd.uid
@@ -0,0 +1 @@
+uid://dpianc4xo6kcl
diff --git a/addons/popochiu/editor/inspector/audio_cue_inspector_plugin.gd b/addons/popochiu/editor/inspector/audio_cue_inspector_plugin.gd
new file mode 100644
index 0000000..3757f52
--- /dev/null
+++ b/addons/popochiu/editor/inspector/audio_cue_inspector_plugin.gd
@@ -0,0 +1,52 @@
+extends EditorInspectorPlugin
+
+
+#region Godot ######################################################################################
+func _can_handle(object: Object) -> bool:
+ return object is PopochiuAudioCue
+
+
+func _parse_property(
+ object: Object,
+ type,
+ path: String,
+ hint,
+ hint_text: String,
+ usage,
+ wide: bool
+) -> bool:
+ if not object is PopochiuAudioCue or path != "bus":
+ return false
+
+ var ep := EditorProperty.new()
+ var ob := OptionButton.new()
+
+ _update_buses_list(ob, object)
+
+ ob.item_selected.connect(_update_audio_cue_bus.bind(object))
+ ob.pressed.connect(_update_buses_list.bind(ob, object))
+
+ ep.add_child(ob)
+ add_property_editor(path, ep)
+
+ return true
+
+
+#endregion
+
+#region Private ####################################################################################
+func _update_audio_cue_bus(idx: int, audio_cue: PopochiuAudioCue) -> void:
+ audio_cue.bus = AudioServer.get_bus_name(idx)
+ ResourceSaver.save(audio_cue, audio_cue.resource_path)
+
+
+func _update_buses_list(ob: OptionButton, pac: PopochiuAudioCue) -> void:
+ ob.clear()
+
+ for idx in AudioServer.bus_count:
+ ob.add_item(AudioServer.get_bus_name(idx), idx)
+
+ ob.selected = AudioServer.get_bus_index(pac.bus)
+
+
+#endregion
diff --git a/addons/popochiu/editor/inspector/audio_cue_inspector_plugin.gd.uid b/addons/popochiu/editor/inspector/audio_cue_inspector_plugin.gd.uid
new file mode 100644
index 0000000..58cefd1
--- /dev/null
+++ b/addons/popochiu/editor/inspector/audio_cue_inspector_plugin.gd.uid
@@ -0,0 +1 @@
+uid://d0emjgqvommw4
diff --git a/addons/popochiu/editor/inspector/character_inspector_plugin.gd b/addons/popochiu/editor/inspector/character_inspector_plugin.gd
new file mode 100644
index 0000000..78caecb
--- /dev/null
+++ b/addons/popochiu/editor/inspector/character_inspector_plugin.gd
@@ -0,0 +1,83 @@
+extends EditorInspectorPlugin
+
+
+#region Virtual ####################################################################################
+func _can_handle(object: Object) -> bool:
+ if object is PopochiuCharacter:
+ return true
+ return false
+
+
+func _parse_begin(object: Object) -> void:
+ if object.get_class() == "EditorDebuggerRemoteObject":
+ return
+
+ if not object.get_parent() is Node2D: return
+
+ var panel := PanelContainer.new()
+ var hbox := HBoxContainer.new()
+ var button := Button.new()
+
+ hbox.custom_minimum_size.y = 42.0
+ button.text = "* Open Node' scene to edit its properties"
+ button.size_flags_horizontal = Control.SIZE_EXPAND_FILL
+ button.alignment = HORIZONTAL_ALIGNMENT_CENTER
+ button.mouse_default_cursor_shape = Control.CURSOR_POINTING_HAND
+
+ panel.add_theme_stylebox_override(
+ "panel",
+ panel.get_theme_stylebox("sub_inspector_bg11", "Editor")
+ )
+ button.add_theme_color_override("font_color", Color("c46c71"))
+ button.add_theme_color_override("font_color_hover", Color("c46c71"))
+ button.add_theme_color_override("font_color_pressed", Color("c46c71"))
+
+ button.pressed.connect(
+ _open_scene.bind((object as PopochiuCharacter).scene_file_path),
+ CONNECT_DEFERRED
+ )
+
+ hbox.add_child(button)
+ panel.add_child(hbox)
+
+ add_custom_control(panel)
+
+
+func _parse_property(
+ object: Object,
+ type,
+ path: String,
+ hint,
+ hint_text: String,
+ usage,
+ wide: bool
+) -> bool:
+ if object.get_class() == "EditorDebuggerRemoteObject":
+ return false
+
+ # NOTE: We could add this as an option of the plugin settings. So devs can add extra properties
+ # if needed.
+ if object and object.get_parent() is Node2D and not path in [
+ "baseline",
+ "walk_to_point",
+ "look_at_point",
+ "position",
+ "visible",
+ "modulate",
+ "self_modulate",
+ "light_mask",
+ ]:
+ return true
+
+ return false
+
+
+#endregion
+
+#region Private ####################################################################################
+func _open_scene(path: String) -> void:
+ EditorInterface.set_main_screen_editor("2D")
+ EditorInterface.open_scene_from_path(path)
+
+
+#endregion
diff --git a/addons/popochiu/editor/inspector/character_inspector_plugin.gd.uid b/addons/popochiu/editor/inspector/character_inspector_plugin.gd.uid
new file mode 100644
index 0000000..c6cd6fb
--- /dev/null
+++ b/addons/popochiu/editor/inspector/character_inspector_plugin.gd.uid
@@ -0,0 +1 @@
+uid://m7hkqdx4jhem
diff --git a/addons/popochiu/editor/inspector/prop_inspector_plugin.gd b/addons/popochiu/editor/inspector/prop_inspector_plugin.gd
new file mode 100644
index 0000000..4a06c26
--- /dev/null
+++ b/addons/popochiu/editor/inspector/prop_inspector_plugin.gd
@@ -0,0 +1,63 @@
+extends EditorInspectorPlugin
+
+
+#region Virtual ####################################################################################
+func _can_handle(object: Object) -> bool:
+ if object is PopochiuProp:
+ return true
+ return false
+
+
+func _parse_property(
+ object: Object,
+ type,
+ path: String,
+ hint,
+ hint_text: String,
+ usage,
+ wide: bool
+) -> bool:
+ if (
+ object.get_class() == "EditorDebuggerRemoteObject"
+ or object is not PopochiuProp
+ or path != "link_to_item"
+ ):
+ return false
+
+ var ep := EditorProperty.new()
+ var ob := OptionButton.new()
+
+ _update_items_list(ob, object)
+
+ ob.item_selected.connect(_update_link_to_item.bind(ob, object))
+ ob.pressed.connect(_update_items_list.bind(ob, object))
+
+ ep.add_child(ob)
+ add_property_editor(path, ep)
+
+ return true
+
+
+#endregion
+
+#region Private ####################################################################################
+func _update_items_list(ob: OptionButton, prop: PopochiuProp) -> void:
+ ob.clear()
+ var inventory_items := PopochiuResources.get_section_keys("inventory_items")
+ var keys_ids_map := {}
+
+ inventory_items.sort()
+ ob.add_item("")
+ for key: String in inventory_items:
+ keys_ids_map[key] = ob.item_count
+ ob.add_item(key)
+
+ if keys_ids_map.has(prop.link_to_item):
+ ob.selected = ob.get_item_index(keys_ids_map[prop.link_to_item])
+
+
+func _update_link_to_item(idx: int, ob: OptionButton, prop: PopochiuProp) -> void:
+ prop.link_to_item = ob.get_item_text(idx)
+
+
+#endregion
diff --git a/addons/popochiu/editor/inspector/prop_inspector_plugin.gd.uid b/addons/popochiu/editor/inspector/prop_inspector_plugin.gd.uid
new file mode 100644
index 0000000..3d8a8ff
--- /dev/null
+++ b/addons/popochiu/editor/inspector/prop_inspector_plugin.gd.uid
@@ -0,0 +1 @@
+uid://dsuhln67g2d8k
diff --git a/addons/popochiu/editor/main_dock/popochiu_dock.gd b/addons/popochiu/editor/main_dock/popochiu_dock.gd
new file mode 100644
index 0000000..beb33c9
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_dock.gd
@@ -0,0 +1,117 @@
+@tool
+extends Panel
+
+signal move_folders_pressed
+
+@onready var tab_container: TabContainer = %TabContainer
+@onready var tab_main: VBoxContainer = %Main
+@onready var tab_room: VBoxContainer = %Room
+@onready var tab_audio: VBoxContainer = %Audio
+@onready var tab_gui: VBoxContainer = %GUI
+# ---- FOOTER --------------------------------------------------------------------------------------
+@onready var version: Label = %Version
+@onready var btn_setup: Button = %BtnSetup
+@onready var btn_docs: Button = %BtnDocs
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ version.text = "v" + PopochiuResources.get_version()
+ btn_setup.icon = get_theme_icon("Edit", "EditorIcons")
+ btn_docs.icon = get_theme_icon("HelpSearch", "EditorIcons")
+
+ # Set the Main tab selected by default
+ tab_container.current_tab = 0
+
+ # Hide the GUI tab while we decide how it will work based on devs feedback
+ tab_container.set_tab_hidden(tab_gui.get_index(), true)
+
+ # Connect to children's signals
+ tab_container.tab_changed.connect(_on_tab_changed)
+ btn_setup.pressed.connect(open_setup)
+ btn_docs.pressed.connect(OS.shell_open.bind(PopochiuResources.DOCUMENTATION))
+
+ # Connect to parent signals
+ get_tree().node_added.connect(_check_node)
+
+
+#endregion
+
+#region Public #####################################################################################
+func fill_data() -> void:
+ tab_main.fill_data()
+ tab_audio.fill_data()
+
+
+func scene_changed(scene_root: Node) -> void:
+ if not is_instance_valid(tab_room): return
+ tab_room.scene_changed(scene_root)
+
+ # TODO: Uncomment these lines when working on the GUI tab again
+ #if not is_instance_valid(tab_gui): return
+ #tab_gui.on_scene_changed(scene_root)
+
+ if (
+ not scene_root
+ or (
+ not scene_root is PopochiuRoom
+ # TODO: Uncomment this line when working on the GUI tab again
+ #and not scene_root.scene_file_path == PopochiuResources.GUI_GAME_SCENE
+ )
+ ):
+ # Open the Popochiu Main tab if the opened scene in the Editor2D is not a PopochiuRoom nor
+ # the GUI scene
+ tab_container.current_tab = 0
+
+
+func scene_closed(filepath: String) -> void:
+ if not is_instance_valid(tab_room): return
+ tab_room.scene_closed(filepath)
+ check_open_scenes()
+
+
+func search_audio_files() -> void:
+ if not is_instance_valid(tab_audio): return
+
+ tab_audio.search_audio_files()
+
+
+func open_setup() -> void:
+ PopochiuEditorHelper.show_setup()
+
+
+## If there are no other opened scenes in the Editor, this function connects to
+## [signal EditorSelection.selection_changed] in order to make sure the Popochiu dock behaves as
+## expected when the [signal EditorPlugin.scene_changed] signal is not emitted.
+func check_open_scenes() -> void:
+ # Fixes #273: Since Godot is not triggering the EditorPlugin.scene_changed signal when opening a
+ # scene when no other scenes are opened, listen to the EditorSelection.selection_changed signal
+ await get_tree().process_frame
+ if EditorInterface.get_open_scenes().is_empty():
+ EditorInterface.get_selection().selection_changed.connect(_on_editor_selection_changed)
+
+
+#endregion
+
+#region Private ####################################################################################
+func _on_tab_changed(tab: int) -> void:
+ if tab == tab_main.get_index():
+ tab_main.check_data()
+
+ if tab == tab_gui.get_index():
+ tab_gui.open_gui_scene()
+
+
+func _check_node(node: Node) -> void:
+ if node is PopochiuCharacter and node.get_parent() is Node2D:
+ # The node is a PopochiuCharacter in a room
+ node.set_name.call_deferred("Character%s *" % node.script_name)
+
+
+func _on_editor_selection_changed() -> void:
+ if EditorInterface.get_edited_scene_root():
+ EditorInterface.get_selection().selection_changed.disconnect(_on_editor_selection_changed)
+ scene_changed(EditorInterface.get_edited_scene_root())
+
+
+#endregion
diff --git a/addons/popochiu/editor/main_dock/popochiu_dock.gd.uid b/addons/popochiu/editor/main_dock/popochiu_dock.gd.uid
new file mode 100644
index 0000000..dc0e47c
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_dock.gd.uid
@@ -0,0 +1 @@
+uid://bcwtfohnkna8t
diff --git a/addons/popochiu/editor/main_dock/popochiu_dock.tscn b/addons/popochiu/editor/main_dock/popochiu_dock.tscn
new file mode 100644
index 0000000..a9c04fa
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_dock.tscn
@@ -0,0 +1,100 @@
+[gd_scene load_steps=8 format=3 uid="uid://bardo4kb80rvg"]
+
+[ext_resource type="PackedScene" uid="uid://bynwdds8o3tcx" path="res://addons/popochiu/editor/main_dock/tab_main/tab_main.tscn" id="2_oxyje"]
+[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_dock.gd" id="7"]
+[ext_resource type="PackedScene" uid="uid://4etgd0rwjgct" path="res://addons/popochiu/editor/main_dock/tab_gui/tab_gui.tscn" id="10_82goo"]
+[ext_resource type="PackedScene" uid="uid://q1bjkxavt2ay" path="res://addons/popochiu/editor/main_dock/tab_room/tab_room.tscn" id="12"]
+[ext_resource type="PackedScene" uid="uid://bpj8jlet25coy" path="res://addons/popochiu/editor/main_dock/tab_audio/tab_audio.tscn" id="13"]
+
+[sub_resource type="Image" id="Image_sgf6r"]
+data = {
+"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
+"format": "RGBA8",
+"height": 16,
+"mipmaps": false,
+"width": 16
+}
+
+[sub_resource type="ImageTexture" id="ImageTexture_32xut"]
+image = SubResource("Image_sgf6r")
+
+[node name="Popochiu" type="Panel"]
+clip_contents = true
+custom_minimum_size = Vector2(340, 0)
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+script = ExtResource("7")
+
+[node name="MarginContainer" type="MarginContainer" parent="."]
+layout_mode = 0
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+
+[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+
+[node name="TabContainer" type="TabContainer" parent="MarginContainer/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+current_tab = 0
+
+[node name="Main" parent="MarginContainer/VBoxContainer/TabContainer" instance=ExtResource("2_oxyje")]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="Room" parent="MarginContainer/VBoxContainer/TabContainer" instance=ExtResource("12")]
+unique_name_in_owner = true
+visible = false
+layout_mode = 2
+focus_mode = 2
+metadata/_tab_index = 1
+
+[node name="Audio" parent="MarginContainer/VBoxContainer/TabContainer" instance=ExtResource("13")]
+unique_name_in_owner = true
+visible = false
+layout_mode = 2
+focus_mode = 2
+metadata/_tab_index = 2
+
+[node name="GUI" parent="MarginContainer/VBoxContainer/TabContainer" instance=ExtResource("10_82goo")]
+unique_name_in_owner = true
+visible = false
+layout_mode = 2
+metadata/_tab_index = 3
+
+[node name="FooterPanel" type="PanelContainer" parent="MarginContainer/VBoxContainer"]
+layout_mode = 2
+
+[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/FooterPanel"]
+layout_mode = 2
+size_flags_vertical = 3
+alignment = 2
+
+[node name="Version" type="Label" parent="MarginContainer/VBoxContainer/FooterPanel/HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+text = "v2.0.1"
+
+[node name="BtnSetup" type="Button" parent="MarginContainer/VBoxContainer/FooterPanel/HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+tooltip_text = "Opens wiki in web browser"
+text = "Setup"
+icon = SubResource("ImageTexture_32xut")
+
+[node name="BtnDocs" type="Button" parent="MarginContainer/VBoxContainer/FooterPanel/HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+tooltip_text = "Opens wiki in web browser"
+text = "Documentation"
+icon = SubResource("ImageTexture_32xut")
diff --git a/addons/popochiu/editor/main_dock/popochiu_filter.gd b/addons/popochiu/editor/main_dock/popochiu_filter.gd
new file mode 100644
index 0000000..18ebf6f
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_filter.gd
@@ -0,0 +1,51 @@
+@tool
+extends LineEdit
+
+var groups := {}: set = set_groups
+
+
+# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ GODOT ββββ
+func _ready() -> void:
+ right_icon = get_theme_icon('Search', 'EditorIcons')
+
+
+# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ SET & GET ββββ
+func set_groups(value: Dictionary) -> void:
+ groups = value
+
+ if groups:
+ text_changed.connect(
+ _filter_rows.bind(groups),
+ CONNECT_REFERENCE_COUNTED
+ )
+
+
+# βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ PRIVATE ββββ
+# `source` is one of the `_types` dictionaries in PopochiuDock, TabRoom and
+# TabAudio
+func _filter_rows(new_text: String, source: Dictionary) -> void:
+ for type_dic in source.values():
+ type_dic.group.show()
+
+ var title_in_filter := false
+
+ if type_dic.group.title.findn(new_text) > -1:
+ title_in_filter = true
+
+ var hidden_rows := 0
+
+ # type_dic.group is a PopochiuGroup
+ var rows: Array = type_dic.group.get_elements()
+
+ for row in rows:
+ row.show()
+
+ if new_text.is_empty(): continue
+
+ if (row as Control).name.findn(new_text) < 0\
+ and not title_in_filter:
+ hidden_rows += 1
+ row.hide()
+
+ if hidden_rows == rows.size() and not new_text.is_empty():
+ type_dic.group.hide()
diff --git a/addons/popochiu/editor/main_dock/popochiu_filter.gd.uid b/addons/popochiu/editor/main_dock/popochiu_filter.gd.uid
new file mode 100644
index 0000000..47b8209
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_filter.gd.uid
@@ -0,0 +1 @@
+uid://l0id2f7cqbkj
diff --git a/addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg b/addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg
new file mode 100644
index 0000000..fe638c5
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg
@@ -0,0 +1,13 @@
+
+
+
diff --git a/addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg.import b/addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg.import
new file mode 100644
index 0000000..111d317
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg.import
@@ -0,0 +1,37 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://uwjkfsrpfx3e"
+path="res://.godot/imported/popochiu_group.svg-55d153202c16f767328f8314e84a5c37.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg"
+dest_files=["res://.godot/imported/popochiu_group.svg-55d153202c16f767328f8314e84a5c37.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
+svg/scale=1.0
+editor/scale_with_editor_scale=false
+editor/convert_colors_with_editor_theme=false
diff --git a/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.gd b/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.gd
new file mode 100644
index 0000000..d5550bb
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.gd
@@ -0,0 +1,199 @@
+@tool
+@icon("res://addons/popochiu/editor/main_dock/popochiu_group/images/popochiu_group.svg")
+class_name PopochiuGroup
+extends PanelContainer
+
+signal create_clicked
+
+const PopochiuRow := preload("res://addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd")
+
+@export var icon: Texture2D : set = set_icon
+@export var is_open := true : set = set_is_open
+@export var color: Color = Color("999999") : set = set_color
+@export var title := "Group" : set = set_title
+@export var can_create := true
+@export var create_text := ""
+@export var target_list: NodePath = ""
+@export var custom_title_count := false
+
+var _external_list: VBoxContainer = null
+
+@onready var header: PanelContainer = %Header
+@onready var arrow: TextureRect = %Arrow
+@onready var trt_icon: TextureRect = %Icon
+@onready var lbl_title: Label = %Title
+@onready var body: Container = %Body
+@onready var btn_create: Button = %BtnCreate
+@onready var list: VBoxContainer = %List
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ # Establecer estado inicial
+ add_theme_stylebox_override("panel", get_theme_stylebox("panel").duplicate())
+ (get_theme_stylebox("panel") as StyleBoxFlat).border_color = color
+
+ if is_instance_valid(icon):
+ trt_icon.texture = icon
+
+ lbl_title.text = title
+ btn_create.icon = get_theme_icon("Add", "EditorIcons")
+ btn_create.text = create_text
+ self.is_open = list.get_child_count() > 0
+
+ if not can_create:
+ btn_create.hide()
+
+ header.gui_input.connect(_on_input)
+ list.resized.connect(_update_child_count)
+ btn_create.pressed.connect(emit_signal.bind("create_clicked"))
+
+ if target_list:
+ _external_list = get_node(target_list) as VBoxContainer
+ self.is_open = _external_list.get_child_count() > 0
+
+
+#endregion
+
+#region Public #####################################################################################
+func clear_list() -> void:
+ for c in list.get_children():
+ # Fix #216: Delete the row immediately so that it does not interfere with the creation of
+ # other rows that may have the same name as it
+ c.free()
+
+
+func add(node: Node, sort := false) -> void:
+ if sort:
+ node.ready.connect(_order_list.bind(node))
+
+ list.add_child(node)
+
+ btn_create.disabled = false
+
+ if not is_open:
+ self.is_open = true
+
+
+func clear_favs() -> void:
+ for popochiu_row: PopochiuRow in list.get_children():
+ popochiu_row.clear_tag()
+
+
+func disable_create() -> void:
+ btn_create.disabled = true
+
+
+func enable_create() -> void:
+ btn_create.disabled = false
+
+
+func get_elements() -> Array:
+ return list.get_children()
+
+
+func remove_by_name(node_name: String) -> void:
+ if list.has_node(node_name):
+ var node: HBoxContainer = list.get_node(node_name)
+
+ list.remove_child(node)
+ node.free()
+
+
+func add_header_button(btn: Button) -> void:
+ btn_create.add_sibling(btn)
+
+
+func set_title_count(count: int, max_count := 0) -> void:
+ if max_count > 0:
+ lbl_title.text = "%s (%d/%d)" % [title, count, max_count]
+ else:
+ lbl_title.text = "%s (%d)" % [title, count]
+
+
+func get_by_name(node_name: String) -> HBoxContainer:
+ if list.has_node(node_name):
+ return list.get_node(node_name)
+ return null
+
+
+#endregion
+
+#region SetGet #####################################################################################
+func set_icon(value: Texture2D) -> void:
+ icon = value
+
+ if is_instance_valid(trt_icon):
+ trt_icon.texture = value
+
+
+func set_is_open(value: bool) -> void:
+ is_open = value
+
+ _toggled(value)
+
+
+func set_color(value: Color) -> void:
+ color = value
+
+ if is_instance_valid(header):
+ (get_theme_stylebox("panel") as StyleBoxFlat).border_color = value
+
+
+func set_title(value: String) -> void:
+ title = value
+
+ if is_instance_valid(lbl_title):
+ lbl_title.text = value
+
+
+#endregion
+
+#region Private ####################################################################################
+func _on_input(event: InputEvent) -> void:
+ var mouse_event: = event as InputEventMouseButton
+ if mouse_event and mouse_event.button_index == MOUSE_BUTTON_LEFT \
+ and mouse_event.pressed:
+ is_open = !is_open
+ _toggled(is_open)
+
+
+func _toggled(button_pressed: bool) -> void:
+ if is_instance_valid(arrow):
+ arrow.texture = (
+ get_theme_icon("GuiTreeArrowDown", "EditorIcons") if button_pressed
+ else get_theme_icon("GuiTreeArrowRight", "EditorIcons")
+ )
+
+ if is_instance_valid(body):
+ if button_pressed: body.show()
+ else: body.hide()
+
+ if is_instance_valid(_external_list):
+ _external_list.visible = button_pressed
+
+
+func _update_child_count() -> void:
+ if custom_title_count: return
+
+ if is_instance_valid(lbl_title):
+ var children := list.get_child_count()
+ lbl_title.text = title + (" (%d)" % children) if children > 1 else title
+
+
+func _order_list(node: Node) -> void:
+ node.ready.disconnect(_order_list)
+
+ # Place the new row in its place alphabetically
+ var place_before: Node = null
+ for row in list.get_children():
+ if str(node.name) < str(row.name):
+ place_before = row
+ break
+
+ if not place_before: return
+
+ list.move_child(node, place_before.get_index())
+
+
+#endregion
diff --git a/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.gd.uid b/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.gd.uid
new file mode 100644
index 0000000..aec403c
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.gd.uid
@@ -0,0 +1 @@
+uid://dfejejptym3da
diff --git a/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.tscn b/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.tscn
new file mode 100644
index 0000000..13c7e5d
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.tscn
@@ -0,0 +1,91 @@
+[gd_scene load_steps=6 format=3 uid="uid://b55ialbvpilxv"]
+
+[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.gd" id="1_lumyt"]
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qhsn2"]
+content_margin_left = 8.0
+content_margin_right = 8.0
+draw_center = false
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+border_color = Color(0.6, 0.6, 0.6, 1)
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_t8mu1"]
+content_margin_left = 0.0
+content_margin_top = 0.0
+content_margin_right = 0.0
+content_margin_bottom = 0.0
+bg_color = Color(0.6, 0.6, 0.6, 0.211765)
+draw_center = false
+corner_detail = 5
+expand_margin_left = 4.0
+expand_margin_right = 4.0
+
+[sub_resource type="Image" id="Image_e0ep0"]
+data = {
+"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
+"format": "RGBA8",
+"height": 16,
+"mipmaps": false,
+"width": 16
+}
+
+[sub_resource type="ImageTexture" id="ImageTexture_uhpk4"]
+image = SubResource("Image_e0ep0")
+
+[node name="PopochiuGroup" type="PanelContainer"]
+offset_right = 320.0
+offset_bottom = 24.0
+theme_override_styles/panel = SubResource("StyleBoxFlat_qhsn2")
+script = ExtResource("1_lumyt")
+is_open = false
+
+[node name="VBoxContainer" type="VBoxContainer" parent="."]
+layout_mode = 2
+
+[node name="Header" type="PanelContainer" parent="VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+theme_override_styles/panel = SubResource("StyleBoxFlat_t8mu1")
+
+[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/Header"]
+layout_mode = 2
+
+[node name="Arrow" type="TextureRect" parent="VBoxContainer/Header/HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 4
+size_flags_vertical = 4
+texture = SubResource("ImageTexture_uhpk4")
+stretch_mode = 4
+
+[node name="Icon" type="TextureRect" parent="VBoxContainer/Header/HBoxContainer"]
+unique_name_in_owner = true
+texture_filter = 1
+layout_mode = 2
+size_flags_horizontal = 4
+size_flags_vertical = 4
+
+[node name="Title" type="Label" parent="VBoxContainer/Header/HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+text = "Group"
+
+[node name="Body" type="VBoxContainer" parent="VBoxContainer"]
+unique_name_in_owner = true
+visible = false
+layout_mode = 2
+
+[node name="BtnCreate" type="Button" parent="VBoxContainer/Body"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 8
+icon = SubResource("ImageTexture_uhpk4")
+
+[node name="List" type="VBoxContainer" parent="VBoxContainer/Body"]
+unique_name_in_owner = true
+layout_mode = 2
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.gd b/addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.gd
new file mode 100644
index 0000000..cb989e6
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.gd
@@ -0,0 +1,237 @@
+@tool
+extends "res://addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd"
+
+signal group_selected(type: int)
+signal deleted(file_path: String)
+
+enum AudioOptions {
+ DELETE = MenuOptions.DELETE,
+ ADD_TO_MUSIC,
+ ADD_TO_SFX,
+ ADD_TO_VOICE,
+ ADD_TO_UI
+}
+
+const DELETE_AUDIO_CUE_MSG = "This will remove the [b]%s[/b] resource. Calls to this audio in \
+scripts will not work anymore. This action cannot be reversed. Continue?"
+const DELETE_AUDIO_CUE_ASK = "Delete [b]%s[/b] file too? (cannot be reversed)"
+const DELETE_AUDIO_FILE_MSG = "[b]%s[/b] will be deleted in the file system. This action cannot be \
+reversed. Continue?"
+
+# Only used by rows that represent an audio file
+var file_name: String
+var audio_cue: AudioCue
+var cue_group: String
+var stream_player: AudioStreamPlayer
+var audio_tab: VBoxContainer = null
+var is_playing := false :
+ set = set_is_playing
+var current_playback_position := 0.0
+
+@onready var play_btn: Button = %Play
+@onready var stop_btn: Button = %Stop
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ super()
+
+ # Assign icons
+ play_btn.icon = get_theme_icon("MainPlay", "EditorIcons")
+ stop_btn.icon = get_theme_icon("Stop", "EditorIcons")
+
+ # Connect to children's signals
+ play_btn.pressed.connect(play)
+ stop_btn.pressed.connect(stop)
+
+ # Remove group options if this is a PopochiuAudioCue
+ if is_instance_valid(audio_cue):
+ menu_popup.remove_item(menu_popup.get_item_index(AudioOptions.ADD_TO_MUSIC))
+ menu_popup.remove_item(menu_popup.get_item_index(AudioOptions.ADD_TO_SFX))
+ menu_popup.remove_item(menu_popup.get_item_index(AudioOptions.ADD_TO_VOICE))
+ menu_popup.remove_item(menu_popup.get_item_index(AudioOptions.ADD_TO_UI))
+ else:
+ label.text = file_name
+
+
+#endregion
+
+#region Virtual ####################################################################################
+func _remove_object() -> void:
+ _delete_dialog = PopochiuEditorHelper.DELETE_CONFIRMATION_SCENE.instantiate()
+
+ if is_instance_valid(audio_cue):
+ _delete_dialog.title = "Remove %s cue" % audio_cue.resource_name
+ _delete_dialog.message = DELETE_AUDIO_CUE_MSG % audio_cue.resource_name
+ _delete_dialog.ask = DELETE_AUDIO_CUE_ASK % audio_cue.audio.resource_path
+ _delete_dialog.on_confirmed = _remove_from_popochiu
+ else:
+ _delete_dialog.title = "Delete %s" % file_name
+ _delete_dialog.message = DELETE_AUDIO_FILE_MSG % path
+ _delete_dialog.on_confirmed = _delete_from_file_system
+
+ PopochiuEditorHelper.show_delete_confirmation(_delete_dialog)
+
+
+#endregion
+
+#region Public #####################################################################################
+func select() -> void:
+ EditorInterface.edit_resource(audio_cue)
+ super()
+
+
+func play() -> void:
+ if is_playing:
+ # Pause the audio stream
+ is_playing = false
+ return
+
+ if is_instance_valid(audio_tab.last_played):
+ # Stop the currently playing row (which is different from this one)
+ audio_tab.last_played.stop()
+
+ if not is_instance_valid(audio_cue):
+ # If the row does not have a [PopochiuAudioCue] assigned, then it is the row of an audio
+ # file. Therefore, the [AudioStream] to play will be its own [path]
+ var stream: AudioStream = load(path)
+ stream.loop = false
+ stream_player.stream = stream
+ else:
+ # Otherwise, the [AudioStream] to play will be that of the audio file associated with this
+ # [PopochiuAudioCue.audio]
+ stream_player.stream = audio_cue.audio
+ # The values of [AudioStream.pitch_scale] and [AudioStream.volume_db] should be taken from
+ # the information stored in the [PopochiuAudioCue].
+ stream_player.pitch_scale = audio_cue.get_pitch_scale()
+ stream_player.volume_db = audio_cue.volume
+
+ is_playing = true
+
+
+func stop() -> void:
+ is_playing = false
+ current_playback_position = 0.0
+ label.add_theme_color_override("font_color", dflt_font_color)
+ stream_player.stream = null
+ audio_tab.last_played = null
+
+
+#endregion
+
+#region SetGet #####################################################################################
+func set_is_playing(value: bool) -> void:
+ is_playing = value
+
+ if is_playing:
+ if not stream_player.finished.is_connected(stop):
+ stream_player.finished.connect(stop)
+ stream_player.play(current_playback_position)
+ audio_tab.last_played = self
+ else:
+ current_playback_position = stream_player.get_playback_position()
+
+ if stream_player.playing:
+ stream_player.stop()
+ stream_player.finished.disconnect(stop)
+
+ play_btn.icon = play_btn.get_theme_icon("Pause" if is_playing else "MainPlay", "EditorIcons")
+
+
+#endregion
+
+#region Private ####################################################################################
+func _get_menu_cfg() -> Array:
+ return [
+ {
+ id = AudioOptions.ADD_TO_MUSIC,
+ icon = preload("res://addons/popochiu/icons/music.png"),
+ label = "Add to Music"
+ },
+ {
+ id = AudioOptions.ADD_TO_SFX,
+ icon = preload("res://addons/popochiu/icons/sfx.png"),
+ label = "Add to Sound Effects"
+ },
+ {
+ id = AudioOptions.ADD_TO_VOICE,
+ icon = preload("res://addons/popochiu/icons/voice.png"),
+ label = "Add to Voices"
+ },
+ {
+ id = AudioOptions.ADD_TO_UI,
+ icon = preload("res://addons/popochiu/icons/ui.png"),
+ label = "Add to Graphic Interface"
+ }
+ ] + super()
+
+
+func _menu_item_pressed(id: int) -> void:
+ match id:
+ AudioOptions.ADD_TO_MUSIC:
+ group_selected.emit(PopochiuResources.AudioTypes.MUSIC)
+ AudioOptions.ADD_TO_SFX:
+ group_selected.emit(PopochiuResources.AudioTypes.SOUND_EFFECT)
+ AudioOptions.ADD_TO_VOICE:
+ group_selected.emit(PopochiuResources.AudioTypes.VOICE)
+ AudioOptions.ADD_TO_UI:
+ group_selected.emit(PopochiuResources.AudioTypes.UI)
+ _:
+ super(id)
+
+
+func _remove_from_popochiu() -> void:
+ # Remove the AudioCue from popochiu_data.cfg ---------------------------------------------------
+ var group_data: Array = PopochiuResources.get_data_value(
+ "audio", cue_group, []
+ )
+ if group_data:
+ group_data.erase(audio_cue.resource_path)
+
+ if group_data.is_empty():
+ PopochiuResources.erase_data_value("audio", cue_group)
+ else:
+ group_data.sort_custom(
+ func (a: String, b: String) -> bool:
+ return PopochiuUtils.sort_by_file_name(a, b)
+ )
+ PopochiuResources.set_data_value("audio", cue_group, group_data)
+
+ # Remove the AudioCue from the A singleton -----------------------------------------------------
+ PopochiuResources.remove_audio_autoload(cue_group, name, audio_cue.resource_path)
+
+ # Delete the file in its corresponding group in Audio tab
+ deleted.emit(audio_cue.audio.resource_path)
+
+ if _delete_dialog.check_box.button_pressed:
+ _delete_from_file_system()
+ else:
+ queue_free()
+
+
+func _delete_from_file_system() -> void:
+ # Delete the .tres file from the file system
+ var err: int = DirAccess.remove_absolute(path)
+
+ if err != OK:
+ PopochiuUtils.print_error("Couldn't delete audio cue %s (err_code: %d)" % [path, err])
+ return
+
+ # Delete the audio file linked to the cue
+ var audio_file_path := audio_cue.audio.resource_path
+ err = DirAccess.remove_absolute(audio_file_path)
+
+ if err != OK:
+ PopochiuUtils.print_error(
+ "Couldn't delete audio file %s (err_code: %d)" % [audio_file_path, err]
+ )
+ return
+
+ # Do this so Godot removes the .import file of the audio file
+ EditorInterface.get_resource_filesystem().update_file(audio_file_path)
+ EditorInterface.get_resource_filesystem().scan()
+ EditorInterface.get_resource_filesystem().scan_sources()
+ queue_free()
+
+
+#endregion
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.gd.uid b/addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.gd.uid
new file mode 100644
index 0000000..8d6ab3f
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.gd.uid
@@ -0,0 +1 @@
+uid://lhhhuwe3ye1f
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.tscn b/addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.tscn
new file mode 100644
index 0000000..6c10310
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.tscn
@@ -0,0 +1,62 @@
+[gd_scene load_steps=9 format=3 uid="uid://ds6ojs55q50ud"]
+
+[ext_resource type="PackedScene" uid="uid://dwtwuqw2hpdpe" path="res://addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.tscn" id="1_i2mx0"]
+[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.gd" id="2_24kri"]
+[ext_resource type="Texture2D" uid="uid://d1dnmfkhscb7r" path="res://addons/popochiu/icons/music.png" id="3_hi2e1"]
+[ext_resource type="Texture2D" uid="uid://cfh1uxtaff0ks" path="res://addons/popochiu/icons/sfx.png" id="4_1iw68"]
+[ext_resource type="Texture2D" uid="uid://6ewpl4v0td2h" path="res://addons/popochiu/icons/voice.png" id="5_ray7p"]
+[ext_resource type="Texture2D" uid="uid://528j2rksws2c" path="res://addons/popochiu/icons/ui.png" id="6_1bl3m"]
+
+[sub_resource type="Image" id="Image_dygia"]
+data = {
+"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
+"format": "RGBA8",
+"height": 16,
+"mipmaps": false,
+"width": 16
+}
+
+[sub_resource type="ImageTexture" id="ImageTexture_v80gh"]
+image = SubResource("Image_dygia")
+
+[node name="PopochiuAudioRow" instance=ExtResource("1_i2mx0")]
+script = ExtResource("2_24kri")
+
+[node name="Label" parent="HBoxContainer" index="0"]
+text = ""
+
+[node name="Play" type="Button" parent="Panel/ButtonsContainer" index="0"]
+unique_name_in_owner = true
+layout_mode = 2
+mouse_filter = 1
+icon = SubResource("ImageTexture_v80gh")
+flat = true
+
+[node name="Stop" type="Button" parent="Panel/ButtonsContainer" index="1"]
+unique_name_in_owner = true
+layout_mode = 2
+mouse_filter = 1
+icon = SubResource("ImageTexture_v80gh")
+flat = true
+
+[node name="BtnMenu" parent="Panel/ButtonsContainer" index="2"]
+icon = SubResource("ImageTexture_v80gh")
+item_count = 6
+popup/item_0/text = "Add to Music"
+popup/item_0/icon = ExtResource("3_hi2e1")
+popup/item_0/id = 1
+popup/item_1/text = "Add to Sound effects"
+popup/item_1/icon = ExtResource("4_1iw68")
+popup/item_1/id = 2
+popup/item_2/text = "Add to Voices"
+popup/item_2/icon = ExtResource("5_ray7p")
+popup/item_2/id = 3
+popup/item_3/text = "Add to Graphic interface"
+popup/item_3/icon = ExtResource("6_1bl3m")
+popup/item_3/id = 4
+popup/item_4/text = ""
+popup/item_4/id = -1
+popup/item_4/separator = true
+popup/item_5/text = "Remove"
+popup/item_5/icon = SubResource("ImageTexture_v80gh")
+popup/item_5/id = 0
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png b/addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png
new file mode 100644
index 0000000..d882e81
Binary files /dev/null and b/addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png differ
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png.import b/addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png.import
new file mode 100644
index 0000000..bdca4b3
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bw3ie8wfwa2i2"
+path="res://.godot/imported/add_to_core.png-52def14ca6e499df1e292c93f01c4349.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png"
+dest_files=["res://.godot/imported/add_to_core.png-52def14ca6e499df1e292c93f01c4349.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/images/delete.png b/addons/popochiu/editor/main_dock/popochiu_row/images/delete.png
new file mode 100644
index 0000000..c6fc86e
Binary files /dev/null and b/addons/popochiu/editor/main_dock/popochiu_row/images/delete.png differ
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/images/delete.png.import b/addons/popochiu/editor/main_dock/popochiu_row/images/delete.png.import
new file mode 100644
index 0000000..4364236
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/images/delete.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bahipxbrrss0o"
+path="res://.godot/imported/delete.png-27dd9adc116bbf3fc8b20a99d1331933.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/popochiu/editor/main_dock/popochiu_row/images/delete.png"
+dest_files=["res://.godot/imported/delete.png-27dd9adc116bbf3fc8b20a99d1331933.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/images/open.png b/addons/popochiu/editor/main_dock/popochiu_row/images/open.png
new file mode 100644
index 0000000..aaaf50c
Binary files /dev/null and b/addons/popochiu/editor/main_dock/popochiu_row/images/open.png differ
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/images/open.png.import b/addons/popochiu/editor/main_dock/popochiu_row/images/open.png.import
new file mode 100644
index 0000000..cba1fe8
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/images/open.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://wm7qycjntmfr"
+path="res://.godot/imported/open.png-eb4e739212f91fcaedbead9efc5f731f.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/popochiu/editor/main_dock/popochiu_row/images/open.png"
+dest_files=["res://.godot/imported/open.png-eb4e739212f91fcaedbead9efc5f731f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/character_row/popochiu_character_row.gd b/addons/popochiu/editor/main_dock/popochiu_row/object_row/character_row/popochiu_character_row.gd
new file mode 100644
index 0000000..dc995d7
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/character_row/popochiu_character_row.gd
@@ -0,0 +1,79 @@
+@tool
+extends "res://addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd"
+
+enum CharacterOptions {
+ DELETE = MenuOptions.DELETE,
+ ADD_TO_CORE = Options.ADD_TO_CORE,
+ SET_AS_PC,
+}
+
+const TAG_ICON = preload("res://addons/popochiu/icons/player_character.png")
+const STATE_TEMPLATE = "res://addons/popochiu/engine/templates/character_state_template.gd"
+
+var is_pc := false : set = set_is_pc
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ super()
+
+ # Assign icons
+ tag.texture = TAG_ICON
+
+
+#endregion
+
+#region Virtual ####################################################################################
+func _get_state_template() -> Script:
+ return load(STATE_TEMPLATE)
+
+
+func _clear_tag() -> void:
+ if is_pc:
+ is_pc = false
+
+
+#endregion
+
+#region SetGet #####################################################################################
+func set_is_pc(value: bool) -> void:
+ is_pc = value
+
+ if is_pc:
+ PopochiuEditorHelper.signal_bus.pc_changed.emit(name)
+
+ tag.visible = value
+ menu_popup.set_item_disabled(menu_popup.get_item_index(CharacterOptions.SET_AS_PC), value)
+
+
+#endregion
+
+#region Private ####################################################################################
+func _get_menu_cfg() -> Array:
+ return [
+ {
+ id = CharacterOptions.SET_AS_PC,
+ icon = TAG_ICON,
+ label = "Set as Player-controlled Character (PC)",
+ },
+ ] + super()
+
+
+func _menu_item_pressed(id: int) -> void:
+ match id:
+ CharacterOptions.SET_AS_PC:
+ self.is_pc = true
+ _:
+ super(id)
+
+
+func _remove_from_core() -> void:
+ # Delete the object from Popochiu
+ PopochiuResources.remove_autoload_obj(PopochiuResources.C_SNGL, name)
+ PopochiuResources.erase_data_value("characters", str(name))
+
+ # Continue with the deletion flow
+ super()
+
+
+#endregion
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/character_row/popochiu_character_row.gd.uid b/addons/popochiu/editor/main_dock/popochiu_row/object_row/character_row/popochiu_character_row.gd.uid
new file mode 100644
index 0000000..e42c114
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/character_row/popochiu_character_row.gd.uid
@@ -0,0 +1 @@
+uid://clcrmrvxn4gai
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/dialog_row/popochiu_dialog_row.gd b/addons/popochiu/editor/main_dock/popochiu_row/object_row/dialog_row/popochiu_dialog_row.gd
new file mode 100644
index 0000000..8c79506
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/dialog_row/popochiu_dialog_row.gd
@@ -0,0 +1,15 @@
+@tool
+extends "res://addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd"
+
+
+#region Private ####################################################################################
+func _remove_from_core() -> void:
+ # Delete the object from Popochiu
+ PopochiuResources.remove_autoload_obj(PopochiuResources.D_SNGL, name)
+ PopochiuResources.erase_data_value("dialogs", str(name))
+
+ # Continue with the deletion flow
+ super()
+
+
+#endregion
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/dialog_row/popochiu_dialog_row.gd.uid b/addons/popochiu/editor/main_dock/popochiu_row/object_row/dialog_row/popochiu_dialog_row.gd.uid
new file mode 100644
index 0000000..0674f52
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/dialog_row/popochiu_dialog_row.gd.uid
@@ -0,0 +1 @@
+uid://dxvpjllfksrgf
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/inventory_item_row/popochiu_inventory_item_row.gd b/addons/popochiu/editor/main_dock/popochiu_row/object_row/inventory_item_row/popochiu_inventory_item_row.gd
new file mode 100644
index 0000000..ff4da4d
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/inventory_item_row/popochiu_inventory_item_row.gd
@@ -0,0 +1,78 @@
+@tool
+extends "res://addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd"
+
+enum InventoryItemOptions {
+ DELETE = MenuOptions.DELETE,
+ ADD_TO_CORE = Options.ADD_TO_CORE,
+ START_WITH_IT,
+}
+
+const TAG_ICON = preload("res://addons/popochiu/icons/inventory_item_start.png")
+const STATE_TEMPLATE = "res://addons/popochiu/engine/templates/inventory_item_state_template.gd"
+
+var is_on_start := false : set = set_is_on_start
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ super()
+
+ # Assign icons
+ tag.texture = TAG_ICON
+
+
+#endregion
+
+#region Virtual ####################################################################################
+func _get_state_template() -> Script:
+ return load(STATE_TEMPLATE)
+
+
+#endregion
+
+#region SetGet #####################################################################################
+func set_is_on_start(value: bool) -> void:
+ is_on_start = value
+ tag.visible = value
+
+
+#endregion
+
+#region Private ####################################################################################
+func _get_menu_cfg() -> Array:
+ return [
+ {
+ id = InventoryItemOptions.START_WITH_IT,
+ icon = TAG_ICON,
+ label = "Start with it",
+ },
+ ] + super()
+
+
+func _menu_item_pressed(id: int) -> void:
+ match id:
+ InventoryItemOptions.START_WITH_IT:
+ var items: Array = PopochiuConfig.get_inventory_items_on_start()
+ var script_name := str(name)
+
+ if script_name in items:
+ items.erase(script_name)
+ else:
+ items.append(script_name)
+
+ PopochiuConfig.set_inventory_items_on_start(items)
+
+ self.is_on_start = script_name in items
+ _:
+ super(id)
+
+
+func _remove_from_core() -> void:
+ # Delete the object from Popochiu
+ PopochiuResources.remove_autoload_obj(PopochiuResources.I_SNGL, name)
+ PopochiuResources.erase_data_value("inventory_items", str(name))
+
+ # Continue with the deletion flow
+ super()
+
+
+#endregion
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/inventory_item_row/popochiu_inventory_item_row.gd.uid b/addons/popochiu/editor/main_dock/popochiu_row/object_row/inventory_item_row/popochiu_inventory_item_row.gd.uid
new file mode 100644
index 0000000..61fbeb8
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/inventory_item_row/popochiu_inventory_item_row.gd.uid
@@ -0,0 +1 @@
+uid://dkff7x3cr07ox
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd b/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd
new file mode 100644
index 0000000..37094a1
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd
@@ -0,0 +1,334 @@
+@tool
+extends "res://addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd"
+## Row for the main object types: Room, Character, Inventory item, Dialog
+
+enum Options {
+ DELETE = MenuOptions.DELETE,
+ ADD_TO_CORE,
+}
+
+const DELETE_MESSAGE = "This will remove the [b]%s[/b] object in [b]%s[/b] scene. Uses of this \
+object in scripts will not work anymore. This action cannot be undone. Continue?"
+const DELETE_ASK_MESSAGE = "Do you want to delete the [b]%s[/b] folder too?%s (cannot be reversed)"
+const ADD_TO_CORE_ICON = preload(
+ "res://addons/popochiu/editor/main_dock/popochiu_row/images/add_to_core.png"
+)
+const AUDIO_FILE_TYPES = ["AudioStreamOggVorbis", "AudioStreamMP3", "AudioStreamWAV"]
+
+@onready var btn_open: Button = %BtnOpen
+@onready var btn_script: Button = %BtnScript
+@onready var btn_state: Button = %BtnState
+@onready var btn_state_script: Button = %BtnStateScript
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ # Assign icons
+ btn_open.icon = get_theme_icon("InstanceOptions", "EditorIcons")
+ btn_script.icon = get_theme_icon("Script", "EditorIcons")
+ btn_state.icon = get_theme_icon("Object", "EditorIcons")
+ btn_state_script.icon = get_theme_icon("GDScript", "EditorIcons")
+
+ # Connect to signals and create the options for the menu
+ super()
+
+ # Connect to children's signals
+ btn_open.pressed.connect(_open)
+ btn_script.pressed.connect(_open_script)
+ btn_state.pressed.connect(_edit_state)
+ btn_state_script.pressed.connect(_open_state_script)
+
+ # Disable some options by default
+ var add_to_core_idx := menu_popup.get_item_index(Options.ADD_TO_CORE)
+ if add_to_core_idx >= 0:
+ menu_popup.set_item_disabled(add_to_core_idx, true)
+
+
+#endregion
+
+#region Virtual ####################################################################################
+## Shows a confirmation popup to ask the developer if the Popochiu object should be removed only
+## from the core, or from the file system too.
+func _remove_object() -> void:
+ var location := _get_location()
+
+ # Look into the Object"s folder for audio files and AudioCues to show the developer that those
+ # files will be removed too.
+ var audio_files := _search_audio_files(
+ EditorInterface.get_resource_filesystem().get_filesystem_path(path.get_base_dir())
+ )
+
+ _delete_dialog = PopochiuEditorHelper.DELETE_CONFIRMATION_SCENE.instantiate()
+ _delete_dialog.title = "Remove %s from %s" % [name, location]
+ _delete_dialog.message = DELETE_MESSAGE % [name, location]
+ _delete_dialog.ask = DELETE_ASK_MESSAGE % [
+ path.get_base_dir(),
+ "" if audio_files.is_empty()
+ else " ([b]%d[/b] audio cues will be deleted)" % audio_files.size()
+ ]
+ _delete_dialog.on_confirmed = _remove_from_core
+
+ PopochiuEditorHelper.show_delete_confirmation(_delete_dialog)
+
+
+func _get_state_template() -> Script:
+ return null
+
+
+func _get_location() -> String:
+ return "Popochiu"
+
+
+#endregion
+
+#region Public #####################################################################################
+## Called to make the row appear semitransparent to indicate that the object is in the project
+## (has a folder with files inside) but is not part of the [code]popochiu_data.cfg[/code] file nor
+## its corresponding autoload (e.g., R, C, I, D). This can happen when one removes an object from
+## the project without removing its files, or when adding objects from another project.
+func show_as_not_in_core() -> void:
+ label.modulate.a = 0.5
+ menu_popup.set_item_disabled(menu_popup.get_item_index(Options.ADD_TO_CORE), false)
+
+
+#endregion
+
+#region Private ####################################################################################
+func _get_menu_cfg() -> Array:
+ return [
+ {
+ id = Options.ADD_TO_CORE,
+ icon = ADD_TO_CORE_ICON,
+ label = "Add to Popochiu",
+ types = PopochiuResources.MAIN_TYPES
+ },
+ ] + super()
+
+
+func _menu_item_pressed(id: int) -> void:
+ match id:
+ Options.ADD_TO_CORE:
+ _add_object_to_core()
+ _:
+ super(id)
+
+
+## Add this Object (Room, Character, InventoryItem, Dialog) to popochiu_data.cfg so it can be used
+## by Popochiu.
+func _add_object_to_core() -> void:
+ var target_array := ""
+ var resource: Resource
+
+ if ".tscn" in path:
+ resource = load(path.replace(".tscn", ".tres"))
+ else:
+ resource = load(path)
+
+ match type:
+ PopochiuResources.Types.ROOM:
+ target_array = "rooms"
+ PopochiuResources.Types.CHARACTER:
+ target_array = "characters"
+ PopochiuResources.Types.INVENTORY_ITEM:
+ target_array = "inventory_items"
+ PopochiuResources.Types.DIALOG:
+ target_array = "dialogs"
+
+ if PopochiuEditorHelper.add_resource_to_popochiu(target_array, resource) != OK:
+ PopochiuUtils.print_error("Couldn't add Object [b]%s[/b] to Popochiu." % str(name))
+ return
+
+ # Add the object to its corresponding singleton
+ PopochiuResources.update_autoloads(true)
+
+ label.modulate.a = 1.0
+
+ menu_popup.set_item_disabled(menu_popup.get_item_index(Options.ADD_TO_CORE), true)
+
+
+## Selects the main file of the object in the FileSystem and opens it so that it can be edited.
+func _open() -> void:
+ EditorInterface.select_file(path)
+
+ if ".tres" in path:
+ EditorInterface.edit_resource(load(path))
+ else:
+ EditorInterface.set_main_screen_editor("2D")
+ EditorInterface.open_scene_from_path(path)
+
+ select()
+
+
+func _open_script() -> void:
+ var script_path := path
+
+ if ".tscn" in path:
+ # A room, character, inventory item, or prop
+ script_path = path.replace(".tscn", ".gd")
+ elif ".tres" in path:
+ # A dialog
+ script_path = path.replace(".tres", ".gd")
+ elif not ".gd" in path:
+ return
+
+ EditorInterface.select_file(script_path)
+ EditorInterface.set_main_screen_editor("Script")
+ EditorInterface.edit_script(load(script_path))
+
+ select()
+
+
+func _edit_state() -> void:
+ EditorInterface.select_file(path.replace(".tscn", ".tres"))
+ EditorInterface.edit_resource(load(path.replace(".tscn", ".tres")))
+
+ select()
+
+
+func _open_state_script() -> void:
+ var state := load(path.replace(".tscn", ".tres"))
+
+ EditorInterface.select_file(state.get_script().resource_path)
+ EditorInterface.set_main_screen_editor("Script")
+ EditorInterface.edit_resource(state.get_script())
+
+ select()
+
+
+func _search_audio_files(dir: EditorFileSystemDirectory) -> Array:
+ var files := []
+
+ for idx in dir.get_subdir_count():
+ files.append_array(_search_audio_files(dir.get_subdir(idx)))
+
+ for idx in dir.get_file_count():
+ match dir.get_file_type(idx):
+ AUDIO_FILE_TYPES:
+ files.append(dir.get_file_path(idx))
+
+ return files
+
+
+func _remove_from_core() -> void:
+ # Check if the files should be deleted in the file system
+ if _delete_dialog.check_box.button_pressed:
+ _delete_from_file_system()
+ elif type in PopochiuResources.MAIN_TYPES:
+ show_as_not_in_core()
+
+ var edited_scene: Node = EditorInterface.get_edited_scene_root()
+ if edited_scene and edited_scene.get("script_name") and edited_scene.script_name == name:
+ # If the open scene matches the object being deleted, skip saving the scene
+ queue_free()
+ return
+
+ EditorInterface.save_scene()
+ queue_free()
+
+
+## Remove this object's directory (subfolders included) from the file system.
+func _delete_from_file_system() -> void:
+ var object_dir: EditorFileSystemDirectory = \
+ EditorInterface.get_resource_filesystem().get_filesystem_path(path.get_base_dir())
+
+ # Remove files, sub folders and its files.
+ _recursive_delete(object_dir)
+
+
+## Remove the `dir` directory from the system. For Godot to be able to delete a directory, it has to
+## be empty, so this method first deletes the files from from the directory and each of its
+## subdirectories.
+func _recursive_delete(dir: EditorFileSystemDirectory) -> void:
+ if dir.get_file_count() > 0:
+ assert(
+ _delete_files(dir) == OK,
+ "[Popochiu] Error removing files in recursive elimination of %s" % dir.get_path()
+ )
+
+ if dir.get_subdir_count() > 0:
+ for folder_idx in dir.get_subdir_count():
+ # Check if there are more folders inside the folder or delete the files inside it before
+ # deleting the folder itself
+ _recursive_delete(dir.get_subdir(folder_idx))
+
+ assert(
+ DirAccess.remove_absolute(dir.get_path()) == OK,
+ "[Popochiu] Error removing folder in recursive elimination of %s" % dir.get_path()
+ )
+ EditorInterface.get_resource_filesystem().scan()
+
+
+## Delete files within [param dir] directory. First, get the paths to each file, then delete them
+## one by one calling [method EditorFileSystem.update_file], so that in case it's an imported file,
+## its [b].import[/b] is also deleted.
+func _delete_files(dir: EditorFileSystemDirectory) -> int:
+ # Stores the paths of the files to be deleted.
+ var files_paths := []
+ # Stores the paths of the audio resources to delete
+ var deleted_audios := []
+
+ for file_idx: int in dir.get_file_count():
+ match dir.get_file_type(file_idx):
+ AUDIO_FILE_TYPES:
+ deleted_audios.append(dir.get_file_path(file_idx))
+ "Resource":
+ var resource: Resource = load(dir.get_file_path(file_idx))
+ if not resource is AudioCue:
+ # If the resource is not an AudioCue, then it should be ignored for deletion
+ # in the game data
+ continue
+
+ # Delete the [PopochiuAudioCue] in the project data file and the A singleton
+ assert(
+ _delete_audio_cue_in_data(resource) == true,
+ "[Popochiu] Couldn't remove [b]%s[/b] during deletion of [b]%s[/b]." %
+ [resource.resource_path, dir.get_path()]
+ )
+
+ deleted_audios.append(resource.audio.resource_path)
+
+ files_paths.append(dir.get_file_path(file_idx))
+
+ for fp: String in files_paths:
+ var err: int = DirAccess.remove_absolute(fp)
+ if err != OK:
+ PopochiuUtils.print_error("Couldn't delete file %s. err_code:%d" % [err, fp])
+ return err
+ EditorInterface.get_resource_filesystem().scan()
+
+ # Delete the rows of audio files and the deleted AudioCues in the Audio tab
+ if not deleted_audios.is_empty():
+ PopochiuEditorHelper.signal_bus.audio_cues_deleted.emit(deleted_audios)
+
+ # Remove extra files (like .import)
+ for file_name: String in DirAccess.get_files_at(dir.get_path()):
+ DirAccess.remove_absolute(dir.get_path() + "/" + file_name)
+ EditorInterface.get_resource_filesystem().scan()
+
+ return OK
+
+
+## Looks to which audio group corresponds [param audio_cue] and deletes it both from
+## [code]popochiu_data.cfg[/code] and the [b]A[/b] singleton (which is the one used to allow code
+## autocompletion related to [PopochiuAudioCue]s).
+func _delete_audio_cue_in_data(audio_cue: AudioCue) -> bool:
+ # TODO: This could be improved a lot if each PopochiuAudioCue has a variable to store the group
+ # to which it corresponds to.
+ # Delete the [PopochiuAudioCue] in the popochiu_data.cfg
+ for cue_group in ["mx_cues", "sfx_cues", "vo_cues", "ui_cues"]:
+ var cues: Array = PopochiuResources.get_data_value("audio", cue_group, [])
+ if not cues.has(audio_cue.resource_path): continue
+
+ cues.erase(audio_cue.resource_path)
+ if PopochiuResources.set_data_value("audio", cue_group, cues) != OK:
+ return false
+
+ # Fix #59 : remove the [PopochiuAudioCue] from the [A] singleton
+ PopochiuResources.remove_audio_autoload(
+ cue_group, audio_cue.resource_name, audio_cue.resource_path
+ )
+ break
+ return true
+
+
+#endregion
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd.uid b/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd.uid
new file mode 100644
index 0000000..6c42d34
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd.uid
@@ -0,0 +1 @@
+uid://dj0dw4jcynb3p
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.tscn b/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.tscn
new file mode 100644
index 0000000..df8834a
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.tscn
@@ -0,0 +1,58 @@
+[gd_scene load_steps=5 format=3 uid="uid://dwbo3pl372ugo"]
+
+[ext_resource type="PackedScene" uid="uid://dwtwuqw2hpdpe" path="res://addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.tscn" id="1_xi41g"]
+[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd" id="2_g05pm"]
+
+[sub_resource type="Image" id="Image_15l6n"]
+data = {
+"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
+"format": "RGBA8",
+"height": 16,
+"mipmaps": false,
+"width": 16
+}
+
+[sub_resource type="ImageTexture" id="ImageTexture_12sj2"]
+image = SubResource("Image_15l6n")
+
+[node name="PopochiuMainObjectRow" instance=ExtResource("1_xi41g")]
+script = ExtResource("2_g05pm")
+
+[node name="Label" parent="HBoxContainer" index="0"]
+text = "PopochiuMainObjectRow"
+
+[node name="BtnOpen" type="Button" parent="Panel/ButtonsContainer" index="0"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 4
+size_flags_vertical = 3
+tooltip_text = "Open in Editor"
+icon = SubResource("ImageTexture_12sj2")
+flat = true
+
+[node name="BtnScript" type="Button" parent="Panel/ButtonsContainer" index="1"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 4
+size_flags_vertical = 3
+tooltip_text = "Open in Script"
+icon = SubResource("ImageTexture_12sj2")
+flat = true
+
+[node name="BtnState" type="Button" parent="Panel/ButtonsContainer" index="2"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 4
+size_flags_vertical = 3
+tooltip_text = "Open state"
+icon = SubResource("ImageTexture_12sj2")
+flat = true
+
+[node name="BtnStateScript" type="Button" parent="Panel/ButtonsContainer" index="3"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 4
+size_flags_vertical = 3
+tooltip_text = "Open state Script"
+icon = SubResource("ImageTexture_12sj2")
+flat = true
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.gd b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.gd
new file mode 100644
index 0000000..a4fb663
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.gd
@@ -0,0 +1,60 @@
+@tool
+extends "res://addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd"
+
+const PROP_TEMPLATE = "res://addons/popochiu/engine/templates/prop_template.gd"
+
+var node_path := ""
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ super()
+
+ if not FileAccess.file_exists(path.replace(".tscn", ".gd")):
+ btn_script.hide()
+
+ btn_state.hide()
+ btn_state_script.hide()
+
+
+#endregion
+
+#region Virtual ####################################################################################
+func _get_location() -> String:
+ # Structure of path: "res://game/rooms/room_name/props/prop_name/"
+ # path split: [res:, popochiu, rooms, room_name, props, prop_name]
+ return "Room%s" % (path.split("/", false)[3]).to_pascal_case()
+
+
+#endregion
+
+#region Private ####################################################################################
+func _remove_from_core() -> void:
+ var room_child_to_free: Node = null
+
+ if EditorInterface.get_edited_scene_root() is PopochiuRoom:
+ var opened_room: PopochiuRoom = EditorInterface.get_edited_scene_root()
+ match type:
+ PopochiuResources.Types.PROP:
+ room_child_to_free = opened_room.get_prop(str(name))
+ PopochiuResources.Types.HOTSPOT:
+ room_child_to_free = opened_room.get_hotspot(str(name))
+ PopochiuResources.Types.MARKER:
+ room_child_to_free = opened_room.get_marker(str(name))
+ PopochiuResources.Types.REGION:
+ room_child_to_free = opened_room.get_region(str(name))
+ PopochiuResources.Types.WALKABLE_AREA:
+ room_child_to_free = opened_room.get_walkable_area(str(name))
+
+ # Continue with the deletion flow
+ super()
+
+ # Fix #196: Remove the Node from the Room tree once the folder of the object has been deleted
+ # from the FileSystem (this applies to Props, Hotspots, Walkable areas and Regions).
+ if room_child_to_free:
+ room_child_to_free.queue_free()
+
+ EditorInterface.save_scene()
+
+
+#endregion
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.gd.uid b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.gd.uid
new file mode 100644
index 0000000..5c84703
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.gd.uid
@@ -0,0 +1 @@
+uid://ds4pb624ionfc
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.tscn b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.tscn
new file mode 100644
index 0000000..27d9b80
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.tscn
@@ -0,0 +1,22 @@
+[gd_scene load_steps=5 format=3 uid="uid://baei84pjb3fwj"]
+
+[ext_resource type="PackedScene" uid="uid://dwbo3pl372ugo" path="res://addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.tscn" id="1_yvb3l"]
+[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_row/object_row/room_object_row/popochiu_room_object_row.gd" id="2_ulg85"]
+
+[sub_resource type="Image" id="Image_8gjpm"]
+data = {
+"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
+"format": "RGBA8",
+"height": 16,
+"mipmaps": false,
+"width": 16
+}
+
+[sub_resource type="ImageTexture" id="ImageTexture_4qvg7"]
+image = SubResource("Image_8gjpm")
+
+[node name="PopochiuRoomObjectRow" instance=ExtResource("1_yvb3l")]
+script = ExtResource("2_ulg85")
+
+[node name="BtnMenu" parent="Panel/ButtonsContainer" index="4"]
+popup/item_1/icon = SubResource("ImageTexture_4qvg7")
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.gd b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.gd
new file mode 100644
index 0000000..212c53e
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.gd
@@ -0,0 +1,90 @@
+@tool
+extends "res://addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.gd"
+
+enum RoomOptions {
+ DELETE = MenuOptions.DELETE,
+ ADD_TO_CORE = Options.ADD_TO_CORE,
+ SET_AS_MAIN,
+}
+
+const STATE_TEMPLATE = "res://addons/popochiu/engine/templates/room_state_template.gd"
+
+var is_main := false : set = set_is_main
+
+@onready var btn_play: Button = %BtnPlay
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ super()
+
+ # Assign icons
+ tag.texture = get_theme_icon("Heart", "EditorIcons")
+ btn_play.icon = get_theme_icon("MainPlay", "EditorIcons")
+
+ btn_play.pressed.connect(_play)
+
+
+#endregion
+
+#region Virtual ####################################################################################
+func _get_state_template() -> Script:
+ return load(STATE_TEMPLATE)
+
+
+func _clear_tag() -> void:
+ if is_main:
+ is_main = false
+
+
+#endregion
+
+#region SetGet #####################################################################################
+func set_is_main(value: bool) -> void:
+ is_main = value
+
+ if is_main:
+ # Call this first since the favs will be cleared
+ PopochiuEditorHelper.signal_bus.main_scene_changed.emit(path)
+
+ tag.visible = value
+ menu_popup.set_item_disabled(menu_popup.get_item_index(RoomOptions.SET_AS_MAIN), value)
+
+
+#endregion
+
+#region Private ####################################################################################
+func _get_menu_cfg() -> Array:
+ return [
+ {
+ id = RoomOptions.SET_AS_MAIN,
+ icon = get_theme_icon("Heart", "EditorIcons"),
+ label = "Set as Main scene",
+ },
+ ] + super()
+
+
+func _menu_item_pressed(id: int) -> void:
+ match id:
+ RoomOptions.SET_AS_MAIN:
+ is_main = true
+ _:
+ super(id)
+
+
+## Plays the scene of the clicked row
+func _play() -> void:
+ EditorInterface.select_file(path)
+ EditorInterface.play_custom_scene(path)
+
+
+func _remove_from_core() -> void:
+ # Delete the object from Popochiu
+ PopochiuResources.remove_autoload_obj(PopochiuResources.R_SNGL, name)
+ PopochiuResources.erase_data_value("rooms", str(name))
+
+ # Continue with the deletion flow
+ super()
+
+
+#endregion
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.gd.uid b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.gd.uid
new file mode 100644
index 0000000..ac1547a
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.gd.uid
@@ -0,0 +1 @@
+uid://bbbtge112sbkf
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.tscn b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.tscn
new file mode 100644
index 0000000..2d81629
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.tscn
@@ -0,0 +1,60 @@
+[gd_scene load_steps=5 format=3 uid="uid://w3oki6lv6l7f"]
+
+[ext_resource type="PackedScene" uid="uid://dwbo3pl372ugo" path="res://addons/popochiu/editor/main_dock/popochiu_row/object_row/popochiu_object_row.tscn" id="1_1hv2c"]
+[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_row/object_row/room_row/popochiu_room_row.gd" id="2_s306b"]
+
+[sub_resource type="Image" id="Image_lkrau"]
+data = {
+"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
+"format": "RGBA8",
+"height": 16,
+"mipmaps": false,
+"width": 16
+}
+
+[sub_resource type="ImageTexture" id="ImageTexture_3an75"]
+image = SubResource("Image_lkrau")
+
+[node name="PopochiuRoomRow" instance=ExtResource("1_1hv2c")]
+script = ExtResource("2_s306b")
+
+[node name="Label" parent="HBoxContainer" index="0"]
+text = "PopochiuRoomRow"
+
+[node name="Tag" parent="HBoxContainer" index="1"]
+texture = SubResource("ImageTexture_3an75")
+
+[node name="BtnPlay" type="Button" parent="Panel/ButtonsContainer" index="0"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 4
+size_flags_vertical = 3
+tooltip_text = "Open in Editor"
+icon = SubResource("ImageTexture_3an75")
+flat = true
+
+[node name="BtnOpen" parent="Panel/ButtonsContainer" index="1"]
+icon = SubResource("ImageTexture_3an75")
+
+[node name="BtnScript" parent="Panel/ButtonsContainer" index="2"]
+icon = SubResource("ImageTexture_3an75")
+
+[node name="BtnState" parent="Panel/ButtonsContainer" index="3"]
+icon = SubResource("ImageTexture_3an75")
+
+[node name="BtnStateScript" parent="Panel/ButtonsContainer" index="4"]
+icon = SubResource("ImageTexture_3an75")
+
+[node name="BtnMenu" parent="Panel/ButtonsContainer" index="5"]
+icon = SubResource("ImageTexture_3an75")
+item_count = 3
+popup/item_0/text = "Set as Main scene"
+popup/item_0/icon = SubResource("ImageTexture_3an75")
+popup/item_0/id = 3
+popup/item_1/text = ""
+popup/item_1/id = -1
+popup/item_1/separator = true
+popup/item_2/text = "Remove"
+popup/item_2/icon = SubResource("ImageTexture_3an75")
+popup/item_2/id = 0
+popup/item_2/disabled = true
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd b/addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd
new file mode 100644
index 0000000..7dd064c
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd
@@ -0,0 +1,125 @@
+@tool
+extends HBoxContainer
+## The row that is created for Rooms, Characters, Inventory items, Dialogs, Props, Hotspots, Regions,
+## Walkable areas, and Markers in the dock.
+
+signal clicked(node: HBoxContainer)
+
+enum MenuOptions {
+ SEPARATOR = -1,
+ DELETE,
+}
+
+const SELECTED_FONT_COLOR = Color("706deb")
+const AudioCue = preload("res://addons/popochiu/engine/audio_manager/audio_cue.gd")
+
+var path := ""
+var is_menu_hidden := false
+var type := -1
+
+var _delete_dialog: PopochiuEditorHelper.DeleteConfirmation = null
+
+@onready var label: Label = %Label
+@onready var tag: TextureRect = %Tag
+@onready var btn_menu: MenuButton = %BtnMenu
+@onready var menu_popup: PopupMenu = btn_menu.get_popup()
+@onready var buttons_container: HBoxContainer = %ButtonsContainer
+@onready var dflt_font_color: Color = label.get_theme_color("font_color")
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ label.text = str(name)
+ tooltip_text = path
+
+ # Assign icons
+ btn_menu.icon = get_theme_icon("GuiTabMenuHl", "EditorIcons")
+
+ # Create the context menu based checked the type of Object this row represents
+ _create_menu()
+
+ tag.hide()
+ if is_menu_hidden:
+ btn_menu.hide()
+
+ gui_input.connect(_check_click)
+ menu_popup.id_pressed.connect(_menu_item_pressed)
+
+
+#endregion
+
+#region Virtual ####################################################################################
+func _remove_object() -> void:
+ pass
+
+
+func _clear_tag() -> void:
+ pass
+
+
+#endregion
+
+#region Public #####################################################################################
+func select() -> void:
+ label.add_theme_color_override("font_color", SELECTED_FONT_COLOR)
+ clicked.emit(self)
+
+
+func deselect() -> void:
+ label.add_theme_color_override("font_color", dflt_font_color)
+
+
+func remove_menu_option(opt: int) -> void:
+ menu_popup.remove_item(menu_popup.get_item_index(opt))
+
+
+func add_button(btn: Button) -> void:
+ buttons_container.add_child(btn)
+
+
+func clear_tag() -> void:
+ if tag.visible:
+ tag.visible = false
+ _clear_tag()
+
+
+#endregion
+
+#region Private ####################################################################################
+func _create_menu() -> void:
+ menu_popup.clear()
+
+ for option in _get_menu_cfg():
+ if typeof(option) == TYPE_INT and option == MenuOptions.SEPARATOR:
+ menu_popup.add_separator("", MenuOptions.SEPARATOR)
+ elif not option.has("types") or (option.has("types") and type in option.types):
+ menu_popup.add_icon_item(option.icon, option.label, option.id)
+
+ if menu_popup.item_count == 2:
+ menu_popup.remove_item(menu_popup.get_item_index(MenuOptions.SEPARATOR))
+
+
+func _get_menu_cfg() -> Array:
+ return [
+ MenuOptions.SEPARATOR,
+ {
+ id = MenuOptions.DELETE,
+ icon = get_theme_icon("Remove", "EditorIcons"),
+ label = "Remove"
+ }
+ ]
+
+
+func _check_click(event: InputEvent) -> void:
+ if PopochiuUtils.get_click_or_touch_index(event) == MOUSE_BUTTON_LEFT:
+ EditorInterface.select_file(path)
+ select()
+
+
+func _menu_item_pressed(id: int) -> void:
+ match id:
+ MenuOptions.DELETE:
+ _remove_object()
+
+
+#endregion
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd.uid b/addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd.uid
new file mode 100644
index 0000000..cc74878
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd.uid
@@ -0,0 +1 @@
+uid://d23b7rumebs32
diff --git a/addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.tscn b/addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.tscn
new file mode 100644
index 0000000..7dac7a1
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.tscn
@@ -0,0 +1,76 @@
+[gd_scene load_steps=6 format=3 uid="uid://dwtwuqw2hpdpe"]
+
+[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_row/popochiu_row.gd" id="1_pqknt"]
+
+[sub_resource type="Image" id="Image_87j38"]
+data = {
+"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
+"format": "RGBA8",
+"height": 16,
+"mipmaps": false,
+"width": 16
+}
+
+[sub_resource type="ImageTexture" id="ImageTexture_4qvg7"]
+image = SubResource("Image_87j38")
+
+[sub_resource type="Image" id="Image_hcerf"]
+data = {
+"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
+"format": "RGBA8",
+"height": 16,
+"mipmaps": false,
+"width": 16
+}
+
+[sub_resource type="ImageTexture" id="ImageTexture_jcwkb"]
+image = SubResource("Image_hcerf")
+
+[node name="PopochiuRow" type="HBoxContainer"]
+offset_right = 320.0
+offset_bottom = 40.0
+script = ExtResource("1_pqknt")
+
+[node name="HBoxContainer" type="HBoxContainer" parent="."]
+layout_mode = 2
+size_flags_horizontal = 3
+
+[node name="Label" type="Label" parent="HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_stretch_ratio = 2.0
+text = "PopochiuRow"
+
+[node name="Tag" type="TextureRect" parent="HBoxContainer"]
+unique_name_in_owner = true
+visible = false
+texture_filter = 1
+layout_mode = 2
+size_flags_horizontal = 10
+size_flags_vertical = 4
+tooltip_text = "Main scene"
+texture = SubResource("ImageTexture_4qvg7")
+
+[node name="Panel" type="Panel" parent="."]
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_stretch_ratio = 1.5
+mouse_filter = 1
+
+[node name="ButtonsContainer" type="HBoxContainer" parent="Panel"]
+unique_name_in_owner = true
+layout_mode = 0
+anchor_right = 1.0
+anchor_bottom = 1.0
+alignment = 2
+
+[node name="BtnMenu" type="MenuButton" parent="Panel/ButtonsContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 8
+icon = SubResource("ImageTexture_jcwkb")
+switch_on_hover = true
+item_count = 1
+popup/item_0/text = "Remove"
+popup/item_0/icon = SubResource("ImageTexture_jcwkb")
diff --git a/addons/popochiu/editor/main_dock/tab_audio/tab_audio.gd b/addons/popochiu/editor/main_dock/tab_audio/tab_audio.gd
new file mode 100644
index 0000000..2ddbfb0
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/tab_audio/tab_audio.gd
@@ -0,0 +1,416 @@
+@tool
+extends VBoxContainer
+## Handles the Audio tab in Popochiu's dock.
+
+const SEARCH_PATH = "res://game/"
+const POPOCHIU_AUDIO_ROW_SCENE = preload(
+ "res://addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.tscn"
+)
+const AUDIO_FILE_EXTENSIONS = ["ogg", "mp3", "wav", "opus"]
+const AudioCue = preload("res://addons/popochiu/engine/audio_manager/audio_cue.gd")
+const AudioCueSound = preload("res://addons/popochiu/engine/audio_manager/audio_cue_sound.gd")
+const AudioCueMusic = preload("res://addons/popochiu/engine/audio_manager/audio_cue_music.gd")
+const PopochiuAudioRow = preload(
+ "res://addons/popochiu/editor/main_dock/popochiu_row/audio_row/popochiu_audio_row.gd"
+)
+
+var last_played: Control = null
+var last_selected: Control = null
+
+# Uses the path to an audio file as the key, and the PopochiuAudioRow created for the
+# PopochiuAudioCue linked to that audio file as the value.
+var _audio_files_in_group := {}
+# Uses the path to an audio file as the key, and the PopochiuAudioRow created for that file as the
+# value.
+var _audio_files_to_assign := {}
+var _audio_cues_to_create := []
+var _created_audio_cues := 0
+var _wavs_to_reimport := []
+
+@onready var _asp: AudioStreamPlayer = $AudioStreamPlayer
+@onready var _btn_scan_files: Button = %BtnScanAudioFiles
+@onready var unassigned_group: PopochiuGroup = %UnassignedGroup
+@onready var _groups := {
+ PopochiuResources.AudioTypes.MUSIC : {
+ array = "mx_cues",
+ group = %MusicGroup
+ },
+ PopochiuResources.AudioTypes.SOUND_EFFECT : {
+ array = "sfx_cues",
+ group = %SFXGroup
+ },
+ PopochiuResources.AudioTypes.VOICE : {
+ array = "vo_cues",
+ group = %VoiceGroup
+ },
+ PopochiuResources.AudioTypes.UI : {
+ array = "ui_cues",
+ group = %UIGroup
+ }
+}
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ $PopochiuFilter.groups = _groups
+ _btn_scan_files.icon = get_theme_icon("Search", "EditorIcons")
+
+ # Connect to children's signals
+ _btn_scan_files.pressed.connect(search_audio_files)
+
+ # Connect to helpers' signals
+ PopochiuEditorHelper.signal_bus.audio_cues_deleted.connect(delete_rows)
+
+
+#endregion
+
+#region Public #####################################################################################
+func fill_data() -> void:
+ # Connect to Editor signals
+ EditorInterface.get_resource_filesystem().sources_changed.connect(_on_sources_changed)
+
+ # Look for audio files without AudioCue
+ _put_audio_cues_in_group()
+ search_audio_files()
+
+
+func search_audio_files() -> void:
+ var fs_directory: EditorFileSystemDirectory =\
+ EditorInterface.get_resource_filesystem().get_filesystem_path(SEARCH_PATH)
+
+ if not fs_directory:
+ return
+
+ _read_directory(fs_directory)
+
+ if _audio_cues_to_create.is_empty():
+ return
+
+ var progress_dialog := await PopochiuEditorHelper.show_progress()
+ progress_dialog.label.text = "Creating PopochiuAudioCues..."
+ progress_dialog.progress_bar.max_value = _audio_cues_to_create.size()
+
+ EditorInterface.get_resource_filesystem().sources_changed.disconnect(_on_sources_changed)
+ _created_audio_cues = 0
+ for arr in _audio_cues_to_create:
+ await _create_audio_cue(arr[0], arr[1])
+
+ progress_dialog.progress_bar.value = _created_audio_cues
+
+ _put_audio_cues_in_group()
+ _audio_cues_to_create.clear()
+
+ EditorInterface.get_resource_filesystem().sources_changed.connect(_on_sources_changed)
+ progress_dialog.close()
+
+ # Reimport WAV files so they can be changed to LOOP without the need to manually reimport them
+ if not _wavs_to_reimport.is_empty():
+ await PopochiuEditorHelper.secs_passed(0.1)
+
+ _reimport_wavs()
+
+
+func delete_rows(filepaths: Array) -> void:
+ for filepath in filepaths:
+ if filepath in _audio_files_to_assign:
+ _audio_files_to_assign[filepath].free()
+ _audio_files_to_assign.erase(filepath)
+ elif filepath in _audio_files_in_group:
+ _audio_files_in_group[filepath].free()
+ _audio_files_in_group.erase(filepath)
+
+
+#endregion
+
+#region Private ####################################################################################
+func _on_sources_changed(exist: bool) -> void:
+ # Look popochiu_data.cfg for PopochiuAudioCue files that don't exist in the project anymore
+ await _delete_rows_without_audio_cue()
+ search_audio_files()
+
+
+func _delete_rows_without_audio_cue() -> void:
+ for key: int in _groups:
+ var group: String = _groups[key].array
+ var group_data: Array = PopochiuResources.get_data_value("audio", group, [])
+
+ if group_data.is_empty():
+ continue
+
+
+ group_data = group_data.filter(
+ func (resource_path: String) -> bool:
+ if FileAccess.file_exists(resource_path):
+ return true
+
+ var audio_cue_name: String = resource_path.get_file().get_basename()
+ var popochiu_group: PopochiuGroup = _groups[key].group
+
+ popochiu_group.remove_by_name(audio_cue_name)
+
+ # Fix #59 : remove the AudioCue from the A singleton
+ PopochiuResources.remove_audio_autoload(group, audio_cue_name, resource_path)
+ return false
+ )
+
+ if group_data.is_empty():
+ PopochiuResources.erase_data_value("audio", group)
+ else:
+ group_data.sort_custom(
+ func (a: String, b: String) -> bool:
+ return PopochiuUtils.sort_by_file_name(a, b)
+ )
+ PopochiuResources.set_data_value("audio", group, group_data)
+
+ await get_tree().process_frame
+
+ # Remove freed objects in _audio_files_in_group
+ var to_erase := []
+ for key: String in _audio_files_in_group:
+ if not _audio_files_in_group[key] or not is_instance_valid(_audio_files_in_group[key]):
+ to_erase.append(key)
+
+ for key in to_erase:
+ _audio_files_in_group.erase(key)
+
+
+func _put_audio_cues_in_group() -> void:
+ # Put already loaded (in popochiu_data.cfg) PopochiuAudioCues into their corresponding
+ # PopochiuGroup
+ for key: int in _groups:
+ var group_dic: Dictionary = _groups[key]
+ var group_data: Array = PopochiuResources.get_data_value("audio", group_dic.array, [])
+
+ if group_data.is_empty(): continue
+
+ for resource_path: String in group_data:
+ var ac: AudioCue = load(resource_path)
+
+ if (
+ ac.audio.resource_path in _audio_files_in_group
+ and is_instance_valid(_audio_files_in_group[ac.audio.resource_path])
+ ):
+ # TODO: Check if the resource_path has changed
+ continue
+
+ var ar := _create_audio_cue_row(ac)
+ ar.cue_group = group_dic.array
+ (group_dic.group as PopochiuGroup).add(ar, true)
+
+ _audio_files_in_group[ac.audio.resource_path] = ar
+
+
+func _create_audio_cue_row(audio_cue: AudioCue) -> HBoxContainer:
+ var ar: HBoxContainer = POPOCHIU_AUDIO_ROW_SCENE.instantiate()
+
+ ar.name = audio_cue.resource_name
+ ar.path = audio_cue.resource_path
+ ar.audio_cue = audio_cue
+ ar.audio_tab = self
+ ar.stream_player = _asp
+
+ ar.deleted.connect(_audio_cue_deleted)
+ ar.clicked.connect(_on_row_clicked)
+
+ return ar
+
+
+func _create_audio_file_row(file_path: String) -> void:
+ var ar: HBoxContainer = POPOCHIU_AUDIO_ROW_SCENE.instantiate()
+
+ ar.name = file_path.get_file().get_basename()
+ ar.path = file_path
+ ar.file_name = file_path.get_file()
+ ar.audio_tab = self
+ ar.stream_player = _asp
+
+ ar.group_selected.connect(_create_audio_cue.bind(file_path, ar))
+ ar.clicked.connect(_on_row_clicked)
+
+ unassigned_group.add(ar, true)
+ _audio_files_to_assign[file_path] = ar
+
+
+func _read_directory(dir: EditorFileSystemDirectory) -> void:
+ if not dir: return
+
+ if dir.get_subdir_count():
+ for d in dir.get_subdir_count():
+ # Look out sub directories
+ _read_directory(dir.get_subdir(d))
+
+ # Look out the directory files
+ _read_files(dir)
+ else:
+ _read_files(dir)
+
+
+func _read_files(dir: EditorFileSystemDirectory) -> void:
+ for idx in dir.get_file_count():
+ var file_name = dir.get_file(idx)
+
+ if not file_name.get_extension() in AUDIO_FILE_EXTENSIONS:
+ continue
+
+ if dir.get_file_path(idx) in _audio_files_in_group\
+ or dir.get_file_path(idx) in _audio_files_to_assign:
+ # Don't put in the list an audio file already assigned to a PopochiuAudioCue in
+ # popochiu_data.cfg
+ continue
+
+ # Check if the file prefix matches any of the prefixes defined to automatically assign it to
+ # a group
+ var target := PopochiuResources.AudioTypes.NONE
+ var prefix := file_name.get_slice(PopochiuConfig.get_prefix_character(), 0)
+
+ if prefix in PopochiuConfig.get_music_prefixes():
+ target = PopochiuResources.AudioTypes.MUSIC
+ elif prefix in PopochiuConfig.get_sound_effect_prefixes():
+ target = PopochiuResources.AudioTypes.SOUND_EFFECT
+ elif prefix in PopochiuConfig.get_voice_prefixes():
+ target = PopochiuResources.AudioTypes.VOICE
+ elif prefix in PopochiuConfig.get_ui_prefixes():
+ target = PopochiuResources.AudioTypes.UI
+
+ if target != PopochiuResources.AudioTypes.NONE:
+ _audio_cues_to_create.append([target, dir.get_file_path(idx)])
+ else:
+ # Put the file in the Unassigned group so devs can manually choose the group to which
+ # the audio file should be assigned
+ _create_audio_file_row(dir.get_file_path(idx))
+
+
+func _create_audio_cue(type: int, path: String, audio_row: Container = null) -> void:
+ # Check if the audio file is a WAV file so its LoopMode is set properly
+ var stream: AudioStream = load(path)
+ if stream is AudioStreamWAV:
+ _wavs_to_reimport.append({
+ stream = stream,
+ type = type
+ })
+
+ var cue_name := path.get_file().get_basename()
+ var cue_file_name := cue_name
+ cue_file_name += ".tres"
+
+ # Create the AudioCue and save it in the file system
+ var ac: AudioCue
+ match type:
+ PopochiuResources.AudioTypes.MUSIC:
+ ac = AudioCueMusic.new()
+ ac.loop = true
+ _:
+ ac = AudioCueSound.new()
+
+ ac.audio = stream
+ ac.resource_name = cue_name.to_lower()
+
+ var error: int = ResourceSaver.save(ac, "%s/%s" % [path.get_base_dir(), cue_file_name])
+
+ assert(error == OK, "[Popochiu] Couldn't create PopochiuAudioCue: %s" % cue_file_name)
+
+ var res: AudioCue = load("%s/%s" % [path.get_base_dir(), cue_file_name])
+ var target := ""
+
+ match type:
+ PopochiuResources.AudioTypes.MUSIC:
+ target = "mx_cues"
+ PopochiuResources.AudioTypes.SOUND_EFFECT:
+ target = "sfx_cues"
+ PopochiuResources.AudioTypes.VOICE:
+ target = "vo_cues"
+ PopochiuResources.AudioTypes.UI:
+ target = "ui_cues"
+
+ var target_data: Array = PopochiuResources.get_data_value("audio", target, [])
+
+ if not target_data.has(res.resource_path):
+ target_data.append(res.resource_path)
+ target_data.sort_custom(
+ func (a: String, b: String) -> bool:
+ return PopochiuUtils.sort_by_file_name(a, b)
+ )
+ PopochiuResources.set_data_value("audio", target, target_data)
+ else:
+ await PopochiuEditorHelper.frame_processed()
+ return
+
+ await PopochiuEditorHelper.secs_passed(0.1)
+
+ # Add the AudioCue to the A singleton ----------------------------------------------------------
+ PopochiuResources.update_autoloads(true)
+
+ # Check if the AudioCue was created when assigning the audio file from the "Not assigned" group
+ if is_instance_valid(audio_row):
+ # Delete the file row
+ _audio_files_to_assign.erase(path)
+ audio_row.queue_free()
+
+ # Put the row in its corresponding group
+ _put_audio_cues_in_group()
+ else:
+ _created_audio_cues += 1
+
+
+func _audio_cue_deleted(file_path: String) -> void:
+ _audio_files_in_group.erase(file_path)
+
+
+func _on_row_clicked(row: HBoxContainer) -> void:
+ if is_instance_valid(last_selected):
+ last_selected.deselect()
+
+ last_selected = row
+
+
+## Reimport WAV files so they can be changed to LOOP without the need to manually reimport them.
+func _reimport_wavs() -> void:
+ var streams_to_reimport := _wavs_to_reimport.filter(
+ func (stream_dic: Dictionary):
+ return _change_wav_loop_mode(stream_dic.stream)
+ )
+
+ EditorInterface.get_resource_filesystem().reimport_files(PackedStringArray(
+ streams_to_reimport.map(
+ func (stream_dic: Dictionary) -> String:
+ return stream_dic.stream.resource_path
+ )))
+ await PopochiuEditorHelper.filesystem_scanned()
+
+ for stream_dic: Dictionary in streams_to_reimport:
+ var stream: AudioStreamWAV = stream_dic.stream
+ var type: PopochiuResources.AudioTypes = stream_dic.type
+ stream.loop_mode = (
+ AudioStreamWAV.LOOP_FORWARD if type == PopochiuResources.AudioTypes.MUSIC
+ else AudioStreamWAV.LOOP_DISABLED
+ )
+
+ _wavs_to_reimport.clear()
+
+
+func _change_wav_loop_mode(audio_stream: AudioStreamWAV) -> bool:
+ var import_path := audio_stream.resource_path + ".import"
+
+ if not FileAccess.file_exists(import_path):
+ PopochiuUtils.print_warning(
+ "[b]%s[/b]" % audio_stream.resource_name \
+ + " does not have the correct metadata to loop, please reimport the file" \
+ + " by setting its Loop Mode to Forward."
+ )
+ return false
+
+ var config := ConfigFile.new()
+ var err := config.load(import_path)
+ if err != OK:
+ PopochiuUtils.print_error("Couldn't open %s to change its Loop mode." % audio_stream)
+ return false
+
+ if config.get_value("params", "edit/loop_mode", 0) != 0:
+ return false
+
+ config.set_value("params", "edit/loop_mode", 1 + AudioStreamWAV.LOOP_FORWARD)
+ config.save(import_path)
+ return true
+
+
+#endregion
diff --git a/addons/popochiu/editor/main_dock/tab_audio/tab_audio.gd.uid b/addons/popochiu/editor/main_dock/tab_audio/tab_audio.gd.uid
new file mode 100644
index 0000000..a3995bf
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/tab_audio/tab_audio.gd.uid
@@ -0,0 +1 @@
+uid://dgcylkggyixw0
diff --git a/addons/popochiu/editor/main_dock/tab_audio/tab_audio.tscn b/addons/popochiu/editor/main_dock/tab_audio/tab_audio.tscn
new file mode 100644
index 0000000..d16015c
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/tab_audio/tab_audio.tscn
@@ -0,0 +1,141 @@
+[gd_scene load_steps=15 format=3 uid="uid://bpj8jlet25coy"]
+
+[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/tab_audio/tab_audio.gd" id="1_u4f8v"]
+[ext_resource type="PackedScene" uid="uid://b55ialbvpilxv" path="res://addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.tscn" id="2"]
+[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_filter.gd" id="2_1v1d0"]
+[ext_resource type="Texture2D" uid="uid://d1dnmfkhscb7r" path="res://addons/popochiu/icons/music.png" id="3_uojli"]
+[ext_resource type="Texture2D" uid="uid://cfh1uxtaff0ks" path="res://addons/popochiu/icons/sfx.png" id="4_xdj1c"]
+[ext_resource type="Texture2D" uid="uid://6ewpl4v0td2h" path="res://addons/popochiu/icons/voice.png" id="5_jptq2"]
+[ext_resource type="Texture2D" uid="uid://528j2rksws2c" path="res://addons/popochiu/icons/ui.png" id="6_a24xe"]
+
+[sub_resource type="Image" id="Image_i4bix"]
+data = {
+"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
+"format": "RGBA8",
+"height": 16,
+"mipmaps": false,
+"width": 16
+}
+
+[sub_resource type="ImageTexture" id="ImageTexture_jd5m0"]
+image = SubResource("Image_i4bix")
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_gdosa"]
+content_margin_left = 8.0
+content_margin_right = 8.0
+draw_center = false
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+border_color = Color(0.6, 0.6, 0.6, 1)
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qmbvx"]
+content_margin_left = 8.0
+content_margin_right = 8.0
+draw_center = false
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+border_color = Color(0.6, 0.6, 0.6, 1)
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_4uhm3"]
+content_margin_left = 8.0
+content_margin_right = 8.0
+draw_center = false
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+border_color = Color(0.6, 0.6, 0.6, 1)
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_p4efq"]
+content_margin_left = 8.0
+content_margin_right = 8.0
+draw_center = false
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+border_color = Color(0.6, 0.6, 0.6, 1)
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_j1gb1"]
+content_margin_left = 8.0
+content_margin_right = 8.0
+draw_center = false
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+border_color = Color(0.6, 0.6, 0.6, 1)
+
+[node name="TabAudio" type="VBoxContainer"]
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+script = ExtResource("1_u4f8v")
+
+[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
+
+[node name="BtnScanAudioFiles" type="Button" parent="."]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 8
+text = "Scan audio files"
+icon = SubResource("ImageTexture_jd5m0")
+
+[node name="PopochiuFilter" type="LineEdit" parent="."]
+layout_mode = 2
+placeholder_text = "Filter Popochiu objects"
+clear_button_enabled = true
+right_icon = SubResource("ImageTexture_jd5m0")
+script = ExtResource("2_1v1d0")
+
+[node name="ScrollContainer" type="ScrollContainer" parent="."]
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+
+[node name="VBoxContainer" type="VBoxContainer" parent="ScrollContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+
+[node name="UnassignedGroup" parent="ScrollContainer/VBoxContainer" instance=ExtResource("2")]
+unique_name_in_owner = true
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_gdosa")
+title = "Unassigned"
+can_create = false
+
+[node name="MusicGroup" parent="ScrollContainer/VBoxContainer" instance=ExtResource("2")]
+unique_name_in_owner = true
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_qmbvx")
+icon = ExtResource("3_uojli")
+title = "Music"
+can_create = false
+
+[node name="SFXGroup" parent="ScrollContainer/VBoxContainer" instance=ExtResource("2")]
+unique_name_in_owner = true
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_4uhm3")
+icon = ExtResource("4_xdj1c")
+title = "Sound effects"
+can_create = false
+
+[node name="VoiceGroup" parent="ScrollContainer/VBoxContainer" instance=ExtResource("2")]
+unique_name_in_owner = true
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_p4efq")
+icon = ExtResource("5_jptq2")
+title = "Voices"
+can_create = false
+
+[node name="UIGroup" parent="ScrollContainer/VBoxContainer" instance=ExtResource("2")]
+unique_name_in_owner = true
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_j1gb1")
+icon = ExtResource("6_a24xe")
+title = "Graphic interface"
+can_create = false
diff --git a/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.gd b/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.gd
new file mode 100644
index 0000000..928f2bf
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.gd
@@ -0,0 +1,91 @@
+@tool
+extends AcceptDialog
+
+const POPOCHIU_POPUP_SCENE :=\
+"res://addons/popochiu/engine/objects/gui/components/popups/popochiu_popup.tscn"
+const POPOCHIU_POPUP_SCRIPT :=\
+"res://addons/popochiu/engine/templates/gui/popup_template.gd"
+const POPUPS_FOLDER := "res://game/gui/popups/%s/"
+
+var _popup_id := ""
+var _scene_path := POPUPS_FOLDER + "%s.tscn"
+var _script_path := POPUPS_FOLDER + "%s.gd"
+
+@onready var title_edit: LineEdit = %TitleEdit
+@onready var info: RichTextLabel = %Info
+@onready var dflt_info := info.text
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ # Connect to own signals
+ about_to_popup.connect(_on_about_to_popup)
+
+ # Connect to children's signals
+ title_edit.text_changed.connect(_on_title_changed)
+ get_ok_button().pressed.connect(_create_popup)
+
+ info.hide()
+ hide()
+
+
+#endregion
+
+#region Private ####################################################################################
+func _on_about_to_popup() -> void:
+ title_edit.clear()
+ info.text = dflt_info
+ info.hide()
+
+
+func _on_title_changed(new_text: String) -> void:
+ if new_text.is_empty():
+ info.hide()
+ return
+
+ _popup_id = new_text.to_snake_case()
+
+ info.text = dflt_info.replace("%s", _popup_id)
+ info.show()
+
+
+func _create_popup() -> void:
+ # Create the popups directory inside the graphic interface directory ---------------------------
+ DirAccess.make_dir_recursive_absolute(POPUPS_FOLDER % _popup_id)
+
+ var scene_path := _scene_path.replace("%s", _popup_id)
+ var script_path := _script_path.replace("%s", _popup_id)
+ var pascal_name := _popup_id.to_pascal_case()
+
+ # Create the popup script ----------------------------------------------------------------------
+ DirAccess.copy_absolute(POPOCHIU_POPUP_SCRIPT, script_path)
+
+ # Create the PopochiuPopup scene ---------------------------------------------------------------
+ var popup_instance: PopochiuPopup = load(POPOCHIU_POPUP_SCENE).instantiate()
+ popup_instance.set_script(load(script_path))
+ popup_instance.name = pascal_name + "Popup"
+ popup_instance.script_name = pascal_name
+ popup_instance.title = pascal_name.capitalize()
+
+ var popup_scene: PackedScene = PackedScene.new()
+ popup_scene.pack(popup_instance)
+ if ResourceSaver.save(popup_scene, scene_path) != OK:
+ PopochiuUtils.print_error("Couldn't create popup: %s" % _popup_id)
+ # TODO: Show feedback in the popup
+ return
+
+ # Add the popup to the Popups node in the graphic interface scene ------------------------------
+ var popup_node: PopochiuPopup = load(scene_path).instantiate()
+ var gui_node := EditorInterface.get_edited_scene_root()
+
+ gui_node.get_node("Popups").add_child(popup_node)
+ popup_node.owner = gui_node
+ EditorInterface.save_scene()
+
+ # Open the scene of the created popup for edition ----------------------------------------------
+ await PopochiuEditorHelper.filesystem_scanned()
+
+ EditorInterface.select_file(scene_path)
+ EditorInterface.open_scene_from_path(scene_path)
+
+
+#endregion
diff --git a/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.gd.uid b/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.gd.uid
new file mode 100644
index 0000000..14115a3
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.gd.uid
@@ -0,0 +1 @@
+uid://b6dn0qq3c0iep
diff --git a/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.tscn b/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.tscn
new file mode 100644
index 0000000..bd6278a
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.tscn
@@ -0,0 +1,48 @@
+[gd_scene load_steps=2 format=3 uid="uid://bu77q250wow5g"]
+
+[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.gd" id="1_4ujlk"]
+
+[node name="CreatePopupWindow" type="AcceptDialog"]
+title = "Create Popup"
+size = Vector2i(640, 256)
+popup_window = true
+max_size = Vector2i(1280, 720)
+ok_button_text = "Create"
+script = ExtResource("1_4ujlk")
+
+[node name="VBoxContainer" type="VBoxContainer" parent="."]
+offset_left = 8.0
+offset_top = 8.0
+offset_right = 632.0
+offset_bottom = 207.0
+
+[node name="Label" type="Label" parent="VBoxContainer"]
+layout_mode = 2
+text = "Give a title to your popup."
+
+[node name="TitleEdit" type="LineEdit" parent="VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+expand_to_text_length = true
+context_menu_enabled = false
+clear_button_enabled = true
+
+[node name="PanelContainer" type="PanelContainer" parent="VBoxContainer"]
+layout_mode = 2
+
+[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/PanelContainer"]
+layout_mode = 2
+theme_override_constants/margin_left = 4
+theme_override_constants/margin_top = 4
+theme_override_constants/margin_right = 4
+theme_override_constants/margin_bottom = 4
+
+[node name="Info" type="RichTextLabel" parent="VBoxContainer/PanelContainer/MarginContainer"]
+unique_name_in_owner = true
+visible = false
+layout_mode = 2
+bbcode_enabled = true
+text = "This will create the following files:
+[code]res://popochiu/graphic_interface/popups/%s/%s.tscn
+res://popochiu/graphic_interface/popups/%s/%s.gd[/code]"
+fit_content = true
diff --git a/addons/popochiu/editor/main_dock/tab_gui/tab_gui.gd b/addons/popochiu/editor/main_dock/tab_gui/tab_gui.gd
new file mode 100644
index 0000000..efcc729
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/tab_gui/tab_gui.gd
@@ -0,0 +1,234 @@
+@tool
+extends VBoxContainer
+
+const COMPONENTS_PATH := "res://addons/popochiu/engine/objects/gui/components/"
+
+var _opened_scene: Control = null
+var _components_basedir := []
+var _script_path := PopochiuResources.GUI_GAME_SCENE.replace(".tscn", ".gd")
+var _commands_path := PopochiuResources.GUI_GAME_SCENE.replace(
+ "gui.tscn", "gui_commands.gd"
+)
+var _gui_templates_helper := preload(
+ "res://addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd"
+)
+
+@onready var template_name: Label = %TemplateName
+@onready var btn_script: Button = %BtnScript
+@onready var btn_commands: Button = %BtnCommands
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ btn_script.icon = get_theme_icon("Script", "EditorIcons")
+ btn_commands.icon = get_theme_icon("Script", "EditorIcons")
+
+ # Connect to child signals
+ btn_script.pressed.connect(_on_script_pressed)
+ btn_commands.pressed.connect(_on_commands_pressed)
+ %PopupsGroup.create_clicked.connect(_on_create_popup_clicked)
+
+
+#endregion
+
+#region Public #####################################################################################
+## Called when the selected scene in the Editor 2D changes.
+## This checks if that scene is a PopochiuGraphicInterface to list its components
+## and create the corresponding buttons to add/remove such components.
+func on_scene_changed(gui_node: Node) -> void:
+ if gui_node is PopochiuGraphicInterface:
+ _opened_scene = gui_node
+
+ # FIXME: This override the tab change done by tab_room.gd
+ get_parent().current_tab = get_index()
+
+ _clear_elements()
+ await get_tree().process_frame
+
+ _read_dir(COMPONENTS_PATH)
+ _create_buttons()
+ _find_components(gui_node)
+ _update_groups_titles()
+
+ template_name.text = "Template: %s" % (
+ PopochiuResources.get_data_value("ui", "template", "---") as String
+ ).capitalize()
+
+ _opened_scene.child_exiting_tree.connect(_on_child_removed)
+
+ var popups := _opened_scene.get_node_or_null("Popups")
+ if popups:
+ popups.child_exiting_tree.connect(_on_child_removed)
+ else:
+ if is_instance_valid(_opened_scene):
+ _opened_scene.child_exiting_tree.disconnect(_on_child_removed)
+
+ var popups := _opened_scene.get_node_or_null("Popups")
+ if popups:
+ popups.child_exiting_tree.disconnect(_on_child_removed)
+
+ _opened_scene = null
+
+
+## Opens the graphic interface scene of the game.
+func open_gui_scene() -> void:
+ if is_instance_valid(_opened_scene) and _opened_scene is PopochiuGraphicInterface:
+ return
+
+ var path := PopochiuResources.GUI_GAME_SCENE
+
+ EditorInterface.select_file(path)
+ EditorInterface.set_main_screen_editor("2D")
+ EditorInterface.open_scene_from_path(path)
+
+
+#endregion
+
+#region Private ####################################################################################
+func _on_script_pressed() -> void:
+ EditorInterface.select_file(_script_path)
+ EditorInterface.set_main_screen_editor("Script")
+ EditorInterface.edit_script(load(_script_path))
+
+
+func _on_commands_pressed() -> void:
+ EditorInterface.select_file(_commands_path)
+ EditorInterface.set_main_screen_editor("Script")
+ EditorInterface.edit_script(load(_commands_path))
+
+
+func _on_create_popup_clicked() -> void:
+ $CreatePopupWindow.popup_centered()
+
+
+func _clear_elements() -> void:
+ _components_basedir.clear()
+ for container in [%BaseComponentsGroup, %PopupsGroup]:
+ container.clear_list()
+
+
+## Reads a directory in the project (addons folder) looking for Popochiu GUI
+## components and popups.
+func _read_dir(path: String) -> void:
+ var dir = DirAccess.open(path)
+
+ if not dir:
+ return
+
+ dir.list_dir_begin()
+ var element_name = dir.get_next()
+
+ while element_name != "":
+ if dir.current_is_dir():
+ if element_name == "popups":
+ _read_dir(COMPONENTS_PATH + element_name + "/")
+ else:
+ _components_basedir.append(path + element_name)
+
+ element_name = dir.get_next()
+
+
+## Create the buttons in the tab for GUI components and popups.
+func _create_buttons() -> void:
+ for component_path in _components_basedir:
+ var btn := Button.new()
+ var component_name: String = component_path.split("/")[-1]
+
+ btn.name = component_name
+ btn.text = component_name.capitalize()
+ btn.set_meta("path", component_path)
+ btn.pressed.connect(_add_component.bind(btn))
+
+ if "popups" in component_path:
+ %PopupsGroup.add(btn)
+ else:
+ %BaseComponentsGroup.add(btn)
+
+ set_meta(component_name, btn)
+
+
+## Looks for GUI components and popups in the children of `node`.
+func _find_components(node: Control) -> void:
+ var components := (
+ node.get_tree().get_nodes_in_group("popochiu_gui_component") +
+ node.get_tree().get_nodes_in_group("popochiu_gui_popup")
+ )
+
+ for child: Node in components:
+ var component_name := child.scene_file_path.get_base_dir().split("/")[-1]
+ if has_meta(component_name):
+ (get_meta(component_name) as Button).disabled = true
+
+
+## Updates the title of the base components and popups PopochiuGroups so they
+## show a number representing the amount of elements in the scene.
+func _update_groups_titles() -> void:
+ var disabled_count := 0
+ for btn in %BaseComponentsGroup.get_elements():
+ if btn.disabled:
+ disabled_count += 1
+
+ %BaseComponentsGroup.set_title_count(disabled_count, %BaseComponentsGroup.get_elements().size())
+
+ disabled_count = 0
+ for btn in %PopupsGroup.get_elements():
+ if btn.disabled:
+ disabled_count += 1
+
+ %PopupsGroup.set_title_count(disabled_count, %PopupsGroup.get_elements().size())
+
+
+## Create a copy of the selected component (scenes, resources, scripts) in the
+## game graphic interface folder and adds it to the Graphic Interface scene.
+func _add_component(btn: Button) -> void:
+ btn.disabled = true
+
+ var is_popup: bool = "popups" in btn.get_meta("path")
+ var scene_path := "%s/%s.tscn" % [
+ btn.get_meta("path"),
+ btn.name + "_popup" if is_popup else btn.name
+ ]
+ var target_scene_path := await _gui_templates_helper.copy_component(scene_path)
+
+ if target_scene_path.is_empty():
+ return
+
+ var instance: Control = (
+ load(target_scene_path) as PackedScene
+ ).instantiate(PackedScene.GEN_EDIT_STATE_INSTANCE)
+
+ if is_popup:
+ if not _opened_scene.get_node_or_null("Popups"):
+ var popups_group := Control.new()
+
+ _opened_scene.add_child(popups_group)
+
+ popups_group.name = "Popups"
+ popups_group.owner = _opened_scene
+ popups_group.layout_mode = 1
+ popups_group.anchors_preset = PRESET_FULL_RECT
+ popups_group.mouse_filter = Control.MOUSE_FILTER_IGNORE
+
+ _opened_scene.get_node("Popups").add_child(instance)
+ else:
+ _opened_scene.add_child(instance)
+
+ instance.owner = _opened_scene
+
+ var result: int = EditorInterface.save_scene()
+
+ if result == OK:
+ PopochiuEditorHelper.select_node(instance)
+ else:
+ btn.disabled = false
+
+
+func _on_child_removed(node: CanvasItem) -> void:
+ if not node is Control: return
+
+ var basedir := node.scene_file_path.get_base_dir()
+ if basedir in _components_basedir:
+ (get_meta(basedir.split("/")[-1]) as Button).disabled = false
+
+
+#endregion
diff --git a/addons/popochiu/editor/main_dock/tab_gui/tab_gui.gd.uid b/addons/popochiu/editor/main_dock/tab_gui/tab_gui.gd.uid
new file mode 100644
index 0000000..0c1537e
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/tab_gui/tab_gui.gd.uid
@@ -0,0 +1 @@
+uid://clpbfehnalnts
diff --git a/addons/popochiu/editor/main_dock/tab_gui/tab_gui.tscn b/addons/popochiu/editor/main_dock/tab_gui/tab_gui.tscn
new file mode 100644
index 0000000..4183f13
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/tab_gui/tab_gui.tscn
@@ -0,0 +1,97 @@
+[gd_scene load_steps=8 format=3 uid="uid://4etgd0rwjgct"]
+
+[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/tab_gui/tab_gui.gd" id="1_xmvtx"]
+[ext_resource type="PackedScene" uid="uid://b55ialbvpilxv" path="res://addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.tscn" id="2_uc7il"]
+[ext_resource type="PackedScene" uid="uid://bu77q250wow5g" path="res://addons/popochiu/editor/main_dock/tab_gui/create_popup_window/create_popup_window.tscn" id="3_3a7ix"]
+
+[sub_resource type="Image" id="Image_j7yy0"]
+data = {
+"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
+"format": "RGBA8",
+"height": 16,
+"mipmaps": false,
+"width": 16
+}
+
+[sub_resource type="ImageTexture" id="ImageTexture_ddg1g"]
+image = SubResource("Image_j7yy0")
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_73bc0"]
+content_margin_left = 8.0
+content_margin_right = 8.0
+draw_center = false
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+border_color = Color(0.6, 0.6, 0.6, 1)
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_674al"]
+content_margin_left = 8.0
+content_margin_right = 8.0
+draw_center = false
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+border_color = Color(0.6, 0.6, 0.6, 1)
+
+[node name="UI" type="VBoxContainer"]
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+script = ExtResource("1_xmvtx")
+
+[node name="Header" type="VBoxContainer" parent="."]
+layout_mode = 2
+alignment = 1
+
+[node name="TemplateName" type="Label" parent="Header"]
+unique_name_in_owner = true
+layout_mode = 2
+text = "Template: Custom"
+horizontal_alignment = 1
+
+[node name="HBoxContainer" type="HBoxContainer" parent="Header"]
+layout_mode = 2
+size_flags_horizontal = 4
+
+[node name="BtnScript" type="Button" parent="Header/HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+text = "Script"
+icon = SubResource("ImageTexture_ddg1g")
+
+[node name="BtnCommands" type="Button" parent="Header/HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+text = "Commands"
+icon = SubResource("ImageTexture_ddg1g")
+
+[node name="ScrollContainer" type="ScrollContainer" parent="."]
+layout_mode = 2
+size_flags_vertical = 3
+
+[node name="VBoxContainer" type="VBoxContainer" parent="ScrollContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+
+[node name="BaseComponentsGroup" parent="ScrollContainer/VBoxContainer" instance=ExtResource("2_uc7il")]
+unique_name_in_owner = true
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_73bc0")
+title = "Base components"
+can_create = false
+custom_title_count = true
+
+[node name="PopupsGroup" parent="ScrollContainer/VBoxContainer" instance=ExtResource("2_uc7il")]
+unique_name_in_owner = true
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_674al")
+title = "Popups"
+create_text = "Create popup"
+custom_title_count = true
+
+[node name="CreatePopupWindow" parent="." instance=ExtResource("3_3a7ix")]
diff --git a/addons/popochiu/editor/main_dock/tab_main/tab_main.gd b/addons/popochiu/editor/main_dock/tab_main/tab_main.gd
new file mode 100644
index 0000000..dfd8e3f
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/tab_main/tab_main.gd
@@ -0,0 +1,208 @@
+@tool
+extends VBoxContainer
+## Acts like a HUD for working with Popochiu objects: Rooms, Characters, Inventory items, and Dialog
+## trees.
+
+const OBJECT_ROW_FOLDER = "res://addons/popochiu/editor/main_dock/popochiu_row/object_row/"
+const POPOCHIU_OBJECT_ROW_SCENE = preload(OBJECT_ROW_FOLDER + "popochiu_object_row.tscn")
+const POPOCHIU_ROOM_ROW_SCENE = preload(OBJECT_ROW_FOLDER + "room_row/popochiu_room_row.tscn")
+const PopochiuObjectRow := preload(OBJECT_ROW_FOLDER + "popochiu_object_row.gd")
+const PopochiuCharacterRow = preload(OBJECT_ROW_FOLDER + "character_row/popochiu_character_row.gd")
+const PopochiuInventoryItemRow = preload(
+ OBJECT_ROW_FOLDER + "inventory_item_row/popochiu_inventory_item_row.gd"
+)
+const PopochiuDialogRow = preload(OBJECT_ROW_FOLDER + "dialog_row/popochiu_dialog_row.gd")
+
+var last_selected: PopochiuObjectRow = null
+
+var _rows_paths := []
+var _has_data := false
+
+@onready var _types := {
+ PopochiuResources.Types.ROOM: {
+ path = PopochiuResources.ROOMS_PATH,
+ group = find_child("RoomsGroup"),
+ popup = PopochiuEditorHelper.CREATE_ROOM,
+ scene = PopochiuResources.ROOMS_PATH.path_join("%s/room_%s.tscn")
+ },
+ PopochiuResources.Types.CHARACTER: {
+ path = PopochiuResources.CHARACTERS_PATH,
+ group = find_child("CharactersGroup"),
+ popup = PopochiuEditorHelper.CREATE_CHARACTER,
+ scene = PopochiuResources.CHARACTERS_PATH.path_join("%s/character_%s.tscn")
+ },
+ PopochiuResources.Types.INVENTORY_ITEM: {
+ path = PopochiuResources.INVENTORY_ITEMS_PATH,
+ group = find_child("ItemsGroup"),
+ popup = PopochiuEditorHelper.CREATE_INVENTORY_ITEM,
+ scene = PopochiuResources.INVENTORY_ITEMS_PATH.path_join("%s/inventory_item_%s.tscn")
+ },
+ PopochiuResources.Types.DIALOG: {
+ path = PopochiuResources.DIALOGS_PATH,
+ group = find_child("DialogsGroup"),
+ popup = PopochiuEditorHelper.CREATE_DIALOG,
+ scene = PopochiuResources.DIALOGS_PATH.path_join("%s/dialog_%s.tres")
+ }
+}
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ $PopochiuFilter.groups = _types
+
+ for t in _types.values():
+ t.group.create_clicked.connect(PopochiuEditorHelper.show_creation_popup.bind(t.popup))
+
+ # Connect to helper signals
+ PopochiuEditorHelper.signal_bus.main_scene_changed.connect(_set_main_scene)
+ PopochiuEditorHelper.signal_bus.pc_changed.connect(_set_pc)
+ PopochiuEditorHelper.signal_bus.main_object_added.connect(_add_to_list)
+
+
+#endregion
+
+#region Public #####################################################################################
+func fill_data() -> void:
+ # Search the FileSystem for Rooms, Characters, InventoryItems and Dialogs
+ for type_key: int in _types:
+ var resources := Array(DirAccess.get_directories_at(_types[type_key].path)).map(
+ _get_popochiu_objects_resources.bind(type_key)
+ )
+
+ for resource: Resource in resources:
+ _create_row(type_key, resource)
+
+
+func check_data() -> void:
+ if not _has_data:
+ # Try to load the Main tab data in case they couldn't be loaded while
+ # opening the engine
+ fill_data()
+
+
+#endregion
+
+#region Private ####################################################################################
+func _set_main_scene(path: String) -> void:
+ ProjectSettings.set_setting(PopochiuResources.MAIN_SCENE, path)
+ assert(
+ ProjectSettings.save() == OK,
+ "[Popochiu] Couldn't set %s as the Main Scene in Project Settings" % path
+ )
+ _types[PopochiuResources.Types.ROOM].group.clear_favs()
+
+
+func _set_pc(script_name: String) -> void:
+ if PopochiuResources.get_data_value("setup", "pc", "") == script_name:
+ return
+
+ assert(
+ PopochiuResources.set_data_value("setup", "pc", script_name) == OK,
+ "[Popochiu] Couldn't set %s as the Player-controlled Character (PC)" % script_name
+ )
+
+ var characters_group: PopochiuGroup = _types[PopochiuResources.Types.CHARACTER].group
+ characters_group.clear_favs()
+ (characters_group.get_by_name(script_name) as PopochiuCharacterRow).is_pc = true
+
+
+func _add_to_list(type: int, name_to_add: String) -> PopochiuObjectRow:
+ var row := _create_object_row(type, name_to_add)
+ _types[type].group.add(row)
+ return row
+
+
+func _get_popochiu_objects_resources(
+ dir_name: String, type_key: PopochiuResources.Types
+) -> Resource:
+ var resource_filesystem := EditorInterface.get_resource_filesystem()
+ var dir_path := (_types[type_key].path as String).path_join(dir_name)
+
+ for file_name: String in DirAccess.get_files_at(dir_path):
+ if file_name.get_extension() != "tres": continue
+
+ var resource: Resource = load(dir_path.path_join(file_name))
+ if (
+ resource is PopochiuRoomData
+ or resource is PopochiuCharacterData
+ or resource is PopochiuInventoryItemData
+ or resource is PopochiuDialog
+ ):
+ return resource
+
+ PopochiuUtils.print_error("No data file (.tres) found for [b]%s[/b]" % dir_path)
+ return null
+
+
+func _create_row(type_key: int, resource: Resource) -> void:
+ if _types[type_key].scene.replace("%s", resource.resource_name) in _rows_paths: return
+
+ var row: PopochiuObjectRow = _create_object_row(type_key, resource.script_name)
+ _types[type_key].group.add(row)
+
+ # Check if the object in the list is in its corresponding array in Popochiu (Popochiu.tscn)
+ var is_in_core := true
+ var has_state_script: bool = FileAccess.file_exists(row.path.replace(".tscn", "_state.gd"))
+
+ match type_key:
+ PopochiuResources.Types.ROOM:
+ is_in_core = PopochiuResources.has_data_value("rooms", resource.script_name)
+
+ # Check if the room is the main scene
+ var main_scene: String = ProjectSettings.get_setting(PopochiuResources.MAIN_SCENE)
+
+ if main_scene == resource.scene:
+ row.is_main = true
+ PopochiuResources.Types.CHARACTER:
+ is_in_core = PopochiuResources.has_data_value("characters", resource.script_name)
+
+ if resource.script_name == PopochiuResources.get_data_value("setup", "pc", ""):
+ row.is_pc = true
+ PopochiuResources.Types.INVENTORY_ITEM:
+ is_in_core = PopochiuResources.has_data_value("inventory_items", resource.script_name)
+
+ var items: Array = PopochiuConfig.get_inventory_items_on_start()
+
+ if resource.script_name in items:
+ row.is_on_start = true
+ PopochiuResources.Types.DIALOG:
+ is_in_core = PopochiuResources.has_data_value("dialogs", resource.script_name)
+
+ if not is_in_core:
+ row.show_as_not_in_core()
+
+
+func _create_object_row(type: int, name_to_add: String) -> PopochiuObjectRow:
+ var new_obj: PopochiuObjectRow = null
+
+ match type:
+ PopochiuResources.Types.ROOM:
+ new_obj = POPOCHIU_ROOM_ROW_SCENE.instantiate()
+ PopochiuResources.Types.CHARACTER:
+ new_obj = POPOCHIU_OBJECT_ROW_SCENE.instantiate()
+ new_obj.set_script(PopochiuCharacterRow)
+ PopochiuResources.Types.INVENTORY_ITEM:
+ new_obj = POPOCHIU_OBJECT_ROW_SCENE.instantiate()
+ new_obj.set_script(PopochiuInventoryItemRow)
+ PopochiuResources.Types.DIALOG:
+ new_obj = POPOCHIU_OBJECT_ROW_SCENE.instantiate()
+ new_obj.set_script(PopochiuDialogRow)
+
+ new_obj.name = name_to_add
+ new_obj.type = type
+ new_obj.path = _types[type].scene.replace("%s", name_to_add.to_snake_case())
+ new_obj.clicked.connect(_select_object)
+
+ _rows_paths.append(new_obj.path)
+ _has_data = true
+
+ return new_obj
+
+
+func _select_object(por: PopochiuObjectRow) -> void:
+ if last_selected and last_selected != por:
+ last_selected.deselect()
+
+ last_selected = por
+
+
+#endregion
diff --git a/addons/popochiu/editor/main_dock/tab_main/tab_main.gd.uid b/addons/popochiu/editor/main_dock/tab_main/tab_main.gd.uid
new file mode 100644
index 0000000..34c25ae
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/tab_main/tab_main.gd.uid
@@ -0,0 +1 @@
+uid://c008gxppd3akf
diff --git a/addons/popochiu/editor/main_dock/tab_main/tab_main.tscn b/addons/popochiu/editor/main_dock/tab_main/tab_main.tscn
new file mode 100644
index 0000000..fa7e1c4
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/tab_main/tab_main.tscn
@@ -0,0 +1,118 @@
+[gd_scene load_steps=14 format=3 uid="uid://bynwdds8o3tcx"]
+
+[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_filter.gd" id="1_akrwb"]
+[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/tab_main/tab_main.gd" id="1_jdtyo"]
+[ext_resource type="PackedScene" uid="uid://b55ialbvpilxv" path="res://addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.tscn" id="2_71uuj"]
+[ext_resource type="Texture2D" uid="uid://cec7vj2roo7ef" path="res://addons/popochiu/icons/room.png" id="3_v0n5j"]
+[ext_resource type="Texture2D" uid="uid://mir6j58lju3l" path="res://addons/popochiu/icons/character.png" id="4_q3ysu"]
+[ext_resource type="Texture2D" uid="uid://dxtuplm5v6w33" path="res://addons/popochiu/icons/inventory_item.png" id="5_h6p8m"]
+[ext_resource type="Texture2D" uid="uid://bb53j2q1cm45l" path="res://addons/popochiu/icons/dialog.png" id="6_y67sq"]
+
+[sub_resource type="Image" id="Image_vdhps"]
+data = {
+"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
+"format": "RGBA8",
+"height": 16,
+"mipmaps": false,
+"width": 16
+}
+
+[sub_resource type="ImageTexture" id="ImageTexture_c80ss"]
+image = SubResource("Image_vdhps")
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_q8xlx"]
+content_margin_left = 8.0
+content_margin_right = 8.0
+draw_center = false
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+border_color = Color(0.439216, 0.427451, 0.921569, 0.74902)
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_r2ioy"]
+content_margin_left = 8.0
+content_margin_right = 8.0
+draw_center = false
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+border_color = Color(0.556863, 0.313726, 0.160784, 0.74902)
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_odbd1"]
+content_margin_left = 8.0
+content_margin_right = 8.0
+draw_center = false
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+border_color = Color(0.337255, 0.67451, 0.301961, 0.74902)
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wku8y"]
+content_margin_left = 8.0
+content_margin_right = 8.0
+draw_center = false
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+border_color = Color(0.556863, 0.235294, 0.592157, 0.74902)
+
+[node name="Main" type="VBoxContainer"]
+size_flags_horizontal = 3
+size_flags_vertical = 3
+focus_mode = 2
+script = ExtResource("1_jdtyo")
+metadata/_tab_index = 0
+
+[node name="PopochiuFilter" type="LineEdit" parent="."]
+layout_mode = 2
+placeholder_text = "Filter Popochiu objects"
+clear_button_enabled = true
+right_icon = SubResource("ImageTexture_c80ss")
+script = ExtResource("1_akrwb")
+
+[node name="MainScrollContainer" type="ScrollContainer" parent="."]
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+follow_focus = true
+
+[node name="VBoxContainer" type="VBoxContainer" parent="MainScrollContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+
+[node name="RoomsGroup" parent="MainScrollContainer/VBoxContainer" instance=ExtResource("2_71uuj")]
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_q8xlx")
+icon = ExtResource("3_v0n5j")
+color = Color(0.439216, 0.427451, 0.921569, 0.74902)
+title = "Rooms"
+create_text = "Create room"
+
+[node name="CharactersGroup" parent="MainScrollContainer/VBoxContainer" instance=ExtResource("2_71uuj")]
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_r2ioy")
+icon = ExtResource("4_q3ysu")
+color = Color(0.556863, 0.313726, 0.160784, 0.74902)
+title = "Characters"
+create_text = "Create character"
+
+[node name="ItemsGroup" parent="MainScrollContainer/VBoxContainer" instance=ExtResource("2_71uuj")]
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_odbd1")
+icon = ExtResource("5_h6p8m")
+color = Color(0.337255, 0.67451, 0.301961, 0.74902)
+title = "Inventory items"
+create_text = "Create inventory item"
+
+[node name="DialogsGroup" parent="MainScrollContainer/VBoxContainer" instance=ExtResource("2_71uuj")]
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_wku8y")
+icon = ExtResource("6_y67sq")
+color = Color(0.556863, 0.235294, 0.592157, 0.74902)
+title = "Dialog trees"
+create_text = "Create dialog tree"
diff --git a/addons/popochiu/editor/main_dock/tab_room/tab_room.gd b/addons/popochiu/editor/main_dock/tab_room/tab_room.gd
new file mode 100644
index 0000000..2d73ddd
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/tab_room/tab_room.gd
@@ -0,0 +1,405 @@
+@tool
+extends VBoxContainer
+## Handles the Room tab in Popochiu's dock
+
+const OBJECT_ROW_FOLDER = "res://addons/popochiu/editor/main_dock/popochiu_row/object_row/"
+const POPOCHIU_OBJECT_ROW_SCENE = preload(OBJECT_ROW_FOLDER + "popochiu_object_row.tscn")
+const PopochiuRoomObjectRow = preload(
+ "res://addons/popochiu/editor/main_dock/popochiu_row/object_row/" +
+ "room_object_row/popochiu_room_object_row.gd"
+)
+
+var opened_room: PopochiuRoom = null
+var opened_room_state_path: String = ""
+
+var _rows_paths := []
+var _last_selected: PopochiuRoomObjectRow = null
+var _characters_in_room := []
+var _btn_add_character: MenuButton
+var _delete_dialog: PopochiuEditorHelper.DeleteConfirmation
+
+@onready var _types: Dictionary = {
+ PopochiuResources.Types.PROP: {
+ group = %PropsGroup as PopochiuGroup,
+ popup = PopochiuEditorHelper.CREATE_PROP,
+ method = "get_props",
+ type_class = PopochiuProp,
+ parent = "Props"
+ },
+ PopochiuResources.Types.HOTSPOT: {
+ group = %HotspotsGroup as PopochiuGroup,
+ popup = PopochiuEditorHelper.CREATE_HOTSPOT,
+ method = "get_hotspots",
+ type_class = PopochiuHotspot,
+ parent = "Hotspots"
+ },
+ PopochiuResources.Types.REGION: {
+ group = %RegionsGroup as PopochiuGroup,
+ popup = PopochiuEditorHelper.CREATE_REGION,
+ method = "get_regions",
+ type_class = PopochiuRegion,
+ parent = "Regions"
+ },
+ PopochiuResources.Types.MARKER: {
+ group = %MarkersGroup as PopochiuGroup,
+ popup = PopochiuEditorHelper.CREATE_MARKER,
+ method = "get_markers",
+ type_class = Marker2D,
+ parent = "Markers"
+ },
+ PopochiuResources.Types.WALKABLE_AREA: {
+ group = %WalkableAreasGroup as PopochiuGroup,
+ popup = PopochiuEditorHelper.CREATE_WALKABLE_AREA,
+ method = "get_walkable_areas",
+ type_class = PopochiuWalkableArea,
+ parent = "WalkableAreas"
+ },
+ PopochiuResources.Types.CHARACTER: {
+ group = %CharactersGroup as PopochiuGroup,
+ method = "get_characters",
+ type_class = PopochiuCharacter,
+ parent = "Characters"
+ }
+}
+@onready var popochiu_filter: LineEdit = %PopochiuFilter
+@onready var room_name: Button = %RoomName
+@onready var no_room_info: Label = %NoRoomInfo
+@onready var tool_buttons: HBoxContainer = %ToolButtons
+@onready var btn_script: Button = %BtnScript
+@onready var btn_resource: Button = %BtnResource
+@onready var btn_resource_script: Button = %BtnResourceScript
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ popochiu_filter.groups = _types
+
+ # Setup the button that will allow to add characters to the room
+ _btn_add_character = MenuButton.new()
+ _btn_add_character.text = "Add character to room"
+ _btn_add_character.icon = get_theme_icon("Add", "EditorIcons")
+ _btn_add_character.flat = false
+ _btn_add_character.size_flags_horizontal = SIZE_SHRINK_END
+
+ _btn_add_character.add_theme_stylebox_override("normal", get_theme_stylebox("normal", "Button"))
+ _btn_add_character.add_theme_stylebox_override("hover", get_theme_stylebox("hover", "Button"))
+ _btn_add_character.add_theme_stylebox_override(
+ "pressed", get_theme_stylebox("pressed", "Button")
+ )
+
+ _btn_add_character.about_to_popup.connect(_on_add_character_pressed)
+
+ _types[PopochiuResources.Types.CHARACTER].group.add_header_button(_btn_add_character)
+
+ # Disable all buttons by default until a PopochiuRoom is opened in the editor
+ room_name.hide()
+ popochiu_filter.hide()
+ no_room_info.show()
+ tool_buttons.hide()
+
+ btn_script.icon = get_theme_icon("Script", "EditorIcons")
+ btn_resource.icon = get_theme_icon("Object", "EditorIcons")
+ btn_resource_script.icon = get_theme_icon("GDScript", "EditorIcons")
+
+ room_name.pressed.connect(_select_file)
+ btn_script.pressed.connect(_open_script)
+ btn_resource.pressed.connect(_edit_resource)
+ btn_resource_script.pressed.connect(_open_resource_script)
+
+ for t in _types.values():
+ t.group.disable_create()
+
+ if t.has("popup"):
+ t.group.create_clicked.connect(PopochiuEditorHelper.show_creation_popup.bind(t.popup))
+
+
+#endregion
+
+#region Public #####################################################################################
+func scene_changed(scene_root: Node) -> void:
+ # Set the default tab state
+ if is_instance_valid(opened_room):
+ await _clear_content()
+
+ if not scene_root is PopochiuRoom:
+ return
+
+ if scene_root is PopochiuRoom and scene_root.script_name.is_empty():
+ PopochiuUtils.print_error("This room doesn't have a [code]script_name[/code] value!")
+ return
+
+ if opened_room == scene_root:
+ return
+
+ # Updated the opened room's info
+ opened_room = scene_root
+ opened_room_state_path = PopochiuResources.get_data_value(
+ "rooms", opened_room.script_name, ""
+ )
+
+ if not PopochiuEditorHelper.undo_redo.history_changed.is_connected(_check_undoredo_history):
+ PopochiuEditorHelper.undo_redo.history_changed.connect(_check_undoredo_history)
+
+ room_name.text = opened_room.script_name
+
+ room_name.show()
+ tool_buttons.show()
+ popochiu_filter.show()
+ _btn_add_character.disabled = false
+
+ # Fill info of Props, Hotspots, Walkable areas, Regions and Points
+ for type_id in _types:
+ for child in opened_room.call(_types[type_id].method):
+ _create_row_in_dock(type_id, child)
+
+ _types[type_id].group.enable_create()
+
+ # Listen to node additions/deletions in container nodes
+ var container: Node2D = opened_room.get_node(_types[type_id].parent)
+
+ container.child_entered_tree.connect(_on_child_added.bind(type_id))
+ container.child_exiting_tree.connect(_on_child_removed.bind(type_id))
+
+ no_room_info.hide()
+ get_parent().current_tab = 1
+
+
+func scene_closed(filepath: String) -> void:
+ if is_instance_valid(opened_room) and opened_room.scene_file_path == filepath:
+ _clear_content()
+
+
+#endregion
+
+#region Private ####################################################################################
+func _clear_content() -> void:
+ for type_id in _types:
+ var container: Node2D = opened_room.get_node(_types[type_id].parent)
+
+ if container.child_entered_tree.is_connected(_on_child_added):
+ container.child_entered_tree.disconnect(_on_child_added)
+
+ if container.child_exiting_tree.is_connected(_on_child_removed):
+ container.child_exiting_tree.disconnect(_on_child_removed)
+
+ if PopochiuEditorHelper.undo_redo.history_changed.is_connected(_check_undoredo_history):
+ PopochiuEditorHelper.undo_redo.history_changed.disconnect(_check_undoredo_history)
+
+ opened_room = null
+ opened_room_state_path = ""
+
+ _characters_in_room.clear()
+ _rows_paths.clear()
+ room_name.hide()
+ tool_buttons.hide()
+ popochiu_filter.hide()
+ no_room_info.show()
+
+ if is_instance_valid(_last_selected):
+ _last_selected.deselect()
+ _last_selected = null
+
+ for t: Dictionary in _types.values():
+ t.group.clear_list()
+ t.group.disable_create()
+
+ _btn_add_character.disabled = true
+ await get_tree().process_frame
+
+
+func _create_object_row(
+ type: int, node_name: String, path := "", node_path := ""
+) -> PopochiuRoomObjectRow:
+ var object_row_instance := POPOCHIU_OBJECT_ROW_SCENE.instantiate()
+ object_row_instance.set_script(PopochiuRoomObjectRow)
+ var new_obj: PopochiuRoomObjectRow = object_row_instance
+
+ new_obj.name = node_name
+ new_obj.type = type
+ new_obj.path = path
+ new_obj.node_path = node_path
+ new_obj.clicked.connect(_select_in_tree)
+
+ _rows_paths.append("%s/%d/%s" % [opened_room.script_name, type, node_name])
+
+ return new_obj
+
+
+func _select_in_tree(por: PopochiuRoomObjectRow) -> void:
+ if _last_selected and _last_selected != por:
+ _last_selected.deselect()
+
+ if is_instance_valid(opened_room):
+ var node := opened_room.get_node("%s/%s" % [_types[por.type].parent, por.node_path])
+ PopochiuEditorHelper.select_node(node)
+
+ _last_selected = por
+
+
+func _select_file() -> void:
+ EditorInterface.select_file(opened_room.scene_file_path)
+
+
+func _open_script() -> void:
+ EditorInterface.select_file(opened_room.get_script().resource_path)
+ EditorInterface.set_main_screen_editor("Script")
+ EditorInterface.edit_script(opened_room.get_script())
+
+
+func _edit_resource() -> void:
+ EditorInterface.select_file(opened_room_state_path)
+ EditorInterface.edit_resource(load(opened_room_state_path))
+
+
+func _open_resource_script() -> void:
+ var prd: PopochiuRoomData = load(opened_room_state_path)
+ EditorInterface.select_file(prd.get_script().resource_path)
+ EditorInterface.set_main_screen_editor("Script")
+ EditorInterface.edit_resource(prd.get_script())
+
+
+# Removes the character from the room
+func _on_remove_character_pressed(row: PopochiuRoomObjectRow) -> void:
+ _delete_dialog = PopochiuEditorHelper.DELETE_CONFIRMATION_SCENE.instantiate()
+ _delete_dialog.title = "Remove character in room"
+ _delete_dialog.message = "Are you sure you want to remove [b]%s[/b] from this room?" % row.name
+ _delete_dialog.on_confirmed = _on_remove_character_confirmed.bind(row)
+
+ PopochiuEditorHelper.show_delete_confirmation(_delete_dialog)
+
+
+func _on_remove_character_confirmed(row: PopochiuRoomObjectRow) -> void:
+ _characters_in_room.erase(str(row.name))
+ opened_room.get_node("Characters").get_node("Character%s *" % row.name).queue_free()
+ row.queue_free()
+ EditorInterface.save_scene()
+
+
+# Fills the list to show after pressing "+ Add character to room" and listens to selections to add
+# the clicked character to the room
+func _on_add_character_pressed() -> void:
+ var characters_menu := _btn_add_character.get_popup()
+ characters_menu.clear()
+
+ var idx := 0
+ for key in PopochiuResources.get_section_keys("characters"):
+ characters_menu.add_item(key, idx)
+ characters_menu.set_item_disabled(idx, _characters_in_room.has(key))
+
+ idx += 1
+
+ if not characters_menu.id_pressed.is_connected(_on_character_selected):
+ characters_menu.id_pressed.connect(_on_character_selected)
+
+
+# Adds the clicked character in the "+ Add character to room" menu to the
+# current room
+func _on_character_selected(id: int) -> void:
+ var characters_menu := _btn_add_character.get_popup()
+ var char_name := characters_menu.get_item_text(
+ characters_menu.get_item_index(id)
+ )
+ var instance: PopochiuCharacter = (load(
+ "res://game/characters/%s/character_%s.tscn".replace("%s", char_name.to_snake_case())
+ ) as PackedScene).instantiate(PackedScene.GEN_EDIT_STATE_INSTANCE)
+
+ opened_room.get_node("Characters").add_child(instance)
+ instance.owner = opened_room
+
+ EditorInterface.save_scene()
+ PopochiuEditorHelper.select_node(instance)
+
+
+## Called when a [param child] is added to the room's tree without using the Popochiu dock.
+## [param type_id] can be used to classify the object (prop, hotspot, etc.).
+func _create_row_in_dock(type_id: int, child: Node) -> PopochiuRoomObjectRow:
+ var row: PopochiuRoomObjectRow = null
+
+ if child is PopochiuCharacter:
+ # Get the script_name of the character
+ var char_name: String = child.name.trim_prefix("Character").rstrip(" *")
+ _characters_in_room.append(char_name)
+
+ # Create the row for the character
+ row = _create_object_row(
+ type_id,
+ char_name,
+ "res://game/characters/%s/character_%s.tscn".replace("%s", char_name.to_snake_case()),
+ child.name
+ )
+ row.is_menu_hidden = true
+ _types[type_id].group.add(row)
+
+ # Create button to remove the character from the room
+ var remove_btn := Button.new()
+ remove_btn.icon = get_theme_icon("Remove", "EditorIcons")
+ remove_btn.tooltip_text = "Remove character from room"
+ remove_btn.flat = true
+
+ remove_btn.pressed.connect(_on_remove_character_pressed.bind(row))
+ row.add_button(remove_btn)
+ elif is_instance_of(child, _types[type_id].type_class):
+ var row_path := _get_row_path(type_id, child)
+ if row_path in _rows_paths: return
+
+ var node_path := _get_node_path(type_id, child)
+ row = _create_object_row(type_id, child.name, row_path, node_path)
+ _types[type_id].group.add(row)
+
+ return row
+
+
+func _get_row_path(type_id: int, child: Node) -> String:
+ var row_path := child.scene_file_path
+
+ if row_path.is_empty() and child.script and not "addons" in child.script.resource_path:
+ row_path = child.script.resource_path
+
+ return row_path
+
+
+func _get_node_path(type_id: int, child: Node) -> String:
+ return String(child.get_path()).split("%s/" % _types[type_id].parent)[1]
+
+
+func _on_child_added(node: Node, type_id: int) -> void:
+ _create_row_in_dock(type_id, node)
+
+ if not is_instance_of(node, _types[type_id].type_class): return
+
+ node.position = Vector2(
+ ProjectSettings.get_setting(PopochiuResources.DISPLAY_WIDTH),
+ ProjectSettings.get_setting(PopochiuResources.DISPLAY_HEIGHT)
+ ) / 2.0
+
+
+func _on_child_removed(node: Node, type_id: int) -> void:
+ if not is_instance_of(node, _types[type_id].type_class): return
+
+ var node_name := node.name
+
+ if node is PopochiuCharacter:
+ # Get the script_name of the character
+ node_name = node_name.lstrip("Character").rstrip(" *")
+ _characters_in_room.erase(str(node_name))
+ else:
+ _rows_paths.erase("%s/%d/%s" % [opened_room.script_name, type_id, node_name])
+
+ _types[type_id].group.remove_by_name(node_name)
+
+
+func _check_undoredo_history() -> void:
+ if not opened_room or not is_instance_valid(opened_room):
+ return
+
+ var walkable_areas: Array = opened_room.call(
+ _types[PopochiuResources.Types.WALKABLE_AREA].method
+ )
+
+ if walkable_areas.is_empty(): return
+
+ for wa: PopochiuWalkableArea in walkable_areas:
+ (wa.get_node("Perimeter") as NavigationRegion2D).bake_navigation_polygon()
+
+
+#endregion
diff --git a/addons/popochiu/editor/main_dock/tab_room/tab_room.gd.uid b/addons/popochiu/editor/main_dock/tab_room/tab_room.gd.uid
new file mode 100644
index 0000000..7b0fbcd
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/tab_room/tab_room.gd.uid
@@ -0,0 +1 @@
+uid://hbfnuhgcjrtl
diff --git a/addons/popochiu/editor/main_dock/tab_room/tab_room.tscn b/addons/popochiu/editor/main_dock/tab_room/tab_room.tscn
new file mode 100644
index 0000000..49f8d1e
--- /dev/null
+++ b/addons/popochiu/editor/main_dock/tab_room/tab_room.tscn
@@ -0,0 +1,193 @@
+[gd_scene load_steps=18 format=3 uid="uid://q1bjkxavt2ay"]
+
+[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/tab_room/tab_room.gd" id="1_dnc56"]
+[ext_resource type="PackedScene" uid="uid://b55ialbvpilxv" path="res://addons/popochiu/editor/main_dock/popochiu_group/popochiu_group.tscn" id="2"]
+[ext_resource type="Script" path="res://addons/popochiu/editor/main_dock/popochiu_filter.gd" id="2_bv3t4"]
+[ext_resource type="Texture2D" uid="uid://bj4bxswex7nsl" path="res://addons/popochiu/icons/prop.png" id="3_rksqc"]
+[ext_resource type="Texture2D" uid="uid://jbdlyvx4gumd" path="res://addons/popochiu/icons/hotspot.png" id="4_6mx6c"]
+[ext_resource type="Texture2D" uid="uid://dvh13sj4uj4b2" path="res://addons/popochiu/icons/walkable_area.png" id="5_j6ot2"]
+[ext_resource type="Texture2D" uid="uid://cosxi1ulfp7rg" path="res://addons/popochiu/icons/region.png" id="6_2h2fq"]
+[ext_resource type="Texture2D" uid="uid://btdsnflrn3j6o" path="res://addons/popochiu/icons/point.png" id="7_8ygji"]
+[ext_resource type="Texture2D" uid="uid://mir6j58lju3l" path="res://addons/popochiu/icons/character.png" id="9_4yetu"]
+
+[sub_resource type="Image" id="Image_xqhe0"]
+data = {
+"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
+"format": "RGBA8",
+"height": 16,
+"mipmaps": false,
+"width": 16
+}
+
+[sub_resource type="ImageTexture" id="ImageTexture_51sph"]
+image = SubResource("Image_xqhe0")
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_s3433"]
+content_margin_left = 8.0
+content_margin_right = 8.0
+draw_center = false
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+border_color = Color(0.6, 0.6, 0.6, 1)
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_wj0h8"]
+content_margin_left = 8.0
+content_margin_right = 8.0
+draw_center = false
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+border_color = Color(0.6, 0.6, 0.6, 1)
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_m7com"]
+content_margin_left = 8.0
+content_margin_right = 8.0
+draw_center = false
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+border_color = Color(0.6, 0.6, 0.6, 1)
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_b8j46"]
+content_margin_left = 8.0
+content_margin_right = 8.0
+draw_center = false
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+border_color = Color(0.6, 0.6, 0.6, 1)
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ttmyn"]
+content_margin_left = 8.0
+content_margin_right = 8.0
+draw_center = false
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+border_color = Color(0.6, 0.6, 0.6, 1)
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_30r2w"]
+content_margin_left = 8.0
+content_margin_right = 8.0
+draw_center = false
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+border_color = Color(0.6, 0.6, 0.6, 1)
+
+[node name="TabRoom" type="VBoxContainer"]
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+script = ExtResource("1_dnc56")
+
+[node name="PopochiuFilter" type="LineEdit" parent="."]
+unique_name_in_owner = true
+visible = false
+layout_mode = 2
+placeholder_text = "Filter Popochiu objects"
+clear_button_enabled = true
+right_icon = SubResource("ImageTexture_51sph")
+script = ExtResource("2_bv3t4")
+
+[node name="RoomName" type="Button" parent="."]
+unique_name_in_owner = true
+visible = false
+layout_mode = 2
+text = "Room name"
+
+[node name="ToolButtons" type="HBoxContainer" parent="."]
+unique_name_in_owner = true
+visible = false
+layout_mode = 2
+alignment = 1
+
+[node name="BtnScript" type="Button" parent="ToolButtons"]
+unique_name_in_owner = true
+layout_mode = 2
+text = "Script"
+icon = SubResource("ImageTexture_51sph")
+
+[node name="BtnResource" type="Button" parent="ToolButtons"]
+unique_name_in_owner = true
+layout_mode = 2
+text = "State"
+icon = SubResource("ImageTexture_51sph")
+
+[node name="BtnResourceScript" type="Button" parent="ToolButtons"]
+unique_name_in_owner = true
+layout_mode = 2
+text = "State"
+icon = SubResource("ImageTexture_51sph")
+
+[node name="RoomScrollContainer" type="ScrollContainer" parent="."]
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+
+[node name="VBoxContainer" type="VBoxContainer" parent="RoomScrollContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+
+[node name="NoRoomInfo" type="Label" parent="RoomScrollContainer/VBoxContainer"]
+unique_name_in_owner = true
+custom_minimum_size = Vector2(312, 0)
+layout_mode = 2
+text = "Open a room in Main tab to see or create Props, Hotspots, Regions and Points."
+autowrap_mode = 3
+
+[node name="PropsGroup" parent="RoomScrollContainer/VBoxContainer" instance=ExtResource("2")]
+unique_name_in_owner = true
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_s3433")
+icon = ExtResource("3_rksqc")
+title = "Props"
+create_text = "Create prop"
+
+[node name="HotspotsGroup" parent="RoomScrollContainer/VBoxContainer" instance=ExtResource("2")]
+unique_name_in_owner = true
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_wj0h8")
+icon = ExtResource("4_6mx6c")
+title = "Hotspots"
+create_text = "Create hotspot"
+
+[node name="WalkableAreasGroup" parent="RoomScrollContainer/VBoxContainer" instance=ExtResource("2")]
+unique_name_in_owner = true
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_m7com")
+icon = ExtResource("5_j6ot2")
+title = "Walkable areas"
+create_text = "Create walkable area"
+
+[node name="RegionsGroup" parent="RoomScrollContainer/VBoxContainer" instance=ExtResource("2")]
+unique_name_in_owner = true
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_b8j46")
+icon = ExtResource("6_2h2fq")
+title = "Regions"
+create_text = "Create regions"
+
+[node name="MarkersGroup" parent="RoomScrollContainer/VBoxContainer" instance=ExtResource("2")]
+unique_name_in_owner = true
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_ttmyn")
+icon = ExtResource("7_8ygji")
+title = "Markers"
+create_text = "Create marker"
+
+[node name="CharactersGroup" parent="RoomScrollContainer/VBoxContainer" instance=ExtResource("2")]
+unique_name_in_owner = true
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_30r2w")
+icon = ExtResource("9_4yetu")
+title = "Characters in room"
+can_create = false
+create_text = "Add character to room"
diff --git a/addons/popochiu/editor/popups/create_object/create_character/create_character.gd b/addons/popochiu/editor/popups/create_object/create_character/create_character.gd
new file mode 100644
index 0000000..5a7ac68
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_character/create_character.gd
@@ -0,0 +1,80 @@
+@tool
+extends "res://addons/popochiu/editor/popups/create_object/create_object.gd"
+## Creates a new [PopochiuCharacter].
+##
+## It creates all the necessary files to make a [PopochiuCharacter] to work and to
+## store its state:
+## - character_xxx.tscn
+## - character_xxx.gd
+## - character_xxx.tres
+## - character_xxx_state.gd
+
+var _new_character_name := ""
+var _factory: PopochiuCharacterFactory
+var _show_set_as_pc := false : set = set_show_set_as_pc
+
+@onready var set_as_pc_panel: PanelContainer = %SetAsPCPanel
+@onready var rtl_is_pc: RichTextLabel = %RtlIsPC
+@onready var btn_is_pc: CheckBox = %BtnIsPC
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ _info_files = _info_files.replace("&t", "character")
+
+ super()
+
+
+#endregion
+
+#region Virtual ####################################################################################
+func _create() -> Object:
+ if _new_character_name.is_empty():
+ error_feedback.show()
+ return null
+
+ # Setup the prop helper and use it to create the prop ------------------------------------------
+ _factory = PopochiuCharacterFactory.new()
+ if _factory.create(_new_character_name, btn_is_pc.button_pressed) != ResultCodes.SUCCESS:
+ # TODO: show a message in the popup!
+ return null
+ await get_tree().create_timer(0.1).timeout
+
+ return _factory.get_obj_scene()
+
+
+func _on_about_to_popup() -> void:
+ PopochiuEditorHelper.override_font(rtl_is_pc, "normal_font", "main")
+ PopochiuEditorHelper.override_font(rtl_is_pc, "bold_font", "bold")
+ PopochiuEditorHelper.override_font(rtl_is_pc, "italics_font", "doc_italic")
+
+ _check_if_has_pc()
+ info.hide()
+
+
+func _set_info_text() -> void:
+ _new_character_name = _name.to_snake_case()
+ _target_folder = PopochiuResources.CHARACTERS_PATH.path_join(_new_character_name)
+
+ info.text = (_info_text % _target_folder).replace("&n", _new_character_name)
+
+
+#endregion
+
+#region SetGet #####################################################################################
+func set_show_set_as_pc(value: bool) -> void:
+ _show_set_as_pc = value
+
+ if is_instance_valid(set_as_pc_panel):
+ set_as_pc_panel.visible = _show_set_as_pc
+
+
+#endregion
+
+#region Private ####################################################################################
+func _check_if_has_pc() -> void:
+ # Display the checkbox if the game's PC has not been defined yet
+ _show_set_as_pc = PopochiuResources.get_data_value("setup", "pc", "").is_empty()
+
+
+#endregion
diff --git a/addons/popochiu/editor/popups/create_object/create_character/create_character.gd.uid b/addons/popochiu/editor/popups/create_object/create_character/create_character.gd.uid
new file mode 100644
index 0000000..aa03833
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_character/create_character.gd.uid
@@ -0,0 +1 @@
+uid://dgy4in4sknc82
diff --git a/addons/popochiu/editor/popups/create_object/create_character/create_character.tscn b/addons/popochiu/editor/popups/create_object/create_character/create_character.tscn
new file mode 100644
index 0000000..63326b5
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_character/create_character.tscn
@@ -0,0 +1,36 @@
+[gd_scene load_steps=3 format=3 uid="uid://q0mx8fu63d03"]
+
+[ext_resource type="PackedScene" uid="uid://c1pfl2gwjjot5" path="res://addons/popochiu/editor/popups/create_object/create_object.tscn" id="1_dtng2"]
+[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_object/create_character/create_character.gd" id="2_8yo43"]
+
+[node name="CreateCharacterConfirmation" instance=ExtResource("1_dtng2")]
+script = ExtResource("2_8yo43")
+
+[node name="Label" parent="PanelContainer/VBoxContainer/InputContainer" index="0"]
+text = "Character name:"
+
+[node name="Guide" parent="PanelContainer/VBoxContainer" index="3"]
+text = "Use a descriptive name in PascalCase (e.g. Glottis, MannyCalavera, HectorLeMans)."
+
+[node name="SetAsPCPanel" type="PanelContainer" parent="PanelContainer/VBoxContainer" index="4"]
+unique_name_in_owner = true
+visible = false
+layout_mode = 2
+
+[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/SetAsPCPanel" index="0"]
+layout_mode = 2
+
+[node name="RtlIsPC" type="RichTextLabel" parent="PanelContainer/VBoxContainer/SetAsPCPanel/HBoxContainer" index="0"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+bbcode_enabled = true
+text = "You don't have a Player-controlled Character ([b]PC[/b]) yet. Do you want this character to become the [b]PC[/b]?
+
+[i]You can change this later in the context menu for each character or by code during runtime.[/i]"
+fit_content = true
+scroll_active = false
+
+[node name="BtnIsPC" type="CheckBox" parent="PanelContainer/VBoxContainer/SetAsPCPanel/HBoxContainer" index="1"]
+unique_name_in_owner = true
+layout_mode = 2
diff --git a/addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.gd b/addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.gd
new file mode 100644
index 0000000..80f3e91
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.gd
@@ -0,0 +1,46 @@
+@tool
+extends "res://addons/popochiu/editor/popups/create_object/create_object.gd"
+## Creates a new [PopochiuDialog].
+##
+## It creates all the necessary files to make a [PopochiuDialog] to work:
+## - dialog_xxx.gd (The script where the behavior for each dialog option is defined)
+## - dialog_xxx.tres (The Resource file used to create the dialog options in the Inspector)
+
+var _new_dialog_name := ""
+var _factory: PopochiuDialogFactory
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ _info_files = "[code]- &t_&n.gd\n- &t_&n.tres[/code]"
+ _info_files = _info_files.replace("&t", "dialog")
+
+ super()
+
+
+#endregion
+
+#region Virtual ####################################################################################
+func _create() -> Object:
+ if _new_dialog_name.is_empty():
+ error_feedback.show()
+ return null
+
+ # Setup the prop helper and use it to create the prop ------------------------------------------
+ _factory = PopochiuDialogFactory.new()
+ if _factory.create(_new_dialog_name) != ResultCodes.SUCCESS:
+ # TODO: show a message in the popup!
+ return null
+ await get_tree().create_timer(0.1).timeout
+
+ return _factory.get_obj_resource()
+
+
+func _set_info_text() -> void:
+ _new_dialog_name = _name.to_snake_case()
+ _target_folder = PopochiuResources.DIALOGS_PATH.path_join(_new_dialog_name)
+
+ info.text = (_info_text % _target_folder).replace("&n", _new_dialog_name)
+
+
+#endregion
diff --git a/addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.gd.uid b/addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.gd.uid
new file mode 100644
index 0000000..a053e54
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.gd.uid
@@ -0,0 +1 @@
+uid://dh6csjemfnk6a
diff --git a/addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.tscn b/addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.tscn
new file mode 100644
index 0000000..459e756
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.tscn
@@ -0,0 +1,13 @@
+[gd_scene load_steps=3 format=3 uid="uid://dlhcgfucwffgr"]
+
+[ext_resource type="PackedScene" uid="uid://c1pfl2gwjjot5" path="res://addons/popochiu/editor/popups/create_object/create_object.tscn" id="1_i1dna"]
+[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_object/create_dialog/create_dialog.gd" id="2_ep8bb"]
+
+[node name="CreateDialogConfirmation" instance=ExtResource("1_i1dna")]
+script = ExtResource("2_ep8bb")
+
+[node name="Label" parent="PanelContainer/VBoxContainer/InputContainer" index="0"]
+text = "Dialog name:"
+
+[node name="Guide" parent="PanelContainer/VBoxContainer" index="3"]
+text = "Use a descriptive name in PascalCase (e.g. GarageGlottis, OfficeEvaDesk)."
diff --git a/addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.gd b/addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.gd
new file mode 100644
index 0000000..8f0f4ee
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.gd
@@ -0,0 +1,41 @@
+@tool
+extends "res://addons/popochiu/editor/popups/create_object/create_room_object.gd"
+## Creates a new hotspot in the room.
+
+var _new_hotspot_name := ""
+var _factory: PopochiuHotspotFactory
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ _group_folder = "hotspots"
+ _info_files = _info_files.replace("&t", "hotspot")
+
+ super()
+
+
+#endregion
+
+#region Virtual ####################################################################################
+func _create() -> Object:
+ # Setup the region helper and use it to create the hotspot -------------------------------------
+ _factory = PopochiuHotspotFactory.new()
+ var param := PopochiuHotspotFactory.PopochiuHotspotFactoryParam.new()
+ param.obj_name = _new_hotspot_name
+ param.room = _room
+
+ if _factory.create(param) != ResultCodes.SUCCESS:
+ # TODO: show a message in the popup!
+ return null
+ await get_tree().create_timer(0.1).timeout
+
+ return _factory.get_obj_scene()
+
+
+func _set_info_text() -> void:
+ _new_hotspot_name = _name.to_snake_case()
+ _target_folder = _group_folder % _new_hotspot_name
+ info.text = _info_text.replace("&n", _new_hotspot_name)
+
+
+#endregion
diff --git a/addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.gd.uid b/addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.gd.uid
new file mode 100644
index 0000000..4c83407
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.gd.uid
@@ -0,0 +1 @@
+uid://xvpu80vgsfsb
diff --git a/addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.tscn b/addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.tscn
new file mode 100644
index 0000000..329dba7
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.tscn
@@ -0,0 +1,14 @@
+[gd_scene load_steps=3 format=3 uid="uid://b7nvdcut38577"]
+
+[ext_resource type="PackedScene" uid="uid://c1pfl2gwjjot5" path="res://addons/popochiu/editor/popups/create_object/create_object.tscn" id="1_feyc5"]
+[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_object/create_hotspot/create_hotspot.gd" id="2_hf5i2"]
+
+[node name="CreateHotspotConfirmation" instance=ExtResource("1_feyc5")]
+script = ExtResource("2_hf5i2")
+title = "Create PopochiuHotspot"
+
+[node name="Label" parent="PanelContainer/VBoxContainer/InputContainer" index="0"]
+text = "Hotspot name:"
+
+[node name="Guide" parent="PanelContainer/VBoxContainer" index="3"]
+text = "Use a descriptive name in PascalCase (e.g. Sky, CaveEntrance)."
diff --git a/addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.gd b/addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.gd
new file mode 100644
index 0000000..894e020
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.gd
@@ -0,0 +1,48 @@
+@tool
+extends "res://addons/popochiu/editor/popups/create_object/create_object.gd"
+## Creates a [PopochiuInventoryItem].
+##
+## It creates all the necessary files to make a [PopochiuInventoryItem] to work and
+## to store its state:
+## - inventory_item_xxx.tscn
+## - inventory_item_xxx.gd
+## - inventory_item_xxx.tres
+## - inventory_item_xxx_state.gd
+
+var _new_item_name := ""
+var _factory: PopochiuInventoryItemFactory
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ _info_files = _info_files.replace("&t", "inventory_item")
+
+ super()
+
+
+#endregion
+
+#region Virtual ####################################################################################
+func _create() -> Object:
+ if _new_item_name.is_empty():
+ error_feedback.show()
+ return null
+
+ # Setup the prop helper and use it to create the prop ------------------------------------------
+ _factory = PopochiuInventoryItemFactory.new()
+ if _factory.create(_new_item_name) != ResultCodes.SUCCESS:
+ # TODO: show a message in the popup!
+ return null
+ await get_tree().create_timer(0.1).timeout
+
+ return _factory.get_obj_scene()
+
+
+func _set_info_text() -> void:
+ _new_item_name = _name.to_snake_case()
+ _target_folder = PopochiuResources.INVENTORY_ITEMS_PATH.path_join(_new_item_name)
+
+ info.text = (_info_text % _target_folder).replace("&n", _new_item_name)
+
+
+#endregion
diff --git a/addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.gd.uid b/addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.gd.uid
new file mode 100644
index 0000000..6d35c0d
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.gd.uid
@@ -0,0 +1 @@
+uid://do48fujcr8rf1
diff --git a/addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.tscn b/addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.tscn
new file mode 100644
index 0000000..d3e83ad
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.tscn
@@ -0,0 +1,14 @@
+[gd_scene load_steps=3 format=3 uid="uid://dl6pj0tylid8w"]
+
+[ext_resource type="PackedScene" uid="uid://c1pfl2gwjjot5" path="res://addons/popochiu/editor/popups/create_object/create_object.tscn" id="1_rtecw"]
+[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_object/create_inventory_item/create_inventory_item.gd" id="2_3sytb"]
+
+[node name="CreateInventoryItemConfirmation" instance=ExtResource("1_rtecw")]
+script = ExtResource("2_3sytb")
+title = "Create PopochiuInventoryItem"
+
+[node name="Label" parent="PanelContainer/VBoxContainer/InputContainer" index="0"]
+text = "Item name:"
+
+[node name="Guide" parent="PanelContainer/VBoxContainer" index="3"]
+text = "Use a descriptive name in PascalCase (e.g. Scythe, WorkOrder, DeckOfCards)."
diff --git a/addons/popochiu/editor/popups/create_object/create_marker/create_marker.gd b/addons/popochiu/editor/popups/create_object/create_marker/create_marker.gd
new file mode 100644
index 0000000..3c25afd
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_marker/create_marker.gd
@@ -0,0 +1,41 @@
+@tool
+extends "res://addons/popochiu/editor/popups/create_object/create_room_object.gd"
+# Creates a new marker in the room.
+
+var _new_marker_name := ""
+var _factory: PopochiuMarkerFactory
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ _group_folder = "markers"
+ _info_files = "[code]- marker_&n.tscn[/code]"
+
+ super()
+
+
+#endregion
+
+#region Virtual ####################################################################################
+func _create() -> Object:
+ # Setup the region helper and use it to create the marker
+ _factory = PopochiuMarkerFactory.new()
+ var param := PopochiuMarkerFactory.PopochiuRoomObjFactoryParam.new()
+ param.obj_name = _new_marker_name
+ param.room = _room
+
+ if _factory.create(param) != ResultCodes.SUCCESS:
+ # TODO: show a message in the popup!
+ return null
+ await get_tree().create_timer(0.1).timeout
+
+ return _factory.get_obj_scene()
+
+
+func _set_info_text() -> void:
+ _new_marker_name = _name.to_snake_case()
+ _target_folder = _group_folder % _new_marker_name
+ info.text = _info_text.replace("&n", _new_marker_name)
+
+
+#endregion
diff --git a/addons/popochiu/editor/popups/create_object/create_marker/create_marker.gd.uid b/addons/popochiu/editor/popups/create_object/create_marker/create_marker.gd.uid
new file mode 100644
index 0000000..0907ac5
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_marker/create_marker.gd.uid
@@ -0,0 +1 @@
+uid://i8up0xibpyic
diff --git a/addons/popochiu/editor/popups/create_object/create_marker/create_marker.tscn b/addons/popochiu/editor/popups/create_object/create_marker/create_marker.tscn
new file mode 100644
index 0000000..8d01d4b
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_marker/create_marker.tscn
@@ -0,0 +1,13 @@
+[gd_scene load_steps=3 format=3 uid="uid://cju64rmwue0hb"]
+
+[ext_resource type="PackedScene" uid="uid://c1pfl2gwjjot5" path="res://addons/popochiu/editor/popups/create_object/create_object.tscn" id="1_vwqi7"]
+[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_object/create_marker/create_marker.gd" id="2_0x1s8"]
+
+[node name="CreateMarkerConfirmation" instance=ExtResource("1_vwqi7")]
+script = ExtResource("2_0x1s8")
+
+[node name="Label" parent="PanelContainer/VBoxContainer/InputContainer" index="0"]
+text = "Marker name:"
+
+[node name="Guide" parent="PanelContainer/VBoxContainer" index="3"]
+text = "Use a descriptive name in PascalCase (e.g. Left, SouthEast)."
diff --git a/addons/popochiu/editor/popups/create_object/create_object.gd b/addons/popochiu/editor/popups/create_object/create_object.gd
new file mode 100644
index 0000000..fa99fae
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_object.gd
@@ -0,0 +1,111 @@
+@tool
+extends Control
+
+signal content_changed
+
+@export var title := ""
+
+var _info_folder := "In [b]%s[/b] the following files will be created:\n\n"
+var _info_files := "[code]- &t_&n.tscn\n- &t_&n.gd\n- &t_&n.tres\n- &t_&n_state.gd[/code]"
+var _info_text := ""
+var _name := ""
+var _target_folder := ""
+var _dflt_size := Vector2.ZERO
+
+@onready var input: LineEdit = %Input
+@onready var error_container: HBoxContainer = %ErrorContainer
+@onready var error_icon: TextureRect = %ErrorIcon
+@onready var error_feedback: Label = %ErrorFeedback
+@onready var info: RichTextLabel = %Info
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ _info_text = _info_folder + _info_files
+
+ # Connect to children's signals
+ input.text_changed.connect(_update_name)
+
+ error_container.hide()
+
+
+#endregion
+
+#region Virtual ####################################################################################
+func _create() -> Object:
+ return null
+
+
+func _on_about_to_popup() -> void:
+ pass
+
+
+func _set_info_text() -> void:
+ pass
+
+
+#endregion
+
+#region Public #####################################################################################
+func on_about_to_popup() -> void:
+ PopochiuEditorHelper.override_font(info, "normal_font", "main")
+ PopochiuEditorHelper.override_font(info, "bold_font", "bold")
+ PopochiuEditorHelper.override_font(info, "mono_font", "source")
+
+ error_icon.texture = get_theme_icon("StatusError", "EditorIcons")
+ error_feedback.add_theme_color_override("font_color", get_theme_color("error_color", "Editor"))
+
+ _on_about_to_popup()
+ await get_tree().process_frame
+
+ _dflt_size = get_child(0).size
+ content_changed.emit()
+
+
+func create() -> void:
+ var created_object := await _create()
+ if not created_object or not is_instance_valid(created_object):
+ return
+ await PopochiuEditorHelper.filesystem_scanned()
+
+ # Open the scene in the editor and select the file in the FileSystem dock ----------------------
+ if created_object is Node:
+ EditorInterface.select_file(created_object.scene_file_path)
+ EditorInterface.open_scene_from_path(created_object.scene_file_path)
+ else:
+ EditorInterface.select_file(created_object.resource_path)
+ EditorInterface.edit_resource(load(created_object.resource_path))
+
+
+#endregion
+
+#region Private ####################################################################################
+func _update_name(new_text: String) -> void:
+ if error_container.visible:
+ error_container.hide()
+
+ _name = new_text.to_pascal_case()
+ if _name.is_empty():
+ info.text = ""
+ info.hide()
+ else:
+ _set_info_text()
+ info.show()
+
+ # Check if another object with the same name is already created
+ if DirAccess.dir_exists_absolute(_target_folder):
+ error_feedback.text = "Another object with that name already exists!"
+ error_container.show()
+
+ _info_updated()
+ (get_parent() as ConfirmationDialog).get_ok_button().disabled = error_container.visible
+
+
+func _info_updated() -> void:
+ await get_tree().process_frame
+
+ get_child(0).size.y = _dflt_size.y
+ content_changed.emit()
+
+
+#endregion
diff --git a/addons/popochiu/editor/popups/create_object/create_object.gd.uid b/addons/popochiu/editor/popups/create_object/create_object.gd.uid
new file mode 100644
index 0000000..e102bfa
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_object.gd.uid
@@ -0,0 +1 @@
+uid://drk6eqdx2gum0
diff --git a/addons/popochiu/editor/popups/create_object/create_object.tscn b/addons/popochiu/editor/popups/create_object/create_object.tscn
new file mode 100644
index 0000000..813ae6c
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_object.tscn
@@ -0,0 +1,76 @@
+[gd_scene load_steps=3 format=3 uid="uid://c1pfl2gwjjot5"]
+
+[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_object/create_object.gd" id="1_ksc3t"]
+
+[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_kdu1t"]
+
+[node name="CreateObjectConfirmation" type="Control"]
+layout_mode = 3
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+script = ExtResource("1_ksc3t")
+
+[node name="PanelContainer" type="PanelContainer" parent="."]
+layout_mode = 1
+anchors_preset = 10
+anchor_right = 1.0
+offset_bottom = 66.0
+grow_horizontal = 2
+theme_override_styles/panel = SubResource("StyleBoxEmpty_kdu1t")
+
+[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"]
+layout_mode = 2
+
+[node name="InputContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer"]
+layout_mode = 2
+
+[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/InputContainer"]
+layout_mode = 2
+text = "Name:"
+
+[node name="Input" type="LineEdit" parent="PanelContainer/VBoxContainer/InputContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+draw_control_chars = true
+
+[node name="ErrorContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="ErrorIcon" type="TextureRect" parent="PanelContainer/VBoxContainer/ErrorContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+expand_mode = 2
+stretch_mode = 5
+
+[node name="ErrorFeedback" type="Label" parent="PanelContainer/VBoxContainer/ErrorContainer"]
+unique_name_in_owner = true
+custom_minimum_size = Vector2(320, 0)
+layout_mode = 2
+size_flags_horizontal = 3
+text = "Error!"
+autowrap_mode = 2
+
+[node name="HSeparator" type="HSeparator" parent="PanelContainer/VBoxContainer"]
+layout_mode = 2
+
+[node name="Guide" type="Label" parent="PanelContainer/VBoxContainer"]
+modulate = Color(1, 1, 1, 0.698039)
+custom_minimum_size = Vector2(320, 0)
+layout_mode = 2
+text = "Use a descriptive name in PascalCase (e.g. xxx)."
+autowrap_mode = 2
+
+[node name="Info" type="RichTextLabel" parent="PanelContainer/VBoxContainer"]
+unique_name_in_owner = true
+visible = false
+layout_mode = 2
+bbcode_enabled = true
+text = "Additional info..."
+fit_content = true
+scroll_active = false
diff --git a/addons/popochiu/editor/popups/create_object/create_prop/create_prop.gd b/addons/popochiu/editor/popups/create_object/create_prop/create_prop.gd
new file mode 100644
index 0000000..46d415a
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_prop/create_prop.gd
@@ -0,0 +1,70 @@
+@tool
+extends "res://addons/popochiu/editor/popups/create_object/create_room_object.gd"
+## Allows you to create a new Prop for a room.
+##
+## If it has interaction, it will be assigned a script that will be saved in the prop's folder.
+
+var _new_prop_name := ""
+var _factory: PopochiuPropFactory
+
+@onready var interaction_checkbox: CheckBox = %InteractionCheckbox
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ _group_folder = "props"
+ _info_files = _info_files.replace("&t", "prop")
+
+ super()
+
+ # Connect to children's signals
+ interaction_checkbox.toggled.connect(_interaction_toggled)
+
+
+#endregion
+
+#region Virtual ####################################################################################
+func _create() -> Object:
+ if _new_prop_name.is_empty():
+ error_feedback.show()
+ return null
+
+ # Setup the prop helper and use it to create the prop ------------------------------------------
+ _factory = PopochiuPropFactory.new()
+ var param := PopochiuPropFactory.PopochiuPropFactoryParam.new()
+ param.obj_name = _new_prop_name
+ param.room = _room
+ param.is_interactive = interaction_checkbox.button_pressed
+
+ if _factory.create(param) != ResultCodes.SUCCESS:
+ # TODO: show a message in the popup!
+ return null
+ await get_tree().create_timer(0.1).timeout
+
+ return _factory.get_obj_scene()
+
+
+func _set_info_text() -> void:
+ _new_prop_name = _name.to_snake_case()
+ _target_folder = _group_folder % _new_prop_name
+
+ _update_info()
+
+
+#endregion
+
+#region Private ####################################################################################
+func _interaction_toggled(is_pressed: bool) -> void:
+ if is_pressed and not _name.is_empty():
+ _update_info()
+ else:
+ info.text = ""
+
+ _info_updated()
+
+
+func _update_info() -> void:
+ info.text = _info_text.replace("&n", _new_prop_name)
+
+
+#endregion
diff --git a/addons/popochiu/editor/popups/create_object/create_prop/create_prop.gd.uid b/addons/popochiu/editor/popups/create_object/create_prop/create_prop.gd.uid
new file mode 100644
index 0000000..c61ec88
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_prop/create_prop.gd.uid
@@ -0,0 +1 @@
+uid://5wo0sonbxku7
diff --git a/addons/popochiu/editor/popups/create_object/create_prop/create_prop.tscn b/addons/popochiu/editor/popups/create_object/create_prop/create_prop.tscn
new file mode 100644
index 0000000..c2d8e9e
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_prop/create_prop.tscn
@@ -0,0 +1,32 @@
+[gd_scene load_steps=3 format=3 uid="uid://cpqg77rjfaa0l"]
+
+[ext_resource type="PackedScene" uid="uid://c1pfl2gwjjot5" path="res://addons/popochiu/editor/popups/create_object/create_object.tscn" id="1_l6xki"]
+[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_object/create_prop/create_prop.gd" id="2_c5stu"]
+
+[node name="CreatePropConfirmation" instance=ExtResource("1_l6xki")]
+size_flags_horizontal = 3
+size_flags_vertical = 3
+script = ExtResource("2_c5stu")
+title = "Create PopochiuProp"
+
+[node name="Label" parent="PanelContainer/VBoxContainer/InputContainer" index="0"]
+text = "Prop name:"
+
+[node name="InteractionContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer" index="1"]
+layout_mode = 2
+
+[node name="Label" type="Label" parent="PanelContainer/VBoxContainer/InteractionContainer" index="0"]
+layout_mode = 2
+text = "Will this prop have interaction?"
+
+[node name="InteractionCheckbox" type="CheckBox" parent="PanelContainer/VBoxContainer/InteractionContainer" index="1"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+
+[node name="ErrorFeedback" parent="PanelContainer/VBoxContainer" index="2"]
+text = "Prop name is mandatory!"
+
+[node name="Guide" parent="PanelContainer/VBoxContainer" index="4"]
+text = "Use a descriptive name in PascalCase (e.g. Bucket or WineBottle)."
diff --git a/addons/popochiu/editor/popups/create_object/create_region/create_region.gd b/addons/popochiu/editor/popups/create_object/create_region/create_region.gd
new file mode 100644
index 0000000..c036e51
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_region/create_region.gd
@@ -0,0 +1,45 @@
+@tool
+extends "res://addons/popochiu/editor/popups/create_object/create_room_object.gd"
+## Allows you to create a new Region for a room.
+
+var _new_region_name := ""
+var _factory: PopochiuRegionFactory
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ _group_folder = "regions"
+ _info_files = _info_files.replace("&t", "region")
+
+ super()
+
+
+#endregion
+
+#region Virtual ####################################################################################
+func _create() -> Object:
+ if _new_region_name.is_empty():
+ error_feedback.show()
+ return null
+
+ # Setup the region helper and use it to create the region --------------------------------------
+ _factory = PopochiuRegionFactory.new()
+ var param := PopochiuRegionFactory.PopochiuRegionFactoryParam.new()
+ param.obj_name = _new_region_name
+ param.room = _room
+
+ if _factory.create(param) != ResultCodes.SUCCESS:
+ # TODO: show a message in the popup!
+ return null
+ await get_tree().create_timer(0.1).timeout
+
+ return _factory.get_obj_scene()
+
+
+func _set_info_text() -> void:
+ _new_region_name = _name.to_snake_case()
+ _target_folder = _group_folder % _new_region_name
+ info.text = _info_text.replace("&n", _new_region_name)
+
+
+#endregion
diff --git a/addons/popochiu/editor/popups/create_object/create_region/create_region.gd.uid b/addons/popochiu/editor/popups/create_object/create_region/create_region.gd.uid
new file mode 100644
index 0000000..570eee4
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_region/create_region.gd.uid
@@ -0,0 +1 @@
+uid://dwjd4cv7i2mh
diff --git a/addons/popochiu/editor/popups/create_object/create_region/create_region.tscn b/addons/popochiu/editor/popups/create_object/create_region/create_region.tscn
new file mode 100644
index 0000000..09c7c49
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_region/create_region.tscn
@@ -0,0 +1,13 @@
+[gd_scene load_steps=3 format=3 uid="uid://crtkojrvhklpp"]
+
+[ext_resource type="PackedScene" uid="uid://c1pfl2gwjjot5" path="res://addons/popochiu/editor/popups/create_object/create_object.tscn" id="1_haco6"]
+[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_object/create_region/create_region.gd" id="2_ft6um"]
+
+[node name="CreateRegionConfirmation" instance=ExtResource("1_haco6")]
+script = ExtResource("2_ft6um")
+
+[node name="Label" parent="PanelContainer/VBoxContainer/InputContainer" index="0"]
+text = "Region name:"
+
+[node name="Guide" parent="PanelContainer/VBoxContainer" index="3"]
+text = "Use a descriptive name in PascalCase (e.g. Sand, StickyFloor)."
diff --git a/addons/popochiu/editor/popups/create_object/create_room/create_room.gd b/addons/popochiu/editor/popups/create_object/create_room/create_room.gd
new file mode 100644
index 0000000..da63c10
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_room/create_room.gd
@@ -0,0 +1,80 @@
+@tool
+extends "res://addons/popochiu/editor/popups/create_object/create_object.gd"
+## Creates a [PopochiuRoom].
+##
+## It creates all the necessary files to make a [PopochiuRoom] to work and
+## to store its state:
+## - room_xxx.tscn
+## - room_xxx.gd
+## - room_xxx.tres
+## - room_xxx_state.gd
+
+var _new_room_name := ""
+var _factory: PopochiuRoomFactory
+var _show_set_as_main := false : set = set_show_set_as_main
+
+@onready var set_as_main_panel: PanelContainer = %SetAsMainPanel
+@onready var rtl_is_main = %RtlIsMain
+@onready var btn_is_main: CheckBox = %BtnIsMain
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ _info_files = _info_files.replace("&t", "room")
+
+ super()
+
+
+#endregion
+
+#region Virtual ####################################################################################
+func _create() -> Object:
+ if _new_room_name.is_empty():
+ error_feedback.show()
+ return null
+
+ # Setup the prop helper and use it to create the prop ------------------------------------------
+ _factory = PopochiuRoomFactory.new()
+ if _factory.create(_new_room_name, btn_is_main.button_pressed) != ResultCodes.SUCCESS:
+ # TODO: show a message in the popup!
+ return null
+ await get_tree().create_timer(0.1).timeout
+
+ return _factory.get_obj_scene()
+
+
+func _on_about_to_popup() -> void:
+ PopochiuEditorHelper.override_font(rtl_is_main, "normal_font", "main")
+ PopochiuEditorHelper.override_font(rtl_is_main, "bold_font", "bold")
+ PopochiuEditorHelper.override_font(rtl_is_main, "mono_font", "source")
+
+ _check_if_first_room()
+ info.hide()
+
+
+func _set_info_text() -> void:
+ _new_room_name = _name.to_snake_case()
+ _target_folder = PopochiuResources.ROOMS_PATH.path_join(_new_room_name)
+
+ info.text = (_info_text % _target_folder).replace("&n", _new_room_name)
+
+
+#endregion
+
+#region SetGet #####################################################################################
+func set_show_set_as_main(value: bool) -> void:
+ _show_set_as_main = value
+
+ if is_instance_valid(set_as_main_panel):
+ set_as_main_panel.visible = _show_set_as_main
+
+
+#endregion
+
+#region Private ####################################################################################
+func _check_if_first_room() -> void:
+ # Display a checkbox if no main scene has been defined for the project yet
+ _show_set_as_main = ProjectSettings.get_setting(PopochiuResources.MAIN_SCENE, "").is_empty()
+
+
+#endregion
diff --git a/addons/popochiu/editor/popups/create_object/create_room/create_room.gd.uid b/addons/popochiu/editor/popups/create_object/create_room/create_room.gd.uid
new file mode 100644
index 0000000..8da7ce1
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_room/create_room.gd.uid
@@ -0,0 +1 @@
+uid://bb4d8aaeb33b2
diff --git a/addons/popochiu/editor/popups/create_object/create_room/create_room.tscn b/addons/popochiu/editor/popups/create_object/create_room/create_room.tscn
new file mode 100644
index 0000000..ead6f28
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_room/create_room.tscn
@@ -0,0 +1,38 @@
+[gd_scene load_steps=3 format=3 uid="uid://bsl3blhb8sw5"]
+
+[ext_resource type="PackedScene" uid="uid://c1pfl2gwjjot5" path="res://addons/popochiu/editor/popups/create_object/create_object.tscn" id="1_t4kty"]
+[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_object/create_room/create_room.gd" id="2_s1x3y"]
+
+[node name="CreateRoomConfirmation" instance=ExtResource("1_t4kty")]
+script = ExtResource("2_s1x3y")
+title = "Create PopochiuRoom"
+
+[node name="Label" parent="PanelContainer/VBoxContainer/InputContainer" index="0"]
+text = "Room name:"
+
+[node name="ErrorFeedback" parent="PanelContainer/VBoxContainer" index="1"]
+text = "A room name is mandatory!"
+
+[node name="Guide" parent="PanelContainer/VBoxContainer" index="3"]
+text = "Use a descriptive name in PascalCase (e.g. Garage or CasinoInterior)."
+
+[node name="SetAsMainPanel" type="PanelContainer" parent="PanelContainer/VBoxContainer" index="4"]
+unique_name_in_owner = true
+visible = false
+layout_mode = 2
+
+[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/SetAsMainPanel" index="0"]
+layout_mode = 2
+
+[node name="RtlIsMain" type="RichTextLabel" parent="PanelContainer/VBoxContainer/SetAsMainPanel/HBoxContainer" index="0"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+bbcode_enabled = true
+text = "You don't have a main scene. Do you want this room to become the main scene of the project? This will modify [code]ProjectSettings.application/run/main_scene[/code]."
+fit_content = true
+scroll_active = false
+
+[node name="BtnIsMain" type="CheckBox" parent="PanelContainer/VBoxContainer/SetAsMainPanel/HBoxContainer" index="1"]
+unique_name_in_owner = true
+layout_mode = 2
diff --git a/addons/popochiu/editor/popups/create_object/create_room_object.gd b/addons/popochiu/editor/popups/create_object/create_room_object.gd
new file mode 100644
index 0000000..380c792
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_room_object.gd
@@ -0,0 +1,37 @@
+@tool
+extends "res://addons/popochiu/editor/popups/create_object/create_object.gd"
+
+var _room: Node2D = null
+var _group_folder := ""
+
+
+#region Godot ######################################################################################
+func _init() -> void:
+ _info_folder = "In [b]%s[/b] the following files will be created:\n\n"
+ _info_files = "[code]- &t_&n.tscn\n- &t_&n.gd[/code]"
+
+
+func _ready() -> void:
+ if PopochiuEditorHelper.is_room(EditorInterface.get_edited_scene_root()):
+ _room = EditorInterface.get_edited_scene_root()
+ _group_folder = _room.scene_file_path.get_base_dir().path_join(_group_folder + "/%s")
+ _info_folder = _info_folder % _group_folder.replace("/%s", "/&n")
+
+ super()
+
+
+#endregion
+
+#region Public #####################################################################################
+func create() -> void:
+ var created_node: Node = await _create()
+ if not created_node or not is_instance_valid(created_node):
+ return
+ await PopochiuEditorHelper.filesystem_scanned()
+
+ # Select the node in the Scene tree and its file in the FileSystem dock ------------------------
+ EditorInterface.edit_node(created_node)
+ EditorInterface.select_file(created_node.scene_file_path)
+
+
+#endregion
diff --git a/addons/popochiu/editor/popups/create_object/create_room_object.gd.uid b/addons/popochiu/editor/popups/create_object/create_room_object.gd.uid
new file mode 100644
index 0000000..30d3618
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_room_object.gd.uid
@@ -0,0 +1 @@
+uid://drdiado6cgnqr
diff --git a/addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.gd b/addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.gd
new file mode 100644
index 0000000..0d3b39b
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.gd
@@ -0,0 +1,41 @@
+@tool
+extends "res://addons/popochiu/editor/popups/create_object/create_room_object.gd"
+## Creates a new walkable area in a room.
+
+var _new_walkable_area_name := ""
+var _factory: PopochiuWalkableAreaFactory
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ _group_folder = "walkable_areas"
+ _info_files = _info_files.replace("&t", "walkable_area")
+
+ super()
+
+
+#endregion
+
+#region Virtual ####################################################################################
+func _create() -> Object:
+ # Setup the region helper and use it to create the region --------------------------------------
+ _factory = PopochiuWalkableAreaFactory.new()
+ var param := PopochiuWalkableAreaFactory.PopochiuWalkableAreaFactoryParam.new()
+ param.obj_name = _new_walkable_area_name
+ param.room = _room
+
+ if _factory.create(param) != ResultCodes.SUCCESS:
+ # TODO: show a message in the popup!
+ return null
+ await get_tree().create_timer(0.1).timeout
+
+ return _factory.get_obj_scene()
+
+
+func _set_info_text() -> void:
+ _new_walkable_area_name = _name.to_snake_case()
+ _target_folder = _group_folder % _new_walkable_area_name
+ info.text = _info_text.replace("&n", _new_walkable_area_name)
+
+
+#endregion
diff --git a/addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.gd.uid b/addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.gd.uid
new file mode 100644
index 0000000..74f506b
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.gd.uid
@@ -0,0 +1 @@
+uid://bwyw1jtniru2c
diff --git a/addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.tscn b/addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.tscn
new file mode 100644
index 0000000..360fb76
--- /dev/null
+++ b/addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.tscn
@@ -0,0 +1,14 @@
+[gd_scene load_steps=3 format=3 uid="uid://ya4nebuu2575"]
+
+[ext_resource type="PackedScene" uid="uid://c1pfl2gwjjot5" path="res://addons/popochiu/editor/popups/create_object/create_object.tscn" id="1_4gtmy"]
+[ext_resource type="Script" path="res://addons/popochiu/editor/popups/create_object/create_walkable_area/create_walkable_area.gd" id="2_ey5rs"]
+
+[node name="CreateWalkableAreaConfirmation" instance=ExtResource("1_4gtmy")]
+script = ExtResource("2_ey5rs")
+title = "Create PopochiuWalkableArea"
+
+[node name="Label" parent="PanelContainer/VBoxContainer/InputContainer" index="0"]
+text = "Walkable area name:"
+
+[node name="Guide" parent="PanelContainer/VBoxContainer" index="3"]
+text = "Use a descriptive name in PascalCase (e.g. Floor, SuspendedBridge)."
diff --git a/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd b/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd
new file mode 100644
index 0000000..4e11fb0
--- /dev/null
+++ b/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd
@@ -0,0 +1,30 @@
+@tool
+extends Control
+
+var title := ""
+var message := ""
+var ask := ""
+var on_confirmed: Callable
+var on_canceled: Callable
+
+@onready var message_rtl: RichTextLabel = %Message
+@onready var extra: PanelContainer = %Extra
+@onready var ask_rtl: RichTextLabel = %Ask
+@onready var check_box: CheckBox = %CheckBox
+
+
+#region Public #####################################################################################
+func on_about_to_popup() -> void:
+ PopochiuEditorHelper.override_font(message_rtl, "normal_font", "main")
+ PopochiuEditorHelper.override_font(message_rtl, "bold_font", "bold")
+ PopochiuEditorHelper.override_font(message_rtl, "mono_font", "source")
+ PopochiuEditorHelper.override_font(ask_rtl, "normal_font", "main")
+ PopochiuEditorHelper.override_font(ask_rtl, "bold_font", "bold")
+ PopochiuEditorHelper.override_font(ask_rtl, "mono_font", "source")
+
+ message_rtl.text = message
+ ask_rtl.text = ask
+ extra.visible = !ask.is_empty()
+
+
+#endregion
diff --git a/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd.uid b/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd.uid
new file mode 100644
index 0000000..185eb71
--- /dev/null
+++ b/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd.uid
@@ -0,0 +1 @@
+uid://p6esn0thbngm
diff --git a/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.tscn b/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.tscn
new file mode 100644
index 0000000..2eaa350
--- /dev/null
+++ b/addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.tscn
@@ -0,0 +1,50 @@
+[gd_scene load_steps=2 format=3 uid="uid://bcb865akap0mt"]
+
+[ext_resource type="Script" path="res://addons/popochiu/editor/popups/delete_confirmation/delete_confirmation.gd" id="1_j7hpd"]
+
+[node name="DeleteConfirmation" type="Control"]
+layout_mode = 3
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+script = ExtResource("1_j7hpd")
+
+[node name="PanelContainer" type="PanelContainer" parent="."]
+layout_mode = 1
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+
+[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"]
+layout_mode = 2
+
+[node name="Message" type="RichTextLabel" parent="PanelContainer/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+bbcode_enabled = true
+text = "You're gonna delete [b]something[/b]"
+fit_content = true
+
+[node name="Extra" type="PanelContainer" parent="PanelContainer/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/Extra"]
+layout_mode = 2
+
+[node name="Ask" type="RichTextLabel" parent="PanelContainer/VBoxContainer/Extra/HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 0
+bbcode_enabled = true
+text = "Delete also [b]this[/b]?"
+fit_content = true
+
+[node name="CheckBox" type="CheckBox" parent="PanelContainer/VBoxContainer/Extra/HBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
diff --git a/addons/popochiu/editor/popups/migrations_panel/migration_step.gd b/addons/popochiu/editor/popups/migrations_panel/migration_step.gd
new file mode 100644
index 0000000..8e94c6b
--- /dev/null
+++ b/addons/popochiu/editor/popups/migrations_panel/migration_step.gd
@@ -0,0 +1,34 @@
+@tool
+extends HBoxContainer
+
+@onready var check_box: CheckBox = $CheckBox
+@onready var description: RichTextLabel = $Description
+@onready var progress: TextureRect = $Progress
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ PopochiuEditorHelper.override_font(description, "normal_font", "output_source")
+ PopochiuEditorHelper.override_font(description, "bold_font", "output_source_bold")
+ PopochiuEditorHelper.override_font(description, "italics_font", "output_source_italic")
+ progress.hide()
+
+
+#endregion
+
+#region Public #####################################################################################
+func start() -> void:
+ var idx := 1
+ progress.visible = true
+ while progress.visible:
+ progress.texture = get_theme_icon("Progress%d" % idx, "EditorIcons")
+ await PopochiuEditorHelper.secs_passed(0.1)
+
+ idx = wrapi(idx + 1, 1, 9)
+
+
+func stop() -> void:
+ progress.visible = false
+
+
+#endregion
diff --git a/addons/popochiu/editor/popups/migrations_panel/migration_step.gd.uid b/addons/popochiu/editor/popups/migrations_panel/migration_step.gd.uid
new file mode 100644
index 0000000..47d049c
--- /dev/null
+++ b/addons/popochiu/editor/popups/migrations_panel/migration_step.gd.uid
@@ -0,0 +1 @@
+uid://brruh2jvx85oe
diff --git a/addons/popochiu/editor/popups/migrations_panel/migration_step.tscn b/addons/popochiu/editor/popups/migrations_panel/migration_step.tscn
new file mode 100644
index 0000000..e966d70
--- /dev/null
+++ b/addons/popochiu/editor/popups/migrations_panel/migration_step.tscn
@@ -0,0 +1,933 @@
+[gd_scene load_steps=8 format=3 uid="uid://c5hle0de82qww"]
+
+[ext_resource type="Script" path="res://addons/popochiu/editor/popups/migrations_panel/migration_step.gd" id="1_if6f3"]
+
+[sub_resource type="Image" id="Image_4lhx8"]
+data = {
+"data": PackedByteArray(255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 246, 255, 217, 255, 145, 255, 29, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 80, 255, 201, 255, 247, 255, 241, 255, 179, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 83, 255, 201, 255, 246, 255, 241, 255, 199, 255, 46, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 244, 255, 201, 255, 97, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 58, 255, 189, 255, 238, 255, 244, 255, 212, 255, 128, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 149, 255, 236, 255, 31, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 240, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 220, 255, 61, 255, 196, 255, 247, 255, 229, 255, 149, 255, 11, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 252, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 28, 255, 145, 255, 215, 255, 246, 255, 229, 255, 160, 255, 21, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 209, 255, 254, 255, 28, 255, 0, 255, 0, 255, 0, 255, 143, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 83, 255, 207, 255, 248, 255, 234, 255, 150, 255, 11, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 84, 255, 188, 255, 238, 255, 249, 255, 224, 255, 155, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 107, 255, 255, 255, 178, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 210, 255, 18, 255, 170, 255, 245, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 173, 255, 229, 255, 248, 255, 224, 255, 168, 255, 54, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 191, 255, 152, 255, 162, 255, 213, 255, 255, 255, 239, 255, 61, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 88, 255, 255, 255, 236, 255, 155, 255, 168, 255, 251, 255, 240, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 93, 255, 255, 255, 242, 255, 165, 255, 164, 255, 222, 255, 18, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 191, 255, 153, 255, 181, 255, 250, 255, 255, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 14, 255, 243, 255, 235, 255, 132, 255, 132, 255, 188, 255, 153, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 165, 255, 248, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 77, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 245, 255, 148, 255, 107, 255, 195, 255, 255, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 252, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 203, 255, 150, 255, 120, 255, 160, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 116, 255, 255, 255, 113, 255, 0, 255, 0, 255, 1, 255, 227, 255, 245, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 87, 255, 255, 255, 222, 255, 124, 255, 164, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 143, 255, 255, 255, 250, 255, 190, 255, 170, 255, 214, 255, 255, 255, 239, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 61, 255, 250, 255, 215, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 191, 255, 156, 255, 156, 255, 156, 255, 148, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 246, 255, 193, 255, 243, 255, 199, 255, 98, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 109, 255, 253, 255, 253, 255, 196, 255, 174, 255, 213, 255, 255, 255, 79, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 97, 255, 254, 255, 233, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 223, 255, 253, 255, 41, 255, 0, 255, 0, 255, 98, 255, 255, 255, 162, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 224, 255, 254, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 59, 255, 255, 255, 233, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 175, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 245, 255, 255, 255, 255, 255, 255, 255, 204, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 133, 255, 0, 255, 0, 255, 21, 255, 255, 255, 209, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 252, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 211, 255, 241, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 26, 255, 253, 255, 199, 255, 0, 255, 0, 255, 58, 255, 255, 255, 165, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 220, 255, 251, 255, 34, 255, 0, 255, 0, 255, 170, 255, 255, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 47, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 72, 255, 255, 255, 231, 255, 41, 255, 0, 255, 0, 255, 0, 255, 115, 255, 255, 255, 218, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 28, 255, 232, 255, 239, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 208, 255, 22, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 51, 255, 252, 255, 243, 255, 61, 255, 0, 255, 0, 255, 0, 255, 42, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 164, 255, 255, 255, 108, 255, 0, 255, 0, 255, 0, 255, 0, 255, 30, 255, 255, 255, 203, 255, 0, 255, 0, 255, 0, 255, 7, 255, 254, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 30, 255, 255, 255, 206, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 36, 255, 0, 255, 4, 255, 179, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 228, 255, 255, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 221, 255, 255, 255, 186, 255, 75, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 74, 255, 184, 255, 255, 255, 156, 255, 108, 255, 86, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 63, 255, 0, 255, 0, 255, 0, 255, 238, 255, 234, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 252, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 29, 255, 161, 255, 226, 255, 248, 255, 252, 255, 255, 255, 255, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 186, 255, 255, 255, 30, 255, 0, 255, 144, 255, 255, 255, 71, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 29, 255, 255, 255, 210, 255, 20, 255, 20, 255, 20, 255, 118, 255, 255, 255, 90, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 125, 255, 229, 255, 247, 255, 194, 255, 82, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 178, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 197, 255, 255, 255, 74, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 7, 255, 201, 255, 253, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 160, 255, 255, 255, 128, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 82, 255, 255, 255, 170, 255, 0, 255, 0, 255, 0, 255, 0, 255, 46, 255, 255, 255, 182, 255, 0, 255, 0, 255, 0, 255, 0, 255, 239, 255, 247, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 182, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 36, 255, 0, 255, 158, 255, 255, 255, 128, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 6, 255, 246, 255, 249, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 159, 255, 250, 255, 255, 255, 217, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 42, 255, 0, 255, 0, 255, 0, 255, 236, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 24, 255, 0, 255, 0, 255, 2, 255, 254, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 211, 255, 255, 255, 136, 255, 61, 255, 44, 255, 212, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 116, 255, 1, 255, 227, 255, 230, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 108, 255, 255, 255, 233, 255, 152, 255, 178, 255, 241, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 236, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 255, 255, 133, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 159, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 229, 255, 255, 255, 30, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 51, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 255, 255, 204, 255, 0, 255, 0, 255, 0, 255, 7, 255, 254, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 255, 255, 205, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 34, 255, 133, 255, 255, 255, 153, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 5, 255, 38, 255, 166, 255, 255, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 144, 255, 254, 255, 230, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 236, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 195, 255, 255, 255, 28, 255, 0, 255, 0, 255, 24, 255, 255, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 50, 255, 255, 255, 187, 255, 0, 255, 0, 255, 0, 255, 220, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 11, 255, 243, 255, 200, 255, 55, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 30, 255, 255, 255, 211, 255, 68, 255, 68, 255, 68, 255, 68, 255, 68, 255, 30, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 227, 255, 254, 255, 42, 255, 0, 255, 0, 255, 134, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 255, 255, 246, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 91, 255, 255, 255, 159, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 200, 255, 255, 255, 245, 255, 18, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 194, 255, 160, 255, 160, 255, 160, 255, 107, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 252, 255, 250, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 53, 255, 255, 255, 192, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 211, 255, 253, 255, 45, 255, 0, 255, 0, 255, 98, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 231, 255, 254, 255, 50, 255, 0, 255, 0, 255, 2, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 109, 255, 255, 255, 179, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 214, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 1, 255, 0, 255, 0, 255, 0, 255, 195, 255, 255, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 236, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 171, 255, 255, 255, 74, 255, 0, 255, 0, 255, 110, 255, 255, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 59, 255, 255, 255, 174, 255, 0, 255, 0, 255, 47, 255, 253, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 162, 255, 254, 255, 148, 255, 255, 255, 46, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 220, 255, 245, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 21, 255, 255, 255, 205, 255, 0, 255, 0, 255, 0, 255, 50, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 255, 255, 245, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 91, 255, 255, 255, 158, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 211, 255, 255, 255, 162, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 255, 255, 242, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 89, 255, 255, 255, 163, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 73, 255, 253, 255, 238, 255, 155, 255, 166, 255, 251, 255, 243, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 109, 255, 255, 255, 241, 255, 163, 255, 163, 255, 224, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 247, 255, 255, 255, 206, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 193, 255, 154, 255, 138, 255, 83, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 56, 255, 224, 255, 150, 255, 119, 255, 146, 255, 251, 255, 209, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 236, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 100, 255, 255, 255, 234, 255, 145, 255, 168, 255, 246, 255, 241, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 237, 255, 251, 255, 140, 255, 136, 255, 236, 255, 227, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 68, 255, 255, 255, 243, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 80, 255, 253, 255, 236, 255, 149, 255, 131, 255, 157, 255, 222, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 182, 255, 0, 255, 0, 255, 0, 255, 28, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 235, 255, 255, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 255, 255, 133, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 135, 255, 10, 255, 220, 255, 255, 255, 74, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 237, 255, 255, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 180, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 69, 255, 194, 255, 244, 255, 242, 255, 181, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 101, 255, 211, 255, 249, 255, 240, 255, 187, 255, 25, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 156, 255, 142, 255, 255, 255, 142, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 28, 255, 181, 255, 233, 255, 250, 255, 230, 255, 164, 255, 30, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 121, 255, 255, 255, 99, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 236, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 130, 255, 224, 255, 248, 255, 207, 255, 72, 255, 176, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 67, 255, 212, 255, 249, 255, 221, 255, 98, 255, 105, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 228, 255, 255, 255, 114, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 69, 255, 192, 255, 244, 255, 247, 255, 223, 255, 150, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 22, 255, 255, 255, 201, 255, 0, 255, 0, 255, 0, 255, 45, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 177, 255, 255, 255, 95, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 74, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 63, 255, 254, 255, 227, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 180, 255, 255, 255, 94, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 4, 255, 125, 255, 255, 255, 223, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 36, 255, 6, 255, 208, 255, 254, 255, 71, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 69, 255, 255, 255, 229, 255, 142, 255, 148, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 230, 255, 251, 255, 33, 255, 0, 255, 0, 255, 119, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 71, 255, 255, 255, 229, 255, 38, 255, 0, 255, 0, 255, 0, 255, 111, 255, 255, 255, 218, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 149, 255, 255, 255, 153, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 78, 255, 255, 255, 229, 255, 40, 255, 0, 255, 0, 255, 0, 255, 4, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 193, 255, 156, 255, 172, 255, 229, 255, 255, 255, 231, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 36, 255, 0, 255, 43, 255, 247, 255, 232, 255, 22, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 133, 255, 233, 255, 246, 255, 181, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 114, 255, 255, 255, 229, 255, 147, 255, 169, 255, 232, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 143, 255, 255, 255, 248, 255, 185, 255, 166, 255, 211, 255, 255, 255, 239, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 12, 255, 224, 255, 254, 255, 65, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 250, 255, 187, 255, 166, 255, 190, 255, 242, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 242, 255, 205, 255, 130, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 36, 255, 0, 255, 0, 255, 110, 255, 255, 255, 182, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 131, 255, 232, 255, 247, 255, 189, 255, 38, 255, 230, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 85, 255, 189, 255, 239, 255, 250, 255, 225, 255, 155, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 69, 255, 255, 255, 221, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 97, 255, 198, 255, 243, 255, 248, 255, 227, 255, 172, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 220, 255, 66, 255, 204, 255, 249, 255, 231, 255, 138, 255, 21, 255, 163, 255, 239, 255, 239, 255, 181, 255, 30, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 85, 255, 255, 255, 190, 255, 0, 255, 0, 255, 11, 255, 225, 255, 248, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 178, 255, 236, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 244, 255, 244, 255, 244, 255, 244, 255, 244, 255, 244, 255, 221, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 91, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 182, 255, 255, 255, 39, 255, 0, 255, 0, 255, 152, 255, 255, 255, 177, 255, 0, 255, 0, 255, 18, 255, 254, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 235, 255, 209, 255, 0, 255, 215, 255, 230, 255, 0, 255, 0, 255, 0, 255, 0, 255, 66, 255, 152, 255, 152, 255, 152, 255, 87, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 20, 255, 0, 255, 0, 255, 0, 255, 8, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 240, 255, 63, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 123, 255, 255, 255, 50, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 11, 255, 107, 255, 108, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 235, 255, 209, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 32, 255, 32, 255, 32, 255, 32, 255, 32, 255, 32, 255, 32, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 47, 255, 184, 255, 243, 255, 243, 255, 178, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 101, 255, 149, 255, 235, 255, 247, 255, 199, 255, 51, 255, 86, 255, 212, 255, 248, 255, 220, 255, 106, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 120, 255, 218, 255, 249, 255, 232, 255, 152, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 82, 255, 255, 255, 154, 255, 0, 255, 0, 255, 0, 255, 19, 255, 251, 255, 223, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 27, 255, 165, 255, 231, 255, 248, 255, 223, 255, 158, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 242, 255, 138, 255, 113, 255, 230, 255, 255, 255, 236, 255, 192, 255, 109, 255, 171, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 95, 255, 0, 255, 141, 255, 255, 255, 122, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 227, 255, 255, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 32, 255, 32, 255, 32, 255, 32, 255, 32, 255, 32, 255, 29, 255, 0, 255, 0, 255, 0, 255, 0, 255, 228, 255, 255, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 113, 255, 255, 255, 103, 255, 0, 255, 0, 255, 222, 255, 246, 255, 241, 255, 4, 255, 0, 255, 81, 255, 255, 255, 127, 255, 0, 255, 0, 255, 0, 255, 0, 255, 22, 255, 112, 255, 112, 255, 112, 255, 153, 255, 255, 255, 206, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 216, 255, 190, 255, 0, 255, 195, 255, 211, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 255, 255, 255, 255, 148, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 203, 255, 255, 255, 27, 255, 0, 255, 0, 255, 0, 255, 0, 255, 183, 255, 208, 255, 18, 255, 0, 255, 8, 255, 185, 255, 216, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 95, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 174, 255, 255, 255, 255, 255, 179, 255, 0, 255, 0, 255, 0, 255, 0, 255, 216, 255, 190, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 242, 255, 245, 255, 137, 255, 138, 255, 246, 255, 224, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 248, 255, 200, 255, 110, 255, 164, 255, 255, 255, 239, 255, 243, 255, 132, 255, 115, 255, 235, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 151, 255, 255, 255, 215, 255, 149, 255, 191, 255, 255, 255, 206, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 237, 255, 236, 255, 4, 255, 0, 255, 0, 255, 101, 255, 255, 255, 131, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 193, 255, 253, 255, 149, 255, 125, 255, 169, 255, 207, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 127, 255, 0, 255, 0, 255, 100, 255, 255, 255, 229, 255, 5, 255, 0, 255, 4, 255, 234, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 237, 255, 235, 255, 69, 255, 252, 255, 205, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 51, 255, 91, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 173, 255, 235, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 167, 255, 0, 255, 37, 255, 255, 255, 151, 255, 255, 255, 58, 255, 0, 255, 146, 255, 255, 255, 58, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 205, 255, 249, 255, 46, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 197, 255, 170, 255, 0, 255, 175, 255, 192, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 244, 255, 205, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 45, 255, 236, 255, 205, 255, 24, 255, 182, 255, 246, 255, 64, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 28, 255, 28, 255, 60, 255, 255, 255, 88, 255, 28, 255, 28, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 42, 255, 159, 255, 84, 255, 82, 255, 251, 255, 31, 255, 102, 255, 171, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 237, 255, 255, 255, 255, 255, 245, 255, 0, 255, 0, 255, 0, 255, 0, 255, 197, 255, 170, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 80, 255, 80, 255, 80, 255, 80, 255, 80, 255, 80, 255, 80, 255, 26, 255, 0, 255, 0, 255, 0, 255, 0, 255, 157, 255, 255, 255, 94, 255, 0, 255, 0, 255, 106, 255, 255, 255, 106, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 242, 255, 12, 255, 0, 255, 1, 255, 227, 255, 255, 255, 106, 255, 0, 255, 0, 255, 110, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 254, 255, 220, 255, 10, 255, 0, 255, 0, 255, 162, 255, 255, 255, 98, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 151, 255, 255, 255, 71, 255, 0, 255, 0, 255, 186, 255, 255, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 61, 255, 0, 255, 0, 255, 66, 255, 255, 255, 170, 255, 0, 255, 0, 255, 0, 255, 202, 255, 255, 255, 11, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 93, 255, 255, 255, 252, 255, 250, 255, 46, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 230, 255, 230, 255, 0, 255, 108, 255, 255, 255, 39, 255, 253, 255, 127, 255, 0, 255, 211, 255, 240, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 129, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 178, 255, 150, 255, 0, 255, 155, 255, 173, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 42, 255, 255, 255, 111, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 49, 255, 238, 255, 245, 255, 248, 255, 70, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 64, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 84, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 255, 23, 255, 0, 255, 0, 255, 0, 255, 0, 255, 218, 255, 255, 255, 255, 255, 223, 255, 0, 255, 0, 255, 0, 255, 0, 255, 178, 255, 150, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 32, 255, 32, 255, 32, 255, 32, 255, 32, 255, 32, 255, 32, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 221, 255, 255, 255, 34, 255, 20, 255, 20, 255, 59, 255, 255, 255, 154, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 189, 255, 0, 255, 0, 255, 0, 255, 194, 255, 255, 255, 42, 255, 0, 255, 0, 255, 74, 255, 255, 255, 139, 255, 0, 255, 0, 255, 0, 255, 0, 255, 94, 255, 255, 255, 139, 255, 0, 255, 0, 255, 0, 255, 69, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 58, 255, 255, 255, 158, 255, 0, 255, 20, 255, 251, 255, 199, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 164, 255, 255, 255, 215, 255, 101, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 42, 255, 0, 255, 0, 255, 64, 255, 255, 255, 152, 255, 0, 255, 0, 255, 0, 255, 200, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 234, 255, 255, 255, 187, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 162, 255, 255, 255, 38, 255, 179, 255, 216, 255, 0, 255, 205, 255, 195, 255, 19, 255, 254, 255, 175, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 51, 255, 251, 255, 197, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 30, 255, 0, 255, 31, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 99, 255, 248, 255, 18, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 185, 255, 255, 255, 209, 255, 11, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 19, 255, 76, 255, 76, 255, 101, 255, 255, 255, 123, 255, 76, 255, 76, 255, 29, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 31, 255, 229, 255, 251, 255, 177, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 79, 255, 231, 255, 232, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 30, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 170, 255, 0, 255, 0, 255, 0, 255, 192, 255, 255, 255, 24, 255, 0, 255, 0, 255, 72, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 110, 255, 255, 255, 118, 255, 0, 255, 0, 255, 0, 255, 47, 255, 255, 255, 183, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 219, 255, 238, 255, 5, 255, 101, 255, 255, 255, 105, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 126, 255, 237, 255, 255, 255, 239, 255, 95, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 64, 255, 255, 255, 152, 255, 0, 255, 0, 255, 0, 255, 200, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 125, 255, 255, 255, 233, 255, 255, 255, 73, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 93, 255, 255, 255, 95, 255, 242, 255, 147, 255, 0, 255, 136, 255, 251, 255, 86, 255, 255, 255, 106, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 213, 255, 244, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 165, 255, 250, 255, 126, 255, 244, 255, 190, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 153, 255, 246, 255, 101, 255, 255, 255, 87, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 76, 255, 76, 255, 76, 255, 76, 255, 76, 255, 76, 255, 76, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 222, 255, 253, 255, 72, 255, 68, 255, 68, 255, 68, 255, 68, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 192, 255, 255, 255, 24, 255, 0, 255, 0, 255, 72, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 89, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 69, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 127, 255, 255, 255, 72, 255, 183, 255, 249, 255, 18, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 10, 255, 107, 255, 242, 255, 253, 255, 41, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 64, 255, 255, 255, 152, 255, 0, 255, 0, 255, 0, 255, 200, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 249, 255, 213, 255, 32, 255, 241, 255, 227, 255, 15, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 91, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 255, 255, 179, 255, 255, 255, 76, 255, 0, 255, 68, 255, 255, 255, 182, 255, 255, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 141, 255, 255, 255, 105, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 153, 255, 252, 255, 85, 255, 0, 255, 63, 255, 245, 255, 182, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 43, 255, 251, 255, 154, 255, 1, 255, 213, 255, 226, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 85, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 192, 255, 255, 255, 24, 255, 0, 255, 0, 255, 72, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 252, 255, 224, 255, 11, 255, 0, 255, 0, 255, 162, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 34, 255, 255, 255, 154, 255, 248, 255, 174, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 0, 255, 0, 255, 0, 255, 131, 255, 255, 255, 81, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 64, 255, 255, 255, 152, 255, 0, 255, 0, 255, 0, 255, 200, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 203, 255, 254, 255, 59, 255, 0, 255, 106, 255, 255, 255, 157, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 228, 255, 255, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 211, 255, 250, 255, 249, 255, 12, 255, 0, 255, 8, 255, 246, 255, 250, 255, 223, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 59, 255, 253, 255, 237, 255, 112, 255, 112, 255, 112, 255, 112, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 85, 255, 91, 255, 0, 255, 0, 255, 0, 255, 65, 255, 111, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 39, 255, 33, 255, 0, 255, 52, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 32, 255, 237, 255, 250, 255, 165, 255, 130, 255, 148, 255, 203, 255, 66, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 192, 255, 255, 255, 24, 255, 0, 255, 0, 255, 72, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 134, 255, 255, 255, 217, 255, 148, 255, 189, 255, 255, 255, 211, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 243, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 232, 255, 164, 255, 124, 255, 130, 255, 232, 255, 244, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 64, 255, 255, 255, 152, 255, 0, 255, 0, 255, 0, 255, 200, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 255, 255, 152, 255, 0, 255, 0, 255, 2, 255, 198, 255, 255, 255, 71, 255, 0, 255, 0, 255, 0, 255, 0, 255, 173, 255, 235, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 142, 255, 255, 255, 191, 255, 0, 255, 0, 255, 0, 255, 186, 255, 255, 255, 154, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 169, 255, 236, 255, 250, 255, 232, 255, 172, 255, 30, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 192, 255, 255, 255, 24, 255, 0, 255, 0, 255, 72, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 107, 255, 213, 255, 248, 255, 232, 255, 155, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 103, 255, 255, 255, 236, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 155, 255, 225, 255, 248, 255, 237, 255, 189, 255, 61, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 63, 255, 165, 255, 220, 255, 247, 255, 231, 255, 184, 255, 83, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 232, 255, 54, 255, 199, 255, 248, 255, 229, 255, 122, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 222, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 99, 255, 196, 255, 240, 255, 251, 255, 152, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 214, 255, 253, 255, 22, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 255, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 249, 255, 225, 255, 163, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 108, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 124, 255, 0, 255, 0, 255, 0, 255, 0, 255, 207, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 147, 255, 255, 255, 101, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 202, 255, 234, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 156, 255, 228, 255, 254, 255, 255, 255, 255, 255, 255, 255, 156, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 90, 255, 215, 255, 248, 255, 232, 255, 76, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 116, 255, 214, 255, 246, 255, 231, 255, 188, 255, 95, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 122, 255, 218, 255, 247, 255, 224, 255, 142, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 39, 255, 153, 255, 220, 255, 247, 255, 240, 255, 210, 255, 140, 255, 21, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 167, 255, 221, 255, 247, 255, 220, 255, 122, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 154, 255, 253, 255, 180, 255, 104, 255, 76, 255, 93, 255, 167, 255, 252, 255, 167, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 193, 255, 156, 255, 156, 255, 156, 255, 151, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 237, 255, 136, 255, 113, 255, 215, 255, 255, 255, 102, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 242, 255, 255, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 168, 255, 255, 255, 227, 255, 156, 255, 146, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 129, 255, 255, 255, 102, 255, 0, 255, 0, 255, 0, 255, 0, 255, 119, 255, 255, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 191, 255, 152, 255, 163, 255, 217, 255, 255, 255, 233, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 168, 255, 168, 255, 168, 255, 168, 255, 168, 255, 217, 255, 255, 255, 98, 255, 0, 255, 0, 255, 0, 255, 0, 255, 109, 255, 255, 255, 132, 255, 0, 255, 0, 255, 1, 255, 229, 255, 248, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 255, 255, 147, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 186, 255, 251, 255, 105, 255, 67, 255, 201, 255, 255, 255, 139, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 27, 255, 251, 255, 242, 255, 148, 255, 160, 255, 26, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 154, 255, 255, 255, 226, 255, 172, 255, 193, 255, 246, 255, 161, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 141, 255, 255, 255, 193, 255, 125, 255, 180, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 87, 255, 248, 255, 255, 255, 220, 255, 172, 255, 183, 255, 226, 255, 237, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 125, 255, 164, 255, 164, 255, 201, 255, 255, 255, 205, 255, 164, 255, 164, 255, 133, 255, 0, 255, 0, 255, 0, 255, 0, 255, 153, 255, 244, 255, 184, 255, 157, 255, 218, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 234, 255, 61, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 67, 255, 248, 255, 127, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 115, 255, 0, 255, 0, 255, 31, 255, 252, 255, 219, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 106, 255, 253, 255, 199, 255, 195, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 96, 255, 255, 255, 172, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 184, 255, 0, 255, 0, 255, 0, 255, 0, 255, 201, 255, 255, 255, 31, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 3, 255, 201, 255, 255, 255, 77, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 216, 255, 240, 255, 11, 255, 0, 255, 0, 255, 0, 255, 0, 255, 18, 255, 248, 255, 220, 255, 0, 255, 0, 255, 59, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 255, 255, 180, 255, 0, 255, 0, 255, 68, 255, 255, 255, 129, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 255, 255, 148, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 249, 255, 233, 255, 12, 255, 0, 255, 0, 255, 12, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 226, 255, 231, 255, 5, 255, 0, 255, 0, 255, 205, 255, 250, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 43, 255, 248, 255, 251, 255, 99, 255, 0, 255, 0, 255, 0, 255, 0, 255, 29, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 15, 255, 0, 255, 0, 255, 14, 255, 248, 255, 201, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 67, 255, 254, 255, 70, 255, 0, 255, 96, 255, 217, 255, 249, 255, 234, 255, 188, 255, 17, 255, 123, 255, 243, 255, 11, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 55, 255, 0, 255, 0, 255, 0, 255, 210, 255, 255, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 67, 255, 169, 255, 9, 255, 185, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 203, 255, 246, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 215, 255, 250, 255, 16, 255, 0, 255, 0, 255, 27, 255, 254, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 162, 255, 255, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 74, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 168, 255, 255, 255, 53, 255, 0, 255, 143, 255, 255, 255, 79, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 218, 255, 221, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 32, 255, 255, 255, 168, 255, 0, 255, 0, 255, 56, 255, 255, 255, 137, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 68, 255, 188, 255, 246, 255, 228, 255, 147, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 109, 255, 233, 255, 255, 255, 255, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 254, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 215, 255, 239, 255, 10, 255, 0, 255, 1, 255, 212, 255, 241, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 74, 255, 192, 255, 247, 255, 229, 255, 122, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 160, 255, 255, 255, 133, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 249, 255, 193, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 171, 255, 194, 255, 0, 255, 80, 255, 255, 255, 148, 255, 64, 255, 147, 255, 255, 255, 19, 255, 25, 255, 255, 255, 78, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 194, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 254, 255, 184, 255, 0, 255, 14, 255, 21, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 130, 255, 255, 255, 92, 255, 0, 255, 0, 255, 108, 255, 255, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 8, 255, 64, 255, 238, 255, 234, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 186, 255, 254, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 69, 255, 255, 255, 141, 255, 1, 255, 226, 255, 236, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 54, 255, 255, 255, 131, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 218, 255, 240, 255, 51, 255, 14, 255, 162, 255, 255, 255, 67, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 235, 255, 188, 255, 147, 255, 222, 255, 255, 255, 135, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 77, 255, 151, 255, 255, 255, 188, 255, 108, 255, 70, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 195, 255, 255, 255, 150, 255, 15, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 99, 255, 255, 255, 190, 255, 58, 255, 164, 255, 255, 255, 111, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 239, 255, 176, 255, 152, 255, 234, 255, 255, 255, 102, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 229, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 177, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 241, 255, 117, 255, 0, 255, 205, 255, 193, 255, 0, 255, 0, 255, 110, 255, 255, 255, 8, 255, 0, 255, 240, 255, 110, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 66, 255, 0, 255, 0, 255, 0, 255, 219, 255, 255, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 49, 255, 255, 255, 154, 255, 168, 255, 253, 255, 255, 255, 225, 255, 71, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 45, 255, 255, 255, 174, 255, 0, 255, 0, 255, 190, 255, 255, 255, 31, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 206, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 42, 255, 255, 255, 184, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 224, 255, 221, 255, 54, 255, 255, 255, 150, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 145, 255, 255, 255, 41, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 46, 255, 236, 255, 255, 255, 255, 255, 242, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 155, 255, 0, 255, 0, 255, 33, 255, 255, 255, 209, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 38, 255, 223, 255, 255, 255, 243, 255, 142, 255, 23, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 255, 255, 255, 255, 106, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 138, 255, 0, 255, 0, 255, 44, 255, 254, 255, 219, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 254, 255, 241, 255, 0, 255, 0, 255, 0, 255, 133, 255, 164, 255, 164, 255, 164, 255, 64, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 196, 255, 253, 255, 110, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 255, 255, 86, 255, 2, 255, 248, 255, 130, 255, 0, 255, 0, 255, 125, 255, 253, 255, 0, 255, 0, 255, 238, 255, 113, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 191, 255, 152, 255, 152, 255, 152, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 149, 255, 0, 255, 0, 255, 55, 255, 255, 255, 215, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 63, 255, 255, 255, 247, 255, 185, 255, 101, 255, 123, 255, 243, 255, 243, 255, 26, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 216, 255, 245, 255, 10, 255, 19, 255, 252, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 183, 255, 140, 255, 147, 255, 192, 255, 255, 255, 202, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 154, 255, 255, 255, 76, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 156, 255, 255, 255, 57, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 232, 255, 206, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 123, 255, 236, 255, 51, 255, 34, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 67, 255, 0, 255, 0, 255, 0, 255, 240, 255, 234, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 10, 255, 120, 255, 232, 255, 255, 255, 238, 255, 59, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 57, 255, 231, 255, 239, 255, 167, 255, 248, 255, 236, 255, 69, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 62, 255, 0, 255, 0, 255, 0, 255, 214, 255, 255, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 255, 255, 238, 255, 0, 255, 0, 255, 0, 255, 208, 255, 255, 255, 255, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 136, 255, 254, 255, 83, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 255, 255, 78, 255, 1, 255, 246, 255, 131, 255, 0, 255, 0, 255, 165, 255, 246, 255, 0, 255, 20, 255, 254, 255, 74, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 245, 255, 180, 255, 153, 255, 237, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 55, 255, 255, 255, 193, 255, 1, 255, 0, 255, 0, 255, 122, 255, 255, 255, 97, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 131, 255, 255, 255, 82, 255, 97, 255, 255, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 138, 255, 255, 255, 130, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 18, 255, 246, 255, 222, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 31, 255, 254, 255, 251, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 71, 255, 255, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 161, 255, 249, 255, 165, 255, 152, 255, 149, 255, 122, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 236, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 133, 255, 255, 255, 219, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 10, 255, 234, 255, 228, 255, 30, 255, 0, 255, 38, 255, 224, 255, 246, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 194, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 235, 255, 254, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 116, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 193, 255, 205, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 251, 255, 110, 255, 0, 255, 186, 255, 216, 255, 30, 255, 59, 255, 243, 255, 255, 255, 47, 255, 136, 255, 233, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 78, 255, 198, 255, 248, 255, 227, 255, 117, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 171, 255, 0, 255, 0, 255, 0, 255, 90, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 46, 255, 255, 255, 157, 255, 172, 255, 255, 255, 31, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 79, 255, 255, 255, 171, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 121, 255, 255, 255, 117, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 187, 255, 255, 255, 128, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 162, 255, 253, 255, 27, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 115, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 236, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 211, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 65, 255, 255, 255, 131, 255, 0, 255, 0, 255, 0, 255, 100, 255, 255, 255, 101, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 64, 255, 0, 255, 0, 255, 0, 255, 216, 255, 255, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 174, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 116, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 46, 255, 45, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 195, 255, 187, 255, 0, 255, 41, 255, 222, 255, 255, 255, 250, 255, 107, 255, 174, 255, 255, 255, 241, 255, 73, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 205, 255, 242, 255, 30, 255, 0, 255, 0, 255, 159, 255, 255, 255, 82, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 217, 255, 220, 255, 229, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 145, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 227, 255, 246, 255, 18, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 182, 255, 255, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 243, 255, 190, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 130, 255, 252, 255, 79, 255, 5, 255, 0, 255, 10, 255, 117, 255, 255, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 236, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 21, 255, 41, 255, 0, 255, 0, 255, 0, 255, 15, 255, 234, 255, 245, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 61, 255, 255, 255, 163, 255, 0, 255, 0, 255, 0, 255, 130, 255, 255, 255, 91, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 146, 255, 0, 255, 0, 255, 47, 255, 255, 255, 215, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 67, 255, 255, 255, 236, 255, 52, 255, 0, 255, 0, 255, 0, 255, 116, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 79, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 84, 255, 255, 255, 90, 255, 0, 255, 3, 255, 38, 255, 18, 255, 0, 255, 1, 255, 40, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 196, 255, 160, 255, 160, 255, 160, 255, 155, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 67, 255, 251, 255, 233, 255, 155, 255, 186, 255, 255, 255, 213, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 255, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 193, 255, 156, 255, 161, 255, 206, 255, 255, 255, 244, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 89, 255, 255, 255, 157, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 46, 255, 253, 255, 188, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 88, 255, 255, 255, 99, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 226, 255, 0, 255, 0, 255, 0, 255, 0, 255, 80, 255, 255, 255, 106, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 236, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 198, 255, 164, 255, 164, 255, 164, 255, 164, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 56, 255, 255, 255, 215, 255, 175, 255, 167, 255, 230, 255, 255, 255, 134, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 215, 255, 255, 255, 170, 255, 120, 255, 157, 255, 251, 255, 226, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 243, 255, 180, 255, 152, 255, 234, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 135, 255, 255, 255, 253, 255, 193, 255, 162, 255, 184, 255, 231, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 253, 255, 255, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 149, 255, 253, 255, 150, 255, 57, 255, 20, 255, 24, 255, 51, 255, 109, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 248, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 199, 255, 245, 255, 225, 255, 154, 255, 18, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 47, 255, 255, 255, 255, 255, 31, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 253, 255, 227, 255, 170, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 200, 255, 255, 255, 49, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 99, 255, 148, 255, 235, 255, 249, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 179, 255, 248, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 137, 255, 255, 255, 156, 255, 85, 255, 89, 255, 134, 255, 239, 255, 226, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 236, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 160, 255, 222, 255, 245, 255, 239, 255, 201, 255, 94, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 148, 255, 222, 255, 247, 255, 225, 255, 157, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 212, 255, 51, 255, 198, 255, 248, 255, 228, 255, 118, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 79, 255, 186, 255, 238, 255, 251, 255, 236, 255, 210, 255, 152, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 208, 255, 220, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 94, 255, 213, 255, 255, 255, 255, 255, 255, 255, 255, 255, 222, 255, 91, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 150, 255, 247, 255, 208, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 133, 255, 219, 255, 247, 255, 247, 255, 216, 255, 143, 255, 23, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 51, 255, 48, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 245, 255, 31, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 227, 255, 255, 255, 124, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 78, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 243, 255, 201, 255, 101, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 96, 255, 214, 255, 248, 255, 220, 255, 108, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 90, 255, 215, 255, 249, 255, 250, 255, 91, 255, 197, 255, 214, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 90, 255, 215, 255, 249, 255, 250, 255, 91, 255, 0, 255, 127, 255, 226, 255, 251, 255, 249, 255, 61, 255, 228, 255, 171, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 190, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 1, 255, 208, 255, 255, 255, 54, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 26, 255, 148, 255, 225, 255, 248, 255, 217, 255, 118, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 74, 255, 181, 255, 237, 255, 247, 255, 218, 255, 129, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 200, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 75, 255, 220, 255, 235, 255, 131, 255, 0, 255, 0, 255, 0, 255, 13, 255, 234, 255, 139, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 201, 255, 255, 255, 29, 255, 0, 255, 0, 255, 0, 255, 134, 255, 255, 255, 154, 255, 0, 255, 0, 255, 0, 255, 4, 255, 245, 255, 231, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 53, 255, 255, 255, 51, 255, 0, 255, 213, 255, 135, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 175, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 65, 255, 255, 255, 249, 255, 215, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 163, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 226, 255, 255, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 193, 255, 158, 255, 185, 255, 251, 255, 255, 255, 121, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 63, 255, 177, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 86, 255, 255, 255, 230, 255, 157, 255, 219, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 27, 255, 251, 255, 242, 255, 148, 255, 158, 255, 22, 255, 214, 255, 230, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 27, 255, 251, 255, 242, 255, 148, 255, 158, 255, 22, 255, 75, 255, 255, 255, 225, 255, 143, 255, 151, 255, 20, 255, 242, 255, 188, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 59, 255, 255, 255, 201, 255, 0, 255, 0, 255, 0, 255, 83, 255, 255, 255, 177, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 14, 255, 232, 255, 255, 255, 205, 255, 167, 255, 227, 255, 255, 255, 133, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 242, 255, 239, 255, 177, 255, 158, 255, 223, 255, 255, 255, 156, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 111, 255, 255, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 238, 255, 186, 255, 131, 255, 255, 255, 71, 255, 0, 255, 0, 255, 127, 255, 241, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 137, 255, 255, 255, 89, 255, 0, 255, 0, 255, 0, 255, 202, 255, 255, 255, 223, 255, 0, 255, 0, 255, 0, 255, 54, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 93, 255, 254, 255, 11, 255, 3, 255, 249, 255, 94, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 225, 255, 255, 255, 74, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 157, 255, 252, 255, 144, 255, 255, 255, 50, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 202, 255, 241, 255, 7, 255, 0, 255, 0, 255, 0, 255, 59, 255, 255, 255, 223, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 57, 255, 255, 255, 234, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 34, 255, 214, 255, 254, 255, 171, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 211, 255, 251, 255, 35, 255, 0, 255, 18, 255, 237, 255, 231, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 255, 255, 148, 255, 0, 255, 0, 255, 0, 255, 4, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 255, 255, 148, 255, 0, 255, 0, 255, 0, 255, 122, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 7, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 184, 255, 255, 255, 76, 255, 0, 255, 1, 255, 210, 255, 254, 255, 46, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 100, 255, 63, 255, 0, 255, 0, 255, 20, 255, 243, 255, 234, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 55, 255, 12, 255, 0, 255, 0, 255, 16, 255, 244, 255, 241, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 31, 255, 244, 255, 207, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 71, 255, 0, 255, 235, 255, 148, 255, 0, 255, 19, 255, 241, 255, 125, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 73, 255, 255, 255, 149, 255, 0, 255, 0, 255, 16, 255, 252, 255, 233, 255, 255, 255, 36, 255, 0, 255, 0, 255, 113, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 134, 255, 225, 255, 0, 255, 38, 255, 255, 255, 53, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 255, 255, 220, 255, 8, 255, 0, 255, 0, 255, 176, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 240, 255, 199, 255, 48, 255, 255, 255, 141, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 129, 255, 255, 255, 77, 255, 0, 255, 0, 255, 0, 255, 147, 255, 253, 255, 146, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 229, 255, 255, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 83, 255, 205, 255, 253, 255, 165, 255, 38, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 255, 255, 195, 255, 0, 255, 0, 255, 0, 255, 162, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 109, 255, 233, 255, 255, 255, 255, 255, 255, 255, 168, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 109, 255, 233, 255, 255, 255, 255, 255, 255, 255, 168, 255, 149, 255, 245, 255, 255, 255, 255, 255, 255, 255, 116, 255, 16, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 53, 255, 255, 255, 205, 255, 0, 255, 87, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 217, 255, 255, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 236, 255, 230, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 184, 255, 219, 255, 119, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 81, 255, 255, 255, 51, 255, 0, 255, 212, 255, 172, 255, 0, 255, 141, 255, 234, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 251, 255, 209, 255, 0, 255, 0, 255, 82, 255, 255, 255, 138, 255, 255, 255, 106, 255, 0, 255, 0, 255, 173, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 20, 255, 179, 255, 191, 255, 20, 255, 91, 255, 255, 255, 33, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 44, 255, 171, 255, 255, 255, 127, 255, 0, 255, 0, 255, 176, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 83, 255, 255, 255, 119, 255, 0, 255, 220, 255, 230, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 59, 255, 248, 255, 162, 255, 0, 255, 0, 255, 2, 255, 231, 255, 188, 255, 128, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 5, 255, 244, 255, 246, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 72, 255, 195, 255, 252, 255, 160, 255, 27, 255, 0, 255, 0, 255, 0, 255, 0, 255, 59, 255, 255, 255, 157, 255, 0, 255, 0, 255, 0, 255, 122, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 77, 255, 151, 255, 255, 255, 188, 255, 108, 255, 70, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 77, 255, 151, 255, 255, 255, 188, 255, 108, 255, 70, 255, 99, 255, 182, 255, 255, 255, 158, 255, 108, 255, 48, 255, 16, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 178, 255, 255, 255, 82, 255, 214, 255, 252, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 251, 255, 211, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 32, 255, 149, 255, 255, 255, 109, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 93, 255, 255, 255, 67, 255, 118, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 64, 255, 255, 255, 62, 255, 0, 255, 226, 255, 156, 255, 28, 255, 247, 255, 111, 255, 0, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 201, 255, 253, 255, 15, 255, 0, 255, 150, 255, 255, 255, 32, 255, 248, 255, 175, 255, 0, 255, 0, 255, 231, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 50, 255, 30, 255, 246, 255, 247, 255, 34, 255, 0, 255, 176, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 175, 255, 255, 255, 35, 255, 0, 255, 135, 255, 255, 255, 67, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 49, 255, 179, 255, 240, 255, 6, 255, 0, 255, 66, 255, 255, 255, 98, 255, 134, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 1, 255, 28, 255, 155, 255, 255, 255, 156, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 89, 255, 228, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 75, 255, 255, 255, 143, 255, 0, 255, 0, 255, 0, 255, 108, 255, 255, 255, 109, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 16, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 47, 255, 254, 255, 242, 255, 255, 255, 159, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 162, 255, 255, 255, 97, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 148, 255, 255, 255, 255, 255, 237, 255, 91, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 21, 255, 236, 255, 158, 255, 0, 255, 120, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 17, 255, 246, 255, 144, 255, 68, 255, 255, 255, 103, 255, 155, 255, 225, 255, 30, 255, 194, 255, 250, 255, 212, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 136, 255, 255, 255, 73, 255, 0, 255, 218, 255, 213, 255, 0, 255, 191, 255, 240, 255, 3, 255, 36, 255, 255, 255, 169, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 68, 255, 81, 255, 255, 255, 125, 255, 68, 255, 207, 255, 187, 255, 68, 255, 64, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 0, 255, 126, 255, 255, 255, 180, 255, 0, 255, 174, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 249, 255, 206, 255, 0, 255, 0, 255, 50, 255, 255, 255, 158, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 51, 255, 94, 255, 255, 255, 76, 255, 0, 255, 153, 255, 248, 255, 15, 255, 136, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 175, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 26, 255, 129, 255, 231, 255, 251, 255, 166, 255, 51, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 75, 255, 255, 255, 142, 255, 0, 255, 0, 255, 0, 255, 107, 255, 255, 255, 110, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 16, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 171, 255, 255, 255, 250, 255, 33, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 111, 255, 255, 255, 175, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 78, 255, 139, 255, 161, 255, 231, 255, 253, 255, 125, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 198, 255, 164, 255, 164, 255, 164, 255, 164, 255, 197, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 167, 255, 232, 255, 17, 255, 0, 255, 120, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 114, 255, 255, 255, 255, 255, 199, 255, 48, 255, 251, 255, 97, 255, 145, 255, 226, 255, 12, 255, 181, 255, 194, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 73, 255, 255, 255, 133, 255, 29, 255, 255, 255, 145, 255, 0, 255, 121, 255, 255, 255, 57, 255, 95, 255, 255, 255, 105, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 20, 255, 90, 255, 254, 255, 39, 255, 24, 255, 244, 255, 118, 255, 20, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 0, 255, 8, 255, 223, 255, 255, 255, 78, 255, 168, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 101, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 15, 255, 249, 255, 161, 255, 4, 255, 236, 255, 174, 255, 0, 255, 136, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 188, 255, 148, 255, 218, 255, 250, 255, 41, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 169, 255, 251, 255, 241, 255, 140, 255, 29, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 59, 255, 255, 255, 156, 255, 0, 255, 0, 255, 0, 255, 122, 255, 255, 255, 94, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 16, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 150, 255, 255, 255, 76, 255, 0, 255, 0, 255, 0, 255, 0, 255, 108, 255, 255, 255, 118, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 62, 255, 255, 255, 179, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 91, 255, 254, 255, 194, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 11, 255, 215, 255, 255, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 75, 255, 255, 255, 86, 255, 0, 255, 0, 255, 120, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 26, 255, 44, 255, 3, 255, 169, 255, 215, 255, 3, 255, 207, 255, 172, 255, 0, 255, 110, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 252, 255, 189, 255, 93, 255, 255, 255, 77, 255, 0, 255, 52, 255, 255, 255, 122, 255, 153, 255, 255, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 160, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 0, 255, 0, 255, 82, 255, 255, 255, 223, 255, 167, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 193, 255, 255, 255, 167, 255, 164, 255, 164, 255, 164, 255, 208, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 0, 255, 181, 255, 240, 255, 79, 255, 255, 255, 83, 255, 0, 255, 136, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 56, 255, 254, 255, 199, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 64, 255, 225, 255, 115, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 19, 255, 255, 255, 193, 255, 0, 255, 0, 255, 0, 255, 159, 255, 255, 255, 57, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 16, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 106, 255, 0, 255, 0, 255, 0, 255, 0, 255, 142, 255, 255, 255, 95, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 81, 255, 251, 255, 198, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 161, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 220, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 49, 255, 254, 255, 83, 255, 0, 255, 225, 255, 163, 255, 0, 255, 100, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 202, 255, 240, 255, 147, 255, 251, 255, 13, 255, 0, 255, 2, 255, 236, 255, 176, 255, 209, 255, 233, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 42, 255, 68, 255, 205, 255, 191, 255, 68, 255, 144, 255, 251, 255, 69, 255, 68, 255, 27, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 187, 255, 255, 255, 247, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 29, 255, 254, 255, 206, 255, 0, 255, 0, 255, 0, 255, 0, 255, 65, 255, 255, 255, 175, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 0, 255, 96, 255, 255, 255, 223, 255, 241, 255, 8, 255, 0, 255, 136, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 152, 255, 255, 255, 113, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 11, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 202, 255, 250, 255, 32, 255, 0, 255, 15, 255, 234, 255, 238, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 16, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 65, 255, 255, 255, 211, 255, 15, 255, 0, 255, 0, 255, 30, 255, 236, 255, 252, 255, 27, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 73, 255, 249, 255, 200, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 21, 255, 12, 255, 0, 255, 0, 255, 0, 255, 11, 255, 221, 255, 255, 255, 51, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 99, 255, 144, 255, 144, 255, 144, 255, 144, 255, 196, 255, 255, 255, 179, 255, 123, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 183, 255, 204, 255, 1, 255, 0, 255, 203, 255, 184, 255, 0, 255, 126, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 139, 255, 255, 255, 217, 255, 197, 255, 0, 255, 0, 255, 0, 255, 169, 255, 224, 255, 248, 255, 170, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 222, 255, 130, 255, 0, 255, 141, 255, 214, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 42, 255, 251, 255, 255, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 119, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 231, 255, 249, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 0, 255, 17, 255, 250, 255, 255, 255, 159, 255, 0, 255, 0, 255, 136, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 16, 255, 233, 255, 245, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 73, 255, 254, 255, 228, 255, 152, 255, 216, 255, 255, 255, 118, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 16, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 175, 255, 255, 255, 234, 255, 176, 255, 181, 255, 243, 255, 255, 255, 125, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 43, 255, 247, 255, 255, 255, 190, 255, 176, 255, 176, 255, 176, 255, 176, 255, 79, 255, 0, 255, 0, 255, 0, 255, 0, 255, 84, 255, 244, 255, 179, 255, 146, 255, 155, 255, 227, 255, 255, 255, 179, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 61, 255, 255, 255, 69, 255, 0, 255, 0, 255, 131, 255, 246, 255, 101, 255, 222, 255, 194, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 75, 255, 255, 255, 255, 255, 129, 255, 0, 255, 0, 255, 0, 255, 100, 255, 255, 255, 255, 255, 107, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 253, 255, 87, 255, 0, 255, 184, 255, 171, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 143, 255, 255, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 210, 255, 255, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 147, 255, 255, 255, 102, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 52, 255, 0, 255, 0, 255, 182, 255, 255, 255, 69, 255, 0, 255, 0, 255, 136, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 91, 255, 255, 255, 190, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 86, 255, 212, 255, 249, 255, 224, 255, 119, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 16, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 120, 255, 213, 255, 249, 255, 241, 255, 195, 255, 86, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 165, 255, 224, 255, 247, 255, 237, 255, 203, 255, 107, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 255, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 191, 255, 0, 255, 0, 255, 0, 255, 13, 255, 172, 255, 242, 255, 202, 255, 41, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 252, 255, 255, 255, 61, 255, 0, 255, 0, 255, 0, 255, 31, 255, 255, 255, 255, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 45, 255, 0, 255, 227, 255, 129, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 85, 255, 255, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 57, 255, 254, 255, 105, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 84, 255, 188, 255, 238, 255, 249, 255, 224, 255, 155, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 114, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 134, 255, 227, 255, 248, 255, 210, 255, 93, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 255, 255, 255, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 255, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 185, 255, 240, 255, 233, 255, 156, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 90, 255, 215, 255, 248, 255, 232, 255, 76, 255, 0, 255, 127, 255, 226, 255, 249, 255, 223, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 106, 255, 255, 255, 166, 255, 0, 255, 0, 255, 0, 255, 0, 255, 167, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 84, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 123, 255, 228, 255, 247, 255, 191, 255, 43, 255, 240, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 22, 255, 130, 255, 211, 255, 241, 255, 222, 255, 161, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 90, 255, 215, 255, 248, 255, 232, 255, 76, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 179, 255, 248, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 73, 255, 254, 255, 193, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 234, 255, 231, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 182, 255, 234, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 14, 255, 235, 255, 182, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 163, 255, 243, 255, 25, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 143, 255, 255, 255, 250, 255, 190, 255, 170, 255, 214, 255, 255, 255, 239, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 133, 255, 255, 255, 187, 255, 172, 255, 172, 255, 172, 255, 91, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 149, 255, 255, 255, 210, 255, 155, 255, 223, 255, 255, 255, 102, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 158, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 239, 255, 104, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 61, 255, 104, 255, 194, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 226, 255, 247, 255, 148, 255, 180, 255, 255, 255, 148, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 27, 255, 251, 255, 242, 255, 148, 255, 160, 255, 26, 255, 75, 255, 255, 255, 225, 255, 144, 255, 156, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 202, 255, 255, 255, 60, 255, 0, 255, 0, 255, 60, 255, 255, 255, 186, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 53, 255, 164, 255, 164, 255, 164, 255, 164, 255, 164, 255, 240, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 106, 255, 255, 255, 233, 255, 152, 255, 179, 255, 237, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 58, 255, 227, 255, 139, 255, 41, 255, 7, 255, 25, 255, 102, 255, 222, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 27, 255, 251, 255, 242, 255, 148, 255, 160, 255, 26, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 88, 255, 255, 255, 99, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 42, 255, 238, 255, 152, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 201, 255, 200, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 231, 255, 255, 255, 71, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 71, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 53, 255, 255, 255, 130, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 72, 255, 255, 255, 231, 255, 41, 255, 0, 255, 0, 255, 0, 255, 115, 255, 255, 255, 218, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 153, 255, 255, 255, 33, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 253, 255, 210, 255, 5, 255, 0, 255, 15, 255, 224, 255, 237, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 29, 255, 153, 255, 250, 255, 227, 255, 57, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 43, 255, 255, 255, 153, 255, 0, 255, 2, 255, 241, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 255, 255, 148, 255, 0, 255, 0, 255, 0, 255, 122, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 50, 255, 252, 255, 206, 255, 2, 255, 2, 255, 206, 255, 248, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 69, 255, 255, 255, 199, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 226, 255, 254, 255, 42, 255, 0, 255, 0, 255, 136, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 29, 255, 229, 255, 62, 255, 24, 255, 174, 255, 242, 255, 244, 255, 174, 255, 22, 255, 208, 255, 89, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 255, 255, 148, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 243, 255, 190, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 32, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 55, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 90, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 207, 255, 233, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 215, 255, 225, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 178, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 197, 255, 255, 255, 74, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 66, 255, 255, 255, 137, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 65, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 147, 255, 249, 255, 219, 255, 100, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 254, 255, 192, 255, 0, 255, 45, 255, 254, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 109, 255, 233, 255, 255, 255, 255, 255, 255, 255, 168, 255, 149, 255, 245, 255, 255, 255, 255, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 146, 255, 255, 255, 101, 255, 102, 255, 255, 255, 128, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 10, 255, 221, 255, 250, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 255, 255, 205, 255, 0, 255, 0, 255, 0, 255, 51, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 161, 255, 116, 255, 0, 255, 194, 255, 226, 255, 84, 255, 76, 255, 100, 255, 0, 255, 38, 255, 229, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 109, 255, 233, 255, 255, 255, 255, 255, 255, 255, 168, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 162, 255, 253, 255, 27, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 28, 255, 145, 255, 215, 255, 246, 255, 229, 255, 160, 255, 21, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 80, 255, 201, 255, 247, 255, 241, 255, 179, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 253, 255, 173, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 154, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 236, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 255, 255, 133, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 192, 255, 252, 255, 120, 255, 137, 255, 107, 255, 33, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 63, 255, 255, 255, 145, 255, 0, 255, 0, 255, 0, 255, 130, 255, 255, 255, 97, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 141, 255, 247, 255, 211, 255, 90, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 168, 255, 255, 255, 145, 255, 233, 255, 240, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 77, 255, 151, 255, 255, 255, 188, 255, 108, 255, 70, 255, 99, 255, 182, 255, 255, 255, 158, 255, 108, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 14, 255, 230, 255, 234, 255, 235, 255, 219, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 129, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 182, 255, 0, 255, 0, 255, 0, 255, 28, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 237, 255, 12, 255, 39, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 78, 255, 0, 255, 0, 255, 0, 255, 0, 255, 77, 255, 151, 255, 255, 255, 188, 255, 108, 255, 70, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 71, 255, 255, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 203, 255, 150, 255, 120, 255, 160, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 88, 255, 255, 255, 236, 255, 155, 255, 168, 255, 251, 255, 240, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 59, 255, 255, 255, 125, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 105, 255, 255, 255, 78, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 255, 255, 246, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 91, 255, 255, 255, 159, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 197, 255, 255, 255, 255, 255, 255, 255, 255, 255, 247, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 18, 255, 245, 255, 236, 255, 56, 255, 10, 255, 77, 255, 241, 255, 255, 255, 106, 255, 0, 255, 0, 255, 0, 255, 0, 255, 54, 255, 253, 255, 242, 255, 105, 255, 11, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 55, 255, 255, 255, 255, 255, 223, 255, 43, 255, 0, 255, 0, 255, 5, 255, 8, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 95, 255, 255, 255, 255, 255, 74, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 50, 255, 252, 255, 214, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 22, 255, 255, 255, 200, 255, 0, 255, 0, 255, 0, 255, 43, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 40, 255, 208, 255, 0, 255, 70, 255, 255, 255, 51, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 125, 255, 119, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 232, 255, 206, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 211, 255, 241, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 223, 255, 253, 255, 41, 255, 0, 255, 0, 255, 98, 255, 255, 255, 162, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 79, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 85, 255, 255, 255, 98, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 255, 255, 245, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 91, 255, 255, 255, 154, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 39, 255, 7, 255, 21, 255, 106, 255, 253, 255, 246, 255, 18, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 106, 255, 252, 255, 255, 255, 255, 255, 248, 255, 169, 255, 255, 255, 92, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 150, 255, 245, 255, 240, 255, 144, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 72, 255, 245, 255, 247, 255, 232, 255, 249, 255, 78, 255, 0, 255, 0, 255, 216, 255, 249, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 157, 255, 255, 255, 255, 255, 128, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 206, 255, 254, 255, 59, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 230, 255, 251, 255, 32, 255, 0, 255, 0, 255, 118, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 40, 255, 207, 255, 0, 255, 48, 255, 255, 255, 74, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 125, 255, 119, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 145, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 29, 255, 161, 255, 226, 255, 248, 255, 252, 255, 255, 255, 255, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 30, 255, 255, 255, 203, 255, 0, 255, 0, 255, 0, 255, 7, 255, 254, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 86, 255, 255, 255, 98, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 78, 255, 255, 255, 105, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 235, 255, 255, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 255, 255, 128, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 46, 255, 109, 255, 112, 255, 36, 255, 129, 255, 255, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 19, 255, 124, 255, 232, 255, 254, 255, 184, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 236, 255, 250, 255, 58, 255, 36, 255, 228, 255, 250, 255, 80, 255, 52, 255, 255, 255, 177, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 58, 255, 254, 255, 177, 255, 211, 255, 248, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 118, 255, 255, 255, 149, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 114, 255, 255, 255, 227, 255, 143, 255, 165, 255, 235, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 237, 255, 12, 255, 6, 255, 223, 255, 194, 255, 32, 255, 24, 255, 58, 255, 0, 255, 0, 255, 174, 255, 79, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 54, 255, 255, 255, 131, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 211, 255, 255, 255, 136, 255, 61, 255, 44, 255, 212, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 46, 255, 255, 255, 182, 255, 0, 255, 0, 255, 0, 255, 0, 255, 239, 255, 247, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 202, 255, 255, 255, 27, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 68, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 97, 255, 255, 255, 86, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 177, 255, 255, 255, 95, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 65, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 160, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 240, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 98, 255, 212, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 255, 255, 189, 255, 0, 255, 0, 255, 37, 255, 229, 255, 250, 255, 214, 255, 253, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 4, 255, 208, 255, 247, 255, 32, 255, 66, 255, 255, 255, 190, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 34, 255, 246, 255, 227, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 131, 255, 232, 255, 248, 255, 191, 255, 80, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 162, 255, 112, 255, 0, 255, 58, 255, 226, 255, 255, 255, 255, 255, 178, 255, 0, 255, 36, 255, 230, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 218, 255, 221, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 50, 255, 255, 255, 187, 255, 0, 255, 0, 255, 0, 255, 220, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 255, 255, 204, 255, 0, 255, 0, 255, 0, 255, 7, 255, 254, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 244, 255, 206, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 255, 255, 152, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 71, 255, 255, 255, 229, 255, 38, 255, 0, 255, 0, 255, 0, 255, 111, 255, 255, 255, 215, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 30, 255, 0, 255, 0, 255, 0, 255, 21, 255, 232, 255, 251, 255, 22, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 114, 255, 255, 255, 142, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 42, 255, 255, 255, 222, 255, 6, 255, 0, 255, 0, 255, 50, 255, 251, 255, 255, 255, 170, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 114, 255, 255, 255, 128, 255, 0, 255, 0, 255, 173, 255, 255, 255, 93, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 187, 255, 255, 255, 77, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 30, 255, 229, 255, 59, 255, 0, 255, 2, 255, 37, 255, 39, 255, 1, 255, 20, 255, 207, 255, 93, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 59, 255, 255, 255, 174, 255, 0, 255, 0, 255, 47, 255, 253, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 211, 255, 253, 255, 45, 255, 0, 255, 0, 255, 98, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 41, 255, 255, 255, 113, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 232, 255, 211, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 192, 255, 245, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 143, 255, 255, 255, 248, 255, 185, 255, 166, 255, 211, 255, 255, 255, 239, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 253, 255, 195, 255, 157, 255, 164, 255, 236, 255, 255, 255, 135, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 87, 255, 142, 255, 140, 255, 201, 255, 255, 255, 204, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 195, 255, 255, 255, 201, 255, 126, 255, 149, 255, 229, 255, 255, 255, 247, 255, 250, 255, 83, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 26, 255, 242, 255, 224, 255, 9, 255, 0, 255, 0, 255, 32, 255, 247, 255, 234, 255, 18, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 140, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 87, 255, 255, 255, 243, 255, 164, 255, 164, 255, 164, 255, 164, 255, 164, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 59, 255, 227, 255, 137, 255, 40, 255, 5, 255, 24, 255, 102, 255, 224, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 255, 255, 147, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 237, 255, 251, 255, 140, 255, 136, 255, 236, 255, 227, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 73, 255, 253, 255, 238, 255, 155, 255, 166, 255, 251, 255, 243, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 99, 255, 248, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 151, 255, 255, 255, 38, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 250, 255, 169, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 85, 255, 189, 255, 239, 255, 255, 255, 255, 255, 213, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 150, 255, 221, 255, 246, 255, 246, 255, 203, 255, 99, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 251, 255, 245, 255, 209, 255, 124, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 137, 255, 220, 255, 249, 255, 238, 255, 185, 255, 80, 255, 38, 255, 229, 255, 251, 255, 86, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 170, 255, 255, 255, 83, 255, 0, 255, 0, 255, 0, 255, 0, 255, 131, 255, 255, 255, 156, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 145, 255, 255, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 176, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 132, 255, 212, 255, 242, 255, 224, 255, 165, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 224, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 202, 255, 234, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 67, 255, 212, 255, 249, 255, 221, 255, 98, 255, 105, 255, 255, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 69, 255, 194, 255, 244, 255, 242, 255, 181, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 40, 255, 253, 255, 143, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 122, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 22, 255, 223, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 231, 255, 28, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 28, 255, 163, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 198, 255, 255, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 139, 255, 248, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 240, 255, 157, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 41, 255, 239, 255, 253, 255, 87, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 204, 255, 255, 255, 255, 255, 228, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 255, 255, 255, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 180, 255, 202, 255, 255, 255, 201, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 72, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 29, 255, 72, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 57, 255, 128, 255, 122, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 76, 255, 76, 255, 67, 255, 0, 255, 0, 255, 0, 255, 0, 255, 45, 255, 76, 255, 76, 255, 76, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 45, 255, 233, 255, 237, 255, 175, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 149, 255, 236, 255, 31, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 119, 255, 216, 255, 202, 255, 0, 255, 0, 255, 0, 255, 0, 255, 158, 255, 224, 255, 136, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 244, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 255, 255, 255, 255, 253, 255, 240, 255, 200, 255, 107, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 210, 255, 205, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 58, 255, 171, 255, 240, 255, 238, 255, 180, 255, 34, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 157, 255, 234, 255, 248, 255, 203, 255, 69, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 125, 255, 222, 255, 250, 255, 221, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 64, 255, 172, 255, 243, 255, 240, 255, 160, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 82, 255, 87, 255, 220, 255, 247, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 89, 255, 187, 255, 232, 255, 244, 255, 207, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 121, 255, 203, 255, 240, 255, 238, 255, 187, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 108, 255, 139, 255, 233, 255, 247, 255, 190, 255, 41, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 146, 255, 48, 255, 199, 255, 248, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 156, 255, 101, 255, 215, 255, 248, 255, 219, 255, 110, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 99, 255, 141, 255, 230, 255, 245, 255, 203, 255, 67, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 168, 255, 95, 255, 219, 255, 249, 255, 213, 255, 77, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 165, 255, 248, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 86, 255, 255, 255, 218, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 85, 255, 207, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 62, 255, 144, 255, 252, 255, 173, 255, 136, 255, 67, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 243, 255, 152, 255, 155, 255, 181, 255, 248, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 227, 255, 221, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 248, 255, 178, 255, 108, 255, 160, 255, 255, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 208, 255, 255, 255, 162, 255, 124, 255, 225, 255, 251, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 150, 255, 255, 255, 194, 255, 121, 255, 196, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 246, 255, 163, 255, 109, 255, 184, 255, 255, 255, 166, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 184, 255, 254, 255, 218, 255, 194, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 126, 255, 178, 255, 132, 255, 124, 255, 222, 255, 252, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 177, 255, 163, 255, 124, 255, 138, 255, 244, 255, 227, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 246, 255, 196, 255, 110, 255, 151, 255, 254, 255, 224, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 204, 255, 234, 255, 232, 255, 197, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 248, 255, 236, 255, 127, 255, 113, 255, 226, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 248, 255, 209, 255, 114, 255, 131, 255, 247, 255, 242, 255, 22, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 247, 255, 225, 255, 118, 255, 125, 255, 242, 255, 252, 255, 41, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 139, 255, 255, 255, 51, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 255, 255, 151, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 127, 255, 255, 255, 236, 255, 253, 255, 214, 255, 248, 255, 219, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 224, 255, 0, 255, 0, 255, 0, 255, 76, 255, 255, 255, 205, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 197, 255, 0, 255, 0, 255, 0, 255, 212, 255, 255, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 93, 255, 255, 255, 158, 255, 0, 255, 0, 255, 43, 255, 255, 255, 170, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 31, 255, 253, 255, 218, 255, 4, 255, 0, 255, 6, 255, 228, 255, 233, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 179, 255, 0, 255, 0, 255, 2, 255, 217, 255, 253, 255, 30, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 255, 255, 102, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 83, 255, 255, 255, 114, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 147, 255, 255, 255, 50, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 235, 255, 8, 255, 0, 255, 0, 255, 156, 255, 255, 255, 91, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 255, 255, 161, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 255, 255, 69, 255, 0, 255, 0, 255, 84, 255, 255, 255, 145, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 111, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 244, 255, 16, 255, 0, 255, 0, 255, 148, 255, 255, 255, 81, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 255, 255, 51, 255, 0, 255, 0, 255, 92, 255, 255, 255, 155, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 246, 255, 225, 255, 11, 255, 244, 255, 24, 255, 10, 255, 38, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 224, 255, 0, 255, 0, 255, 0, 255, 34, 255, 255, 255, 203, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 127, 255, 0, 255, 0, 255, 0, 255, 174, 255, 255, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 157, 255, 255, 255, 92, 255, 20, 255, 20, 255, 20, 255, 236, 255, 218, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 93, 255, 255, 255, 151, 255, 20, 255, 20, 255, 20, 255, 177, 255, 255, 255, 26, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 119, 255, 0, 255, 0, 255, 0, 255, 146, 255, 255, 255, 73, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 208, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 98, 255, 200, 255, 241, 255, 251, 255, 253, 255, 255, 255, 135, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 133, 255, 215, 255, 245, 255, 252, 255, 254, 255, 255, 255, 71, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 183, 255, 0, 255, 0, 255, 0, 255, 82, 255, 255, 255, 137, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 255, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 252, 255, 2, 255, 0, 255, 0, 255, 46, 255, 255, 255, 170, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 162, 255, 241, 255, 242, 255, 165, 255, 118, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 191, 255, 0, 255, 0, 255, 0, 255, 110, 255, 255, 255, 106, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 247, 255, 0, 255, 0, 255, 0, 255, 18, 255, 255, 255, 201, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 244, 255, 237, 255, 32, 255, 244, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 224, 255, 0, 255, 1, 255, 25, 255, 157, 255, 255, 255, 119, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 106, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 51, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 108, 255, 0, 255, 0, 255, 0, 255, 130, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 170, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 89, 255, 255, 255, 213, 255, 85, 255, 49, 255, 106, 255, 255, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 153, 255, 255, 255, 178, 255, 69, 255, 45, 255, 159, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 66, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 234, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 234, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 212, 255, 148, 255, 203, 255, 241, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 170, 255, 0, 255, 0, 255, 0, 255, 108, 255, 255, 255, 108, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 236, 255, 0, 255, 0, 255, 0, 255, 3, 255, 255, 255, 224, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 180, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 10, 255, 254, 255, 191, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 255, 255, 248, 255, 253, 255, 79, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 255, 121, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 158, 255, 255, 255, 117, 255, 68, 255, 68, 255, 68, 255, 68, 255, 64, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 94, 255, 255, 255, 164, 255, 68, 255, 68, 255, 68, 255, 68, 255, 68, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 130, 255, 0, 255, 0, 255, 0, 255, 155, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 178, 255, 255, 255, 59, 255, 0, 255, 0, 255, 92, 255, 255, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 240, 255, 244, 255, 6, 255, 0, 255, 0, 255, 156, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 194, 255, 0, 255, 0, 255, 0, 255, 91, 255, 255, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 254, 255, 222, 255, 10, 255, 0, 255, 2, 255, 195, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 108, 255, 255, 255, 108, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 253, 255, 5, 255, 0, 255, 0, 255, 27, 255, 255, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 186, 255, 255, 255, 159, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 147, 255, 255, 255, 186, 255, 85, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 75, 255, 195, 255, 255, 255, 255, 255, 207, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 241, 255, 140, 255, 140, 255, 161, 255, 235, 255, 249, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 149, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 175, 255, 164, 255, 164, 255, 164, 255, 164, 255, 220, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 31, 255, 253, 255, 207, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 208, 255, 4, 255, 0, 255, 14, 255, 233, 255, 252, 255, 27, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 187, 255, 255, 255, 46, 255, 0, 255, 0, 255, 173, 255, 255, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 248, 255, 236, 255, 2, 255, 0, 255, 10, 255, 226, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 249, 255, 27, 255, 0, 255, 1, 255, 182, 255, 255, 255, 87, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 85, 255, 255, 255, 141, 255, 0, 255, 0, 255, 0, 255, 114, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 108, 255, 255, 255, 108, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 255, 255, 85, 255, 0, 255, 0, 255, 119, 255, 255, 255, 151, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 164, 255, 255, 255, 207, 255, 59, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 47, 255, 198, 255, 255, 255, 152, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 244, 255, 148, 255, 249, 255, 241, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 224, 255, 0, 255, 0, 255, 0, 255, 24, 255, 242, 255, 246, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 200, 255, 255, 255, 188, 255, 133, 255, 142, 255, 185, 255, 124, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 141, 255, 255, 255, 214, 255, 139, 255, 136, 255, 170, 255, 177, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 245, 255, 205, 255, 149, 255, 216, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 123, 255, 255, 255, 203, 255, 122, 255, 183, 255, 226, 255, 255, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 187, 255, 255, 255, 170, 255, 126, 255, 212, 255, 226, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 245, 255, 228, 255, 151, 255, 191, 255, 255, 255, 220, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 108, 255, 255, 255, 118, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 108, 255, 255, 255, 108, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 247, 255, 245, 255, 161, 255, 165, 255, 252, 255, 250, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 52, 255, 227, 255, 241, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 228, 255, 232, 255, 52, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 244, 255, 24, 255, 153, 255, 255, 255, 67, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 224, 255, 0, 255, 0, 255, 0, 255, 0, 255, 207, 255, 255, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 142, 255, 225, 255, 251, 255, 238, 255, 193, 255, 65, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 108, 255, 211, 255, 249, 255, 243, 255, 210, 255, 105, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 112, 255, 170, 255, 244, 255, 240, 255, 156, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 156, 255, 238, 255, 243, 255, 175, 255, 25, 255, 232, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 188, 255, 245, 255, 234, 255, 142, 255, 46, 255, 255, 255, 72, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 158, 255, 135, 255, 233, 255, 247, 255, 187, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 86, 255, 255, 255, 137, 255, 0, 255, 0, 255, 0, 255, 109, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 108, 255, 255, 255, 108, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 219, 255, 91, 255, 219, 255, 249, 255, 211, 255, 73, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 149, 255, 255, 255, 31, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 17, 255, 255, 255, 165, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 28, 255, 175, 255, 94, 255, 54, 255, 245, 255, 101, 255, 227, 255, 247, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 224, 255, 0, 255, 0, 255, 0, 255, 33, 255, 246, 255, 254, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 103, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 167, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 40, 255, 255, 255, 215, 255, 6, 255, 0, 255, 0, 255, 182, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 231, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 144, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 235, 255, 255, 255, 255, 255, 255, 255, 255, 255, 232, 255, 80, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 243, 255, 156, 255, 156, 255, 175, 255, 242, 255, 255, 255, 157, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 178, 255, 255, 255, 206, 255, 143, 255, 193, 255, 234, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 142, 255, 255, 255, 36, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 159, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 48, 255, 72, 255, 247, 255, 69, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 252, 255, 255, 255, 255, 255, 255, 255, 243, 255, 208, 255, 109, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 68, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 19, 255, 167, 255, 243, 255, 241, 255, 158, 255, 51, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 40, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 110, 255, 255, 255, 148, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 26, 255, 137, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 244, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 195, 255, 255, 255, 27, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 211, 255, 255, 255, 212, 255, 0, 255, 0, 255, 0, 255, 0, 255, 164, 255, 255, 255, 220, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 91, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 152, 255, 164, 255, 254, 255, 224, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 49, 255, 62, 255, 0, 255, 0, 255, 0, 255, 0, 255, 46, 255, 50, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 220, 255, 248, 255, 204, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 18, 255, 152, 255, 230, 255, 250, 255, 219, 255, 119, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 21, 255, 154, 255, 230, 255, 249, 255, 227, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 180, 255, 239, 255, 247, 255, 214, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 135, 255, 222, 255, 248, 255, 231, 255, 179, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 61, 255, 179, 255, 245, 255, 241, 255, 172, 255, 22, 255, 129, 255, 228, 255, 245, 255, 204, 255, 63, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 146, 255, 255, 255, 90, 255, 0, 255, 0, 255, 0, 255, 79, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 123, 255, 218, 255, 249, 255, 235, 255, 179, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 21, 255, 131, 255, 236, 255, 199, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 55, 255, 167, 255, 224, 255, 247, 255, 221, 255, 126, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 208, 255, 255, 255, 191, 255, 149, 255, 215, 255, 255, 255, 149, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 212, 255, 255, 255, 203, 255, 154, 255, 192, 255, 135, 255, 0, 255, 0, 255, 0, 255, 0, 255, 40, 255, 244, 255, 254, 255, 181, 255, 156, 255, 210, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 129, 255, 255, 255, 179, 255, 123, 255, 154, 255, 226, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 248, 255, 168, 255, 108, 255, 199, 255, 255, 255, 236, 255, 222, 255, 116, 255, 137, 255, 252, 255, 233, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 255, 255, 177, 255, 0, 255, 0, 255, 0, 255, 165, 255, 255, 255, 67, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 157, 255, 255, 255, 224, 255, 157, 255, 176, 255, 190, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 183, 255, 251, 255, 206, 255, 147, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 196, 255, 139, 255, 119, 255, 193, 255, 255, 255, 108, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 95, 255, 255, 255, 166, 255, 0, 255, 0, 255, 9, 255, 217, 255, 254, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 97, 255, 255, 255, 177, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 161, 255, 255, 255, 114, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 191, 255, 0, 255, 0, 255, 36, 255, 255, 255, 255, 255, 43, 255, 0, 255, 0, 255, 174, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 215, 255, 248, 255, 15, 255, 0, 255, 7, 255, 242, 255, 227, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 34, 255, 254, 255, 227, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 243, 255, 51, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 19, 255, 255, 255, 178, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 158, 255, 255, 255, 75, 255, 0, 255, 0, 255, 0, 255, 133, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 158, 255, 255, 255, 78, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 222, 255, 255, 255, 15, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 100, 255, 255, 255, 237, 255, 128, 255, 26, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 125, 255, 0, 255, 0, 255, 2, 255, 255, 255, 234, 255, 0, 255, 0, 255, 0, 255, 138, 255, 255, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 122, 255, 255, 255, 94, 255, 0, 255, 80, 255, 255, 255, 135, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 94, 255, 255, 255, 142, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 59, 255, 183, 255, 234, 255, 250, 255, 252, 255, 255, 255, 199, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 174, 255, 255, 255, 54, 255, 0, 255, 0, 255, 0, 255, 111, 255, 255, 255, 119, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 54, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 246, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 88, 255, 217, 255, 255, 255, 251, 255, 145, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 106, 255, 0, 255, 0, 255, 0, 255, 255, 255, 216, 255, 0, 255, 0, 255, 0, 255, 136, 255, 255, 255, 76, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 30, 255, 254, 255, 180, 255, 0, 255, 165, 255, 255, 255, 41, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 118, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 106, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 244, 255, 240, 255, 105, 255, 54, 255, 53, 255, 255, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 153, 255, 255, 255, 76, 255, 0, 255, 0, 255, 0, 255, 133, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 161, 255, 255, 255, 77, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 225, 255, 255, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 75, 255, 218, 255, 255, 255, 103, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 255, 255, 216, 255, 0, 255, 0, 255, 0, 255, 136, 255, 255, 255, 76, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 191, 255, 249, 255, 20, 255, 241, 255, 204, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 97, 255, 255, 255, 141, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 114, 255, 255, 255, 123, 255, 0, 255, 0, 255, 28, 255, 255, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 83, 255, 255, 255, 170, 255, 0, 255, 0, 255, 8, 255, 217, 255, 254, 255, 38, 255, 0, 255, 0, 255, 0, 255, 0, 255, 105, 255, 255, 255, 175, 255, 1, 255, 0, 255, 0, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 169, 255, 255, 255, 112, 255, 0, 255, 0, 255, 0, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 0, 255, 0, 255, 0, 255, 67, 255, 255, 255, 145, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 255, 255, 216, 255, 0, 255, 0, 255, 0, 255, 136, 255, 255, 255, 76, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 98, 255, 255, 255, 146, 255, 255, 255, 110, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 41, 255, 255, 255, 226, 255, 14, 255, 0, 255, 0, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 123, 255, 255, 255, 110, 255, 0, 255, 0, 255, 109, 255, 255, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 195, 255, 255, 255, 193, 255, 148, 255, 213, 255, 255, 255, 155, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 223, 255, 255, 255, 201, 255, 153, 255, 186, 255, 175, 255, 0, 255, 0, 255, 0, 255, 0, 255, 51, 255, 250, 255, 254, 255, 178, 255, 156, 255, 204, 255, 115, 255, 0, 255, 0, 255, 0, 255, 0, 255, 179, 255, 182, 255, 132, 255, 121, 255, 206, 255, 255, 255, 81, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 255, 255, 216, 255, 0, 255, 0, 255, 0, 255, 136, 255, 255, 255, 76, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 246, 255, 243, 255, 251, 255, 21, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 173, 255, 255, 255, 223, 255, 155, 255, 172, 255, 229, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 59, 255, 255, 255, 231, 255, 125, 255, 156, 255, 238, 255, 240, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 11, 255, 143, 255, 227, 255, 250, 255, 220, 255, 123, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 30, 255, 167, 255, 237, 255, 249, 255, 223, 255, 107, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 61, 255, 192, 255, 245, 255, 245, 255, 207, 255, 63, 255, 0, 255, 0, 255, 0, 255, 0, 255, 108, 255, 214, 255, 244, 255, 243, 255, 207, 255, 99, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 255, 255, 216, 255, 0, 255, 0, 255, 0, 255, 136, 255, 255, 255, 76, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 167, 255, 255, 255, 178, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 8, 255, 138, 255, 226, 255, 251, 255, 233, 255, 157, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 113, 255, 227, 255, 248, 255, 202, 255, 56, 255, 169, 255, 200, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 237, 255, 142, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 102, 255, 255, 255, 242, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 255, 255, 255, 255, 251, 255, 228, 255, 168, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 255, 255, 254, 255, 237, 255, 182, 255, 60, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 55, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 249, 255, 158, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 193, 255, 249, 255, 255, 255, 87, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 217, 255, 152, 255, 158, 255, 194, 255, 253, 255, 253, 255, 110, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 165, 255, 157, 255, 197, 255, 255, 255, 250, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 141, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 103, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 167, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 30, 255, 254, 255, 150, 255, 246, 255, 178, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 52, 255, 235, 255, 253, 255, 57, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 122, 255, 255, 255, 170, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 239, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 159, 255, 254, 255, 255, 255, 255, 255, 255, 255, 140, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 106, 255, 157, 255, 239, 255, 237, 255, 178, 255, 33, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 161, 255, 125, 255, 230, 255, 247, 255, 190, 255, 41, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 120, 255, 255, 255, 71, 255, 176, 255, 250, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 100, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 36, 255, 255, 255, 205, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 80, 255, 214, 255, 249, 255, 215, 255, 84, 255, 228, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 101, 255, 221, 255, 255, 255, 119, 255, 108, 255, 59, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 235, 255, 212, 255, 148, 255, 198, 255, 255, 255, 199, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 240, 255, 223, 255, 150, 255, 187, 255, 255, 255, 224, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 211, 255, 240, 255, 6, 255, 92, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 19, 255, 255, 255, 234, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 61, 255, 255, 255, 189, 255, 0, 255, 0, 255, 0, 255, 0, 255, 47, 255, 253, 255, 251, 255, 163, 255, 161, 255, 242, 255, 244, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 212, 255, 6, 255, 0, 255, 2, 255, 222, 255, 255, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 245, 255, 20, 255, 0, 255, 0, 255, 171, 255, 255, 255, 91, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 47, 255, 255, 255, 162, 255, 0, 255, 14, 255, 248, 255, 195, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 243, 255, 255, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 10, 255, 56, 255, 206, 255, 255, 255, 112, 255, 0, 255, 0, 255, 0, 255, 0, 255, 164, 255, 255, 255, 104, 255, 0, 255, 0, 255, 70, 255, 255, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 131, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 190, 255, 0, 255, 0, 255, 0, 255, 86, 255, 255, 255, 137, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 138, 255, 255, 255, 78, 255, 0, 255, 0, 255, 178, 255, 254, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 245, 255, 253, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 172, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 213, 255, 255, 255, 13, 255, 0, 255, 0, 255, 0, 255, 241, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 108, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 172, 255, 0, 255, 0, 255, 0, 255, 66, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 227, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 121, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 255, 255, 227, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 168, 255, 152, 255, 129, 255, 61, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 236, 255, 246, 255, 0, 255, 0, 255, 0, 255, 0, 255, 220, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 192, 255, 0, 255, 0, 255, 0, 255, 88, 255, 255, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 65, 255, 255, 255, 213, 255, 164, 255, 164, 255, 164, 255, 164, 255, 253, 255, 212, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 116, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 214, 255, 255, 255, 9, 255, 0, 255, 0, 255, 0, 255, 237, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 185, 255, 255, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 248, 255, 25, 255, 0, 255, 0, 255, 174, 255, 255, 255, 87, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 156, 255, 255, 255, 78, 255, 0, 255, 0, 255, 0, 255, 0, 255, 193, 255, 255, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 76, 255, 245, 255, 250, 255, 45, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 167, 255, 255, 255, 93, 255, 0, 255, 0, 255, 55, 255, 255, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 133, 255, 255, 255, 202, 255, 143, 255, 109, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 243, 255, 227, 255, 151, 255, 187, 255, 255, 255, 220, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 239, 255, 241, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 106, 255, 255, 255, 138, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 218, 255, 156, 255, 165, 255, 212, 255, 255, 255, 249, 255, 93, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 52, 255, 254, 255, 248, 255, 157, 255, 153, 255, 233, 255, 241, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 172, 255, 241, 255, 240, 255, 124, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 112, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 172, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 168, 255, 0, 255, 0, 255, 0, 255, 0, 255, 48, 255, 255, 255, 87, 255, 135, 255, 233, 255, 247, 255, 187, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 82, 255, 255, 255, 162, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 22, 255, 252, 255, 227, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 60, 255, 255, 255, 255, 255, 255, 255, 247, 255, 218, 255, 154, 255, 42, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 240, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 188, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 87, 255, 217, 255, 249, 255, 212, 255, 74, 255, 166, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 208, 255, 201, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 121, 255, 255, 255, 54, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 6, 255, 232, 255, 199, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 79, 255, 255, 255, 107, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 141, 255, 255, 255, 45, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 187, 255, 251, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 207, 255, 232, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 214, 255, 226, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 244, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 164, 255, 255, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 105, 255, 255, 255, 83, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 28, 255, 251, 255, 166, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 166, 255, 248, 255, 22, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 28, 255, 238, 255, 155, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 43, 255, 70, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0),
+"format": "LumAlpha8",
+"height": 256,
+"mipmaps": false,
+"width": 256
+}
+
+[sub_resource type="Image" id="Image_j7vsp"]
+data = {
+"data": PackedByteArray(255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 48, 255, 48, 255, 48, 255, 46, 255, 34, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 21, 255, 37, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 11, 255, 38, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 41, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 48, 255, 48, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 30, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 48, 255, 38, 255, 0, 255, 21, 255, 39, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 48, 255, 48, 255, 27, 255, 0, 255, 0, 255, 0, 255, 17, 255, 48, 255, 48, 255, 33, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 48, 255, 40, 255, 0, 255, 15, 255, 41, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 2, 255, 48, 255, 48, 255, 48, 255, 4, 255, 0, 255, 0, 255, 13, 255, 48, 255, 48, 255, 25, 255, 0, 255, 0, 255, 0, 255, 36, 255, 48, 255, 48, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 48, 255, 48, 255, 15, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 48, 255, 48, 255, 48, 255, 48, 255, 48, 255, 48, 255, 48, 255, 48, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 21, 255, 42, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 48, 255, 48, 255, 48, 255, 44, 255, 25, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 21, 255, 41, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 48, 255, 48, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 48, 255, 48, 255, 13, 255, 0, 255, 0, 255, 47, 255, 48, 255, 48, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 5, 255, 33, 255, 38, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 249, 255, 180, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 34, 255, 150, 255, 235, 255, 255, 255, 255, 255, 253, 255, 168, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 45, 255, 185, 255, 255, 255, 255, 255, 255, 255, 232, 255, 145, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 61, 255, 209, 255, 255, 255, 255, 255, 251, 255, 164, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 119, 255, 255, 255, 243, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 212, 255, 191, 255, 255, 255, 255, 255, 253, 255, 166, 255, 17, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 207, 255, 144, 255, 251, 255, 255, 255, 203, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 231, 255, 255, 255, 255, 255, 57, 255, 0, 255, 0, 255, 111, 255, 255, 255, 255, 255, 179, 255, 0, 255, 0, 255, 0, 255, 229, 255, 255, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 62, 255, 206, 255, 255, 255, 255, 255, 255, 255, 198, 255, 49, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 255, 105, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 62, 255, 205, 255, 255, 255, 255, 255, 255, 255, 215, 255, 93, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 72, 255, 0, 255, 0, 255, 252, 255, 255, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 47, 255, 172, 255, 250, 255, 255, 255, 255, 255, 250, 255, 187, 255, 85, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 238, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 80, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 230, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 244, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 51, 255, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 189, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 193, 255, 255, 255, 255, 255, 104, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 154, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 179, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 168, 255, 255, 255, 255, 255, 117, 255, 0, 255, 0, 255, 179, 255, 255, 255, 255, 255, 243, 255, 5, 255, 0, 255, 33, 255, 255, 255, 255, 255, 243, 255, 4, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 84, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 57, 255, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 255, 41, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 123, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 57, 255, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 107, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 72, 255, 0, 255, 0, 255, 252, 255, 255, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 77, 255, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 183, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 210, 255, 153, 255, 176, 255, 251, 255, 255, 255, 255, 255, 109, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 198, 255, 192, 255, 165, 255, 151, 255, 245, 255, 255, 255, 255, 255, 29, 255, 0, 255, 0, 255, 0, 255, 0, 255, 51, 255, 255, 255, 255, 255, 241, 255, 122, 255, 153, 255, 229, 255, 152, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 190, 255, 255, 255, 255, 255, 199, 255, 124, 255, 236, 255, 255, 255, 255, 255, 69, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 134, 255, 255, 255, 255, 255, 49, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 242, 255, 122, 255, 141, 255, 255, 255, 255, 255, 242, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 228, 255, 199, 255, 142, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 177, 255, 0, 255, 4, 255, 242, 255, 255, 255, 255, 255, 255, 255, 62, 255, 0, 255, 93, 255, 255, 255, 255, 255, 184, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 84, 255, 0, 255, 1, 255, 47, 255, 48, 255, 48, 255, 34, 255, 0, 255, 0, 255, 0, 255, 0, 255, 125, 255, 164, 255, 164, 255, 201, 255, 255, 255, 255, 255, 222, 255, 164, 255, 164, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 217, 255, 149, 255, 224, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 210, 255, 159, 255, 217, 255, 255, 255, 255, 255, 246, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 195, 255, 255, 255, 255, 255, 228, 255, 156, 255, 195, 255, 247, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 19, 255, 38, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 72, 255, 0, 255, 0, 255, 252, 255, 255, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 24, 255, 238, 255, 255, 255, 255, 255, 246, 255, 189, 255, 186, 255, 238, 255, 255, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 163, 255, 255, 255, 255, 255, 131, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 154, 255, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 53, 255, 0, 255, 0, 255, 0, 255, 0, 255, 28, 255, 255, 255, 255, 255, 255, 255, 201, 255, 93, 255, 9, 255, 13, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 14, 255, 253, 255, 255, 255, 255, 255, 87, 255, 68, 255, 155, 255, 255, 255, 255, 255, 136, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 133, 255, 0, 255, 0, 255, 244, 255, 255, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 191, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 40, 255, 255, 255, 255, 255, 235, 255, 1, 255, 60, 255, 255, 255, 255, 255, 255, 255, 255, 255, 131, 255, 0, 255, 152, 255, 255, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 84, 255, 0, 255, 142, 255, 255, 255, 255, 255, 245, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 16, 255, 254, 255, 255, 255, 253, 255, 27, 255, 0, 255, 41, 255, 255, 255, 255, 255, 250, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 11, 255, 242, 255, 255, 255, 255, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 254, 255, 255, 255, 255, 255, 40, 255, 0, 255, 0, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 248, 255, 254, 255, 255, 255, 253, 255, 164, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 72, 255, 0, 255, 0, 255, 252, 255, 255, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 131, 255, 255, 255, 255, 255, 233, 255, 42, 255, 0, 255, 0, 255, 8, 255, 94, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 165, 255, 48, 255, 68, 255, 218, 255, 255, 255, 255, 255, 93, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 154, 255, 255, 255, 255, 255, 255, 255, 255, 255, 227, 255, 66, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 160, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 96, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 165, 255, 48, 255, 48, 255, 48, 255, 122, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 99, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 231, 255, 255, 255, 255, 255, 41, 255, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 201, 255, 0, 255, 212, 255, 255, 255, 255, 255, 57, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 84, 255, 117, 255, 255, 255, 255, 255, 251, 255, 74, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 45, 255, 255, 255, 255, 255, 232, 255, 0, 255, 0, 255, 0, 255, 242, 255, 255, 255, 255, 255, 35, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 231, 255, 255, 255, 255, 255, 58, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 255, 255, 234, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 153, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 72, 255, 0, 255, 0, 255, 252, 255, 255, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 210, 255, 255, 255, 255, 255, 116, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 218, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 44, 255, 255, 255, 255, 255, 251, 255, 100, 255, 49, 255, 217, 255, 255, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 97, 255, 218, 255, 255, 255, 255, 255, 255, 255, 240, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 42, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 168, 255, 255, 255, 255, 255, 101, 255, 196, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 34, 255, 254, 255, 255, 255, 244, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 175, 255, 254, 255, 255, 255, 255, 255, 95, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 255, 255, 255, 255, 238, 255, 0, 255, 0, 255, 0, 255, 246, 255, 255, 255, 255, 255, 33, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 165, 255, 60, 255, 142, 255, 255, 255, 255, 255, 253, 255, 19, 255, 0, 255, 0, 255, 0, 255, 0, 255, 43, 255, 255, 255, 255, 255, 237, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 251, 255, 162, 255, 177, 255, 255, 255, 255, 255, 242, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 72, 255, 0, 255, 10, 255, 255, 255, 255, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 245, 255, 255, 255, 255, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 210, 255, 25, 255, 0, 255, 0, 255, 0, 255, 0, 255, 68, 255, 255, 255, 255, 255, 213, 255, 0, 255, 21, 255, 245, 255, 255, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 34, 255, 89, 255, 7, 255, 2, 255, 81, 255, 233, 255, 255, 255, 255, 255, 71, 255, 0, 255, 0, 255, 0, 255, 0, 255, 9, 255, 249, 255, 255, 255, 253, 255, 98, 255, 68, 255, 68, 255, 68, 255, 124, 255, 66, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 103, 255, 255, 255, 255, 255, 173, 255, 250, 255, 255, 255, 227, 255, 156, 255, 255, 255, 255, 255, 160, 255, 255, 255, 255, 255, 185, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 119, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 245, 255, 255, 255, 255, 255, 61, 255, 0, 255, 68, 255, 255, 255, 255, 255, 245, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 165, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 252, 255, 255, 255, 255, 255, 56, 255, 0, 255, 4, 255, 85, 255, 67, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 144, 255, 0, 255, 3, 255, 247, 255, 255, 255, 255, 255, 20, 255, 0, 255, 0, 255, 0, 255, 0, 255, 184, 255, 255, 255, 255, 255, 95, 255, 0, 255, 76, 255, 255, 255, 255, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 7, 255, 255, 255, 255, 255, 255, 255, 32, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 205, 255, 140, 255, 157, 255, 237, 255, 255, 255, 255, 255, 152, 255, 0, 255, 0, 255, 0, 255, 0, 255, 36, 255, 255, 255, 255, 255, 252, 255, 178, 255, 226, 255, 255, 255, 255, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 56, 255, 255, 255, 242, 255, 183, 255, 167, 255, 242, 255, 255, 255, 255, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 167, 255, 255, 255, 255, 255, 241, 255, 182, 255, 187, 255, 229, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 215, 255, 164, 255, 164, 255, 164, 255, 197, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 40, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 255, 87, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 122, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 233, 255, 9, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 161, 255, 255, 255, 255, 255, 244, 255, 197, 255, 245, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 182, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 184, 255, 255, 255, 255, 255, 246, 255, 201, 255, 237, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 98, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 146, 255, 255, 255, 255, 255, 239, 255, 191, 255, 246, 255, 255, 255, 255, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 249, 255, 255, 255, 255, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 89, 255, 255, 255, 255, 255, 211, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 190, 255, 255, 255, 255, 255, 255, 255, 255, 255, 229, 255, 255, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 56, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 202, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 25, 255, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 52, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 232, 255, 255, 255, 255, 255, 255, 255, 255, 255, 90, 255, 19, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 58, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 150, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 22, 255, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 228, 255, 26, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 212, 255, 150, 255, 124, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 43, 255, 241, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 100, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 40, 255, 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 210, 255, 255, 255, 255, 255, 109, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 118, 255, 255, 255, 255, 255, 214, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 163, 255, 234, 255, 245, 255, 196, 255, 78, 255, 255, 255, 255, 255, 56, 255, 0, 255, 0, 255, 0, 255, 0, 255, 15, 255, 127, 255, 206, 255, 238, 255, 245, 255, 214, 255, 130, 255, 15, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 21, 255, 145, 255, 223, 255, 250, 255, 239, 255, 207, 255, 124, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 169, 255, 255, 255, 255, 255, 255, 255, 255, 255, 23, 255, 0, 255, 204, 255, 255, 255, 255, 255, 255, 255, 245, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 176, 255, 254, 255, 255, 255, 255, 255, 79, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 20, 255, 146, 255, 225, 255, 250, 255, 229, 255, 154, 255, 26, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 41, 255, 170, 255, 235, 255, 250, 255, 229, 255, 162, 255, 29, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 61, 255, 193, 255, 238, 255, 241, 255, 176, 255, 143, 255, 255, 255, 255, 255, 12, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 137, 255, 255, 255, 255, 255, 234, 255, 59, 255, 0, 255, 0, 255, 10, 255, 75, 255, 48, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 233, 255, 204, 255, 219, 255, 255, 255, 255, 255, 255, 255, 154, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 106, 255, 255, 255, 255, 255, 255, 255, 210, 255, 0, 255, 0, 255, 134, 255, 255, 255, 255, 255, 255, 255, 187, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 84, 255, 142, 255, 255, 255, 255, 255, 236, 255, 26, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 28, 255, 242, 255, 255, 255, 255, 255, 255, 255, 229, 255, 222, 255, 250, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 230, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 43, 255, 255, 255, 255, 255, 255, 255, 142, 255, 0, 255, 0, 255, 65, 255, 255, 255, 255, 255, 255, 255, 123, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 84, 255, 7, 255, 210, 255, 255, 255, 255, 255, 189, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 78, 255, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 251, 255, 223, 255, 149, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 92, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 1, 255, 234, 255, 255, 255, 255, 255, 74, 255, 0, 255, 0, 255, 6, 255, 244, 255, 255, 255, 255, 255, 59, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 84, 255, 0, 255, 45, 255, 248, 255, 255, 255, 255, 255, 119, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 104, 255, 255, 255, 255, 255, 164, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 236, 255, 255, 255, 255, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 40, 255, 158, 255, 225, 255, 249, 255, 237, 255, 207, 255, 141, 255, 33, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 48, 255, 41, 255, 0, 255, 20, 255, 40, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 33, 255, 48, 255, 48, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 23, 255, 48, 255, 48, 255, 48, 255, 46, 255, 30, 255, 3, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 3, 255, 34, 255, 48, 255, 48, 255, 48, 255, 48, 255, 38, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 31, 255, 48, 255, 24, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 229, 255, 161, 255, 254, 255, 255, 255, 246, 255, 133, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 241, 255, 164, 255, 37, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 11, 255, 142, 255, 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 218, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 242, 255, 66, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 163, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 204, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 49, 255, 255, 255, 255, 255, 155, 255, 48, 255, 47, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 233, 255, 114, 255, 163, 255, 255, 255, 255, 255, 238, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 18, 255, 40, 255, 10, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 210, 255, 155, 255, 191, 255, 250, 255, 255, 255, 255, 255, 237, 255, 21, 255, 0, 255, 0, 255, 0, 255, 0, 255, 13, 255, 252, 255, 255, 255, 247, 255, 78, 255, 143, 255, 255, 255, 255, 255, 163, 255, 14, 255, 0, 255, 0, 255, 0, 255, 0, 255, 93, 255, 238, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 119, 255, 0, 255, 2, 255, 230, 255, 255, 255, 255, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 228, 255, 252, 255, 255, 255, 246, 255, 133, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 50, 255, 239, 255, 255, 255, 255, 255, 129, 255, 0, 255, 0, 255, 0, 255, 0, 255, 37, 255, 255, 255, 255, 255, 210, 255, 0, 255, 51, 255, 255, 255, 255, 255, 196, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 91, 255, 0, 255, 0, 255, 195, 255, 255, 255, 255, 255, 81, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 120, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 128, 255, 255, 255, 255, 255, 201, 255, 0, 255, 0, 255, 0, 255, 0, 255, 12, 255, 251, 255, 255, 255, 245, 255, 71, 255, 141, 255, 255, 255, 255, 255, 169, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 74, 255, 184, 255, 255, 255, 255, 255, 184, 255, 108, 255, 106, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 100, 255, 0, 255, 0, 255, 203, 255, 255, 255, 255, 255, 78, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 246, 255, 153, 255, 198, 255, 255, 255, 255, 255, 238, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 71, 255, 255, 255, 255, 255, 236, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 253, 255, 65, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 161, 255, 0, 255, 26, 255, 249, 255, 255, 255, 255, 255, 44, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 131, 255, 0, 255, 7, 255, 238, 255, 255, 255, 255, 255, 55, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 53, 255, 255, 255, 255, 255, 246, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 93, 255, 255, 255, 255, 255, 255, 255, 255, 255, 217, 255, 75, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 205, 255, 231, 255, 255, 255, 255, 255, 222, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 94, 255, 0, 255, 0, 255, 196, 255, 255, 255, 255, 255, 81, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 83, 255, 255, 255, 255, 255, 229, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 182, 255, 255, 255, 255, 255, 243, 255, 218, 255, 188, 255, 149, 255, 39, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 132, 255, 255, 255, 255, 255, 132, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 255, 82, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 99, 255, 0, 255, 0, 255, 201, 255, 255, 255, 255, 255, 78, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 0, 255, 0, 255, 165, 255, 255, 255, 255, 255, 180, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 157, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 246, 255, 43, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 129, 255, 255, 255, 255, 255, 134, 255, 0, 255, 6, 255, 2, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 184, 255, 227, 255, 248, 255, 207, 255, 82, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 158, 255, 0, 255, 21, 255, 246, 255, 255, 255, 255, 255, 45, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 144, 255, 0, 255, 4, 255, 119, 255, 254, 255, 255, 255, 255, 255, 96, 255, 0, 255, 0, 255, 0, 255, 0, 255, 91, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 145, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 101, 255, 255, 255, 255, 255, 236, 255, 194, 255, 244, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 255, 255, 204, 255, 229, 255, 255, 255, 255, 255, 224, 255, 1, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 233, 255, 213, 255, 248, 255, 255, 255, 255, 255, 255, 255, 206, 255, 5, 255, 0, 255, 0, 255, 0, 255, 0, 255, 189, 255, 255, 255, 255, 255, 52, 255, 0, 255, 1, 255, 80, 255, 255, 255, 255, 255, 170, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 29, 255, 247, 255, 255, 255, 255, 255, 255, 255, 255, 255, 16, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 249, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 86, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 207, 255, 28, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 189, 255, 255, 255, 255, 255, 169, 255, 128, 255, 148, 255, 230, 255, 255, 255, 255, 255, 119, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 70, 255, 205, 255, 246, 255, 237, 255, 172, 255, 7, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 189, 255, 117, 255, 229, 255, 248, 255, 208, 255, 85, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 124, 255, 255, 255, 255, 255, 255, 255, 251, 255, 233, 255, 185, 255, 100, 255, 6, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 88, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 203, 255, 11, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 176, 255, 255, 255, 255, 255, 88, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 71, 255, 183, 255, 230, 255, 251, 255, 239, 255, 196, 255, 111, 255, 8, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0, 255, 0),
+"format": "LumAlpha8",
+"height": 256,
+"mipmaps": false,
+"width": 256
+}
+
+[sub_resource type="FontFile" id="FontFile_q72mg"]
+data = PackedByteArray(119, 79, 70, 50, 0, 1, 0, 0, 0, 0, 181, 56, 0, 17, 0, 0, 0, 1, 141, 20, 0, 0, 180, 215, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 46, 27, 16, 28, 133, 110, 6, 96, 0, 135, 8, 8, 129, 38, 9, 143, 52, 17, 12, 10, 133, 131, 116, 132, 179, 17, 11, 142, 86, 0, 1, 54, 2, 36, 3, 157, 26, 4, 32, 5, 135, 118, 7, 190, 3, 12, 130, 24, 91, 47, 92, 113, 7, 235, 182, 221, 159, 168, 132, 244, 102, 85, 245, 3, 28, 214, 135, 78, 5, 219, 213, 131, 158, 219, 212, 113, 54, 85, 230, 2, 5, 199, 117, 183, 3, 36, 237, 164, 39, 6, 255, 255, 255, 255, 217, 201, 66, 14, 189, 251, 112, 255, 73, 4, 80, 218, 213, 180, 27, 100, 185, 204, 8, 228, 40, 138, 42, 100, 4, 156, 125, 40, 8, 142, 220, 20, 144, 100, 72, 202, 236, 24, 115, 84, 241, 52, 47, 235, 220, 182, 134, 157, 131, 39, 22, 185, 179, 211, 50, 110, 235, 163, 140, 24, 12, 103, 217, 59, 31, 36, 35, 227, 116, 30, 118, 156, 193, 15, 65, 79, 56, 10, 63, 188, 131, 106, 229, 44, 137, 171, 210, 94, 74, 223, 4, 199, 207, 155, 2, 65, 163, 181, 227, 197, 245, 105, 171, 131, 69, 253, 240, 139, 15, 22, 255, 178, 32, 37, 222, 44, 86, 119, 219, 176, 223, 106, 34, 199, 91, 166, 32, 39, 57, 11, 46, 75, 50, 5, 217, 185, 198, 230, 75, 105, 56, 48, 178, 195, 201, 73, 220, 78, 44, 31, 120, 14, 167, 117, 224, 157, 21, 198, 152, 36, 156, 214, 215, 94, 172, 103, 15, 175, 99, 32, 97, 252, 142, 23, 242, 212, 80, 76, 201, 252, 147, 169, 116, 165, 77, 9, 215, 220, 69, 244, 224, 54, 181, 205, 156, 27, 74, 15, 7, 76, 50, 202, 188, 6, 213, 154, 62, 39, 171, 203, 13, 197, 186, 255, 173, 112, 183, 62, 61, 244, 4, 239, 93, 216, 110, 74, 125, 89, 6, 198, 46, 131, 18, 109, 196, 138, 115, 94, 248, 151, 250, 251, 248, 95, 73, 118, 82, 231, 65, 192, 151, 167, 127, 40, 143, 36, 204, 4, 116, 223, 202, 1, 175, 155, 127, 111, 36, 121, 164, 105, 26, 225, 41, 70, 8, 59, 13, 54, 96, 152, 163, 13, 41, 62, 66, 8, 240, 136, 152, 31, 129, 66, 154, 198, 252, 212, 29, 134, 17, 17, 23, 34, 141, 84, 113, 80, 204, 167, 184, 40, 141, 116, 229, 35, 63, 142, 25, 55, 166, 20, 16, 23, 93, 212, 34, 206, 84, 113, 124, 234, 231, 35, 108, 249, 154, 245, 64, 3, 104, 52, 218, 191, 126, 134, 228, 144, 195, 113, 146, 118, 61, 191, 243, 210, 119, 226, 108, 137, 107, 131, 228, 162, 112, 21, 102, 151, 110, 120, 113, 118, 255, 167, 86, 86, 63, 240, 35, 2, 8, 32, 128, 80, 136, 8, 168, 4, 18, 169, 42, 75, 117, 118, 87, 118, 147, 172, 85, 149, 43, 174, 42, 57, 93, 61, 228, 156, 167, 250, 145, 134, 199, 29, 195, 226, 26, 30, 199, 240, 184, 134, 55, 66, 153, 171, 122, 104, 177, 79, 40, 243, 206, 48, 111, 250, 220, 236, 95, 26, 44, 88, 18, 124, 233, 18, 30, 193, 19, 52, 105, 192, 67, 240, 32, 45, 181, 236, 20, 232, 138, 178, 38, 118, 184, 237, 233, 203, 173, 221, 239, 55, 191, 173, 157, 190, 248, 220, 117, 238, 58, 0, 122, 155, 63, 243, 198, 204, 187, 115, 238, 188, 155, 251, 231, 231, 36, 231, 38, 183, 228, 53, 140, 188, 144, 205, 25, 33, 239, 206, 31, 121, 39, 47, 47, 84, 110, 228, 55, 47, 81, 42, 105, 98, 157, 177, 204, 205, 57, 195, 47, 105, 224, 117, 165, 184, 0, 8, 1, 5, 230, 70, 43, 84, 8, 45, 211, 226, 197, 124, 187, 41, 40, 99, 251, 50, 168, 81, 2, 244, 44, 185, 126, 47, 114, 17, 6, 50, 8, 104, 174, 44, 208, 241, 6, 128, 15, 55, 207, 44, 220, 136, 188, 240, 39, 132, 255, 214, 216, 10, 89, 33, 59, 48, 207, 254, 218, 38, 243, 244, 115, 195, 17, 179, 165, 20, 91, 229, 124, 145, 2, 16, 24, 128, 185, 213, 204, 155, 72, 198, 136, 136, 17, 185, 72, 22, 197, 232, 177, 72, 114, 108, 192, 136, 30, 17, 173, 116, 9, 152, 128, 5, 6, 218, 127, 167, 94, 24, 249, 96, 54, 40, 115, 150, 82, 198, 228, 132, 241, 23, 234, 46, 36, 6, 254, 87, 53, 5, 64, 181, 66, 185, 52, 186, 128, 254, 166, 92, 74, 131, 10, 104, 233, 241, 90, 1, 108, 39, 1, 175, 82, 153, 110, 74, 169, 220, 114, 15, 231, 76, 251, 103, 170, 46, 211, 173, 105, 195, 222, 199, 27, 147, 213, 173, 184, 49, 197, 222, 31, 230, 120, 39, 172, 132, 240, 72, 45, 214, 250, 119, 217, 46, 199, 45, 142, 193, 68, 177, 212, 39, 26, 255, 73, 43, 224, 137, 163, 119, 243, 255, 103, 54, 9, 144, 153, 93, 150, 148, 167, 254, 253, 254, 62, 34, 216, 41, 21, 10, 180, 28, 241, 146, 204, 79, 194, 125, 10, 237, 83, 215, 200, 53, 247, 247, 173, 182, 60, 246, 4, 118, 13, 33, 88, 181, 4, 157, 244, 197, 19, 6, 15, 115, 102, 146, 221, 35, 201, 46, 50, 74, 154, 108, 188, 203, 7, 148, 2, 58, 153, 215, 247, 224, 123, 252, 39, 120, 45, 96, 37, 75, 182, 75, 225, 242, 160, 249, 220, 63, 229, 170, 149, 239, 18, 216, 204, 150, 89, 66, 12, 251, 251, 127, 58, 155, 214, 188, 189, 62, 222, 77, 169, 199, 180, 178, 81, 224, 128, 8, 4, 249, 181, 113, 187, 4, 8, 24, 120, 104, 179, 51, 32, 66, 218, 190, 76, 131, 232, 172, 203, 206, 185, 255, 95, 169, 150, 215, 106, 0, 45, 182, 226, 2, 27, 161, 221, 181, 205, 121, 54, 159, 225, 44, 141, 159, 239, 20, 37, 57, 197, 136, 254, 93, 133, 2, 186, 145, 152, 36, 0, 220, 208, 4, 37, 139, 162, 54, 128, 77, 74, 38, 1, 5, 84, 53, 224, 71, 128, 228, 4, 133, 77, 233, 228, 16, 2, 8, 210, 26, 8, 147, 72, 128, 210, 82, 105, 2, 56, 81, 154, 77, 33, 79, 204, 71, 231, 163, 215, 231, 155, 102, 156, 242, 213, 135, 219, 101, 159, 239, 249, 232, 255, 179, 156, 149, 86, 33, 181, 167, 133, 97, 30, 246, 204, 29, 65, 180, 120, 143, 51, 72, 142, 59, 200, 55, 10, 186, 254, 175, 82, 87, 85, 119, 11, 245, 33, 44, 181, 4, 6, 201, 120, 132, 24, 188, 66, 194, 51, 66, 115, 117, 35, 230, 61, 132, 29, 200, 120, 15, 198, 123, 221, 217, 4, 161, 96, 110, 246, 196, 123, 30, 209, 236, 132, 27, 68, 187, 65, 184, 65, 182, 254, 151, 106, 218, 98, 255, 251, 123, 1, 75, 92, 132, 36, 231, 80, 169, 232, 14, 29, 203, 117, 119, 85, 201, 3, 255, 14, 78, 216, 253, 74, 0, 157, 40, 43, 133, 202, 173, 203, 163, 42, 208, 21, 206, 145, 173, 155, 210, 189, 224, 169, 191, 84, 255, 220, 254, 151, 190, 252, 129, 35, 26, 75, 208, 174, 149, 61, 59, 145, 140, 135, 91, 29, 143, 90, 192, 131, 33, 0, 206, 165, 235, 219, 246, 69, 15, 228, 81, 101, 18, 201, 244, 4, 197, 214, 42, 207, 109, 146, 75, 14, 137, 49, 117, 107, 4, 212, 164, 167, 127, 41, 134, 106, 40, 66, 105, 13, 101, 214, 225, 160, 85, 120, 92, 54, 174, 227, 156, 208, 191, 219, 42, 181, 18, 185, 142, 93, 99, 134, 18, 162, 98, 25, 171, 84, 85, 24, 186, 147, 111, 159, 108, 143, 135, 173, 170, 16, 129, 36, 150, 93, 6, 145, 92, 232, 28, 175, 121, 238, 254, 140, 237, 115, 110, 250, 163, 46, 13, 74, 65, 30, 241, 72, 185, 219, 177, 159, 214, 159, 183, 184, 173, 169, 137, 24, 52, 98, 137, 13, 148, 25, 102, 36, 254, 191, 114, 140, 169, 133, 52, 106, 58, 246, 219, 41, 142, 76, 7, 42, 243, 184, 3, 253, 250, 158, 31, 255, 57, 13, 251, 245, 134, 165, 98, 68, 84, 68, 69, 69, 85, 197, 184, 253, 49, 0, 54, 134, 187, 66, 14, 12, 0, 143, 5, 65, 227, 119, 217, 28, 201, 190, 200, 94, 28, 149, 78, 108, 99, 28, 86, 178, 124, 27, 30, 86, 110, 128, 240, 209, 88, 102, 26, 144, 37, 119, 156, 60, 12, 8, 224, 129, 230, 92, 214, 135, 16, 122, 229, 96, 22, 130, 20, 232, 105, 48, 192, 128, 128, 183, 0, 216, 20, 102, 64, 226, 205, 156, 248, 222, 69, 192, 129, 9, 30, 192, 1, 4, 222, 1, 79, 102, 50, 27, 159, 219, 40, 3, 88, 246, 142, 125, 27, 80, 224, 225, 197, 44, 248, 248, 34, 120, 120, 223, 100, 59, 176, 127, 249, 154, 203, 78, 29, 2, 142, 15, 91, 190, 243, 32, 56, 165, 62, 134, 57, 231, 193, 242, 248, 50, 215, 160, 19, 124, 74, 208, 255, 185, 155, 82, 145, 159, 91, 20, 184, 243, 57, 162, 193, 239, 234, 147, 73, 115, 238, 129, 34, 147, 230, 1, 86, 150, 64, 108, 112, 64, 1, 11, 90, 113, 8, 224, 53, 64, 0, 105, 198, 222, 50, 129, 13, 179, 72, 97, 45, 187, 249, 145, 63, 120, 106, 40, 50, 207, 242, 114, 52, 66, 156, 183, 63, 3, 107, 138, 157, 177, 43, 118, 199, 30, 16, 96, 128, 156, 97, 238, 50, 194, 104, 242, 211, 102, 30, 36, 97, 124, 206, 118, 118, 208, 196, 99, 220, 60, 101, 12, 94, 192, 43, 68, 99, 139, 173, 202, 14, 216, 65, 239, 241, 59, 241, 97, 204, 7, 5, 4, 107, 142, 195, 0, 77, 15, 2, 76, 108, 69, 252, 139, 131, 23, 190, 149, 163, 48, 7, 54, 182, 41, 234, 98, 75, 212, 199, 214, 104, 136, 207, 194, 18, 219, 98, 115, 141, 242, 138, 224, 213, 177, 13, 190, 234, 121, 228, 141, 120, 208, 58, 150, 129, 12, 37, 99, 143, 148, 178, 190, 35, 81, 154, 124, 17, 16, 112, 138, 54, 131, 87, 177, 244, 76, 102, 225, 205, 108, 248, 49, 31, 124, 25, 126, 73, 108, 83, 108, 123, 242, 185, 128, 99, 219, 99, 135, 5, 88, 32, 8, 224, 72, 136, 9, 45, 203, 228, 224, 133, 180, 56, 191, 58, 6, 112, 128, 196, 151, 32, 66, 189, 4, 12, 178, 200, 245, 98, 191, 94, 17, 141, 160, 205, 30, 59, 28, 185, 30, 163, 41, 184, 239, 41, 11, 12, 255, 211, 213, 48, 0, 210, 154, 209, 167, 223, 223, 185, 196, 0, 122, 27, 127, 10, 251, 91, 44, 38, 70, 224, 40, 138, 255, 1, 250, 236, 116, 8, 184, 9, 0, 251, 3, 112, 196, 25, 75, 117, 240, 62, 1, 253, 175, 252, 39, 201, 230, 165, 209, 213, 187, 3, 178, 15, 0, 209, 233, 0, 216, 93, 29, 1, 204, 152, 14, 28, 91, 123, 100, 191, 200, 122, 152, 144, 9, 69, 22, 235, 112, 209, 103, 34, 139, 178, 50, 251, 216, 106, 109, 167, 29, 48, 187, 141, 217, 180, 247, 30, 239, 167, 252, 138, 247, 248, 111, 254, 50, 16, 12, 195, 60, 176, 119, 176, 224, 246, 200, 227, 206, 180, 37, 246, 198, 129, 56, 28, 157, 241, 83, 92, 143, 91, 122, 27, 207, 85, 158, 138, 244, 145, 182, 104, 187, 154, 116, 86, 231, 244, 147, 250, 210, 107, 87, 196, 239, 52, 234, 22, 53, 65, 93, 163, 158, 251, 253, 195, 239, 127, 254, 151, 192, 183, 2, 182, 129, 20, 164, 97, 8, 166, 32, 15, 11, 176, 4, 27, 112, 5, 52, 195, 90, 216, 14, 107, 96, 163, 143, 44, 112, 43, 159, 195, 7, 125, 180, 47, 228, 75, 248, 182, 208, 104, 80, 5, 109, 22, 180, 37, 237, 166, 41, 154, 165, 101, 186, 148, 254, 36, 120, 237, 111, 124, 170, 167, 223, 244, 52, 0, 187, 147, 133, 156, 253, 252, 72, 191, 133, 90, 180, 105, 77, 103, 59, 109, 191, 253, 96, 99, 54, 225, 179, 235, 17, 46, 11, 119, 234, 192, 186, 89, 248, 220, 97, 141, 67, 142, 111, 98, 192, 1, 56, 119, 172, 124, 21, 171, 84, 91, 181, 67, 59, 55, 228, 156, 130, 250, 119, 5, 191, 83, 169, 171, 84, 41, 53, 73, 185, 168, 23, 126, 255, 220, 62, 42, 4, 108, 5, 157, 16, 222, 131, 131, 121, 161, 92, 56, 212, 84, 131, 56, 110, 188, 133, 160, 19, 0, 77, 234, 211, 35, 145, 51, 59, 123, 196, 93, 18, 32, 121, 248, 152, 221, 194, 89, 186, 40, 107, 35, 160, 154, 89, 243, 172, 155, 155, 103, 101, 251, 182, 71, 187, 183, 11, 139, 91, 119, 213, 143, 247, 170, 111, 245, 19, 30, 56, 87, 189, 253, 123, 202, 115, 227, 172, 5, 86, 214, 57, 103, 181, 23, 152, 156, 169, 141, 222, 220, 63, 61, 166, 126, 189, 161, 239, 22, 184, 119, 253, 189, 217, 35, 231, 239, 213, 0, 108, 165, 71, 184, 247, 188, 253, 15, 111, 247, 143, 207, 120, 243, 226, 206, 243, 226, 6, 43, 150, 140, 104, 81, 231, 143, 50, 150, 191, 184, 61, 11, 182, 254, 195, 20, 26, 130, 139, 55, 86, 232, 208, 194, 66, 1, 131, 49, 252, 155, 225, 254, 225, 222, 95, 255, 9, 16, 185, 94, 240, 111, 99, 224, 83, 253, 40, 159, 105, 159, 100, 193, 43, 24, 241, 219, 19, 179, 135, 207, 132, 167, 226, 191, 18, 42, 140, 127, 241, 36, 90, 249, 43, 190, 228, 89, 180, 241, 28, 219, 199, 75, 108, 191, 241, 161, 3, 92, 204, 110, 176, 86, 251, 210, 218, 108, 159, 237, 143, 246, 248, 202, 14, 89, 187, 125, 101, 29, 246, 181, 255, 211, 63, 181, 113, 251, 59, 108, 145, 25, 135, 163, 194, 125, 163, 209, 99, 60, 214, 139, 189, 164, 72, 188, 81, 166, 195, 80, 197, 118, 178, 247, 4, 188, 218, 237, 36, 91, 158, 168, 221, 0, 206, 155, 164, 188, 252, 54, 131, 191, 190, 187, 79, 103, 117, 95, 78, 219, 108, 195, 155, 133, 127, 129, 193, 159, 230, 24, 118, 14, 177, 59, 121, 46, 235, 229, 18, 125, 156, 192, 106, 145, 116, 245, 72, 96, 227, 209, 112, 69, 89, 94, 90, 92, 152, 31, 204, 205, 246, 123, 221, 142, 220, 110, 53, 27, 245, 90, 85, 170, 136, 229, 82, 177, 144, 207, 101, 51, 66, 58, 149, 76, 56, 44, 174, 94, 185, 112, 190, 29, 156, 131, 179, 254, 153, 99, 135, 90, 110, 179, 81, 175, 86, 202, 165, 223, 249, 49, 89, 164, 70, 162, 19, 240, 86, 24, 131, 132, 120, 112, 245, 10, 151, 199, 146, 190, 221, 121, 105, 9, 161, 65, 30, 115, 220, 144, 107, 195, 96, 48, 21, 134, 152, 144, 241, 181, 99, 32, 126, 195, 12, 130, 104, 106, 195, 38, 234, 132, 129, 186, 252, 9, 121, 178, 150, 23, 38, 6, 255, 222, 192, 199, 244, 229, 172, 178, 208, 215, 247, 209, 28, 247, 173, 147, 173, 185, 246, 32, 212, 155, 125, 223, 169, 40, 7, 74, 123, 57, 37, 134, 31, 36, 86, 154, 254, 119, 32, 205, 170, 149, 30, 244, 214, 43, 208, 73, 178, 74, 245, 206, 87, 197, 84, 188, 0, 91, 25, 189, 240, 140, 246, 58, 187, 32, 31, 93, 162, 132, 40, 191, 30, 52, 238, 150, 241, 26, 206, 28, 9, 178, 239, 249, 190, 238, 109, 24, 98, 3, 250, 75, 90, 73, 143, 247, 135, 98, 161, 135, 197, 22, 62, 218, 195, 148, 201, 14, 207, 174, 236, 121, 51, 118, 201, 138, 185, 92, 91, 131, 181, 248, 181, 66, 39, 126, 163, 176, 117, 164, 181, 95, 97, 235, 50, 94, 132, 190, 140, 124, 242, 79, 237, 233, 114, 29, 175, 220, 198, 36, 94, 22, 190, 58, 154, 219, 110, 72, 180, 246, 27, 133, 98, 62, 112, 129, 219, 255, 144, 26, 216, 255, 140, 24, 163, 130, 59, 195, 119, 73, 200, 122, 72, 231, 148, 255, 46, 209, 11, 33, 52, 214, 170, 8, 15, 109, 234, 142, 199, 111, 231, 43, 219, 158, 93, 176, 89, 173, 102, 183, 164, 225, 72, 102, 20, 210, 254, 233, 92, 118, 60, 12, 223, 104, 116, 77, 66, 31, 105, 8, 18, 195, 185, 8, 15, 206, 190, 154, 244, 178, 45, 202, 147, 184, 35, 151, 31, 249, 28, 252, 7, 158, 223, 34, 29, 209, 204, 50, 3, 193, 98, 15, 11, 134, 110, 241, 125, 56, 214, 239, 140, 5, 209, 222, 174, 193, 116, 86, 93, 17, 47, 226, 125, 67, 196, 245, 203, 26, 153, 33, 152, 179, 55, 239, 240, 226, 156, 148, 242, 137, 24, 240, 203, 128, 104, 94, 89, 204, 5, 195, 84, 92, 142, 80, 236, 196, 152, 174, 32, 143, 223, 183, 80, 24, 92, 53, 222, 255, 249, 96, 15, 180, 248, 195, 235, 154, 197, 193, 209, 241, 142, 62, 241, 124, 27, 11, 204, 12, 101, 12, 115, 237, 115, 11, 253, 173, 124, 131, 79, 209, 253, 12, 116, 183, 14, 240, 135, 80, 171, 215, 197, 173, 149, 32, 77, 151, 248, 65, 114, 12, 211, 21, 222, 235, 192, 193, 101, 48, 194, 100, 129, 155, 69, 255, 166, 93, 196, 142, 235, 148, 217, 141, 235, 206, 230, 216, 236, 173, 163, 190, 85, 183, 193, 235, 176, 133, 135, 160, 235, 100, 144, 175, 75, 142, 230, 21, 45, 161, 223, 24, 15, 245, 144, 152, 213, 222, 29, 53, 25, 95, 49, 46, 45, 226, 64, 22, 16, 233, 5, 42, 187, 75, 110, 191, 69, 118, 135, 123, 223, 222, 38, 119, 136, 238, 83, 37, 28, 233, 41, 116, 218, 124, 112, 106, 109, 3, 207, 24, 111, 13, 185, 217, 224, 202, 243, 81, 104, 164, 177, 6, 181, 174, 241, 162, 161, 164, 139, 127, 24, 4, 239, 28, 141, 153, 215, 88, 80, 209, 60, 68, 179, 47, 213, 3, 137, 224, 204, 249, 222, 45, 23, 72, 126, 22, 186, 94, 215, 142, 249, 0, 75, 65, 105, 98, 149, 121, 142, 94, 80, 110, 195, 231, 225, 77, 25, 186, 79, 178, 53, 67, 138, 150, 100, 221, 108, 1, 60, 216, 58, 45, 215, 195, 212, 35, 101, 188, 248, 71, 189, 198, 229, 122, 159, 28, 198, 211, 220, 117, 222, 175, 74, 189, 129, 80, 32, 212, 142, 56, 171, 83, 245, 124, 173, 7, 196, 187, 98, 99, 30, 151, 128, 57, 117, 9, 220, 194, 96, 9, 113, 44, 102, 189, 139, 44, 232, 113, 147, 234, 99, 222, 223, 195, 21, 172, 131, 134, 196, 138, 197, 140, 210, 17, 96, 66, 99, 11, 80, 208, 244, 194, 101, 195, 11, 163, 2, 52, 222, 181, 144, 248, 209, 66, 111, 131, 90, 193, 240, 114, 76, 158, 51, 47, 236, 158, 14, 82, 29, 25, 242, 174, 147, 219, 18, 68, 243, 118, 21, 15, 134, 78, 130, 44, 24, 34, 241, 229, 134, 120, 208, 242, 114, 2, 4, 246, 12, 132, 177, 114, 19, 118, 117, 155, 9, 17, 212, 65, 242, 136, 91, 25, 134, 107, 210, 114, 234, 39, 76, 144, 87, 226, 207, 189, 79, 182, 108, 63, 64, 34, 26, 45, 116, 141, 222, 140, 17, 105, 6, 116, 123, 214, 93, 166, 219, 243, 241, 12, 187, 46, 33, 124, 123, 65, 125, 195, 40, 235, 153, 174, 206, 206, 205, 88, 93, 194, 5, 32, 136, 213, 125, 253, 45, 241, 90, 224, 141, 57, 160, 210, 67, 237, 237, 138, 21, 164, 148, 139, 122, 252, 201, 234, 152, 146, 185, 173, 210, 14, 2, 204, 146, 187, 34, 181, 207, 38, 12, 202, 185, 155, 130, 201, 224, 92, 66, 138, 10, 223, 5, 25, 129, 238, 52, 81, 201, 139, 146, 40, 139, 26, 171, 51, 47, 163, 83, 234, 27, 28, 251, 19, 37, 80, 70, 114, 164, 70, 235, 180, 77, 210, 204, 220, 202, 152, 166, 153, 199, 245, 8, 105, 26, 9, 173, 248, 190, 69, 25, 202, 139, 47, 213, 58, 37, 248, 69, 234, 106, 162, 219, 121, 245, 138, 60, 150, 64, 84, 94, 98, 201, 215, 60, 166, 227, 51, 157, 88, 163, 131, 110, 157, 28, 65, 22, 212, 61, 20, 41, 60, 35, 200, 210, 41, 25, 101, 133, 26, 86, 96, 189, 139, 85, 232, 206, 79, 60, 207, 62, 159, 40, 144, 162, 133, 254, 17, 250, 140, 76, 177, 216, 155, 201, 128, 132, 147, 95, 41, 31, 92, 228, 39, 126, 142, 187, 239, 176, 162, 190, 124, 185, 71, 235, 254, 27, 218, 56, 32, 128, 2, 1, 236, 233, 134, 6, 0, 209, 57, 164, 166, 52, 84, 251, 236, 63, 3, 7, 127, 3, 192, 217, 111, 128, 109, 63, 14, 96, 211, 171, 192, 211, 47, 0, 104, 230, 126, 66, 39, 159, 31, 125, 140, 57, 63, 114, 19, 68, 125, 130, 1, 44, 15, 7, 9, 5, 1, 179, 103, 178, 18, 145, 140, 82, 137, 71, 8, 233, 109, 118, 36, 2, 228, 67, 56, 89, 208, 53, 211, 13, 140, 166, 101, 181, 233, 133, 199, 55, 13, 154, 39, 126, 54, 4, 12, 10, 176, 73, 163, 35, 26, 145, 232, 83, 118, 139, 236, 147, 205, 121, 81, 238, 102, 65, 54, 242, 25, 0, 4, 164, 205, 158, 71, 83, 152, 125, 230, 151, 0, 28, 24, 108, 187, 136, 7, 46, 139, 26, 79, 2, 116, 75, 178, 216, 32, 151, 132, 232, 67, 68, 17, 230, 201, 37, 30, 73, 162, 192, 210, 144, 44, 150, 146, 198, 145, 195, 30, 201, 55, 23, 154, 169, 152, 104, 151, 232, 211, 99, 42, 150, 134, 6, 104, 177, 17, 16, 102, 204, 209, 132, 15, 165, 50, 183, 157, 44, 109, 181, 228, 64, 246, 73, 97, 233, 83, 215, 47, 214, 108, 65, 138, 140, 49, 185, 205, 101, 59, 74, 134, 11, 127, 110, 45, 206, 226, 52, 144, 41, 107, 162, 65, 90, 140, 248, 236, 10, 153, 199, 144, 76, 136, 116, 16, 114, 203, 174, 132, 69, 116, 94, 18, 96, 86, 29, 206, 76, 72, 243, 116, 79, 78, 134, 96, 110, 252, 145, 187, 129, 151, 31, 230, 14, 243, 225, 180, 211, 252, 233, 207, 223, 197, 118, 241, 107, 211, 49, 71, 141, 76, 205, 204, 24, 55, 235, 5, 210, 157, 48, 136, 86, 186, 104, 216, 171, 87, 130, 236, 20, 66, 11, 38, 16, 160, 235, 157, 186, 173, 26, 23, 179, 201, 160, 172, 76, 196, 171, 254, 243, 206, 117, 34, 147, 48, 252, 2, 88, 219, 164, 1, 80, 233, 32, 118, 227, 6, 219, 32, 222, 145, 99, 242, 171, 70, 228, 209, 18, 231, 103, 211, 76, 48, 180, 116, 29, 77, 162, 33, 245, 151, 57, 97, 71, 242, 27, 29, 153, 176, 237, 43, 10, 209, 43, 128, 210, 117, 213, 51, 55, 98, 93, 71, 6, 80, 185, 246, 83, 135, 65, 1, 230, 21, 177, 65, 209, 57, 147, 239, 59, 159, 171, 116, 115, 108, 224, 140, 21, 145, 14, 10, 1, 203, 158, 116, 7, 119, 187, 157, 61, 123, 91, 213, 1, 22, 168, 5, 180, 207, 226, 189, 135, 162, 33, 0, 68, 228, 130, 204, 178, 158, 56, 199, 49, 238, 184, 190, 140, 96, 14, 87, 225, 53, 247, 216, 3, 134, 60, 201, 197, 114, 187, 47, 139, 140, 18, 161, 18, 154, 225, 182, 215, 161, 32, 162, 51, 81, 33, 149, 121, 132, 73, 213, 224, 164, 105, 57, 175, 91, 237, 123, 59, 55, 48, 99, 236, 10, 206, 238, 101, 26, 28, 228, 110, 170, 50, 186, 227, 87, 165, 69, 167, 99, 118, 187, 140, 3, 25, 139, 85, 73, 47, 118, 102, 26, 135, 171, 228, 229, 142, 32, 113, 149, 14, 32, 215, 87, 87, 180, 113, 14, 36, 17, 40, 165, 70, 38, 166, 134, 90, 19, 239, 225, 149, 183, 10, 46, 64, 69, 179, 53, 166, 115, 28, 174, 19, 103, 180, 224, 89, 114, 26, 1, 55, 36, 95, 48, 31, 3, 190, 150, 81, 6, 119, 113, 130, 241, 39, 114, 108, 246, 223, 219, 239, 171, 223, 135, 203, 127, 25, 204, 54, 48, 87, 32, 153, 164, 172, 138, 226, 91, 236, 31, 211, 240, 17, 182, 80, 106, 236, 210, 48, 88, 64, 135, 5, 7, 231, 115, 46, 206, 97, 12, 163, 140, 174, 179, 210, 135, 112, 172, 57, 143, 237, 56, 150, 18, 172, 235, 66, 184, 56, 159, 32, 143, 64, 232, 99, 199, 128, 90, 234, 20, 135, 157, 195, 126, 201, 103, 207, 146, 83, 41, 209, 205, 166, 117, 228, 200, 117, 230, 113, 224, 222, 15, 131, 202, 228, 79, 60, 222, 93, 157, 151, 251, 52, 173, 107, 78, 119, 151, 222, 155, 11, 206, 250, 122, 120, 49, 97, 64, 13, 163, 153, 2, 186, 220, 169, 108, 60, 217, 117, 143, 133, 196, 215, 36, 72, 123, 137, 245, 187, 11, 202, 204, 186, 176, 60, 13, 65, 179, 72, 112, 66, 251, 246, 60, 190, 12, 12, 232, 1, 141, 105, 49, 154, 177, 190, 43, 15, 56, 12, 55, 153, 17, 73, 174, 5, 16, 214, 10, 43, 35, 157, 184, 78, 40, 44, 32, 67, 37, 195, 42, 172, 34, 185, 169, 89, 20, 58, 218, 124, 158, 79, 69, 74, 141, 123, 10, 79, 223, 89, 232, 190, 205, 126, 145, 212, 195, 52, 229, 201, 206, 202, 154, 196, 213, 235, 86, 99, 41, 146, 84, 188, 188, 131, 121, 169, 9, 166, 191, 176, 240, 143, 200, 28, 22, 39, 247, 97, 126, 80, 69, 117, 92, 190, 161, 214, 228, 191, 56, 167, 15, 228, 192, 165, 35, 164, 146, 234, 236, 217, 198, 9, 106, 114, 138, 76, 113, 149, 226, 224, 56, 58, 24, 134, 163, 65, 60, 62, 74, 14, 71, 43, 141, 198, 97, 101, 64, 43, 58, 46, 11, 244, 253, 113, 99, 180, 144, 0, 2, 18, 157, 95, 27, 199, 34, 243, 61, 231, 153, 222, 223, 24, 158, 185, 239, 25, 11, 55, 139, 218, 5, 124, 69, 139, 120, 193, 253, 30, 45, 26, 169, 229, 70, 160, 225, 228, 190, 235, 8, 193, 154, 202, 87, 221, 199, 222, 4, 97, 174, 86, 158, 228, 235, 4, 249, 146, 205, 27, 98, 73, 36, 69, 78, 23, 133, 91, 172, 157, 2, 168, 173, 47, 101, 87, 117, 55, 106, 84, 226, 65, 232, 179, 241, 212, 66, 119, 240, 99, 219, 243, 246, 25, 41, 65, 140, 243, 65, 169, 192, 219, 110, 107, 176, 72, 178, 190, 117, 156, 128, 173, 47, 108, 93, 12, 96, 45, 39, 167, 87, 149, 107, 44, 106, 212, 148, 165, 56, 151, 170, 168, 222, 228, 10, 112, 123, 13, 141, 212, 166, 19, 55, 141, 32, 206, 227, 178, 106, 68, 165, 125, 202, 104, 115, 10, 210, 126, 98, 193, 60, 148, 0, 118, 249, 61, 124, 23, 14, 188, 212, 164, 251, 246, 103, 250, 48, 67, 129, 155, 183, 68, 37, 38, 251, 198, 119, 110, 99, 10, 235, 197, 43, 1, 158, 221, 91, 229, 40, 201, 128, 139, 165, 96, 40, 40, 117, 104, 94, 148, 3, 198, 126, 124, 86, 99, 241, 198, 17, 155, 97, 2, 196, 227, 122, 203, 247, 188, 206, 179, 154, 198, 115, 229, 40, 249, 27, 255, 142, 122, 206, 168, 59, 32, 49, 233, 217, 232, 83, 201, 242, 82, 12, 196, 92, 86, 137, 107, 150, 217, 33, 151, 146, 171, 70, 182, 180, 173, 243, 30, 105, 17, 188, 39, 80, 149, 97, 13, 207, 61, 153, 152, 203, 102, 225, 173, 129, 116, 248, 221, 179, 122, 45, 128, 174, 178, 31, 23, 13, 141, 93, 21, 235, 150, 50, 5, 237, 144, 190, 206, 162, 65, 248, 254, 65, 224, 104, 33, 175, 235, 146, 176, 107, 61, 182, 93, 76, 252, 24, 45, 132, 157, 104, 248, 175, 102, 248, 10, 180, 113, 154, 107, 212, 103, 225, 226, 123, 104, 96, 97, 158, 21, 44, 220, 177, 16, 100, 244, 16, 153, 62, 138, 101, 47, 121, 69, 190, 130, 214, 162, 187, 165, 168, 26, 90, 31, 203, 232, 196, 138, 162, 2, 236, 212, 241, 234, 2, 179, 77, 204, 223, 4, 178, 129, 9, 10, 247, 245, 182, 60, 16, 65, 119, 158, 19, 155, 13, 14, 167, 238, 36, 246, 158, 234, 51, 193, 81, 2, 203, 24, 247, 28, 34, 143, 161, 200, 42, 239, 148, 153, 33, 190, 198, 62, 104, 105, 229, 250, 13, 235, 45, 186, 112, 43, 55, 188, 252, 69, 120, 77, 25, 167, 149, 89, 213, 216, 29, 162, 179, 207, 37, 203, 63, 163, 87, 174, 245, 254, 62, 167, 30, 24, 128, 124, 133, 126, 124, 95, 159, 45, 245, 234, 204, 156, 174, 204, 82, 242, 179, 215, 46, 121, 153, 233, 239, 145, 95, 255, 146, 246, 150, 22, 3, 58, 53, 146, 82, 22, 25, 209, 104, 82, 61, 117, 155, 41, 141, 73, 123, 24, 72, 157, 156, 70, 243, 189, 114, 10, 2, 244, 220, 197, 14, 36, 81, 218, 189, 235, 59, 75, 41, 12, 151, 58, 238, 82, 47, 216, 45, 215, 113, 33, 9, 171, 92, 47, 228, 70, 102, 225, 243, 71, 188, 180, 181, 106, 208, 189, 201, 77, 128, 127, 232, 82, 114, 24, 43, 185, 166, 204, 41, 197, 84, 42, 23, 95, 15, 132, 59, 37, 128, 59, 120, 166, 36, 93, 232, 172, 145, 71, 161, 212, 149, 227, 132, 169, 19, 212, 45, 106, 19, 46, 45, 88, 51, 110, 139, 17, 8, 191, 137, 126, 103, 127, 184, 89, 196, 211, 7, 166, 87, 253, 179, 47, 118, 18, 92, 88, 23, 196, 146, 185, 120, 134, 229, 18, 84, 231, 144, 247, 53, 36, 219, 147, 22, 73, 226, 229, 203, 219, 201, 231, 81, 216, 230, 61, 111, 102, 227, 206, 254, 202, 2, 245, 197, 217, 49, 59, 213, 243, 80, 33, 209, 15, 141, 74, 10, 174, 248, 28, 49, 236, 93, 128, 153, 95, 50, 128, 180, 81, 94, 219, 36, 38, 77, 77, 209, 209, 140, 55, 97, 249, 137, 172, 163, 180, 85, 84, 145, 77, 212, 71, 231, 29, 238, 0, 93, 49, 66, 94, 47, 117, 79, 9, 83, 150, 148, 80, 75, 67, 42, 225, 21, 167, 176, 75, 202, 143, 225, 110, 95, 248, 167, 45, 53, 106, 192, 245, 138, 240, 31, 58, 13, 203, 16, 250, 95, 234, 222, 14, 224, 39, 154, 117, 127, 34, 76, 18, 6, 3, 218, 13, 54, 74, 106, 19, 187, 74, 252, 198, 19, 119, 76, 198, 87, 42, 201, 13, 76, 121, 221, 223, 175, 139, 244, 160, 152, 232, 185, 103, 217, 21, 83, 115, 229, 179, 102, 21, 209, 41, 171, 51, 51, 28, 155, 229, 169, 158, 207, 180, 111, 174, 254, 231, 109, 91, 63, 152, 184, 229, 31, 241, 42, 36, 65, 207, 115, 207, 120, 215, 46, 138, 128, 118, 150, 114, 97, 249, 80, 106, 210, 92, 64, 165, 90, 70, 66, 157, 4, 127, 145, 14, 83, 85, 96, 67, 88, 1, 172, 175, 141, 68, 225, 238, 110, 45, 146, 173, 252, 100, 124, 19, 27, 115, 128, 188, 225, 29, 72, 140, 27, 117, 15, 167, 218, 4, 2, 27, 46, 22, 101, 153, 153, 94, 94, 140, 5, 34, 1, 131, 158, 0, 3, 38, 128, 52, 24, 91, 216, 91, 121, 133, 8, 57, 119, 218, 158, 2, 226, 36, 50, 158, 165, 102, 195, 138, 32, 116, 12, 174, 5, 87, 146, 26, 16, 199, 176, 107, 197, 75, 6, 205, 109, 157, 80, 163, 145, 31, 194, 103, 44, 220, 34, 165, 5, 169, 216, 131, 20, 182, 27, 2, 130, 104, 110, 173, 196, 0, 43, 76, 26, 105, 170, 63, 0, 117, 125, 146, 48, 81, 72, 248, 24, 175, 2, 249, 157, 132, 71, 224, 46, 28, 28, 197, 69, 186, 143, 9, 174, 180, 53, 51, 200, 211, 170, 189, 88, 207, 43, 195, 18, 198, 191, 161, 11, 32, 217, 129, 40, 51, 78, 155, 9, 208, 234, 217, 52, 93, 68, 179, 147, 112, 126, 252, 57, 22, 114, 18, 72, 62, 178, 198, 29, 230, 98, 72, 35, 82, 212, 54, 238, 23, 183, 229, 183, 238, 97, 95, 66, 41, 13, 92, 170, 213, 232, 158, 97, 0, 231, 93, 172, 125, 100, 202, 238, 99, 17, 154, 195, 2, 244, 9, 143, 134, 87, 118, 23, 95, 141, 255, 205, 240, 65, 136, 141, 61, 99, 224, 63, 165, 69, 238, 181, 46, 33, 217, 82, 238, 71, 67, 75, 166, 146, 80, 216, 254, 75, 59, 245, 173, 150, 159, 166, 242, 5, 31, 229, 165, 157, 252, 241, 127, 50, 78, 161, 18, 14, 43, 243, 140, 188, 36, 249, 202, 31, 97, 124, 204, 254, 52, 212, 235, 246, 237, 179, 120, 49, 79, 78, 14, 62, 235, 115, 169, 189, 210, 50, 211, 16, 97, 49, 191, 141, 198, 30, 249, 212, 158, 163, 7, 36, 253, 26, 217, 200, 140, 71, 53, 180, 229, 17, 178, 87, 71, 27, 15, 100, 76, 192, 217, 198, 239, 254, 98, 158, 156, 88, 35, 152, 197, 139, 185, 247, 65, 222, 229, 94, 89, 47, 20, 106, 125, 248, 186, 94, 201, 165, 212, 37, 141, 168, 151, 48, 240, 25, 20, 36, 19, 193, 191, 215, 226, 94, 0, 234, 252, 115, 16, 153, 193, 62, 114, 180, 200, 37, 191, 112, 172, 142, 80, 114, 30, 11, 240, 47, 183, 201, 217, 206, 67, 45, 5, 134, 26, 126, 89, 130, 156, 151, 12, 141, 73, 156, 20, 144, 224, 100, 235, 160, 237, 240, 197, 181, 220, 86, 113, 170, 135, 76, 41, 17, 123, 63, 218, 131, 1, 220, 116, 196, 254, 119, 198, 64, 148, 173, 113, 150, 175, 199, 185, 92, 253, 235, 149, 190, 82, 161, 150, 255, 228, 133, 210, 229, 11, 84, 28, 69, 234, 188, 28, 190, 228, 48, 103, 74, 31, 19, 149, 72, 126, 136, 48, 42, 111, 96, 96, 160, 78, 73, 50, 104, 40, 78, 194, 17, 228, 63, 243, 9, 25, 25, 44, 242, 4, 187, 217, 219, 235, 2, 145, 36, 146, 197, 163, 180, 90, 149, 5, 102, 157, 85, 229, 156, 195, 56, 241, 216, 77, 162, 3, 101, 65, 146, 40, 116, 201, 107, 197, 109, 78, 241, 11, 232, 88, 206, 232, 181, 141, 73, 92, 251, 220, 214, 192, 18, 242, 215, 67, 233, 82, 77, 202, 134, 156, 115, 4, 123, 45, 211, 66, 224, 57, 162, 17, 123, 6, 248, 117, 249, 66, 149, 65, 29, 134, 228, 114, 96, 83, 86, 83, 152, 229, 78, 138, 103, 136, 23, 123, 216, 138, 128, 175, 241, 26, 0, 24, 213, 164, 171, 93, 8, 184, 206, 214, 50, 248, 133, 200, 46, 250, 35, 133, 65, 172, 93, 162, 75, 102, 223, 240, 10, 12, 212, 218, 96, 46, 82, 58, 86, 10, 143, 191, 135, 120, 84, 171, 79, 232, 130, 224, 215, 237, 30, 3, 223, 208, 98, 24, 224, 205, 9, 194, 36, 79, 251, 158, 55, 33, 159, 108, 29, 94, 10, 92, 29, 60, 34, 38, 91, 132, 227, 20, 149, 49, 236, 167, 152, 194, 90, 149, 130, 114, 55, 43, 9, 2, 222, 226, 86, 221, 9, 145, 1, 19, 184, 157, 114, 107, 198, 252, 201, 127, 251, 163, 184, 134, 135, 82, 22, 41, 181, 184, 61, 161, 33, 99, 37, 47, 139, 87, 192, 78, 194, 165, 150, 1, 70, 59, 20, 84, 75, 232, 100, 60, 171, 112, 232, 70, 248, 142, 22, 140, 191, 207, 8, 164, 17, 164, 84, 4, 206, 154, 135, 107, 116, 84, 60, 183, 224, 100, 202, 78, 27, 234, 209, 103, 29, 186, 29, 18, 245, 69, 97, 10, 83, 235, 159, 208, 58, 30, 61, 49, 101, 117, 227, 78, 202, 2, 232, 165, 208, 67, 33, 95, 197, 47, 234, 51, 174, 230, 24, 128, 142, 79, 150, 199, 6, 236, 117, 176, 70, 195, 188, 147, 194, 214, 185, 34, 195, 145, 49, 75, 2, 217, 98, 68, 96, 12, 24, 11, 70, 91, 204, 172, 78, 197, 109, 110, 41, 10, 153, 87, 153, 142, 84, 66, 23, 13, 92, 129, 218, 73, 239, 25, 95, 152, 70, 212, 228, 46, 9, 1, 14, 253, 146, 81, 208, 156, 65, 154, 229, 230, 255, 154, 75, 27, 224, 3, 40, 37, 192, 157, 179, 92, 133, 167, 60, 209, 239, 146, 20, 117, 121, 225, 205, 14, 48, 122, 125, 188, 238, 173, 7, 84, 228, 0, 42, 90, 102, 21, 127, 218, 186, 13, 47, 45, 29, 110, 156, 5, 29, 187, 13, 204, 22, 60, 40, 204, 145, 67, 162, 16, 65, 14, 237, 148, 24, 68, 23, 149, 216, 155, 110, 145, 223, 88, 147, 197, 115, 255, 50, 127, 175, 153, 231, 240, 3, 102, 24, 64, 217, 112, 64, 93, 150, 113, 16, 100, 115, 221, 108, 83, 225, 254, 139, 119, 121, 212, 125, 40, 197, 173, 19, 182, 206, 176, 149, 243, 133, 84, 95, 72, 226, 10, 195, 179, 56, 98, 2, 153, 190, 84, 15, 192, 23, 250, 98, 229, 225, 100, 57, 125, 162, 137, 64, 166, 56, 247, 213, 7, 47, 140, 117, 125, 42, 148, 76, 208, 194, 237, 17, 41, 188, 201, 92, 115, 11, 187, 158, 198, 221, 21, 248, 2, 92, 19, 48, 185, 220, 7, 250, 0, 18, 23, 224, 209, 241, 157, 74, 240, 70, 141, 30, 244, 137, 50, 104, 189, 141, 192, 92, 141, 34, 159, 215, 242, 95, 51, 78, 160, 43, 232, 172, 149, 112, 220, 246, 161, 104, 159, 52, 38, 1, 92, 51, 60, 31, 16, 162, 194, 55, 225, 202, 16, 27, 15, 156, 167, 91, 190, 71, 17, 86, 137, 125, 150, 28, 29, 130, 88, 40, 233, 204, 22, 89, 99, 177, 71, 90, 195, 21, 47, 135, 189, 18, 94, 0, 209, 26, 45, 73, 70, 93, 70, 246, 214, 48, 109, 20, 23, 31, 242, 48, 238, 85, 244, 132, 21, 6, 82, 44, 185, 11, 226, 2, 174, 15, 19, 85, 111, 234, 193, 121, 11, 151, 116, 128, 87, 26, 89, 110, 216, 165, 129, 231, 27, 185, 141, 157, 33, 201, 237, 159, 107, 109, 227, 238, 200, 213, 204, 223, 60, 199, 215, 225, 131, 78, 107, 246, 240, 237, 175, 163, 192, 221, 64, 65, 54, 129, 79, 211, 50, 135, 247, 157, 138, 59, 39, 90, 145, 163, 209, 105, 151, 207, 178, 153, 110, 248, 119, 153, 223, 253, 248, 210, 255, 211, 132, 31, 121, 29, 217, 14, 187, 228, 244, 20, 73, 249, 66, 88, 255, 252, 190, 185, 231, 177, 123, 110, 238, 222, 211, 247, 93, 242, 238, 106, 118, 36, 211, 111, 86, 98, 165, 138, 236, 206, 123, 75, 61, 95, 9, 24, 104, 81, 227, 72, 137, 207, 19, 242, 245, 163, 78, 171, 230, 109, 244, 4, 178, 46, 155, 43, 86, 164, 126, 115, 90, 45, 227, 143, 239, 17, 169, 147, 179, 87, 115, 240, 105, 118, 113, 253, 9, 40, 233, 71, 105, 38, 7, 89, 216, 4, 145, 45, 58, 242, 14, 104, 187, 238, 0, 233, 50, 153, 118, 247, 243, 211, 185, 216, 17, 184, 247, 45, 213, 244, 30, 140, 206, 54, 232, 162, 173, 19, 159, 61, 44, 234, 134, 29, 106, 30, 49, 141, 253, 207, 150, 122, 245, 180, 143, 122, 216, 9, 5, 111, 249, 188, 194, 244, 129, 124, 160, 25, 136, 158, 20, 229, 102, 13, 147, 18, 65, 73, 189, 116, 233, 59, 249, 67, 118, 70, 152, 247, 240, 86, 205, 14, 223, 94, 118, 102, 24, 64, 167, 59, 137, 198, 228, 159, 163, 91, 228, 167, 228, 116, 21, 121, 220, 228, 145, 109, 177, 246, 168, 116, 226, 220, 99, 119, 197, 203, 83, 125, 230, 146, 231, 135, 7, 188, 106, 76, 2, 176, 138, 129, 155, 96, 54, 157, 85, 20, 183, 255, 234, 98, 58, 228, 21, 118, 197, 90, 251, 98, 20, 141, 241, 217, 237, 83, 91, 63, 232, 52, 206, 92, 198, 31, 238, 200, 35, 43, 175, 110, 96, 186, 114, 82, 251, 205, 165, 152, 208, 126, 173, 90, 132, 160, 186, 80, 89, 135, 59, 53, 243, 125, 153, 2, 61, 65, 91, 102, 212, 80, 242, 133, 3, 110, 215, 233, 3, 14, 171, 167, 154, 113, 110, 164, 87, 234, 114, 145, 168, 89, 136, 211, 173, 223, 231, 150, 109, 179, 168, 188, 147, 177, 76, 62, 216, 21, 150, 108, 132, 24, 248, 137, 69, 82, 217, 145, 50, 43, 213, 166, 181, 53, 166, 221, 85, 250, 130, 207, 197, 62, 159, 54, 19, 122, 78, 151, 224, 80, 197, 92, 122, 109, 122, 136, 11, 66, 219, 55, 225, 116, 145, 163, 110, 141, 53, 196, 112, 115, 152, 24, 42, 130, 78, 47, 207, 77, 157, 103, 243, 62, 92, 169, 133, 182, 192, 170, 29, 123, 135, 28, 26, 13, 238, 81, 71, 111, 221, 165, 61, 2, 51, 57, 27, 67, 37, 130, 201, 234, 179, 49, 97, 0, 170, 179, 218, 212, 233, 198, 97, 79, 181, 168, 112, 126, 46, 96, 19, 67, 71, 107, 120, 217, 56, 77, 125, 49, 14, 161, 171, 253, 172, 59, 22, 160, 199, 144, 88, 135, 85, 87, 79, 248, 77, 61, 198, 0, 100, 70, 128, 132, 81, 8, 177, 188, 172, 177, 109, 145, 16, 70, 80, 112, 172, 63, 85, 170, 14, 170, 51, 245, 114, 105, 34, 126, 80, 208, 145, 236, 121, 146, 136, 15, 227, 225, 227, 204, 178, 28, 165, 115, 167, 28, 224, 225, 136, 7, 199, 231, 199, 112, 52, 164, 113, 228, 38, 167, 24, 239, 143, 220, 141, 52, 47, 121, 43, 247, 178, 92, 188, 33, 187, 241, 206, 244, 222, 205, 83, 137, 155, 199, 103, 5, 138, 116, 207, 241, 17, 146, 197, 5, 167, 35, 149, 247, 95, 43, 195, 42, 233, 2, 253, 109, 58, 132, 236, 59, 184, 41, 95, 28, 126, 122, 249, 135, 2, 132, 47, 130, 46, 218, 242, 200, 103, 184, 250, 84, 6, 82, 185, 169, 176, 120, 9, 107, 235, 202, 20, 168, 188, 2, 94, 169, 184, 231, 130, 83, 175, 142, 252, 42, 84, 27, 54, 237, 141, 192, 193, 6, 166, 124, 60, 240, 140, 216, 247, 246, 135, 91, 182, 4, 39, 146, 5, 0, 10, 185, 203, 12, 180, 68, 8, 206, 165, 219, 136, 189, 42, 199, 201, 249, 180, 198, 206, 209, 25, 57, 250, 147, 116, 26, 236, 65, 118, 119, 162, 133, 21, 121, 91, 127, 253, 222, 62, 69, 29, 20, 92, 153, 206, 197, 149, 132, 38, 215, 156, 0, 222, 224, 99, 51, 37, 79, 253, 215, 175, 172, 235, 30, 231, 127, 11, 170, 174, 228, 197, 69, 210, 69, 36, 20, 190, 13, 120, 232, 56, 204, 14, 63, 16, 163, 127, 70, 14, 98, 82, 216, 147, 82, 76, 236, 254, 247, 146, 178, 116, 83, 146, 126, 58, 68, 201, 176, 15, 189, 123, 235, 0, 188, 176, 103, 95, 163, 51, 66, 115, 69, 152, 42, 74, 48, 9, 232, 196, 47, 239, 44, 0, 47, 249, 72, 21, 4, 189, 217, 192, 221, 37, 56, 189, 239, 199, 229, 178, 185, 111, 254, 9, 23, 51, 146, 20, 31, 210, 241, 201, 143, 6, 113, 66, 104, 18, 141, 118, 28, 221, 50, 38, 5, 31, 158, 228, 194, 21, 220, 189, 194, 116, 197, 167, 75, 90, 205, 103, 39, 46, 253, 100, 101, 40, 164, 201, 58, 15, 93, 241, 26, 157, 124, 63, 38, 39, 33, 29, 200, 129, 81, 150, 27, 176, 212, 183, 9, 38, 107, 248, 140, 184, 154, 158, 21, 187, 172, 177, 0, 231, 98, 40, 243, 33, 62, 140, 127, 189, 2, 167, 72, 244, 120, 68, 197, 225, 159, 209, 205, 141, 207, 193, 223, 204, 203, 8, 255, 122, 238, 228, 3, 11, 32, 222, 179, 103, 165, 209, 194, 146, 8, 158, 211, 142, 238, 235, 172, 254, 69, 71, 158, 204, 121, 249, 247, 74, 238, 216, 65, 255, 250, 32, 208, 47, 168, 77, 137, 83, 208, 49, 64, 32, 104, 20, 225, 218, 89, 0, 90, 12, 210, 22, 213, 69, 3, 123, 146, 102, 115, 41, 57, 236, 233, 117, 54, 211, 84, 20, 199, 185, 53, 57, 140, 58, 149, 25, 52, 233, 221, 129, 54, 85, 247, 194, 31, 53, 47, 202, 120, 123, 198, 223, 136, 223, 72, 0, 50, 234, 236, 186, 93, 111, 61, 37, 125, 134, 168, 31, 199, 116, 157, 165, 33, 10, 26, 145, 73, 33, 82, 216, 51, 248, 36, 89, 205, 219, 124, 192, 235, 139, 31, 236, 194, 193, 237, 18, 155, 215, 85, 239, 208, 171, 234, 90, 157, 174, 87, 23, 195, 209, 148, 139, 241, 17, 187, 0, 202, 151, 224, 71, 118, 113, 66, 87, 142, 96, 185, 245, 181, 218, 119, 130, 198, 68, 128, 180, 69, 7, 208, 173, 244, 211, 53, 159, 24, 92, 216, 3, 111, 249, 118, 2, 49, 226, 52, 65, 92, 134, 8, 121, 7, 225, 215, 31, 254, 20, 24, 241, 36, 67, 3, 109, 242, 239, 150, 234, 75, 167, 2, 81, 1, 142, 149, 122, 231, 21, 176, 77, 215, 114, 164, 109, 231, 76, 53, 215, 133, 211, 160, 179, 206, 149, 2, 183, 239, 111, 66, 28, 72, 165, 38, 10, 117, 182, 178, 92, 132, 20, 247, 103, 222, 119, 72, 241, 34, 96, 203, 144, 226, 66, 39, 137, 211, 46, 130, 59, 15, 205, 53, 100, 227, 185, 29, 148, 144, 213, 254, 91, 9, 25, 75, 251, 133, 79, 219, 104, 100, 240, 6, 121, 209, 49, 10, 7, 162, 120, 135, 135, 195, 54, 199, 172, 101, 9, 103, 204, 85, 235, 248, 162, 181, 55, 57, 231, 202, 6, 56, 106, 118, 78, 180, 182, 113, 202, 49, 211, 3, 86, 242, 104, 121, 91, 219, 208, 7, 172, 191, 125, 115, 246, 201, 37, 143, 38, 134, 241, 153, 153, 137, 235, 213, 31, 209, 179, 70, 200, 19, 131, 79, 55, 220, 55, 15, 171, 18, 243, 122, 171, 42, 86, 166, 38, 37, 207, 204, 195, 201, 242, 101, 76, 233, 201, 27, 175, 207, 43, 227, 33, 215, 35, 205, 144, 155, 168, 169, 58, 96, 142, 125, 152, 33, 13, 77, 184, 2, 21, 234, 109, 48, 171, 188, 232, 242, 156, 45, 236, 232, 1, 69, 206, 163, 171, 177, 182, 238, 157, 138, 61, 43, 61, 176, 52, 41, 167, 59, 168, 193, 45, 217, 50, 37, 101, 167, 111, 247, 67, 54, 50, 190, 6, 95, 179, 29, 249, 249, 127, 64, 19, 210, 100, 88, 130, 111, 145, 20, 48, 213, 103, 246, 193, 151, 4, 195, 41, 156, 200, 205, 222, 82, 255, 33, 57, 38, 78, 10, 65, 133, 3, 87, 171, 38, 187, 109, 2, 197, 146, 15, 60, 243, 200, 93, 82, 136, 108, 145, 10, 122, 129, 85, 151, 189, 13, 134, 245, 165, 65, 157, 132, 32, 212, 227, 17, 210, 165, 61, 196, 130, 100, 109, 173, 179, 61, 39, 103, 90, 223, 134, 132, 191, 125, 48, 189, 228, 231, 59, 153, 113, 227, 16, 252, 136, 201, 239, 109, 103, 141, 143, 195, 97, 32, 254, 247, 16, 248, 216, 83, 17, 221, 187, 212, 245, 211, 215, 8, 6, 62, 63, 59, 244, 42, 136, 27, 167, 242, 219, 53, 227, 123, 215, 184, 117, 181, 28, 230, 78, 100, 112, 130, 159, 23, 105, 175, 210, 120, 35, 63, 61, 14, 61, 163, 219, 26, 223, 213, 39, 70, 40, 24, 91, 238, 17, 222, 233, 96, 188, 172, 224, 203, 126, 95, 178, 80, 137, 90, 55, 16, 1, 244, 228, 63, 43, 9, 139, 88, 95, 118, 36, 192, 120, 203, 223, 42, 60, 135, 33, 48, 47, 47, 137, 71, 222, 63, 93, 35, 113, 85, 65, 85, 222, 94, 162, 218, 3, 109, 76, 126, 132, 39, 113, 241, 15, 22, 183, 32, 197, 13, 221, 16, 82, 76, 63, 11, 24, 166, 177, 72, 141, 110, 156, 101, 150, 160, 146, 59, 71, 42, 166, 116, 145, 253, 41, 38, 46, 48, 102, 241, 91, 92, 186, 86, 3, 105, 59, 200, 112, 213, 37, 231, 206, 253, 1, 248, 115, 46, 26, 28, 134, 71, 69, 41, 227, 60, 138, 255, 249, 222, 88, 142, 242, 63, 172, 17, 39, 242, 194, 144, 59, 101, 1, 120, 66, 208, 190, 147, 70, 9, 23, 191, 240, 29, 48, 121, 9, 252, 239, 84, 111, 234, 241, 214, 119, 127, 106, 140, 197, 200, 82, 2, 12, 133, 117, 42, 198, 153, 133, 177, 242, 99, 247, 110, 85, 100, 134, 82, 213, 7, 100, 175, 64, 213, 173, 52, 192, 89, 65, 168, 29, 220, 170, 246, 156, 86, 21, 174, 235, 11, 176, 137, 61, 81, 121, 53, 126, 121, 83, 14, 75, 91, 242, 198, 223, 154, 56, 78, 39, 69, 47, 41, 43, 73, 117, 42, 124, 211, 247, 18, 239, 123, 166, 192, 143, 180, 58, 102, 162, 199, 8, 143, 85, 193, 183, 47, 198, 225, 156, 30, 119, 217, 108, 54, 197, 205, 191, 10, 167, 31, 111, 241, 132, 36, 204, 45, 250, 55, 30, 57, 191, 8, 112, 215, 182, 206, 104, 130, 23, 58, 159, 194, 219, 176, 209, 88, 224, 147, 160, 2, 189, 136, 97, 168, 68, 224, 90, 95, 8, 82, 225, 229, 11, 215, 72, 241, 252, 62, 34, 92, 178, 248, 151, 202, 190, 173, 183, 225, 29, 116, 0, 115, 215, 68, 246, 2, 192, 203, 90, 129, 242, 109, 142, 61, 223, 10, 119, 223, 222, 107, 118, 120, 160, 121, 54, 186, 93, 124, 176, 77, 3, 202, 107, 187, 34, 223, 130, 86, 62, 222, 62, 199, 104, 232, 83, 72, 235, 17, 171, 129, 8, 218, 57, 57, 99, 163, 232, 240, 84, 222, 211, 187, 250, 35, 98, 164, 219, 125, 118, 69, 207, 85, 230, 143, 43, 137, 195, 0, 254, 221, 213, 85, 39, 190, 244, 230, 8, 200, 137, 165, 161, 44, 236, 71, 238, 25, 240, 50, 237, 158, 28, 9, 121, 247, 86, 250, 73, 91, 45, 221, 244, 210, 146, 22, 191, 94, 183, 185, 12, 94, 179, 4, 231, 131, 8, 92, 183, 78, 10, 20, 62, 162, 59, 82, 19, 118, 205, 130, 110, 61, 14, 238, 50, 205, 122, 148, 83, 181, 156, 114, 75, 74, 68, 107, 21, 166, 143, 3, 245, 103, 184, 15, 230, 76, 255, 149, 128, 118, 255, 2, 200, 157, 26, 243, 106, 125, 245, 161, 221, 117, 61, 109, 137, 234, 13, 150, 142, 195, 155, 60, 33, 10, 187, 188, 161, 252, 247, 6, 160, 63, 187, 88, 88, 217, 212, 18, 222, 191, 224, 190, 32, 253, 67, 30, 46, 252, 203, 189, 150, 137, 195, 8, 161, 118, 51, 73, 251, 71, 130, 107, 138, 156, 32, 47, 28, 47, 112, 97, 116, 0, 108, 184, 146, 25, 155, 154, 204, 141, 74, 18, 119, 37, 212, 238, 204, 244, 254, 175, 184, 157, 156, 99, 226, 85, 34, 111, 116, 85, 187, 166, 221, 181, 186, 87, 53, 202, 13, 228, 158, 4, 101, 193, 139, 216, 180, 197, 194, 29, 233, 152, 89, 61, 169, 244, 141, 150, 80, 116, 231, 13, 249, 0, 164, 242, 28, 156, 234, 8, 4, 232, 177, 75, 64, 254, 18, 225, 82, 224, 20, 60, 112, 131, 50, 86, 108, 237, 234, 0, 37, 233, 244, 10, 23, 20, 192, 223, 33, 112, 125, 89, 242, 134, 189, 181, 211, 122, 68, 127, 161, 208, 109, 134, 193, 92, 27, 151, 91, 234, 105, 223, 133, 61, 252, 13, 64, 74, 210, 14, 215, 203, 117, 171, 8, 0, 118, 87, 166, 121, 85, 80, 185, 40, 245, 72, 169, 206, 148, 12, 107, 21, 118, 126, 98, 97, 65, 226, 44, 96, 121, 224, 52, 179, 71, 151, 56, 6, 197, 91, 215, 177, 48, 179, 170, 137, 70, 106, 0, 23, 136, 70, 73, 240, 79, 198, 97, 190, 61, 139, 210, 18, 243, 64, 222, 234, 101, 46, 59, 240, 234, 48, 29, 21, 230, 174, 130, 221, 23, 11, 188, 242, 104, 166, 79, 234, 139, 100, 103, 104, 135, 58, 57, 29, 62, 192, 99, 28, 110, 89, 73, 187, 6, 180, 102, 197, 120, 5, 187, 48, 99, 242, 187, 180, 188, 237, 69, 90, 169, 59, 248, 191, 67, 253, 58, 113, 116, 72, 14, 231, 48, 12, 25, 146, 165, 159, 8, 234, 242, 3, 27, 209, 139, 67, 7, 71, 103, 79, 85, 217, 213, 39, 125, 4, 50, 62, 79, 171, 253, 250, 78, 158, 111, 188, 7, 226, 72, 129, 1, 117, 59, 139, 224, 170, 5, 237, 102, 184, 102, 153, 52, 12, 232, 211, 35, 60, 117, 61, 229, 249, 114, 105, 205, 24, 232, 228, 160, 132, 94, 236, 83, 191, 64, 95, 212, 40, 234, 161, 238, 7, 128, 247, 3, 39, 214, 60, 238, 84, 126, 24, 223, 129, 37, 239, 156, 215, 100, 151, 251, 109, 156, 78, 175, 39, 11, 136, 163, 55, 220, 73, 113, 190, 128, 139, 41, 38, 89, 56, 160, 135, 200, 170, 120, 84, 96, 102, 184, 9, 80, 123, 26, 102, 114, 163, 194, 47, 206, 211, 213, 78, 90, 155, 10, 232, 228, 139, 220, 172, 202, 149, 166, 139, 29, 36, 117, 63, 148, 46, 188, 188, 240, 226, 69, 189, 14, 161, 211, 40, 126, 34, 189, 40, 58, 83, 50, 85, 166, 70, 38, 111, 216, 45, 163, 162, 80, 195, 166, 88, 120, 203, 116, 8, 116, 95, 65, 254, 6, 233, 115, 235, 185, 218, 64, 40, 17, 223, 157, 218, 157, 26, 131, 121, 115, 210, 186, 193, 46, 28, 94, 83, 232, 192, 73, 28, 91, 81, 254, 214, 134, 97, 25, 28, 60, 106, 40, 145, 190, 23, 4, 186, 8, 91, 9, 33, 239, 195, 47, 216, 141, 252, 93, 35, 65, 103, 44, 102, 20, 248, 36, 236, 197, 254, 237, 106, 214, 216, 29, 63, 46, 200, 68, 9, 161, 129, 116, 17, 119, 236, 117, 78, 140, 207, 236, 197, 47, 187, 21, 88, 74, 254, 112, 26, 209, 26, 228, 249, 247, 235, 9, 150, 212, 197, 94, 86, 209, 240, 208, 133, 241, 42, 145, 30, 156, 101, 136, 226, 233, 185, 120, 5, 197, 127, 30, 190, 206, 144, 145, 218, 83, 165, 195, 133, 242, 3, 89, 100, 218, 7, 21, 212, 31, 135, 157, 225, 136, 16, 29, 156, 78, 221, 55, 227, 160, 41, 46, 75, 24, 188, 93, 72, 101, 54, 74, 188, 47, 246, 63, 226, 110, 84, 126, 248, 241, 32, 14, 94, 40, 154, 237, 26, 248, 180, 102, 231, 115, 246, 6, 58, 142, 153, 102, 127, 223, 40, 115, 191, 150, 244, 203, 207, 104, 236, 251, 25, 121, 71, 72, 24, 205, 251, 17, 99, 56, 228, 198, 193, 186, 176, 165, 160, 246, 234, 146, 101, 5, 111, 194, 171, 54, 211, 75, 132, 170, 73, 166, 251, 133, 63, 186, 4, 158, 60, 135, 22, 139, 244, 249, 178, 127, 18, 27, 73, 143, 227, 72, 116, 254, 64, 61, 161, 202, 198, 4, 60, 6, 141, 35, 161, 209, 120, 42, 10, 77, 36, 217, 106, 175, 224, 133, 85, 242, 80, 11, 187, 22, 228, 86, 95, 242, 246, 52, 160, 173, 133, 147, 250, 218, 0, 221, 148, 192, 153, 244, 253, 169, 101, 247, 102, 7, 214, 10, 144, 134, 58, 2, 186, 69, 56, 151, 219, 218, 255, 77, 40, 29, 115, 210, 180, 37, 231, 178, 151, 122, 39, 160, 171, 73, 75, 191, 72, 74, 12, 110, 218, 218, 62, 81, 186, 15, 120, 90, 96, 52, 112, 175, 21, 23, 159, 246, 177, 181, 139, 97, 52, 169, 106, 154, 188, 211, 24, 179, 84, 164, 222, 73, 245, 200, 4, 116, 210, 176, 161, 140, 128, 82, 33, 7, 199, 152, 5, 53, 179, 253, 245, 85, 89, 31, 23, 109, 225, 101, 113, 144, 102, 36, 84, 75, 5, 228, 38, 54, 104, 23, 11, 89, 39, 106, 251, 52, 12, 163, 15, 42, 15, 202, 176, 213, 103, 91, 83, 26, 197, 181, 39, 220, 30, 86, 45, 42, 77, 218, 69, 34, 150, 40, 109, 223, 186, 225, 156, 131, 170, 253, 55, 216, 154, 147, 47, 83, 154, 157, 245, 4, 6, 12, 175, 91, 39, 126, 100, 123, 46, 181, 7, 121, 68, 7, 193, 196, 167, 130, 131, 34, 147, 144, 208, 80, 2, 134, 20, 77, 62, 16, 66, 185, 28, 239, 159, 151, 17, 11, 39, 201, 240, 156, 202, 40, 249, 123, 20, 242, 116, 245, 131, 152, 36, 68, 59, 162, 253, 115, 115, 87, 235, 84, 125, 118, 104, 233, 219, 98, 231, 8, 2, 57, 14, 124, 229, 82, 143, 189, 163, 77, 220, 12, 158, 243, 202, 139, 242, 20, 81, 125, 64, 182, 106, 99, 172, 255, 219, 159, 209, 202, 229, 64, 225, 108, 118, 211, 108, 90, 47, 230, 195, 213, 21, 102, 42, 165, 123, 6, 93, 87, 48, 206, 173, 32, 69, 81, 56, 158, 93, 51, 147, 218, 131, 158, 184, 186, 198, 44, 164, 245, 205, 162, 113, 5, 115, 220, 162, 228, 140, 194, 177, 5, 1, 6, 127, 249, 128, 182, 21, 222, 249, 15, 89, 53, 91, 93, 246, 127, 170, 224, 5, 50, 251, 28, 17, 111, 147, 107, 240, 242, 89, 109, 91, 38, 182, 3, 155, 213, 150, 149, 215, 33, 222, 245, 17, 254, 22, 105, 49, 165, 171, 100, 122, 120, 200, 101, 176, 54, 73, 60, 9, 77, 140, 193, 226, 8, 24, 44, 142, 140, 66, 227, 169, 24, 12, 142, 162, 235, 178, 143, 231, 219, 135, 223, 226, 131, 226, 57, 224, 141, 235, 177, 31, 66, 110, 175, 254, 198, 134, 20, 93, 61, 254, 123, 253, 23, 121, 25, 34, 150, 245, 187, 190, 62, 102, 143, 181, 96, 204, 254, 178, 228, 168, 93, 54, 212, 132, 150, 58, 10, 119, 31, 152, 207, 169, 194, 39, 205, 77, 86, 103, 121, 149, 191, 180, 61, 203, 26, 174, 127, 84, 43, 157, 139, 225, 202, 36, 177, 33, 221, 234, 2, 114, 94, 103, 164, 224, 137, 173, 252, 253, 245, 114, 135, 7, 106, 14, 221, 87, 95, 250, 239, 26, 132, 151, 134, 88, 8, 170, 202, 186, 209, 220, 192, 102, 232, 12, 46, 123, 73, 100, 15, 242, 163, 218, 252, 186, 179, 227, 85, 105, 183, 241, 154, 216, 226, 39, 71, 3, 55, 144, 171, 241, 174, 239, 92, 35, 249, 233, 180, 14, 73, 17, 92, 58, 48, 137, 1, 109, 254, 234, 215, 65, 93, 215, 24, 215, 216, 215, 40, 234, 20, 57, 243, 110, 191, 123, 188, 62, 232, 44, 101, 12, 208, 64, 203, 143, 17, 167, 130, 129, 13, 100, 111, 18, 29, 79, 127, 131, 145, 211, 94, 167, 155, 223, 182, 116, 188, 46, 125, 255, 112, 85, 70, 42, 185, 57, 188, 130, 193, 207, 55, 192, 107, 234, 102, 81, 132, 199, 207, 146, 167, 226, 235, 146, 20, 121, 252, 49, 78, 245, 172, 137, 22, 111, 155, 240, 151, 18, 74, 45, 105, 57, 230, 144, 178, 177, 249, 99, 241, 0, 176, 225, 239, 197, 135, 121, 49, 38, 63, 175, 35, 19, 94, 103, 63, 207, 170, 139, 198, 231, 67, 176, 201, 126, 53, 216, 33, 93, 0, 12, 182, 127, 51, 255, 163, 146, 255, 35, 88, 8, 75, 154, 90, 248, 62, 80, 186, 67, 147, 216, 96, 91, 223, 255, 228, 8, 229, 234, 238, 25, 217, 76, 111, 84, 249, 200, 107, 147, 18, 11, 201, 92, 208, 225, 223, 125, 164, 158, 230, 162, 134, 208, 220, 194, 204, 167, 2, 74, 81, 82, 146, 210, 101, 148, 114, 74, 37, 248, 166, 134, 103, 38, 135, 238, 97, 111, 69, 131, 113, 157, 210, 61, 56, 169, 68, 122, 22, 199, 11, 158, 130, 154, 117, 26, 115, 45, 121, 51, 238, 160, 27, 249, 234, 248, 63, 163, 167, 86, 113, 28, 182, 72, 62, 189, 249, 125, 105, 31, 176, 233, 239, 69, 135, 249, 177, 38, 63, 175, 163, 226, 75, 94, 197, 102, 212, 70, 167, 247, 101, 60, 136, 64, 116, 70, 71, 32, 108, 186, 241, 161, 252, 28, 19, 44, 9, 61, 186, 206, 166, 250, 244, 192, 15, 78, 206, 183, 71, 114, 238, 184, 193, 85, 255, 81, 167, 199, 69, 6, 168, 29, 141, 110, 216, 255, 45, 41, 72, 238, 161, 177, 48, 218, 174, 230, 154, 213, 54, 218, 38, 193, 236, 219, 144, 220, 176, 63, 67, 242, 224, 100, 112, 130, 250, 189, 154, 73, 164, 6, 15, 130, 140, 129, 16, 98, 66, 196, 17, 177, 120, 76, 146, 199, 91, 210, 102, 166, 131, 159, 143, 237, 15, 214, 153, 216, 167, 134, 199, 38, 132, 68, 99, 2, 153, 20, 199, 157, 123, 249, 24, 67, 28, 17, 131, 198, 83, 209, 104, 28, 25, 26, 255, 112, 55, 203, 113, 167, 28, 21, 64, 74, 161, 105, 160, 21, 93, 204, 234, 204, 34, 7, 122, 22, 219, 231, 126, 1, 6, 76, 87, 216, 208, 58, 90, 11, 44, 165, 190, 164, 232, 75, 37, 13, 233, 196, 68, 233, 53, 43, 42, 205, 85, 250, 127, 241, 201, 43, 242, 109, 158, 59, 14, 46, 218, 126, 14, 45, 206, 244, 218, 247, 95, 222, 203, 79, 127, 87, 17, 11, 61, 166, 16, 104, 196, 139, 174, 97, 122, 24, 213, 217, 182, 97, 65, 102, 157, 41, 190, 33, 23, 94, 155, 123, 203, 23, 219, 71, 42, 255, 126, 56, 231, 81, 158, 113, 40, 215, 144, 207, 150, 229, 222, 128, 138, 241, 82, 132, 226, 219, 36, 21, 155, 7, 226, 80, 117, 209, 90, 10, 5, 28, 245, 245, 232, 113, 134, 173, 107, 48, 247, 199, 253, 131, 188, 84, 87, 169, 176, 217, 169, 127, 222, 238, 234, 93, 30, 54, 52, 71, 218, 21, 120, 216, 200, 237, 195, 221, 28, 129, 159, 136, 230, 43, 228, 147, 203, 20, 140, 1, 218, 106, 208, 188, 171, 21, 86, 236, 255, 184, 218, 214, 239, 200, 202, 118, 191, 11, 253, 188, 145, 217, 160, 156, 149, 29, 231, 133, 127, 195, 243, 172, 14, 0, 195, 49, 230, 82, 20, 241, 221, 153, 102, 123, 94, 160, 30, 108, 115, 171, 10, 12, 135, 234, 69, 211, 90, 161, 77, 161, 25, 211, 128, 233, 83, 64, 58, 148, 47, 154, 94, 16, 154, 17, 82, 146, 14, 211, 211, 223, 66, 137, 190, 227, 111, 52, 21, 150, 123, 179, 91, 50, 61, 159, 188, 183, 167, 157, 111, 181, 154, 255, 70, 39, 240, 63, 184, 98, 186, 31, 94, 196, 145, 233, 236, 107, 99, 2, 24, 219, 85, 142, 57, 7, 164, 227, 220, 174, 223, 238, 141, 108, 139, 121, 69, 179, 178, 115, 179, 74, 133, 121, 5, 78, 197, 25, 167, 236, 69, 145, 239, 14, 213, 189, 96, 173, 25, 56, 118, 3, 96, 52, 92, 0, 24, 27, 182, 151, 79, 184, 173, 174, 1, 182, 153, 206, 125, 25, 106, 46, 160, 76, 207, 195, 116, 86, 82, 229, 7, 240, 243, 245, 170, 1, 249, 245, 153, 61, 28, 7, 108, 113, 43, 179, 37, 142, 3, 193, 116, 103, 19, 171, 97, 176, 149, 30, 175, 138, 156, 13, 150, 142, 176, 42, 63, 88, 10, 84, 96, 200, 1, 217, 195, 207, 220, 115, 112, 1, 8, 197, 175, 50, 128, 164, 154, 52, 71, 11, 111, 40, 142, 30, 159, 195, 114, 50, 57, 19, 21, 143, 213, 175, 117, 25, 23, 183, 127, 188, 120, 85, 6, 56, 78, 185, 127, 28, 175, 200, 4, 197, 173, 208, 91, 247, 86, 190, 195, 244, 113, 229, 51, 132, 158, 230, 35, 116, 229, 211, 26, 84, 216, 176, 233, 118, 95, 236, 7, 180, 69, 166, 178, 85, 12, 170, 95, 62, 31, 35, 87, 26, 144, 229, 207, 59, 162, 7, 170, 121, 189, 186, 131, 166, 3, 214, 141, 24, 25, 48, 13, 180, 181, 192, 178, 170, 236, 36, 180, 213, 53, 185, 209, 89, 57, 125, 1, 3, 37, 149, 134, 98, 255, 30, 88, 204, 174, 178, 244, 145, 158, 61, 172, 251, 5, 152, 129, 70, 64, 214, 51, 70, 89, 55, 111, 110, 138, 77, 31, 122, 56, 221, 151, 127, 88, 251, 34, 32, 138, 154, 45, 89, 55, 219, 176, 28, 152, 71, 119, 145, 44, 174, 127, 152, 119, 194, 157, 30, 177, 234, 8, 79, 231, 209, 124, 156, 45, 19, 209, 181, 42, 189, 218, 45, 97, 200, 6, 185, 99, 231, 199, 184, 89, 147, 45, 156, 0, 237, 8, 190, 173, 60, 237, 146, 60, 161, 11, 236, 200, 125, 139, 187, 40, 238, 172, 105, 192, 33, 184, 93, 2, 16, 203, 165, 27, 30, 6, 254, 150, 123, 20, 255, 19, 226, 149, 193, 12, 1, 95, 14, 81, 196, 201, 111, 208, 137, 186, 177, 0, 164, 239, 160, 124, 191, 192, 111, 25, 29, 22, 191, 180, 67, 199, 239, 185, 247, 196, 250, 224, 234, 21, 13, 196, 198, 229, 50, 99, 17, 200, 70, 236, 58, 189, 166, 242, 35, 187, 151, 116, 58, 247, 205, 100, 86, 59, 180, 153, 74, 127, 211, 144, 32, 46, 53, 127, 66, 150, 210, 147, 233, 128, 189, 235, 241, 65, 144, 149, 48, 197, 102, 247, 228, 168, 188, 192, 46, 187, 99, 39, 41, 87, 88, 190, 215, 27, 184, 159, 117, 25, 169, 184, 131, 246, 176, 164, 166, 206, 214, 236, 89, 173, 36, 2, 250, 69, 105, 5, 252, 79, 64, 77, 124, 106, 1, 128, 236, 5, 248, 211, 230, 109, 203, 102, 171, 27, 122, 170, 217, 126, 115, 236, 255, 52, 91, 225, 230, 96, 98, 215, 25, 137, 52, 162, 141, 140, 56, 31, 145, 57, 34, 228, 37, 173, 17, 81, 22, 161, 102, 15, 91, 213, 117, 191, 49, 246, 27, 58, 67, 64, 79, 222, 217, 198, 170, 225, 236, 212, 1, 180, 240, 236, 51, 204, 31, 192, 55, 151, 53, 252, 107, 34, 161, 24, 32, 83, 245, 231, 136, 68, 244, 46, 105, 180, 41, 110, 196, 209, 233, 182, 212, 131, 155, 31, 187, 198, 143, 201, 222, 196, 21, 102, 198, 187, 213, 144, 85, 145, 229, 185, 11, 130, 195, 200, 88, 199, 91, 222, 87, 15, 196, 232, 192, 199, 146, 11, 31, 194, 90, 193, 118, 9, 45, 0, 38, 73, 8, 181, 253, 163, 12, 170, 16, 84, 89, 52, 152, 25, 51, 76, 52, 10, 158, 70, 46, 102, 199, 22, 140, 247, 70, 66, 248, 26, 223, 73, 97, 12, 204, 96, 49, 226, 230, 116, 77, 212, 137, 28, 101, 182, 113, 238, 177, 204, 158, 180, 226, 116, 179, 173, 189, 76, 110, 43, 14, 200, 252, 161, 24, 29, 248, 155, 228, 194, 90, 72, 47, 53, 248, 41, 178, 233, 4, 80, 100, 183, 112, 61, 85, 112, 101, 97, 127, 54, 170, 156, 8, 207, 123, 61, 185, 57, 59, 166, 100, 178, 167, 59, 126, 72, 179, 18, 178, 155, 79, 28, 72, 71, 35, 127, 178, 254, 143, 242, 24, 249, 128, 180, 180, 162, 49, 215, 125, 20, 198, 178, 91, 181, 181, 153, 225, 61, 48, 58, 25, 92, 154, 65, 157, 252, 147, 40, 5, 89, 109, 224, 232, 94, 74, 91, 122, 82, 138, 127, 124, 196, 0, 115, 182, 171, 175, 63, 38, 221, 38, 160, 213, 206, 128, 68, 198, 112, 184, 24, 101, 63, 221, 199, 136, 194, 62, 190, 70, 94, 190, 207, 4, 97, 116, 94, 190, 198, 196, 41, 72, 80, 223, 146, 185, 222, 213, 255, 26, 211, 39, 127, 73, 224, 235, 233, 155, 28, 239, 130, 180, 48, 253, 71, 106, 14, 174, 129, 122, 116, 132, 45, 221, 34, 110, 56, 120, 241, 235, 248, 7, 184, 183, 98, 43, 23, 239, 151, 105, 138, 85, 206, 90, 111, 96, 20, 70, 224, 95, 221, 230, 37, 139, 217, 79, 51, 16, 197, 137, 121, 151, 215, 30, 241, 82, 133, 2, 81, 138, 52, 109, 167, 54, 206, 59, 55, 185, 57, 173, 101, 65, 128, 0, 40, 146, 144, 254, 224, 96, 60, 157, 179, 197, 184, 189, 180, 49, 87, 182, 137, 128, 216, 190, 129, 165, 235, 194, 33, 129, 8, 120, 144, 191, 46, 34, 16, 130, 64, 120, 122, 18, 252, 145, 186, 199, 116, 212, 208, 173, 245, 75, 132, 221, 134, 182, 102, 82, 31, 15, 210, 131, 130, 87, 26, 20, 87, 153, 113, 85, 78, 172, 125, 126, 170, 201, 121, 28, 231, 151, 253, 2, 80, 228, 241, 47, 170, 101, 21, 204, 122, 133, 153, 76, 119, 234, 145, 204, 28, 65, 249, 243, 217, 57, 33, 156, 244, 10, 79, 61, 181, 132, 249, 180, 109, 236, 111, 186, 9, 236, 98, 53, 231, 148, 114, 190, 99, 98, 118, 145, 16, 17, 235, 193, 21, 207, 199, 91, 245, 37, 94, 219, 146, 218, 60, 207, 118, 164, 165, 205, 151, 109, 147, 107, 115, 165, 209, 55, 196, 232, 160, 240, 155, 215, 167, 233, 200, 125, 83, 52, 16, 137, 191, 23, 204, 49, 50, 86, 251, 243, 217, 117, 145, 217, 250, 205, 137, 163, 194, 159, 33, 31, 194, 90, 105, 105, 210, 185, 206, 17, 0, 149, 54, 240, 92, 55, 85, 49, 177, 102, 3, 45, 197, 232, 190, 193, 193, 168, 158, 151, 113, 21, 29, 252, 200, 184, 163, 142, 42, 154, 120, 219, 147, 48, 160, 193, 24, 201, 137, 171, 111, 18, 216, 74, 108, 207, 121, 94, 52, 209, 27, 125, 186, 119, 246, 80, 156, 150, 150, 32, 53, 239, 59, 104, 10, 9, 3, 234, 189, 26, 5, 84, 218, 201, 138, 56, 197, 67, 17, 37, 159, 74, 77, 199, 102, 111, 244, 29, 166, 53, 118, 133, 12, 92, 23, 70, 123, 27, 177, 194, 117, 154, 90, 193, 125, 54, 204, 220, 251, 187, 234, 65, 66, 227, 198, 102, 146, 246, 165, 17, 199, 209, 85, 148, 232, 231, 64, 85, 182, 229, 41, 163, 82, 204, 211, 218, 189, 162, 241, 209, 38, 115, 220, 108, 155, 81, 214, 49, 127, 15, 22, 186, 255, 94, 185, 92, 118, 152, 159, 212, 3, 62, 102, 71, 215, 159, 115, 203, 210, 134, 17, 89, 33, 109, 190, 125, 182, 164, 23, 217, 63, 85, 187, 84, 201, 244, 16, 114, 192, 34, 79, 61, 181, 148, 233, 162, 125, 234, 133, 241, 137, 153, 165, 211, 122, 164, 48, 79, 108, 197, 127, 27, 21, 58, 65, 184, 12, 178, 33, 168, 95, 182, 19, 148, 251, 168, 60, 128, 64, 3, 181, 147, 219, 9, 127, 216, 116, 84, 27, 247, 76, 18, 86, 43, 184, 221, 1, 101, 26, 222, 224, 70, 34, 82, 136, 39, 245, 205, 75, 30, 231, 41, 72, 22, 57, 165, 161, 240, 137, 179, 26, 189, 221, 253, 122, 247, 197, 167, 20, 129, 180, 81, 10, 127, 103, 242, 236, 64, 18, 17, 129, 61, 114, 82, 144, 226, 223, 132, 127, 9, 160, 48, 142, 82, 57, 5, 112, 49, 93, 49, 72, 22, 1, 216, 14, 117, 43, 1, 167, 1, 75, 225, 221, 251, 133, 119, 156, 187, 247, 227, 28, 28, 137, 88, 213, 99, 38, 136, 113, 221, 179, 194, 62, 238, 85, 6, 13, 124, 239, 105, 104, 58, 160, 131, 124, 95, 101, 19, 20, 184, 122, 64, 131, 201, 9, 247, 25, 94, 221, 159, 209, 171, 248, 144, 189, 2, 4, 213, 118, 99, 79, 144, 122, 143, 127, 74, 12, 193, 167, 73, 119, 45, 31, 16, 77, 99, 27, 244, 12, 91, 193, 139, 0, 214, 243, 14, 198, 43, 144, 162, 119, 217, 107, 68, 93, 174, 0, 63, 121, 244, 254, 76, 191, 162, 40, 77, 197, 61, 193, 9, 17, 68, 36, 53, 113, 239, 210, 151, 17, 44, 142, 155, 151, 71, 203, 93, 141, 46, 176, 225, 35, 177, 11, 50, 89, 126, 151, 7, 221, 227, 219, 180, 211, 244, 194, 44, 228, 10, 17, 30, 57, 1, 29, 3, 190, 73, 13, 90, 57, 70, 52, 179, 60, 79, 200, 90, 34, 142, 68, 246, 6, 234, 9, 85, 50, 14, 38, 4, 99, 112, 68, 44, 18, 71, 195, 96, 240, 100, 155, 128, 150, 179, 167, 190, 149, 164, 35, 69, 147, 115, 92, 19, 204, 127, 238, 38, 57, 103, 185, 235, 75, 202, 243, 73, 19, 212, 144, 199, 179, 85, 68, 141, 233, 253, 195, 35, 89, 173, 105, 38, 165, 156, 161, 22, 193, 246, 150, 83, 35, 29, 86, 184, 35, 101, 250, 89, 91, 235, 87, 25, 141, 25, 120, 39, 104, 62, 201, 225, 195, 60, 237, 232, 67, 67, 70, 81, 240, 74, 95, 99, 31, 224, 212, 159, 75, 182, 71, 63, 4, 6, 9, 139, 19, 159, 201, 228, 113, 30, 129, 41, 41, 108, 72, 113, 194, 179, 84, 121, 226, 61, 110, 74, 122, 32, 187, 32, 238, 169, 172, 56, 206, 221, 95, 154, 23, 238, 47, 127, 46, 147, 201, 227, 52, 56, 35, 97, 156, 178, 68, 87, 118, 89, 162, 59, 187, 44, 249, 33, 163, 60, 89, 197, 2, 197, 9, 105, 191, 202, 252, 181, 155, 207, 218, 201, 218, 193, 250, 97, 231, 138, 125, 47, 123, 39, 123, 219, 118, 234, 175, 159, 78, 128, 189, 136, 178, 45, 246, 118, 112, 44, 194, 128, 16, 33, 75, 188, 220, 208, 174, 1, 209, 30, 191, 150, 253, 214, 105, 136, 151, 99, 11, 239, 11, 115, 77, 215, 11, 24, 9, 244, 76, 36, 150, 201, 76, 235, 180, 20, 5, 206, 165, 57, 84, 90, 212, 101, 18, 42, 23, 150, 147, 244, 23, 76, 173, 87, 101, 40, 219, 40, 177, 22, 15, 48, 203, 178, 90, 161, 208, 217, 63, 117, 217, 205, 209, 89, 47, 1, 94, 165, 152, 0, 17, 226, 178, 5, 135, 228, 152, 136, 72, 130, 58, 61, 61, 16, 230, 233, 34, 127, 170, 40, 255, 127, 111, 132, 182, 79, 185, 202, 247, 189, 254, 41, 198, 105, 5, 186, 211, 49, 205, 72, 113, 25, 20, 20, 209, 155, 137, 9, 232, 137, 246, 202, 53, 188, 85, 18, 234, 150, 113, 238, 243, 197, 214, 199, 245, 159, 99, 105, 201, 122, 144, 90, 63, 79, 175, 50, 248, 230, 132, 11, 227, 194, 244, 164, 203, 198, 148, 203, 197, 241, 97, 71, 198, 213, 133, 121, 151, 43, 35, 142, 89, 231, 234, 107, 249, 204, 107, 106, 235, 249, 199, 171, 121, 198, 106, 107, 97, 22, 53, 53, 181, 60, 67, 13, 252, 40, 51, 119, 90, 14, 183, 255, 61, 1, 163, 37, 201, 162, 56, 209, 200, 227, 17, 50, 127, 18, 140, 46, 26, 25, 153, 238, 5, 14, 173, 211, 171, 73, 75, 141, 201, 93, 37, 82, 213, 223, 149, 160, 225, 234, 192, 138, 138, 162, 80, 237, 125, 172, 92, 184, 51, 53, 46, 122, 12, 189, 168, 17, 55, 238, 244, 48, 171, 39, 59, 244, 25, 250, 55, 179, 242, 166, 69, 224, 106, 128, 46, 179, 241, 252, 34, 191, 228, 40, 177, 158, 49, 14, 9, 197, 96, 188, 73, 240, 246, 152, 9, 172, 250, 206, 203, 165, 65, 199, 200, 200, 147, 201, 228, 184, 178, 100, 109, 53, 63, 169, 143, 18, 3, 34, 208, 84, 172, 164, 166, 39, 95, 142, 79, 238, 31, 73, 79, 235, 31, 76, 75, 31, 236, 75, 113, 104, 183, 11, 107, 195, 58, 160, 248, 194, 224, 96, 190, 0, 141, 23, 242, 49, 24, 161, 208, 248, 101, 126, 102, 91, 102, 126, 71, 62, 161, 239, 243, 162, 152, 65, 212, 182, 216, 166, 56, 100, 148, 82, 182, 191, 29, 46, 134, 196, 250, 121, 92, 203, 22, 199, 135, 49, 50, 42, 159, 142, 167, 228, 161, 66, 105, 81, 173, 41, 207, 43, 227, 50, 132, 108, 108, 30, 153, 144, 99, 136, 86, 12, 205, 152, 68, 66, 254, 209, 212, 166, 156, 200, 128, 158, 87, 230, 185, 11, 201, 177, 27, 97, 37, 126, 43, 241, 114, 8, 47, 111, 101, 55, 235, 98, 107, 201, 86, 182, 10, 167, 180, 40, 202, 71, 187, 114, 149, 85, 73, 47, 99, 66, 92, 13, 170, 54, 55, 164, 239, 161, 129, 174, 186, 93, 67, 167, 218, 137, 10, 150, 121, 27, 105, 224, 136, 90, 107, 81, 181, 121, 196, 94, 123, 242, 86, 24, 196, 44, 142, 65, 80, 53, 144, 236, 173, 0, 48, 107, 7, 229, 27, 45, 85, 246, 186, 205, 95, 211, 191, 255, 146, 174, 254, 59, 210, 117, 44, 254, 0, 226, 159, 62, 116, 198, 104, 182, 164, 181, 147, 42, 92, 144, 158, 247, 37, 108, 231, 89, 104, 67, 88, 225, 48, 146, 102, 68, 140, 163, 134, 209, 49, 0, 170, 39, 141, 36, 218, 126, 18, 30, 38, 214, 189, 86, 195, 231, 112, 229, 89, 137, 235, 47, 206, 107, 30, 168, 168, 107, 121, 91, 128, 109, 238, 59, 175, 10, 34, 36, 134, 135, 67, 167, 88, 66, 72, 208, 83, 74, 176, 132, 169, 235, 120, 79, 215, 184, 233, 71, 233, 51, 70, 92, 4, 51, 35, 172, 94, 166, 67, 47, 74, 239, 118, 137, 63, 35, 112, 128, 130, 50, 45, 81, 35, 142, 210, 226, 69, 202, 102, 7, 176, 113, 196, 120, 70, 124, 228, 136, 2, 197, 146, 50, 191, 30, 120, 121, 254, 112, 160, 206, 200, 86, 66, 23, 74, 34, 24, 184, 0, 22, 201, 241, 149, 198, 98, 111, 198, 0, 171, 3, 4, 81, 6, 74, 1, 196, 121, 55, 189, 185, 63, 69, 63, 89, 130, 95, 84, 205, 100, 220, 100, 156, 81, 53, 109, 40, 40, 137, 143, 230, 231, 132, 159, 7, 111, 251, 245, 216, 183, 33, 46, 170, 33, 168, 113, 18, 141, 60, 229, 84, 244, 236, 187, 19, 233, 23, 224, 213, 120, 151, 236, 166, 108, 117, 41, 3, 26, 168, 114, 224, 228, 7, 61, 100, 78, 30, 26, 137, 81, 137, 89, 24, 44, 2, 157, 149, 99, 120, 225, 169, 61, 7, 228, 122, 22, 189, 141, 177, 100, 148, 191, 116, 97, 215, 245, 142, 70, 58, 142, 179, 183, 81, 104, 21, 81, 144, 225, 196, 169, 26, 121, 247, 47, 104, 199, 162, 12, 54, 128, 96, 249, 85, 173, 124, 134, 200, 239, 208, 31, 154, 201, 97, 11, 136, 40, 223, 170, 79, 107, 80, 243, 250, 164, 26, 65, 128, 187, 252, 63, 160, 54, 105, 144, 252, 172, 254, 99, 156, 154, 238, 203, 246, 183, 164, 222, 134, 216, 106, 100, 87, 212, 100, 165, 62, 250, 214, 190, 49, 190, 88, 203, 45, 2, 17, 1, 50, 26, 73, 114, 13, 138, 10, 8, 141, 177, 23, 163, 135, 86, 26, 222, 15, 60, 130, 108, 228, 148, 73, 193, 215, 242, 213, 17, 97, 25, 88, 25, 70, 152, 29, 18, 4, 23, 161, 60, 130, 61, 131, 108, 220, 49, 37, 150, 226, 252, 146, 128, 216, 26, 66, 246, 48, 224, 235, 231, 59, 36, 53, 90, 237, 122, 174, 5, 57, 170, 77, 94, 54, 222, 80, 244, 146, 153, 142, 76, 101, 84, 89, 97, 135, 236, 157, 174, 73, 121, 188, 117, 47, 140, 232, 252, 58, 247, 131, 122, 15, 185, 73, 105, 193, 191, 210, 96, 177, 106, 107, 51, 206, 155, 84, 253, 249, 17, 44, 145, 145, 179, 230, 210, 80, 213, 211, 254, 163, 240, 117, 117, 76, 221, 43, 36, 171, 148, 172, 144, 44, 203, 205, 23, 166, 150, 44, 79, 3, 166, 173, 38, 132, 55, 133, 245, 238, 179, 131, 193, 7, 69, 102, 6, 217, 191, 4, 78, 186, 253, 67, 50, 234, 141, 143, 118, 73, 41, 1, 39, 42, 95, 255, 206, 181, 47, 158, 121, 74, 247, 37, 219, 209, 26, 210, 239, 165, 145, 159, 166, 218, 23, 244, 6, 183, 165, 151, 68, 191, 102, 66, 182, 230, 162, 242, 147, 42, 74, 10, 48, 101, 169, 57, 73, 157, 150, 55, 224, 157, 237, 193, 179, 249, 197, 54, 159, 61, 144, 123, 40, 72, 64, 144, 65, 80, 144, 14, 214, 199, 95, 27, 245, 35, 59, 224, 225, 16, 20, 125, 229, 231, 141, 75, 40, 117, 164, 164, 214, 20, 82, 186, 5, 179, 241, 42, 36, 16, 193, 45, 115, 34, 196, 151, 230, 203, 80, 0, 201, 33, 180, 82, 201, 37, 251, 230, 196, 81, 25, 124, 164, 9, 69, 46, 76, 14, 213, 37, 105, 94, 59, 86, 217, 97, 53, 219, 126, 243, 184, 43, 135, 18, 52, 224, 35, 201, 217, 245, 199, 205, 180, 20, 6, 100, 81, 83, 4, 192, 2, 191, 225, 200, 83, 69, 117, 217, 50, 227, 42, 218, 4, 92, 134, 95, 231, 46, 126, 32, 234, 152, 150, 2, 240, 219, 237, 35, 11, 100, 110, 79, 144, 20, 186, 193, 190, 182, 21, 210, 71, 45, 66, 147, 42, 206, 200, 31, 64, 78, 159, 224, 138, 42, 138, 70, 135, 69, 95, 129, 2, 42, 179, 250, 51, 19, 74, 154, 120, 47, 199, 85, 96, 99, 179, 102, 71, 252, 147, 129, 127, 250, 218, 192, 238, 12, 213, 15, 193, 145, 86, 149, 240, 225, 250, 225, 205, 243, 205, 242, 205, 139, 115, 219, 171, 229, 243, 14, 105, 59, 17, 249, 130, 60, 167, 237, 112, 174, 8, 163, 69, 21, 69, 56, 2, 46, 118, 32, 54, 222, 112, 143, 37, 69, 52, 29, 216, 110, 218, 50, 174, 62, 215, 79, 33, 64, 184, 103, 14, 38, 32, 48, 83, 252, 6, 140, 170, 225, 251, 248, 3, 117, 210, 181, 52, 239, 184, 119, 136, 75, 222, 245, 138, 64, 32, 197, 240, 149, 131, 76, 68, 103, 155, 255, 235, 115, 183, 187, 9, 78, 61, 10, 203, 248, 128, 45, 29, 253, 61, 241, 94, 112, 70, 199, 232, 243, 201, 19, 86, 39, 159, 136, 142, 206, 112, 171, 29, 117, 165, 123, 173, 254, 29, 235, 139, 212, 189, 100, 164, 25, 26, 39, 142, 221, 203, 146, 209, 76, 7, 154, 209, 172, 85, 29, 163, 176, 75, 137, 137, 156, 38, 10, 119, 186, 14, 72, 251, 212, 234, 178, 154, 44, 253, 137, 59, 84, 247, 88, 182, 70, 81, 189, 124, 150, 40, 61, 9, 186, 157, 22, 173, 148, 249, 188, 173, 244, 210, 216, 212, 140, 251, 88, 85, 171, 218, 100, 252, 83, 60, 164, 5, 16, 227, 165, 145, 8, 137, 44, 247, 23, 133, 149, 104, 164, 48, 180, 125, 167, 53, 107, 217, 55, 217, 103, 52, 33, 22, 224, 133, 21, 40, 13, 205, 18, 243, 66, 188, 181, 25, 32, 55, 36, 52, 226, 62, 35, 107, 218, 48, 106, 152, 250, 132, 89, 158, 18, 76, 47, 122, 29, 57, 243, 16, 202, 148, 15, 223, 108, 254, 103, 71, 200, 135, 160, 138, 156, 186, 66, 239, 49, 24, 211, 110, 213, 218, 122, 154, 15, 215, 168, 113, 50, 97, 24, 157, 145, 48, 208, 55, 132, 26, 200, 206, 138, 235, 215, 170, 127, 255, 184, 52, 13, 148, 246, 253, 69, 108, 93, 80, 247, 247, 237, 57, 143, 214, 59, 203, 90, 239, 117, 189, 221, 235, 153, 207, 50, 107, 232, 141, 153, 69, 235, 207, 89, 230, 104, 67, 39, 202, 91, 59, 166, 146, 43, 146, 191, 66, 178, 254, 15, 121, 43, 120, 207, 224, 236, 203, 240, 129, 42, 37, 137, 211, 239, 40, 248, 174, 221, 138, 134, 74, 9, 213, 3, 29, 61, 35, 40, 63, 59, 239, 86, 103, 67, 211, 135, 219, 246, 104, 205, 83, 139, 247, 44, 145, 17, 194, 158, 209, 144, 211, 186, 226, 213, 170, 246, 1, 115, 137, 225, 33, 229, 25, 59, 67, 24, 17, 18, 202, 78, 252, 217, 241, 183, 45, 16, 225, 3, 174, 246, 15, 14, 48, 209, 253, 117, 251, 242, 81, 96, 249, 163, 31, 60, 178, 31, 38, 202, 73, 130, 130, 168, 120, 97, 217, 51, 192, 232, 98, 184, 59, 249, 28, 155, 255, 17, 54, 210, 242, 25, 5, 41, 18, 242, 119, 80, 229, 21, 61, 247, 96, 224, 149, 182, 173, 55, 84, 22, 47, 233, 140, 151, 117, 19, 150, 1, 73, 164, 132, 163, 41, 87, 109, 187, 101, 59, 89, 239, 219, 123, 215, 1, 126, 128, 37, 253, 248, 177, 124, 116, 151, 8, 221, 118, 233, 7, 206, 231, 225, 190, 183, 151, 7, 6, 230, 35, 187, 102, 82, 66, 94, 236, 195, 34, 134, 225, 247, 104, 43, 131, 31, 70, 226, 248, 142, 138, 205, 255, 18, 185, 180, 124, 229, 17, 241, 178, 212, 51, 17, 175, 234, 169, 40, 177, 60, 66, 128, 7, 35, 192, 158, 104, 7, 219, 120, 170, 141, 45, 255, 253, 152, 156, 231, 157, 40, 140, 40, 78, 32, 200, 196, 31, 98, 61, 53, 126, 207, 119, 111, 96, 224, 218, 16, 171, 240, 61, 59, 83, 131, 88, 185, 119, 246, 20, 169, 166, 239, 137, 81, 246, 146, 84, 199, 208, 104, 22, 87, 142, 176, 81, 151, 79, 70, 78, 35, 213, 44, 247, 86, 139, 59, 74, 40, 178, 82, 45, 86, 44, 117, 104, 177, 60, 104, 82, 53, 213, 203, 193, 50, 216, 129, 170, 8, 191, 226, 25, 77, 195, 189, 179, 207, 91, 254, 60, 33, 33, 63, 71, 192, 207, 203, 73, 20, 149, 70, 23, 123, 185, 173, 72, 58, 119, 203, 196, 197, 59, 45, 137, 158, 63, 114, 12, 183, 95, 123, 165, 171, 129, 146, 164, 36, 179, 160, 184, 108, 6, 170, 69, 23, 138, 77, 48, 115, 73, 92, 21, 181, 52, 35, 216, 97, 205, 204, 172, 12, 164, 89, 7, 43, 19, 178, 189, 237, 41, 13, 132, 57, 100, 11, 125, 105, 238, 193, 146, 248, 60, 25, 69, 198, 85, 86, 159, 58, 171, 67, 87, 208, 115, 195, 227, 102, 126, 159, 89, 109, 193, 139, 92, 144, 247, 207, 23, 153, 1, 87, 206, 79, 182, 124, 215, 91, 64, 227, 111, 44, 204, 250, 252, 219, 242, 142, 213, 44, 198, 122, 37, 76, 24, 167, 197, 224, 7, 140, 125, 190, 67, 234, 164, 4, 133, 3, 247, 62, 74, 203, 246, 42, 251, 253, 134, 71, 174, 18, 84, 158, 136, 157, 62, 171, 115, 121, 201, 168, 41, 69, 138, 196, 5, 147, 96, 2, 22, 139, 35, 97, 49, 4, 146, 171, 131, 160, 243, 199, 55, 35, 181, 182, 237, 210, 236, 147, 23, 70, 255, 149, 196, 142, 224, 226, 47, 104, 94, 80, 91, 8, 34, 48, 14, 78, 127, 151, 128, 230, 30, 243, 231, 79, 107, 12, 12, 116, 107, 144, 149, 213, 13, 38, 21, 161, 171, 165, 116, 222, 82, 174, 88, 141, 155, 254, 127, 4, 16, 32, 160, 15, 150, 97, 48, 89, 115, 93, 152, 58, 204, 245, 245, 228, 57, 25, 63, 15, 102, 26, 163, 122, 150, 119, 102, 127, 70, 5, 65, 6, 92, 60, 74, 186, 214, 51, 140, 167, 37, 126, 125, 77, 101, 238, 239, 192, 167, 217, 155, 143, 228, 147, 223, 183, 148, 148, 200, 14, 103, 116, 252, 213, 210, 25, 23, 167, 135, 26, 75, 251, 122, 171, 164, 149, 97, 190, 15, 120, 219, 105, 19, 10, 200, 74, 95, 167, 223, 144, 189, 108, 81, 93, 252, 218, 161, 62, 71, 154, 158, 242, 179, 164, 162, 128, 132, 58, 190, 147, 231, 193, 236, 179, 183, 235, 112, 111, 223, 155, 250, 169, 145, 46, 6, 54, 15, 126, 155, 66, 28, 202, 45, 221, 189, 221, 45, 109, 32, 1, 6, 237, 30, 126, 105, 193, 215, 12, 113, 40, 110, 43, 114, 225, 7, 234, 235, 118, 191, 105, 186, 129, 1, 55, 214, 207, 190, 46, 162, 5, 251, 252, 182, 60, 183, 30, 183, 249, 247, 90, 108, 194, 2, 194, 3, 3, 3, 232, 214, 151, 42, 204, 218, 252, 36, 91, 222, 91, 197, 30, 237, 194, 183, 119, 55, 78, 53, 22, 212, 255, 73, 64, 237, 82, 135, 126, 62, 74, 52, 65, 61, 151, 212, 146, 69, 138, 234, 143, 61, 110, 126, 242, 195, 137, 24, 13, 244, 74, 236, 215, 103, 221, 54, 30, 84, 69, 125, 55, 249, 0, 27, 197, 20, 240, 73, 149, 207, 113, 97, 227, 213, 182, 223, 230, 116, 70, 15, 132, 4, 189, 112, 85, 233, 176, 177, 29, 202, 248, 33, 233, 252, 91, 1, 39, 89, 242, 167, 98, 252, 91, 20, 251, 71, 239, 81, 154, 122, 219, 128, 138, 217, 1, 93, 159, 244, 209, 72, 168, 167, 154, 117, 137, 41, 39, 150, 102, 98, 157, 79, 25, 22, 36, 199, 69, 36, 150, 134, 17, 72, 219, 183, 118, 138, 134, 18, 40, 118, 4, 234, 195, 52, 27, 187, 17, 252, 62, 150, 220, 138, 175, 66, 184, 120, 193, 236, 3, 107, 187, 170, 237, 35, 47, 11, 5, 30, 254, 146, 235, 172, 177, 212, 213, 226, 62, 191, 117, 241, 151, 90, 204, 41, 27, 187, 49, 21, 54, 41, 20, 230, 237, 27, 22, 127, 24, 113, 62, 96, 226, 162, 236, 23, 3, 231, 239, 9, 219, 207, 165, 182, 217, 27, 155, 104, 169, 120, 232, 105, 64, 191, 200, 224, 68, 86, 100, 99, 78, 92, 42, 186, 84, 219, 69, 142, 109, 45, 41, 122, 133, 160, 118, 179, 174, 247, 218, 158, 203, 55, 254, 120, 249, 223, 179, 250, 101, 201, 19, 185, 15, 46, 200, 79, 166, 92, 22, 44, 108, 180, 153, 19, 230, 31, 59, 151, 179, 163, 119, 146, 76, 235, 245, 219, 205, 252, 235, 213, 27, 18, 241, 39, 42, 166, 184, 14, 105, 211, 112, 166, 9, 89, 233, 150, 192, 244, 151, 225, 130, 48, 141, 191, 105, 239, 182, 122, 183, 64, 120, 254, 174, 165, 86, 122, 207, 68, 214, 174, 251, 158, 9, 169, 144, 6, 142, 30, 238, 198, 48, 8, 154, 178, 115, 146, 147, 24, 144, 41, 105, 74, 234, 152, 246, 158, 255, 125, 135, 12, 234, 61, 117, 238, 127, 172, 91, 178, 220, 180, 60, 192, 86, 228, 191, 54, 151, 39, 229, 99, 102, 2, 21, 25, 157, 8, 9, 83, 34, 41, 176, 227, 83, 218, 243, 221, 192, 59, 1, 226, 46, 142, 88, 131, 229, 10, 65, 60, 140, 118, 140, 212, 159, 211, 204, 212, 134, 77, 149, 55, 183, 145, 114, 147, 114, 230, 136, 57, 60, 183, 224, 68, 19, 41, 222, 184, 53, 29, 85, 170, 176, 90, 147, 87, 33, 223, 200, 104, 30, 11, 34, 248, 97, 237, 212, 143, 219, 94, 91, 41, 153, 223, 79, 12, 181, 16, 213, 102, 104, 109, 164, 145, 243, 189, 80, 171, 61, 96, 186, 7, 8, 65, 124, 248, 236, 100, 76, 133, 222, 6, 230, 84, 35, 251, 212, 182, 31, 95, 250, 179, 127, 116, 40, 236, 53, 145, 148, 59, 241, 2, 174, 176, 166, 186, 16, 92, 147, 85, 40, 186, 74, 165, 45, 177, 116, 222, 168, 113, 238, 95, 113, 156, 111, 139, 107, 111, 109, 125, 99, 67, 47, 58, 197, 28, 28, 19, 231, 211, 203, 211, 203, 87, 245, 36, 178, 46, 174, 251, 72, 217, 44, 184, 67, 214, 193, 199, 77, 170, 62, 96, 192, 193, 215, 215, 42, 248, 182, 102, 58, 107, 123, 147, 243, 165, 97, 177, 4, 236, 174, 247, 33, 235, 198, 158, 237, 216, 20, 47, 244, 188, 136, 218, 111, 177, 187, 53, 209, 116, 197, 131, 17, 249, 220, 175, 56, 105, 129, 130, 63, 246, 168, 228, 174, 195, 95, 196, 183, 247, 74, 8, 25, 135, 210, 163, 142, 142, 142, 69, 174, 168, 135, 253, 214, 201, 167, 230, 162, 234, 56, 250, 96, 149, 79, 99, 26, 226, 6, 142, 238, 57, 34, 59, 224, 142, 15, 220, 178, 116, 110, 139, 204, 94, 78, 201, 49, 40, 82, 183, 162, 181, 209, 199, 178, 149, 165, 93, 169, 203, 242, 134, 174, 59, 88, 228, 139, 211, 216, 254, 159, 76, 65, 100, 247, 188, 116, 151, 24, 230, 240, 50, 245, 139, 56, 244, 219, 180, 100, 116, 99, 213, 143, 188, 122, 229, 211, 149, 111, 21, 205, 218, 11, 117, 167, 107, 29, 163, 245, 231, 60, 109, 242, 142, 225, 90, 91, 205, 77, 120, 189, 214, 7, 87, 196, 11, 32, 239, 127, 252, 163, 118, 38, 56, 15, 196, 142, 166, 229, 164, 44, 239, 6, 26, 220, 21, 170, 57, 19, 204, 103, 123, 26, 233, 179, 95, 78, 44, 145, 176, 65, 205, 72, 15, 35, 146, 88, 167, 108, 14, 139, 202, 196, 253, 25, 65, 241, 181, 87, 238, 25, 154, 172, 158, 56, 227, 251, 139, 123, 73, 66, 146, 223, 72, 181, 1, 245, 116, 25, 127, 180, 254, 160, 114, 86, 181, 152, 182, 107, 77, 95, 73, 211, 25, 29, 227, 136, 100, 217, 103, 37, 89, 217, 8, 94, 117, 255, 27, 218, 226, 179, 199, 35, 33, 14, 122, 120, 77, 237, 200, 172, 230, 88, 207, 67, 207, 121, 148, 194, 91, 174, 12, 70, 199, 75, 14, 18, 26, 231, 238, 136, 235, 53, 209, 194, 248, 162, 52, 1, 12, 99, 59, 109, 211, 216, 112, 136, 225, 27, 17, 251, 87, 93, 21, 0, 201, 39, 195, 73, 183, 246, 101, 141, 1, 200, 204, 5, 17, 217, 133, 247, 20, 117, 214, 131, 0, 234, 37, 58, 42, 26, 99, 27, 34, 36, 197, 138, 10, 234, 175, 142, 180, 234, 85, 14, 20, 182, 6, 158, 241, 90, 36, 134, 111, 194, 137, 219, 188, 19, 86, 219, 139, 212, 148, 53, 210, 191, 221, 203, 150, 87, 201, 39, 222, 16, 29, 63, 48, 60, 67, 101, 56, 106, 50, 219, 255, 82, 2, 105, 45, 48, 250, 96, 12, 47, 89, 27, 225, 194, 136, 108, 118, 225, 35, 97, 116, 186, 224, 204, 197, 177, 219, 22, 112, 182, 251, 190, 244, 238, 209, 68, 103, 234, 187, 137, 143, 186, 64, 15, 207, 95, 147, 23, 155, 144, 153, 234, 153, 90, 202, 173, 195, 239, 155, 101, 187, 90, 91, 237, 154, 79, 45, 133, 249, 226, 199, 141, 54, 168, 165, 157, 195, 247, 46, 17, 155, 49, 158, 45, 124, 190, 160, 167, 188, 43, 171, 28, 91, 12, 143, 95, 24, 130, 254, 149, 142, 64, 200, 29, 207, 103, 186, 38, 98, 161, 186, 27, 41, 10, 24, 234, 188, 151, 204, 239, 30, 224, 202, 42, 77, 179, 181, 166, 193, 144, 129, 202, 224, 188, 140, 190, 128, 117, 59, 124, 250, 245, 238, 85, 182, 45, 134, 144, 38, 56, 183, 93, 216, 57, 244, 29, 226, 137, 182, 201, 70, 67, 127, 72, 95, 213, 180, 93, 214, 27, 152, 66, 156, 191, 245, 117, 141, 73, 150, 105, 90, 157, 200, 236, 234, 253, 178, 249, 173, 119, 120, 6, 63, 32, 16, 97, 9, 24, 220, 117, 138, 233, 166, 178, 199, 72, 58, 190, 144, 202, 122, 208, 221, 45, 55, 150, 239, 52, 99, 182, 50, 146, 112, 154, 47, 11, 27, 27, 223, 4, 231, 101, 246, 250, 111, 102, 169, 31, 124, 31, 82, 15, 28, 197, 176, 227, 222, 31, 247, 187, 61, 197, 188, 195, 28, 136, 86, 71, 105, 61, 108, 183, 147, 254, 23, 169, 143, 116, 122, 15, 117, 2, 198, 133, 177, 221, 49, 138, 81, 192, 54, 195, 226, 63, 128, 76, 123, 251, 187, 251, 76, 123, 32, 83, 253, 189, 172, 172, 190, 206, 106, 150, 253, 131, 76, 155, 29, 232, 247, 247, 246, 89, 97, 56, 243, 235, 110, 142, 111, 164, 117, 133, 183, 225, 7, 145, 143, 90, 134, 170, 58, 143, 93, 154, 3, 74, 253, 87, 21, 5, 176, 132, 190, 237, 215, 210, 207, 105, 198, 117, 20, 181, 240, 235, 55, 17, 84, 239, 68, 61, 36, 59, 50, 152, 1, 12, 199, 198, 101, 19, 195, 39, 160, 228, 94, 30, 139, 27, 16, 33, 5, 224, 59, 62, 222, 111, 253, 36, 198, 44, 206, 144, 155, 13, 43, 88, 246, 2, 158, 29, 151, 154, 231, 199, 108, 53, 248, 2, 196, 93, 248, 212, 35, 79, 186, 145, 96, 192, 80, 56, 165, 5, 207, 113, 11, 108, 115, 42, 163, 190, 199, 162, 36, 156, 99, 248, 231, 67, 171, 248, 168, 172, 112, 215, 20, 211, 69, 248, 110, 207, 13, 184, 79, 63, 200, 241, 153, 102, 19, 212, 21, 65, 222, 24, 185, 255, 12, 163, 209, 55, 231, 130, 204, 216, 133, 225, 11, 248, 13, 145, 128, 171, 219, 35, 237, 136, 55, 108, 171, 146, 197, 133, 15, 22, 248, 242, 237, 166, 47, 148, 178, 1, 179, 180, 199, 151, 103, 199, 227, 55, 128, 7, 217, 236, 150, 150, 23, 204, 2, 215, 213, 115, 101, 109, 1, 189, 167, 17, 121, 135, 170, 138, 125, 203, 78, 173, 245, 216, 109, 203, 146, 186, 196, 104, 190, 118, 58, 216, 86, 86, 121, 171, 186, 87, 177, 202, 152, 185, 169, 56, 203, 22, 184, 172, 216, 212, 16, 227, 12, 70, 235, 107, 67, 149, 165, 21, 161, 121, 233, 221, 254, 39, 178, 140, 228, 133, 23, 113, 156, 11, 245, 236, 245, 238, 79, 60, 219, 12, 147, 210, 5, 174, 50, 9, 110, 72, 13, 15, 76, 149, 53, 238, 79, 81, 217, 80, 224, 25, 156, 140, 241, 222, 93, 245, 160, 45, 253, 236, 164, 203, 103, 125, 159, 114, 167, 228, 132, 74, 251, 199, 237, 154, 91, 30, 160, 163, 48, 238, 211, 179, 19, 138, 253, 202, 153, 114, 154, 137, 195, 47, 42, 113, 196, 155, 222, 212, 74, 5, 91, 115, 142, 42, 60, 112, 2, 77, 10, 102, 224, 96, 18, 100, 40, 111, 93, 165, 53, 231, 169, 114, 1, 250, 110, 106, 130, 153, 70, 87, 6, 25, 157, 156, 129, 26, 212, 26, 197, 98, 213, 186, 226, 152, 89, 94, 23, 160, 75, 180, 93, 58, 253, 43, 165, 113, 229, 64, 126, 169, 127, 166, 172, 11, 85, 137, 215, 21, 182, 133, 126, 203, 160, 247, 158, 19, 161, 17, 226, 153, 51, 112, 109, 99, 239, 230, 168, 156, 0, 77, 210, 41, 33, 150, 239, 199, 94, 222, 37, 58, 166, 98, 228, 191, 254, 1, 89, 172, 61, 66, 238, 96, 250, 82, 43, 211, 75, 16, 53, 123, 146, 123, 169, 158, 89, 164, 120, 118, 79, 24, 136, 164, 45, 67, 249, 245, 156, 213, 238, 129, 17, 202, 243, 179, 255, 44, 163, 97, 57, 42, 62, 208, 75, 142, 114, 152, 192, 87, 96, 168, 240, 231, 105, 164, 127, 168, 151, 7, 98, 101, 187, 144, 128, 48, 198, 95, 79, 94, 79, 254, 153, 188, 170, 126, 63, 109, 52, 109, 139, 26, 82, 90, 84, 158, 122, 116, 198, 48, 251, 172, 206, 174, 66, 111, 83, 137, 117, 157, 181, 142, 229, 75, 27, 211, 29, 21, 146, 113, 41, 233, 117, 233, 49, 41, 226, 207, 42, 173, 76, 95, 76, 95, 231, 151, 229, 235, 7, 151, 93, 148, 86, 27, 224, 166, 135, 204, 95, 204, 237, 230, 101, 244, 44, 43, 3, 19, 249, 165, 37, 30, 237, 160, 142, 115, 178, 84, 221, 75, 120, 219, 179, 25, 88, 115, 10, 173, 195, 172, 47, 185, 213, 76, 183, 25, 225, 197, 85, 89, 229, 91, 184, 111, 76, 125, 40, 33, 9, 154, 189, 199, 135, 113, 48, 166, 186, 1, 229, 61, 169, 187, 55, 25, 207, 213, 104, 55, 165, 164, 9, 136, 109, 86, 5, 249, 211, 66, 105, 3, 143, 152, 58, 108, 87, 20, 1, 188, 98, 102, 41, 72, 189, 200, 243, 249, 16, 46, 35, 181, 51, 47, 156, 195, 73, 250, 236, 164, 76, 189, 19, 107, 224, 80, 202, 133, 123, 107, 221, 246, 221, 94, 186, 80, 164, 63, 246, 79, 132, 215, 107, 35, 99, 178, 175, 158, 28, 226, 4, 101, 31, 1, 177, 189, 73, 185, 73, 64, 184, 163, 62, 32, 16, 59, 216, 11, 44, 1, 97, 25, 24, 78, 93, 241, 237, 60, 41, 244, 93, 17, 136, 226, 216, 126, 21, 23, 81, 66, 182, 191, 108, 147, 67, 100, 196, 175, 254, 137, 132, 208, 51, 224, 55, 241, 148, 204, 226, 34, 122, 107, 63, 42, 43, 38, 42, 192, 223, 42, 25, 250, 199, 21, 94, 85, 150, 151, 143, 150, 50, 124, 42, 103, 232, 125, 103, 130, 81, 93, 42, 85, 253, 39, 169, 8, 177, 141, 37, 193, 18, 100, 152, 195, 169, 205, 245, 45, 182, 125, 146, 209, 238, 247, 8, 136, 237, 21, 55, 191, 69, 165, 248, 169, 225, 182, 178, 18, 165, 132, 100, 192, 195, 49, 192, 60, 106, 238, 198, 226, 176, 39, 210, 141, 230, 165, 55, 79, 156, 212, 85, 245, 228, 51, 130, 170, 32, 41, 162, 7, 248, 253, 232, 77, 105, 29, 1, 119, 124, 83, 248, 112, 69, 215, 28, 80, 176, 26, 154, 189, 219, 7, 120, 166, 142, 206, 223, 62, 218, 124, 83, 218, 112, 208, 248, 101, 6, 177, 221, 247, 127, 81, 208, 148, 171, 202, 173, 153, 177, 36, 249, 191, 19, 196, 142, 34, 58, 31, 122, 85, 243, 8, 239, 2, 166, 208, 47, 20, 251, 215, 202, 31, 62, 84, 225, 207, 104, 110, 89, 26, 71, 145, 129, 235, 37, 122, 173, 92, 234, 74, 135, 141, 135, 84, 57, 169, 233, 40, 247, 195, 74, 144, 41, 109, 163, 105, 1, 250, 190, 61, 220, 204, 204, 76, 98, 186, 130, 27, 98, 96, 160, 228, 233, 26, 128, 229, 252, 106, 147, 128, 216, 238, 251, 201, 242, 11, 241, 143, 143, 7, 84, 114, 215, 100, 253, 207, 214, 83, 83, 34, 215, 251, 123, 35, 87, 83, 82, 159, 173, 90, 233, 253, 33, 59, 22, 100, 156, 63, 24, 213, 243, 165, 101, 228, 6, 113, 82, 255, 229, 216, 158, 94, 96, 147, 120, 207, 16, 224, 102, 160, 32, 20, 220, 173, 118, 156, 160, 186, 39, 178, 85, 114, 199, 1, 175, 110, 231, 164, 181, 207, 226, 211, 207, 197, 103, 192, 231, 169, 7, 31, 173, 236, 136, 0, 202, 33, 64, 70, 94, 40, 39, 173, 0, 184, 235, 149, 38, 114, 174, 64, 41, 169, 52, 35, 3, 220, 120, 212, 120, 4, 42, 77, 207, 79, 193, 150, 235, 173, 162, 52, 17, 10, 202, 133, 191, 216, 13, 140, 74, 108, 103, 100, 200, 163, 17, 49, 160, 187, 103, 248, 96, 253, 77, 105, 131, 103, 42, 95, 191, 88, 209, 50, 160, 105, 139, 202, 43, 97, 50, 26, 30, 246, 14, 59, 113, 52, 80, 190, 126, 175, 105, 183, 125, 179, 110, 243, 12, 241, 170, 175, 177, 239, 180, 236, 191, 236, 207, 200, 146, 242, 177, 111, 230, 248, 217, 165, 22, 177, 141, 37, 195, 26, 114, 75, 214, 147, 164, 102, 103, 118, 98, 157, 244, 95, 119, 104, 120, 83, 171, 207, 94, 159, 77, 194, 79, 33, 180, 135, 64, 189, 172, 222, 13, 56, 159, 162, 87, 143, 240, 100, 13, 192, 41, 235, 237, 177, 51, 143, 168, 66, 84, 203, 203, 218, 101, 183, 245, 112, 39, 132, 202, 215, 3, 135, 140, 107, 252, 94, 251, 138, 121, 150, 222, 210, 190, 220, 66, 148, 210, 184, 174, 137, 209, 18, 51, 245, 225, 210, 6, 239, 227, 121, 159, 232, 42, 79, 202, 137, 121, 234, 90, 78, 183, 153, 217, 81, 159, 228, 166, 99, 52, 198, 117, 173, 141, 222, 31, 55, 65, 185, 125, 248, 49, 31, 179, 124, 105, 236, 176, 25, 154, 23, 153, 212, 85, 126, 166, 236, 33, 223, 139, 143, 10, 43, 207, 128, 147, 90, 123, 204, 191, 31, 53, 51, 149, 131, 183, 37, 69, 148, 81, 163, 182, 134, 123, 100, 119, 206, 72, 172, 119, 52, 13, 175, 212, 221, 30, 165, 103, 50, 165, 173, 66, 129, 214, 7, 232, 92, 91, 182, 32, 183, 103, 47, 161, 32, 5, 180, 101, 101, 228, 64, 33, 254, 203, 138, 243, 114, 176, 187, 69, 190, 180, 211, 13, 47, 187, 143, 119, 102, 191, 4, 66, 26, 42, 43, 42, 179, 248, 85, 106, 114, 18, 230, 89, 70, 201, 43, 136, 111, 127, 151, 28, 208, 172, 148, 179, 26, 12, 176, 39, 189, 193, 16, 13, 175, 207, 19, 170, 50, 52, 166, 182, 140, 62, 168, 59, 168, 40, 106, 56, 217, 158, 50, 236, 109, 60, 73, 255, 36, 211, 137, 31, 150, 17, 233, 148, 95, 243, 82, 147, 193, 146, 13, 249, 2, 85, 6, 65, 117, 203, 57, 115, 247, 43, 209, 151, 109, 14, 227, 8, 166, 201, 255, 228, 170, 127, 237, 115, 9, 168, 251, 144, 39, 208, 42, 252, 72, 44, 12, 109, 183, 226, 51, 33, 139, 205, 53, 94, 190, 4, 63, 36, 95, 133, 103, 179, 64, 209, 22, 90, 34, 96, 72, 1, 133, 159, 18, 114, 168, 62, 158, 145, 174, 136, 241, 172, 39, 254, 51, 40, 122, 173, 76, 177, 83, 17, 120, 2, 172, 40, 172, 96, 132, 92, 180, 57, 34, 113, 81, 194, 212, 190, 100, 106, 188, 201, 2, 183, 80, 162, 45, 159, 92, 207, 77, 194, 38, 101, 36, 21, 38, 227, 179, 172, 129, 128, 99, 134, 155, 1, 61, 95, 33, 115, 160, 112, 32, 99, 0, 59, 128, 188, 179, 254, 57, 42, 122, 182, 212, 2, 170, 55, 108, 104, 45, 103, 112, 79, 194, 186, 246, 217, 226, 110, 197, 254, 119, 83, 127, 243, 68, 47, 0, 171, 199, 141, 126, 202, 125, 9, 73, 225, 223, 5, 164, 67, 93, 235, 241, 5, 181, 234, 202, 200, 90, 100, 83, 212, 97, 27, 174, 235, 135, 187, 140, 182, 26, 206, 177, 201, 194, 79, 28, 138, 76, 216, 130, 100, 13, 47, 241, 172, 92, 245, 75, 9, 106, 211, 223, 197, 89, 18, 191, 177, 5, 41, 140, 150, 68, 154, 41, 133, 121, 2, 223, 164, 5, 151, 147, 197, 246, 180, 99, 5, 38, 18, 202, 71, 188, 204, 17, 252, 168, 60, 70, 177, 243, 120, 3, 77, 125, 5, 232, 166, 129, 178, 170, 134, 158, 66, 52, 110, 112, 235, 205, 122, 81, 193, 250, 106, 129, 45, 74, 18, 31, 60, 218, 221, 89, 217, 212, 213, 217, 244, 56, 198, 206, 49, 222, 222, 2, 119, 116, 117, 165, 51, 48, 212, 162, 200, 196, 6, 159, 215, 98, 28, 42, 220, 207, 207, 5, 14, 213, 227, 203, 107, 58, 70, 59, 122, 117, 180, 211, 140, 58, 253, 64, 36, 131, 141, 194, 138, 134, 198, 244, 178, 138, 156, 144, 206, 183, 196, 115, 52, 237, 215, 181, 129, 190, 238, 198, 140, 220, 36, 112, 252, 89, 163, 75, 196, 2, 137, 33, 74, 154, 119, 5, 171, 139, 128, 116, 144, 11, 192, 30, 41, 170, 253, 202, 222, 93, 148, 26, 213, 26, 173, 239, 41, 200, 110, 234, 173, 169, 209, 5, 208, 141, 195, 27, 111, 2, 208, 241, 33, 20, 56, 102, 199, 39, 160, 69, 20, 42, 86, 84, 188, 93, 174, 209, 239, 40, 123, 140, 182, 188, 24, 47, 82, 56, 107, 66, 90, 225, 218, 79, 242, 180, 54, 99, 113, 181, 21, 122, 12, 122, 99, 17, 83, 66, 18, 71, 62, 196, 101, 154, 97, 214, 115, 129, 78, 36, 45, 110, 72, 189, 251, 145, 158, 139, 189, 204, 120, 65, 92, 165, 202, 219, 59, 164, 71, 45, 194, 251, 146, 11, 12, 108, 216, 157, 159, 163, 27, 211, 160, 154, 229, 90, 225, 83, 145, 169, 58, 96, 42, 42, 42, 42, 121, 84, 35, 251, 240, 179, 161, 200, 194, 87, 46, 127, 190, 50, 233, 223, 217, 97, 98, 140, 166, 123, 90, 14, 15, 78, 205, 220, 176, 110, 1, 108, 203, 36, 152, 118, 20, 165, 215, 113, 141, 62, 66, 37, 4, 103, 174, 50, 33, 156, 170, 57, 232, 246, 187, 57, 244, 28, 171, 210, 97, 188, 59, 162, 141, 60, 49, 191, 167, 115, 39, 255, 6, 73, 140, 40, 194, 223, 110, 2, 234, 98, 110, 56, 238, 10, 192, 218, 21, 91, 37, 204, 123, 35, 93, 224, 102, 144, 197, 25, 112, 170, 247, 69, 94, 150, 105, 126, 136, 108, 228, 37, 93, 87, 229, 63, 136, 88, 229, 52, 69, 116, 63, 219, 154, 101, 239, 134, 26, 243, 91, 218, 36, 105, 234, 91, 41, 77, 253, 168, 174, 200, 243, 113, 35, 149, 233, 13, 157, 232, 204, 150, 206, 23, 173, 17, 103, 163, 87, 91, 211, 170, 59, 20, 223, 74, 38, 184, 18, 157, 67, 28, 200, 12, 114, 32, 146, 196, 64, 97, 40, 17, 197, 90, 158, 49, 68, 87, 170, 3, 133, 69, 241, 131, 211, 162, 48, 24, 122, 4, 196, 198, 147, 209, 237, 222, 184, 182, 17, 12, 15, 23, 133, 2, 200, 56, 248, 246, 62, 156, 59, 20, 116, 198, 220, 200, 55, 103, 24, 144, 156, 206, 214, 62, 46, 244, 115, 121, 36, 68, 112, 234, 81, 82, 147, 97, 1, 31, 218, 40, 207, 51, 26, 156, 27, 152, 185, 234, 21, 223, 169, 35, 213, 11, 179, 64, 129, 56, 122, 110, 24, 185, 188, 160, 242, 65, 191, 248, 86, 253, 12, 35, 138, 41, 198, 136, 173, 235, 34, 31, 29, 216, 49, 224, 153, 208, 165, 151, 6, 162, 154, 133, 152, 197, 104, 73, 76, 102, 226, 160, 125, 186, 204, 107, 119, 109, 8, 193, 223, 111, 219, 65, 73, 172, 253, 250, 220, 27, 196, 237, 54, 194, 191, 251, 218, 108, 225, 170, 63, 208, 57, 243, 14, 71, 146, 213, 165, 135, 219, 22, 219, 4, 152, 107, 164, 28, 116, 218, 114, 232, 187, 109, 37, 8, 177, 255, 29, 217, 113, 173, 141, 35, 91, 174, 232, 127, 89, 62, 238, 46, 215, 242, 48, 207, 59, 203, 99, 88, 80, 219, 10, 153, 129, 40, 137, 108, 70, 227, 240, 67, 21, 184, 171, 180, 13, 75, 111, 120, 60, 203, 23, 55, 183, 142, 220, 190, 100, 49, 125, 253, 87, 198, 192, 136, 121, 81, 104, 25, 43, 127, 34, 200, 110, 146, 66, 107, 135, 145, 195, 34, 106, 34, 63, 133, 197, 150, 137, 28, 38, 222, 2, 212, 255, 10, 97, 55, 141, 158, 172, 79, 102, 81, 206, 1, 236, 73, 175, 51, 196, 192, 106, 243, 114, 181, 181, 219, 250, 207, 208, 150, 209, 51, 102, 3, 213, 103, 27, 19, 198, 131, 181, 39, 60, 203, 191, 99, 91, 134, 90, 82, 144, 85, 218, 39, 100, 115, 3, 230, 31, 238, 227, 202, 10, 193, 77, 159, 239, 49, 85, 134, 53, 54, 97, 162, 235, 218, 139, 113, 38, 149, 156, 109, 101, 116, 47, 132, 253, 250, 243, 13, 4, 248, 240, 0, 146, 54, 205, 206, 172, 225, 54, 59, 196, 74, 57, 139, 205, 145, 184, 125, 2, 240, 115, 162, 61, 147, 152, 54, 126, 84, 85, 86, 50, 37, 6, 68, 23, 32, 11, 41, 204, 68, 39, 164, 225, 170, 51, 75, 58, 23, 204, 2, 161, 20, 18, 1, 137, 34, 99, 224, 49, 88, 48, 133, 198, 241, 236, 49, 10, 187, 213, 159, 31, 153, 77, 122, 195, 227, 109, 123, 1, 245, 230, 153, 176, 40, 219, 56, 218, 129, 154, 136, 78, 89, 200, 204, 40, 104, 124, 241, 4, 133, 77, 160, 217, 163, 92, 124, 92, 16, 194, 161, 24, 213, 22, 57, 20, 12, 27, 140, 130, 121, 248, 60, 8, 70, 107, 76, 168, 163, 26, 214, 149, 198, 196, 69, 98, 33, 134, 251, 9, 50, 226, 149, 26, 246, 137, 170, 191, 171, 232, 158, 185, 83, 27, 63, 178, 50, 43, 17, 148, 87, 151, 139, 193, 123, 159, 238, 128, 148, 115, 208, 218, 176, 243, 253, 225, 32, 23, 151, 192, 245, 224, 253, 191, 224, 203, 79, 15, 5, 146, 239, 3, 30, 185, 48, 18, 232, 188, 28, 168, 150, 104, 156, 168, 156, 8, 126, 122, 23, 68, 43, 54, 73, 11, 135, 68, 226, 68, 186, 68, 157, 39, 227, 189, 206, 196, 128, 93, 213, 105, 108, 241, 189, 198, 65, 170, 226, 116, 177, 154, 152, 94, 180, 104, 244, 206, 20, 171, 136, 131, 30, 98, 231, 6, 160, 84, 177, 13, 47, 94, 35, 243, 101, 169, 108, 244, 139, 66, 100, 94, 89, 193, 75, 244, 120, 114, 242, 248, 88, 40, 188, 237, 54, 25, 40, 134, 209, 92, 29, 117, 150, 201, 103, 233, 31, 215, 96, 74, 66, 120, 204, 213, 40, 54, 204, 201, 149, 135, 175, 8, 238, 183, 91, 104, 236, 26, 108, 25, 28, 201, 216, 231, 241, 214, 123, 132, 53, 52, 180, 49, 182, 246, 129, 136, 243, 175, 198, 1, 163, 202, 104, 189, 202, 153, 58, 149, 129, 186, 123, 179, 127, 225, 81, 98, 154, 16, 23, 1, 5, 147, 27, 94, 214, 83, 80, 101, 113, 84, 17, 101, 75, 153, 123, 99, 17, 25, 116, 7, 46, 47, 101, 140, 6, 211, 224, 190, 226, 96, 63, 125, 6, 13, 125, 52, 10, 134, 193, 4, 66, 208, 24, 56, 6, 129, 246, 6, 154, 160, 248, 193, 106, 174, 206, 50, 189, 94, 43, 7, 245, 10, 65, 199, 127, 156, 145, 117, 10, 173, 33, 1, 185, 204, 40, 62, 205, 89, 193, 131, 138, 167, 17, 145, 16, 41, 32, 90, 219, 177, 126, 33, 82, 124, 220, 251, 238, 69, 209, 76, 83, 231, 136, 3, 165, 174, 35, 114, 129, 229, 68, 249, 86, 16, 158, 134, 131, 229, 189, 207, 244, 179, 28, 0, 183, 90, 39, 255, 103, 20, 26, 109, 29, 164, 145, 131, 23, 50, 20, 193, 216, 183, 61, 219, 177, 93, 19, 112, 55, 127, 3, 247, 131, 36, 147, 42, 132, 106, 92, 89, 186, 189, 252, 240, 112, 7, 236, 217, 99, 45, 0, 0, 254, 152, 114, 60, 94, 185, 90, 250, 51, 183, 103, 122, 6, 104, 58, 202, 104, 61, 237, 242, 118, 180, 204, 189, 235, 241, 34, 113, 229, 102, 101, 76, 68, 137, 83, 188, 176, 173, 98, 213, 254, 31, 7, 32, 80, 203, 69, 84, 26, 29, 31, 151, 159, 41, 18, 229, 103, 197, 37, 148, 60, 47, 243, 112, 231, 62, 53, 28, 192, 46, 88, 25, 16, 99, 170, 246, 5, 38, 247, 7, 140, 106, 177, 13, 29, 143, 124, 114, 40, 85, 65, 185, 58, 24, 168, 22, 196, 22, 4, 161, 207, 98, 5, 9, 164, 40, 248, 27, 34, 173, 25, 234, 255, 120, 113, 171, 244, 173, 136, 151, 123, 210, 252, 66, 181, 98, 73, 244, 219, 125, 238, 234, 148, 158, 16, 59, 194, 148, 94, 239, 1, 253, 26, 100, 5, 39, 96, 222, 248, 105, 141, 65, 141, 58, 113, 228, 3, 251, 245, 17, 112, 148, 38, 74, 158, 252, 253, 0, 214, 246, 170, 45, 214, 34, 224, 133, 12, 121, 184, 63, 105, 56, 23, 147, 56, 220, 223, 155, 52, 152, 147, 147, 56, 168, 75, 59, 130, 31, 49, 83, 195, 86, 162, 46, 86, 216, 50, 220, 122, 202, 61, 100, 106, 225, 223, 225, 190, 16, 70, 56, 57, 41, 169, 222, 38, 146, 24, 58, 170, 185, 104, 241, 255, 5, 153, 206, 218, 167, 94, 124, 71, 85, 168, 121, 4, 81, 13, 91, 157, 112, 241, 145, 253, 213, 195, 222, 114, 247, 52, 37, 152, 153, 78, 218, 77, 76, 133, 224, 1, 231, 116, 134, 62, 99, 69, 12, 220, 193, 40, 209, 63, 183, 76, 71, 21, 91, 148, 226, 161, 240, 145, 204, 25, 188, 20, 4, 134, 8, 244, 211, 65, 6, 53, 239, 7, 86, 137, 46, 80, 128, 216, 222, 16, 46, 255, 113, 178, 240, 182, 80, 142, 252, 5, 90, 65, 79, 117, 237, 129, 166, 78, 169, 224, 253, 67, 161, 227, 242, 113, 218, 174, 175, 159, 210, 53, 211, 62, 91, 189, 150, 59, 234, 184, 160, 235, 16, 2, 178, 79, 197, 130, 126, 67, 47, 138, 182, 135, 70, 98, 199, 47, 234, 29, 177, 217, 71, 70, 69, 161, 63, 11, 104, 204, 83, 89, 82, 169, 159, 54, 94, 195, 18, 116, 26, 41, 115, 185, 233, 195, 200, 150, 55, 228, 67, 78, 152, 135, 96, 61, 96, 85, 93, 196, 97, 213, 87, 65, 231, 169, 150, 63, 238, 86, 148, 73, 38, 213, 201, 32, 77, 23, 61, 1, 101, 190, 214, 107, 139, 107, 28, 155, 44, 165, 158, 166, 39, 121, 223, 95, 252, 200, 232, 103, 185, 89, 252, 166, 174, 54, 52, 47, 115, 212, 247, 28, 202, 201, 232, 81, 33, 49, 232, 147, 230, 216, 55, 220, 209, 159, 194, 155, 238, 155, 149, 147, 21, 215, 21, 172, 1, 45, 15, 154, 245, 75, 25, 189, 54, 119, 88, 188, 27, 59, 92, 102, 157, 204, 158, 197, 80, 110, 19, 126, 47, 60, 60, 2, 99, 131, 182, 154, 53, 255, 83, 115, 139, 81, 70, 51, 155, 147, 85, 27, 90, 194, 66, 224, 142, 187, 182, 38, 220, 233, 231, 222, 57, 145, 177, 247, 25, 79, 105, 111, 193, 47, 239, 20, 247, 103, 184, 59, 150, 17, 18, 194, 81, 109, 161, 54, 108, 38, 77, 73, 92, 146, 156, 74, 149, 254, 229, 237, 14, 176, 28, 131, 121, 241, 170, 68, 111, 61, 58, 144, 60, 251, 43, 51, 182, 110, 37, 11, 249, 41, 243, 2, 246, 85, 55, 53, 108, 188, 91, 209, 29, 1, 163, 220, 210, 26, 107, 185, 111, 149, 136, 123, 212, 254, 206, 117, 99, 113, 194, 109, 238, 221, 55, 78, 27, 170, 97, 220, 235, 23, 225, 42, 98, 74, 29, 3, 16, 25, 30, 221, 136, 137, 110, 90, 193, 196, 126, 68, 95, 1, 209, 1, 245, 138, 157, 60, 179, 47, 108, 207, 63, 133, 14, 217, 249, 241, 255, 176, 143, 105, 125, 108, 39, 139, 37, 104, 82, 95, 248, 203, 232, 249, 219, 181, 251, 247, 230, 215, 29, 142, 175, 29, 77, 110, 136, 108, 126, 66, 252, 217, 23, 113, 178, 23, 188, 121, 107, 212, 194, 207, 218, 182, 127, 224, 104, 108, 228, 43, 142, 114, 106, 120, 216, 148, 142, 224, 42, 149, 111, 167, 46, 166, 98, 182, 11, 160, 51, 245, 106, 231, 178, 198, 174, 226, 42, 132, 139, 253, 146, 130, 205, 219, 207, 177, 188, 4, 126, 188, 109, 89, 92, 5, 55, 77, 228, 151, 151, 206, 80, 205, 162, 129, 219, 146, 226, 31, 107, 122, 122, 197, 106, 198, 250, 10, 131, 149, 132, 26, 184, 4, 91, 73, 14, 237, 207, 80, 95, 211, 7, 4, 172, 39, 104, 127, 113, 159, 87, 213, 8, 101, 198, 145, 250, 246, 229, 158, 210, 173, 122, 5, 212, 13, 73, 191, 150, 47, 170, 253, 81, 170, 137, 184, 156, 58, 151, 250, 234, 171, 143, 98, 173, 13, 167, 89, 188, 38, 107, 236, 34, 161, 66, 188, 206, 151, 205, 82, 108, 189, 200, 163, 118, 243, 97, 57, 214, 199, 85, 112, 15, 120, 251, 22, 60, 149, 162, 118, 183, 159, 210, 172, 190, 155, 132, 31, 201, 47, 15, 177, 48, 34, 86, 43, 214, 175, 116, 239, 237, 246, 7, 254, 54, 113, 82, 179, 60, 119, 170, 3, 129, 153, 184, 55, 145, 52, 0, 173, 191, 129, 224, 129, 136, 168, 216, 189, 113, 100, 178, 206, 193, 252, 84, 204, 78, 214, 21, 229, 59, 178, 230, 39, 121, 105, 47, 158, 62, 104, 25, 170, 238, 56, 118, 107, 246, 45, 89, 24, 140, 74, 236, 107, 14, 95, 103, 45, 213, 193, 23, 38, 179, 15, 27, 123, 212, 100, 24, 71, 211, 48, 81, 14, 158, 218, 91, 73, 175, 229, 236, 61, 113, 110, 132, 81, 182, 213, 222, 228, 52, 124, 119, 53, 27, 176, 7, 186, 209, 145, 53, 35, 179, 205, 71, 230, 70, 148, 0, 189, 147, 32, 219, 226, 0, 217, 74, 154, 129, 75, 56, 35, 195, 179, 13, 203, 50, 60, 143, 47, 40, 1, 19, 96, 201, 133, 158, 189, 52, 13, 215, 128, 2, 112, 39, 207, 11, 195, 13, 28, 162, 233, 252, 189, 173, 164, 137, 55, 61, 124, 52, 29, 47, 189, 179, 148, 17, 101, 53, 169, 137, 220, 253, 36, 162, 68, 165, 214, 93, 38, 125, 73, 173, 79, 244, 250, 119, 141, 36, 249, 52, 101, 164, 77, 106, 182, 65, 175, 153, 103, 113, 170, 65, 120, 40, 62, 198, 46, 158, 84, 121, 69, 20, 61, 147, 62, 186, 122, 0, 222, 119, 85, 126, 184, 113, 76, 237, 105, 120, 114, 253, 19, 211, 39, 7, 205, 91, 43, 107, 26, 132, 172, 15, 152, 40, 19, 81, 137, 121, 84, 249, 18, 7, 243, 147, 243, 18, 126, 199, 39, 101, 210, 164, 139, 41, 191, 124, 145, 161, 65, 217, 251, 67, 97, 62, 195, 177, 14, 90, 76, 75, 205, 67, 134, 255, 9, 217, 245, 90, 249, 40, 123, 25, 115, 169, 250, 249, 42, 50, 213, 126, 251, 230, 80, 24, 29, 75, 6, 173, 235, 123, 80, 63, 125, 244, 39, 62, 5, 26, 145, 167, 74, 47, 51, 99, 226, 81, 246, 69, 70, 18, 158, 27, 13, 250, 168, 147, 90, 76, 82, 198, 64, 19, 162, 70, 211, 81, 149, 1, 129, 236, 17, 255, 4, 96, 75, 100, 189, 245, 11, 67, 146, 209, 185, 62, 30, 250, 197, 154, 166, 241, 218, 167, 105, 71, 198, 251, 105, 152, 33, 189, 116, 227, 227, 195, 116, 122, 67, 238, 128, 175, 225, 46, 121, 234, 57, 64, 37, 132, 242, 248, 114, 232, 15, 206, 205, 251, 200, 112, 39, 2, 158, 105, 84, 84, 100, 89, 69, 178, 244, 193, 128, 237, 80, 112, 39, 141, 27, 185, 154, 51, 184, 247, 115, 240, 15, 206, 114, 76, 148, 132, 35, 218, 3, 16, 19, 51, 22, 244, 9, 225, 80, 255, 81, 148, 122, 1, 182, 225, 8, 150, 101, 232, 37, 107, 91, 74, 36, 169, 251, 75, 62, 215, 181, 154, 53, 114, 246, 86, 144, 47, 240, 47, 25, 5, 165, 18, 77, 76, 189, 87, 107, 24, 71, 132, 252, 245, 204, 220, 125, 204, 73, 163, 66, 195, 140, 119, 62, 86, 67, 134, 133, 77, 173, 226, 99, 45, 73, 35, 194, 67, 244, 36, 210, 110, 123, 194, 17, 207, 39, 24, 189, 175, 36, 85, 53, 238, 6, 255, 41, 236, 224, 244, 148, 251, 35, 111, 130, 150, 149, 167, 140, 150, 213, 224, 50, 255, 185, 128, 114, 220, 174, 218, 7, 149, 195, 92, 37, 112, 13, 217, 130, 170, 170, 236, 156, 250, 198, 180, 146, 106, 207, 198, 156, 186, 101, 116, 11, 32, 197, 221, 57, 155, 176, 16, 239, 214, 117, 3, 169, 160, 75, 93, 15, 179, 72, 38, 84, 131, 217, 173, 116, 137, 174, 107, 81, 107, 60, 205, 180, 175, 5, 40, 55, 210, 130, 55, 46, 102, 188, 220, 243, 89, 241, 73, 231, 121, 71, 24, 9, 65, 154, 115, 140, 154, 26, 150, 132, 208, 29, 64, 212, 105, 9, 152, 211, 192, 155, 98, 27, 101, 106, 39, 95, 235, 208, 41, 244, 246, 86, 101, 133, 133, 204, 190, 8, 70, 84, 208, 116, 108, 142, 205, 82, 35, 245, 118, 177, 105, 128, 227, 88, 13, 156, 51, 97, 193, 132, 228, 8, 141, 183, 196, 130, 44, 44, 155, 124, 171, 105, 254, 222, 168, 41, 123, 167, 224, 171, 241, 253, 168, 241, 196, 140, 112, 190, 93, 110, 32, 165, 40, 105, 98, 48, 126, 86, 214, 220, 80, 213, 96, 42, 200, 187, 252, 243, 58, 31, 11, 203, 157, 224, 139, 178, 128, 176, 248, 48, 19, 212, 102, 49, 152, 219, 200, 39, 181, 141, 52, 179, 147, 173, 142, 238, 20, 146, 101, 100, 22, 149, 107, 113, 88, 82, 205, 169, 53, 38, 67, 141, 216, 159, 55, 136, 40, 139, 146, 67, 66, 211, 201, 59, 221, 47, 33, 186, 101, 118, 232, 33, 44, 36, 186, 182, 31, 113, 98, 154, 91, 55, 115, 202, 212, 189, 221, 53, 12, 58, 163, 28, 171, 227, 182, 25, 77, 61, 253, 91, 126, 178, 43, 105, 39, 165, 20, 150, 101, 184, 36, 209, 21, 200, 198, 141, 94, 84, 58, 147, 50, 150, 199, 197, 15, 185, 224, 43, 62, 127, 139, 49, 9, 87, 239, 113, 41, 129, 125, 173, 79, 74, 10, 28, 239, 143, 156, 154, 176, 142, 229, 22, 226, 211, 70, 129, 72, 142, 166, 156, 18, 106, 18, 253, 247, 131, 203, 175, 43, 110, 166, 157, 200, 223, 154, 128, 47, 171, 163, 58, 116, 95, 253, 179, 14, 90, 54, 106, 41, 252, 22, 228, 105, 246, 200, 33, 169, 84, 206, 66, 190, 82, 133, 50, 193, 9, 248, 41, 92, 107, 76, 154, 80, 137, 241, 88, 99, 116, 147, 22, 60, 126, 208, 108, 135, 93, 254, 114, 50, 234, 66, 63, 63, 106, 223, 189, 249, 27, 6, 92, 55, 248, 8, 41, 49, 58, 119, 14, 247, 82, 251, 76, 65, 193, 1, 118, 149, 252, 37, 222, 138, 214, 70, 30, 123, 173, 44, 234, 200, 232, 30, 27, 42, 192, 103, 152, 240, 117, 174, 141, 18, 214, 224, 68, 114, 237, 74, 57, 200, 5, 53, 80, 149, 142, 204, 100, 104, 210, 197, 104, 72, 55, 195, 104, 168, 75, 37, 11, 181, 172, 110, 82, 97, 32, 3, 13, 76, 185, 24, 14, 233, 202, 16, 186, 205, 187, 212, 46, 142, 252, 20, 239, 7, 74, 19, 32, 87, 39, 65, 162, 247, 23, 37, 63, 176, 0, 146, 88, 4, 147, 57, 136, 45, 252, 18, 162, 211, 51, 108, 59, 217, 195, 69, 118, 81, 102, 18, 155, 70, 62, 182, 234, 33, 65, 67, 219, 37, 45, 60, 17, 230, 243, 123, 219, 123, 136, 177, 10, 58, 182, 188, 22, 203, 108, 245, 150, 24, 125, 167, 39, 243, 118, 77, 209, 217, 234, 228, 222, 60, 54, 13, 192, 122, 15, 118, 137, 255, 135, 164, 193, 68, 125, 212, 135, 121, 147, 227, 122, 68, 93, 34, 78, 97, 125, 220, 37, 153, 183, 63, 154, 244, 19, 237, 39, 211, 220, 27, 238, 33, 18, 70, 75, 249, 251, 162, 126, 64, 21, 199, 116, 137, 218, 16, 252, 222, 8, 207, 100, 251, 209, 139, 236, 177, 213, 209, 184, 247, 237, 122, 139, 93, 207, 76, 142, 39, 88, 147, 112, 10, 235, 239, 32, 44, 220, 55, 113, 18, 19, 192, 214, 42, 188, 164, 162, 246, 116, 77, 92, 193, 90, 200, 83, 252, 68, 182, 199, 223, 224, 184, 116, 26, 198, 106, 6, 20, 102, 131, 75, 147, 237, 126, 143, 62, 62, 189, 119, 75, 95, 125, 195, 16, 98, 196, 254, 91, 46, 14, 92, 101, 204, 186, 174, 165, 122, 74, 143, 104, 254, 239, 146, 230, 15, 55, 181, 225, 47, 242, 79, 31, 50, 93, 115, 9, 7, 53, 15, 185, 112, 221, 166, 130, 49, 147, 109, 110, 107, 119, 220, 10, 226, 7, 221, 247, 179, 245, 221, 89, 67, 139, 229, 102, 10, 131, 209, 158, 203, 36, 140, 63, 112, 92, 115, 183, 186, 63, 115, 252, 185, 79, 235, 75, 249, 78, 133, 79, 39, 68, 235, 9, 105, 153, 135, 202, 36, 122, 237, 146, 19, 181, 33, 142, 38, 141, 34, 193, 74, 0, 8, 9, 105, 30, 19, 180, 44, 66, 109, 230, 195, 235, 217, 165, 241, 60, 234, 142, 79, 228, 94, 246, 33, 169, 66, 94, 20, 48, 198, 75, 183, 25, 97, 173, 70, 73, 251, 203, 105, 58, 102, 247, 105, 138, 202, 115, 84, 226, 87, 184, 175, 242, 105, 219, 96, 72, 85, 43, 93, 30, 53, 163, 224, 119, 47, 18, 50, 46, 63, 18, 200, 92, 163, 107, 92, 42, 241, 49, 216, 71, 173, 57, 169, 121, 191, 132, 207, 113, 245, 195, 26, 255, 38, 71, 177, 110, 227, 36, 186, 254, 252, 188, 188, 6, 23, 154, 151, 54, 244, 232, 84, 142, 5, 96, 92, 164, 136, 64, 32, 88, 14, 90, 190, 164, 250, 126, 248, 166, 180, 225, 188, 113, 255, 79, 82, 145, 226, 123, 217, 130, 60, 104, 246, 47, 101, 236, 218, 222, 72, 227, 71, 130, 223, 57, 15, 95, 97, 117, 12, 167, 184, 245, 129, 78, 246, 33, 148, 252, 180, 113, 116, 12, 219, 219, 71, 89, 138, 90, 86, 137, 114, 183, 164, 6, 107, 72, 49, 178, 59, 106, 168, 222, 5, 93, 187, 129, 92, 135, 92, 56, 154, 68, 248, 154, 104, 192, 178, 90, 133, 78, 121, 174, 79, 101, 156, 167, 172, 167, 2, 104, 221, 147, 246, 252, 48, 73, 23, 202, 182, 90, 161, 176, 196, 154, 20, 47, 97, 169, 122, 248, 194, 64, 204, 177, 135, 6, 123, 20, 139, 38, 139, 130, 94, 99, 175, 14, 34, 110, 43, 218, 215, 235, 71, 246, 79, 22, 213, 146, 205, 25, 194, 104, 14, 62, 103, 117, 71, 197, 140, 22, 200, 60, 136, 172, 255, 253, 83, 240, 86, 252, 180, 223, 193, 130, 73, 161, 162, 18, 137, 171, 211, 40, 161, 207, 37, 21, 222, 133, 140, 8, 189, 219, 81, 46, 21, 149, 173, 123, 171, 171, 55, 199, 70, 201, 31, 51, 3, 189, 46, 63, 242, 150, 229, 20, 117, 117, 182, 151, 246, 181, 42, 119, 85, 19, 16, 79, 70, 255, 112, 44, 56, 232, 79, 194, 42, 14, 161, 249, 41, 148, 238, 103, 217, 52, 135, 239, 155, 231, 33, 6, 229, 107, 89, 227, 44, 222, 140, 176, 128, 111, 195, 8, 45, 221, 87, 93, 77, 138, 176, 130, 23, 81, 107, 101, 252, 82, 195, 18, 141, 185, 182, 248, 203, 17, 96, 163, 25, 252, 90, 142, 237, 141, 173, 75, 87, 212, 87, 147, 31, 59, 183, 85, 253, 232, 135, 141, 29, 223, 3, 54, 236, 137, 225, 223, 78, 35, 166, 217, 171, 112, 214, 162, 26, 108, 17, 167, 243, 177, 201, 176, 162, 242, 227, 127, 119, 120, 223, 239, 108, 103, 83, 221, 56, 169, 63, 183, 88, 225, 242, 94, 94, 243, 198, 25, 116, 241, 121, 113, 199, 76, 7, 162, 212, 115, 208, 4, 48, 238, 221, 141, 59, 198, 185, 12, 184, 44, 80, 78, 144, 199, 85, 153, 113, 213, 78, 172, 125, 124, 170, 206, 121, 24, 231, 147, 253, 98, 180, 200, 10, 144, 228, 80, 59, 97, 122, 156, 30, 186, 248, 221, 229, 25, 121, 94, 198, 111, 14, 77, 33, 208, 102, 196, 215, 41, 198, 11, 53, 124, 75, 74, 122, 167, 240, 225, 138, 182, 30, 52, 196, 228, 250, 161, 231, 51, 76, 112, 71, 64, 215, 177, 222, 167, 104, 69, 117, 51, 105, 215, 185, 254, 243, 32, 68, 183, 14, 77, 158, 125, 123, 129, 95, 208, 6, 147, 21, 183, 78, 66, 90, 211, 32, 18, 215, 144, 171, 84, 49, 200, 217, 93, 32, 118, 115, 250, 133, 200, 199, 194, 210, 251, 37, 16, 60, 232, 102, 156, 100, 81, 73, 231, 241, 135, 181, 189, 131, 47, 222, 104, 21, 216, 197, 161, 221, 51, 110, 255, 140, 147, 39, 196, 223, 215, 104, 247, 255, 57, 141, 74, 123, 17, 224, 117, 197, 203, 55, 37, 53, 251, 104, 123, 123, 65, 95, 173, 200, 157, 218, 51, 236, 12, 150, 128, 24, 220, 84, 86, 41, 62, 122, 17, 187, 7, 238, 236, 54, 92, 25, 165, 159, 20, 181, 97, 76, 252, 56, 214, 237, 59, 131, 126, 200, 55, 109, 156, 21, 107, 41, 54, 126, 16, 131, 41, 83, 241, 70, 65, 215, 212, 134, 172, 65, 225, 85, 240, 93, 219, 172, 243, 130, 181, 122, 148, 80, 133, 198, 111, 227, 151, 93, 93, 83, 183, 187, 223, 49, 230, 135, 141, 131, 105, 135, 179, 82, 76, 110, 168, 104, 18, 188, 216, 127, 7, 186, 154, 254, 44, 247, 101, 203, 245, 138, 93, 151, 66, 210, 145, 175, 179, 227, 172, 226, 205, 101, 237, 135, 105, 177, 187, 71, 32, 123, 164, 47, 188, 237, 12, 221, 241, 6, 154, 240, 146, 152, 19, 115, 184, 228, 161, 151, 114, 159, 253, 82, 7, 26, 26, 186, 11, 242, 106, 122, 235, 163, 89, 103, 108, 125, 242, 189, 32, 140, 105, 247, 204, 163, 11, 71, 158, 207, 49, 231, 135, 184, 121, 147, 171, 56, 185, 192, 176, 78, 223, 199, 75, 170, 235, 73, 123, 133, 190, 43, 125, 114, 93, 68, 223, 78, 190, 177, 147, 218, 220, 189, 23, 23, 244, 118, 58, 3, 18, 239, 21, 78, 186, 34, 126, 11, 15, 173, 232, 237, 10, 158, 149, 87, 190, 80, 86, 170, 72, 136, 197, 245, 180, 97, 9, 219, 60, 135, 239, 137, 10, 103, 27, 187, 254, 30, 226, 215, 154, 181, 85, 188, 73, 27, 136, 7, 37, 154, 249, 151, 227, 15, 77, 253, 222, 197, 61, 207, 167, 152, 164, 80, 141, 22, 125, 55, 170, 246, 208, 68, 250, 246, 172, 31, 120, 62, 163, 190, 158, 28, 139, 98, 173, 45, 158, 120, 62, 199, 248, 62, 75, 159, 151, 159, 239, 97, 43, 57, 62, 215, 244, 122, 95, 104, 120, 255, 12, 75, 40, 250, 164, 186, 153, 52, 80, 200, 187, 98, 3, 33, 1, 186, 66, 102, 112, 93, 174, 49, 252, 241, 115, 22, 45, 169, 175, 39, 239, 66, 32, 189, 13, 165, 47, 175, 126, 116, 13, 120, 199, 173, 76, 143, 47, 64, 20, 26, 73, 20, 59, 228, 103, 129, 183, 131, 210, 47, 80, 148, 104, 248, 196, 123, 89, 177, 217, 250, 99, 195, 45, 21, 37, 39, 57, 245, 45, 204, 217, 10, 44, 70, 49, 4, 72, 169, 109, 4, 38, 92, 243, 83, 244, 3, 69, 45, 252, 185, 81, 131, 244, 45, 17, 215, 107, 95, 198, 219, 45, 223, 176, 175, 16, 39, 23, 218, 78, 113, 215, 195, 39, 207, 149, 242, 176, 21, 173, 136, 70, 193, 4, 239, 95, 254, 245, 240, 9, 31, 190, 217, 50, 212, 86, 86, 164, 132, 128, 172, 68, 170, 5, 134, 131, 239, 108, 249, 56, 249, 251, 71, 234, 66, 195, 191, 184, 8, 98, 78, 69, 248, 177, 68, 214, 102, 112, 91, 140, 73, 144, 110, 65, 44, 202, 90, 113, 107, 255, 59, 104, 207, 112, 121, 117, 147, 102, 86, 100, 99, 104, 222, 25, 221, 35, 250, 223, 255, 246, 181, 29, 192, 70, 15, 144, 175, 40, 205, 20, 132, 35, 124, 2, 135, 85, 91, 155, 69, 94, 241, 87, 24, 151, 250, 70, 24, 249, 130, 248, 134, 115, 132, 68, 242, 254, 208, 10, 45, 79, 163, 78, 3, 108, 94, 159, 237, 235, 123, 31, 244, 159, 14, 178, 209, 208, 175, 109, 142, 206, 169, 238, 171, 25, 137, 57, 225, 141, 252, 219, 53, 219, 182, 215, 238, 45, 53, 234, 136, 92, 31, 83, 250, 175, 229, 253, 23, 89, 31, 255, 85, 82, 202, 133, 82, 134, 213, 104, 204, 182, 241, 247, 102, 41, 158, 172, 147, 235, 41, 215, 32, 53, 4, 8, 76, 48, 98, 75, 64, 142, 195, 239, 15, 235, 70, 218, 55, 138, 247, 24, 92, 166, 232, 22, 68, 50, 203, 217, 47, 207, 164, 136, 124, 125, 93, 233, 80, 196, 64, 54, 188, 25, 39, 89, 93, 209, 113, 252, 97, 249, 127, 227, 67, 204, 172, 198, 92, 216, 239, 193, 77, 25, 169, 126, 94, 151, 31, 251, 38, 228, 84, 245, 182, 4, 132, 135, 243, 64, 53, 199, 136, 23, 127, 166, 127, 3, 23, 142, 47, 137, 72, 121, 180, 201, 189, 139, 164, 165, 30, 42, 19, 104, 239, 111, 81, 93, 184, 203, 210, 89, 138, 202, 243, 132, 68, 2, 214, 79, 231, 90, 155, 223, 17, 77, 125, 212, 115, 169, 178, 211, 198, 248, 62, 31, 234, 134, 152, 164, 91, 155, 88, 252, 242, 72, 96, 68, 233, 221, 140, 147, 172, 171, 172, 89, 255, 72, 59, 162, 84, 161, 126, 249, 218, 52, 72, 63, 250, 202, 35, 223, 36, 153, 100, 130, 168, 9, 71, 97, 204, 190, 225, 20, 125, 167, 18, 255, 223, 250, 168, 219, 152, 92, 39, 45, 243, 80, 158, 64, 139, 161, 57, 70, 164, 1, 202, 227, 111, 9, 246, 205, 10, 230, 200, 115, 43, 162, 173, 46, 107, 248, 205, 35, 46, 39, 111, 169, 15, 114, 227, 24, 179, 123, 234, 71, 88, 218, 129, 108, 164, 101, 158, 16, 191, 241, 80, 157, 66, 31, 72, 203, 16, 71, 80, 61, 11, 52, 27, 106, 235, 121, 252, 197, 118, 159, 165, 170, 60, 75, 72, 244, 63, 246, 123, 111, 239, 103, 145, 77, 241, 12, 61, 107, 74, 218, 2, 126, 113, 158, 174, 196, 171, 125, 144, 110, 178, 202, 172, 247, 96, 115, 171, 52, 75, 254, 26, 74, 40, 31, 158, 30, 129, 58, 12, 87, 182, 183, 168, 167, 225, 27, 131, 179, 234, 188, 48, 239, 189, 86, 34, 84, 96, 58, 57, 194, 14, 96, 195, 135, 200, 87, 164, 213, 229, 213, 216, 254, 110, 171, 117, 27, 171, 105, 126, 5, 143, 201, 144, 170, 116, 80, 42, 160, 174, 182, 94, 93, 225, 197, 179, 15, 3, 198, 116, 172, 200, 115, 171, 172, 254, 227, 48, 57, 37, 221, 234, 208, 130, 218, 49, 55, 89, 163, 249, 117, 119, 199, 7, 210, 62, 73, 187, 119, 90, 80, 134, 191, 239, 124, 55, 224, 126, 12, 217, 59, 48, 119, 6, 33, 190, 93, 200, 73, 223, 38, 125, 214, 120, 85, 97, 114, 213, 197, 254, 150, 132, 235, 64, 91, 69, 134, 68, 91, 36, 134, 174, 248, 103, 212, 172, 195, 100, 72, 92, 251, 106, 168, 161, 248, 71, 91, 177, 186, 79, 61, 159, 98, 206, 225, 160, 68, 196, 165, 238, 237, 145, 177, 240, 46, 28, 4, 162, 8, 115, 117, 150, 219, 43, 80, 68, 133, 119, 183, 222, 224, 122, 73, 185, 9, 29, 120, 54, 193, 238, 33, 180, 52, 54, 161, 246, 90, 225, 188, 32, 235, 175, 52, 242, 167, 227, 198, 104, 45, 6, 197, 168, 191, 246, 67, 79, 254, 28, 126, 92, 249, 135, 117, 37, 155, 209, 198, 234, 146, 216, 26, 111, 233, 100, 210, 100, 125, 96, 70, 238, 104, 208, 76, 169, 76, 32, 253, 193, 241, 151, 229, 85, 209, 35, 166, 120, 196, 27, 35, 146, 165, 145, 209, 237, 158, 179, 205, 183, 59, 179, 139, 97, 211, 8, 59, 180, 160, 189, 241, 241, 177, 202, 200, 130, 111, 39, 254, 178, 24, 26, 21, 174, 241, 244, 151, 176, 39, 237, 182, 212, 212, 226, 163, 94, 106, 186, 32, 211, 38, 66, 114, 4, 131, 31, 43, 136, 72, 203, 209, 223, 209, 58, 187, 60, 185, 20, 217, 169, 31, 196, 242, 33, 29, 119, 20, 158, 124, 17, 219, 75, 212, 205, 123, 227, 249, 116, 234, 21, 170, 255, 201, 113, 68, 117, 110, 79, 7, 190, 107, 240, 121, 42, 187, 216, 39, 61, 98, 80, 38, 202, 95, 214, 59, 137, 97, 252, 155, 100, 160, 58, 189, 254, 45, 150, 11, 216, 196, 116, 164, 137, 40, 135, 40, 246, 65, 188, 48, 150, 41, 206, 153, 38, 172, 140, 109, 77, 175, 124, 222, 89, 35, 90, 184, 179, 212, 103, 205, 122, 69, 165, 229, 232, 191, 208, 170, 171, 157, 221, 46, 35, 202, 35, 246, 198, 220, 175, 200, 105, 141, 207, 123, 169, 31, 92, 182, 88, 83, 110, 128, 153, 118, 181, 93, 133, 101, 173, 237, 190, 78, 233, 157, 84, 2, 250, 65, 114, 82, 119, 243, 72, 70, 44, 161, 22, 130, 138, 250, 238, 50, 222, 253, 237, 76, 199, 91, 208, 139, 39, 158, 79, 49, 223, 203, 19, 174, 66, 190, 103, 119, 140, 142, 204, 197, 200, 88, 213, 190, 249, 39, 58, 130, 100, 189, 238, 232, 159, 38, 89, 251, 148, 67, 198, 109, 176, 189, 99, 7, 255, 230, 246, 182, 207, 124, 123, 252, 91, 81, 114, 239, 156, 18, 40, 150, 71, 34, 247, 43, 252, 164, 186, 158, 180, 173, 236, 208, 102, 123, 184, 164, 213, 152, 72, 95, 82, 142, 141, 97, 8, 4, 49, 146, 172, 105, 194, 202, 200, 230, 251, 15, 159, 54, 222, 189, 11, 206, 6, 253, 43, 25, 134, 44, 113, 220, 64, 212, 76, 160, 3, 189, 30, 27, 27, 201, 21, 178, 162, 15, 42, 82, 185, 178, 182, 182, 125, 110, 54, 65, 241, 123, 44, 234, 48, 146, 53, 199, 73, 94, 178, 101, 14, 114, 148, 217, 87, 222, 24, 193, 226, 9, 34, 43, 140, 143, 174, 207, 152, 244, 250, 9, 46, 251, 78, 86, 252, 24, 92, 94, 76, 36, 223, 191, 95, 148, 47, 125, 158, 34, 26, 241, 124, 183, 73, 64, 224, 60, 30, 49, 68, 136, 78, 197, 219, 166, 213, 120, 60, 105, 65, 144, 143, 28, 2, 231, 220, 233, 231, 38, 156, 54, 246, 110, 121, 112, 224, 53, 219, 221, 183, 227, 19, 67, 192, 104, 149, 1, 63, 71, 146, 142, 6, 51, 29, 179, 148, 48, 24, 170, 111, 111, 241, 181, 205, 42, 248, 136, 145, 233, 162, 16, 225, 104, 255, 232, 240, 219, 186, 225, 218, 188, 210, 212, 56, 117, 223, 214, 56, 127, 14, 139, 199, 99, 74, 51, 167, 207, 86, 198, 190, 78, 207, 127, 218, 154, 24, 127, 60, 60, 175, 119, 181, 69, 217, 253, 130, 113, 112, 99, 98, 156, 215, 115, 165, 163, 219, 211, 32, 142, 193, 19, 156, 188, 100, 123, 164, 117, 238, 195, 148, 50, 240, 202, 213, 63, 119, 232, 196, 185, 187, 240, 187, 94, 48, 78, 50, 245, 48, 240, 148, 162, 160, 34, 219, 147, 245, 172, 190, 126, 8, 183, 127, 28, 41, 123, 231, 75, 121, 198, 229, 78, 151, 169, 185, 142, 194, 238, 59, 204, 76, 95, 15, 4, 88, 201, 186, 216, 161, 131, 254, 251, 201, 36, 70, 11, 32, 27, 105, 125, 242, 101, 225, 135, 181, 62, 232, 233, 74, 131, 67, 103, 169, 95, 167, 71, 65, 198, 228, 184, 83, 166, 153, 249, 139, 55, 156, 29, 182, 170, 3, 94, 155, 250, 0, 189, 234, 115, 159, 146, 130, 235, 125, 99, 179, 172, 12, 30, 91, 69, 138, 131, 57, 145, 18, 30, 11, 82, 200, 218, 213, 161, 22, 254, 201, 30, 153, 87, 99, 189, 142, 224, 184, 10, 175, 66, 117, 163, 26, 66, 114, 245, 124, 247, 46, 131, 226, 77, 57, 43, 95, 209, 89, 243, 89, 16, 215, 187, 147, 88, 166, 8, 89, 104, 125, 58, 186, 210, 23, 199, 211, 186, 42, 23, 72, 136, 214, 43, 242, 63, 224, 187, 194, 18, 114, 244, 247, 233, 251, 42, 100, 106, 238, 151, 112, 123, 221, 183, 180, 246, 43, 81, 191, 192, 203, 241, 83, 36, 196, 80, 31, 97, 2, 53, 0, 9, 99, 23, 188, 254, 16, 120, 231, 83, 45, 131, 13, 144, 166, 223, 217, 66, 11, 23, 188, 20, 226, 189, 179, 210, 73, 105, 153, 8, 78, 120, 36, 185, 208, 52, 93, 111, 20, 167, 28, 242, 80, 155, 217, 83, 97, 100, 207, 255, 100, 228, 233, 194, 63, 11, 117, 76, 145, 70, 74, 73, 123, 218, 170, 243, 41, 208, 200, 253, 56, 103, 12, 63, 76, 24, 12, 196, 198, 83, 102, 224, 138, 56, 77, 115, 55, 131, 165, 145, 17, 41, 90, 231, 164, 252, 81, 76, 12, 168, 173, 174, 8, 152, 17, 79, 155, 211, 131, 167, 111, 70, 42, 52, 85, 231, 113, 130, 126, 70, 123, 167, 130, 194, 99, 14, 112, 83, 104, 56, 101, 45, 109, 193, 247, 173, 145, 17, 60, 120, 227, 209, 19, 146, 12, 201, 214, 90, 202, 95, 252, 18, 108, 207, 140, 144, 210, 66, 79, 233, 35, 199, 142, 90, 12, 69, 66, 60, 185, 182, 83, 128, 128, 43, 111, 149, 64, 109, 164, 66, 69, 205, 75, 189, 91, 71, 10, 70, 201, 8, 104, 155, 129, 87, 128, 161, 41, 205, 145, 157, 33, 17, 161, 32, 106, 245, 174, 78, 150, 39, 92, 117, 189, 86, 8, 157, 147, 238, 222, 137, 101, 118, 255, 120, 118, 230, 150, 126, 112, 215, 123, 255, 152, 182, 244, 159, 44, 104, 240, 17, 82, 205, 224, 179, 153, 79, 207, 129, 115, 188, 186, 114, 121, 13, 82, 249, 211, 35, 192, 145, 76, 16, 50, 185, 227, 99, 98, 217, 115, 200, 96, 194, 20, 178, 240, 249, 149, 158, 30, 228, 229, 4, 253, 204, 113, 89, 24, 127, 204, 57, 70, 145, 158, 174, 227, 50, 17, 37, 107, 233, 54, 221, 228, 5, 173, 212, 199, 177, 140, 70, 69, 134, 219, 144, 193, 232, 68, 18, 63, 230, 144, 9, 9, 146, 211, 17, 33, 124, 104, 157, 115, 117, 175, 241, 245, 211, 130, 174, 246, 232, 93, 115, 172, 73, 246, 16, 115, 189, 151, 111, 186, 114, 120, 214, 64, 152, 215, 132, 254, 226, 215, 149, 22, 215, 208, 99, 241, 212, 71, 164, 247, 72, 115, 130, 164, 253, 246, 141, 155, 190, 26, 188, 97, 191, 20, 246, 46, 172, 172, 66, 116, 160, 254, 24, 51, 222, 200, 233, 75, 241, 63, 75, 136, 219, 146, 196, 97, 155, 90, 88, 248, 191, 128, 63, 76, 109, 62, 193, 207, 52, 139, 219, 38, 14, 255, 147, 189, 143, 74, 37, 36, 11, 45, 32, 255, 119, 2, 85, 255, 255, 0, 179, 184, 188, 153, 251, 81, 193, 255, 145, 83, 172, 35, 249, 182, 250, 192, 171, 3, 3, 181, 146, 195, 144, 101, 202, 250, 214, 249, 242, 230, 169, 235, 22, 1, 111, 143, 137, 68, 152, 189, 199, 185, 213, 4, 103, 21, 153, 89, 228, 39, 59, 9, 210, 67, 245, 84, 3, 104, 22, 100, 115, 164, 167, 169, 129, 71, 68, 105, 160, 88, 152, 232, 104, 23, 212, 96, 166, 237, 38, 53, 41, 32, 104, 30, 98, 154, 234, 134, 137, 106, 99, 0, 162, 231, 174, 55, 223, 245, 230, 98, 206, 197, 57, 200, 197, 140, 26, 121, 21, 87, 66, 134, 23, 217, 68, 225, 243, 99, 229, 163, 253, 177, 42, 135, 201, 83, 40, 31, 85, 110, 204, 31, 138, 211, 82, 125, 147, 93, 248, 252, 164, 31, 196, 156, 57, 234, 252, 16, 116, 90, 171, 115, 161, 203, 246, 49, 42, 7, 157, 106, 12, 172, 148, 224, 118, 89, 170, 244, 61, 150, 80, 72, 14, 42, 219, 49, 202, 4, 30, 192, 126, 238, 237, 29, 0, 251, 82, 253, 91, 64, 88, 104, 74, 20, 173, 142, 170, 246, 171, 109, 147, 240, 253, 15, 130, 242, 56, 40, 188, 246, 237, 215, 70, 187, 18, 141, 9, 21, 27, 2, 58, 166, 211, 243, 16, 126, 205, 232, 61, 163, 89, 175, 146, 206, 211, 72, 54, 201, 30, 77, 248, 135, 96, 36, 243, 21, 19, 201, 187, 246, 208, 152, 113, 61, 48, 96, 141, 115, 1, 52, 212, 6, 93, 54, 20, 74, 14, 237, 251, 55, 194, 96, 224, 41, 76, 239, 230, 53, 14, 115, 157, 96, 195, 64, 197, 97, 174, 161, 26, 233, 22, 93, 136, 218, 204, 160, 138, 202, 74, 19, 133, 41, 113, 194, 70, 225, 123, 27, 5, 151, 38, 12, 67, 60, 39, 56, 158, 218, 4, 181, 52, 209, 163, 69, 83, 20, 80, 27, 217, 57, 51, 126, 120, 37, 183, 95, 121, 177, 135, 100, 255, 118, 159, 254, 229, 53, 48, 254, 235, 8, 201, 219, 52, 101, 198, 236, 76, 151, 168, 225, 244, 46, 166, 232, 118, 166, 46, 74, 115, 227, 166, 250, 50, 222, 46, 31, 54, 32, 201, 64, 208, 207, 227, 16, 116, 243, 60, 82, 190, 67, 218, 3, 244, 40, 227, 99, 220, 126, 229, 99, 30, 146, 189, 113, 65, 119, 237, 131, 182, 140, 106, 20, 25, 31, 170, 255, 30, 96, 65, 80, 34, 217, 123, 204, 149, 180, 31, 138, 134, 149, 244, 192, 248, 85, 200, 229, 70, 14, 138, 144, 207, 210, 11, 2, 95, 73, 122, 161, 252, 95, 198, 39, 249, 209, 8, 8, 156, 183, 233, 187, 41, 1, 145, 50, 205, 111, 93, 79, 167, 144, 108, 58, 61, 36, 251, 231, 101, 174, 77, 4, 58, 243, 70, 178, 169, 192, 161, 206, 21, 107, 42, 250, 67, 105, 59, 223, 205, 219, 104, 66, 164, 222, 99, 194, 206, 237, 9, 51, 2, 103, 106, 224, 228, 41, 251, 255, 89, 122, 1, 231, 185, 236, 90, 172, 165, 84, 62, 86, 38, 134, 74, 169, 246, 128, 134, 175, 223, 84, 128, 14, 134, 66, 223, 155, 31, 3, 44, 31, 124, 83, 224, 43, 25, 158, 82, 126, 183, 204, 117, 73, 112, 3, 79, 122, 239, 109, 52, 209, 252, 131, 250, 8, 77, 186, 84, 197, 134, 176, 106, 54, 251, 96, 174, 53, 108, 253, 49, 61, 167, 245, 37, 30, 124, 3, 72, 252, 156, 166, 247, 115, 230, 105, 95, 217, 116, 87, 149, 243, 248, 19, 10, 201, 79, 111, 82, 112, 131, 29, 180, 7, 185, 208, 145, 231, 58, 6, 132, 251, 93, 0, 138, 101, 142, 139, 6, 105, 248, 206, 180, 215, 77, 22, 30, 79, 241, 63, 72, 243, 230, 117, 52, 101, 202, 140, 60, 241, 114, 149, 236, 93, 68, 67, 115, 217, 159, 53, 205, 34, 17, 57, 157, 146, 114, 7, 61, 152, 127, 131, 250, 91, 104, 130, 81, 93, 81, 183, 157, 132, 231, 200, 95, 29, 250, 83, 254, 234, 83, 168, 198, 97, 205, 42, 65, 35, 115, 141, 224, 148, 207, 6, 111, 26, 233, 20, 119, 57, 63, 222, 45, 8, 169, 64, 15, 231, 63, 58, 6, 96, 191, 44, 58, 41, 103, 61, 214, 168, 164, 226, 18, 211, 131, 77, 5, 190, 146, 11, 83, 202, 141, 253, 2, 19, 231, 5, 15, 106, 172, 203, 88, 7, 90, 80, 66, 229, 63, 196, 49, 90, 116, 65, 60, 248, 191, 198, 62, 16, 241, 130, 246, 249, 88, 143, 187, 55, 169, 112, 236, 173, 53, 193, 41, 36, 187, 191, 149, 72, 246, 107, 229, 188, 66, 166, 133, 108, 6, 141, 218, 87, 244, 81, 174, 120, 93, 138, 143, 144, 246, 72, 11, 185, 248, 150, 247, 160, 196, 215, 180, 112, 215, 95, 112, 12, 246, 237, 80, 122, 106, 57, 127, 15, 232, 45, 65, 224, 231, 208, 60, 149, 179, 151, 175, 164, 105, 74, 185, 135, 159, 71, 231, 84, 222, 113, 101, 1, 83, 129, 237, 154, 120, 194, 41, 136, 209, 205, 170, 49, 158, 146, 162, 114, 166, 77, 26, 116, 12, 75, 56, 197, 245, 95, 83, 148, 49, 227, 23, 255, 133, 27, 8, 176, 169, 160, 80, 188, 83, 217, 1, 239, 33, 185, 22, 46, 236, 6, 46, 158, 82, 209, 231, 18, 55, 189, 32, 109, 29, 235, 188, 34, 217, 168, 179, 78, 181, 90, 17, 133, 72, 39, 44, 233, 254, 20, 183, 24, 89, 172, 112, 131, 207, 94, 138, 55, 169, 166, 199, 244, 203, 17, 17, 74, 29, 239, 86, 253, 223, 21, 211, 116, 37, 140, 87, 230, 206, 236, 22, 23, 117, 161, 91, 253, 117, 37, 197, 200, 246, 178, 232, 154, 85, 94, 60, 11, 103, 91, 150, 11, 230, 179, 35, 31, 67, 58, 18, 230, 104, 40, 3, 82, 33, 70, 24, 230, 33, 2, 145, 136, 66, 52, 226, 145, 146, 37, 191, 190, 12, 173, 174, 164, 179, 117, 113, 254, 164, 218, 15, 50, 222, 72, 255, 225, 205, 116, 189, 110, 9, 230, 238, 67, 158, 184, 83, 112, 119, 193, 105, 54, 113, 194, 44, 86, 117, 134, 14, 154, 83, 96, 156, 247, 54, 192, 120, 216, 245, 239, 84, 71, 188, 11, 71, 39, 164, 102, 147, 156, 169, 166, 240, 17, 123, 97, 101, 137, 49, 203, 239, 49, 33, 46, 138, 215, 207, 182, 100, 66, 184, 169, 118, 171, 98, 239, 8, 58, 253, 54, 26, 71, 222, 106, 200, 5, 82, 86, 107, 181, 75, 140, 167, 136, 24, 136, 163, 117, 200, 50, 68, 15, 222, 141, 185, 64, 76, 117, 7, 89, 164, 198, 154, 235, 25, 51, 221, 31, 76, 221, 80, 128, 76, 20, 173, 45, 42, 96, 173, 212, 212, 123, 4, 149, 133, 194, 117, 69, 221, 138, 23, 31, 202, 233, 237, 134, 70, 159, 80, 125, 106, 211, 91, 223, 223, 208, 247, 32, 195, 8, 169, 84, 131, 231, 8, 202, 74, 235, 14, 236, 40, 157, 199, 55, 154, 97, 195, 200, 232, 94, 191, 7, 25, 157, 18, 90, 116, 241, 20, 217, 93, 100, 92, 65, 224, 29, 142, 174, 105, 129, 84, 126, 66, 184, 158, 254, 244, 233, 251, 97, 93, 29, 49, 189, 55, 246, 203, 179, 238, 250, 187, 17, 52, 212, 83, 122, 234, 98, 187, 236, 74, 106, 254, 25, 77, 223, 101, 108, 204, 178, 60, 80, 248, 131, 134, 165, 220, 230, 226, 182, 138, 123, 94, 223, 36, 250, 91, 35, 166, 62, 252, 222, 84, 154, 199, 254, 240, 27, 197, 239, 61, 116, 145, 169, 4, 59, 140, 100, 228, 81, 71, 61, 40, 154, 1, 118, 7, 251, 145, 37, 46, 254, 44, 251, 94, 179, 220, 121, 127, 156, 241, 255, 107, 71, 149, 107, 155, 255, 139, 208, 107, 51, 62, 61, 84, 215, 91, 23, 187, 75, 73, 83, 216, 111, 189, 39, 73, 135, 144, 241, 175, 28, 169, 232, 144, 61, 83, 210, 250, 37, 86, 169, 195, 189, 240, 13, 108, 219, 130, 220, 254, 253, 4, 171, 181, 106, 216, 1, 18, 76, 120, 215, 185, 132, 51, 199, 214, 116, 44, 40, 44, 55, 251, 59, 104, 156, 73, 123, 235, 199, 136, 71, 194, 9, 33, 35, 10, 43, 244, 140, 241, 2, 31, 63, 200, 195, 39, 165, 253, 207, 128, 184, 117, 12, 108, 54, 20, 92, 166, 204, 214, 133, 223, 37, 231, 196, 255, 140, 255, 114, 23, 114, 170, 209, 16, 164, 161, 233, 133, 173, 199, 214, 77, 212, 244, 30, 237, 186, 153, 116, 101, 98, 215, 227, 149, 130, 160, 77, 189, 16, 152, 235, 155, 239, 29, 122, 18, 221, 230, 46, 237, 58, 184, 184, 150, 182, 228, 43, 14, 102, 122, 0, 122, 145, 158, 118, 66, 146, 9, 69, 244, 69, 123, 58, 139, 93, 249, 188, 52, 90, 191, 128, 131, 121, 193, 65, 214, 73, 165, 19, 187, 75, 187, 232, 165, 152, 32, 178, 163, 52, 220, 249, 191, 86, 190, 92, 207, 25, 22, 173, 203, 13, 180, 100, 56, 37, 75, 186, 88, 217, 210, 34, 116, 62, 184, 180, 118, 254, 91, 111, 255, 17, 230, 226, 79, 236, 230, 56, 100, 27, 228, 47, 78, 239, 205, 197, 218, 159, 150, 82, 159, 92, 97, 71, 58, 38, 121, 15, 171, 74, 84, 48, 214, 183, 240, 87, 107, 170, 186, 218, 55, 107, 210, 55, 171, 203, 95, 147, 240, 96, 141, 58, 253, 98, 63, 169, 43, 73, 42, 149, 215, 239, 213, 241, 201, 110, 134, 249, 213, 201, 94, 175, 54, 242, 215, 38, 177, 185, 86, 118, 73, 181, 198, 175, 145, 195, 95, 151, 120, 92, 55, 58, 56, 252, 138, 41, 145, 154, 102, 53, 208, 71, 251, 154, 242, 247, 106, 98, 213, 208, 144, 209, 171, 20, 59, 116, 109, 86, 169, 151, 43, 96, 56, 240, 93, 244, 233, 254, 86, 208, 191, 158, 199, 175, 103, 32, 164, 167, 212, 66, 234, 68, 32, 145, 4, 210, 83, 16, 82, 7, 132, 134, 39, 176, 189, 70, 98, 95, 239, 173, 137, 74, 189, 154, 43, 25, 115, 94, 236, 83, 216, 36, 125, 252, 242, 61, 11, 108, 170, 135, 4, 224, 226, 174, 42, 26, 26, 57, 202, 101, 11, 211, 189, 134, 37, 33, 151, 216, 110, 105, 12, 217, 40, 108, 176, 244, 208, 133, 237, 213, 2, 244, 114, 148, 203, 90, 75, 7, 125, 64, 160, 128, 64, 1, 182, 5, 78, 75, 243, 136, 217, 120, 225, 31, 93, 172, 24, 120, 122, 80, 58, 170, 124, 138, 192, 207, 160, 162, 200, 248, 196, 124, 98, 181, 66, 96, 134, 195, 243, 30, 66, 211, 45, 169, 136, 162, 16, 97, 214, 92, 35, 0, 35, 154, 240, 144, 161, 64, 109, 221, 98, 74, 234, 2, 53, 70, 181, 108, 10, 160, 107, 218, 111, 102, 160, 50, 131, 120, 153, 131, 222, 101, 203, 160, 181, 90, 184, 109, 25, 44, 172, 165, 29, 108, 25, 116, 85, 237, 122, 202, 14, 113, 209, 219, 57, 209, 211, 54, 5, 78, 91, 132, 186, 106, 10, 23, 209, 7, 218, 193, 81, 79, 64, 202, 149, 131, 25, 249, 221, 208, 167, 146, 112, 86, 198, 202, 15, 185, 180, 144, 205, 25, 239, 163, 105, 221, 131, 226, 10, 37, 225, 87, 81, 35, 56, 66, 147, 158, 150, 154, 163, 219, 153, 59, 26, 246, 90, 101, 27, 133, 159, 14, 141, 196, 55, 206, 95, 55, 233, 121, 185, 249, 57, 243, 78, 169, 156, 183, 228, 135, 71, 60, 198, 180, 29, 37, 64, 249, 0, 4, 47, 101, 76, 170, 205, 197, 183, 39, 112, 166, 104, 23, 243, 189, 190, 217, 2, 177, 223, 222, 65, 7, 28, 196, 150, 254, 111, 135, 1, 118, 246, 121, 195, 251, 52, 230, 227, 144, 211, 231, 253, 63, 253, 255, 235, 131, 151, 47, 221, 250, 121, 123, 234, 127, 58, 253, 137, 15, 248, 77, 34, 148, 77, 252, 237, 187, 173, 254, 66, 224, 230, 31, 2, 241, 23, 43, 231, 64, 20, 37, 112, 0, 184, 235, 215, 190, 99, 192, 137, 0, 184, 29, 62, 240, 56, 211, 251, 226, 3, 238, 214, 237, 14, 254, 221, 156, 4, 174, 249, 4, 39, 157, 3, 56, 223, 156, 46, 247, 134, 245, 111, 169, 200, 116, 48, 207, 41, 69, 227, 103, 13, 217, 3, 124, 62, 41, 31, 38, 131, 50, 210, 222, 202, 3, 204, 147, 84, 95, 186, 112, 2, 49, 217, 31, 12, 182, 70, 98, 124, 111, 201, 149, 92, 228, 122, 174, 207, 200, 88, 142, 36, 249, 77, 15, 104, 76, 110, 26, 20, 230, 62, 201, 65, 246, 64, 54, 46, 164, 209, 77, 147, 7, 131, 251, 244, 117, 74, 68, 243, 61, 8, 103, 6, 182, 105, 198, 184, 231, 70, 111, 43, 250, 73, 70, 183, 244, 48, 84, 98, 127, 112, 219, 145, 238, 238, 5, 236, 128, 102, 91, 1, 223, 168, 27, 180, 141, 30, 74, 53, 38, 182, 134, 42, 114, 92, 39, 107, 216, 3, 229, 193, 66, 181, 65, 151, 14, 38, 198, 44, 76, 82, 114, 14, 224, 103, 32, 189, 161, 57, 220, 122, 76, 13, 141, 201, 36, 204, 41, 54, 243, 148, 21, 91, 36, 148, 30, 179, 46, 246, 13, 211, 183, 71, 119, 5, 182, 251, 174, 184, 10, 217, 231, 230, 4, 249, 3, 215, 164, 245, 13, 176, 90, 36, 18, 106, 37, 233, 88, 115, 169, 134, 226, 113, 235, 219, 212, 208, 76, 23, 145, 149, 152, 57, 97, 78, 177, 153, 14, 115, 202, 74, 210, 203, 178, 38, 238, 199, 207, 72, 189, 203, 123, 146, 82, 26, 26, 131, 200, 42, 192, 111, 113, 38, 51, 149, 46, 1, 34, 229, 107, 56, 118, 116, 54, 1, 240, 55, 131, 234, 124, 175, 30, 206, 241, 60, 206, 29, 169, 161, 222, 222, 248, 40, 235, 241, 202, 229, 5, 77, 247, 143, 95, 91, 4, 200, 167, 216, 91, 210, 65, 132, 186, 236, 96, 78, 32, 207, 175, 82, 212, 23, 12, 178, 204, 90, 39, 25, 61, 197, 214, 229, 243, 252, 232, 48, 117, 114, 224, 86, 251, 121, 51, 57, 5, 233, 176, 188, 174, 134, 34, 253, 76, 201, 167, 238, 59, 198, 183, 178, 156, 124, 72, 241, 253, 182, 107, 50, 143, 94, 14, 47, 62, 227, 32, 254, 56, 207, 185, 77, 194, 198, 216, 116, 247, 10, 233, 105, 22, 3, 200, 56, 190, 39, 98, 45, 164, 134, 243, 2, 164, 70, 192, 48, 241, 216, 178, 236, 82, 40, 237, 40, 155, 148, 77, 135, 146, 178, 201, 167, 185, 88, 170, 116, 235, 138, 19, 82, 171, 59, 198, 118, 152, 147, 52, 25, 46, 115, 146, 135, 75, 47, 235, 21, 204, 100, 25, 210, 129, 72, 43, 62, 150, 148, 76, 128, 137, 138, 150, 148, 229, 183, 199, 30, 149, 127, 119, 156, 166, 107, 200, 171, 167, 172, 166, 84, 4, 140, 167, 70, 107, 198, 52, 179, 186, 2, 205, 41, 54, 211, 97, 121, 191, 106, 68, 195, 1, 24, 241, 17, 210, 44, 147, 125, 46, 196, 158, 9, 190, 146, 134, 212, 149, 186, 158, 149, 1, 97, 17, 45, 171, 56, 52, 39, 100, 102, 223, 69, 53, 120, 118, 194, 58, 150, 95, 175, 35, 110, 210, 141, 241, 24, 201, 19, 201, 65, 95, 238, 237, 74, 78, 247, 113, 159, 210, 134, 92, 14, 18, 103, 46, 182, 201, 91, 248, 37, 64, 253, 80, 211, 126, 114, 43, 87, 74, 114, 103, 158, 223, 172, 110, 0, 246, 28, 243, 67, 135, 136, 228, 113, 157, 200, 99, 176, 103, 220, 39, 115, 220, 11, 6, 230, 89, 240, 174, 160, 149, 234, 32, 10, 155, 242, 19, 102, 239, 88, 210, 192, 215, 195, 156, 2, 61, 69, 113, 50, 110, 159, 109, 17, 23, 230, 169, 57, 82, 6, 84, 242, 227, 166, 207, 217, 38, 169, 10, 221, 238, 151, 65, 172, 13, 53, 87, 119, 94, 107, 245, 162, 101, 76, 152, 195, 186, 244, 120, 200, 167, 210, 205, 132, 239, 182, 222, 18, 89, 110, 150, 143, 125, 79, 192, 167, 20, 2, 249, 130, 88, 237, 249, 4, 193, 126, 150, 172, 179, 169, 96, 81, 206, 221, 249, 163, 42, 54, 232, 137, 144, 67, 232, 84, 75, 63, 21, 207, 199, 145, 122, 217, 34, 53, 188, 227, 253, 19, 113, 65, 206, 253, 74, 205, 69, 227, 231, 56, 127, 79, 152, 67, 12, 87, 46, 148, 112, 126, 136, 195, 221, 37, 131, 187, 195, 115, 248, 152, 104, 248, 74, 233, 226, 222, 224, 126, 18, 19, 223, 35, 214, 143, 173, 192, 121, 202, 245, 35, 169, 233, 193, 25, 2, 30, 109, 10, 181, 119, 226, 208, 18, 230, 125, 47, 148, 77, 59, 60, 221, 251, 208, 89, 23, 29, 182, 52, 29, 253, 164, 191, 126, 172, 119, 227, 158, 146, 197, 78, 148, 209, 203, 7, 253, 173, 242, 66, 133, 107, 206, 152, 61, 228, 65, 28, 170, 16, 170, 208, 193, 113, 133, 229, 15, 178, 6, 207, 37, 109, 187, 206, 11, 167, 25, 115, 24, 140, 10, 255, 147, 131, 25, 173, 206, 220, 45, 203, 33, 62, 115, 126, 93, 47, 38, 163, 119, 140, 57, 86, 98, 35, 218, 182, 245, 24, 13, 205, 57, 107, 254, 250, 83, 200, 141, 231, 173, 189, 193, 111, 55, 29, 27, 191, 39, 98, 157, 246, 93, 17, 241, 111, 15, 100, 41, 80, 178, 51, 94, 207, 209, 34, 231, 158, 204, 42, 200, 39, 163, 87, 61, 197, 170, 75, 23, 148, 7, 49, 112, 55, 89, 78, 251, 168, 158, 118, 139, 125, 176, 115, 71, 224, 117, 71, 240, 168, 2, 5, 168, 165, 37, 124, 23, 247, 216, 168, 90, 16, 214, 38, 81, 55, 248, 185, 152, 74, 7, 163, 105, 7, 196, 92, 19, 152, 17, 98, 241, 179, 27, 90, 74, 82, 133, 93, 54, 141, 229, 74, 93, 171, 58, 102, 169, 62, 137, 1, 62, 119, 84, 67, 243, 70, 89, 223, 166, 71, 154, 231, 62, 251, 217, 180, 65, 32, 82, 83, 118, 232, 253, 104, 5, 247, 166, 84, 67, 117, 195, 173, 111, 211, 35, 205, 112, 39, 242, 210, 180, 0, 26, 235, 97, 239, 234, 125, 69, 69, 249, 200, 229, 96, 175, 100, 202, 36, 78, 7, 108, 205, 139, 90, 209, 224, 126, 166, 229, 132, 95, 210, 254, 188, 175, 171, 138, 132, 168, 201, 125, 36, 53, 131, 26, 76, 115, 46, 44, 1, 68, 156, 249, 186, 230, 89, 249, 204, 192, 35, 251, 171, 150, 194, 57, 60, 92, 228, 178, 165, 146, 122, 141, 140, 182, 134, 179, 120, 54, 83, 195, 52, 197, 12, 156, 94, 188, 110, 197, 137, 172, 122, 154, 197, 52, 74, 61, 238, 88, 67, 91, 38, 192, 137, 168, 59, 31, 109, 54, 220, 158, 21, 89, 138, 231, 184, 161, 174, 49, 128, 150, 189, 106, 153, 41, 99, 208, 153, 36, 17, 241, 128, 97, 145, 215, 180, 245, 122, 204, 212, 162, 141, 6, 207, 118, 106, 152, 162, 10, 204, 37, 99, 174, 10, 112, 158, 148, 215, 152, 83, 249, 133, 227, 217, 144, 102, 224, 188, 129, 14, 206, 146, 200, 71, 214, 205, 196, 249, 204, 192, 35, 103, 171, 150, 6, 158, 171, 17, 190, 72, 13, 135, 0, 169, 225, 54, 2, 164, 6, 80, 170, 182, 26, 121, 107, 38, 222, 112, 27, 214, 44, 21, 228, 248, 88, 139, 160, 72, 88, 60, 170, 9, 186, 197, 125, 159, 49, 107, 169, 184, 255, 249, 58, 173, 173, 20, 213, 64, 29, 152, 44, 124, 48, 12, 183, 97, 205, 82, 1, 99, 220, 198, 34, 40, 18, 22, 143, 226, 147, 0, 158, 1, 113, 174, 197, 217, 52, 220, 158, 149, 178, 20, 212, 251, 15, 153, 78, 141, 21, 73, 73, 53, 61, 123, 246, 87, 38, 58, 156, 51, 179, 230, 250, 8, 250, 188, 14, 101, 72, 165, 207, 151, 84, 21, 216, 103, 137, 197, 156, 120, 151, 125, 181, 131, 253, 49, 76, 28, 145, 233, 123, 115, 221, 73, 142, 230, 64, 230, 86, 141, 180, 110, 155, 187, 56, 168, 254, 187, 177, 166, 134, 122, 77, 222, 161, 65, 49, 197, 230, 159, 173, 247, 217, 201, 161, 192, 57, 13, 117, 19, 234, 134, 233, 74, 128, 111, 246, 158, 24, 183, 39, 222, 238, 201, 206, 49, 46, 30, 110, 186, 166, 217, 78, 240, 142, 110, 52, 252, 131, 81, 18, 71, 46, 24, 147, 2, 92, 238, 14, 71, 99, 201, 253, 189, 57, 154, 227, 171, 151, 39, 45, 71, 38, 231, 38, 77, 72, 113, 84, 244, 87, 165, 131, 135, 107, 104, 30, 236, 253, 97, 9, 40, 166, 204, 113, 117, 150, 50, 164, 255, 202, 130, 119, 74, 4, 239, 143, 31, 165, 184, 127, 253, 91, 54, 13, 158, 214, 194, 72, 105, 67, 85, 137, 227, 236, 234, 176, 24, 83, 234, 119, 148, 192, 129, 54, 140, 249, 133, 231, 79, 216, 69, 108, 242, 102, 57, 103, 52, 231, 19, 41, 31, 64, 235, 214, 155, 82, 140, 97, 209, 97, 46, 3, 30, 142, 161, 221, 222, 223, 31, 14, 230, 136, 172, 136, 43, 95, 87, 69, 205, 34, 67, 18, 225, 132, 35, 209, 221, 221, 233, 109, 124, 245, 242, 116, 42, 235, 184, 216, 94, 113, 202, 242, 4, 23, 6, 88, 152, 90, 118, 120, 193, 248, 118, 90, 216, 179, 25, 79, 65, 185, 193, 171, 43, 30, 183, 146, 231, 159, 33, 255, 102, 168, 99, 28, 32, 237, 51, 110, 132, 195, 181, 129, 163, 57, 54, 135, 99, 175, 218, 77, 19, 187, 70, 127, 236, 196, 71, 82, 201, 5, 62, 224, 245, 38, 181, 189, 189, 186, 190, 233, 38, 191, 101, 57, 244, 92, 79, 219, 171, 27, 142, 7, 51, 252, 227, 23, 200, 197, 197, 45, 126, 189, 147, 63, 23, 82, 202, 183, 183, 120, 99, 83, 75, 155, 149, 219, 159, 250, 0, 111, 248, 253, 126, 151, 213, 208, 94, 52, 238, 228, 243, 124, 94, 223, 92, 91, 127, 177, 231, 51, 244, 215, 190, 159, 247, 236, 245, 113, 91, 221, 94, 209, 155, 11, 220, 52, 168, 190, 24, 111, 236, 40, 222, 26, 233, 75, 249, 236, 165, 205, 176, 221, 2, 6, 24, 34, 156, 158, 140, 127, 132, 32, 97, 103, 61, 245, 227, 73, 185, 140, 49, 71, 78, 20, 21, 34, 100, 88, 18, 60, 56, 213, 31, 151, 161, 136, 88, 224, 79, 157, 99, 201, 5, 10, 163, 150, 104, 201, 90, 207, 42, 32, 225, 131, 98, 158, 226, 38, 199, 24, 83, 194, 64, 37, 219, 127, 223, 146, 241, 67, 66, 28, 92, 222, 131, 75, 116, 7, 59, 3, 191, 61, 129, 144, 4, 165, 15, 243, 203, 249, 223, 124, 248, 97, 69, 81, 60, 20, 25, 33, 8, 35, 252, 136, 88, 8, 166, 101, 46, 54, 225, 0, 37, 27, 253, 74, 128, 64, 245, 42, 60, 69, 64, 231, 64, 152, 200, 13, 22, 31, 20, 146, 210, 186, 5, 233, 61, 28, 26, 225, 223, 33, 82, 106, 170, 29, 91, 3, 50, 228, 21, 8, 160, 193, 24, 49, 39, 86, 52, 143, 123, 176, 155, 122, 191, 20, 239, 255, 96, 220, 180, 238, 146, 164, 46, 61, 93, 12, 38, 127, 199, 164, 201, 29, 33, 119, 63, 133, 52, 42, 181, 193, 189, 224, 57, 113, 38, 185, 75, 123, 0, 214, 178, 91, 241, 253, 5, 198, 166, 137, 95, 208, 52, 249, 102, 51, 30, 206, 77, 154, 119, 49, 199, 124, 180, 195, 103, 134, 87, 173, 42, 65, 176, 38, 229, 193, 24, 3, 45, 142, 176, 193, 222, 17, 252, 151, 27, 81, 99, 178, 137, 181, 168, 212, 147, 202, 234, 17, 99, 173, 195, 209, 220, 180, 11, 28, 227, 120, 70, 145, 194, 59, 143, 217, 218, 208, 113, 1, 230, 29, 0, 126, 11, 237, 79, 9, 156, 103, 51, 31, 87, 134, 81, 100, 6, 89, 111, 86, 121, 14, 32, 19, 238, 182, 121, 93, 85, 231, 47, 168, 170, 37, 73, 84, 235, 73, 186, 52, 175, 136, 181, 153, 46, 228, 60, 29, 149, 3, 10, 56, 161, 160, 176, 199, 228, 39, 200, 105, 153, 21, 11, 4, 152, 213, 229, 122, 230, 119, 175, 210, 18, 243, 124, 125, 93, 0, 188, 209, 33, 77, 119, 144, 167, 88, 11, 60, 73, 185, 129, 154, 165, 87, 82, 194, 201, 2, 31, 120, 177, 147, 106, 85, 83, 120, 75, 83, 138, 86, 223, 190, 195, 167, 24, 126, 134, 127, 90, 116, 131, 148, 109, 97, 31, 171, 250, 103, 84, 26, 103, 228, 78, 145, 59, 101, 79, 166, 232, 61, 43, 205, 150, 130, 239, 252, 23, 30, 11, 121, 107, 107, 86, 253, 227, 14, 95, 189, 191, 255, 97, 119, 6, 147, 17, 64, 214, 255, 140, 27, 225, 123, 252, 38, 190, 163, 255, 79, 34, 184, 188, 223, 147, 131, 248, 253, 161, 41, 16, 91, 96, 249, 13, 37, 8, 191, 81, 228, 66, 190, 24, 223, 12, 138, 167, 252, 121, 160, 254, 161, 11, 181, 223, 106, 194, 156, 120, 10, 234, 121, 95, 7, 147, 121, 232, 33, 157, 161, 154, 7, 186, 191, 160, 49, 106, 128, 55, 90, 231, 111, 105, 186, 25, 127, 198, 198, 129, 227, 179, 110, 206, 109, 22, 203, 30, 254, 188, 254, 179, 52, 124, 82, 173, 95, 64, 181, 132, 253, 11, 254, 215, 159, 172, 248, 79, 99, 238, 154, 207, 62, 163, 69, 250, 102, 186, 195, 221, 53, 28, 142, 8, 84, 143, 236, 242, 53, 199, 66, 236, 17, 121, 184, 33, 103, 25, 148, 24, 29, 107, 200, 77, 39, 173, 146, 27, 165, 4, 120, 72, 70, 169, 159, 226, 15, 206, 48, 220, 88, 46, 107, 58, 22, 186, 235, 20, 13, 169, 241, 203, 42, 107, 181, 110, 223, 162, 181, 2, 216, 63, 3, 216, 238, 158, 81, 246, 74, 220, 92, 18, 149, 181, 21, 187, 214, 193, 51, 71, 165, 87, 33, 217, 81, 232, 74, 235, 37, 53, 96, 232, 134, 201, 27, 134, 92, 226, 142, 168, 77, 24, 41, 49, 5, 31, 35, 66, 178, 139, 120, 187, 113, 55, 71, 231, 68, 235, 9, 98, 228, 29, 19, 27, 84, 20, 146, 100, 0, 100, 69, 138, 137, 7, 82, 253, 19, 121, 239, 112, 112, 242, 20, 97, 240, 168, 101, 174, 39, 25, 53, 137, 203, 146, 112, 87, 210, 83, 15, 221, 51, 0, 146, 82, 143, 122, 65, 101, 83, 59, 201, 92, 32, 95, 6, 78, 70, 89, 12, 17, 4, 114, 9, 116, 147, 101, 18, 61, 161, 12, 243, 139, 247, 10, 109, 105, 159, 37, 145, 66, 74, 228, 40, 23, 99, 207, 223, 254, 28, 35, 33, 125, 210, 178, 203, 192, 177, 249, 194, 121, 20, 154, 231, 164, 90, 75, 32, 16, 94, 13, 235, 80, 151, 81, 17, 30, 47, 36, 130, 84, 175, 15, 56, 201, 85, 186, 74, 42, 5, 150, 212, 179, 117, 140, 136, 118, 69, 16, 80, 143, 2, 137, 150, 86, 139, 3, 141, 108, 81, 213, 178, 128, 112, 65, 196, 123, 43, 180, 249, 196, 10, 244, 73, 9, 170, 127, 227, 13, 248, 61, 86, 236, 201, 181, 36, 233, 26, 48, 170, 134, 0, 179, 69, 25, 186, 64, 12, 173, 8, 222, 142, 97, 44, 173, 75, 62, 128, 195, 190, 21, 254, 25, 65, 169, 169, 29, 161, 195, 74, 220, 81, 144, 36, 235, 134, 181, 46, 232, 145, 88, 20, 234, 71, 234, 104, 72, 234, 104, 202, 70, 110, 165, 25, 37, 191, 129, 206, 129, 125, 228, 251, 161, 108, 143, 62, 37, 21, 37, 101, 15, 56, 248, 155, 245, 15, 137, 103, 170, 164, 204, 122, 170, 107, 7, 21, 120, 111, 187, 243, 52, 6, 43, 192, 62, 1, 200, 75, 97, 101, 118, 35, 215, 199, 78, 103, 221, 71, 68, 189, 195, 61, 9, 247, 150, 217, 8, 244, 221, 86, 46, 208, 251, 238, 25, 79, 209, 244, 68, 192, 32, 108, 15, 42, 16, 36, 79, 22, 112, 164, 200, 97, 21, 69, 47, 73, 139, 174, 215, 67, 209, 164, 8, 1, 103, 107, 4, 74, 245, 89, 182, 29, 157, 158, 142, 137, 1, 10, 35, 27, 213, 98, 4, 76, 52, 106, 27, 47, 55, 28, 122, 66, 96, 159, 139, 238, 107, 214, 15, 165, 148, 220, 155, 129, 141, 11, 205, 26, 204, 143, 181, 68, 140, 86, 100, 108, 79, 206, 196, 27, 7, 19, 176, 168, 158, 152, 105, 9, 31, 98, 10, 37, 59, 159, 129, 200, 77, 223, 39, 24, 36, 9, 10, 171, 72, 94, 9, 74, 209, 64, 80, 73, 212, 28, 98, 203, 89, 185, 52, 56, 112, 172, 156, 162, 178, 8, 231, 148, 30, 23, 16, 67, 138, 96, 14, 12, 1, 16, 65, 26, 237, 143, 64, 193, 35, 194, 93, 81, 28, 109, 216, 113, 163, 243, 109, 78, 16, 136, 208, 57, 67, 64, 249, 137, 47, 3, 148, 24, 169, 128, 177, 24, 0, 21, 226, 152, 0, 175, 179, 189, 143, 210, 192, 131, 126, 79, 204, 49, 58, 120, 67, 35, 236, 19, 253, 33, 96, 138, 242, 25, 184, 116, 199, 51, 200, 204, 179, 36, 201, 195, 212, 111, 178, 108, 233, 113, 127, 145, 176, 157, 92, 254, 4, 41, 101, 7, 62, 234, 51, 81, 179, 225, 12, 11, 127, 72, 196, 230, 222, 223, 169, 61, 47, 117, 209, 24, 44, 207, 88, 166, 68, 79, 203, 204, 112, 200, 144, 86, 168, 31, 1, 205, 251, 71, 184, 40, 24, 104, 72, 146, 163, 232, 88, 122, 137, 20, 6, 198, 192, 139, 165, 168, 6, 253, 128, 135, 54, 189, 24, 86, 171, 163, 192, 156, 235, 61, 86, 244, 180, 20, 6, 120, 134, 182, 242, 174, 19, 93, 166, 155, 29, 104, 213, 230, 77, 81, 16, 197, 9, 23, 67, 83, 156, 201, 102, 104, 18, 141, 77, 3, 220, 175, 103, 97, 119, 169, 174, 216, 193, 76, 6, 39, 231, 146, 97, 89, 215, 105, 226, 8, 72, 104, 23, 208, 31, 232, 113, 92, 16, 92, 200, 89, 90, 43, 120, 223, 186, 97, 121, 168, 95, 97, 77, 142, 242, 229, 117, 178, 253, 43, 118, 191, 149, 211, 157, 187, 105, 129, 205, 237, 180, 229, 255, 238, 183, 202, 178, 255, 248, 9, 89, 182, 237, 135, 79, 148, 250, 167, 71, 148, 218, 246, 251, 191, 126, 251, 15, 123, 125, 157, 124, 238, 90, 133, 195, 231, 132, 94, 61, 179, 42, 9, 35, 252, 108, 64, 90, 157, 3, 112, 8, 180, 98, 22, 33, 238, 130, 202, 103, 199, 30, 57, 93, 0, 198, 53, 74, 240, 95, 10, 23, 126, 94, 135, 210, 28, 24, 16, 39, 93, 78, 233, 33, 77, 254, 148, 223, 228, 183, 249, 189, 254, 82, 255, 159, 254, 69, 135, 186, 134, 43, 60, 60, 28, 222, 239, 63, 254, 180, 60, 31, 91, 151, 231, 133, 72, 245, 174, 13, 167, 133, 158, 244, 65, 127, 33, 190, 18, 223, 245, 103, 253, 141, 248, 43, 70, 21, 245, 76, 129, 124, 4, 250, 128, 129, 253, 29, 47, 91, 60, 204, 40, 65, 47, 53, 155, 69, 98, 209, 40, 93, 85, 65, 153, 163, 75, 224, 154, 87, 156, 253, 117, 68, 250, 245, 167, 17, 32, 130, 6, 10, 210, 187, 49, 27, 122, 7, 128, 48, 140, 141, 241, 136, 219, 77, 93, 230, 83, 161, 78, 188, 237, 146, 25, 246, 40, 26, 237, 52, 55, 120, 124, 135, 254, 68, 196, 194, 52, 91, 204, 122, 136, 176, 120, 4, 122, 55, 238, 68, 161, 128, 36, 7, 144, 82, 233, 4, 41, 108, 49, 119, 143, 228, 26, 149, 218, 33, 134, 78, 109, 90, 134, 183, 151, 158, 77, 106, 230, 21, 22, 80, 235, 242, 72, 165, 51, 165, 71, 232, 81, 77, 182, 98, 6, 37, 246, 38, 27, 143, 1, 187, 174, 205, 213, 65, 173, 230, 174, 143, 106, 10, 210, 218, 20, 157, 86, 75, 16, 37, 230, 2, 129, 193, 123, 83, 133, 126, 46, 46, 14, 83, 168, 95, 127, 101, 208, 225, 225, 238, 225, 62, 35, 189, 227, 188, 28, 142, 6, 248, 20, 232, 122, 149, 247, 88, 215, 237, 19, 181, 198, 236, 117, 103, 8, 216, 6, 39, 166, 228, 60, 148, 136, 19, 141, 161, 84, 31, 202, 74, 213, 134, 243, 9, 149, 242, 144, 16, 0, 183, 202, 207, 114, 246, 183, 228, 164, 44, 98, 76, 93, 100, 75, 22, 124, 194, 134, 80, 176, 178, 106, 89, 100, 56, 79, 51, 144, 247, 104, 34, 119, 24, 131, 173, 81, 126, 169, 198, 155, 192, 186, 31, 79, 76, 120, 200, 207, 165, 100, 1, 209, 89, 154, 105, 61, 14, 185, 96, 171, 187, 129, 77, 35, 148, 59, 204, 86, 209, 83, 28, 10, 222, 199, 99, 109, 94, 108, 74, 186, 89, 202, 226, 48, 38, 64, 241, 154, 60, 127, 127, 25, 37, 198, 22, 210, 122, 8, 110, 157, 211, 96, 8, 192, 214, 120, 243, 180, 246, 25, 180, 60, 61, 34, 163, 0, 232, 211, 47, 180, 226, 200, 24, 180, 14, 189, 90, 21, 122, 93, 65, 63, 91, 85, 209, 216, 164, 210, 213, 15, 73, 51, 224, 184, 48, 73, 210, 232, 247, 248, 142, 126, 73, 255, 68, 255, 149, 138, 40, 238, 219, 34, 47, 40, 10, 31, 116, 201, 108, 118, 110, 210, 238, 217, 5, 139, 179, 19, 128, 120, 128, 10, 244, 222, 210, 72, 87, 22, 10, 192, 71, 92, 78, 178, 239, 85, 247, 173, 251, 221, 221, 218, 221, 167, 119, 111, 220, 31, 93, 231, 40, 14, 23, 129, 150, 194, 125, 197, 185, 194, 93, 168, 56, 77, 166, 248, 247, 192, 104, 147, 8, 154, 248, 105, 162, 163, 143, 207, 31, 248, 3, 255, 102, 82, 15, 163, 2, 140, 238, 38, 160, 155, 15, 226, 207, 90, 53, 161, 74, 147, 232, 136, 38, 13, 80, 152, 45, 171, 110, 234, 80, 235, 166, 74, 146, 147, 45, 99, 161, 15, 116, 92, 176, 196, 29, 222, 1, 73, 79, 146, 142, 9, 31, 42, 247, 142, 226, 23, 149, 212, 172, 240, 254, 227, 32, 111, 133, 250, 167, 171, 50, 246, 147, 144, 55, 23, 114, 151, 21, 105, 167, 92, 34, 186, 139, 13, 159, 198, 162, 105, 155, 47, 200, 212, 129, 20, 116, 104, 45, 128, 252, 8, 210, 89, 89, 245, 83, 182, 129, 209, 116, 221, 96, 177, 59, 25, 225, 147, 40, 86, 213, 0, 224, 196, 114, 237, 46, 118, 249, 229, 222, 0, 81, 38, 97, 225, 193, 111, 85, 250, 144, 126, 147, 168, 252, 202, 35, 127, 144, 214, 109, 78, 233, 33, 237, 88, 164, 92, 198, 5, 52, 124, 218, 68, 110, 157, 253, 18, 192, 54, 79, 46, 17, 52, 59, 233, 243, 170, 213, 95, 164, 170, 101, 92, 185, 164, 17, 200, 51, 209, 142, 137, 49, 251, 85, 92, 96, 34, 194, 108, 129, 152, 152, 227, 144, 253, 192, 216, 49, 190, 242, 181, 122, 249, 58, 238, 250, 23, 96, 216, 93, 251, 41, 2, 73, 218, 181, 253, 156, 253, 249, 159, 97, 251, 105, 125, 119, 197, 199, 44, 107, 63, 200, 200, 121, 243, 57, 163, 109, 168, 139, 12, 56, 125, 99, 77, 229, 224, 48, 160, 109, 20, 174, 2, 46, 236, 99, 37, 53, 170, 203, 116, 17, 133, 90, 226, 196, 62, 251, 20, 96, 104, 102, 228, 180, 123, 174, 242, 131, 252, 62, 99, 206, 47, 199, 158, 94, 175, 73, 56, 120, 228, 11, 152, 79, 251, 87, 144, 167, 57, 246, 105, 58, 69, 92, 175, 230, 162, 152, 23, 4, 128, 59, 77, 184, 206, 244, 137, 248, 255, 26, 62, 250, 23, 238, 50, 172, 215, 144, 199, 242, 78, 152, 204, 184, 120, 174, 45, 75, 64, 184, 28, 63, 200, 37, 30, 23, 4, 200, 151, 217, 146, 153, 126, 115, 160, 132, 125, 251, 33, 31, 252, 25, 103, 79, 69, 58, 236, 12, 93, 155, 23, 227, 46, 8, 89, 167, 48, 242, 79, 63, 81, 0, 163, 84, 211, 100, 18, 99, 186, 172, 161, 191, 192, 213, 93, 71, 175, 86, 173, 99, 53, 165, 63, 0, 224, 221, 11, 18, 177, 227, 232, 116, 188, 4, 215, 187, 86, 139, 128, 20, 235, 78, 35, 45, 36, 243, 194, 185, 81, 66, 146, 73, 203, 18, 218, 165, 37, 245, 196, 239, 201, 88, 102, 191, 42, 211, 184, 241, 73, 146, 167, 64, 155, 40, 170, 135, 196, 123, 178, 4, 77, 221, 146, 181, 251, 83, 137, 160, 57, 248, 52, 143, 200, 223, 110, 208, 185, 169, 38, 251, 182, 117, 45, 186, 121, 170, 196, 83, 243, 66, 123, 51, 129, 97, 233, 167, 46, 112, 246, 130, 156, 73, 152, 192, 251, 16, 178, 174, 53, 69, 229, 119, 74, 172, 161, 175, 146, 143, 170, 117, 145, 139, 233, 8, 180, 223, 71, 96, 1, 73, 52, 105, 194, 66, 168, 82, 233, 147, 10, 46, 38, 131, 213, 93, 27, 243, 143, 18, 217, 35, 32, 92, 196, 33, 88, 74, 70, 0, 201, 52, 91, 169, 62, 92, 170, 215, 165, 170, 186, 99, 5, 23, 143, 139, 60, 82, 158, 113, 177, 17, 6, 163, 26, 62, 82, 113, 110, 176, 102, 35, 18, 171, 42, 99, 41, 129, 79, 85, 64, 29, 19, 90, 197, 16, 229, 14, 113, 37, 106, 33, 216, 1, 169, 139, 230, 107, 11, 136, 89, 70, 159, 127, 19, 227, 207, 162, 191, 165, 100, 106, 224, 225, 205, 155, 223, 56, 157, 236, 250, 173, 35, 154, 125, 232, 167, 114, 88, 65, 159, 58, 215, 175, 240, 114, 79, 99, 132, 94, 247, 73, 65, 199, 94, 111, 183, 211, 207, 216, 50, 69, 121, 87, 142, 45, 151, 37, 250, 53, 126, 235, 90, 182, 131, 235, 55, 73, 113, 176, 54, 93, 191, 163, 228, 109, 236, 238, 116, 81, 242, 6, 235, 48, 243, 35, 238, 156, 49, 121, 85, 49, 0, 139, 0, 230, 110, 153, 175, 243, 242, 38, 207, 209, 119, 220, 36, 173, 19, 100, 8, 199, 157, 245, 68, 28, 177, 146, 42, 109, 112, 244, 42, 88, 170, 35, 13, 192, 18, 253, 22, 160, 167, 73, 162, 215, 221, 29, 121, 202, 82, 114, 102, 167, 162, 132, 145, 133, 64, 129, 253, 66, 187, 214, 243, 212, 223, 216, 52, 101, 179, 105, 115, 10, 228, 77, 164, 68, 43, 30, 201, 141, 63, 109, 221, 246, 220, 156, 20, 55, 193, 101, 151, 217, 190, 51, 158, 22, 132, 68, 205, 109, 216, 205, 5, 190, 218, 18, 128, 195, 225, 61, 251, 87, 147, 85, 136, 227, 68, 235, 161, 134, 33, 7, 9, 177, 201, 219, 77, 28, 195, 68, 231, 86, 217, 140, 49, 149, 242, 68, 28, 108, 135, 14, 158, 59, 47, 56, 0, 169, 160, 163, 173, 167, 201, 224, 216, 25, 193, 47, 186, 203, 106, 251, 156, 10, 3, 165, 49, 26, 206, 93, 16, 190, 52, 136, 46, 146, 76, 102, 94, 11, 223, 148, 229, 214, 69, 126, 64, 128, 131, 65, 66, 60, 79, 225, 242, 179, 5, 254, 208, 86, 55, 183, 80, 45, 211, 45, 123, 243, 186, 221, 154, 87, 183, 254, 213, 254, 145, 87, 96, 226, 25, 227, 59, 210, 154, 211, 105, 55, 255, 165, 161, 73, 241, 136, 14, 56, 154, 247, 31, 6, 62, 108, 95, 207, 252, 116, 61, 171, 64, 111, 95, 135, 112, 251, 198, 95, 0, 196, 181, 187, 101, 247, 159, 169, 121, 83, 210, 239, 126, 2, 165, 209, 229, 117, 248, 156, 215, 175, 43, 52, 175, 206, 148, 233, 43, 83, 234, 177, 121, 98, 115, 121, 102, 220, 4, 192, 47, 255, 93, 144, 160, 83, 143, 190, 13, 115, 143, 162, 160, 190, 226, 86, 220, 6, 247, 245, 180, 253, 109, 236, 183, 88, 138, 244, 36, 210, 120, 0, 2, 135, 250, 87, 222, 201, 97, 128, 21, 7, 223, 93, 195, 46, 247, 161, 53, 149, 102, 81, 169, 165, 247, 79, 241, 225, 9, 33, 104, 87, 19, 124, 251, 4, 173, 131, 63, 12, 129, 207, 38, 207, 160, 211, 46, 92, 136, 67, 190, 41, 41, 174, 130, 163, 174, 182, 111, 170, 57, 185, 65, 231, 20, 136, 59, 93, 12, 105, 121, 112, 165, 227, 166, 221, 44, 95, 181, 11, 16, 130, 221, 178, 220, 131, 149, 211, 214, 211, 212, 59, 80, 27, 212, 209, 147, 26, 124, 179, 142, 164, 195, 163, 83, 227, 252, 184, 114, 1, 215, 46, 45, 137, 102, 252, 23, 15, 50, 149, 184, 49, 114, 74, 39, 46, 135, 239, 168, 106, 93, 243, 245, 74, 122, 129, 19, 232, 30, 195, 35, 168, 197, 226, 17, 129, 246, 9, 154, 76, 87, 221, 238, 220, 2, 133, 19, 144, 92, 213, 66, 179, 238, 34, 123, 129, 43, 197, 137, 237, 59, 43, 57, 70, 223, 207, 157, 255, 199, 233, 78, 232, 118, 73, 203, 185, 12, 59, 196, 186, 6, 122, 185, 23, 29, 240, 173, 82, 245, 7, 78, 169, 7, 117, 80, 56, 163, 106, 126, 130, 198, 243, 245, 35, 187, 14, 110, 233, 236, 163, 193, 201, 227, 139, 63, 201, 239, 156, 55, 46, 64, 220, 129, 215, 219, 198, 137, 176, 174, 100, 64, 153, 205, 128, 103, 139, 97, 246, 23, 74, 95, 210, 243, 119, 108, 252, 187, 129, 206, 231, 251, 166, 159, 162, 4, 210, 181, 238, 180, 1, 83, 35, 19, 46, 61, 98, 22, 204, 177, 37, 62, 52, 24, 10, 153, 62, 1, 45, 165, 213, 93, 250, 44, 70, 97, 43, 20, 227, 169, 137, 177, 85, 98, 26, 167, 185, 167, 41, 55, 4, 234, 84, 55, 148, 189, 184, 192, 243, 76, 151, 83, 147, 15, 181, 44, 243, 15, 76, 89, 158, 212, 192, 30, 169, 129, 252, 242, 244, 233, 233, 141, 255, 207, 255, 239, 79, 112, 210, 195, 114, 192, 97, 200, 21, 195, 161, 4, 209, 242, 252, 220, 174, 135, 238, 175, 73, 190, 108, 117, 59, 202, 134, 138, 42, 79, 218, 193, 159, 18, 169, 135, 117, 168, 107, 184, 84, 177, 181, 182, 73, 167, 128, 81, 116, 9, 122, 232, 157, 153, 216, 155, 180, 234, 73, 129, 13, 99, 19, 91, 137, 114, 18, 167, 213, 102, 94, 233, 98, 191, 65, 177, 237, 94, 24, 167, 34, 165, 41, 1, 144, 21, 110, 21, 89, 35, 187, 15, 43, 251, 249, 156, 36, 10, 1, 132, 32, 241, 234, 100, 26, 181, 119, 31, 175, 66, 125, 17, 85, 112, 159, 29, 18, 156, 31, 195, 223, 97, 160, 192, 216, 212, 209, 19, 253, 34, 191, 202, 155, 115, 85, 137, 32, 43, 120, 183, 121, 133, 208, 214, 178, 16, 23, 121, 226, 81, 27, 66, 151, 133, 208, 168, 5, 111, 72, 163, 182, 199, 161, 207, 157, 10, 26, 213, 0, 17, 56, 58, 51, 85, 192, 35, 81, 218, 47, 33, 181, 23, 186, 199, 105, 116, 58, 26, 165, 125, 44, 30, 69, 237, 54, 98, 123, 62, 79, 129, 153, 211, 219, 140, 216, 44, 12, 198, 250, 53, 228, 4, 190, 20, 140, 21, 108, 74, 104, 179, 91, 52, 28, 252, 180, 160, 243, 82, 89, 47, 150, 142, 41, 85, 221, 86, 32, 36, 32, 225, 172, 19, 135, 189, 90, 141, 182, 25, 153, 0, 66, 56, 187, 132, 47, 203, 228, 205, 109, 93, 111, 94, 184, 49, 77, 231, 110, 67, 239, 94, 149, 9, 199, 239, 234, 51, 242, 118, 184, 77, 52, 222, 222, 210, 188, 125, 125, 70, 229, 241, 139, 71, 114, 13, 241, 9, 160, 252, 244, 8, 13, 250, 164, 71, 69, 98, 166, 96, 102, 150, 98, 82, 76, 243, 137, 41, 118, 197, 133, 34, 240, 194, 174, 31, 236, 85, 62, 47, 184, 226, 66, 202, 237, 41, 145, 12, 0, 129, 101, 141, 85, 38, 173, 190, 125, 34, 41, 7, 28, 69, 26, 244, 38, 3, 7, 74, 67, 243, 160, 181, 253, 100, 83, 153, 88, 211, 190, 207, 147, 152, 218, 214, 242, 105, 180, 245, 201, 107, 10, 153, 211, 15, 164, 244, 75, 21, 107, 73, 225, 177, 182, 11, 229, 252, 202, 89, 249, 192, 66, 148, 77, 36, 207, 186, 118, 136, 183, 38, 31, 107, 126, 130, 201, 191, 152, 228, 232, 222, 228, 2, 46, 85, 143, 48, 238, 50, 59, 43, 7, 252, 15, 38, 42, 61, 51, 115, 223, 16, 119, 34, 31, 37, 138, 81, 166, 212, 105, 145, 19, 49, 215, 194, 107, 6, 31, 73, 10, 121, 81, 92, 193, 165, 220, 201, 113, 204, 48, 196, 121, 96, 243, 82, 44, 186, 197, 25, 217, 117, 26, 116, 120, 68, 167, 125, 128, 48, 179, 179, 30, 233, 69, 130, 71, 24, 53, 0, 137, 15, 105, 170, 99, 179, 40, 94, 30, 154, 211, 204, 157, 237, 170, 122, 251, 150, 90, 36, 244, 109, 228, 207, 226, 77, 188, 129, 170, 87, 73, 253, 227, 175, 123, 154, 106, 169, 207, 243, 42, 180, 19, 25, 126, 211, 234, 83, 176, 44, 114, 184, 126, 79, 242, 5, 149, 40, 15, 150, 229, 85, 78, 222, 99, 205, 154, 203, 63, 198, 209, 200, 137, 28, 128, 144, 196, 229, 194, 140, 86, 110, 39, 138, 191, 153, 74, 212, 155, 229, 68, 66, 56, 194, 32, 56, 83, 97, 182, 50, 168, 145, 41, 2, 97, 94, 216, 38, 60, 21, 246, 11, 12, 2, 21, 170, 73, 167, 228, 111, 128, 22, 145, 240, 11, 247, 177, 117, 203, 230, 139, 27, 183, 115, 140, 4, 151, 233, 88, 96, 243, 44, 64, 171, 237, 104, 60, 223, 26, 51, 74, 0, 133, 170, 200, 28, 100, 216, 231, 141, 149, 169, 22, 103, 159, 5, 224, 114, 215, 125, 148, 71, 56, 25, 149, 209, 84, 208, 20, 53, 81, 171, 1, 62, 51, 155, 23, 143, 12, 196, 114, 92, 34, 12, 228, 49, 95, 79, 85, 20, 146, 41, 83, 87, 197, 239, 71, 194, 159, 67, 57, 185, 63, 106, 124, 129, 63, 232, 158, 238, 92, 247, 177, 66, 83, 194, 224, 28, 246, 81, 253, 125, 145, 102, 15, 226, 32, 208, 150, 18, 182, 243, 97, 48, 22, 247, 69, 148, 21, 68, 142, 149, 134, 73, 190, 78, 162, 21, 46, 22, 16, 146, 30, 156, 109, 93, 154, 205, 89, 12, 26, 88, 130, 4, 233, 247, 251, 119, 243, 148, 251, 135, 0, 151, 238, 199, 43, 11, 63, 96, 120, 191, 66, 83, 96, 171, 188, 184, 146, 126, 182, 243, 34, 143, 72, 35, 140, 113, 138, 169, 199, 72, 39, 160, 88, 25, 186, 245, 58, 167, 22, 143, 116, 53, 55, 165, 17, 33, 45, 69, 184, 24, 26, 206, 14, 14, 199, 31, 75, 204, 247, 222, 200, 140, 255, 198, 57, 152, 202, 204, 140, 111, 248, 214, 60, 84, 188, 183, 243, 93, 191, 0, 165, 101, 189, 230, 247, 148, 224, 149, 245, 190, 73, 174, 83, 138, 234, 121, 128, 95, 46, 29, 78, 134, 212, 24, 168, 206, 137, 99, 248, 85, 194, 196, 139, 217, 95, 96, 88, 2, 193, 102, 230, 99, 95, 66, 75, 57, 88, 96, 1, 74, 192, 90, 240, 100, 30, 109, 178, 167, 19, 215, 120, 60, 211, 228, 40, 36, 46, 249, 177, 27, 34, 179, 106, 157, 98, 76, 188, 147, 185, 173, 168, 85, 33, 90, 179, 209, 2, 202, 224, 168, 31, 155, 193, 168, 211, 204, 18, 17, 40, 2, 144, 183, 34, 173, 58, 51, 96, 210, 146, 218, 48, 205, 248, 44, 124, 111, 130, 251, 56, 98, 199, 80, 199, 107, 186, 90, 9, 122, 186, 80, 162, 157, 240, 246, 38, 219, 184, 205, 91, 162, 3, 167, 93, 162, 17, 190, 201, 175, 223, 50, 231, 95, 246, 215, 157, 204, 185, 203, 197, 74, 197, 172, 4, 144, 107, 9, 21, 180, 127, 245, 254, 15, 62, 113, 238, 16, 227, 218, 49, 126, 215, 51, 94, 178, 207, 71, 92, 12, 222, 100, 230, 25, 154, 5, 127, 231, 164, 41, 137, 237, 109, 92, 136, 10, 239, 39, 149, 133, 46, 231, 247, 14, 75, 31, 202, 220, 116, 124, 94, 106, 120, 198, 174, 105, 232, 139, 34, 216, 77, 43, 154, 20, 113, 148, 191, 241, 149, 83, 61, 159, 25, 169, 239, 238, 222, 24, 241, 150, 202, 44, 192, 148, 118, 52, 231, 31, 166, 91, 53, 109, 123, 25, 16, 239, 133, 106, 247, 43, 188, 189, 9, 87, 210, 54, 10, 70, 153, 187, 91, 122, 65, 182, 238, 164, 246, 104, 174, 209, 202, 22, 177, 64, 247, 172, 177, 203, 130, 252, 83, 194, 135, 118, 102, 23, 59, 54, 78, 211, 248, 200, 165, 171, 128, 118, 132, 39, 35, 144, 246, 106, 196, 5, 156, 74, 225, 131, 169, 211, 2, 83, 103, 128, 173, 115, 134, 210, 209, 231, 20, 23, 197, 26, 6, 237, 225, 28, 178, 103, 84, 46, 160, 151, 31, 254, 12, 163, 74, 206, 126, 211, 39, 217, 218, 211, 235, 43, 11, 243, 220, 48, 150, 175, 24, 236, 47, 30, 105, 54, 184, 234, 220, 227, 85, 181, 220, 207, 168, 91, 122, 166, 32, 182, 225, 59, 190, 221, 56, 178, 94, 39, 103, 114, 61, 172, 19, 141, 214, 43, 95, 54, 205, 248, 68, 163, 101, 122, 37, 189, 164, 124, 96, 226, 208, 99, 19, 19, 36, 239, 225, 88, 66, 89, 34, 93, 175, 166, 60, 95, 113, 21, 77, 237, 235, 39, 60, 116, 97, 153, 216, 238, 75, 183, 35, 112, 128, 55, 245, 152, 44, 255, 33, 41, 142, 74, 193, 166, 117, 213, 222, 78, 191, 145, 158, 8, 1, 133, 205, 103, 4, 161, 12, 90, 13, 211, 208, 100, 18, 231, 80, 138, 111, 21, 78, 98, 100, 102, 166, 141, 126, 151, 110, 220, 43, 114, 94, 1, 104, 91, 71, 186, 89, 143, 211, 148, 195, 154, 179, 143, 114, 178, 183, 39, 121, 40, 28, 88, 218, 254, 1, 90, 41, 61, 66, 202, 228, 210, 209, 184, 104, 1, 44, 83, 166, 244, 235, 158, 242, 180, 135, 237, 110, 119, 121, 185, 118, 124, 0, 240, 185, 237, 215, 252, 240, 98, 121, 115, 83, 238, 104, 27, 66, 123, 38, 132, 114, 183, 210, 66, 150, 124, 85, 158, 80, 210, 173, 204, 206, 44, 109, 47, 103, 39, 200, 234, 66, 186, 92, 71, 205, 98, 144, 222, 229, 85, 175, 158, 104, 197, 225, 42, 145, 17, 190, 204, 101, 173, 44, 236, 192, 115, 97, 49, 194, 121, 225, 35, 199, 26, 143, 149, 1, 44, 91, 49, 218, 0, 152, 206, 157, 215, 250, 148, 125, 174, 127, 50, 165, 40, 204, 169, 107, 112, 26, 169, 214, 33, 95, 133, 158, 22, 4, 205, 214, 156, 84, 60, 121, 63, 72, 169, 11, 84, 10, 154, 232, 216, 201, 40, 226, 19, 66, 241, 196, 34, 229, 64, 45, 196, 142, 91, 152, 20, 169, 76, 140, 206, 22, 202, 86, 156, 78, 165, 2, 53, 157, 193, 93, 105, 93, 105, 45, 29, 199, 25, 99, 80, 180, 129, 45, 136, 144, 239, 120, 40, 215, 205, 124, 146, 77, 147, 66, 60, 184, 156, 2, 207, 184, 94, 113, 13, 189, 30, 206, 104, 61, 73, 146, 175, 34, 9, 224, 63, 78, 200, 53, 104, 189, 51, 3, 237, 128, 27, 202, 108, 241, 45, 175, 206, 60, 213, 122, 198, 85, 136, 179, 103, 77, 70, 119, 92, 237, 122, 24, 8, 19, 146, 145, 159, 220, 244, 96, 38, 118, 145, 227, 157, 201, 240, 248, 123, 45, 72, 91, 82, 213, 166, 33, 112, 220, 92, 174, 102, 28, 250, 14, 210, 69, 169, 35, 105, 117, 251, 68, 169, 155, 228, 214, 105, 15, 233, 189, 190, 38, 69, 215, 247, 113, 220, 24, 163, 83, 238, 35, 81, 31, 241, 98, 183, 225, 90, 67, 199, 213, 82, 66, 185, 154, 79, 74, 224, 14, 32, 7, 59, 186, 120, 79, 153, 71, 28, 47, 122, 49, 11, 191, 49, 226, 36, 78, 214, 3, 227, 152, 109, 205, 122, 193, 57, 149, 54, 213, 61, 155, 198, 80, 62, 11, 193, 42, 235, 141, 5, 191, 165, 157, 217, 28, 110, 10, 67, 42, 100, 245, 229, 114, 167, 8, 185, 159, 168, 156, 34, 29, 122, 228, 147, 126, 188, 174, 30, 80, 79, 66, 53, 194, 138, 165, 55, 107, 64, 51, 65, 236, 123, 202, 253, 18, 109, 241, 237, 38, 174, 157, 23, 113, 234, 105, 239, 32, 14, 123, 174, 186, 60, 202, 9, 109, 152, 157, 49, 24, 107, 34, 0, 225, 151, 22, 45, 84, 3, 112, 160, 251, 65, 245, 207, 168, 34, 249, 155, 162, 224, 98, 20, 6, 117, 142, 103, 229, 52, 131, 186, 221, 248, 3, 165, 141, 156, 221, 8, 92, 197, 189, 170, 229, 153, 250, 186, 98, 55, 85, 21, 65, 71, 41, 162, 221, 228, 58, 217, 112, 199, 19, 101, 169, 169, 198, 222, 239, 100, 11, 8, 130, 94, 25, 88, 114, 244, 68, 47, 44, 139, 24, 179, 135, 107, 196, 81, 36, 194, 177, 242, 205, 77, 201, 224, 105, 173, 51, 71, 55, 12, 144, 180, 35, 208, 138, 32, 25, 58, 149, 138, 108, 240, 138, 39, 34, 11, 178, 15, 69, 214, 90, 148, 47, 180, 226, 210, 237, 39, 40, 160, 4, 10, 89, 134, 220, 136, 71, 230, 148, 158, 111, 130, 23, 160, 66, 85, 131, 195, 20, 187, 33, 89, 172, 19, 115, 86, 72, 242, 77, 0, 166, 148, 34, 213, 52, 225, 3, 161, 123, 178, 158, 124, 98, 29, 196, 90, 215, 228, 193, 166, 192, 154, 183, 153, 95, 236, 48, 196, 24, 222, 18, 99, 190, 94, 47, 180, 190, 166, 121, 231, 93, 200, 29, 133, 123, 218, 86, 153, 198, 104, 77, 16, 193, 96, 152, 138, 245, 20, 40, 118, 43, 212, 205, 72, 134, 30, 11, 92, 203, 201, 157, 7, 122, 162, 18, 241, 100, 240, 107, 229, 228, 52, 70, 14, 130, 85, 99, 231, 102, 207, 243, 248, 54, 1, 234, 32, 58, 58, 75, 44, 172, 242, 64, 76, 179, 26, 203, 167, 93, 79, 210, 9, 160, 42, 132, 82, 103, 214, 196, 210, 90, 22, 42, 148, 232, 19, 153, 82, 25, 123, 223, 66, 73, 219, 88, 13, 152, 182, 64, 198, 2, 236, 2, 153, 176, 129, 158, 33, 4, 162, 25, 108, 27, 18, 54, 85, 130, 6, 216, 139, 225, 16, 136, 95, 234, 226, 99, 102, 3, 114, 68, 73, 20, 44, 8, 139, 85, 232, 117, 196, 77, 155, 58, 94, 74, 33, 161, 234, 161, 100, 99, 111, 133, 39, 93, 37, 145, 244, 133, 66, 182, 124, 35, 90, 16, 91, 0, 201, 188, 38, 75, 12, 126, 242, 115, 196, 133, 96, 245, 251, 228, 164, 52, 96, 115, 5, 125, 80, 236, 107, 5, 154, 210, 35, 93, 11, 182, 141, 206, 240, 27, 77, 121, 99, 184, 90, 90, 12, 91, 110, 229, 126, 167, 136, 181, 12, 107, 157, 186, 145, 73, 205, 104, 162, 197, 99, 93, 103, 24, 202, 74, 251, 46, 120, 65, 168, 23, 76, 64, 71, 25, 77, 231, 72, 11, 109, 165, 120, 217, 130, 43, 121, 14, 193, 192, 60, 62, 163, 104, 122, 35, 165, 69, 178, 161, 7, 89, 122, 53, 110, 190, 35, 92, 119, 222, 14, 179, 131, 206, 124, 81, 68, 130, 137, 17, 7, 78, 34, 239, 2, 194, 2, 111, 213, 117, 86, 184, 145, 85, 14, 159, 108, 200, 166, 198, 168, 179, 197, 114, 9, 168, 253, 165, 54, 235, 194, 43, 117, 122, 74, 92, 57, 195, 181, 121, 76, 161, 192, 199, 148, 172, 63, 211, 53, 186, 0, 149, 63, 58, 151, 131, 143, 244, 56, 37, 182, 239, 237, 25, 217, 15, 125, 162, 209, 210, 243, 34, 221, 21, 189, 80, 113, 86, 59, 159, 123, 249, 147, 8, 79, 28, 18, 163, 24, 136, 104, 69, 215, 198, 10, 11, 168, 164, 164, 172, 185, 231, 46, 37, 96, 181, 196, 204, 146, 9, 123, 206, 245, 153, 92, 169, 5, 94, 191, 188, 75, 232, 183, 83, 171, 41, 11, 234, 41, 198, 6, 105, 210, 101, 37, 154, 106, 199, 55, 31, 132, 108, 94, 90, 171, 140, 93, 21, 161, 174, 27, 138, 94, 6, 5, 124, 12, 44, 207, 46, 43, 187, 107, 215, 65, 82, 171, 198, 43, 103, 200, 115, 113, 230, 58, 244, 43, 25, 140, 86, 65, 53, 19, 12, 161, 132, 226, 187, 42, 136, 158, 168, 54, 45, 100, 37, 241, 222, 35, 170, 22, 168, 105, 76, 32, 76, 209, 121, 175, 72, 26, 34, 18, 93, 249, 101, 129, 208, 88, 87, 134, 90, 82, 163, 97, 136, 87, 216, 10, 220, 128, 62, 174, 64, 136, 7, 165, 132, 126, 217, 177, 24, 19, 232, 241, 38, 104, 162, 206, 128, 6, 117, 170, 212, 225, 41, 222, 33, 147, 26, 156, 132, 123, 65, 105, 116, 183, 82, 50, 134, 43, 66, 34, 37, 106, 160, 57, 250, 189, 132, 146, 16, 241, 30, 45, 56, 191, 166, 212, 185, 163, 84, 25, 220, 61, 42, 82, 100, 236, 179, 129, 215, 132, 171, 255, 182, 9, 187, 208, 106, 169, 214, 5, 165, 44, 7, 176, 2, 196, 232, 105, 89, 130, 28, 135, 32, 195, 19, 74, 246, 133, 231, 254, 9, 228, 18, 24, 85, 195, 248, 198, 115, 135, 131, 201, 216, 107, 115, 119, 109, 244, 140, 174, 43, 230, 43, 224, 121, 52, 156, 140, 168, 29, 199, 52, 170, 138, 94, 85, 129, 31, 167, 67, 229, 43, 107, 210, 64, 117, 171, 24, 71, 249, 4, 215, 2, 35, 127, 68, 98, 118, 163, 99, 82, 128, 149, 90, 170, 182, 197, 143, 1, 153, 100, 188, 189, 242, 142, 75, 134, 195, 10, 102, 137, 54, 79, 204, 25, 66, 44, 231, 116, 37, 149, 141, 51, 194, 203, 12, 3, 125, 95, 131, 214, 89, 157, 65, 9, 80, 175, 0, 194, 38, 212, 234, 51, 109, 109, 47, 243, 76, 188, 135, 180, 104, 142, 208, 154, 42, 45, 14, 170, 159, 119, 107, 104, 218, 178, 152, 154, 108, 111, 140, 151, 121, 170, 91, 146, 245, 64, 187, 86, 100, 175, 164, 56, 137, 164, 163, 48, 152, 93, 249, 196, 105, 96, 40, 96, 72, 135, 172, 198, 224, 249, 222, 132, 107, 207, 73, 38, 29, 69, 177, 189, 217, 138, 30, 145, 70, 143, 203, 6, 194, 147, 251, 28, 77, 202, 145, 38, 83, 5, 16, 37, 22, 222, 199, 164, 156, 202, 51, 99, 160, 30, 215, 172, 62, 175, 140, 74, 243, 74, 143, 115, 122, 73, 55, 161, 93, 96, 53, 75, 217, 79, 155, 102, 195, 246, 23, 11, 53, 183, 198, 154, 207, 9, 214, 206, 245, 156, 63, 82, 51, 249, 229, 211, 167, 79, 111, 146, 127, 201, 255, 100, 130, 39, 61, 47, 103, 20, 244, 52, 171, 26, 212, 106, 127, 166, 141, 207, 12, 78, 83, 148, 44, 70, 152, 36, 149, 149, 49, 136, 161, 157, 233, 185, 149, 113, 84, 167, 202, 165, 170, 224, 125, 66, 124, 165, 234, 116, 0, 253, 52, 155, 166, 214, 139, 5, 36, 21, 66, 93, 232, 106, 54, 188, 156, 80, 85, 167, 87, 10, 238, 205, 86, 240, 184, 241, 209, 6, 229, 188, 164, 163, 26, 154, 38, 83, 41, 101, 14, 153, 78, 155, 20, 207, 29, 170, 69, 125, 209, 56, 149, 42, 175, 89, 211, 241, 178, 187, 121, 63, 2, 42, 109, 6, 121, 69, 149, 95, 58, 43, 88, 9, 64, 211, 56, 130, 45, 62, 3, 94, 101, 212, 87, 83, 214, 99, 33, 7, 28, 11, 79, 9, 135, 162, 24, 137, 157, 211, 240, 164, 102, 253, 3, 231, 121, 24, 21, 201, 207, 116, 118, 184, 58, 208, 171, 85, 121, 31, 136, 60, 225, 198, 229, 238, 60, 72, 76, 62, 209, 248, 172, 127, 7, 57, 193, 191, 247, 183, 136, 214, 58, 170, 191, 143, 10, 245, 65, 22, 143, 89, 126, 48, 213, 211, 36, 37, 243, 46, 184, 207, 72, 240, 143, 191, 238, 117, 138, 124, 29, 204, 27, 103, 212, 110, 225, 252, 3, 46, 215, 199, 31, 186, 65, 26, 66, 222, 221, 122, 68, 84, 197, 2, 112, 200, 44, 36, 240, 241, 71, 244, 158, 131, 178, 23, 127, 192, 81, 172, 159, 78, 161, 223, 0, 7, 7, 22, 72, 121, 158, 169, 72, 75, 16, 146, 84, 184, 43, 94, 93, 140, 168, 22, 163, 60, 105, 145, 199, 143, 153, 91, 141, 148, 101, 217, 31, 154, 48, 211, 155, 193, 43, 114, 235, 156, 80, 13, 22, 189, 211, 230, 138, 105, 76, 128, 236, 197, 123, 9, 94, 123, 66, 10, 64, 4, 30, 217, 207, 80, 62, 213, 123, 167, 242, 230, 49, 213, 214, 77, 237, 101, 12, 204, 133, 158, 103, 22, 3, 71, 135, 96, 62, 168, 134, 27, 149, 98, 165, 58, 89, 87, 23, 60, 151, 146, 111, 190, 44, 137, 22, 45, 210, 64, 134, 149, 24, 87, 35, 3, 191, 68, 226, 239, 248, 20, 70, 245, 214, 216, 88, 153, 12, 121, 143, 219, 77, 175, 48, 48, 179, 101, 246, 25, 165, 2, 48, 157, 247, 168, 94, 180, 33, 54, 203, 109, 119, 253, 201, 159, 191, 252, 235, 31, 5, 76, 133, 9, 205, 246, 250, 207, 255, 250, 215, 211, 127, 245, 217, 103, 183, 255, 248, 191, 244, 183, 223, 22, 191, 190, 146, 63, 87, 82, 235, 190, 197, 198, 102, 142, 46, 142, 199, 253, 95, 241, 206, 107, 98, 180, 221, 100, 146, 145, 82, 39, 30, 163, 119, 236, 41, 168, 32, 92, 226, 159, 201, 231, 139, 1, 28, 127, 74, 20, 52, 89, 39, 232, 92, 252, 142, 70, 10, 84, 239, 44, 126, 186, 204, 96, 80, 241, 33, 106, 39, 21, 88, 36, 110, 204, 188, 31, 129, 168, 30, 116, 84, 90, 11, 162, 210, 165, 80, 212, 71, 61, 13, 250, 75, 52, 102, 65, 106, 157, 222, 77, 243, 186, 236, 243, 242, 102, 117, 206, 231, 52, 83, 79, 160, 37, 158, 211, 15, 198, 171, 44, 231, 135, 166, 207, 203, 251, 46, 41, 103, 223, 245, 124, 179, 46, 22, 227, 226, 75, 50, 117, 158, 198, 195, 248, 79, 103, 149, 160, 115, 43, 187, 182, 235, 173, 85, 109, 91, 99, 153, 187, 215, 218, 212, 134, 114, 235, 184, 103, 90, 30, 22, 20, 96, 13, 50, 81, 97, 33, 189, 100, 14, 139, 180, 14, 155, 174, 253, 212, 117, 61, 166, 214, 125, 207, 47, 247, 153, 169, 204, 151, 20, 85, 61, 14, 83, 251, 142, 105, 26, 250, 102, 184, 120, 199, 192, 25, 252, 140, 197, 240, 102, 122, 116, 236, 69, 170, 234, 78, 98, 8, 219, 132, 61, 203, 167, 166, 95, 108, 210, 253, 5, 127, 94, 6, 235, 163, 104, 98, 243, 78, 42, 113, 71, 106, 140, 209, 173, 86, 240, 206, 42, 117, 213, 59, 174, 157, 116, 204, 31, 169, 189, 224, 218, 219, 32, 160, 91, 168, 206, 119, 3, 36, 28, 79, 243, 85, 250, 226, 118, 15, 45, 105, 91, 12, 101, 233, 136, 220, 216, 76, 104, 211, 133, 0, 32, 21, 127, 206, 164, 179, 147, 15, 17, 233, 179, 110, 219, 130, 166, 178, 163, 187, 45, 226, 146, 174, 244, 88, 181, 69, 85, 202, 2, 233, 97, 172, 211, 226, 32, 5, 41, 93, 121, 157, 123, 192, 210, 11, 71, 239, 102, 75, 26, 66, 65, 106, 5, 51, 94, 78, 21, 180, 135, 203, 43, 126, 123, 131, 197, 151, 217, 182, 157, 240, 224, 110, 222, 205, 190, 202, 232, 171, 253, 158, 164, 163, 47, 64, 10, 152, 96, 19, 234, 133, 39, 130, 160, 70, 166, 174, 93, 147, 105, 37, 115, 1, 36, 244, 165, 59, 222, 181, 41, 210, 162, 203, 12, 16, 113, 51, 149, 224, 141, 92, 57, 62, 12, 146, 219, 167, 168, 186, 154, 220, 200, 242, 97, 162, 52, 175, 114, 114, 153, 195, 244, 48, 37, 83, 61, 101, 6, 134, 76, 65, 204, 222, 59, 228, 83, 182, 83, 127, 199, 232, 238, 90, 120, 120, 67, 210, 104, 195, 246, 47, 248, 180, 233, 111, 103, 126, 202, 34, 33, 249, 100, 185, 28, 184, 94, 129, 90, 125, 123, 198, 123, 37, 140, 63, 18, 105, 123, 80, 187, 164, 66, 128, 120, 213, 94, 66, 124, 36, 3, 32, 79, 173, 122, 65, 34, 48, 17, 115, 73, 208, 136, 25, 126, 176, 162, 81, 64, 74, 172, 60, 167, 164, 251, 29, 243, 29, 124, 119, 46, 153, 146, 33, 170, 193, 84, 233, 116, 33, 192, 78, 182, 157, 6, 96, 116, 50, 184, 244, 55, 19, 166, 78, 231, 62, 22, 163, 71, 166, 192, 170, 117, 2, 94, 156, 35, 79, 166, 33, 18, 115, 240, 24, 224, 114, 232, 64, 196, 81, 76, 106, 13, 45, 112, 236, 75, 88, 228, 32, 177, 237, 214, 252, 246, 70, 77, 143, 209, 242, 174, 174, 49, 125, 236, 58, 243, 80, 126, 187, 127, 95, 176, 128, 120, 212, 62, 172, 185, 193, 137, 60, 120, 67, 230, 98, 70, 53, 99, 19, 141, 28, 24, 64, 92, 13, 12, 205, 114, 168, 238, 46, 232, 203, 195, 110, 129, 166, 187, 172, 120, 124, 71, 30, 147, 232, 124, 113, 185, 86, 157, 112, 169, 47, 123, 245, 95, 45, 78, 65, 124, 133, 213, 98, 90, 60, 44, 190, 10, 190, 13, 216, 34, 236, 3, 164, 45, 154, 235, 63, 68, 129, 200, 41, 36, 214, 162, 56, 168, 3, 36, 224, 167, 84, 231, 101, 138, 217, 5, 110, 115, 34, 253, 90, 19, 152, 40, 139, 180, 159, 150, 72, 189, 204, 204, 194, 111, 148, 184, 136, 47, 234, 155, 162, 118, 22, 17, 192, 144, 199, 57, 228, 14, 139, 79, 77, 15, 232, 239, 165, 81, 114, 210, 7, 122, 165, 248, 30, 8, 28, 143, 240, 103, 211, 37, 154, 17, 162, 159, 254, 229, 245, 240, 158, 19, 79, 185, 34, 49, 250, 9, 81, 97, 155, 136, 219, 128, 194, 120, 98, 16, 188, 212, 162, 68, 128, 242, 176, 156, 164, 107, 133, 102, 216, 1, 186, 39, 59, 54, 8, 155, 9, 157, 99, 216, 27, 48, 70, 23, 92, 180, 240, 153, 0, 222, 119, 10, 75, 55, 37, 130, 52, 241, 164, 62, 51, 92, 210, 79, 203, 232, 52, 230, 60, 195, 100, 100, 12, 194, 77, 88, 145, 246, 217, 96, 181, 189, 17, 4, 147, 242, 196, 129, 61, 205, 150, 48, 241, 22, 200, 176, 73, 138, 143, 85, 122, 86, 105, 115, 251, 217, 150, 204, 21, 41, 166, 194, 99, 237, 81, 44, 88, 225, 179, 249, 161, 135, 48, 150, 60, 54, 128, 252, 142, 236, 251, 248, 189, 157, 139, 194, 169, 180, 244, 118, 83, 140, 160, 186, 74, 30, 156, 225, 67, 227, 127, 10, 213, 241, 134, 246, 131, 23, 68, 60, 44, 74, 209, 241, 152, 96, 179, 152, 78, 93, 62, 101, 102, 121, 73, 179, 250, 45, 238, 234, 69, 22, 43, 52, 42, 78, 227, 229, 225, 114, 105, 24, 77, 47, 48, 117, 197, 236, 200, 101, 175, 22, 245, 187, 168, 65, 221, 186, 142, 22, 88, 214, 227, 71, 165, 30, 18, 47, 197, 71, 156, 50, 100, 249, 108, 82, 35, 228, 199, 71, 183, 157, 159, 28, 60, 125, 250, 192, 138, 188, 60, 135, 233, 3, 193, 72, 180, 209, 212, 217, 237, 14, 160, 78, 165, 75, 101, 169, 170, 51, 155, 77, 232, 200, 123, 4, 28, 27, 220, 30, 10, 250, 227, 137, 153, 108, 174, 40, 207, 109, 155, 28, 184, 114, 115, 131, 229, 254, 198, 26, 115, 97, 83, 239, 212, 224, 32, 114, 240, 224, 234, 233, 3, 39, 111, 173, 158, 123, 7, 22, 86, 143, 30, 64, 14, 96, 110, 36, 193, 112, 235, 56, 48, 88, 69, 86, 129, 222, 30, 12, 69, 153, 52, 87, 22, 171, 181, 102, 107, 245, 0, 83, 201, 16, 235, 154, 118, 88, 220, 220, 102, 170, 101, 175, 143, 243, 235, 55, 159, 221, 103, 148, 49, 35, 92, 14, 152, 75, 185, 36, 30, 222, 111, 174, 223, 139, 15, 66, 251, 184, 24, 154, 157, 209, 240, 150, 193, 103, 242, 39, 232, 115, 192, 143, 197, 150, 78, 116, 36, 152, 166, 145, 221, 92, 239, 199, 186, 90, 141, 85, 117, 94, 97, 2, 112, 57, 196, 123, 57, 244, 80, 28, 5, 39, 252, 86, 163, 153, 217, 201, 205, 120, 57, 38, 119, 27, 159, 231, 135, 52, 209, 190, 185, 102, 159, 188, 185, 185, 186, 190, 58, 179, 188, 182, 10, 94, 216, 242, 9, 88, 98, 209, 90, 146, 46, 14, 250, 5, 97, 39, 149, 159, 153, 144, 102, 138, 4, 217, 97, 86, 137, 7, 198, 88, 95, 103, 182, 198, 24, 180, 3, 24, 53, 239, 135, 228, 159, 48, 170, 237, 82, 27, 23, 181, 38, 94, 187, 215, 23, 197, 182, 116, 227, 184, 240, 44, 34, 138, 143, 169, 220, 167, 151, 123, 151, 45, 22, 144, 165, 149, 103, 254, 42, 83, 207, 29, 116, 79, 104, 200, 12, 222, 97, 60, 27, 5, 206, 200, 78, 217, 165, 17, 137, 173, 183, 109, 39, 31, 9, 84, 246, 208, 248, 95, 17, 249, 83, 124, 79, 201, 239, 65, 168, 97, 130, 126, 35, 137, 193, 229, 231, 253, 143, 195, 62, 173, 64, 195, 164, 5, 112, 33, 47, 172, 239, 98, 90, 232, 95, 68, 77, 123, 247, 227, 184, 73, 29, 110, 213, 184, 2, 124, 237, 154, 195, 227, 228, 10, 172, 246, 161, 134, 133, 14, 26, 239, 65, 248, 6, 255, 139, 115, 48, 116, 71, 208, 168, 58, 241, 37, 104, 183, 118, 1, 49, 77, 225, 205, 218, 151, 216, 243, 83, 47, 99, 90, 197, 142, 207, 7, 182, 105, 188, 46, 149, 136, 114, 143, 251, 162, 54, 166, 232, 59, 106, 79, 159, 243, 79, 8, 169, 7, 139, 213, 230, 157, 131, 110, 135, 185, 209, 61, 36, 224, 178, 185, 34, 199, 182, 37, 166, 54, 99, 145, 157, 179, 229, 20, 197, 233, 192, 108, 89, 252, 132, 186, 134, 240, 80, 60, 195, 114, 138, 244, 155, 108, 192, 111, 162, 98, 184, 252, 40, 141, 39, 250, 21, 193, 37, 184, 36, 95, 71, 151, 246, 55, 87, 167, 120, 173, 175, 175, 247, 47, 243, 117, 160, 249, 54, 172, 221, 244, 14, 215, 237, 229, 165, 107, 97, 217, 46, 159, 73, 91, 122, 187, 115, 187, 103, 74, 231, 220, 126, 230, 215, 95, 129, 196, 14, 188, 137, 161, 234, 128, 15, 87, 228, 14, 209, 199, 58, 55, 124, 232, 69, 211, 216, 156, 52, 217, 85, 104, 198, 71, 226, 221, 3, 12, 115, 47, 101, 97, 150, 44, 35, 35, 165, 163, 115, 214, 182, 13, 131, 46, 6, 64, 91, 203, 232, 196, 138, 199, 82, 75, 66, 26, 98, 34, 68, 171, 96, 115, 35, 87, 96, 130, 71, 240, 94, 143, 192, 90, 73, 69, 150, 66, 110, 180, 139, 25, 13, 113, 162, 125, 87, 22, 184, 217, 242, 122, 66, 130, 152, 220, 36, 222, 130, 130, 59, 27, 9, 115, 204, 138, 43, 129, 199, 245, 250, 164, 67, 126, 224, 182, 169, 107, 79, 229, 240, 35, 91, 205, 220, 53, 238, 25, 108, 26, 31, 208, 219, 1, 158, 13, 84, 217, 141, 242, 84, 240, 181, 1, 188, 55, 116, 62, 111, 114, 140, 92, 41, 71, 190, 237, 70, 54, 47, 27, 42, 248, 202, 111, 122, 154, 95, 75, 11, 125, 183, 66, 239, 94, 202, 150, 239, 121, 214, 32, 181, 216, 161, 208, 16, 124, 238, 180, 196, 20, 22, 167, 83, 129, 146, 229, 147, 165, 36, 57, 171, 81, 34, 101, 26, 248, 217, 222, 231, 191, 191, 85, 243, 135, 142, 104, 205, 150, 92, 60, 164, 92, 90, 24, 38, 225, 217, 191, 194, 50, 125, 129, 195, 170, 68, 155, 40, 248, 54, 60, 178, 171, 209, 233, 212, 104, 15, 142, 101, 109, 161, 77, 154, 208, 108, 121, 90, 99, 76, 164, 105, 52, 108, 232, 155, 66, 10, 154, 63, 187, 165, 94, 26, 188, 201, 169, 107, 137, 164, 51, 250, 80, 213, 56, 97, 67, 51, 213, 223, 9, 39, 161, 19, 89, 220, 220, 223, 223, 153, 168, 241, 222, 65, 227, 22, 239, 99, 113, 42, 203, 42, 173, 26, 82, 29, 181, 111, 250, 105, 181, 217, 146, 157, 25, 249, 164, 54, 198, 37, 60, 82, 93, 85, 227, 212, 137, 80, 227, 49, 236, 248, 79, 157, 166, 6, 201, 236, 110, 11, 126, 14, 113, 202, 151, 169, 86, 33, 46, 0, 52, 182, 29, 91, 205, 190, 229, 237, 91, 198, 130, 251, 176, 211, 96, 243, 244, 49, 203, 30, 161, 37, 42, 111, 99, 146, 24, 36, 102, 196, 21, 197, 176, 190, 173, 28, 9, 122, 239, 125, 24, 179, 137, 169, 122, 2, 144, 80, 55, 54, 47, 235, 134, 54, 159, 179, 16, 138, 31, 104, 146, 136, 217, 111, 10, 214, 140, 61, 112, 254, 112, 134, 171, 178, 240, 48, 48, 127, 38, 187, 74, 46, 84, 143, 57, 196, 151, 190, 31, 54, 213, 182, 240, 245, 10, 218, 221, 88, 224, 83, 93, 6, 126, 177, 91, 116, 169, 226, 27, 181, 22, 34, 175, 3, 160, 31, 85, 241, 86, 202, 183, 207, 164, 146, 70, 2, 82, 165, 37, 114, 221, 26, 204, 163, 220, 37, 139, 65, 64, 197, 142, 151, 28, 238, 74, 42, 103, 89, 43, 59, 223, 26, 44, 35, 186, 90, 1, 173, 19, 214, 180, 168, 228, 18, 80, 179, 200, 81, 158, 112, 241, 166, 214, 168, 235, 148, 153, 52, 45, 185, 219, 192, 134, 217, 168, 72, 60, 157, 147, 26, 109, 253, 96, 174, 235, 116, 162, 84, 154, 73, 8, 66, 161, 55, 196, 5, 175, 48, 133, 161, 2, 35, 213, 145, 108, 66, 79, 39, 25, 38, 168, 221, 111, 68, 80, 18, 221, 251, 13, 200, 103, 36, 74, 134, 188, 146, 163, 15, 185, 70, 223, 224, 75, 133, 126, 56, 18, 139, 164, 184, 118, 158, 170, 9, 50, 107, 16, 117, 13, 23, 195, 148, 36, 174, 97, 134, 168, 129, 212, 119, 100, 91, 204, 196, 241, 60, 39, 15, 99, 60, 31, 110, 136, 85, 53, 144, 48, 163, 12, 68, 73, 204, 203, 67, 157, 72, 132, 167, 219, 195, 48, 45, 128, 96, 202, 208, 127, 98, 37, 30, 63, 68, 175, 77, 218, 125, 19, 210, 159, 51, 65, 133, 137, 207, 202, 52, 40, 230, 76, 217, 160, 184, 209, 26, 162, 49, 223, 113, 79, 125, 52, 103, 98, 196, 60, 46, 153, 88, 102, 90, 204, 165, 224, 214, 37, 10, 71, 245, 228, 35, 237, 66, 206, 60, 201, 48, 240, 204, 168, 29, 116, 79, 28, 72, 197, 29, 29, 3, 19, 43, 1, 144, 21, 225, 16, 60, 186, 181, 210, 104, 49, 134, 59, 70, 8, 105, 119, 206, 242, 237, 125, 197, 232, 55, 19, 156, 150, 55, 139, 69, 179, 156, 219, 38, 252, 244, 21, 218, 207, 23, 236, 197, 237, 112, 227, 151, 141, 90, 229, 232, 199, 108, 46, 223, 178, 65, 27, 153, 45, 74, 64, 145, 85, 151, 201, 234, 106, 217, 247, 97, 156, 98, 48, 80, 42, 232, 54, 109, 217, 205, 117, 119, 229, 199, 160, 214, 184, 8, 175, 46, 212, 104, 87, 69, 67, 50, 169, 22, 199, 13, 186, 180, 221, 99, 249, 4, 33, 135, 88, 102, 26, 226, 195, 216, 166, 17, 143, 167, 204, 244, 205, 110, 95, 238, 159, 113, 186, 164, 118, 194, 97, 154, 206, 174, 198, 151, 202, 188, 179, 155, 113, 133, 46, 109, 246, 88, 62, 22, 123, 188, 235, 171, 177, 111, 210, 230, 41, 186, 174, 182, 244, 205, 60, 162, 93, 169, 86, 12, 151, 149, 219, 122, 37, 95, 232, 214, 99, 24, 180, 171, 48, 220, 238, 14, 165, 10, 245, 246, 192, 160, 44, 215, 210, 11, 105, 80, 32, 10, 83, 88, 161, 208, 202, 148, 219, 160, 133, 184, 209, 150, 11, 120, 92, 158, 254, 80, 227, 82, 69, 253, 22, 127, 127, 104, 180, 200, 6, 212, 221, 212, 243, 21, 167, 228, 147, 163, 81, 78, 50, 197, 99, 66, 45, 92, 126, 19, 218, 170, 204, 8, 168, 206, 66, 249, 35, 172, 80, 169, 247, 12, 139, 11, 12, 59, 199, 10, 66, 26, 207, 35, 36, 154, 239, 27, 134, 124, 189, 166, 113, 27, 188, 41, 94, 72, 154, 125, 161, 28, 53, 148, 228, 114, 149, 122, 191, 201, 42, 251, 236, 142, 166, 233, 172, 230, 241, 72, 36, 156, 192, 124, 118, 21, 102, 119, 135, 211, 51, 217, 162, 168, 151, 42, 153, 66, 65, 148, 48, 147, 44, 230, 102, 74, 46, 41, 28, 182, 184, 0, 229, 162, 142, 238, 139, 179, 1, 75, 128, 149, 120, 6, 184, 137, 95, 56, 249, 138, 149, 200, 149, 124, 34, 2, 230, 166, 147, 155, 55, 178, 226, 110, 15, 244, 135, 25, 67, 140, 165, 67, 33, 166, 82, 157, 9, 192, 200, 188, 134, 202, 78, 17, 250, 148, 117, 79, 249, 155, 43, 68, 227, 219, 193, 43, 36, 91, 177, 137, 161, 167, 197, 68, 40, 12, 149, 31, 200, 49, 228, 103, 118, 31, 170, 250, 176, 97, 219, 224, 69, 134, 164, 104, 196, 200, 101, 215, 241, 22, 202, 110, 168, 68, 242, 26, 57, 185, 148, 209, 57, 14, 185, 14, 238, 107, 7, 56, 113, 37, 61, 45, 163, 229, 132, 112, 249, 24, 239, 72, 109, 12, 111, 156, 105, 150, 129, 51, 79, 58, 201, 65, 225, 114, 60, 198, 125, 87, 145, 139, 89, 4, 95, 59, 87, 126, 39, 223, 75, 34, 159, 35, 81, 63, 36, 87, 123, 130, 84, 209, 135, 141, 149, 102, 139, 255, 220, 190, 150, 238, 134, 246, 166, 19, 115, 57, 127, 46, 234, 159, 233, 200, 157, 128, 244, 138, 209, 108, 163, 44, 46, 109, 29, 142, 166, 35, 62, 218, 228, 182, 218, 162, 153, 100, 106, 219, 161, 61, 147, 230, 98, 175, 175, 53, 218, 220, 116, 36, 149, 17, 27, 253, 197, 209, 214, 201, 33, 226, 200, 225, 40, 61, 141, 166, 244, 202, 51, 196, 49, 92, 78, 241, 84, 44, 22, 228, 15, 141, 150, 208, 61, 159, 21, 221, 179, 127, 211, 206, 157, 171, 251, 155, 98, 22, 237, 111, 4, 207, 20, 250, 131, 130, 44, 87, 7, 252, 254, 193, 96, 63, 143, 98, 132, 83, 34, 213, 233, 216, 4, 120, 70, 182, 90, 181, 232, 34, 15, 173, 172, 124, 19, 32, 181, 66, 153, 188, 196, 125, 155, 197, 229, 136, 47, 201, 103, 166, 78, 122, 51, 167, 253, 145, 46, 170, 52, 70, 179, 205, 49, 77, 249, 2, 97, 38, 197, 103, 242, 68, 69, 140, 176, 73, 238, 234, 167, 60, 132, 112, 172, 187, 16, 23, 37, 249, 97, 18, 34, 133, 236, 85, 54, 202, 65, 193, 108, 22, 82, 14, 142, 5, 206, 225, 146, 51, 92, 14, 134, 175, 242, 66, 239, 244, 199, 33, 225, 91, 223, 64, 110, 240, 56, 157, 122, 31, 93, 116, 243, 82, 22, 60, 91, 90, 55, 20, 123, 74, 240, 32, 242, 67, 183, 100, 151, 251, 72, 43, 248, 66, 45, 137, 160, 199, 83, 190, 72, 129, 14, 86, 174, 241, 134, 33, 187, 70, 65, 236, 255, 72, 215, 162, 197, 117, 190, 6, 98, 130, 179, 138, 143, 114, 97, 41, 220, 143, 49, 40, 150, 179, 118, 10, 48, 165, 217, 20, 212, 230, 234, 20, 205, 99, 161, 2, 17, 180, 117, 238, 244, 221, 42, 227, 243, 149, 191, 57, 228, 75, 251, 60, 187, 255, 43, 211, 118, 164, 83, 199, 99, 6, 100, 60, 28, 39, 147, 144, 107, 15, 86, 173, 222, 224, 207, 86, 158, 40, 142, 17, 154, 167, 44, 204, 163, 176, 128, 3, 190, 57, 160, 141, 147, 132, 3, 237, 27, 45, 53, 48, 62, 245, 169, 5, 251, 57, 20, 32, 56, 67, 33, 166, 50, 12, 74, 252, 158, 122, 2, 189, 57, 163, 125, 166, 197, 215, 72, 34, 243, 179, 15, 156, 46, 13, 232, 60, 79, 192, 105, 161, 227, 194, 107, 201, 18, 249, 108, 155, 27, 180, 22, 171, 10, 116, 203, 98, 200, 33, 159, 92, 98, 163, 177, 3, 93, 181, 25, 222, 49, 118, 156, 90, 159, 108, 181, 173, 253, 114, 181, 230, 110, 198, 226, 136, 220, 171, 118, 55, 211, 203, 253, 114, 189, 194, 49, 214, 105, 65, 195, 83, 40, 161, 233, 177, 140, 145, 205, 18, 140, 172, 86, 161, 220, 177, 225, 205, 90, 76, 48, 126, 162, 93, 128, 71, 39, 198, 173, 238, 44, 183, 142, 40, 99, 65, 4, 210, 96, 243, 136, 185, 88, 88, 36, 78, 253, 40, 171, 189, 80, 74, 44, 218, 85, 146, 199, 172, 171, 36, 31, 227, 72, 21, 115, 173, 7, 37, 136, 216, 216, 118, 116, 57, 21, 64, 51, 141, 98, 34, 76, 149, 185, 125, 198, 13, 212, 210, 236, 72, 35, 50, 92, 209, 172, 43, 205, 218, 26, 145, 59, 104, 180, 116, 49, 132, 226, 17, 187, 181, 242, 218, 221, 228, 106, 11, 36, 61, 237, 108, 49, 215, 54, 153, 102, 45, 214, 100, 50, 25, 10, 35, 33, 139, 39, 89, 76, 195, 243, 24, 132, 118, 200, 5, 160, 41, 35, 13, 111, 203, 181, 202, 23, 249, 28, 241, 3, 57, 138, 84, 49, 85, 164, 201, 71, 21, 44, 3, 202, 186, 56, 109, 40, 215, 58, 185, 240, 94, 15, 147, 109, 77, 216, 176, 5, 194, 172, 170, 201, 139, 85, 193, 175, 10, 191, 233, 201, 25, 48, 162, 57, 170, 68, 235, 96, 57, 95, 156, 228, 58, 40, 107, 145, 108, 224, 26, 143, 231, 105, 176, 249, 106, 150, 99, 231, 64, 2, 41, 23, 23, 99, 194, 189, 44, 119, 37, 170, 115, 1, 114, 75, 43, 95, 101, 224, 188, 167, 94, 166, 20, 42, 194, 205, 189, 109, 129, 153, 184, 27, 2, 164, 225, 151, 107, 162, 181, 163, 101, 203, 50, 146, 116, 13, 75, 115, 116, 20, 81, 170, 8, 33, 173, 5, 34, 70, 200, 215, 246, 125, 110, 188, 56, 41, 18, 181, 130, 64, 52, 74, 203, 21, 119, 149, 53, 196, 148, 255, 88, 40, 91, 48, 105, 156, 194, 140, 4, 230, 90, 200, 14, 83, 34, 72, 169, 75, 18, 210, 38, 170, 238, 141, 164, 107, 199, 100, 163, 108, 78, 95, 234, 147, 215, 81, 233, 156, 42, 173, 101, 139, 34, 237, 60, 121, 118, 53, 47, 219, 82, 25, 158, 110, 149, 106, 5, 93, 100, 186, 65, 24, 67, 250, 102, 7, 185, 245, 186, 153, 180, 221, 211, 123, 166, 224, 158, 12, 169, 250, 83, 175, 114, 208, 35, 68, 110, 36, 5, 49, 199, 9, 72, 115, 222, 24, 202, 27, 64, 144, 66, 135, 51, 87, 111, 163, 132, 34, 96, 162, 186, 245, 50, 174, 69, 50, 205, 139, 0, 131, 240, 36, 185, 226, 194, 94, 58, 154, 246, 161, 164, 136, 0, 14, 8, 161, 52, 105, 225, 182, 99, 169, 221, 135, 51, 108, 232, 179, 42, 14, 101, 98, 193, 82, 170, 248, 74, 147, 38, 146, 212, 214, 167, 181, 186, 102, 43, 220, 223, 104, 60, 47, 61, 41, 144, 8, 132, 72, 196, 41, 161, 219, 139, 110, 3, 114, 205, 129, 72, 71, 68, 183, 244, 211, 193, 22, 68, 210, 129, 73, 22, 20, 83, 202, 226, 149, 161, 5, 99, 77, 250, 102, 42, 45, 228, 21, 9, 57, 114, 181, 189, 0, 91, 199, 59, 104, 23, 35, 175, 14, 35, 93, 205, 73, 120, 70, 37, 152, 200, 185, 243, 148, 235, 103, 242, 161, 27, 237, 52, 60, 51, 213, 199, 92, 16, 225, 164, 116, 46, 225, 206, 217, 16, 33, 29, 145, 206, 203, 65, 81, 137, 97, 104, 92, 244, 141, 127, 162, 81, 212, 168, 17, 229, 157, 24, 162, 26, 204, 218, 107, 185, 189, 134, 87, 219, 133, 133, 116, 52, 91, 246, 217, 167, 175, 87, 47, 150, 40, 191, 172, 246, 47, 222, 2, 123, 189, 79, 4, 125, 185, 175, 252, 249, 234, 170, 62, 60, 251, 40, 129, 198, 143, 42, 232, 178, 108, 109, 201, 236, 194, 15, 152, 170, 89, 85, 36, 47, 236, 18, 214, 131, 49, 97, 125, 249, 146, 189, 62, 222, 20, 187, 50, 121, 74, 167, 93, 122, 6, 59, 189, 91, 238, 80, 227, 78, 101, 186, 34, 185, 66, 190, 190, 119, 101, 45, 94, 156, 17, 229, 135, 71, 251, 72, 173, 203, 233, 145, 50, 84, 63, 138, 235, 228, 12, 60, 66, 65, 88, 52, 114, 201, 244, 18, 146, 205, 180, 61, 96, 28, 165, 118, 176, 135, 220, 41, 120, 53, 239, 26, 121, 38, 162, 181, 135, 213, 169, 157, 74, 253, 214, 104, 201, 82, 56, 160, 250, 171, 149, 184, 165, 205, 104, 149, 180, 185, 35, 8, 88, 238, 50, 169, 61, 37, 96, 165, 17, 181, 140, 235, 42, 241, 150, 154, 12, 147, 22, 25, 3, 189, 123, 153, 169, 2, 24, 54, 178, 1, 226, 208, 196, 61, 71, 194, 91, 64, 107, 0, 124, 68, 50, 145, 71, 31, 226, 204, 150, 134, 133, 199, 45, 94, 85, 16, 86, 155, 219, 212, 72, 195, 185, 99, 132, 90, 137, 118, 99, 169, 41, 106, 0, 62, 221, 185, 234, 164, 207, 250, 102, 28, 202, 202, 5, 194, 13, 166, 181, 49, 52, 8, 163, 3, 199, 158, 229, 104, 231, 64, 41, 78, 185, 185, 181, 92, 33, 199, 70, 225, 217, 235, 151, 82, 82, 32, 11, 160, 104, 148, 73, 87, 120, 221, 228, 118, 78, 70, 192, 179, 116, 81, 202, 167, 37, 41, 176, 169, 178, 171, 120, 42, 210, 13, 85, 246, 76, 202, 90, 200, 111, 113, 239, 146, 155, 242, 50, 231, 83, 105, 73, 137, 108, 33, 86, 37, 150, 29, 182, 141, 47, 45, 175, 204, 6, 42, 254, 73, 200, 86, 226, 41, 97, 72, 218, 252, 145, 243, 122, 178, 40, 115, 95, 171, 193, 38, 242, 13, 155, 200, 177, 141, 96, 241, 204, 218, 42, 221, 148, 124, 174, 196, 85, 229, 11, 52, 217, 149, 57, 173, 172, 53, 69, 190, 133, 200, 145, 166, 218, 29, 18, 228, 61, 255, 178, 255, 190, 255, 33, 254, 34, 114, 163, 184, 139, 214, 121, 144, 53, 18, 155, 207, 252, 199, 13, 69, 105, 132, 23, 40, 78, 77, 208, 65, 161, 175, 50, 241, 152, 30, 197, 225, 186, 175, 156, 179, 178, 216, 197, 38, 229, 126, 52, 216, 181, 77, 227, 18, 149, 30, 138, 100, 198, 162, 180, 68, 113, 9, 60, 113, 241, 85, 146, 204, 154, 171, 25, 73, 43, 3, 30, 5, 210, 169, 24, 76, 118, 154, 94, 46, 220, 176, 206, 9, 95, 155, 42, 153, 89, 16, 68, 253, 12, 24, 103, 24, 51, 9, 171, 51, 212, 19, 5, 179, 252, 62, 77, 153, 179, 28, 83, 40, 133, 174, 202, 50, 88, 131, 64, 7, 52, 255, 253, 204, 183, 171, 110, 238, 123, 39, 116, 129, 150, 238, 232, 110, 171, 74, 172, 84, 158, 78, 35, 215, 207, 115, 255, 204, 69, 231, 33, 140, 90, 15, 148, 3, 15, 199, 163, 88, 60, 14, 58, 19, 247, 115, 241, 85, 58, 103, 25, 44, 125, 72, 203, 37, 84, 161, 55, 83, 147, 36, 180, 183, 235, 144, 1, 73, 214, 49, 15, 179, 219, 210, 13, 226, 185, 232, 168, 77, 30, 155, 54, 89, 84, 87, 211, 163, 9, 118, 126, 27, 66, 133, 201, 3, 249, 117, 96, 87, 151, 42, 195, 74, 225, 237, 233, 107, 181, 109, 183, 225, 153, 237, 118, 50, 243, 218, 172, 28, 101, 134, 169, 125, 6, 38, 187, 3, 55, 98, 214, 188, 42, 146, 77, 249, 106, 1, 155, 122, 237, 125, 137, 81, 128, 100, 161, 251, 11, 149, 61, 100, 9, 161, 151, 72, 185, 174, 103, 210, 177, 245, 134, 133, 158, 86, 122, 137, 41, 13, 47, 34, 187, 57, 95, 168, 52, 243, 131, 35, 112, 158, 104, 109, 118, 118, 10, 145, 223, 107, 76, 19, 49, 199, 222, 208, 121, 153, 202, 12, 159, 72, 201, 178, 116, 207, 212, 131, 96, 196, 109, 218, 115, 6, 89, 2, 18, 81, 114, 82, 67, 148, 176, 247, 198, 216, 57, 209, 57, 244, 77, 245, 235, 249, 166, 177, 193, 41, 235, 247, 100, 141, 71, 19, 57, 229, 12, 49, 97, 135, 2, 186, 0, 41, 11, 141, 97, 192, 135, 235, 84, 173, 171, 177, 232, 241, 37, 244, 53, 97, 144, 49, 188, 92, 253, 146, 58, 82, 206, 206, 224, 113, 133, 174, 174, 222, 165, 79, 156, 66, 143, 43, 19, 14, 38, 174, 165, 132, 89, 169, 14, 105, 199, 38, 186, 234, 153, 115, 218, 27, 212, 118, 33, 242, 17, 15, 17, 53, 99, 198, 70, 136, 69, 75, 89, 184, 44, 143, 148, 209, 197, 19, 173, 75, 91, 169, 178, 2, 215, 76, 50, 102, 155, 86, 37, 35, 199, 40, 171, 61, 78, 157, 113, 66, 178, 187, 86, 89, 218, 102, 62, 123, 156, 106, 229, 132, 100, 75, 22, 152, 172, 140, 65, 203, 155, 103, 58, 52, 92, 172, 165, 21, 201, 86, 148, 8, 93, 14, 49, 217, 65, 218, 63, 39, 92, 69, 177, 178, 5, 155, 181, 230, 82, 94, 138, 121, 198, 252, 174, 229, 107, 173, 140, 170, 192, 246, 152, 167, 17, 176, 12, 78, 196, 251, 88, 42, 223, 181, 73, 16, 56, 138, 148, 250, 26, 248, 176, 229, 51, 27, 113, 197, 78, 121, 196, 109, 74, 221, 13, 23, 136, 200, 66, 212, 73, 3, 77, 201, 239, 189, 15, 192, 117, 163, 139, 161, 150, 64, 27, 141, 74, 60, 155, 80, 152, 106, 230, 5, 147, 71, 194, 216, 21, 187, 216, 101, 8, 233, 2, 113, 252, 213, 175, 202, 158, 226, 160, 181, 136, 42, 177, 70, 199, 78, 197, 149, 125, 90, 179, 31, 33, 53, 106, 235, 200, 40, 178, 138, 248, 14, 174, 108, 139, 130, 246, 57, 198, 142, 67, 159, 55, 103, 242, 220, 3, 212, 43, 208, 188, 62, 195, 67, 33, 235, 126, 71, 201, 165, 145, 182, 191, 33, 43, 240, 145, 28, 250, 89, 221, 191, 219, 254, 181, 207, 169, 36, 108, 17, 52, 150, 184, 85, 57, 172, 71, 46, 237, 222, 62, 136, 103, 113, 180, 132, 197, 163, 200, 227, 237, 49, 152, 173, 250, 13, 115, 127, 56, 8, 194, 252, 22, 119, 214, 119, 115, 15, 103, 107, 65, 215, 239, 8, 85, 230, 71, 202, 30, 68, 220, 50, 53, 52, 56, 244, 174, 233, 182, 55, 116, 165, 67, 102, 173, 185, 247, 83, 240, 5, 174, 196, 34, 198, 79, 198, 88, 119, 177, 125, 159, 182, 154, 80, 176, 57, 202, 186, 111, 197, 175, 25, 136, 101, 184, 47, 62, 179, 125, 89, 242, 100, 83, 225, 21, 213, 40, 38, 125, 1, 4, 144, 23, 1, 128, 55, 119, 48, 179, 63, 67, 207, 232, 138, 20, 186, 54, 237, 201, 145, 213, 125, 103, 251, 46, 245, 212, 200, 66, 60, 185, 42, 113, 151, 43, 220, 38, 146, 246, 92, 206, 182, 204, 39, 88, 130, 35, 53, 5, 104, 226, 40, 55, 181, 196, 28, 36, 36, 66, 133, 22, 168, 114, 226, 134, 64, 86, 216, 156, 51, 106, 43, 179, 142, 231, 228, 206, 37, 202, 123, 183, 214, 209, 153, 45, 130, 220, 14, 36, 64, 216, 60, 16, 231, 124, 108, 148, 142, 121, 250, 188, 202, 23, 136, 61, 199, 55, 235, 8, 89, 215, 235, 140, 223, 61, 195, 249, 75, 134, 249, 1, 166, 103, 106, 112, 254, 13, 198, 50, 233, 86, 102, 75, 180, 31, 88, 231, 195, 162, 90, 11, 153, 235, 87, 136, 117, 195, 219, 27, 177, 224, 222, 3, 207, 224, 191, 112, 249, 11, 93, 24, 150, 210, 223, 249, 76, 152, 249, 62, 215, 104, 91, 30, 206, 51, 111, 185, 93, 206, 251, 150, 148, 35, 180, 51, 191, 190, 90, 46, 183, 202, 147, 196, 225, 39, 73, 242, 181, 82, 166, 127, 241, 138, 190, 29, 158, 217, 70, 13, 203, 63, 156, 225, 89, 121, 91, 79, 148, 165, 183, 76, 29, 166, 213, 150, 239, 47, 40, 13, 167, 89, 105, 173, 36, 17, 253, 98, 24, 66, 106, 29, 244, 66, 81, 163, 15, 124, 55, 212, 17, 202, 64, 50, 184, 178, 181, 121, 193, 55, 107, 180, 206, 217, 183, 56, 87, 46, 139, 245, 178, 123, 203, 146, 150, 225, 166, 180, 139, 142, 16, 142, 101, 27, 223, 214, 88, 134, 210, 107, 63, 242, 121, 169, 188, 191, 194, 121, 77, 155, 199, 85, 244, 161, 212, 214, 187, 214, 250, 109, 213, 89, 38, 38, 176, 51, 136, 187, 153, 174, 87, 89, 182, 159, 103, 251, 204, 140, 11, 139, 170, 206, 83, 54, 76, 19, 64, 207, 43, 170, 112, 154, 85, 232, 3, 100, 187, 129, 78, 227, 143, 203, 50, 12, 250, 137, 150, 130, 212, 14, 197, 128, 30, 77, 184, 233, 87, 214, 62, 79, 220, 34, 167, 169, 101, 197, 174, 173, 107, 158, 14, 204, 14, 225, 211, 226, 166, 1, 13, 23, 49, 83, 37, 91, 28, 45, 114, 236, 196, 57, 38, 11, 110, 33, 178, 114, 23, 12, 82, 238, 26, 226, 229, 128, 215, 232, 29, 54, 42, 122, 157, 61, 210, 129, 37, 71, 29, 113, 41, 160, 22, 234, 142, 218, 155, 55, 1, 254, 187, 31, 129, 151, 79, 41, 7, 169, 206, 108, 65, 120, 66, 34, 77, 143, 15, 212, 44, 18, 226, 204, 89, 82, 144, 102, 208, 66, 155, 100, 193, 7, 166, 105, 94, 94, 65, 146, 36, 74, 234, 207, 99, 11, 168, 92, 155, 28, 73, 194, 68, 131, 215, 26, 184, 137, 151, 43, 174, 160, 56, 198, 51, 101, 21, 229, 21, 108, 75, 72, 167, 126, 185, 230, 251, 139, 141, 211, 218, 189, 149, 180, 53, 26, 11, 29, 161, 247, 141, 26, 205, 34, 202, 254, 96, 243, 177, 166, 21, 134, 58, 213, 45, 95, 175, 108, 50, 207, 201, 217, 60, 23, 49, 14, 79, 68, 173, 68, 140, 52, 20, 5, 202, 195, 237, 165, 117, 118, 109, 11, 190, 235, 231, 212, 239, 89, 237, 31, 204, 243, 239, 251, 126, 254, 255, 179, 72, 149, 150, 7, 250, 180, 26, 123, 151, 167, 159, 121, 246, 175, 190, 140, 223, 63, 91, 167, 116, 141, 69, 62, 75, 234, 110, 211, 140, 224, 200, 224, 57, 56, 114, 224, 171, 51, 190, 63, 254, 186, 255, 55, 230, 135, 13, 116, 179, 192, 76, 221, 224, 187, 64, 201, 153, 211, 129, 194, 38, 47, 103, 109, 199, 255, 212, 255, 195, 121, 102, 111, 187, 106, 217, 63, 187, 201, 103, 205, 154, 11, 46, 108, 125, 28, 4, 107, 25, 235, 85, 123, 38, 70, 214, 172, 152, 40, 105, 49, 178, 8, 189, 229, 119, 213, 167, 139, 23, 84, 83, 136, 218, 205, 182, 136, 184, 254, 231, 31, 182, 152, 156, 178, 66, 154, 114, 211, 57, 206, 169, 109, 79, 98, 254, 231, 217, 242, 133, 78, 129, 98, 130, 77, 227, 112, 26, 151, 175, 175, 223, 175, 234, 100, 102, 248, 157, 193, 113, 158, 3, 223, 98, 7, 125, 126, 127, 200, 154, 161, 233, 207, 10, 176, 252, 4, 50, 195, 19, 78, 254, 224, 31, 60, 250, 147, 30, 207, 198, 63, 135, 14, 159, 208, 128, 202, 13, 95, 95, 231, 22, 253, 1, 253, 61, 177, 45, 210, 164, 244, 161, 171, 215, 248, 231, 86, 31, 181, 75, 128, 25, 231, 186, 32, 9, 229, 75, 159, 203, 233, 159, 107, 236, 215, 119, 246, 234, 147, 45, 101, 207, 6, 245, 52, 95, 226, 118, 188, 7, 245, 205, 250, 118, 177, 246, 151, 189, 250, 27, 109, 168, 185, 112, 93, 244, 52, 22, 240, 220, 171, 158, 24, 128, 84, 247, 167, 213, 153, 45, 199, 70, 71, 139, 246, 169, 68, 182, 156, 131, 239, 217, 27, 0, 129, 66, 165, 197, 233, 175, 39, 36, 241, 10, 120, 138, 215, 253, 52, 205, 168, 22, 18, 1, 43, 19, 28, 15, 119, 65, 139, 89, 127, 43, 243, 255, 21, 105, 242, 151, 147, 159, 24, 187, 229, 116, 100, 89, 218, 251, 116, 116, 232, 239, 191, 35, 237, 62, 47, 236, 191, 124, 61, 184, 212, 186, 91, 137, 109, 60, 21, 137, 243, 8, 181, 210, 76, 70, 154, 222, 90, 43, 84, 148, 153, 125, 129, 139, 217, 97, 218, 113, 3, 62, 23, 146, 48, 0, 39, 94, 3, 102, 53, 222, 225, 247, 217, 191, 153, 180, 234, 229, 111, 113, 50, 212, 160, 229, 107, 111, 244, 16, 244, 83, 187, 134, 31, 177, 170, 241, 47, 69, 54, 216, 85, 81, 192, 95, 62, 90, 119, 43, 181, 61, 255, 119, 119, 183, 47, 95, 30, 94, 111, 110, 174, 119, 251, 253, 101, 14, 103, 203, 108, 132, 203, 155, 67, 250, 201, 155, 124, 244, 25, 210, 223, 220, 108, 224, 146, 92, 94, 245, 222, 223, 221, 238, 174, 162, 154, 186, 14, 71, 253, 241, 182, 237, 240, 167, 43, 198, 62, 82, 250, 218, 245, 101, 149, 187, 166, 164, 167, 97, 118, 120, 177, 159, 245, 56, 174, 159, 24, 251, 78, 149, 123, 29, 66, 250, 40, 104, 13, 79, 244, 95, 238, 48, 53, 246, 152, 182, 172, 245, 104, 242, 247, 188, 148, 235, 221, 63, 64, 50, 18, 252, 37, 88, 162, 147, 81, 22, 91, 209, 165, 168, 223, 95, 167, 216, 120, 203, 142, 208, 39, 101, 198, 97, 174, 100, 37, 222, 83, 22, 17, 128, 0, 96, 252, 31, 156, 75, 17, 190, 187, 245, 157, 148, 127, 17, 30, 4, 44, 230, 190, 114, 241, 227, 26, 56, 246, 91, 7, 253, 248, 245, 255, 85, 171, 51, 27, 122, 47, 58, 213, 55, 0, 20, 96, 156, 1, 44, 141, 43, 27, 176, 161, 160, 101, 206, 106, 136, 164, 176, 35, 14, 169, 23, 39, 152, 34, 181, 175, 103, 99, 169, 139, 154, 95, 34, 197, 72, 212, 196, 242, 26, 69, 149, 110, 74, 237, 197, 181, 234, 13, 208, 172, 167, 74, 139, 188, 115, 92, 169, 7, 147, 238, 187, 160, 60, 122, 181, 226, 15, 47, 148, 26, 101, 13, 165, 153, 105, 33, 21, 209, 10, 90, 226, 201, 211, 116, 97, 222, 99, 158, 72, 58, 45, 213, 122, 255, 15, 136, 253, 240, 134, 132, 229, 41, 7, 146, 194, 153, 158, 152, 115, 24, 167, 170, 66, 73, 115, 210, 103, 22, 122, 140, 143, 32, 119, 93, 123, 166, 160, 38, 133, 197, 161, 85, 174, 100, 79, 42, 48, 203, 237, 99, 202, 89, 244, 232, 84, 143, 32, 199, 232, 214, 4, 48, 154, 224, 112, 50, 142, 159, 2, 100, 69, 234, 237, 88, 185, 51, 122, 163, 165, 64, 16, 203, 251, 54, 222, 196, 140, 106, 71, 163, 73, 108, 49, 142, 30, 54, 147, 214, 55, 245, 7, 4, 203, 132, 119, 146, 216, 60, 25, 235, 86, 239, 100, 237, 10, 89, 152, 163, 3, 226, 161, 70, 242, 180, 45, 183, 24, 38, 237, 136, 81, 180, 33, 68, 196, 159, 222, 38, 10, 168, 6, 72, 25, 224, 75, 14, 196, 32, 178, 240, 38, 92, 6, 27, 242, 215, 132, 75, 42, 90, 192, 50, 213, 49, 123, 148, 124, 218, 51, 245, 158, 132, 130, 73, 167, 76, 88, 54, 116, 254, 130, 68, 153, 160, 115, 161, 5, 16, 251, 8, 193, 244, 68, 44, 101, 105, 229, 1, 209, 179, 14, 175, 169, 47, 5, 216, 50, 149, 149, 178, 175, 218, 9, 160, 94, 87, 5, 7, 82, 181, 158, 87, 237, 164, 204, 116, 222, 76, 124, 236, 79, 18, 200, 111, 10, 241, 161, 232, 187, 150, 40, 237, 160, 168, 128, 26, 227, 220, 146, 250, 108, 19, 146, 114, 8, 9, 114, 33, 174, 38, 54, 249, 208, 18, 6, 21, 48, 190, 194, 153, 42, 108, 242, 155, 162, 52, 248, 10, 230, 105, 133, 78, 79, 238, 94, 132, 86, 128, 200, 161, 126, 169, 104, 59, 88, 196, 58, 3, 7, 45, 97, 28, 128, 210, 58, 82, 51, 148, 229, 250, 32, 1, 240, 200, 8, 65, 171, 208, 122, 144, 161, 43, 57, 160, 151, 105, 148, 173, 62, 232, 26, 180, 149, 17, 130, 230, 161, 46, 89, 2, 44, 201, 65, 71, 154, 224, 201, 157, 63, 151, 24, 97, 91, 240, 18, 250, 145, 124, 33, 17, 118, 91, 82, 113, 105, 177, 90, 5, 244, 10, 150, 0, 205, 74, 106, 4, 219, 64, 42, 241, 115, 139, 195, 190, 215, 108, 174, 129, 139, 22, 245, 93, 201, 56, 112, 225, 135, 243, 54, 88, 8, 218, 10, 210, 114, 157, 52, 154, 165, 241, 61, 148, 7, 59, 16, 20, 203, 212, 79, 237, 9, 22, 201, 8, 193, 186, 96, 31, 46, 130, 110, 160, 117, 63, 42, 8, 182, 7, 235, 1, 0, 120, 236, 15, 22, 228, 250, 19, 120, 31, 54, 181, 112, 33, 21, 173, 7, 237, 131, 254, 60, 181, 81, 142, 158, 88, 117, 49, 178, 46, 95, 177, 96, 15, 12, 239, 9, 61, 106, 179, 82, 107, 197, 59, 191, 4, 183, 108, 56, 229, 163, 232, 224, 81, 202, 251, 210, 126, 109, 154, 234, 227, 213, 204, 155, 196, 237, 30, 174, 150, 254, 152, 3, 221, 92, 58, 191, 230, 147, 125, 167, 231, 249, 162, 21, 187, 145, 0, 112, 139, 10, 181, 19, 32, 200, 119, 45, 81, 128, 126, 87, 87, 45, 10, 12, 114, 52, 151, 233, 98, 59, 10, 168, 115, 181, 14, 162, 141, 126, 156, 105, 103, 105, 101, 34, 179, 39, 196, 155, 73, 128, 94, 114, 84, 125, 172, 115, 146, 246, 196, 193, 26, 43, 166, 136, 109, 162, 97, 226, 174, 180, 82, 184, 173, 68, 110, 67, 58, 106, 103, 174, 165, 111, 83, 176, 102, 1, 197, 108, 245, 88, 54, 194, 119, 182, 231, 41, 94, 21, 179, 65, 64, 237, 23, 59, 155, 107, 236, 205, 42, 234, 180, 176, 220, 39, 241, 136, 99, 174, 139, 199, 160, 214, 122, 137, 16, 212, 94, 76, 25, 32, 49, 212, 11, 156, 65, 187, 219, 134, 3, 130, 53, 144, 154, 203, 224, 152, 15, 167, 102, 148, 140, 64, 94, 182, 199, 179, 7, 206, 152, 33, 4, 244, 8, 117, 21, 6, 172, 49, 183, 234, 130, 112, 4, 77, 73, 6, 214, 5, 0, 106, 27, 148, 39, 179, 118, 44, 203, 74, 127, 105, 206, 148, 237, 14, 66, 248, 233, 207, 156, 24, 233, 82, 93, 141, 134, 236, 75, 189, 195, 24, 116, 19, 91, 236, 159, 235, 122, 65, 48, 156, 88, 203, 65, 113, 17, 84, 26, 177, 1, 74, 55, 251, 27, 4, 51, 47, 74, 9, 22, 211, 219, 237, 209, 18, 147, 136, 117, 89, 44, 65, 192, 88, 240, 83, 218, 111, 114, 193, 50, 150, 187, 63, 234, 179, 217, 54, 200, 170, 54, 53, 216, 37, 28, 164, 117, 83, 163, 218, 179, 36, 244, 3, 228, 16, 243, 208, 235, 82, 140, 36, 125, 108, 247, 174, 26, 133, 96, 241, 193, 225, 112, 1, 217, 148, 216, 103, 151, 227, 140, 11, 121, 91, 164, 32, 109, 147, 53, 128, 43, 151, 245, 135, 133, 188, 111, 205, 2, 191, 238, 66, 210, 177, 20, 225, 240, 193, 118, 196, 242, 164, 90, 194, 159, 18, 40, 108, 170, 70, 234, 54, 120, 10, 109, 47, 182, 15, 171, 110, 135, 230, 244, 60, 25, 168, 51, 246, 212, 211, 66, 134, 65, 77, 72, 183, 1, 97, 181, 245, 251, 211, 211, 203, 140, 94, 115, 201, 91, 36, 216, 138, 143, 143, 102, 119, 232, 21, 250, 106, 231, 131, 160, 225, 52, 175, 92, 168, 14, 7, 123, 200, 212, 134, 35, 57, 144, 216, 207, 143, 211, 33, 204, 14, 76, 33, 129, 153, 123, 69, 91, 137, 137, 146, 62, 117, 162, 205, 96, 130, 93, 67, 109, 28, 28, 215, 21, 64, 76, 76, 232, 31, 243, 7, 136, 40, 143, 82, 84, 76, 19, 169, 228, 18, 145, 0, 88, 242, 190, 233, 157, 212, 77, 43, 244, 101, 206, 104, 52, 177, 222, 206, 55, 230, 97, 165, 175, 118, 80, 238, 84, 107, 128, 151, 70, 248, 234, 1, 134, 134, 96, 29, 226, 22, 65, 140, 147, 121, 181, 97, 126, 237, 157, 125, 110, 165, 126, 97, 67, 240, 250, 76, 101, 196, 156, 34, 244, 213, 74, 119, 118, 209, 6, 172, 199, 108, 228, 169, 191, 246, 198, 201, 88, 176, 98, 99, 84, 133, 163, 3, 116, 118, 134, 69, 71, 77, 13, 128, 50, 116, 176, 25, 225, 176, 89, 230, 158, 20, 114, 76, 30, 4, 52, 0, 206, 234, 206, 157, 111, 229, 221, 234, 159, 92, 224, 45, 18, 200, 131, 62, 253, 66, 180, 68, 248, 244, 8, 180, 169, 171, 236, 113, 207, 203, 18, 64, 43, 1, 191, 184, 161, 160, 54, 151, 193, 98, 181, 97, 166, 218, 92, 212, 185, 114, 197, 114, 140, 229, 209, 186, 48, 238, 192, 18, 237, 21, 156, 81, 27, 227, 115, 206, 110, 206, 191, 61, 30, 49, 119, 116, 108, 169, 51, 56, 243, 10, 157, 143, 144, 104, 16, 206, 168, 199, 113, 43, 213, 249, 37, 241, 45, 108, 198, 6, 178, 65, 142, 172, 5, 53, 2, 106, 99, 180, 146, 234, 172, 201, 109, 28, 93, 78, 189, 255, 102, 18, 89, 224, 48, 236, 16, 140, 84, 200, 82, 203, 204, 237, 186, 236, 42, 39, 100, 46, 151, 204, 129, 191, 76, 37, 98, 78, 201, 104, 198, 190, 88, 229, 33, 214, 56, 85, 8, 55, 38, 77, 224, 248, 9, 248, 35, 184, 103, 22, 177, 37, 39, 177, 100, 225, 76, 237, 14, 19, 143, 115, 38, 192, 155, 135, 16, 255, 172, 237, 11, 128, 62, 197, 50, 13, 150, 143, 24, 46, 174, 91, 42, 28, 130, 17, 57, 171, 215, 171, 68, 224, 151, 193, 73, 51, 82, 18, 46, 128, 52, 46, 72, 213, 1, 20, 204, 214, 130, 25, 51, 93, 170, 194, 222, 75, 162, 18, 44, 117, 176, 212, 39, 37, 169, 60, 73, 234, 66, 42, 138, 185, 122, 0, 45, 120, 124, 58, 130, 243, 40, 1, 250, 23, 244, 16, 232, 119, 96, 113, 190, 79, 184, 74, 210, 64, 95, 129, 190, 119, 210, 170, 110, 147, 178, 99, 216, 46, 111, 240, 53, 1, 218, 171, 98, 128, 199, 182, 58, 197, 161, 240, 220, 200, 252, 96, 25, 209, 101, 71, 150, 74, 214, 31, 167, 92, 184, 64, 176, 132, 16, 68, 188, 74, 163, 162, 45, 78, 236, 22, 169, 95, 144, 117, 136, 229, 70, 59, 102, 90, 229, 9, 193, 144, 143, 74, 84, 22, 115, 95, 132, 79, 18, 77, 182, 91, 49, 97, 230, 136, 102, 166, 145, 45, 85, 160, 202, 5, 191, 144, 59, 19, 24, 81, 96, 26, 177, 121, 118, 200, 221, 194, 144, 190, 144, 29, 210, 30, 206, 3, 216, 142, 14, 2, 214, 186, 128, 117, 37, 54, 213, 220, 117, 58, 71, 181, 62, 158, 181, 35, 176, 73, 200, 18, 177, 9, 137, 186, 89, 26, 43, 137, 21, 189, 41, 159, 227, 62, 207, 237, 120, 39, 100, 31, 193, 37, 144, 103, 139, 6, 26, 225, 174, 157, 190, 18, 103, 115, 255, 9, 225, 136, 208, 41, 32, 190, 54, 132, 191, 104, 173, 5, 69, 74, 146, 110, 226, 12, 94, 15, 231, 181, 129, 160, 60, 106, 183, 147, 46, 16, 128, 232, 228, 51, 102, 177, 16, 6, 160, 192, 67, 66, 17, 96, 24, 220, 3, 3, 4, 128, 205, 224, 68, 160, 25, 247, 56, 238, 113, 63, 208, 128, 64, 8, 134, 6, 20, 184, 176, 173, 1, 131, 56, 172, 67, 241, 212, 6, 6, 204, 166, 191, 129, 9, 65, 60, 108, 96, 65, 187, 177, 27, 8, 8, 181, 239, 27, 222, 130, 4, 187, 213, 192, 129, 34, 231, 250, 222, 70, 52, 54, 112, 65, 229, 151, 27, 120, 120, 198, 156, 177, 102, 192, 139, 99, 182, 181, 23, 108, 22, 220, 71, 252, 82, 226, 57, 144, 27, 207, 195, 106, 250, 152, 100, 129, 71, 189, 127, 214, 111, 86, 235, 225, 58, 243, 78, 74, 110, 57, 6, 234, 219, 101, 49, 51, 121, 10, 153, 79, 196, 122, 185, 200, 46, 31, 77, 214, 123, 21, 26, 154, 133, 40, 29, 155, 190, 237, 177, 126, 32, 37, 199, 49, 24, 162, 102, 189, 188, 244, 122, 245, 187, 246, 125, 187, 132, 144, 209, 155, 166, 231, 66, 123, 127, 99, 203, 7, 61, 204, 146, 192, 156, 169, 38, 60, 16, 68, 115, 117, 105, 36, 23, 88, 250, 250, 120, 212, 234, 79, 6, 32, 64, 68, 73, 246, 125, 134, 246, 136, 106, 166, 66, 32, 85, 29, 79, 34, 183, 38, 158, 85, 28, 1, 217, 201, 147, 189, 3, 37, 199, 71, 34, 132, 165, 244, 217, 195, 231, 27, 228, 65, 41, 200, 206, 72, 118, 104, 152, 207, 93, 209, 159, 229, 100, 121, 201, 183, 52, 133, 2, 248, 70, 91, 4, 30, 47, 227, 50, 95, 30, 194, 71, 163, 105, 208, 2, 196, 72, 59, 180, 5, 245, 198, 227, 16, 11, 178, 128, 149, 97, 8, 212, 35, 163, 113, 193, 162, 254, 164, 0, 14, 114, 114, 209, 140, 223, 102, 97, 51, 162, 21, 255, 116, 74, 109, 193, 221, 199, 90, 185, 3, 181, 207, 22, 99, 197, 193, 238, 144, 86, 22, 152, 35, 95, 23, 124, 229, 180, 146, 49, 10, 139, 175, 163, 245, 232, 129, 206, 177, 41, 24, 10, 40, 96, 115, 4, 236, 15, 4, 120, 0, 27, 166, 74, 227, 227, 94, 191, 113, 30, 51, 240, 196, 11, 114, 122, 115, 179, 35, 192, 15, 127, 2, 8, 36, 136, 96, 66, 16, 242, 46, 34, 66, 153, 203, 123, 136, 13, 131, 112, 230, 33, 49, 227, 223, 143, 162, 136, 38, 134, 88, 226, 136, 39, 129, 68, 146, 72, 38, 133, 84, 210, 72, 231, 125, 62, 64, 74, 6, 50, 62, 36, 147, 249, 80, 100, 33, 39, 27, 5, 57, 40, 201, 37, 143, 124, 104, 10, 80, 177, 128, 66, 22, 162, 230, 31, 104, 88, 68, 17, 197, 148, 240, 17, 165, 148, 241, 45, 135, 216, 76, 29, 167, 105, 230, 33, 91, 248, 28, 11, 95, 114, 152, 118, 195, 225, 51, 99, 192, 38, 118, 241, 2, 94, 66, 35, 95, 176, 149, 11, 252, 206, 115, 104, 163, 147, 255, 194, 43, 24, 135, 131, 124, 71, 15, 87, 248, 30, 45, 31, 179, 3, 29, 46, 62, 225, 42, 215, 140, 137, 176, 16, 2, 241, 128, 71, 232, 25, 164, 159, 1, 126, 96, 49, 99, 208, 196, 45, 110, 112, 19, 3, 79, 248, 139, 91, 128, 84, 254, 126, 1, 74, 74, 125, 92, 42, 40, 36, 88, 9, 255, 51, 228, 73, 248, 211, 136, 111, 158, 69, 69, 70, 199, 198, 116, 43, 131, 124, 30, 39, 222, 137, 51, 61, 109, 140, 117, 92, 175, 49, 149, 75, 161, 210, 154, 6, 145, 193, 244, 217, 103, 115, 184, 60, 190, 64, 40, 18, 75, 164, 189, 246, 191, 64, 174, 80, 170, 212, 26, 173, 206, 210, 202, 218, 198, 214, 142, 212, 119, 187, 24, 135, 142, 28, 59, 113, 234, 204, 185, 11, 151, 174, 92, 187, 1, 0, 251, 106, 183, 12, 48, 4, 10, 131, 35, 144, 40, 52, 6, 139, 195, 19, 106, 209, 154, 72, 34, 83, 168, 52, 58, 131, 201, 234, 175, 73, 247, 236, 87, 196, 225, 242, 248, 2, 161, 72, 44, 145, 202, 228, 10, 165, 74, 173, 209, 234, 244, 134, 122, 27, 77, 102, 75, 7, 14, 171, 172, 186, 173, 157, 189, 131, 163, 147, 179, 75, 159, 237, 88, 179, 110, 195, 166, 109, 171, 190, 84, 235, 230, 238, 225, 233, 229, 237, 227, 235, 231, 111, 36, 0, 16, 4, 134, 64, 97, 112, 4, 18, 133, 198, 96, 113, 120, 2, 113, 130, 112, 95, 140, 206, 248, 127, 221, 243, 248, 2, 161, 72, 44, 145, 202, 228, 10, 165, 74, 173, 113, 76, 116, 114, 118, 113, 117, 115, 247, 240, 244, 34, 16, 73, 100, 10, 149, 70, 103, 48, 89, 108, 14, 151, 199, 23, 8, 69, 98, 137, 84, 38, 87, 40, 85, 106, 141, 86, 7, 168, 55, 24, 77, 102, 139, 213, 102, 119, 56, 93, 110, 143, 63, 68, 152, 80, 198, 133, 84, 218, 51, 190, 157, 118, 130, 32, 74, 178, 162, 106, 186, 97, 90, 182, 227, 86, 170, 181, 122, 163, 217, 106, 119, 186, 189, 254, 96, 56, 26, 79, 166, 179, 249, 98, 185, 90, 111, 182, 59, 109, 218, 183, 174, 224, 117, 25, 243, 143, 14, 157, 198, 73, 48, 66, 178, 6, 239, 252, 123, 107, 192, 224, 190, 190, 3, 191, 206, 131, 135, 143, 30, 63, 241, 210, 155, 195, 103, 207, 95, 188, 132, 85, 171, 80, 129, 115, 170, 160, 21, 169, 145, 37, 71, 174, 183, 103, 175, 223, 0, 32, 4, 35, 40, 134, 19, 36, 69, 51, 44, 199, 11, 162, 36, 43, 170, 166, 27, 166, 101, 59, 174, 231, 7, 97, 20, 39, 105, 150, 23, 101, 85, 55, 109, 215, 15, 227, 52, 47, 235, 118, 183, 63, 28, 79, 231, 203, 245, 182, 88, 174, 214, 155, 237, 110, 127, 0, 64, 8, 70, 80, 12, 39, 72, 138, 102, 88, 142, 23, 68, 73, 86, 84, 77, 55, 76, 203, 118, 92, 207, 15, 194, 40, 78, 210, 44, 47, 202, 170, 110, 142, 167, 243, 229, 122, 187, 63, 158, 47, 2, 145, 68, 166, 80, 105, 116, 6, 147, 197, 230, 112, 121, 124, 129, 80, 36, 150, 72, 101, 114, 133, 82, 165, 214, 104, 117, 128, 122, 131, 209, 100, 182, 88, 109, 118, 135, 211, 229, 246, 248, 35, 177, 168, 121, 100, 245, 155, 255, 152, 23, 57, 34, 98, 18, 242, 164, 20, 200, 40, 82, 162, 76, 133, 42, 53, 234, 138, 170, 233, 134, 105, 217, 142, 235, 249, 65, 24, 197, 73, 154, 229, 69, 89, 213, 77, 219, 45, 87, 70, 92, 111, 182, 59, 217, 31, 28, 30, 29, 159, 156, 158, 157, 95, 92, 94, 93, 223, 0, 32, 4, 35, 40, 134, 19, 36, 69, 51, 44, 199, 11, 162, 36, 43, 170, 166, 27, 166, 101, 59, 174, 231, 7, 97, 20, 39, 105, 150, 23, 101, 85, 55, 109, 215, 15, 227, 52, 47, 235, 118, 183, 63, 28, 79, 231, 203, 245, 118, 252, 9, 163, 78, 156, 124, 96, 44, 227, 204, 169, 3, 166, 77, 100, 176, 235, 188, 243, 39, 239, 55, 155, 133, 191, 190, 232, 226, 75, 126, 35, 236, 231, 237, 227, 187, 118, 217, 229, 87, 152, 176, 174, 186, 250, 154, 107, 175, 155, 108, 95, 188, 113, 107, 210, 180, 9, 44, 150, 131, 96, 33, 63, 86, 2, 89, 61, 61, 157, 214, 59, 119, 168, 252, 161, 116, 244, 128, 205, 242, 22, 190, 202, 253, 188, 15, 74, 182, 85, 202, 237, 215, 224, 79, 122, 148, 255, 211, 105, 195, 211, 143, 187, 128, 84, 217, 31, 224, 14, 201, 74, 254, 248, 239, 6, 18, 17, 242, 155, 232, 63, 230, 236, 25, 34, 122, 176, 90, 90, 77, 122, 145, 52, 220, 141, 216, 29, 229, 136, 197, 161, 173, 209, 142, 12, 107, 132, 95, 234, 184, 199, 242, 126, 14, 121, 102, 169, 245, 88, 147, 149, 14, 223, 204, 160, 217, 67, 134, 250, 230, 176, 110, 213, 240, 231, 228, 41, 208, 99, 108, 85, 156, 66, 150, 90, 112, 98, 135, 30, 142, 218, 211, 9, 125, 52, 155, 56, 81, 182, 200, 167, 191, 145, 17, 127, 215, 81, 102, 71, 71, 237, 153, 226, 163, 249, 150, 243, 67, 230, 136, 191, 116, 153, 192, 85, 109, 42, 98, 136, 226, 88, 100, 131, 10, 240, 210, 101, 69, 96, 130, 243, 16, 201, 112, 140, 193, 57, 115, 224, 161, 203, 151, 224, 220, 48, 35, 8, 194, 195, 31, 13, 68, 103, 195, 211, 249, 168, 238, 54, 142, 206, 96, 184, 63, 138, 59, 186, 40, 254, 95, 61, 170, 9, 198, 141, 14, 113, 56, 212, 247, 18, 199, 233, 195, 193, 205, 16, 249, 48, 220, 141, 98, 153, 204, 208, 99, 74, 195, 178, 146, 86, 36, 167, 144, 231, 246, 187, 122, 55, 25, 103, 201, 111, 198, 50, 11, 15, 178, 8, 249, 165, 160, 172, 201, 86, 113, 6, 245, 208, 101, 124, 235, 206, 238, 248, 159, 173, 107, 101, 91, 157, 10, 246, 88, 114, 97, 83, 41, 43, 134, 75, 152, 30, 171, 108, 216, 177, 173, 46, 231, 73, 91, 169, 215, 28, 41, 215, 112, 119, 163, 186, 249, 198, 57, 108, 58, 132, 195, 5, 53, 213, 89, 224, 6, 240, 22, 52, 166, 186, 11, 224, 93, 118, 77, 165, 21, 88, 80, 163, 102, 133, 159, 164, 147, 151, 225, 43, 116, 242, 118, 226, 211, 227, 189, 102, 124, 71, 230, 110, 152, 237, 47, 78, 26, 246, 241, 49, 94, 140, 207, 137, 127, 253, 2, 58, 86, 35, 255, 224, 159, 71, 116, 187, 205, 108, 43, 75, 25, 50, 20, 180, 224, 99, 42, 195, 98, 17, 226, 172, 47, 10, 174, 119, 96, 208, 49, 251, 169, 141, 119, 129, 70, 251, 19, 217, 222, 102, 149, 240, 97, 234, 201, 246, 129, 247, 53, 117, 112, 184, 228, 2, 21, 128, 31, 255, 144, 179, 25, 213, 139, 212, 81, 110, 222, 40, 77, 35, 202, 138, 231, 220, 93, 149, 46, 155, 1, 29, 237, 75, 119, 23, 156, 80, 215, 73, 15, 92, 123, 77, 121, 47, 237, 71, 247, 79, 84, 72, 5, 106, 158, 104, 245, 8, 101, 127, 83, 136, 208, 56, 10, 198, 168, 139, 83, 9, 18, 8, 82, 8, 174, 130, 216, 252, 6, 65, 46, 194, 146, 15, 80, 137, 162, 147, 176, 70, 27, 49, 43, 135, 57, 111, 168, 221, 44, 243, 247, 252, 91, 198, 39, 111, 212, 169, 14, 234, 93, 223, 148, 143, 17, 147, 191, 56, 194, 151, 152, 94, 18, 75, 247, 180, 88, 60, 110, 239, 177, 122, 182, 64, 244, 32, 22, 97, 130, 152, 11, 162, 55, 244, 53, 148, 220, 110, 36, 58, 232, 207, 19, 131, 156, 240, 27, 110, 5, 18, 130, 183, 32, 85, 235, 237, 208, 156, 57, 218, 229, 51, 216, 122, 141, 179, 96, 38, 131, 179, 233, 46, 168, 239, 196, 26, 183, 224, 247, 174, 167, 123, 137, 85, 19, 43, 112, 169, 212, 31, 141, 254, 170, 74, 145, 103, 0, 226, 64, 67, 17, 225, 186, 124, 155, 232, 229, 29, 6, 35, 203, 244, 210, 81, 100, 217, 48, 128, 41, 53, 81, 180, 181, 15, 201, 32, 68, 41, 181, 133, 8, 101, 195, 2, 8, 97, 156, 114, 27, 60, 44, 133, 49, 198, 152, 16, 66, 8, 33, 132, 144, 165, 101, 50, 198, 216, 209, 1, 17, 38, 148, 113, 145, 101, 35, 0, 34, 76, 40, 227, 98, 136, 82, 74, 41, 165, 148, 63, 78, 54, 128, 246, 49, 12, 64, 132, 9, 101, 92, 12, 17, 222, 112, 111, 40, 92, 3, 174, 183, 203, 47, 144, 59, 124, 29, 206, 46, 163, 39, 126, 29, 244, 229, 99, 224, 160, 95, 110, 135, 183, 55, 212, 199, 249, 28, 34, 29, 252, 28, 109, 198, 55, 144, 233, 150, 180, 145, 198, 173, 219, 81, 79, 49, 169, 207, 40, 197, 185, 126, 186, 184, 183, 157, 68, 175, 38, 173, 116, 237, 69, 45, 103, 41, 202, 93, 243, 43, 5, 223, 254, 208, 75, 175, 131, 29, 86, 199, 104, 252, 241, 76, 186, 228, 129, 233, 200, 39, 88, 233, 211, 238, 127, 54, 180, 146, 217, 222, 126, 134, 37, 239, 159, 191, 184, 45, 46, 118, 161, 176, 131, 195, 251, 6, 42, 174, 225, 99, 115, 237, 255, 251, 233, 217, 191, 254, 242, 13, 127, 230, 191, 65, 188, 147, 140, 249, 186, 34, 106, 221, 137, 207, 176, 190, 253, 178, 144, 218, 68, 38, 67, 31, 125, 167, 231, 15, 249, 32, 227, 221, 7, 205, 159, 153, 230, 185, 126, 218, 71, 225, 132, 242, 112, 205, 90, 113, 94, 57, 142, 157, 253, 140, 167, 105, 191, 249, 17, 41, 122, 96, 12, 51, 45, 21, 254, 63, 196, 127, 46, 34, 76, 40, 227, 66, 58, 221, 157, 118, 118, 231, 71, 21, 116, 61, 1, 46, 108, 233, 214, 200, 141, 168, 179, 29, 14, 79, 108, 2, 244, 248, 94, 161, 253, 210, 242, 39, 50, 189, 210, 251, 239, 255, 243, 169, 21, 197, 238, 87, 94, 51, 254, 251, 223, 175, 87, 117, 211, 55, 29, 28, 11, 174, 196, 7, 7, 239, 252, 242, 209, 243, 247, 247, 239, 221, 97, 247, 67, 15, 143, 103, 73, 94, 253, 232, 210, 48, 109, 236, 8, 16, 97, 66, 25, 23, 210, 113, 149, 54, 177, 233, 0, 17, 38, 148, 113, 33, 29, 87, 105, 19, 155, 1, 16, 97, 66, 153, 144, 142, 171, 180, 137, 205, 36, 76, 40, 227, 66, 58, 174, 210, 38, 54, 15, 64, 132, 9, 101, 92, 72, 199, 85, 218, 196, 230, 5, 136, 48, 161, 140, 11, 233, 184, 74, 155, 205, 126, 121, 21, 124, 42, 61, 134, 10, 17, 97, 66, 25, 23, 210, 113, 149, 30, 230, 203, 223, 114, 248, 52, 0, 68, 152, 80, 198, 133, 116, 92, 165, 77, 108, 14, 64, 132, 9, 101, 92, 72, 199, 85, 218, 196, 230, 2, 68, 152, 80, 198, 133, 116, 92, 165, 77, 191, 163, 2, 64, 132, 9, 101, 92, 72, 199, 85, 218, 196, 38, 2, 68, 23, 30, 19, 159, 3, 0, 17, 38, 148, 113, 33, 29, 87, 105, 19, 155, 23, 32, 194, 132, 50, 46, 164, 227, 42, 109, 98, 179, 0, 34, 76, 40, 27, 252, 75, 133, 229, 214, 80, 101, 108, 255, 156, 248, 40, 165, 148, 214, 90, 107, 173, 171, 229, 208, 90, 107, 173, 181, 54, 198, 24, 99, 76, 13, 15, 99, 140, 49, 198, 24, 219, 236, 209, 39, 148, 113, 65, 152, 216, 86, 137, 241, 240, 45, 12, 219, 124, 173, 103, 210, 57, 248, 152, 254, 255, 151, 77, 158, 3, 8, 141, 209, 71, 89, 0, 206, 236, 150, 31, 72, 41, 140, 28, 179, 131, 202, 75, 180, 211, 109, 101, 142, 41, 18, 229, 136, 92, 182, 138, 2, 1, 113, 65, 14, 254, 101, 103, 23, 72, 167, 55, 216, 55, 57, 119, 168, 82, 127, 236, 236, 215, 117, 71, 14, 239, 78, 252, 51, 200, 106, 45, 180, 149, 137, 164, 52, 13, 248, 29, 156, 60, 147, 169, 117, 96, 27, 62, 180, 22, 236, 98, 50, 220, 119, 90, 238, 226, 137, 125, 103, 209, 189, 133, 20, 4, 182, 144, 147, 253, 175, 22, 162, 234, 212, 158, 61, 239, 50, 29, 95, 75, 183, 188, 115, 247, 174, 125, 7, 15, 110, 215, 157, 76, 9, 213, 19, 142, 229, 128, 9, 119, 125, 89, 63, 161, 92, 181, 142, 228, 133, 148, 5, 130, 219, 181, 41, 86, 78, 224, 101, 59, 145, 166, 67, 101, 103, 59, 79, 76, 117, 186, 24, 39, 165, 85, 25, 67, 70, 102, 103, 1, 35, 35, 236, 191, 249, 213, 208, 72, 229, 103, 172, 145, 123, 139, 170, 244, 22, 230, 147, 161, 2, 17, 74, 241, 202, 242, 239, 65, 33, 56, 85, 161, 214, 40, 108, 208, 218, 232, 157, 155, 157, 246, 206, 182, 220, 222, 208, 12, 161, 4, 3, 178, 119, 131, 245, 255, 72, 85, 193, 244, 104, 241, 214, 155, 51, 123, 173, 113, 86, 222, 162, 168, 17, 84, 81, 241, 232, 43, 4, 61, 27, 90, 65, 215, 28, 244, 69, 247, 199, 238, 111, 93, 244, 69, 7, 145, 91, 22, 111, 59, 254, 155, 118, 90, 136, 95, 166, 149, 141, 252, 180, 226, 224, 237, 10, 137, 224, 10, 193, 227, 202, 27, 28, 188, 56, 130, 227, 191, 226, 139, 107, 166, 16, 160, 32, 60, 80, 142, 128, 43, 96, 141, 252, 53, 2, 32, 87, 143, 32, 106, 228, 19, 250, 52, 83, 73, 44, 219, 251, 68, 251, 255, 34, 181, 142, 205, 143, 215, 145, 187, 40, 44, 120, 106, 190, 47, 140, 214, 53, 244, 203, 131, 50, 26, 175, 60, 71, 144, 199, 250, 253, 168, 17, 106, 158, 222, 58, 87, 176, 178, 14, 5, 195, 68, 119, 157, 74, 8, 158, 59, 160, 54, 60, 113, 130, 101, 183, 156, 56, 121, 146, 253, 198, 54, 121, 2, 44, 72, 69, 152, 30, 184, 182, 0)
+font_name = "Open Sans"
+style_name = "SemiBold"
+font_weight = 600
+cache/0/16/0/ascent = 18.0
+cache/0/16/0/descent = 5.0
+cache/0/16/0/underline_position = 1.60938
+cache/0/16/0/underline_thickness = 0.796875
+cache/0/16/0/scale = 1.0
+cache/0/16/0/textures/0/offsets = PackedInt32Array(253, 0, 3, 16, 253, 16, 3, 13, 255, 29, 1, 18, 253, 47, 3, 16, 255, 63, 1, 19, 248, 82, 8, 20, 111, 102, 145, 13, 104, 115, 152, 16, 9, 131, 247, 19)
+cache/0/16/0/textures/0/image = SubResource("Image_4lhx8")
+cache/0/16/0/glyphs/39/advance = Vector2(11.75, 16.0938)
+cache/0/16/0/glyphs/39/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/39/size = Vector2(12, 14)
+cache/0/16/0/glyphs/39/uv_rect = Rect2(1, 1, 12, 14)
+cache/0/16/0/glyphs/39/texture_idx = 0
+cache/0/16/0/glyphs/82/advance = Vector2(9.78125, 16.0938)
+cache/0/16/0/glyphs/82/offset = Vector2(-1, -10)
+cache/0/16/0/glyphs/82/size = Vector2(11, 11)
+cache/0/16/0/glyphs/82/uv_rect = Rect2(15, 1, 11, 11)
+cache/0/16/0/glyphs/82/texture_idx = 0
+cache/0/16/0/glyphs/70/advance = Vector2(7.92188, 16.0938)
+cache/0/16/0/glyphs/70/offset = Vector2(-1, -10)
+cache/0/16/0/glyphs/70/size = Vector2(10, 11)
+cache/0/16/0/glyphs/70/uv_rect = Rect2(28, 1, 10, 11)
+cache/0/16/0/glyphs/70/texture_idx = 0
+cache/0/16/0/glyphs/78/advance = Vector2(9.15625, 16.0938)
+cache/0/16/0/glyphs/78/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/78/size = Vector2(11, 14)
+cache/0/16/0/glyphs/78/uv_rect = Rect2(40, 1, 11, 14)
+cache/0/16/0/glyphs/78/texture_idx = 0
+cache/0/16/0/glyphs/3/advance = Vector2(4.15625, 16.0938)
+cache/0/16/0/glyphs/3/offset = Vector2(-1, -1)
+cache/0/16/0/glyphs/3/size = Vector2(2, 2)
+cache/0/16/0/glyphs/3/uv_rect = Rect2(53, 1, 2, 2)
+cache/0/16/0/glyphs/3/texture_idx = 0
+cache/0/16/0/glyphs/51/advance = Vector2(9.84375, 16.0938)
+cache/0/16/0/glyphs/51/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/51/size = Vector2(11, 14)
+cache/0/16/0/glyphs/51/uv_rect = Rect2(57, 1, 11, 14)
+cache/0/16/0/glyphs/51/texture_idx = 0
+cache/0/16/0/glyphs/86/advance = Vector2(7.79688, 16.0938)
+cache/0/16/0/glyphs/86/offset = Vector2(-1, -10)
+cache/0/16/0/glyphs/86/size = Vector2(10, 11)
+cache/0/16/0/glyphs/86/uv_rect = Rect2(70, 1, 10, 11)
+cache/0/16/0/glyphs/86/texture_idx = 0
+cache/0/16/0/glyphs/76/advance = Vector2(4.46875, 16.0938)
+cache/0/16/0/glyphs/76/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/76/size = Vector2(5, 14)
+cache/0/16/0/glyphs/76/uv_rect = Rect2(82, 1, 5, 14)
+cache/0/16/0/glyphs/76/texture_idx = 0
+cache/0/16/0/glyphs/87/advance = Vector2(6.29688, 16.0938)
+cache/0/16/0/glyphs/87/offset = Vector2(-1, -12)
+cache/0/16/0/glyphs/87/size = Vector2(8, 13)
+cache/0/16/0/glyphs/87/uv_rect = Rect2(89, 1, 8, 13)
+cache/0/16/0/glyphs/87/texture_idx = 0
+cache/0/16/0/glyphs/81/advance = Vector2(10.1563, 16.0938)
+cache/0/16/0/glyphs/81/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/81/size = Vector2(10, 11)
+cache/0/16/0/glyphs/81/uv_rect = Rect2(99, 1, 10, 11)
+cache/0/16/0/glyphs/81/texture_idx = 0
+cache/0/16/0/glyphs/88/advance = Vector2(10.1563, 16.0938)
+cache/0/16/0/glyphs/88/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/88/size = Vector2(10, 11)
+cache/0/16/0/glyphs/88/uv_rect = Rect2(111, 1, 10, 11)
+cache/0/16/0/glyphs/88/texture_idx = 0
+cache/0/16/0/glyphs/68/advance = Vector2(9.28125, 16.0938)
+cache/0/16/0/glyphs/68/offset = Vector2(-1, -10)
+cache/0/16/0/glyphs/68/size = Vector2(11, 11)
+cache/0/16/0/glyphs/68/uv_rect = Rect2(123, 1, 11, 11)
+cache/0/16/0/glyphs/68/texture_idx = 0
+cache/0/16/0/glyphs/89/advance = Vector2(8.5625, 16.0938)
+cache/0/16/0/glyphs/89/offset = Vector2(-1, -10)
+cache/0/16/0/glyphs/89/size = Vector2(11, 11)
+cache/0/16/0/glyphs/89/uv_rect = Rect2(136, 1, 11, 11)
+cache/0/16/0/glyphs/89/texture_idx = 0
+cache/0/16/0/glyphs/72/advance = Vector2(9.21875, 16.0938)
+cache/0/16/0/glyphs/72/offset = Vector2(-1, -10)
+cache/0/16/0/glyphs/72/size = Vector2(11, 11)
+cache/0/16/0/glyphs/72/uv_rect = Rect2(149, 1, 11, 11)
+cache/0/16/0/glyphs/72/texture_idx = 0
+cache/0/16/0/glyphs/71/advance = Vector2(9.96875, 16.0938)
+cache/0/16/0/glyphs/71/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/71/size = Vector2(11, 14)
+cache/0/16/0/glyphs/71/uv_rect = Rect2(162, 1, 11, 14)
+cache/0/16/0/glyphs/71/texture_idx = 0
+cache/0/16/0/glyphs/50/advance = Vector2(12.5938, 16.0938)
+cache/0/16/0/glyphs/50/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/50/size = Vector2(14, 14)
+cache/0/16/0/glyphs/50/uv_rect = Rect2(175, 1, 14, 14)
+cache/0/16/0/glyphs/50/texture_idx = 0
+cache/0/16/0/glyphs/46/advance = Vector2(10.2344, 16.0938)
+cache/0/16/0/glyphs/46/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/46/size = Vector2(12, 14)
+cache/0/16/0/glyphs/46/uv_rect = Rect2(191, 1, 12, 14)
+cache/0/16/0/glyphs/46/texture_idx = 0
+cache/0/16/0/glyphs/41/advance = Vector2(8.51563, 16.0938)
+cache/0/16/0/glyphs/41/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/41/size = Vector2(9, 14)
+cache/0/16/0/glyphs/41/uv_rect = Rect2(205, 1, 9, 14)
+cache/0/16/0/glyphs/41/texture_idx = 0
+cache/0/16/0/glyphs/79/advance = Vector2(4.46875, 16.0938)
+cache/0/16/0/glyphs/79/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/79/size = Vector2(5, 14)
+cache/0/16/0/glyphs/79/uv_rect = Rect2(216, 1, 5, 14)
+cache/0/16/0/glyphs/79/texture_idx = 0
+cache/0/16/0/glyphs/85/advance = Vector2(6.90625, 16.0938)
+cache/0/16/0/glyphs/85/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/85/size = Vector2(8, 11)
+cache/0/16/0/glyphs/85/uv_rect = Rect2(223, 1, 8, 11)
+cache/0/16/0/glyphs/85/texture_idx = 0
+cache/0/16/0/glyphs/38/advance = Vector2(10.1406, 16.0938)
+cache/0/16/0/glyphs/38/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/38/size = Vector2(12, 14)
+cache/0/16/0/glyphs/38/uv_rect = Rect2(233, 1, 12, 14)
+cache/0/16/0/glyphs/38/texture_idx = 0
+cache/0/16/0/glyphs/80/advance = Vector2(15.2969, 16.0938)
+cache/0/16/0/glyphs/80/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/80/size = Vector2(16, 11)
+cache/0/16/0/glyphs/80/uv_rect = Rect2(1, 17, 16, 11)
+cache/0/16/0/glyphs/80/texture_idx = 0
+cache/0/16/0/glyphs/35/advance = Vector2(14.375, 16.0938)
+cache/0/16/0/glyphs/35/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/35/size = Vector2(16, 16)
+cache/0/16/0/glyphs/35/uv_rect = Rect2(1, 30, 16, 16)
+cache/0/16/0/glyphs/35/texture_idx = 0
+cache/0/16/0/glyphs/40/advance = Vector2(8.9375, 16.0938)
+cache/0/16/0/glyphs/40/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/40/size = Vector2(9, 14)
+cache/0/16/0/glyphs/40/uv_rect = Rect2(19, 30, 9, 14)
+cache/0/16/0/glyphs/40/texture_idx = 0
+cache/0/16/0/glyphs/918/advance = Vector2(4.89063, 16.0938)
+cache/0/16/0/glyphs/918/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/918/size = Vector2(5, 14)
+cache/0/16/0/glyphs/918/uv_rect = Rect2(247, 1, 5, 14)
+cache/0/16/0/glyphs/918/texture_idx = 0
+cache/0/16/0/glyphs/83/advance = Vector2(9.96875, 16.0938)
+cache/0/16/0/glyphs/83/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/83/size = Vector2(11, 15)
+cache/0/16/0/glyphs/83/uv_rect = Rect2(30, 30, 11, 15)
+cache/0/16/0/glyphs/83/texture_idx = 0
+cache/0/16/0/glyphs/20/advance = Vector2(9.14063, 16.0938)
+cache/0/16/0/glyphs/20/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/20/size = Vector2(8, 14)
+cache/0/16/0/glyphs/20/uv_rect = Rect2(43, 30, 8, 14)
+cache/0/16/0/glyphs/20/texture_idx = 0
+cache/0/16/0/glyphs/25/advance = Vector2(9.14063, 16.0938)
+cache/0/16/0/glyphs/25/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/25/size = Vector2(11, 14)
+cache/0/16/0/glyphs/25/uv_rect = Rect2(53, 30, 11, 14)
+cache/0/16/0/glyphs/25/texture_idx = 0
+cache/0/16/0/glyphs/57/advance = Vector2(9.95313, 16.0938)
+cache/0/16/0/glyphs/57/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/57/size = Vector2(12, 14)
+cache/0/16/0/glyphs/57/uv_rect = Rect2(66, 30, 12, 14)
+cache/0/16/0/glyphs/57/texture_idx = 0
+cache/0/16/0/glyphs/37/advance = Vector2(10.5625, 16.0938)
+cache/0/16/0/glyphs/37/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/37/size = Vector2(11, 14)
+cache/0/16/0/glyphs/37/uv_rect = Rect2(80, 30, 11, 14)
+cache/0/16/0/glyphs/37/texture_idx = 0
+cache/0/16/0/glyphs/91/advance = Vector2(8.8125, 16.0938)
+cache/0/16/0/glyphs/91/offset = Vector2(-1, -10)
+cache/0/16/0/glyphs/91/size = Vector2(11, 11)
+cache/0/16/0/glyphs/91/uv_rect = Rect2(19, 17, 11, 11)
+cache/0/16/0/glyphs/91/texture_idx = 0
+cache/0/16/0/glyphs/26/advance = Vector2(9.14063, 16.0938)
+cache/0/16/0/glyphs/26/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/26/size = Vector2(11, 14)
+cache/0/16/0/glyphs/26/uv_rect = Rect2(93, 30, 11, 14)
+cache/0/16/0/glyphs/26/texture_idx = 0
+cache/0/16/0/glyphs/92/advance = Vector2(8.57813, 16.0938)
+cache/0/16/0/glyphs/92/offset = Vector2(-1, -10)
+cache/0/16/0/glyphs/92/size = Vector2(11, 15)
+cache/0/16/0/glyphs/92/uv_rect = Rect2(106, 30, 11, 15)
+cache/0/16/0/glyphs/92/texture_idx = 0
+cache/0/16/0/glyphs/29/advance = Vector2(4.40625, 16.0938)
+cache/0/16/0/glyphs/29/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/29/size = Vector2(5, 11)
+cache/0/16/0/glyphs/29/uv_rect = Rect2(32, 17, 5, 11)
+cache/0/16/0/glyphs/29/texture_idx = 0
+cache/0/16/0/glyphs/18/advance = Vector2(6.25, 16.0938)
+cache/0/16/0/glyphs/18/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/18/size = Vector2(9, 14)
+cache/0/16/0/glyphs/18/uv_rect = Rect2(119, 30, 9, 14)
+cache/0/16/0/glyphs/18/texture_idx = 0
+cache/0/16/0/glyphs/66/advance = Vector2(6.875, 16.0938)
+cache/0/16/0/glyphs/66/offset = Vector2(-2, 0)
+cache/0/16/0/glyphs/66/size = Vector2(10, 4)
+cache/0/16/0/glyphs/66/uv_rect = Rect2(39, 17, 10, 4)
+cache/0/16/0/glyphs/66/texture_idx = 0
+cache/0/16/0/glyphs/74/advance = Vector2(8.90625, 16.0938)
+cache/0/16/0/glyphs/74/offset = Vector2(-1, -10)
+cache/0/16/0/glyphs/74/size = Vector2(11, 15)
+cache/0/16/0/glyphs/74/uv_rect = Rect2(130, 30, 11, 15)
+cache/0/16/0/glyphs/74/texture_idx = 0
+cache/0/16/0/glyphs/75/advance = Vector2(10.1563, 16.0938)
+cache/0/16/0/glyphs/75/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/75/size = Vector2(10, 14)
+cache/0/16/0/glyphs/75/uv_rect = Rect2(143, 30, 10, 14)
+cache/0/16/0/glyphs/75/texture_idx = 0
+cache/0/16/0/glyphs/47/advance = Vector2(8.67188, 16.0938)
+cache/0/16/0/glyphs/47/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/47/size = Vector2(10, 14)
+cache/0/16/0/glyphs/47/uv_rect = Rect2(155, 30, 10, 14)
+cache/0/16/0/glyphs/47/texture_idx = 0
+cache/0/16/0/glyphs/73/advance = Vector2(5.8125, 16.0938)
+cache/0/16/0/glyphs/73/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/73/size = Vector2(9, 14)
+cache/0/16/0/glyphs/73/uv_rect = Rect2(167, 30, 9, 14)
+cache/0/16/0/glyphs/73/texture_idx = 0
+cache/0/16/0/glyphs/54/advance = Vector2(8.79688, 16.0938)
+cache/0/16/0/glyphs/54/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/54/size = Vector2(11, 14)
+cache/0/16/0/glyphs/54/uv_rect = Rect2(178, 30, 11, 14)
+cache/0/16/0/glyphs/54/texture_idx = 0
+cache/0/16/0/glyphs/27/advance = Vector2(9.14063, 16.0938)
+cache/0/16/0/glyphs/27/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/27/size = Vector2(11, 14)
+cache/0/16/0/glyphs/27/uv_rect = Rect2(191, 30, 11, 14)
+cache/0/16/0/glyphs/27/texture_idx = 0
+cache/0/16/0/glyphs/69/advance = Vector2(9.96875, 16.0938)
+cache/0/16/0/glyphs/69/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/69/size = Vector2(11, 14)
+cache/0/16/0/glyphs/69/uv_rect = Rect2(204, 30, 11, 14)
+cache/0/16/0/glyphs/69/texture_idx = 0
+cache/0/16/0/glyphs/17/advance = Vector2(4.40625, 16.0938)
+cache/0/16/0/glyphs/17/offset = Vector2(0, -4)
+cache/0/16/0/glyphs/17/size = Vector2(5, 5)
+cache/0/16/0/glyphs/17/uv_rect = Rect2(51, 17, 5, 5)
+cache/0/16/0/glyphs/17/texture_idx = 0
+cache/0/16/0/glyphs/42/advance = Vector2(11.625, 16.0938)
+cache/0/16/0/glyphs/42/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/42/size = Vector2(13, 14)
+cache/0/16/0/glyphs/42/uv_rect = Rect2(217, 30, 13, 14)
+cache/0/16/0/glyphs/42/texture_idx = 0
+cache/0/16/0/glyphs/55/advance = Vector2(9.0625, 16.0938)
+cache/0/16/0/glyphs/55/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/55/size = Vector2(11, 14)
+cache/0/16/0/glyphs/55/uv_rect = Rect2(232, 30, 11, 14)
+cache/0/16/0/glyphs/55/texture_idx = 0
+cache/0/16/0/glyphs/49/advance = Vector2(12.5313, 16.0938)
+cache/0/16/0/glyphs/49/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/49/size = Vector2(13, 14)
+cache/0/16/0/glyphs/49/uv_rect = Rect2(1, 48, 13, 14)
+cache/0/16/0/glyphs/49/texture_idx = 0
+cache/0/16/0/glyphs/36/advance = Vector2(10.5781, 16.0938)
+cache/0/16/0/glyphs/36/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/36/size = Vector2(13, 14)
+cache/0/16/0/glyphs/36/uv_rect = Rect2(16, 48, 13, 14)
+cache/0/16/0/glyphs/36/texture_idx = 0
+cache/0/16/0/glyphs/90/advance = Vector2(13.0781, 16.0938)
+cache/0/16/0/glyphs/90/offset = Vector2(-1, -10)
+cache/0/16/0/glyphs/90/size = Vector2(15, 11)
+cache/0/16/0/glyphs/90/uv_rect = Rect2(58, 17, 15, 11)
+cache/0/16/0/glyphs/90/texture_idx = 0
+cache/0/16/0/glyphs/48/advance = Vector2(14.7656, 16.0938)
+cache/0/16/0/glyphs/48/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/48/size = Vector2(15, 14)
+cache/0/16/0/glyphs/48/uv_rect = Rect2(31, 48, 15, 14)
+cache/0/16/0/glyphs/48/texture_idx = 0
+cache/0/16/0/glyphs/53/advance = Vector2(10.2344, 16.0938)
+cache/0/16/0/glyphs/53/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/53/size = Vector2(12, 14)
+cache/0/16/0/glyphs/53/uv_rect = Rect2(48, 48, 12, 14)
+cache/0/16/0/glyphs/53/texture_idx = 0
+cache/0/16/0/glyphs/93/advance = Vector2(7.65625, 16.0938)
+cache/0/16/0/glyphs/93/offset = Vector2(-1, -10)
+cache/0/16/0/glyphs/93/size = Vector2(10, 11)
+cache/0/16/0/glyphs/93/uv_rect = Rect2(75, 17, 10, 11)
+cache/0/16/0/glyphs/93/texture_idx = 0
+cache/0/16/0/glyphs/5/advance = Vector2(6.98438, 16.0938)
+cache/0/16/0/glyphs/5/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/5/size = Vector2(7, 7)
+cache/0/16/0/glyphs/5/uv_rect = Rect2(87, 17, 7, 7)
+cache/0/16/0/glyphs/5/texture_idx = 0
+cache/0/16/0/glyphs/16/advance = Vector2(5.15625, 16.0938)
+cache/0/16/0/glyphs/16/offset = Vector2(-1, -7)
+cache/0/16/0/glyphs/16/size = Vector2(7, 4)
+cache/0/16/0/glyphs/16/uv_rect = Rect2(96, 17, 7, 4)
+cache/0/16/0/glyphs/16/texture_idx = 0
+cache/0/16/0/glyphs/33/advance = Vector2(9.14063, 16.0938)
+cache/0/16/0/glyphs/33/offset = Vector2(-1, -12)
+cache/0/16/0/glyphs/33/size = Vector2(11, 12)
+cache/0/16/0/glyphs/33/uv_rect = Rect2(62, 48, 11, 12)
+cache/0/16/0/glyphs/33/texture_idx = 0
+cache/0/16/0/glyphs/19/advance = Vector2(9.14063, 16.0938)
+cache/0/16/0/glyphs/19/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/19/size = Vector2(11, 14)
+cache/0/16/0/glyphs/19/uv_rect = Rect2(75, 48, 11, 14)
+cache/0/16/0/glyphs/19/texture_idx = 0
+cache/0/16/0/glyphs/564/advance = Vector2(10.2813, 16.0938)
+cache/0/16/0/glyphs/564/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/564/size = Vector2(12, 14)
+cache/0/16/0/glyphs/564/uv_rect = Rect2(88, 48, 12, 14)
+cache/0/16/0/glyphs/564/texture_idx = 0
+cache/0/16/0/glyphs/11/advance = Vector2(5.07813, 16.0938)
+cache/0/16/0/glyphs/11/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/11/size = Vector2(7, 17)
+cache/0/16/0/glyphs/11/uv_rect = Rect2(1, 64, 7, 17)
+cache/0/16/0/glyphs/11/texture_idx = 0
+cache/0/16/0/glyphs/12/advance = Vector2(5.07813, 16.0938)
+cache/0/16/0/glyphs/12/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/12/size = Vector2(7, 17)
+cache/0/16/0/glyphs/12/uv_rect = Rect2(10, 64, 7, 17)
+cache/0/16/0/glyphs/12/texture_idx = 0
+cache/0/16/0/glyphs/15/advance = Vector2(4.28125, 16.0938)
+cache/0/16/0/glyphs/15/offset = Vector2(-1, -4)
+cache/0/16/0/glyphs/15/size = Vector2(6, 7)
+cache/0/16/0/glyphs/15/uv_rect = Rect2(105, 17, 6, 7)
+cache/0/16/0/glyphs/15/texture_idx = 0
+cache/0/16/0/glyphs/605/advance = Vector2(16.0781, 16.0938)
+cache/0/16/0/glyphs/605/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/605/size = Vector2(17, 14)
+cache/0/16/0/glyphs/605/uv_rect = Rect2(102, 48, 17, 14)
+cache/0/16/0/glyphs/605/texture_idx = 0
+cache/0/16/0/glyphs/56/advance = Vector2(11.875, 16.0938)
+cache/0/16/0/glyphs/56/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/56/size = Vector2(12, 14)
+cache/0/16/0/glyphs/56/uv_rect = Rect2(121, 48, 12, 14)
+cache/0/16/0/glyphs/56/texture_idx = 0
+cache/0/16/0/glyphs/60/advance = Vector2(9.46875, 16.0938)
+cache/0/16/0/glyphs/60/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/60/size = Vector2(12, 14)
+cache/0/16/0/glyphs/60/uv_rect = Rect2(135, 48, 12, 14)
+cache/0/16/0/glyphs/60/texture_idx = 0
+cache/0/16/0/glyphs/21/advance = Vector2(9.14063, 16.0938)
+cache/0/16/0/glyphs/21/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/21/size = Vector2(11, 14)
+cache/0/16/0/glyphs/21/uv_rect = Rect2(149, 48, 11, 14)
+cache/0/16/0/glyphs/21/texture_idx = 0
+cache/0/16/0/glyphs/22/advance = Vector2(9.14063, 16.0938)
+cache/0/16/0/glyphs/22/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/22/size = Vector2(11, 14)
+cache/0/16/0/glyphs/22/uv_rect = Rect2(162, 48, 11, 14)
+cache/0/16/0/glyphs/22/texture_idx = 0
+cache/0/16/0/glyphs/43/advance = Vector2(12.0156, 16.0938)
+cache/0/16/0/glyphs/43/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/43/size = Vector2(12, 14)
+cache/0/16/0/glyphs/43/uv_rect = Rect2(175, 48, 12, 14)
+cache/0/16/0/glyphs/43/texture_idx = 0
+cache/0/16/0/glyphs/23/advance = Vector2(9.14063, 16.0938)
+cache/0/16/0/glyphs/23/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/23/size = Vector2(11, 14)
+cache/0/16/0/glyphs/23/uv_rect = Rect2(189, 48, 11, 14)
+cache/0/16/0/glyphs/23/texture_idx = 0
+cache/0/16/0/glyphs/52/advance = Vector2(12.5938, 16.0938)
+cache/0/16/0/glyphs/52/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/52/size = Vector2(14, 17)
+cache/0/16/0/glyphs/52/uv_rect = Rect2(19, 64, 14, 17)
+cache/0/16/0/glyphs/52/texture_idx = 0
+cache/0/16/0/glyphs/8/advance = Vector2(13.7969, 16.0938)
+cache/0/16/0/glyphs/8/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/8/size = Vector2(16, 14)
+cache/0/16/0/glyphs/8/uv_rect = Rect2(202, 48, 16, 14)
+cache/0/16/0/glyphs/8/texture_idx = 0
+cache/0/16/0/glyphs/58/advance = Vector2(15.1406, 16.0938)
+cache/0/16/0/glyphs/58/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/58/size = Vector2(18, 14)
+cache/0/16/0/glyphs/58/uv_rect = Rect2(220, 48, 18, 14)
+cache/0/16/0/glyphs/58/texture_idx = 0
+cache/0/16/0/glyphs/6/advance = Vector2(10.3438, 16.0938)
+cache/0/16/0/glyphs/6/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/6/size = Vector2(12, 14)
+cache/0/16/0/glyphs/6/uv_rect = Rect2(240, 48, 12, 14)
+cache/0/16/0/glyphs/6/texture_idx = 0
+cache/0/16/0/glyphs/24/advance = Vector2(9.14063, 16.0938)
+cache/0/16/0/glyphs/24/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/24/size = Vector2(11, 14)
+cache/0/16/0/glyphs/24/uv_rect = Rect2(35, 64, 11, 14)
+cache/0/16/0/glyphs/24/texture_idx = 0
+cache/0/16/0/glyphs/77/advance = Vector2(4.46875, 16.0938)
+cache/0/16/0/glyphs/77/offset = Vector2(-2, -13)
+cache/0/16/0/glyphs/77/size = Vector2(7, 18)
+cache/0/16/0/glyphs/77/uv_rect = Rect2(1, 83, 7, 18)
+cache/0/16/0/glyphs/77/texture_idx = 0
+cache/0/16/0/glyphs/153/advance = Vector2(9.14063, 16.0938)
+cache/0/16/0/glyphs/153/offset = Vector2(0, -11)
+cache/0/16/0/glyphs/153/size = Vector2(10, 10)
+cache/0/16/0/glyphs/153/uv_rect = Rect2(113, 17, 10, 10)
+cache/0/16/0/glyphs/153/texture_idx = 0
+cache/0/16/0/glyphs/28/advance = Vector2(9.14063, 16.0938)
+cache/0/16/0/glyphs/28/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/28/size = Vector2(11, 14)
+cache/0/16/0/glyphs/28/uv_rect = Rect2(48, 64, 11, 14)
+cache/0/16/0/glyphs/28/texture_idx = 0
+cache/0/16/0/glyphs/31/advance = Vector2(9.14063, 16.0938)
+cache/0/16/0/glyphs/31/offset = Vector2(-1, -12)
+cache/0/16/0/glyphs/31/size = Vector2(11, 12)
+cache/0/16/0/glyphs/31/uv_rect = Rect2(61, 64, 11, 12)
+cache/0/16/0/glyphs/31/texture_idx = 0
+cache/0/16/0/glyphs/62/advance = Vector2(5.28125, 16.0938)
+cache/0/16/0/glyphs/62/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/62/size = Vector2(6, 17)
+cache/0/16/0/glyphs/62/uv_rect = Rect2(74, 64, 6, 17)
+cache/0/16/0/glyphs/62/texture_idx = 0
+cache/0/16/0/glyphs/64/advance = Vector2(5.28125, 16.0938)
+cache/0/16/0/glyphs/64/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/64/size = Vector2(7, 17)
+cache/0/16/0/glyphs/64/uv_rect = Rect2(82, 64, 7, 17)
+cache/0/16/0/glyphs/64/texture_idx = 0
+cache/0/16/0/glyphs/14/advance = Vector2(9.14063, 16.0938)
+cache/0/16/0/glyphs/14/offset = Vector2(-1, -11)
+cache/0/16/0/glyphs/14/size = Vector2(11, 10)
+cache/0/16/0/glyphs/14/uv_rect = Rect2(125, 17, 11, 10)
+cache/0/16/0/glyphs/14/texture_idx = 0
+cache/0/16/0/glyphs/9/advance = Vector2(11.8438, 16.0938)
+cache/0/16/0/glyphs/9/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/9/size = Vector2(14, 14)
+cache/0/16/0/glyphs/9/uv_rect = Rect2(91, 64, 14, 14)
+cache/0/16/0/glyphs/9/texture_idx = 0
+cache/0/16/0/glyphs/909/advance = Vector2(11.625, 16.0938)
+cache/0/16/0/glyphs/909/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/909/size = Vector2(15, 14)
+cache/0/16/0/glyphs/909/uv_rect = Rect2(107, 64, 15, 14)
+cache/0/16/0/glyphs/909/texture_idx = 0
+cache/0/16/0/glyphs/59/advance = Vector2(9.95313, 16.0938)
+cache/0/16/0/glyphs/59/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/59/size = Vector2(12, 14)
+cache/0/16/0/glyphs/59/uv_rect = Rect2(124, 64, 12, 14)
+cache/0/16/0/glyphs/59/texture_idx = 0
+cache/0/16/0/glyphs/45/advance = Vector2(4.78125, 16.0938)
+cache/0/16/0/glyphs/45/offset = Vector2(-3, -13)
+cache/0/16/0/glyphs/45/size = Vector2(8, 17)
+cache/0/16/0/glyphs/45/uv_rect = Rect2(138, 64, 8, 17)
+cache/0/16/0/glyphs/45/texture_idx = 0
+cache/0/16/0/glyphs/61/advance = Vector2(9.20313, 16.0938)
+cache/0/16/0/glyphs/61/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/61/size = Vector2(11, 14)
+cache/0/16/0/glyphs/61/uv_rect = Rect2(148, 64, 11, 14)
+cache/0/16/0/glyphs/61/texture_idx = 0
+cache/0/16/0/glyphs/34/advance = Vector2(7.25, 16.0938)
+cache/0/16/0/glyphs/34/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/34/size = Vector2(9, 14)
+cache/0/16/0/glyphs/34/uv_rect = Rect2(245, 30, 9, 14)
+cache/0/16/0/glyphs/34/texture_idx = 0
+cache/0/16/0/glyphs/13/advance = Vector2(8.76563, 16.0938)
+cache/0/16/0/glyphs/13/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/13/size = Vector2(11, 10)
+cache/0/16/0/glyphs/13/uv_rect = Rect2(138, 17, 11, 10)
+cache/0/16/0/glyphs/13/texture_idx = 0
+cache/0/16/0/glyphs/527/advance = Vector2(6.01563, 16.0938)
+cache/0/16/0/glyphs/527/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/527/size = Vector2(6, 7)
+cache/0/16/0/glyphs/527/uv_rect = Rect2(151, 17, 6, 7)
+cache/0/16/0/glyphs/527/texture_idx = 0
+cache/0/16/0/glyphs/84/advance = Vector2(9.96875, 16.0938)
+cache/0/16/0/glyphs/84/offset = Vector2(-1, -10)
+cache/0/16/0/glyphs/84/size = Vector2(11, 15)
+cache/0/16/0/glyphs/84/uv_rect = Rect2(161, 64, 11, 15)
+cache/0/16/0/glyphs/84/texture_idx = 0
+cache/0/16/0/glyphs/107/advance = Vector2(13.3125, 16.0938)
+cache/0/16/0/glyphs/107/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/107/size = Vector2(15, 14)
+cache/0/16/0/glyphs/107/uv_rect = Rect2(174, 64, 15, 14)
+cache/0/16/0/glyphs/107/texture_idx = 0
+cache/0/16/0/glyphs/10/advance = Vector2(3.89063, 16.0938)
+cache/0/16/0/glyphs/10/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/10/size = Vector2(4, 7)
+cache/0/16/0/glyphs/10/uv_rect = Rect2(159, 17, 4, 7)
+cache/0/16/0/glyphs/10/texture_idx = 0
+cache/0/16/0/glyphs/32/advance = Vector2(9.14063, 16.0938)
+cache/0/16/0/glyphs/32/offset = Vector2(-1, -10)
+cache/0/16/0/glyphs/32/size = Vector2(11, 8)
+cache/0/16/0/glyphs/32/uv_rect = Rect2(165, 17, 11, 8)
+cache/0/16/0/glyphs/32/texture_idx = 0
+cache/0/16/0/glyphs/565/advance = Vector2(10.2813, 16.0938)
+cache/0/16/0/glyphs/565/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/565/size = Vector2(11, 14)
+cache/0/16/0/glyphs/565/uv_rect = Rect2(191, 64, 11, 14)
+cache/0/16/0/glyphs/565/texture_idx = 0
+cache/0/16/0/glyphs/63/advance = Vector2(6.25, 16.0938)
+cache/0/16/0/glyphs/63/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/63/size = Vector2(9, 14)
+cache/0/16/0/glyphs/63/uv_rect = Rect2(204, 64, 9, 14)
+cache/0/16/0/glyphs/63/texture_idx = 0
+cache/0/16/0/glyphs/163/advance = Vector2(9.28125, 16.0938)
+cache/0/16/0/glyphs/163/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/163/size = Vector2(11, 14)
+cache/0/16/0/glyphs/163/uv_rect = Rect2(215, 64, 11, 14)
+cache/0/16/0/glyphs/163/texture_idx = 0
+cache/0/16/0/glyphs/181/advance = Vector2(9.78125, 16.0938)
+cache/0/16/0/glyphs/181/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/181/size = Vector2(11, 14)
+cache/0/16/0/glyphs/181/uv_rect = Rect2(228, 64, 11, 14)
+cache/0/16/0/glyphs/181/texture_idx = 0
+cache/0/16/0/glyphs/30/advance = Vector2(4.45313, 16.0938)
+cache/0/16/0/glyphs/30/offset = Vector2(-1, -10)
+cache/0/16/0/glyphs/30/size = Vector2(6, 14)
+cache/0/16/0/glyphs/30/uv_rect = Rect2(241, 64, 6, 14)
+cache/0/16/0/glyphs/30/texture_idx = 0
+cache/0/16/0/glyphs/94/advance = Vector2(6.1875, 16.0938)
+cache/0/16/0/glyphs/94/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/94/size = Vector2(8, 17)
+cache/0/16/0/glyphs/94/uv_rect = Rect2(10, 83, 8, 17)
+cache/0/16/0/glyphs/94/texture_idx = 0
+cache/0/16/0/glyphs/96/advance = Vector2(5.9375, 16.0938)
+cache/0/16/0/glyphs/96/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/96/size = Vector2(8, 17)
+cache/0/16/0/glyphs/96/uv_rect = Rect2(20, 83, 8, 17)
+cache/0/16/0/glyphs/96/texture_idx = 0
+cache/0/16/0/glyphs/7/advance = Vector2(9.14063, 16.0938)
+cache/0/16/0/glyphs/7/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/7/size = Vector2(11, 16)
+cache/0/16/0/glyphs/7/uv_rect = Rect2(30, 83, 11, 16)
+cache/0/16/0/glyphs/7/texture_idx = 0
+cache/0/16/0/glyphs/134217800/advance = Vector2(9.21875, 16.0938)
+cache/0/16/0/glyphs/134217800/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/134217800/size = Vector2(10, 11)
+cache/0/16/0/glyphs/134217800/uv_rect = Rect2(178, 17, 10, 11)
+cache/0/16/0/glyphs/134217800/texture_idx = 0
+cache/0/16/0/glyphs/268435536/advance = Vector2(15.2969, 16.0938)
+cache/0/16/0/glyphs/268435536/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/268435536/size = Vector2(16, 11)
+cache/0/16/0/glyphs/268435536/uv_rect = Rect2(190, 17, 16, 11)
+cache/0/16/0/glyphs/268435536/texture_idx = 0
+cache/0/16/0/glyphs/402653266/advance = Vector2(9.78125, 16.0938)
+cache/0/16/0/glyphs/402653266/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/402653266/size = Vector2(11, 11)
+cache/0/16/0/glyphs/402653266/uv_rect = Rect2(208, 17, 11, 11)
+cache/0/16/0/glyphs/402653266/texture_idx = 0
+cache/0/16/0/glyphs/268435545/advance = Vector2(8.5625, 16.0938)
+cache/0/16/0/glyphs/268435545/offset = Vector2(-1, -10)
+cache/0/16/0/glyphs/268435545/size = Vector2(12, 11)
+cache/0/16/0/glyphs/268435545/uv_rect = Rect2(221, 17, 12, 11)
+cache/0/16/0/glyphs/268435545/texture_idx = 0
+cache/0/16/0/glyphs/134217731/advance = Vector2(4.15625, 16.0938)
+cache/0/16/0/glyphs/134217731/offset = Vector2(-1, -1)
+cache/0/16/0/glyphs/134217731/size = Vector2(2, 2)
+cache/0/16/0/glyphs/134217731/uv_rect = Rect2(235, 17, 2, 2)
+cache/0/16/0/glyphs/134217731/texture_idx = 0
+cache/0/16/0/glyphs/268435493/advance = Vector2(10.5625, 16.0938)
+cache/0/16/0/glyphs/268435493/offset = Vector2(1, -13)
+cache/0/16/0/glyphs/268435493/size = Vector2(11, 14)
+cache/0/16/0/glyphs/268435493/uv_rect = Rect2(43, 83, 11, 14)
+cache/0/16/0/glyphs/268435493/texture_idx = 0
+cache/0/16/0/glyphs/134217814/advance = Vector2(7.79688, 16.0938)
+cache/0/16/0/glyphs/134217814/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/134217814/size = Vector2(9, 11)
+cache/0/16/0/glyphs/134217814/uv_rect = Rect2(239, 17, 9, 11)
+cache/0/16/0/glyphs/134217814/texture_idx = 0
+cache/0/16/0/glyphs/134217807/advance = Vector2(4.46875, 16.0938)
+cache/0/16/0/glyphs/134217807/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/134217807/size = Vector2(5, 14)
+cache/0/16/0/glyphs/134217807/uv_rect = Rect2(249, 64, 5, 14)
+cache/0/16/0/glyphs/134217807/texture_idx = 0
+cache/0/16/0/glyphs/402653260/advance = Vector2(4.46875, 16.0938)
+cache/0/16/0/glyphs/402653260/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/402653260/size = Vector2(6, 14)
+cache/0/16/0/glyphs/402653260/uv_rect = Rect2(56, 83, 6, 14)
+cache/0/16/0/glyphs/402653260/texture_idx = 0
+cache/0/16/0/glyphs/134217809/advance = Vector2(10.1563, 16.0938)
+cache/0/16/0/glyphs/134217809/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/134217809/size = Vector2(11, 11)
+cache/0/16/0/glyphs/134217809/uv_rect = Rect2(64, 83, 11, 11)
+cache/0/16/0/glyphs/134217809/texture_idx = 0
+cache/0/16/0/glyphs/268435528/advance = Vector2(9.21875, 16.0938)
+cache/0/16/0/glyphs/268435528/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/268435528/size = Vector2(10, 11)
+cache/0/16/0/glyphs/268435528/uv_rect = Rect2(77, 83, 10, 11)
+cache/0/16/0/glyphs/268435528/texture_idx = 0
+cache/0/16/0/glyphs/402653227/advance = Vector2(12.0156, 16.0938)
+cache/0/16/0/glyphs/402653227/offset = Vector2(1, -13)
+cache/0/16/0/glyphs/402653227/size = Vector2(12, 14)
+cache/0/16/0/glyphs/402653227/uv_rect = Rect2(89, 83, 12, 14)
+cache/0/16/0/glyphs/402653227/texture_idx = 0
+cache/0/16/0/glyphs/402653256/advance = Vector2(9.21875, 16.0938)
+cache/0/16/0/glyphs/402653256/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/402653256/size = Vector2(11, 11)
+cache/0/16/0/glyphs/402653256/uv_rect = Rect2(103, 83, 11, 11)
+cache/0/16/0/glyphs/402653256/texture_idx = 0
+cache/0/16/0/glyphs/134217811/advance = Vector2(9.96875, 16.0938)
+cache/0/16/0/glyphs/134217811/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/134217811/size = Vector2(11, 15)
+cache/0/16/0/glyphs/134217811/uv_rect = Rect2(116, 83, 11, 15)
+cache/0/16/0/glyphs/134217811/texture_idx = 0
+cache/0/16/0/glyphs/268435541/advance = Vector2(6.90625, 16.0938)
+cache/0/16/0/glyphs/268435541/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/268435541/size = Vector2(9, 11)
+cache/0/16/0/glyphs/268435541/uv_rect = Rect2(129, 83, 9, 11)
+cache/0/16/0/glyphs/268435541/texture_idx = 0
+cache/0/16/0/glyphs/268435459/advance = Vector2(4.15625, 16.0938)
+cache/0/16/0/glyphs/268435459/offset = Vector2(-1, -1)
+cache/0/16/0/glyphs/268435459/size = Vector2(2, 2)
+cache/0/16/0/glyphs/268435459/uv_rect = Rect2(250, 17, 2, 2)
+cache/0/16/0/glyphs/268435459/texture_idx = 0
+cache/0/16/0/glyphs/268435524/advance = Vector2(9.28125, 16.0938)
+cache/0/16/0/glyphs/268435524/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/268435524/size = Vector2(10, 11)
+cache/0/16/0/glyphs/268435524/uv_rect = Rect2(140, 83, 10, 11)
+cache/0/16/0/glyphs/268435524/texture_idx = 0
+cache/0/16/0/glyphs/134217796/advance = Vector2(9.28125, 16.0938)
+cache/0/16/0/glyphs/134217796/offset = Vector2(-1, -10)
+cache/0/16/0/glyphs/134217796/size = Vector2(11, 11)
+cache/0/16/0/glyphs/134217796/uv_rect = Rect2(152, 83, 11, 11)
+cache/0/16/0/glyphs/134217796/texture_idx = 0
+cache/0/16/0/glyphs/268435535/advance = Vector2(4.46875, 16.0938)
+cache/0/16/0/glyphs/268435535/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/268435535/size = Vector2(5, 14)
+cache/0/16/0/glyphs/268435535/uv_rect = Rect2(165, 83, 5, 14)
+cache/0/16/0/glyphs/268435535/texture_idx = 0
+cache/0/16/0/glyphs/268435539/advance = Vector2(9.96875, 16.0938)
+cache/0/16/0/glyphs/268435539/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/268435539/size = Vector2(11, 15)
+cache/0/16/0/glyphs/268435539/uv_rect = Rect2(172, 83, 11, 15)
+cache/0/16/0/glyphs/268435539/texture_idx = 0
+cache/0/16/0/glyphs/402653269/advance = Vector2(6.90625, 16.0938)
+cache/0/16/0/glyphs/402653269/offset = Vector2(1, -10)
+cache/0/16/0/glyphs/402653269/size = Vector2(8, 11)
+cache/0/16/0/glyphs/402653269/uv_rect = Rect2(185, 83, 8, 11)
+cache/0/16/0/glyphs/402653269/texture_idx = 0
+cache/0/16/0/glyphs/402653187/advance = Vector2(4.15625, 16.0938)
+cache/0/16/0/glyphs/402653187/offset = Vector2(-1, -1)
+cache/0/16/0/glyphs/402653187/size = Vector2(2, 2)
+cache/0/16/0/glyphs/402653187/uv_rect = Rect2(195, 83, 2, 2)
+cache/0/16/0/glyphs/402653187/texture_idx = 0
+cache/0/16/0/glyphs/402653265/advance = Vector2(10.1563, 16.0938)
+cache/0/16/0/glyphs/402653265/offset = Vector2(1, -10)
+cache/0/16/0/glyphs/402653265/size = Vector2(10, 11)
+cache/0/16/0/glyphs/402653265/uv_rect = Rect2(199, 83, 10, 11)
+cache/0/16/0/glyphs/402653265/texture_idx = 0
+cache/0/16/0/glyphs/402653255/advance = Vector2(9.96875, 16.0938)
+cache/0/16/0/glyphs/402653255/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/402653255/size = Vector2(11, 14)
+cache/0/16/0/glyphs/402653255/uv_rect = Rect2(211, 83, 11, 14)
+cache/0/16/0/glyphs/402653255/texture_idx = 0
+cache/0/16/0/glyphs/268435537/advance = Vector2(10.1563, 16.0938)
+cache/0/16/0/glyphs/268435537/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/268435537/size = Vector2(11, 11)
+cache/0/16/0/glyphs/268435537/uv_rect = Rect2(224, 83, 11, 11)
+cache/0/16/0/glyphs/268435537/texture_idx = 0
+cache/0/16/0/glyphs/402653267/advance = Vector2(9.96875, 16.0938)
+cache/0/16/0/glyphs/402653267/offset = Vector2(1, -10)
+cache/0/16/0/glyphs/402653267/size = Vector2(10, 15)
+cache/0/16/0/glyphs/402653267/uv_rect = Rect2(237, 83, 10, 15)
+cache/0/16/0/glyphs/402653267/texture_idx = 0
+cache/0/16/0/glyphs/268435538/advance = Vector2(9.78125, 16.0938)
+cache/0/16/0/glyphs/268435538/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/268435538/size = Vector2(11, 11)
+cache/0/16/0/glyphs/268435538/uv_rect = Rect2(1, 103, 11, 11)
+cache/0/16/0/glyphs/268435538/texture_idx = 0
+cache/0/16/0/glyphs/268435526/advance = Vector2(7.92188, 16.0938)
+cache/0/16/0/glyphs/268435526/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/268435526/size = Vector2(9, 11)
+cache/0/16/0/glyphs/268435526/uv_rect = Rect2(14, 103, 9, 11)
+cache/0/16/0/glyphs/268435526/texture_idx = 0
+cache/0/16/0/glyphs/134217803/advance = Vector2(10.1563, 16.0938)
+cache/0/16/0/glyphs/134217803/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/134217803/size = Vector2(11, 14)
+cache/0/16/0/glyphs/134217803/uv_rect = Rect2(1, 116, 11, 14)
+cache/0/16/0/glyphs/134217803/texture_idx = 0
+cache/0/16/0/glyphs/268435532/advance = Vector2(4.46875, 16.0938)
+cache/0/16/0/glyphs/268435532/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/268435532/size = Vector2(5, 14)
+cache/0/16/0/glyphs/268435532/uv_rect = Rect2(14, 116, 5, 14)
+cache/0/16/0/glyphs/268435532/texture_idx = 0
+cache/0/16/0/glyphs/134217798/advance = Vector2(7.92188, 16.0938)
+cache/0/16/0/glyphs/134217798/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/134217798/size = Vector2(9, 11)
+cache/0/16/0/glyphs/134217798/uv_rect = Rect2(25, 103, 9, 11)
+cache/0/16/0/glyphs/134217798/texture_idx = 0
+cache/0/16/0/glyphs/268435525/advance = Vector2(9.96875, 16.0938)
+cache/0/16/0/glyphs/268435525/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/268435525/size = Vector2(11, 14)
+cache/0/16/0/glyphs/268435525/uv_rect = Rect2(21, 116, 11, 14)
+cache/0/16/0/glyphs/268435525/texture_idx = 0
+cache/0/16/0/glyphs/268435492/advance = Vector2(10.5781, 16.0938)
+cache/0/16/0/glyphs/268435492/offset = Vector2(-1, -13)
+cache/0/16/0/glyphs/268435492/size = Vector2(14, 14)
+cache/0/16/0/glyphs/268435492/uv_rect = Rect2(34, 116, 14, 14)
+cache/0/16/0/glyphs/268435492/texture_idx = 0
+cache/0/16/0/glyphs/268435542/advance = Vector2(7.79688, 16.0938)
+cache/0/16/0/glyphs/268435542/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/268435542/size = Vector2(9, 11)
+cache/0/16/0/glyphs/268435542/uv_rect = Rect2(36, 103, 9, 11)
+cache/0/16/0/glyphs/268435542/texture_idx = 0
+cache/0/16/0/glyphs/134217808/advance = Vector2(15.2969, 16.0938)
+cache/0/16/0/glyphs/134217808/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/134217808/size = Vector2(16, 11)
+cache/0/16/0/glyphs/134217808/uv_rect = Rect2(47, 103, 16, 11)
+cache/0/16/0/glyphs/134217808/texture_idx = 0
+cache/0/16/0/glyphs/134217817/advance = Vector2(8.5625, 16.0938)
+cache/0/16/0/glyphs/134217817/offset = Vector2(-1, -10)
+cache/0/16/0/glyphs/134217817/size = Vector2(11, 11)
+cache/0/16/0/glyphs/134217817/uv_rect = Rect2(65, 103, 11, 11)
+cache/0/16/0/glyphs/134217817/texture_idx = 0
+cache/0/16/0/glyphs/134217767/advance = Vector2(11.75, 16.0938)
+cache/0/16/0/glyphs/134217767/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/134217767/size = Vector2(13, 14)
+cache/0/16/0/glyphs/134217767/uv_rect = Rect2(50, 116, 13, 14)
+cache/0/16/0/glyphs/134217767/texture_idx = 0
+cache/0/16/0/glyphs/402653263/advance = Vector2(4.46875, 16.0938)
+cache/0/16/0/glyphs/402653263/offset = Vector2(1, -13)
+cache/0/16/0/glyphs/402653263/size = Vector2(4, 14)
+cache/0/16/0/glyphs/402653263/uv_rect = Rect2(65, 116, 4, 14)
+cache/0/16/0/glyphs/402653263/texture_idx = 0
+cache/0/16/0/glyphs/402653235/advance = Vector2(9.84375, 16.0938)
+cache/0/16/0/glyphs/402653235/offset = Vector2(1, -13)
+cache/0/16/0/glyphs/402653235/size = Vector2(10, 14)
+cache/0/16/0/glyphs/402653235/uv_rect = Rect2(71, 116, 10, 14)
+cache/0/16/0/glyphs/402653235/texture_idx = 0
+cache/0/16/0/glyphs/134217799/advance = Vector2(9.96875, 16.0938)
+cache/0/16/0/glyphs/134217799/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/134217799/size = Vector2(10, 14)
+cache/0/16/0/glyphs/134217799/uv_rect = Rect2(83, 116, 10, 14)
+cache/0/16/0/glyphs/134217799/texture_idx = 0
+cache/0/16/0/glyphs/402653254/advance = Vector2(7.92188, 16.0938)
+cache/0/16/0/glyphs/402653254/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/402653254/size = Vector2(10, 11)
+cache/0/16/0/glyphs/402653254/uv_rect = Rect2(78, 103, 10, 11)
+cache/0/16/0/glyphs/402653254/texture_idx = 0
+cache/0/16/0/glyphs/402653271/advance = Vector2(6.29688, 16.0938)
+cache/0/16/0/glyphs/402653271/offset = Vector2(0, -12)
+cache/0/16/0/glyphs/402653271/size = Vector2(8, 13)
+cache/0/16/0/glyphs/402653271/uv_rect = Rect2(95, 116, 8, 13)
+cache/0/16/0/glyphs/402653271/texture_idx = 0
+cache/0/16/0/glyphs/134217813/advance = Vector2(6.90625, 16.0938)
+cache/0/16/0/glyphs/134217813/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/134217813/size = Vector2(8, 11)
+cache/0/16/0/glyphs/134217813/uv_rect = Rect2(90, 103, 8, 11)
+cache/0/16/0/glyphs/134217813/texture_idx = 0
+cache/0/16/0/glyphs/268435467/advance = Vector2(5.07813, 16.0938)
+cache/0/16/0/glyphs/268435467/offset = Vector2(0, -13)
+cache/0/16/0/glyphs/268435467/size = Vector2(7, 17)
+cache/0/16/0/glyphs/268435467/uv_rect = Rect2(1, 132, 7, 17)
+cache/0/16/0/glyphs/268435467/texture_idx = 0
+cache/0/16/0/glyphs/402653252/advance = Vector2(9.28125, 16.0938)
+cache/0/16/0/glyphs/402653252/offset = Vector2(0, -10)
+cache/0/16/0/glyphs/402653252/size = Vector2(10, 11)
+cache/0/16/0/glyphs/402653252/uv_rect = Rect2(100, 103, 10, 11)
+cache/0/16/0/glyphs/402653252/texture_idx = 0
+cache/0/16/0/kerning_overrides/16/0 = Vector2(0, 0)
+cache/1/variation_coordinates = {}
+cache/1/face_index = 0
+cache/1/embolden = 1.2
+cache/1/transform = Transform2D(1, 0, 0, 1, 0, 0)
+cache/1/spacing_top = 0
+cache/1/spacing_bottom = 0
+cache/1/spacing_space = 0
+cache/1/spacing_glyph = 0
+cache/1/16/0/ascent = 18.0
+cache/1/16/0/descent = 5.0
+cache/1/16/0/underline_position = 1.60938
+cache/1/16/0/underline_thickness = 0.796875
+cache/1/16/0/scale = 1.0
+cache/1/16/0/textures/0/offsets = PackedInt32Array(246, 0, 10, 18, 69, 18, 187, 19)
+cache/1/16/0/textures/0/image = SubResource("Image_j7vsp")
+cache/1/16/0/glyphs/37/advance = Vector2(10.8625, 16.0938)
+cache/1/16/0/glyphs/37/offset = Vector2(0, -15)
+cache/1/16/0/glyphs/37/size = Vector2(12, 16)
+cache/1/16/0/glyphs/37/uv_rect = Rect2(1, 1, 12, 16)
+cache/1/16/0/glyphs/37/texture_idx = 0
+cache/1/16/0/glyphs/68/advance = Vector2(9.58125, 16.0938)
+cache/1/16/0/glyphs/68/offset = Vector2(-1, -12)
+cache/1/16/0/glyphs/68/size = Vector2(12, 13)
+cache/1/16/0/glyphs/68/uv_rect = Rect2(15, 1, 12, 13)
+cache/1/16/0/glyphs/68/texture_idx = 0
+cache/1/16/0/glyphs/86/advance = Vector2(8.09688, 16.0938)
+cache/1/16/0/glyphs/86/offset = Vector2(-1, -12)
+cache/1/16/0/glyphs/86/size = Vector2(11, 13)
+cache/1/16/0/glyphs/86/uv_rect = Rect2(29, 1, 11, 13)
+cache/1/16/0/glyphs/86/texture_idx = 0
+cache/1/16/0/glyphs/72/advance = Vector2(9.51875, 16.0938)
+cache/1/16/0/glyphs/72/offset = Vector2(-1, -12)
+cache/1/16/0/glyphs/72/size = Vector2(12, 13)
+cache/1/16/0/glyphs/72/uv_rect = Rect2(42, 1, 12, 13)
+cache/1/16/0/glyphs/72/texture_idx = 0
+cache/1/16/0/glyphs/79/advance = Vector2(4.76875, 16.0938)
+cache/1/16/0/glyphs/79/offset = Vector2(0, -15)
+cache/1/16/0/glyphs/79/size = Vector2(6, 16)
+cache/1/16/0/glyphs/79/uv_rect = Rect2(56, 1, 6, 16)
+cache/1/16/0/glyphs/79/texture_idx = 0
+cache/1/16/0/glyphs/76/advance = Vector2(4.76875, 16.0938)
+cache/1/16/0/glyphs/76/offset = Vector2(0, -15)
+cache/1/16/0/glyphs/76/size = Vector2(6, 16)
+cache/1/16/0/glyphs/76/uv_rect = Rect2(64, 1, 6, 16)
+cache/1/16/0/glyphs/76/texture_idx = 0
+cache/1/16/0/glyphs/81/advance = Vector2(10.4563, 16.0938)
+cache/1/16/0/glyphs/81/offset = Vector2(0, -12)
+cache/1/16/0/glyphs/81/size = Vector2(12, 13)
+cache/1/16/0/glyphs/81/uv_rect = Rect2(72, 1, 12, 13)
+cache/1/16/0/glyphs/81/texture_idx = 0
+cache/1/16/0/glyphs/43/advance = Vector2(12.3156, 16.0938)
+cache/1/16/0/glyphs/43/offset = Vector2(0, -15)
+cache/1/16/0/glyphs/43/size = Vector2(13, 16)
+cache/1/16/0/glyphs/43/uv_rect = Rect2(86, 1, 13, 16)
+cache/1/16/0/glyphs/43/texture_idx = 0
+cache/1/16/0/glyphs/83/advance = Vector2(10.2688, 16.0938)
+cache/1/16/0/glyphs/83/offset = Vector2(0, -12)
+cache/1/16/0/glyphs/83/size = Vector2(12, 17)
+cache/1/16/0/glyphs/83/uv_rect = Rect2(1, 19, 12, 17)
+cache/1/16/0/glyphs/83/texture_idx = 0
+cache/1/16/0/glyphs/85/advance = Vector2(7.20625, 16.0938)
+cache/1/16/0/glyphs/85/offset = Vector2(0, -12)
+cache/1/16/0/glyphs/85/size = Vector2(9, 13)
+cache/1/16/0/glyphs/85/uv_rect = Rect2(101, 1, 9, 13)
+cache/1/16/0/glyphs/85/texture_idx = 0
+cache/1/16/0/glyphs/58/advance = Vector2(15.4406, 16.0938)
+cache/1/16/0/glyphs/58/offset = Vector2(-2, -15)
+cache/1/16/0/glyphs/58/size = Vector2(20, 16)
+cache/1/16/0/glyphs/58/uv_rect = Rect2(112, 1, 20, 16)
+cache/1/16/0/glyphs/58/texture_idx = 0
+cache/1/16/0/glyphs/78/advance = Vector2(9.45625, 16.0938)
+cache/1/16/0/glyphs/78/offset = Vector2(0, -15)
+cache/1/16/0/glyphs/78/size = Vector2(12, 16)
+cache/1/16/0/glyphs/78/uv_rect = Rect2(134, 1, 12, 16)
+cache/1/16/0/glyphs/78/texture_idx = 0
+cache/1/16/0/glyphs/55/advance = Vector2(9.3625, 16.0938)
+cache/1/16/0/glyphs/55/offset = Vector2(-1, -15)
+cache/1/16/0/glyphs/55/size = Vector2(12, 16)
+cache/1/16/0/glyphs/55/uv_rect = Rect2(148, 1, 12, 16)
+cache/1/16/0/glyphs/55/texture_idx = 0
+cache/1/16/0/glyphs/82/advance = Vector2(10.0813, 16.0938)
+cache/1/16/0/glyphs/82/offset = Vector2(-1, -12)
+cache/1/16/0/glyphs/82/size = Vector2(13, 13)
+cache/1/16/0/glyphs/82/uv_rect = Rect2(162, 1, 13, 13)
+cache/1/16/0/glyphs/82/texture_idx = 0
+cache/1/16/0/glyphs/51/advance = Vector2(10.1438, 16.0938)
+cache/1/16/0/glyphs/51/offset = Vector2(0, -15)
+cache/1/16/0/glyphs/51/size = Vector2(12, 16)
+cache/1/16/0/glyphs/51/uv_rect = Rect2(177, 1, 12, 16)
+cache/1/16/0/glyphs/51/texture_idx = 0
+cache/1/16/0/glyphs/70/advance = Vector2(8.22188, 16.0938)
+cache/1/16/0/glyphs/70/offset = Vector2(-1, -12)
+cache/1/16/0/glyphs/70/size = Vector2(11, 13)
+cache/1/16/0/glyphs/70/uv_rect = Rect2(191, 1, 11, 13)
+cache/1/16/0/glyphs/70/texture_idx = 0
+cache/1/16/0/glyphs/75/advance = Vector2(10.4563, 16.0938)
+cache/1/16/0/glyphs/75/offset = Vector2(0, -15)
+cache/1/16/0/glyphs/75/size = Vector2(12, 16)
+cache/1/16/0/glyphs/75/uv_rect = Rect2(204, 1, 12, 16)
+cache/1/16/0/glyphs/75/texture_idx = 0
+cache/1/16/0/glyphs/88/advance = Vector2(10.4563, 16.0938)
+cache/1/16/0/glyphs/88/offset = Vector2(0, -12)
+cache/1/16/0/glyphs/88/size = Vector2(12, 13)
+cache/1/16/0/glyphs/88/uv_rect = Rect2(218, 1, 12, 13)
+cache/1/16/0/glyphs/88/texture_idx = 0
+cache/1/16/0/glyphs/38/advance = Vector2(10.4406, 16.0938)
+cache/1/16/0/glyphs/38/offset = Vector2(-1, -15)
+cache/1/16/0/glyphs/38/size = Vector2(13, 16)
+cache/1/16/0/glyphs/38/uv_rect = Rect2(232, 1, 13, 16)
+cache/1/16/0/glyphs/38/texture_idx = 0
+cache/1/16/0/glyphs/69/advance = Vector2(10.2688, 16.0938)
+cache/1/16/0/glyphs/69/offset = Vector2(0, -15)
+cache/1/16/0/glyphs/69/size = Vector2(12, 16)
+cache/1/16/0/glyphs/69/uv_rect = Rect2(15, 19, 12, 16)
+cache/1/16/0/glyphs/69/texture_idx = 0
+cache/1/16/0/glyphs/39/advance = Vector2(12.05, 16.0938)
+cache/1/16/0/glyphs/39/offset = Vector2(0, -15)
+cache/1/16/0/glyphs/39/size = Vector2(13, 16)
+cache/1/16/0/glyphs/39/uv_rect = Rect2(29, 19, 13, 16)
+cache/1/16/0/glyphs/39/texture_idx = 0
+cache/1/16/0/glyphs/74/advance = Vector2(9.20625, 16.0938)
+cache/1/16/0/glyphs/74/offset = Vector2(-1, -12)
+cache/1/16/0/glyphs/74/size = Vector2(12, 17)
+cache/1/16/0/glyphs/74/uv_rect = Rect2(44, 19, 12, 17)
+cache/1/16/0/glyphs/74/texture_idx = 0
+cache/1/16/0/glyphs/87/advance = Vector2(6.59688, 16.0938)
+cache/1/16/0/glyphs/87/offset = Vector2(-1, -14)
+cache/1/16/0/glyphs/87/size = Vector2(10, 15)
+cache/1/16/0/glyphs/87/uv_rect = Rect2(58, 19, 10, 15)
+cache/1/16/0/glyphs/87/texture_idx = 0
+cache/1/16/0/kerning_overrides/16/0 = Vector2(0, 0)
+
+[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_0t24x"]
+content_margin_left = 4.0
+content_margin_top = 4.0
+content_margin_right = 4.0
+content_margin_bottom = 4.0
+
+[sub_resource type="Image" id="Image_edeay"]
+data = {
+"data": PackedByteArray(255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 94, 94, 127, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 231, 255, 94, 94, 54, 255, 94, 94, 57, 255, 93, 93, 233, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 93, 93, 41, 255, 255, 255, 0, 255, 255, 255, 0, 255, 97, 97, 42, 255, 93, 93, 233, 255, 93, 93, 232, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 44, 255, 255, 255, 0, 255, 97, 97, 42, 255, 97, 97, 42, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 96, 96, 45, 255, 93, 93, 235, 255, 94, 94, 234, 255, 95, 95, 43, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 93, 93, 235, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 233, 255, 95, 95, 59, 255, 96, 96, 61, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 93, 93, 255, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0),
+"format": "RGBA8",
+"height": 16,
+"mipmaps": false,
+"width": 16
+}
+
+[sub_resource type="ImageTexture" id="ImageTexture_3vfrx"]
+image = SubResource("Image_edeay")
+
+[node name="MigrationStep" type="HBoxContainer"]
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+script = ExtResource("1_if6f3")
+
+[node name="CheckBox" type="CheckBox" parent="."]
+layout_mode = 2
+size_flags_vertical = 4
+mouse_filter = 2
+
+[node name="Description" type="RichTextLabel" parent="."]
+layout_mode = 2
+size_flags_horizontal = 3
+theme_override_fonts/normal_font = SubResource("FontFile_q72mg")
+theme_override_fonts/bold_font = SubResource("FontFile_q72mg")
+theme_override_styles/normal = SubResource("StyleBoxEmpty_0t24x")
+bbcode_enabled = true
+text = "Remove [b]BaselineHelper[/b] and [b]WalkToHelper[/b] nodes in [b]PopochiuClickable[/b]s. Also remove [b]DialogPos[/b] node in [b]PopochiuCharacter[/b]s. (prior release)"
+fit_content = true
+
+[node name="Progress" type="TextureRect" parent="."]
+custom_minimum_size = Vector2(24, 24)
+layout_mode = 2
+texture = SubResource("ImageTexture_3vfrx")
+stretch_mode = 5
diff --git a/addons/popochiu/editor/popups/migrations_panel/migration_tab.gd b/addons/popochiu/editor/popups/migrations_panel/migration_tab.gd
new file mode 100644
index 0000000..88e8638
--- /dev/null
+++ b/addons/popochiu/editor/popups/migrations_panel/migration_tab.gd
@@ -0,0 +1,44 @@
+@tool
+extends PanelContainer
+
+const MIGRATION_STEP_SCENE = preload(
+ "res://addons/popochiu/editor/popups/migrations_panel/migration_step.tscn"
+)
+const MigrationStep = preload(
+ "res://addons/popochiu/editor/popups/migrations_panel/migration_step.gd"
+)
+
+@onready var description: Label = %Description
+@onready var steps: VBoxContainer = %Steps
+
+
+#region Public #####################################################################################
+func set_steps(steps_texts: Array) -> void:
+ for text: String in steps_texts:
+ var step: MigrationStep = MIGRATION_STEP_SCENE.instantiate()
+ steps.add_child(step)
+ step.description.text = text
+
+
+func start_step(idx: int) -> void:
+ (steps.get_child(idx) as MigrationStep).start()
+
+
+func update_steps(popochiu_migration: PopochiuMigration) -> void:
+ for idx: int in popochiu_migration.completed:
+ var step: MigrationStep = steps.get_child(idx)
+ step.check_box.set_pressed_no_signal(true)
+ step.stop()
+
+ for idx: int in popochiu_migration.ignored:
+ var step: MigrationStep = steps.get_child(idx)
+ step.check_box.set_pressed_no_signal(false)
+ step.modulate.a = 0.5
+ step.stop()
+
+
+func get_total_height() -> float:
+ return description.size.y + steps.size.y
+
+
+#endregion
diff --git a/addons/popochiu/editor/popups/migrations_panel/migration_tab.gd.uid b/addons/popochiu/editor/popups/migrations_panel/migration_tab.gd.uid
new file mode 100644
index 0000000..39a0a97
--- /dev/null
+++ b/addons/popochiu/editor/popups/migrations_panel/migration_tab.gd.uid
@@ -0,0 +1 @@
+uid://uwi5nm4r2p1k
diff --git a/addons/popochiu/editor/popups/migrations_panel/migration_tab.tscn b/addons/popochiu/editor/popups/migrations_panel/migration_tab.tscn
new file mode 100644
index 0000000..df2ee9f
--- /dev/null
+++ b/addons/popochiu/editor/popups/migrations_panel/migration_tab.tscn
@@ -0,0 +1,35 @@
+[gd_scene load_steps=2 format=3 uid="uid://c1ivmn6tasatp"]
+
+[ext_resource type="Script" path="res://addons/popochiu/editor/popups/migrations_panel/migration_tab.gd" id="1_2mn16"]
+
+[node name="MigrationTab" type="PanelContainer"]
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+script = ExtResource("1_2mn16")
+
+[node name="VBoxContainer" type="VBoxContainer" parent="."]
+layout_mode = 2
+
+[node name="Description" type="Label" parent="VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+text = "The migration Description"
+
+[node name="HSeparator" type="HSeparator" parent="VBoxContainer"]
+layout_mode = 2
+
+[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer"]
+layout_mode = 2
+size_flags_vertical = 3
+theme_override_constants/margin_left = 4
+theme_override_constants/margin_top = 4
+theme_override_constants/margin_right = 4
+theme_override_constants/margin_bottom = 4
+
+[node name="Steps" type="VBoxContainer" parent="VBoxContainer/MarginContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+theme_override_constants/separation = 8
diff --git a/addons/popochiu/editor/popups/migrations_panel/migrations_panel.gd b/addons/popochiu/editor/popups/migrations_panel/migrations_panel.gd
new file mode 100644
index 0000000..4442e9b
--- /dev/null
+++ b/addons/popochiu/editor/popups/migrations_panel/migrations_panel.gd
@@ -0,0 +1,50 @@
+@tool
+extends Control
+
+const MIGRATION_TAB_SCENE = preload(
+ "res://addons/popochiu/editor/popups/migrations_panel/migration_tab.tscn"
+)
+const MigrationTab = preload(
+ "res://addons/popochiu/editor/popups/migrations_panel/migration_tab.gd"
+)
+
+@onready var tab_container: TabContainer = %TabContainer
+@onready var reload_label: Label = %ReloadLabel
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ reload_label.hide()
+
+
+#endregion
+
+#region Public #####################################################################################
+func add_migration(popochiu_migration: PopochiuMigration) -> void:
+ var migration := MIGRATION_TAB_SCENE.instantiate()
+ tab_container.add_child.call_deferred(migration)
+ await migration.ready
+
+ migration.name = popochiu_migration.get_migration_name()
+ migration.anchors_preset = Control.PRESET_FULL_RECT
+ migration.description.text = popochiu_migration.DESCRIPTION
+ migration.set_steps(popochiu_migration.STEPS)
+
+
+func start_step(popochiu_migration: PopochiuMigration, idx: int) -> void:
+ var migration_tab: MigrationTab = tab_container.get_node(
+ popochiu_migration.get_migration_name()
+ )
+ tab_container.current_tab = migration_tab.get_index()
+ migration_tab.start_step(idx)
+
+
+func update_steps(popochiu_migration: PopochiuMigration) -> void:
+ var migration_tab: MigrationTab = tab_container.get_node(
+ popochiu_migration.get_migration_name()
+ )
+ tab_container.current_tab = migration_tab.get_index()
+ migration_tab.update_steps(popochiu_migration)
+
+
+#endregion
diff --git a/addons/popochiu/editor/popups/migrations_panel/migrations_panel.gd.uid b/addons/popochiu/editor/popups/migrations_panel/migrations_panel.gd.uid
new file mode 100644
index 0000000..f89256e
--- /dev/null
+++ b/addons/popochiu/editor/popups/migrations_panel/migrations_panel.gd.uid
@@ -0,0 +1 @@
+uid://bonq4almsk3mc
diff --git a/addons/popochiu/editor/popups/migrations_panel/migrations_panel.tscn b/addons/popochiu/editor/popups/migrations_panel/migrations_panel.tscn
new file mode 100644
index 0000000..f29ed1e
--- /dev/null
+++ b/addons/popochiu/editor/popups/migrations_panel/migrations_panel.tscn
@@ -0,0 +1,36 @@
+[gd_scene load_steps=2 format=3 uid="uid://dws64ahd0a1s6"]
+
+[ext_resource type="Script" path="res://addons/popochiu/editor/popups/migrations_panel/migrations_panel.gd" id="1_brkhu"]
+
+[node name="MigrationsPanel" type="Control"]
+layout_mode = 3
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+script = ExtResource("1_brkhu")
+
+[node name="PanelContainer" type="PanelContainer" parent="."]
+layout_mode = 1
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+
+[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"]
+layout_mode = 2
+
+[node name="TabContainer" type="TabContainer" parent="PanelContainer/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_vertical = 3
+
+[node name="ReloadLabel" type="Label" parent="PanelContainer/VBoxContainer"]
+unique_name_in_owner = true
+visible = false
+custom_minimum_size = Vector2(320, 0)
+layout_mode = 2
+text = "The engine will restart after clicking OK."
+autowrap_mode = 2
diff --git a/addons/popochiu/editor/popups/progress/progress.gd b/addons/popochiu/editor/popups/progress/progress.gd
new file mode 100644
index 0000000..fb0a885
--- /dev/null
+++ b/addons/popochiu/editor/popups/progress/progress.gd
@@ -0,0 +1,13 @@
+@tool
+extends Control
+
+@onready var label: Label = %Label
+@onready var progress_bar: ProgressBar = %ProgressBar
+
+
+#region Public #####################################################################################
+func close() -> void:
+ get_parent().queue_free()
+
+
+#endregion
diff --git a/addons/popochiu/editor/popups/progress/progress.gd.uid b/addons/popochiu/editor/popups/progress/progress.gd.uid
new file mode 100644
index 0000000..77a7d72
--- /dev/null
+++ b/addons/popochiu/editor/popups/progress/progress.gd.uid
@@ -0,0 +1 @@
+uid://c7auv18imrv6o
diff --git a/addons/popochiu/editor/popups/progress/progress.tscn b/addons/popochiu/editor/popups/progress/progress.tscn
new file mode 100644
index 0000000..ec4790f
--- /dev/null
+++ b/addons/popochiu/editor/popups/progress/progress.tscn
@@ -0,0 +1,40 @@
+[gd_scene load_steps=2 format=3 uid="uid://2smr378ligwp"]
+
+[ext_resource type="Script" path="res://addons/popochiu/editor/popups/progress/progress.gd" id="1_hl3vb"]
+
+[node name="ProgressDialog" type="Control"]
+layout_mode = 3
+anchors_preset = 15
+anchor_right = 1.0
+anchor_bottom = 1.0
+grow_horizontal = 2
+grow_vertical = 2
+script = ExtResource("1_hl3vb")
+
+[node name="PanelContainer" type="PanelContainer" parent="."]
+layout_mode = 1
+anchors_preset = 10
+anchor_right = 1.0
+offset_bottom = 54.0
+grow_horizontal = 2
+
+[node name="MarginContainer" type="MarginContainer" parent="PanelContainer"]
+layout_mode = 2
+theme_override_constants/margin_left = 8
+theme_override_constants/margin_right = 8
+theme_override_constants/margin_bottom = 8
+
+[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer"]
+layout_mode = 2
+alignment = 1
+
+[node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+text = "Text..."
+horizontal_alignment = 1
+
+[node name="ProgressBar" type="ProgressBar" parent="PanelContainer/MarginContainer/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_vertical = 4
diff --git a/addons/popochiu/editor/popups/setup/gui_template_button.gd b/addons/popochiu/editor/popups/setup/gui_template_button.gd
new file mode 100644
index 0000000..30be135
--- /dev/null
+++ b/addons/popochiu/editor/popups/setup/gui_template_button.gd
@@ -0,0 +1,4 @@
+extends Button
+
+@export_multiline var description := ""
+@export var reference: Texture
diff --git a/addons/popochiu/editor/popups/setup/gui_template_button.gd.uid b/addons/popochiu/editor/popups/setup/gui_template_button.gd.uid
new file mode 100644
index 0000000..9cfdbf4
--- /dev/null
+++ b/addons/popochiu/editor/popups/setup/gui_template_button.gd.uid
@@ -0,0 +1 @@
+uid://jipsgr06wtsu
diff --git a/addons/popochiu/editor/popups/setup/setup.gd b/addons/popochiu/editor/popups/setup/setup.gd
new file mode 100644
index 0000000..1a7f5c8
--- /dev/null
+++ b/addons/popochiu/editor/popups/setup/setup.gd
@@ -0,0 +1,322 @@
+@tool
+extends Control
+
+signal template_copy_completed
+signal size_calculated
+
+enum GameTypes {
+ CUSTOM,
+ HD,
+ RETRO_PIXEL,
+}
+
+const SCALE_MESSAGE =\
+"[center]βΆ Base size = 356x200 | [b]scale = ( %.2f, %.2f )[/b] β[/center]\n\
+By default the GUI will match your native game resolution. You can change this with the\
+ [code]Project Settings > Popochiu > GUI > Experimental Scale Gui[/code] checkbox."
+const COPY_ALPHA = 0.1
+const GUITemplateButton = preload(
+ "res://addons/popochiu/editor/popups/setup/gui_template_button.gd"
+)
+const PopochiuGuiTemplatesHelper = preload(
+ "res://addons/popochiu/editor/helpers/popochiu_gui_templates_helper.gd"
+)
+
+var _selected_template: GUITemplateButton
+var _is_closing := false
+var _es := EditorInterface.get_editor_settings()
+
+@onready var welcome: RichTextLabel = %Welcome
+@onready var game_width: SpinBox = %GameWidth
+@onready var game_height: SpinBox = %GameHeight
+@onready var scale_message: RichTextLabel = %ScaleMessage
+@onready var test_width: SpinBox = %TestWidth
+@onready var test_height: SpinBox = %TestHeight
+@onready var game_type: OptionButton = %GameType
+# ---- GUI templates section -----------------------------------------------------------------------
+@onready var gui_templates: HBoxContainer = %GUITemplates
+@onready var gui_templates_title: Label = %GUITemplatesTitle
+@onready var gui_templates_description: Label = %GUITemplatesDescription
+@onready var template_description_container: PanelContainer = %TemplateDescriptionContainer
+@onready var template_description: RichTextLabel = %TemplateDescription
+@onready var btn_change_template: Button = %BtnChangeTemplate
+@onready var copy_process_container: MarginContainer = %CopyProcessContainer
+@onready var copy_process_panel: PanelContainer = %CopyProcessPanel
+@onready var copy_process_label: Label = %CopyProcessLabel
+@onready var copy_process_bar: ProgressBar = %CopyProcessBar
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ # Connect to child signals
+ game_width.value_changed.connect(_update_scale)
+ game_height.value_changed.connect(_update_scale)
+ btn_change_template.pressed.connect(_show_template_change_confirmation)
+
+ # Set default state
+ template_description_container.hide()
+ template_description.text = ""
+
+
+#endregion
+
+#region Public #####################################################################################
+func on_about_to_popup() -> void:
+ welcome.add_theme_font_override("bold_font", get_theme_font("bold", "EditorFonts"))
+ scale_message.add_theme_font_override("normal_font", get_theme_font("main", "EditorFonts"))
+ scale_message.add_theme_font_override("bold_font", get_theme_font("bold", "EditorFonts"))
+ scale_message.add_theme_font_override("mono_font", get_theme_font("doc_source", "EditorFonts"))
+ gui_templates_title.add_theme_font_override("font", get_theme_font("bold", "EditorFonts"))
+ gui_templates_description.add_theme_font_override(
+ "font", get_theme_font("doc_source", "EditorFonts")
+ )
+ template_description.add_theme_font_override("bold_font", get_theme_font("bold", "EditorFonts"))
+
+
+func on_close() -> void:
+ if _is_closing:
+ return
+
+ _is_closing = true
+
+ ProjectSettings.set_setting(PopochiuResources.DISPLAY_WIDTH, int(game_width.value))
+ ProjectSettings.set_setting(PopochiuResources.DISPLAY_HEIGHT, int(game_height.value))
+ ProjectSettings.set_setting(PopochiuResources.TEST_WIDTH, int(test_width.value))
+ ProjectSettings.set_setting(PopochiuResources.TEST_HEIGHT, int(test_height.value))
+
+ match game_type.selected:
+ GameTypes.HD:
+ ProjectSettings.set_setting(PopochiuResources.STRETCH_MODE, "canvas_items")
+ ProjectSettings.set_setting(PopochiuResources.STRETCH_ASPECT, "expand")
+
+ PopochiuConfig.set_pixel_art_textures(false)
+ GameTypes.RETRO_PIXEL:
+ ProjectSettings.set_setting(PopochiuResources.STRETCH_MODE, "canvas_items")
+ ProjectSettings.set_setting(PopochiuResources.STRETCH_ASPECT, "keep")
+
+ PopochiuConfig.set_pixel_art_textures(true)
+
+ if not PopochiuResources.is_setup_done() or not PopochiuResources.is_gui_set():
+ PopochiuResources.set_data_value("setup", "done", true)
+ await _copy_template(true)
+
+ get_parent().queue_free()
+
+
+func define_content(show_welcome := false) -> void:
+ _is_closing = false
+ _selected_template = null
+ btn_change_template.hide()
+ copy_process_container.hide()
+
+ scale_message.modulate = Color(
+ "#000" if "Light3D" in _es.get_setting("interface/theme/preset") else "#fff"
+ )
+ scale_message.modulate.a = 0.8
+
+ copy_process_panel.add_theme_stylebox_override(
+ "panel", get_theme_stylebox("panel", "PopupPanel")
+ )
+
+ if not show_welcome:
+ welcome.text = "[center][b]POPOCHIU [shake]\\( u )3(u)/[/shake][/b][/center]"
+ btn_change_template.disabled = true
+ btn_change_template.show()
+
+ # ---- Set initial values for fields ---------------------------------------
+ game_width.value = ProjectSettings.get_setting(PopochiuResources.DISPLAY_WIDTH)
+ game_height.value = ProjectSettings.get_setting(PopochiuResources.DISPLAY_HEIGHT)
+ test_width.value = ProjectSettings.get_setting(PopochiuResources.TEST_WIDTH)
+ test_height.value = ProjectSettings.get_setting(PopochiuResources.TEST_HEIGHT)
+ scale_message.text = _get_scale_message()
+
+ game_type.selected = GameTypes.CUSTOM
+
+ if ProjectSettings.get_setting(PopochiuResources.STRETCH_MODE) == "canvas_items":
+ match ProjectSettings.get_setting(PopochiuResources.STRETCH_ASPECT):
+ "expand":
+ game_type.selected = GameTypes.HD
+ "keep":
+ game_type.selected = GameTypes.RETRO_PIXEL
+
+ # Load the list of templates
+ await _load_templates()
+
+ _select_config_template()
+
+ if show_welcome:
+ # Make Pixel the default game type checked during first run
+ game_type.selected = GameTypes.RETRO_PIXEL
+
+ if PopochiuResources.GUI_GAME_SCENE in EditorInterface.get_open_scenes():
+ _show_gui_warning()
+
+ for btn: Button in gui_templates.get_children():
+ btn.disabled = true
+
+ template_description_container.hide()
+
+ _update_size()
+
+
+#endregion
+
+#region Private ####################################################################################
+func _update_scale(_value: float) -> void:
+ scale_message.text = _get_scale_message()
+
+
+func _get_scale_message() -> String:
+ var scale := Vector2(game_width.value, game_height.value) / PopochiuResources.RETRO_RESOLUTION
+ return SCALE_MESSAGE % [scale.x, scale.y]
+
+
+func _on_gui_template_selected(button: GUITemplateButton) -> void:
+ for btn in gui_templates.get_children():
+ if not btn is GUITemplateButton: continue
+
+ (btn as GUITemplateButton).set_pressed_no_signal(false)
+
+ button.set_pressed_no_signal(true)
+ _selected_template = button
+
+ template_description.text = button.description
+ template_description_container.show()
+
+ if PopochiuResources.get_data_value("setup", "done", false) == true:
+ btn_change_template.disabled = (
+ _selected_template.name == PopochiuResources.get_data_value("ui", "template", "")
+ )
+
+ _update_size()
+
+
+func _select_config_template() -> void:
+ var current_template: String = PopochiuResources.get_data_value("ui", "template", "")
+
+ for btn: Button in gui_templates.get_children():
+ if not btn is GUITemplateButton: continue
+
+ btn.disabled = false
+
+ if not btn.pressed.is_connected(_on_gui_template_selected):
+ btn.pressed.connect(_on_gui_template_selected.bind(btn))
+
+ if current_template == btn.name:
+ _on_gui_template_selected(btn)
+
+ if not _selected_template:
+ _on_gui_template_selected(gui_templates.get_child(3))
+
+
+func _show_gui_warning() -> void:
+ var warning_dialog := AcceptDialog.new()
+ _setup_inner_dialog(
+ warning_dialog,
+ "GUI template warning",
+ "The GUI scene (gui.tscn) is currently opened in the Editor.\n\n" +\
+ "In order to change the GUI template please close that scene first."
+ )
+
+ add_child(warning_dialog)
+ warning_dialog.popup_centered()
+
+
+func _show_template_change_confirmation() -> void:
+ var confirmation_dialog := ConfirmationDialog.new()
+ _setup_inner_dialog(
+ confirmation_dialog,
+ "Confirm GUI template change",
+ "You changed the GUI template, making this will override any changes you made to the files\
+ in res://game/gui/.\n\nAre you sure you want to make the change?"
+ )
+
+ confirmation_dialog.confirmed.connect(
+ func():
+ confirmation_dialog.queue_free()
+ _copy_template()
+ )
+
+ add_child(confirmation_dialog)
+ confirmation_dialog.popup_centered()
+
+
+func _setup_inner_dialog(dialog: Window, ttl: String, txt: String) -> void:
+ dialog.title = ttl
+ dialog.dialog_text = txt
+ dialog.dialog_autowrap = true
+ dialog.min_size.x = size.x - 64
+
+
+func _load_templates() -> void:
+ for idx in range(1, gui_templates.get_child_count()):
+ gui_templates.get_child(idx).free()
+
+ # This is better than awating for SceneTree.process_frame
+ await get_tree().process_frame
+
+ for dir_name: String in DirAccess.get_directories_at(PopochiuResources.GUI_TEMPLATES_FOLDER):
+ var template_info: PopochiuGUIInfo = load(PopochiuResources.GUI_TEMPLATES_FOLDER.path_join(
+ "%s/%s_gui_info.tres" % [dir_name, dir_name]
+ ))
+
+ var button := GUITemplateButton.new()
+ button.toggle_mode = true
+ button.custom_minimum_size = Vector2.ONE * 128.0
+ button.name = dir_name.to_pascal_case()
+ button.text = (
+ dir_name.capitalize() if template_info.title.is_empty() else template_info.title
+ )
+ button.description = template_info.description
+ button.icon = template_info.icon
+ button.icon_alignment = HORIZONTAL_ALIGNMENT_CENTER
+ button.vertical_icon_alignment = VERTICAL_ALIGNMENT_TOP
+ button.expand_icon = true
+ button.texture_filter = CanvasItem.TEXTURE_FILTER_NEAREST
+ button.mouse_default_cursor_shape = Control.CURSOR_POINTING_HAND
+
+ gui_templates.add_child(button)
+
+
+func _copy_template(is_first_copy := false) -> void:
+ get_parent().get_ok_button().disabled = true
+
+ $PanelContainer/VBoxContainer.modulate.a = COPY_ALPHA
+ copy_process_label.text = ""
+ copy_process_bar.value = 0
+
+ PopochiuGuiTemplatesHelper.copy_gui_template(
+ _selected_template.name, _template_copy_progressed, _template_copy_completed
+ )
+
+ copy_process_container.show()
+
+ # if true, make the popup visible so devs can see the copy process feedback
+ if is_first_copy:
+ get_parent().visible = true
+ await template_copy_completed
+
+
+func _template_copy_progressed(value: int, message: String) -> void:
+ copy_process_label.text = message
+ copy_process_bar.value = value
+
+
+func _template_copy_completed() -> void:
+ get_parent().get_ok_button().disabled = false
+ btn_change_template.disabled = true
+ $PanelContainer/VBoxContainer.modulate.a = 1
+
+ copy_process_container.hide()
+ template_copy_completed.emit()
+
+
+func _update_size() -> void:
+ # Wait for the popup content to be rendered in order to get its size
+ await get_tree().create_timer(0.05).timeout
+
+ custom_minimum_size = get_child(0).size
+ size_calculated.emit()
+
+
+#endregion
diff --git a/addons/popochiu/editor/popups/setup/setup.gd.uid b/addons/popochiu/editor/popups/setup/setup.gd.uid
new file mode 100644
index 0000000..223547b
--- /dev/null
+++ b/addons/popochiu/editor/popups/setup/setup.gd.uid
@@ -0,0 +1 @@
+uid://bnrugyidqycwj
diff --git a/addons/popochiu/editor/popups/setup/setup.tscn b/addons/popochiu/editor/popups/setup/setup.tscn
new file mode 100644
index 0000000..80286c5
--- /dev/null
+++ b/addons/popochiu/editor/popups/setup/setup.tscn
@@ -0,0 +1,307 @@
+[gd_scene load_steps=5 format=3 uid="uid://c3r8juwutb1gr"]
+
+[ext_resource type="Script" path="res://addons/popochiu/editor/popups/setup/setup.gd" id="1_vjboj"]
+[ext_resource type="Script" path="res://addons/popochiu/editor/popups/setup/gui_template_button.gd" id="3_jf6nd"]
+[ext_resource type="Texture2D" uid="uid://c00kw8v34vtsb" path="res://addons/popochiu/icons/ico_custom.png" id="5_joicf"]
+
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ntnwv"]
+content_margin_left = 8.0
+content_margin_top = 8.0
+content_margin_right = 8.0
+content_margin_bottom = 8.0
+bg_color = Color(0.698039, 0.698039, 0.698039, 1)
+draw_center = false
+border_width_left = 2
+border_width_top = 2
+border_width_right = 2
+border_width_bottom = 2
+corner_radius_top_left = 4
+corner_radius_top_right = 4
+corner_radius_bottom_right = 4
+corner_radius_bottom_left = 4
+
+[node name="Setup" type="Control"]
+custom_minimum_size = Vector2(560, 608)
+layout_mode = 3
+anchors_preset = 0
+offset_right = 560.0
+offset_bottom = 608.0
+script = ExtResource("1_vjboj")
+
+[node name="PanelContainer" type="PanelContainer" parent="."]
+custom_minimum_size = Vector2(560, 608)
+layout_mode = 1
+anchors_preset = 10
+anchor_right = 1.0
+offset_bottom = 607.0
+grow_horizontal = 2
+
+[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"]
+layout_mode = 2
+theme_override_constants/separation = 12
+
+[node name="Welcome" type="RichTextLabel" parent="PanelContainer/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+bbcode_enabled = true
+text = "[center]Welcome to [shake]Popochiu \\( o )3(o)/[/shake][/center]
+
+This popup will appear automatically just this time. You can open it later with the Setup button at the bottom of Popochiu's dock."
+fit_content = true
+scroll_active = false
+meta_underlined = false
+hint_underlined = false
+
+[node name="WelcomeSeparator" type="HSeparator" parent="PanelContainer/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="SizeContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer"]
+layout_mode = 2
+
+[node name="GameSize" type="Label" parent="PanelContainer/VBoxContainer/SizeContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 0
+tooltip_text = "The width and height of the game's window. Changing this will update display/window/size/width and display/window/size/height."
+mouse_filter = 0
+text = "Native game resolution"
+
+[node name="VBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/SizeContainer"]
+layout_mode = 2
+
+[node name="WidthContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/SizeContainer/VBoxContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+
+[node name="GameWidth" type="SpinBox" parent="PanelContainer/VBoxContainer/SizeContainer/VBoxContainer/WidthContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+min_value = 64.0
+max_value = 1440.0
+value = 320.0
+rounded = true
+allow_greater = true
+
+[node name="Width" type="Label" parent="PanelContainer/VBoxContainer/SizeContainer/VBoxContainer/WidthContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+text = "width"
+
+[node name="HeightContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/SizeContainer/VBoxContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+
+[node name="GameHeight" type="SpinBox" parent="PanelContainer/VBoxContainer/SizeContainer/VBoxContainer/HeightContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+min_value = 64.0
+max_value = 1440.0
+value = 180.0
+rounded = true
+allow_greater = true
+
+[node name="Height" type="Label" parent="PanelContainer/VBoxContainer/SizeContainer/VBoxContainer/HeightContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+text = "height"
+
+[node name="ScaleMessage" type="RichTextLabel" parent="PanelContainer/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+bbcode_enabled = true
+fit_content = true
+scroll_active = false
+
+[node name="TestContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer"]
+layout_mode = 2
+
+[node name="TestSize" type="Label" parent="PanelContainer/VBoxContainer/TestContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 0
+tooltip_text = "The width and height of the game's test window. Changing this will update display/window/size/test_width and display/window/size/test_height."
+mouse_filter = 0
+text = "Playing window resolution"
+
+[node name="VBoxContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer/TestContainer"]
+layout_mode = 2
+
+[node name="WidthContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/TestContainer/VBoxContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+
+[node name="TestWidth" type="SpinBox" parent="PanelContainer/VBoxContainer/TestContainer/VBoxContainer/WidthContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+max_value = 1440.0
+value = 640.0
+rounded = true
+allow_greater = true
+
+[node name="Width" type="Label" parent="PanelContainer/VBoxContainer/TestContainer/VBoxContainer/WidthContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+text = "width"
+
+[node name="HeightContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/TestContainer/VBoxContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+
+[node name="TestHeight" type="SpinBox" parent="PanelContainer/VBoxContainer/TestContainer/VBoxContainer/HeightContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+max_value = 1440.0
+value = 360.0
+rounded = true
+allow_greater = true
+
+[node name="Height" type="Label" parent="PanelContainer/VBoxContainer/TestContainer/VBoxContainer/HeightContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+text = "height"
+
+[node name="TypeContainer" type="HBoxContainer" parent="PanelContainer/VBoxContainer"]
+layout_mode = 2
+
+[node name="Type" type="Label" parent="PanelContainer/VBoxContainer/TypeContainer"]
+layout_mode = 2
+size_flags_horizontal = 3
+tooltip_text = "The type of game modifies the stretch mode and the default preset for importing 2D images.
+
+Default: No stretch. Texture2D import preset set to: 2D.
+2D: Stretch mode set to 2D and stretch aspect set to keep. Texture2D import preset set to: 2D.
+Pixel: Stretch mode set to 2D and stretch aspect set to keep. Texture2D import preset set to: 2D Pixel."
+mouse_filter = 0
+text = "Game type"
+
+[node name="GameType" type="OptionButton" parent="PanelContainer/VBoxContainer/TypeContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+item_count = 3
+popup/item_0/text = "Custom"
+popup/item_1/text = "2D"
+popup/item_1/id = 1
+popup/item_2/text = "Pixel"
+popup/item_2/id = 2
+
+[node name="TemplateSeparator" type="HSeparator" parent="PanelContainer/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+
+[node name="GUITemplatesPanel" type="PanelContainer" parent="PanelContainer/VBoxContainer"]
+layout_mode = 2
+
+[node name="GUITemplatesContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/GUITemplatesPanel"]
+layout_mode = 2
+
+[node name="GUITemplatesTitle" type="Label" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer"]
+unique_name_in_owner = true
+custom_minimum_size = Vector2(544, 0)
+layout_mode = 2
+text = "GUI Template"
+horizontal_alignment = 1
+autowrap_mode = 3
+
+[node name="GUITemplatesDescription" type="Label" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer"]
+unique_name_in_owner = true
+custom_minimum_size = Vector2(544, 0)
+layout_mode = 2
+text = "Select a template to define the look and feel of your game. Click each button to see a short description."
+horizontal_alignment = 1
+autowrap_mode = 3
+
+[node name="PanelContainer" type="PanelContainer" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer"]
+layout_mode = 2
+theme_override_styles/panel = SubResource("StyleBoxFlat_ntnwv")
+
+[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer/PanelContainer"]
+layout_mode = 2
+
+[node name="GUITemplates" type="HBoxContainer" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer/PanelContainer/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+alignment = 1
+
+[node name="Custom" type="Button" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer/PanelContainer/VBoxContainer/GUITemplates"]
+visible = false
+texture_filter = 1
+custom_minimum_size = Vector2(128, 128)
+layout_mode = 2
+mouse_default_cursor_shape = 2
+toggle_mode = true
+text = "Custom"
+icon = ExtResource("5_joicf")
+icon_alignment = 1
+vertical_icon_alignment = 0
+expand_icon = true
+script = ExtResource("3_jf6nd")
+description = "You are an adventorous developer who wants to implement each own Graphic Interface. [shake]You rock!!![/shake]"
+
+[node name="TemplateDescriptionContainer" type="PanelContainer" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer/PanelContainer/VBoxContainer"]
+unique_name_in_owner = true
+visible = false
+layout_mode = 2
+
+[node name="MarginContainer" type="MarginContainer" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer/PanelContainer/VBoxContainer/TemplateDescriptionContainer"]
+layout_mode = 2
+theme_override_constants/margin_left = 4
+theme_override_constants/margin_top = 4
+theme_override_constants/margin_right = 4
+theme_override_constants/margin_bottom = 4
+
+[node name="TemplateDescription" type="RichTextLabel" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer/PanelContainer/VBoxContainer/TemplateDescriptionContainer/MarginContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_horizontal = 3
+size_flags_vertical = 3
+bbcode_enabled = true
+fit_content = true
+scroll_active = false
+
+[node name="BtnChangeTemplate" type="Button" parent="PanelContainer/VBoxContainer/GUITemplatesPanel/GUITemplatesContainer/PanelContainer/VBoxContainer"]
+unique_name_in_owner = true
+custom_minimum_size = Vector2(0, 48)
+layout_mode = 2
+size_flags_horizontal = 4
+mouse_default_cursor_shape = 2
+text = "Use this GUI Template"
+
+[node name="CopyProcessContainer" type="MarginContainer" parent="PanelContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+theme_override_constants/margin_left = 0
+theme_override_constants/margin_top = 0
+theme_override_constants/margin_right = 0
+theme_override_constants/margin_bottom = 0
+
+[node name="Overlay" type="ColorRect" parent="PanelContainer/CopyProcessContainer"]
+layout_mode = 2
+color = Color(0, 0, 0, 0)
+
+[node name="CopyProcessPanel" type="PanelContainer" parent="PanelContainer/CopyProcessContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_vertical = 4
+
+[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/CopyProcessContainer/CopyProcessPanel"]
+layout_mode = 2
+size_flags_vertical = 4
+
+[node name="CopyProcessBar" type="ProgressBar" parent="PanelContainer/CopyProcessContainer/CopyProcessPanel/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+size_flags_vertical = 4
+value = 50.0
+
+[node name="CopyProcessLabel" type="Label" parent="PanelContainer/CopyProcessContainer/CopyProcessPanel/VBoxContainer"]
+unique_name_in_owner = true
+layout_mode = 2
+text = "Starting GUI template application"
+horizontal_alignment = 1
+vertical_alignment = 1
+uppercase = true
diff --git a/addons/popochiu/engine/audio_manager/audio_cue.gd b/addons/popochiu/engine/audio_manager/audio_cue.gd
new file mode 100644
index 0000000..76eab40
--- /dev/null
+++ b/addons/popochiu/engine/audio_manager/audio_cue.gd
@@ -0,0 +1,179 @@
+@tool
+class_name PopochiuAudioCue
+extends Resource
+## Used to play audio files with extra properties.
+##
+## You can set the pitch (with random values), volume, and audio bus, as well as specify whether
+## it loops, and whether it is 2D positioned.
+
+
+## The audio file to play.
+@export var audio: AudioStream
+## Whether the audio file will loop when played.
+@export var loop := false : set = set_loop
+## Whether this audio cue uses a 2D position.
+@export var is_2d := false
+## Whether the audio can be played simultaneously with other instances of itself. Especially useful
+## for audio cues set in a loop (where [member loop] is [code]true[/code]).
+@export var can_play_simultaneous := true
+## The pitch value (in semitones) to use when playing the audio file.
+@export var pitch := 0.0
+## The volume to use when playing the audio file.
+@export var volume := 0.0
+## The range of values to use for randomly changing the pitch of the audio file when played.
+@export var rnd_pitch := Vector2.ZERO
+## The range of values to use to randomly changing the volume of the audio file when played.
+@export var rnd_volume := Vector2.ZERO
+## Maximum distance from which the audio file is still hearable. This only works if [member is_2d]
+## is [code]true[/code].
+@export var max_distance := 2000
+## The audio bus in which the audio file will be played.
+@export var bus := "Master"
+
+
+#region Public #####################################################################################
+## Plays this audio cue with a fade that lasts [param duration] seconds. If [param wait_to_end] is
+## set to [code]true[/code], the function will wait for the audio to finish. You can specify the
+## starting volume with [param from] and the target volume with [param to], as well as the
+## [param position_2d] of the [AudioStreamPlayer] or [AudioStreamPlayer2D] that will play the audio
+## file.
+func fade(
+ duration := 1.0, wait_to_end := false, from := -80.0, to := INF, position_2d := Vector2.ZERO
+) -> void:
+ if wait_to_end:
+ await PopochiuUtils.e.am.play_fade_cue(resource_name, duration, from, to, position_2d, true)
+ else:
+ PopochiuUtils.e.am.play_fade_cue(resource_name, duration, from, to, position_2d)
+
+
+## Plays this audio cue with a fade that lasts [param duration] seconds. If [param wait_to_end] is
+## set to [code]true[/code], the function will wait for the audio to finish. You can specify the
+## starting volume with [param from] and the target volume with [param to], as well as the
+## [param position_2d] of the [AudioStreamPlayer] or [AudioStreamPlayer2D] that will play the audio
+## file.[br][br]
+## [i]This method is intended to be used inside a [method Popochiu.queue] of instructions.[/i]
+func queue_fade(
+ duration := 1.0, wait_to_end := false, from := -80.0, to := INF, position_2d := Vector2.ZERO
+) -> Callable:
+ return func ():
+ if wait_to_end:
+ await fade(duration, wait_to_end, from, to, position_2d)
+ else:
+ fade(duration, wait_to_end, from, to, position_2d)
+ await PopochiuUtils.e.get_tree().process_frame
+
+
+## Stops the audio cue, with an optional fade effect lasting [param fade_duration] seconds.
+func stop(fade_duration := 0.0) -> void:
+ PopochiuUtils.e.am.stop(resource_name, fade_duration)
+
+
+## Stops the audio cue, with an optional fade effect lasting [param fade_duration] seconds.[br][br]
+## [i]This method is intended to be used inside a [method Popochiu.queue] of instructions.[/i]
+func queue_stop(fade_duration := 0.0) -> Callable:
+ return func ():
+ stop(fade_duration)
+ await PopochiuUtils.e.get_tree().process_frame
+
+
+## Changes the [member AudioStreamPlayer.pitch_scale] of the [AudioStreamPlayer] playing the audio
+## file associated with this audio cue to [param pitch]. If the audio was played with a 2D position,
+## then [member AudioStreamPlayer2D.pitch_scale] will be affected.
+func change_stream_pitch(pitch := 0.0) -> void:
+ PopochiuUtils.e.am.change_cue_pitch(resource_name, pitch)
+
+
+## Changes the [member AudioStreamPlayer.volume_db] of the [AudioStreamPlayer] playing the audio
+## file associated with this audio cue to [param volume]. If the audio was played with a 2D
+## position, then [member AudioStreamPlayer2D.volume_db] will be affected.
+func change_stream_volume(volume := 0.0) -> void:
+ PopochiuUtils.e.am.change_cue_volume(resource_name, volume)
+
+
+## Returns the value of [member AudioStreamPlayer.pitch_scale] to be applied to the
+## [AudioStreamPlayer] playing the audio file associated with this audio cue. If the audio was
+## played with a 2D position, then [member AudioStreamPlayer2D.volume_db] will be affected.
+func get_pitch_scale() -> float:
+ var p := PopochiuUtils.a.semitone_to_pitch(pitch)
+
+ if rnd_pitch != Vector2.ZERO:
+ p = _get_rnd_pitch()
+
+ return p
+
+
+## Returns the playback position of this audio cue.
+func get_cue_playback_position() -> float:
+ return PopochiuUtils.e.am.get_cue_playback_position(resource_name)
+
+
+## Maps [param values] to the properties of this audio cue. This is used by TabAudio when changing
+## the script of the audio cue to one of the types: [AudioCueSound] or [AudioCueMusic].
+func set_values(values: Dictionary) -> void:
+ resource_name = values.resource_name
+ audio = values.audio
+ loop = values.loop
+ is_2d = values.is_2d
+ pitch = values.pitch
+ volume = values.volume
+ rnd_pitch = values.rnd_pitch
+ rnd_volume = values.rnd_volume
+ max_distance = values.max_distance
+ bus = values.bus
+
+
+## Returns the properties of this audio cue as a [Dictionary]. This is used by TabAudio when
+## changing the script of the audio cue to one of the types: [AudioCueSound] or [AudioCueMusic].
+func get_values() -> Dictionary:
+ return {
+ resource_name = resource_name,
+ audio = audio,
+ loop = loop,
+ is_2d = is_2d,
+ pitch = pitch,
+ volume = volume,
+ rnd_pitch = rnd_pitch,
+ rnd_volume = rnd_volume,
+ max_distance = max_distance,
+ bus = bus
+ }
+
+
+## Returns [code]true[/code] if playing.
+func is_playing() -> bool:
+ return PopochiuUtils.a.is_playing_cue(resource_name)
+
+
+#endregion
+
+#region SetGet #####################################################################################
+func set_loop(value: bool) -> void:
+ loop = value
+
+ if not audio: return
+
+ match audio.get_class():
+ 'AudioStreamOggVorbis', 'AudioStreamMP3':
+ audio.loop = value
+ 'AudioStreamWAV':
+ (audio as AudioStreamWAV).loop_mode = (
+ AudioStreamWAV.LOOP_FORWARD if value else AudioStreamWAV.LOOP_DISABLED
+ )
+
+ notify_property_list_changed()
+
+
+#endregion
+
+#region Private ####################################################################################
+func _get_rnd_pitch() -> float:
+ randomize()
+ return PopochiuUtils.a.semitone_to_pitch(pitch + randf_range(rnd_pitch.x, rnd_pitch.y))
+
+
+func _get_rnd_volume() -> float:
+ randomize()
+ return volume + randf_range(rnd_volume.x, rnd_volume.y)
+
+
+#endregion
diff --git a/addons/popochiu/engine/audio_manager/audio_cue.gd.uid b/addons/popochiu/engine/audio_manager/audio_cue.gd.uid
new file mode 100644
index 0000000..24cd0be
--- /dev/null
+++ b/addons/popochiu/engine/audio_manager/audio_cue.gd.uid
@@ -0,0 +1 @@
+uid://btinlvcono726
diff --git a/addons/popochiu/engine/audio_manager/audio_cue_container.gd b/addons/popochiu/engine/audio_manager/audio_cue_container.gd
new file mode 100644
index 0000000..0ba7535
--- /dev/null
+++ b/addons/popochiu/engine/audio_manager/audio_cue_container.gd
@@ -0,0 +1,2 @@
+extends Resource
+
diff --git a/addons/popochiu/engine/audio_manager/audio_cue_container.gd.uid b/addons/popochiu/engine/audio_manager/audio_cue_container.gd.uid
new file mode 100644
index 0000000..1bce9a6
--- /dev/null
+++ b/addons/popochiu/engine/audio_manager/audio_cue_container.gd.uid
@@ -0,0 +1 @@
+uid://7s3126auywka
diff --git a/addons/popochiu/engine/audio_manager/audio_cue_music.gd b/addons/popochiu/engine/audio_manager/audio_cue_music.gd
new file mode 100644
index 0000000..ac2b492
--- /dev/null
+++ b/addons/popochiu/engine/audio_manager/audio_cue_music.gd
@@ -0,0 +1,23 @@
+@tool
+class_name AudioCueMusic
+extends PopochiuAudioCue
+## A specific type of [PopochiuAudioCue] designed for playing music.
+
+
+#region Public #####################################################################################
+## Plays this audio cue. It can fade for [param fade_duration] seconds, and you can change the track
+## starting position in seconds with [param music_position].
+func play(fade_duration := 0.0, music_position := 0.0) -> void:
+ PopochiuUtils.e.am.play_music_cue(resource_name, fade_duration, music_position)
+
+
+## Plays this audio cue. It can fade for [param fade_duration] seconds, and you can change the track
+## starting position in seconds with [param music_position].[br][br]
+## [i]This method is intended to be used inside a [method Popochiu.queue] of instructions.[/i]
+func queue_play(fade_duration := 0.0, music_position := 0.0) -> Callable:
+ return func ():
+ await play(fade_duration, music_position)
+ await PopochiuUtils.e.get_tree().process_frame
+
+
+#endregion
diff --git a/addons/popochiu/engine/audio_manager/audio_cue_music.gd.uid b/addons/popochiu/engine/audio_manager/audio_cue_music.gd.uid
new file mode 100644
index 0000000..6a6dd4c
--- /dev/null
+++ b/addons/popochiu/engine/audio_manager/audio_cue_music.gd.uid
@@ -0,0 +1 @@
+uid://bccg7ywc586ng
diff --git a/addons/popochiu/engine/audio_manager/audio_cue_sound.gd b/addons/popochiu/engine/audio_manager/audio_cue_sound.gd
new file mode 100644
index 0000000..9df32e6
--- /dev/null
+++ b/addons/popochiu/engine/audio_manager/audio_cue_sound.gd
@@ -0,0 +1,31 @@
+@tool
+class_name AudioCueSound
+extends PopochiuAudioCue
+## A specific type of [PopochiuAudioCue] designed for playing sounds.
+
+
+#region Public #####################################################################################
+## Plays this audio cue. If [param wait_to_end] is set to [code]true[/code], the function will pause
+## until the audio clip finishes. You can play the file from a specific [param position_2d] in the
+## scene if [member PopochiuAudioCue.is_2d] is [code]true[/code].
+func play(wait_to_end := false, position_2d := Vector2.ZERO) -> void:
+ if wait_to_end:
+ await PopochiuUtils.e.am.play_sound_cue(resource_name, position_2d, true)
+ else:
+ PopochiuUtils.e.am.play_sound_cue(resource_name, position_2d)
+
+
+## Plays this audio cue. If [param wait_to_end] is set to [code]true[/code], the function will pause
+## until the audio clip finishes. You can play the file from a specific [param position_2d] in the
+## scene if [member PopochiuAudioCue.is_2d] is [code]true[/code].[br][br]
+## [i]This method is intended to be used inside a [method Popochiu.queue] of instructions.[/i]
+func queue_play(wait_to_end := false, position_2d := Vector2.ZERO) -> Callable:
+ return func ():
+ if wait_to_end:
+ await play(true, position_2d)
+ else:
+ play(false, position_2d)
+ await PopochiuUtils.e.get_tree().process_frame
+
+
+#endregion
diff --git a/addons/popochiu/engine/audio_manager/audio_cue_sound.gd.uid b/addons/popochiu/engine/audio_manager/audio_cue_sound.gd.uid
new file mode 100644
index 0000000..5888beb
--- /dev/null
+++ b/addons/popochiu/engine/audio_manager/audio_cue_sound.gd.uid
@@ -0,0 +1 @@
+uid://cqbmt4xruu8eo
diff --git a/addons/popochiu/engine/audio_manager/audio_manager.gd b/addons/popochiu/engine/audio_manager/audio_manager.gd
new file mode 100644
index 0000000..c87f6c1
--- /dev/null
+++ b/addons/popochiu/engine/audio_manager/audio_manager.gd
@@ -0,0 +1,403 @@
+class_name PopochiuAudioManager
+extends Node
+## Handles playing audio using [PopochiuAudioCue]s.
+##
+## It plays sound effects and music using [AudioStreamPlayer] or [AudioStreamPlayer2D], creating
+## these nodes at runtime if needed. By default, it has 6 nodes for positional streams and 5 for
+## playing non-positional streams.[br][br]
+## The [b]PopochiuAudioManager[/b] is loaded as a child of [Popochiu] when the game starts.
+
+## Used to mark stream players created at runtime that should be [method Node.free] when they are
+## no longer needed.
+const TEMP_PLAYER := "temporal"
+## Specifies the path where the volume configuration for the audio buses used in the game is stored.
+const SETTINGS_PATH = "user://audio_settings.save"
+
+## Used to convert the value of the pitch set on [member PopochiuAudioCue.pitch] to the
+## corresponding value needed for the [code]pitch_scale[/code] property of the audio stream players.
+var twelfth_root_of_two := pow(2, (1.0 / 12))
+## Stores the volume values for each of the audio buses used by the game.
+var volume_settings := {}
+
+var _mx_cues := {}
+var _sfx_cues := {}
+var _vo_cues := {}
+var _ui_cues := {}
+var _active := {}
+var _all_in_one := {}
+# Serves as a map that stores an AudioStreamPlayer/AudioStreamPlayer2D and the tween used to fade
+# its volume
+var _fading_sounds := {}
+var _dflt_volumes := {}
+
+
+#region Godot ######################################################################################
+func _ready() -> void:
+ if Engine.is_editor_hint(): return
+
+ for bus_idx in range(AudioServer.get_bus_count()):
+ var bus_name = AudioServer.get_bus_name(bus_idx)
+ volume_settings[bus_name] = AudioServer.get_bus_volume_db(bus_idx)
+
+ for arr in ["mx_cues", "sfx_cues", "vo_cues", "ui_cues"]:
+ for rp in PopochiuResources.get_data_value("audio", arr, []):
+ var ac: PopochiuAudioCue = load(rp)
+
+ self["_%s" % arr][ac.resource_name] = ac
+ _all_in_one[ac.resource_name] = ac
+ _dflt_volumes[ac.resource_name] = ac.volume
+
+
+#endregion
+
+#region Public #####################################################################################
+## Searches for the [PopochiuAudioCue] identified by [param cue_name] among the cues that are NOT
+## part of the music group and plays it. You can set a [param position_2d] to play it positionally.
+## If [param wait_to_end] is set to [code]true[/code], the function will pause until the audio
+## finishes.
+func play_sound_cue(cue_name := "", position_2d := Vector2.ZERO, wait_to_end = null) -> Node:
+ var stream_player: Node = null
+
+ if _all_in_one.has(cue_name.to_lower()):
+ var cue: PopochiuAudioCue = _all_in_one[cue_name.to_lower()]
+ stream_player = _play(cue, position_2d)
+ else:
+ PopochiuUtils.print_error("Sound not found: " + cue_name)
+
+ if wait_to_end != null:
+ await get_tree().process_frame
+
+ return null
+
+ if wait_to_end == true and stream_player:
+ await stream_player.finished
+ elif wait_to_end == false:
+ await get_tree().process_frame
+
+ return stream_player
+
+
+## Searches for the [PopochiuAudioCue] identified by [param cue_name] among the cues that are part
+## of the music group and plays it. It can fade for [param fade_duration] seconds, and you can start
+## playing it from a given [param music_position] in seconds.
+func play_music_cue(cue_name: String, fade_duration := 0.0, music_position := 0.0) -> Node:
+ var stream_player: Node = null
+
+ if _active.has(cue_name):
+ return _active[cue_name].players[0]
+
+ if _mx_cues.has(cue_name.to_lower()):
+ var cue: PopochiuAudioCue = _mx_cues[cue_name.to_lower()]
+ # NOTE: fixes #27 AudioCues were losing the volume set in editor when
+ # played with a fade
+ cue.volume = _dflt_volumes[cue_name.to_lower()]
+ if fade_duration > 0.0:
+ stream_player = _fade_in(
+ cue,
+ Vector2.ZERO,
+ fade_duration,
+ -80.0,
+ cue.volume,
+ music_position
+ )
+ else:
+ stream_player = _play(cue, Vector2.ZERO, music_position)
+ else:
+ PopochiuUtils.print_error("Music not found: " + cue_name)
+
+ return stream_player
+
+
+## Plays the [PopochiuAudioCue] identified by [param cue_name] using a fade that will last
+## [param duration] seconds. Specify the starting volume with [param from] and the target volume
+## with [param to]. You can play the audio positionally with [param position_2d] and wait for it
+## to finish if [param wait_to_end] is set to [code]true[/code].
+func play_fade_cue(
+ cue_name := "",
+ duration := 1.0,
+ from := -80.0,
+ to := INF,
+ position_2d := Vector2.ZERO,
+ wait_to_end = null
+) -> Node:
+ var stream_player: Node = null
+
+ if _all_in_one.has(cue_name.to_lower()):
+ var cue: PopochiuAudioCue = _all_in_one[cue_name.to_lower()]
+ stream_player = _fade_in(cue, position_2d, duration, from, to if to != INF else cue.volume)
+ else:
+ PopochiuUtils.print_error("Sound to fade not found " + cue_name)
+
+ if wait_to_end != null:
+ await get_tree().process_frame
+
+ return null
+
+ if wait_to_end == true and stream_player:
+ await stream_player.finished
+ elif wait_to_end == false:
+ await get_tree().process_frame
+
+ return stream_player
+
+
+## Stops the [PopochiuAudioCue] identified by [param cue_name]. It can use a fade effect that will
+## last [param fade_duration] seconds.
+func stop(cue_name: String, fade_duration := 0.0) -> void:
+ if _active.has(cue_name):
+ var stream_player: Node = (_active[cue_name].players as Array).front()
+
+ if is_instance_valid(stream_player):
+ if fade_duration > 0.0:
+ _fade_sound(
+ cue_name, fade_duration, stream_player.volume_db, -80.0
+ )
+ else:
+ stream_player.stop()
+ # Always emit the signal since it won't be emitted if the audio
+ # file haven't reach the end yet
+ stream_player.finished.emit()
+ else:
+ _active.erase(cue_name)
+
+
+## Returns the playback position of the [PopochiuAudioCue] identified by [param cue_name].
+func get_cue_playback_position(cue_name: String) -> float:
+ if not _active.has(cue_name): return -1.0
+
+ var stream_player: Node = (_active[cue_name].players as Array).front()
+
+ if is_instance_valid(stream_player):
+ return stream_player.get_playback_position()
+
+ return -1.0
+
+
+## Changes the [code]pitch_scale[/code] of the [PopochiuAudioCue] identified by [param cue_name] to
+## the value set (in semitones) in [param pitch].
+func change_cue_pitch(cue_name: String, pitch := 0.0) -> void:
+ if not _active.has(cue_name): return
+
+ var stream_player: Node = (_active[cue_name].players as Array).front()
+ stream_player.set_pitch_scale(_semitone_to_pitch(pitch))
+
+
+## Changes the [code]volume_db[/code] of the [PopochiuAudioCue] identified by [param cue_name] to
+## the value set in [param volume].
+func change_cue_volume(cue_name: String, volume := 0.0) -> void:
+ if not _active.has(cue_name): return
+
+ var stream_player: Node = (_active[cue_name].players as Array).front()
+ stream_player.volume_db = volume
+
+
+## Sets [param value] as the volume of the audio bus identified with [param bus_name].
+func set_bus_volume_db(bus_name: String, value: float) -> void:
+ if volume_settings.has(bus_name):
+ volume_settings[bus_name] = value
+ AudioServer.set_bus_volume_db(
+ AudioServer.get_bus_index(bus_name), volume_settings[bus_name]
+ )
+
+ save_sound_settings()
+
+
+## Saves in the file at [constant SETTINGS_PATH] the volume values of all the audio buses.
+func save_sound_settings():
+ var file = FileAccess.open(SETTINGS_PATH, FileAccess.WRITE)
+
+ if file == null:
+ PopochiuUtils.print_error("Error opening file: " + SETTINGS_PATH)
+ else:
+ file.store_var(volume_settings)
+ file.close()
+
+
+## Loads the volume values stored at [constant SETTINGS_PATH] for all the audio buses.
+func load_sound_settings():
+ var file = FileAccess.open(SETTINGS_PATH, FileAccess.READ)
+
+ if file:
+ volume_settings = file.get_var(true)
+ file.close()
+ for bus_idx in range(AudioServer.get_bus_count()):
+ var bus_name = AudioServer.get_bus_name(bus_idx)
+ if volume_settings.has(bus_name):
+ AudioServer.set_bus_volume_db(
+ AudioServer.get_bus_index(bus_name),
+ volume_settings[bus_name]
+ )
+ else:
+ volume_settings[bus_name] = AudioServer.get_bus_volume_db(bus_idx)
+
+
+## Returns [code]true[/code] if the [PopochiuAudioCue] identified by [param cue_name] is playing.
+func is_playing_cue(cue_name: String) -> bool:
+ return get_cue_playback_position(cue_name) > -1
+
+
+#endregion
+
+#region Private ####################################################################################
+# Calculates the [code]pitch_scale[/code] value of [param pitch], which is in semitones.
+func _semitone_to_pitch(pitch: float) -> float:
+ return pow(twelfth_root_of_two, pitch)
+
+
+# Plays the sound and assigns it to a free AudioStreamPlayer, or creates one if there are no more.
+func _play(
+ cue: PopochiuAudioCue, position := Vector2.ZERO, from_position := 0.0
+) -> Node:
+ var player: Node = null
+
+ if cue.is_2d:
+ player = _get_free_stream($Positional)
+
+ if not is_instance_valid(player):
+ player = AudioStreamPlayer2D.new()
+ player.set_meta(TEMP_PLAYER, true)
+ $Active.add_child(player)
+
+ (player as AudioStreamPlayer2D).stream = cue.audio
+ (player as AudioStreamPlayer2D).pitch_scale = cue.get_pitch_scale()
+ (player as AudioStreamPlayer2D).volume_db = cue.volume
+ (player as AudioStreamPlayer2D).max_distance = cue.max_distance
+ (player as AudioStreamPlayer2D).position = position
+ else:
+ player = _get_free_stream($Generic)
+
+ if not is_instance_valid(player):
+ player = AudioStreamPlayer.new()
+ player.set_meta(TEMP_PLAYER, true)
+ $Active.add_child(player)
+
+ (player as AudioStreamPlayer).stream = cue.audio
+ (player as AudioStreamPlayer).pitch_scale = cue.get_pitch_scale()
+ (player as AudioStreamPlayer).volume_db = cue.volume
+
+ var cue_name: String = cue.resource_name
+
+ player.bus = cue.bus
+ player.play(from_position)
+
+ if not player.finished.is_connected(_on_audio_stream_player_finished):
+ player.finished.connect(_on_audio_stream_player_finished.bind(player, cue_name, 0))
+
+ if _active.has(cue_name):
+ _active[cue_name].players.append(player)
+
+ # NOTE: Stop the previous stream player created to play the audio cue
+ # that is in loop to avoid having more than one sound playing.
+ if not _active[cue_name].can_play_simultaneous:
+ stop(cue_name)
+ else:
+ _active[cue_name] = {
+ players = [player],
+ loop = cue.loop,
+ can_play_simultaneous = cue.can_play_simultaneous
+ }
+
+ return player
+
+
+func _get_free_stream(group: Node):
+ return _reparent(group, $Active, 0)
+
+
+# Reassigns the [AudioStreamPlayer] to its original group when it finishes so it can be available
+# for being used again.
+func _on_audio_stream_player_finished(
+ stream_player: Node, cue_name: String, _debug_idx: int
+) -> void:
+ if stream_player.has_meta(TEMP_PLAYER):
+ stream_player.queue_free()
+ elif stream_player is AudioStreamPlayer:
+ _reparent($Active, $Generic, stream_player.get_index())
+ else:
+ _reparent($Active, $Positional, stream_player.get_index())
+
+ if _active.has(cue_name):
+ var players: Array = _active[cue_name].players
+ for idx in players.size():
+ if players[idx].get_instance_id() == stream_player.get_instance_id():
+ players.remove_at(idx)
+ break
+
+ if players.is_empty():
+ _active.erase(cue_name)
+
+ if not stream_player.finished.is_connected(_on_audio_stream_player_finished):
+ stream_player.finished.connect(_on_audio_stream_player_finished)
+
+
+func _reparent(source: Node, target: Node, child_idx: int) -> Node:
+ if not is_instance_valid(source) or source.get_children().is_empty():
+ return null
+
+ var node_to_reparent: Node = source.get_child(child_idx)
+
+ if not is_instance_valid(node_to_reparent):
+ return null
+
+ node_to_reparent.reparent(target)
+
+ return node_to_reparent
+
+
+func _fade_in(
+ cue: PopochiuAudioCue,
+ position: Vector2,
+ duration := 1.0,
+ from := -80.0,
+ to := 0.0,
+ from_position := 0.0
+) -> Node:
+ if cue.audio.get_instance_id() in _fading_sounds:
+ from = _fading_sounds[cue.audio.get_instance_id()].stream.volume_db
+
+ var tween: Tween = _fading_sounds[cue.audio.get_instance_id()].tween
+ # Stop the tween only of the sound that is fading
+
+ if is_instance_valid(tween) and tween.is_running():
+ tween.kill()
+
+ _fading_sounds[cue.audio.get_instance_id()].finished.emit()
+ _fading_sounds.erase(cue.audio.get_instance_id())
+
+ cue.volume = from
+
+ var stream_player: Node = _play(cue, position, from_position)
+
+ if stream_player:
+ _fade_sound(cue.resource_name, duration, from, to)
+ else:
+ cue.volume = to
+
+ return stream_player
+
+
+func _fade_sound(cue_name: String, duration = 1, from = 0, to = 0) -> void:
+ var stream_player: Node = (_active[cue_name].players as Array).front()
+
+ if _fading_sounds.has(stream_player.stream.get_instance_id()):
+ _fading_sounds[stream_player.stream.get_instance_id()].tween.kill()
+
+ var t := create_tween().set_ease(Tween.EASE_IN_OUT)
+ t.finished.connect(_fadeout_finished.bind(stream_player, t))
+ t.tween_property(stream_player, "volume_db", to, duration).from(from)
+
+ if from > to :
+ _fading_sounds[stream_player.stream.get_instance_id()] = {
+ stream = stream_player,
+ tween = t
+ }
+
+
+func _fadeout_finished(stream_player: Node, tween: Tween) -> void:
+ if stream_player.stream.get_instance_id() in _fading_sounds :
+ _fading_sounds.erase(stream_player.stream.get_instance_id())
+ stream_player.stop()
+ tween.finished.disconnect(_fadeout_finished)
+
+
+#endregion
diff --git a/addons/popochiu/engine/audio_manager/audio_manager.gd.uid b/addons/popochiu/engine/audio_manager/audio_manager.gd.uid
new file mode 100644
index 0000000..5524f5b
--- /dev/null
+++ b/addons/popochiu/engine/audio_manager/audio_manager.gd.uid
@@ -0,0 +1 @@
+uid://bngbmwj65yxut
diff --git a/addons/popochiu/engine/audio_manager/audio_manager.tscn b/addons/popochiu/engine/audio_manager/audio_manager.tscn
new file mode 100644
index 0000000..05a4ec0
--- /dev/null
+++ b/addons/popochiu/engine/audio_manager/audio_manager.tscn
@@ -0,0 +1,34 @@
+[gd_scene load_steps=2 format=3 uid="uid://ciufytcstpkcr"]
+
+[ext_resource type="Script" path="res://addons/popochiu/engine/audio_manager/audio_manager.gd" id="1_3dbpw"]
+
+[node name="AudioManager" type="Node"]
+script = ExtResource("1_3dbpw")
+
+[node name="Positional" type="Node" parent="."]
+
+[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="Positional"]
+
+[node name="AudioStreamPlayer2D2" type="AudioStreamPlayer2D" parent="Positional"]
+
+[node name="AudioStreamPlayer2D3" type="AudioStreamPlayer2D" parent="Positional"]
+
+[node name="AudioStreamPlayer2D4" type="AudioStreamPlayer2D" parent="Positional"]
+
+[node name="AudioStreamPlayer2D5" type="AudioStreamPlayer2D" parent="Positional"]
+
+[node name="AudioStreamPlayer2D6" type="AudioStreamPlayer2D" parent="Positional"]
+
+[node name="Generic" type="Node" parent="."]
+
+[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="Generic"]
+
+[node name="AudioStreamPlayer2" type="AudioStreamPlayer" parent="Generic"]
+
+[node name="AudioStreamPlayer3" type="AudioStreamPlayer" parent="Generic"]
+
+[node name="AudioStreamPlayer4" type="AudioStreamPlayer" parent="Generic"]
+
+[node name="AudioStreamPlayer5" type="AudioStreamPlayer" parent="Generic"]
+
+[node name="Active" type="Node" parent="."]
diff --git a/addons/popochiu/engine/cursor/cursor.gd b/addons/popochiu/engine/cursor/cursor.gd
new file mode 100644
index 0000000..78c41cf
--- /dev/null
+++ b/addons/popochiu/engine/cursor/cursor.gd
@@ -0,0 +1,168 @@
+class_name PopochiuCursor
+extends CanvasLayer
+
+# TODO: Deprecate this? I'll leave it here while we merge the refactor for the
+# creation popups because in those the Cursor.Type enum is used.
+enum Type {
+ NONE,
+ ACTIVE,
+ DOWN,
+ IDLE,
+ LEFT,
+ LOOK,
+ RIGHT,
+ SEARCH,
+ TALK,
+ UP,
+ USE,
+ WAIT,
+}
+
+@export var is_pixel_perfect := false
+
+var is_blocked := false
+
+@onready var main_cursor: AnimatedSprite2D = $MainCursor
+@onready var secondary_cursor: Sprite2D = $SecondaryCursor
+
+
+#region Godot ######################################################################################
+func _init() -> void:
+ Engine.register_singleton(&"Cursor", self)
+
+
+func _ready():
+ Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN)
+
+ # Connect to autoload signals
+ PopochiuUtils.e.ready.connect(show_cursor)
+
+
+func _process(delta):
+ var texture_size := (main_cursor.sprite_frames.get_frame_texture(
+ main_cursor.animation,
+ main_cursor.frame
+ ) as Texture2D).get_size()
+
+ var mouse_position: Vector2 = main_cursor.get_global_mouse_position()
+
+ if is_pixel_perfect:
+ # Thanks to @whyshchuck
+ main_cursor.position = Vector2i(mouse_position)
+ secondary_cursor.position = Vector2i(mouse_position)
+ else:
+ main_cursor.position = mouse_position
+ secondary_cursor.position = mouse_position
+
+ if main_cursor.position.x < 1.0:
+ main_cursor.position.x = 1.0
+ elif main_cursor.position.x > PopochiuUtils.e.width - 2.0:
+ main_cursor.position.x = PopochiuUtils.e.width - 2.0
+
+ if main_cursor.position.y < 1.0:
+ main_cursor.position.y = 1.0
+ elif main_cursor.position.y > PopochiuUtils.e.height - 2.0:
+ main_cursor.position.y = PopochiuUtils.e.height - 2.0
+
+
+#endregion
+
+#region Public #####################################################################################
+func show_cursor(anim_name := "normal", ignore_block := false) -> void:
+ if not ignore_block and is_blocked: return
+
+ if (
+ not anim_name.is_empty()
+ and not main_cursor.sprite_frames.has_animation(anim_name)
+ ):
+ PopochiuUtils.print_error("Cursor has no animation: %s" % anim_name)
+ return
+
+ main_cursor.play(anim_name)
+ main_cursor.show()
+ secondary_cursor.hide()
+
+
+func set_secondary_cursor_texture(texture: Texture2D, ignore_block := false) -> void:
+ if not ignore_block and is_blocked: return
+
+ secondary_cursor.texture = texture
+
+ if PopochiuUtils.e.settings.scale_gui:
+ # Scale the cursor based the relation of the texture size compared to the main cursor
+ # texture size
+ secondary_cursor.scale = Vector2.ONE * ceil(
+ float(texture.get_height()) / float(get_cursor_height())
+ )
+
+ secondary_cursor.show()
+
+
+func remove_secondary_cursor_texture() -> void:
+ secondary_cursor.texture = null
+
+ if PopochiuUtils.e.settings.scale_gui:
+ secondary_cursor.scale = PopochiuUtils.e.scale
+
+ secondary_cursor.hide()
+
+
+func toggle_visibility(is_visible: bool) -> void:
+ main_cursor.visible = is_visible
+ secondary_cursor.visible = is_visible
+
+
+func block() -> void:
+ is_blocked = true
+
+
+func unblock() -> void:
+ is_blocked = false
+
+
+func scale_cursor(factor: Vector2) -> void:
+ secondary_cursor.scale = factor
+ main_cursor.scale = factor
+
+
+func get_position() -> Vector2:
+ return secondary_cursor.position
+
+
+func replace_frames(new_node: AnimatedSprite2D) -> void:
+ main_cursor.sprite_frames = new_node.sprite_frames
+ main_cursor.offset = new_node.offset
+
+
+func hide_main_cursor() -> void:
+ main_cursor.hide()
+
+
+func show_main_cursor() -> void:
+ main_cursor.show()
+
+
+func hide_secondary_cursor() -> void:
+ secondary_cursor.hide()
+
+
+func show_secondary_cursor() -> void:
+ secondary_cursor.show()
+
+
+func get_type_name(idx: int) -> String:
+ return Type.keys()[idx].to_snake_case()
+
+
+func get_cursor_height() -> int:
+ var height := 0
+
+ if main_cursor.visible:
+ height = main_cursor.sprite_frames.get_frame_texture(main_cursor.animation, 0).get_height()
+ elif secondary_cursor.visible:
+ height = secondary_cursor.texture.get_height()
+
+ return height
+
+
+#endregion
diff --git a/addons/popochiu/engine/cursor/cursor.gd.uid b/addons/popochiu/engine/cursor/cursor.gd.uid
new file mode 100644
index 0000000..74ca2e5
--- /dev/null
+++ b/addons/popochiu/engine/cursor/cursor.gd.uid
@@ -0,0 +1 @@
+uid://cus5ystyu850m
diff --git a/addons/popochiu/engine/cursor/cursor.tscn b/addons/popochiu/engine/cursor/cursor.tscn
new file mode 100644
index 0000000..21826be
--- /dev/null
+++ b/addons/popochiu/engine/cursor/cursor.tscn
@@ -0,0 +1,211 @@
+[gd_scene load_steps=22 format=3 uid="uid://c2pqh7ajiuiy0"]
+
+[ext_resource type="Texture2D" uid="uid://bl3ecai6lvat1" path="res://addons/popochiu/engine/cursor/sprites/cursor.png" id="1"]
+[ext_resource type="Script" path="res://addons/popochiu/engine/cursor/cursor.gd" id="1_n3epl"]
+
+[sub_resource type="AtlasTexture" id="10"]
+atlas = ExtResource("1")
+region = Rect2(0, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="11"]
+atlas = ExtResource("1")
+region = Rect2(32, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="12"]
+atlas = ExtResource("1")
+region = Rect2(64, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="15"]
+atlas = ExtResource("1")
+region = Rect2(96, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="16"]
+atlas = ExtResource("1")
+region = Rect2(128, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="4"]
+atlas = ExtResource("1")
+region = Rect2(192, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="5"]
+atlas = ExtResource("1")
+region = Rect2(224, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="18"]
+atlas = ExtResource("1")
+region = Rect2(256, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="17"]
+atlas = ExtResource("1")
+region = Rect2(288, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="9"]
+atlas = ExtResource("1")
+region = Rect2(160, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="2"]
+atlas = ExtResource("1")
+region = Rect2(320, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="3"]
+atlas = ExtResource("1")
+region = Rect2(352, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="14"]
+atlas = ExtResource("1")
+region = Rect2(384, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="19"]
+atlas = ExtResource("1")
+region = Rect2(416, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="6"]
+atlas = ExtResource("1")
+region = Rect2(448, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="7"]
+atlas = ExtResource("1")
+region = Rect2(480, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="13"]
+atlas = ExtResource("1")
+region = Rect2(512, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="8"]
+atlas = ExtResource("1")
+region = Rect2(544, 0, 32, 32)
+
+[sub_resource type="SpriteFrames" id="1"]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("10")
+}, {
+"duration": 1.0,
+"texture": SubResource("11")
+}, {
+"duration": 1.0,
+"texture": SubResource("12")
+}, {
+"duration": 1.0,
+"texture": SubResource("12")
+}, {
+"duration": 1.0,
+"texture": SubResource("11")
+}],
+"loop": true,
+"name": &"active",
+"speed": 10.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("15")
+}, {
+"duration": 1.0,
+"texture": SubResource("16")
+}],
+"loop": true,
+"name": &"down",
+"speed": 4.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("4")
+}, {
+"duration": 1.0,
+"texture": SubResource("5")
+}],
+"loop": true,
+"name": &"left",
+"speed": 4.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("18")
+}],
+"loop": false,
+"name": &"look",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("17")
+}],
+"loop": false,
+"name": &"none",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("9")
+}],
+"loop": false,
+"name": &"normal",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("2")
+}, {
+"duration": 1.0,
+"texture": SubResource("3")
+}],
+"loop": true,
+"name": &"right",
+"speed": 4.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("14")
+}],
+"loop": false,
+"name": &"search",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("19")
+}],
+"loop": false,
+"name": &"talk",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("6")
+}, {
+"duration": 1.0,
+"texture": SubResource("7")
+}],
+"loop": true,
+"name": &"up",
+"speed": 4.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("13")
+}],
+"loop": false,
+"name": &"use",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("8")
+}],
+"loop": false,
+"name": &"wait",
+"speed": 5.0
+}]
+
+[node name="CursorLayer" type="CanvasLayer"]
+layer = 100
+script = ExtResource("1_n3epl")
+
+[node name="MainCursor" type="AnimatedSprite2D" parent="."]
+texture_filter = 1
+sprite_frames = SubResource("1")
+animation = &"normal"
+
+[node name="SecondaryCursor" type="Sprite2D" parent="."]
+texture_filter = 1
diff --git a/addons/popochiu/engine/cursor/cursor_animations.tres b/addons/popochiu/engine/cursor/cursor_animations.tres
new file mode 100644
index 0000000..194b681
--- /dev/null
+++ b/addons/popochiu/engine/cursor/cursor_animations.tres
@@ -0,0 +1,211 @@
+[gd_resource type="SpriteFrames" load_steps=22 format=3 uid="uid://d0ny3mket72mf"]
+
+[ext_resource type="Texture2D" uid="uid://bl3ecai6lvat1" path="res://addons/popochiu/engine/cursor/sprites/cursor.png" id="1_qk45r"]
+[ext_resource type="Texture2D" uid="uid://bocign602kxhh" path="res://addons/popochiu/engine/objects/gui/templates/simple_click/images/simple_click_cursor.png" id="2_05hav"]
+
+[sub_resource type="AtlasTexture" id="10"]
+atlas = ExtResource("1_qk45r")
+region = Rect2(0, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="11"]
+atlas = ExtResource("1_qk45r")
+region = Rect2(32, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="12"]
+atlas = ExtResource("1_qk45r")
+region = Rect2(64, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="15"]
+atlas = ExtResource("1_qk45r")
+region = Rect2(96, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="16"]
+atlas = ExtResource("1_qk45r")
+region = Rect2(128, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="AtlasTexture_t3qtx"]
+atlas = ExtResource("2_05hav")
+region = Rect2(576, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="4"]
+atlas = ExtResource("1_qk45r")
+region = Rect2(192, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="5"]
+atlas = ExtResource("1_qk45r")
+region = Rect2(224, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="18"]
+atlas = ExtResource("1_qk45r")
+region = Rect2(256, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="17"]
+atlas = ExtResource("1_qk45r")
+region = Rect2(288, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="9"]
+atlas = ExtResource("1_qk45r")
+region = Rect2(160, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="2"]
+atlas = ExtResource("1_qk45r")
+region = Rect2(320, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="3"]
+atlas = ExtResource("1_qk45r")
+region = Rect2(352, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="14"]
+atlas = ExtResource("1_qk45r")
+region = Rect2(384, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="19"]
+atlas = ExtResource("1_qk45r")
+region = Rect2(416, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="6"]
+atlas = ExtResource("1_qk45r")
+region = Rect2(448, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="7"]
+atlas = ExtResource("1_qk45r")
+region = Rect2(480, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="13"]
+atlas = ExtResource("1_qk45r")
+region = Rect2(512, 0, 32, 32)
+
+[sub_resource type="AtlasTexture" id="8"]
+atlas = ExtResource("1_qk45r")
+region = Rect2(544, 0, 32, 32)
+
+[resource]
+animations = [{
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("10")
+}, {
+"duration": 1.0,
+"texture": SubResource("11")
+}, {
+"duration": 1.0,
+"texture": SubResource("12")
+}, {
+"duration": 1.0,
+"texture": SubResource("12")
+}, {
+"duration": 1.0,
+"texture": SubResource("11")
+}],
+"loop": true,
+"name": &"active",
+"speed": 10.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("15")
+}, {
+"duration": 1.0,
+"texture": SubResource("16")
+}],
+"loop": true,
+"name": &"down",
+"speed": 4.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("AtlasTexture_t3qtx")
+}],
+"loop": true,
+"name": &"gui",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("4")
+}, {
+"duration": 1.0,
+"texture": SubResource("5")
+}],
+"loop": true,
+"name": &"left",
+"speed": 4.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("18")
+}],
+"loop": false,
+"name": &"look",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("17")
+}],
+"loop": false,
+"name": &"none",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("9")
+}],
+"loop": false,
+"name": &"normal",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("2")
+}, {
+"duration": 1.0,
+"texture": SubResource("3")
+}],
+"loop": true,
+"name": &"right",
+"speed": 4.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("14")
+}],
+"loop": false,
+"name": &"search",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("19")
+}],
+"loop": false,
+"name": &"talk",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("6")
+}, {
+"duration": 1.0,
+"texture": SubResource("7")
+}],
+"loop": true,
+"name": &"up",
+"speed": 4.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("13")
+}],
+"loop": false,
+"name": &"use",
+"speed": 5.0
+}, {
+"frames": [{
+"duration": 1.0,
+"texture": SubResource("8")
+}],
+"loop": false,
+"name": &"wait",
+"speed": 5.0
+}]
diff --git a/addons/popochiu/engine/cursor/sprites/cursor.png b/addons/popochiu/engine/cursor/sprites/cursor.png
new file mode 100644
index 0000000..fccb3b2
Binary files /dev/null and b/addons/popochiu/engine/cursor/sprites/cursor.png differ
diff --git a/addons/popochiu/engine/cursor/sprites/cursor.png.import b/addons/popochiu/engine/cursor/sprites/cursor.png.import
new file mode 100644
index 0000000..122a930
--- /dev/null
+++ b/addons/popochiu/engine/cursor/sprites/cursor.png.import
@@ -0,0 +1,34 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bl3ecai6lvat1"
+path="res://.godot/imported/cursor.png-46ea11cf9adf0d4df6d3fbe5a77d49cf.ctex"
+metadata={
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/popochiu/engine/cursor/sprites/cursor.png"
+dest_files=["res://.godot/imported/cursor.png-46ea11cf9adf0d4df6d3fbe5a77d49cf.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+compress/hdr_compression=1
+compress/normal_map=0
+compress/channel_pack=0
+mipmaps/generate=false
+mipmaps/limit=-1
+roughness/mode=0
+roughness/src_normal=""
+process/fix_alpha_border=true
+process/premult_alpha=false
+process/normal_map_invert_y=false
+process/hdr_as_srgb=false
+process/hdr_clamp_exposure=false
+process/size_limit=0
+detect_3d/compress_to=1
diff --git a/addons/popochiu/engine/helpers/popochiu_characters_helper.gd b/addons/popochiu/engine/helpers/popochiu_characters_helper.gd
new file mode 100644
index 0000000..ac731ff
--- /dev/null
+++ b/addons/popochiu/engine/helpers/popochiu_characters_helper.gd
@@ -0,0 +1,82 @@
+class_name PopochiuCharactersHelper
+extends RefCounted
+## Helper class to handle things related to [PopochiuCharacters] but that may not be the
+## responsibility of [PopochiuICharacter].
+
+static var char_pattern := r'(?.+?)'
+static var emo_pattern := r'(?:\((?\w+)\))?'
+static var time_pattern := r'(?:\[(?